.portal-scope{--green-dark:#1a3d2b;--green-mid:#2d6a4f;--green-light:#52b788;--green-pale:#d8f3dc;--green-soft:#e8f5ee;--gold:#e9a11a;--gold-dark:#d4910f;--gold-light:#fff0c8;--gold-pale:#fff8e7;--gold-ink:#8b6914;--coral:#e76f51;--cream:#fdfaf4;--cream-dark:#f4eed8;--text-dark:#1a1a1a;--text-mid:#4a4a4a;--text-light:#888;--line:#e1ebe5;--line-soft:#efefe8;--white:#fff;--red:#c0392b;--red-soft:#fde2e2;--shadow-soft:0 4px 20px #2d6a4f14;--shadow-mid:0 8px 32px #2d6a4f24;--radius-sm:8px;--radius-md:14px;--radius-lg:20px;--portal-transition:.25s cubic-bezier(.4,0,.2,1);font-family:var(--font-inter), "Inter", -apple-system, BlinkMacSystemFont, sans-serif;background:var(--cream);color:var(--text-dark);-webkit-font-smoothing:antialiased;min-height:100vh;font-size:15px;line-height:1.5}.portal-scope,.portal-scope *{box-sizing:border-box;-webkit-tap-highlight-color:transparent}.portal-scope *{margin:0;padding:0}.portal-scope h1,.portal-scope h2,.portal-scope h3,.portal-scope h4{font-family:var(--font-playfair), "Playfair Display", Georgia, serif;color:var(--green-dark);line-height:1.25}.portal-scope a{color:var(--green-mid);text-decoration:none}.portal-scope img{max-width:100%;display:block}.portal-scope .page{background:var(--cream);max-width:520px;min-height:100vh;padding-bottom:calc(104px + env(safe-area-inset-bottom));margin:0 auto;position:relative;overflow-x:hidden}.portal-scope .appbar{background:var(--cream);z-index:20;border-bottom:1px solid var(--line-soft);justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;display:flex;position:sticky;top:0}.portal-scope .appbar .ic-btn,.portal-scope .ic-btn{background:var(--white);border:1px solid var(--line);width:40px;height:40px;color:var(--green-dark);cursor:pointer;border-radius:50%;flex-shrink:0;place-items:center;font-size:18px;text-decoration:none;display:grid}.portal-scope .appbar .title{font-family:var(--font-playfair), "Playfair Display", serif;color:var(--green-dark);text-align:center;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:clamp(16px,4.5vw,18px);font-weight:600;overflow:hidden}.portal-scope .section{padding:0 18px 16px}.portal-scope .section-title{text-transform:uppercase;letter-spacing:.7px;color:var(--text-light);font-size:11px;font-weight:700;font-family:var(--font-inter), "Inter", sans-serif;margin:18px 18px 8px}.portal-scope .card{background:var(--white);border-radius:var(--radius-md);border:1px solid var(--line);box-shadow:var(--shadow-soft);margin:0 18px 12px;padding:16px}.portal-scope .row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.portal-scope .row>*{min-width:0}.portal-scope .muted{color:var(--text-light);font-size:13px}.portal-scope .hint{color:var(--text-light);font-size:12px}.portal-scope .pill{border-radius:999px;padding:3px 10px;font-size:11px;font-weight:600;display:inline-block}.portal-scope .pill.gold{background:var(--gold-light);color:var(--gold-ink)}.portal-scope .pill.silver{color:#555;background:#ececec}.portal-scope .pill.platinum{color:#3730a3;background:#e0e5ff}.portal-scope .pill.green{background:var(--green-pale);color:var(--green-dark)}.portal-scope .pill.red{background:var(--red-soft);color:var(--red)}.portal-scope .pill.amber{background:var(--gold-light);color:var(--gold-ink)}.portal-scope .btn{border-radius:var(--radius-md);background:var(--green-mid);color:#fff;width:100%;font-size:15px;font-weight:600;font-family:var(--font-inter), "Inter", sans-serif;text-align:center;cursor:pointer;transition:var(--portal-transition);border:none;padding:14px 18px;text-decoration:none;display:inline-block}.portal-scope .btn:hover{background:var(--green-dark);color:#fff}.portal-scope .btn:disabled{opacity:.6;cursor:not-allowed}.portal-scope .btn-gold{background:var(--gold);color:var(--green-dark)}.portal-scope .btn-gold:hover{background:var(--gold-dark);color:var(--green-dark)}.portal-scope .btn-outline{background:var(--white);color:var(--green-mid);border:1.5px solid var(--green-mid)}.portal-scope .btn-outline:hover{background:var(--green-soft);color:var(--green-dark)}.portal-scope .btn-ghost{background:var(--white);color:var(--text-dark);border:1px solid var(--line)}.portal-scope .btn-ghost:hover{background:var(--green-soft);color:var(--green-dark)}.portal-scope .auth-page{background:var(--cream);max-width:520px;min-height:100vh;padding:24px 22px calc(32px + env(safe-area-inset-bottom));flex-direction:column;margin:0 auto;display:flex;overflow-x:hidden}.portal-scope .brand-mark{background:linear-gradient(135deg, var(--green-mid), var(--green-light));width:84px;height:84px;color:var(--gold-light);font-family:var(--font-playfair), "Playfair Display", serif;box-shadow:var(--shadow-mid);border-radius:24px;place-items:center;margin:32px auto 18px;font-size:28px;font-weight:700;display:grid}.portal-scope .auth-page h1{text-align:center;font-size:clamp(22px,6vw,28px)}.portal-scope .auth-page .lede{text-align:center;color:var(--text-mid);margin-top:8px;font-size:14px}.portal-scope .input-wrap{background:var(--white);border:1.5px solid var(--line);border-radius:var(--radius-md);transition:var(--portal-transition);align-items:center;gap:8px;margin-top:24px;padding:14px 16px;display:flex}.portal-scope .input-wrap:focus-within{border-color:var(--green-mid);box-shadow:0 0 0 3px #52b78826}.portal-scope .input-wrap .cc{color:var(--green-dark);font-weight:600}.portal-scope .input-wrap input{color:var(--text-dark);background:0 0;border:none;outline:none;flex:1;font-family:inherit;font-size:16px}.portal-scope .otp-row{flex-wrap:nowrap;justify-content:center;gap:10px;margin-top:28px;display:flex}.portal-scope .otp-row .otp-box{border:1.5px solid var(--line);border-radius:var(--radius-md);background:var(--white);text-align:center;width:48px;min-width:0;height:56px;color:var(--green-dark);font-size:22px;font-weight:700;font-family:var(--font-inter), "Inter", sans-serif;outline:none;flex:0 48px;padding:0}@media (max-width:380px){.portal-scope .otp-row{gap:6px}.portal-scope .otp-row .otp-box{flex-basis:40px;width:40px;height:50px;font-size:19px}}.portal-scope .otp-row .otp-box:focus{border-color:var(--green-mid);box-shadow:0 0 0 3px #52b7882e}.portal-scope .otp-row .otp-box.filled{border-color:var(--green-mid);background:var(--green-soft)}.portal-scope .tos{text-align:center;color:var(--text-light);margin-top:14px;font-size:11px;line-height:1.5}.portal-scope .resend{text-align:center;color:var(--text-light);justify-content:center;align-items:center;min-height:44px;margin-top:10px;font-size:13px;display:flex}.portal-scope .resend a{color:var(--green-mid);cursor:pointer;min-height:44px;padding:10px 12px;font-weight:600;line-height:24px;display:inline-block}.portal-scope .auth-foot{text-align:center;color:var(--text-mid);margin-top:auto;padding-top:20px;font-size:13px}.portal-scope .auth-foot a{color:var(--gold);font-weight:600}.portal-scope .greeting{align-items:center;gap:12px;padding:8px 18px 14px;display:flex}.portal-scope .avatar{background:linear-gradient(135deg, var(--gold), var(--coral));color:#fff;width:46px;height:46px;font-size:17px;font-weight:700;font-family:var(--font-inter), "Inter", sans-serif;border-radius:50%;place-items:center;display:grid}.portal-scope .greeting h2{font-size:18px;font-family:var(--font-playfair), "Playfair Display", serif}.portal-scope .greeting .muted{font-size:12px}.portal-scope .plan-card{border-radius:var(--radius-lg);color:#fff;background:linear-gradient(135deg, var(--green-dark) 0%, var(--green-mid) 100%);box-shadow:var(--shadow-mid);margin:0 18px 14px;padding:18px 20px;position:relative;overflow:hidden}.portal-scope .plan-card:after{content:"";background:radial-gradient(circle,#e9a11a40,#0000 70%);border-radius:50%;width:160px;height:160px;position:absolute;top:-50px;right:-50px}.portal-scope .plan-card .label{text-transform:uppercase;letter-spacing:.6px;color:var(--gold-light);font-size:11px;font-weight:600}.portal-scope .plan-card .name{font-family:var(--font-playfair), "Playfair Display", serif;color:#fff;margin-top:4px;font-size:26px;font-weight:700}.portal-scope .plan-card .meta{opacity:.92;margin-top:4px;font-size:13px}.portal-scope .plan-card .due{z-index:1;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;margin-top:16px;display:flex;position:relative}.portal-scope .plan-card .due .big{font-family:var(--font-playfair), "Playfair Display", serif;color:var(--gold-light);font-size:28px;font-weight:700;line-height:1}.portal-scope .plan-card .due small{opacity:.85;margin-top:4px;font-size:11px;display:block}.portal-scope .plan-card .upgrade{background:var(--gold);color:var(--green-dark);cursor:pointer;white-space:nowrap;border:none;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;min-height:36px;padding:10px 14px;font-size:12px;font-weight:700;text-decoration:none;display:inline-flex}.portal-scope .stat-grid{grid-template-columns:1fr 1fr;gap:10px;padding:0 18px 14px;display:grid}.portal-scope .stat{background:var(--white);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-soft);padding:14px}.portal-scope .stat .v{font-family:var(--font-playfair), "Playfair Display", serif;color:var(--green-dark);overflow-wrap:anywhere;font-size:clamp(20px,5.5vw,24px);font-weight:700}.portal-scope .stat .k{color:var(--text-mid);margin-top:2px;font-size:12px}.portal-scope .stat .delta{margin-top:4px;font-size:11px;font-weight:600}.portal-scope .delta.up{color:var(--green-mid)}.portal-scope .delta.down{color:var(--red)}.portal-scope .next-class{background:var(--green-soft);border:1px solid var(--green-pale);border-radius:var(--radius-md);margin:0 18px 14px;padding:16px}.portal-scope .next-class .when{color:var(--green-mid);text-transform:uppercase;letter-spacing:.6px;font-size:11px;font-weight:700}.portal-scope .next-class h3{font-size:17px;font-family:var(--font-playfair), "Playfair Display", serif;margin-top:4px}.portal-scope .next-class .slot{color:var(--text-mid);margin-top:2px;font-size:13px}.portal-scope .next-class .join{background:var(--green-mid);color:#fff;border-radius:var(--radius-md);cursor:pointer;white-space:nowrap;border:none;flex-shrink:0;justify-content:center;align-items:center;min-height:44px;padding:10px 16px;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex}.portal-scope .next-class h3{overflow-wrap:anywhere}.portal-scope .prog-grid{grid-template-columns:1fr 1fr;gap:10px;padding:0 18px 14px;display:grid}.portal-scope .prog{background:var(--white);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-soft);flex-direction:column;gap:4px;padding:14px;display:flex}.portal-scope .prog .ic-circle{border-radius:10px;place-items:center;width:36px;height:36px;font-size:18px;display:grid}.portal-scope .prog .name{color:var(--green-dark);margin-top:8px;font-size:14px;font-weight:600}.portal-scope .prog .status{color:var(--text-light);font-size:12px}.portal-scope .prog.enrolled .ic-circle{background:var(--green-soft);color:var(--green-mid)}.portal-scope .prog.notenrolled .ic-circle{color:var(--text-light);background:#f1f5f0}.portal-scope .list-row{border-bottom:1px solid var(--line-soft);align-items:center;gap:12px;padding:12px 0;display:flex}.portal-scope .list-row:last-child{border-bottom:none}.portal-scope .list-row .date-block{text-align:center;background:var(--green-soft);border-radius:var(--radius-sm);width:46px;padding:6px 0}.portal-scope .list-row .date-block .d{font-family:var(--font-playfair), "Playfair Display", serif;color:var(--green-dark);font-size:18px;font-weight:700;line-height:1}.portal-scope .list-row .date-block .m{color:var(--green-mid);text-transform:uppercase;font-size:10px;font-weight:600}.portal-scope .list-row .body{flex:1}.portal-scope .list-row .body .t{color:var(--text-dark);font-size:13px;font-weight:600}.portal-scope .list-row .body .s{color:var(--text-light);margin-top:2px;font-size:12px}.portal-scope .bottom-nav{left:50%;bottom:calc(12px + env(safe-area-inset-bottom));background:var(--white);border:1px solid var(--line);z-index:30;border-radius:22px;justify-content:space-around;width:calc(100% - 24px);max-width:496px;padding:8px 10px;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 6px 24px #2d6a4f1f}.portal-scope .bottom-nav a{color:var(--text-light);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;min-width:0;min-height:44px;padding:4px 2px;font-size:10px;font-weight:600;text-decoration:none;display:flex}.portal-scope .bottom-nav a.active{color:var(--green-mid)}.portal-scope .bottom-nav a .ic{font-size:20px;line-height:1}.portal-scope .heat-grid{grid-template-columns:repeat(7,1fr);gap:5px;padding:12px 0 4px;display:grid}.portal-scope .heat-grid .cell{aspect-ratio:1;background:#f1f5f0;border-radius:5px}.portal-scope .heat-grid .cell.l1{background:var(--green-pale)}.portal-scope .heat-grid .cell.l2{background:var(--green-light);opacity:.8}.portal-scope .heat-grid .cell.l3{background:var(--green-mid)}.portal-scope .heat-grid .cell.absent{background:var(--red-soft)}.portal-scope .heat-grid .cell.future{background:var(--cream);border:1px dashed var(--line)}.portal-scope .heat-head{color:var(--text-light);text-align:center;text-transform:uppercase;letter-spacing:.4px;grid-template-columns:repeat(7,1fr);gap:5px;font-size:10px;font-weight:600;display:grid}.portal-scope .legend{color:var(--text-mid);flex-wrap:wrap;gap:12px;padding-top:8px;font-size:11px;display:flex}.portal-scope .legend span{align-items:center;gap:4px;display:inline-flex}.portal-scope .legend i{border-radius:3px;width:10px;height:10px;display:inline-block}.portal-scope .streak-banner{background:linear-gradient(135deg, var(--gold-pale), var(--gold-light));border-radius:var(--radius-md);border:1px solid var(--gold-light);align-items:center;gap:14px;margin:0 18px 14px;padding:14px 16px;display:flex}.portal-scope .streak-banner .fire{font-size:32px}.portal-scope .streak-banner .n{font-family:var(--font-playfair), "Playfair Display", serif;color:var(--gold-ink);font-size:22px;font-weight:700}.portal-scope .streak-banner .l{color:var(--gold-ink);opacity:.85;font-size:12px}.portal-scope .tier{background:var(--white);border:1.5px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-soft);margin:0 18px 12px;padding:18px;position:relative}.portal-scope .tier.current{border-color:var(--green-mid);background:var(--green-soft)}.portal-scope .tier.recommended{border-color:var(--gold)}.portal-scope .tier.recommended:before{content:"Recommended";background:var(--gold);color:var(--green-dark);text-transform:uppercase;letter-spacing:.5px;border-radius:999px;padding:3px 10px;font-size:10px;font-weight:700;position:absolute;top:-10px;left:18px}.portal-scope .tier .head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:8px;display:flex}.portal-scope .tier h3{font-size:20px;font-family:var(--font-playfair), "Playfair Display", serif;overflow-wrap:anywhere}.portal-scope .tier .price{font-family:var(--font-playfair), "Playfair Display", serif;color:var(--green-dark);font-size:22px;font-weight:700}.portal-scope .tier .price small{color:var(--text-light);font-size:12px;font-weight:400;font-family:var(--font-inter), "Inter", sans-serif}.portal-scope .tier ul{margin:12px 0 14px;list-style:none}.portal-scope .tier li{color:var(--text-dark);align-items:flex-start;gap:8px;padding:5px 0;font-size:13px;display:flex}.portal-scope .tier li:before{content:"✓";color:var(--green-mid);margin-top:1px;font-weight:700}.portal-scope .tier .current-badge{background:var(--green-mid);color:#fff;text-transform:uppercase;letter-spacing:.5px;border-radius:999px;margin-left:8px;padding:4px 10px;font-size:10px;font-weight:700}.portal-scope .ref-hero{background:linear-gradient(135deg, var(--gold-pale), var(--gold-light));border-radius:var(--radius-lg);text-align:center;border:1px solid var(--gold-light);margin:0 18px 14px;padding:24px 18px}.portal-scope .ref-hero .gift{font-size:40px}.portal-scope .ref-hero h2{font-size:20px;font-family:var(--font-playfair), "Playfair Display", serif;color:var(--green-dark);margin-top:8px}.portal-scope .ref-hero p{color:var(--gold-ink);margin-top:4px;font-size:13px}.portal-scope .code-box{border:2px dashed var(--green-mid);background:var(--white);border-radius:var(--radius-md);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin:0 18px 14px;padding:14px 16px;display:flex}.portal-scope .code-box .code{letter-spacing:2px;color:var(--green-dark);overflow-wrap:anywhere;min-width:0;font-family:ui-monospace,SF Mono,monospace;font-size:clamp(18px,5vw,22px);font-weight:800}.portal-scope .code-box .copy{color:var(--green-mid);cursor:pointer;align-items:center;min-height:44px;padding:8px 4px;font-size:13px;font-weight:600;display:inline-flex}.portal-scope .share-row{grid-template-columns:repeat(4,1fr);gap:10px;padding:0 18px 14px;display:grid}.portal-scope .share-row a{color:var(--text-dark);background:var(--white);border:1px solid var(--line);border-radius:var(--radius-md);cursor:pointer;overflow-wrap:anywhere;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:4px;min-width:0;min-height:64px;padding:12px 4px;font-size:11px;font-weight:600;text-decoration:none;display:flex}.portal-scope .share-row a .ic{font-size:22px}.portal-scope .share-row a.wa{color:#fff;background:#25d366;border-color:#1da851}.portal-scope .share-row a.wa .ic{color:#fff}.portal-scope .reward-pill{background:var(--green-soft);color:var(--green-mid);border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700}.portal-scope .tabs{gap:6px;padding:0 18px 14px;display:flex}.portal-scope .tabs .tab{text-align:center;background:var(--white);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--text-mid);cursor:pointer;flex:1;justify-content:center;align-items:center;min-height:44px;padding:12px 4px;font-size:12px;font-weight:600;display:flex}.portal-scope .tabs .tab.active{background:var(--green-dark);color:#fff;border-color:var(--green-dark)}.portal-scope .profile-head{text-align:center;padding:14px 18px 18px}.portal-scope .profile-head .big-avatar{background:linear-gradient(135deg, var(--gold), var(--coral));color:#fff;width:88px;height:88px;font-size:32px;font-weight:700;font-family:var(--font-playfair), "Playfair Display", serif;box-shadow:var(--shadow-mid);border-radius:50%;place-items:center;margin:0 auto 12px;display:grid}.portal-scope .profile-head h2{font-size:clamp(20px,5.5vw,22px);font-family:var(--font-playfair), "Playfair Display", serif;overflow-wrap:anywhere}.portal-scope .profile-head .meta{color:var(--text-mid);overflow-wrap:anywhere;margin-top:4px;font-size:13px}.portal-scope .menu-list{background:var(--white);border:1px solid var(--line);border-radius:var(--radius-md);margin:0 18px 12px;overflow:hidden}.portal-scope .menu-list a{color:var(--text-dark);border-bottom:1px solid var(--line-soft);overflow-wrap:anywhere;align-items:center;gap:14px;min-height:48px;padding:14px 16px;font-size:14px;font-weight:500;text-decoration:none;display:flex}.portal-scope .menu-list a:last-child{border-bottom:none}.portal-scope .menu-list a:hover{background:var(--green-soft)}.portal-scope .menu-list .ic{background:var(--green-soft);width:32px;height:32px;color:var(--green-mid);border-radius:8px;place-items:center;font-size:16px;display:grid}.portal-scope .menu-list .arrow{color:var(--text-light);margin-left:auto;font-size:18px}.portal-scope .text-center{text-align:center}.portal-scope .mt-2{margin-top:8px}.portal-scope .mt-3{margin-top:14px}.portal-scope .mt-4{margin-top:20px}.portal-scope .gap-row{grid-template-columns:1fr 1fr;gap:10px;padding:0 18px 12px;display:grid}.portal-scope .gap-row>.btn{width:100%}.portal-scope .err-msg{color:var(--red);text-align:center;min-height:18px;margin-top:10px;font-size:13px}@media (min-width:600px){.portal-scope .page,.portal-scope .auth-page{box-shadow:0 0 40px #0000000f}}
