:root{--gold: #f5b700;--gold-dark: #d99e00;--ink: #141414;--navy: #1b2a5b;--muted: #5f6673;--bg: #fffdf6;--card: #ffffff;--line: #ece6d6;--radius: 16px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Poppins,system-ui,-apple-system,Segoe UI,sans-serif;color:var(--ink);background:var(--bg);line-height:1.6}a{color:inherit}h1,h2,h3{line-height:1.2;margin:0 0 12px}.wrap{max-width:1120px;margin:0 auto;padding:0 20px}.btn{display:inline-block;padding:10px 20px;border-radius:999px;font-weight:600;text-decoration:none;border:2px solid transparent;transition:transform .15s,background .15s;white-space:nowrap}.btn:hover{transform:translateY(-2px)}.btn-lg{padding:14px 28px;font-size:1.05rem}.btn-gold{background:var(--gold);color:var(--ink)}.btn-gold:hover{background:var(--gold-dark)}.btn-dark{background:var(--ink);color:#fff}.btn-outline{border-color:#fff;color:#fff}.btn-outline:hover{background:#fff;color:var(--ink)}.nav{position:sticky;top:0;z-index:50;background:#141414f5;color:#fff}.nav-inner{display:flex;align-items:center;justify-content:space-between;height:68px}.logo{display:flex;align-items:center;gap:10px;text-decoration:none}.logo img{height:48px;width:48px;object-fit:contain}.logo-img{width:44px;height:44px;object-fit:contain;flex-shrink:0}.logo-img.logo-lg{width:72px;height:72px}.hero-card{position:relative}.hero-logo{position:absolute;top:-44px;right:20px;width:96px;height:96px;filter:drop-shadow(0 6px 14px rgba(0,0,0,.3))}.logo-badge{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:var(--gold);color:var(--navy);font-weight:800;font-size:1.5rem;font-style:italic}.logo-text{display:flex;flex-direction:column;line-height:1.05}.logo-text small{font-size:.7rem;opacity:.8}.logo-text strong{font-size:1.2rem;letter-spacing:2px;color:var(--gold)}.nav nav{display:flex;align-items:center;gap:24px}.nav nav a:not(.btn){text-decoration:none;opacity:.85}.nav nav a:not(.btn):hover{opacity:1;color:var(--gold)}.menu-btn{display:none;background:none;border:0;color:#fff;font-size:1.6rem;cursor:pointer}.hero{background:radial-gradient(circle at 85% 20%,rgba(245,183,0,.25),transparent 40%),linear-gradient(135deg,var(--ink) 0%,var(--navy) 100%);color:#fff;padding:72px 0 88px}.hero-inner{display:grid;grid-template-columns:1.3fr 1fr;gap:48px;align-items:center}.pill{display:inline-block;background:#f5b70026;color:var(--gold);border:1px solid rgba(245,183,0,.4);padding:4px 14px;border-radius:999px;font-size:.85rem;margin-bottom:16px}.hero h1{font-size:clamp(2rem,4.5vw,3.3rem);font-weight:800}.hl{color:var(--gold)}.lead{font-size:1.1rem;opacity:.9;max-width:560px}.promo{display:inline-block;background:var(--gold);color:var(--ink);font-weight:600;padding:10px 16px;border-radius:12px;margin:8px 0 24px}.hero-cta{display:flex;gap:12px;flex-wrap:wrap}.hero-card{background:#fff;color:var(--ink);border-radius:var(--radius);padding:28px;box-shadow:0 20px 50px #00000059;border-top:6px solid var(--gold)}.checks{list-style:none;padding:0;margin:0 0 20px}.checks li{padding:8px 0 8px 32px;position:relative;border-bottom:1px dashed var(--line)}.checks li:before{content:"✓";position:absolute;left:0;top:8px;width:22px;height:22px;border-radius:6px;background:var(--ink);color:var(--gold);display:grid;place-items:center;font-size:.8rem;font-weight:700}.hero-contact{display:flex;flex-direction:column;gap:4px;font-weight:600;color:var(--navy)}.trust{background:var(--gold)}.trust-inner{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;padding:18px 20px}.trust-item{display:flex;align-items:center;gap:8px;font-weight:600;font-size:.95rem}.trust-item span{font-size:1.2rem}.section{padding:80px 0}.section h2{font-size:clamp(1.6rem,3vw,2.3rem);margin-bottom:36px}.eyebrow{color:var(--gold-dark);font-weight:700;text-transform:uppercase;letter-spacing:1.5px;font-size:.85rem;margin:0 0 6px}.section-dark{background:var(--ink);color:#fff}.section-dark .eyebrow{color:var(--gold)}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.grid-5{display:grid;grid-template-columns:repeat(5,1fr);gap:20px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:28px;box-shadow:0 6px 20px #0000000d;display:flex;flex-direction:column}.program-icon{width:56px;height:56px;border-radius:14px;background:#fff4cc;display:grid;place-items:center;font-size:1.8rem;margin-bottom:16px}.program .age{color:var(--gold-dark);font-weight:700;margin:-6px 0 8px}.program p{margin:0 0 12px;color:var(--muted)}.dots{padding-left:18px;margin:0 0 16px}.dots li{margin:4px 0}.program .time{font-size:.9rem;color:var(--navy);font-weight:600;margin-top:auto}.program .btn{align-self:flex-start;margin-top:8px}.reason{background:#1f1f1f;border:1px solid #2c2c2c;border-radius:var(--radius);padding:24px 20px}.reason-icon{font-size:1.8rem;margin-bottom:12px}.reason h3{font-size:1.05rem;color:var(--gold)}.reason p{margin:0;opacity:.8;font-size:.95rem}.cta{background:var(--gold);padding:48px 0}.cta-inner{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}.cta h2{margin-bottom:4px;font-size:1.8rem}.cta p{margin:0;font-weight:500}.location{display:grid;grid-template-columns:1fr 1.1fr;gap:40px;align-items:start}.location h2{margin-bottom:20px}.contact-list{list-style:none;padding:0;margin:0 0 24px}.contact-list li{display:flex;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}.contact-list a{text-decoration:none;font-weight:600;color:var(--navy)}.contact-list a:hover{text-decoration:underline}.map{width:100%;height:380px;border:0;border-radius:var(--radius);box-shadow:0 6px 20px #00000014;background:#eee}.footer{background:var(--ink);color:#aaa;padding:24px 0;font-size:.85rem;text-align:center}.footer p{margin:0}.wa-float{position:fixed;right:20px;bottom:20px;width:56px;height:56px;border-radius:50%;background:#25d366;display:grid;place-items:center;font-size:1.6rem;text-decoration:none;box-shadow:0 8px 24px #00000040;z-index:60}@media(max-width:960px){.hero-inner,.location,.grid-3{grid-template-columns:1fr}.grid-5,.trust-inner{grid-template-columns:repeat(2,1fr)}}@media(max-width:720px){.menu-btn{display:block}.nav nav{display:none;position:absolute;top:68px;left:0;right:0;background:var(--ink);flex-direction:column;padding:20px;gap:16px}.nav nav.open{display:flex}.grid-5{grid-template-columns:1fr}.hero{padding:48px 0 64px}.section{padding:56px 0}}.reg-page{min-height:100vh;background:#f7f5ee;padding-bottom:60px}.reg-header{background:linear-gradient(135deg,var(--ink),var(--navy));color:#fff;padding:32px 0 56px}.reg-header h1{font-size:clamp(1.6rem,3.5vw,2.2rem);margin:12px 0 4px}.reg-header p{margin:0;color:var(--gold);font-weight:600}.back-link{color:#fff;opacity:.8;text-decoration:none;font-size:.9rem}.back-link:hover{opacity:1}.reg-form{max-width:820px;margin-top:-32px}.reg-form fieldset{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:24px;margin:0 0 20px;box-shadow:0 6px 20px #0000000d}.reg-form legend{font-weight:700;font-size:1.1rem;display:flex;align-items:center;gap:10px;float:left;width:100%;margin-bottom:18px}.reg-form legend+*{clear:both}.reg-form legend span{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--gold);font-size:.9rem}.row{display:grid;grid-template-columns:1fr 1fr;gap:16px 20px}.row .full{grid-column:1 / -1}.reg-form label{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:.92rem}.reg-form input:not([type=checkbox]),.reg-form select,.reg-form textarea{font:inherit;font-weight:400;padding:11px 13px;border:1.5px solid #d9d4c5;border-radius:10px;background:#fff;width:100%}.reg-form input:focus,.reg-form select:focus,.reg-form textarea:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px #f5b70040}.reg-form .invalid{border-color:#dc2626!important}.field-error{color:#dc2626;font-size:.82rem;font-weight:500}.alert{background:#fee2e2;color:#991b1b;padding:12px 16px;border-radius:10px;margin-bottom:16px;font-weight:500}.hint{color:var(--muted);font-size:.9rem;margin:18px 0 10px}.subject-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.subject-grid.invalid{outline:2px solid #dc2626;outline-offset:4px;border-radius:12px}.reg-form label.subject{flex-direction:row;align-items:center;gap:10px;padding:12px 14px;border:1.5px solid #d9d4c5;border-radius:12px;cursor:pointer;transition:all .15s;font-weight:500}.reg-form label.subject.on{border-color:var(--gold);background:#fff8dc}.subject input{width:18px;height:18px;accent-color:var(--ink)}.subject-name{flex:1}.subject-price{font-size:.85rem;color:var(--navy);font-weight:700}.summary{display:flex;justify-content:space-between;align-items:center;margin-top:14px;background:var(--ink);color:#fff;padding:12px 16px;border-radius:12px}.summary strong{color:var(--gold)}.reg-form label.check-inline{flex-direction:row;align-items:flex-start;gap:10px;font-weight:500;cursor:pointer;align-self:end;padding-bottom:10px}.check-inline input{width:18px;height:18px;margin-top:2px;accent-color:var(--ink);flex-shrink:0}.reg-form label.consent{margin-top:16px;padding:14px;background:#faf8f0;border-radius:10px;font-size:.9rem}.reg-form label.consent.invalid{outline:1.5px solid #dc2626}.submit{width:100%;border:0;cursor:pointer;font:inherit;font-weight:700;font-size:1.1rem}.submit:disabled{opacity:.6;cursor:wait}.success{max-width:600px;text-align:center;padding-top:70px}.success-icon{width:80px;height:80px;border-radius:50%;background:#16a34a;color:#fff;font-size:2.6rem;display:grid;place-items:center;margin:0 auto 20px}.success-card{background:#fff;border:1px solid var(--line);border-top:6px solid var(--gold);border-radius:var(--radius);padding:8px 24px;margin:28px 0;text-align:left}.success-card div{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px dashed var(--line)}.success-card div:last-child{border:0}.success-card span{color:var(--muted)}.success-card strong{text-align:right}.hero-cta.center{justify-content:center}.btn-outline-dark{border-color:var(--ink);color:var(--ink)}button.btn{cursor:pointer;font:inherit;font-weight:600}@media(max-width:640px){.row{grid-template-columns:1fr}.reg-form fieldset{padding:18px}}.login-page{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(circle at 80% 10%,rgba(245,183,0,.25),transparent 40%),linear-gradient(135deg,var(--ink),var(--navy))}.login-card{background:#fff;border-radius:20px;padding:36px 32px;width:100%;max-width:400px;display:flex;flex-direction:column;gap:14px;box-shadow:0 24px 60px #00000059}.login-card h1{margin:8px 0 0;font-size:1.6rem}.login-card .muted{margin:-8px 0 4px;color:var(--muted)}.login-card .field{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:.9rem}.login-card .alert{margin:0}.login-brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink)}.login-brand small{display:block;font-size:.75rem;color:var(--muted)}.login-back{text-align:center;color:var(--muted);font-size:.88rem;text-decoration:none}.btn-block{width:100%;border:0;cursor:pointer;font:inherit;font-weight:700;padding:12px}.notices-bar{background:#fff8dc;border-bottom:1px solid #f3e3a3}.notices-bar .wrap{padding-top:14px;padding-bottom:14px;display:flex;flex-direction:column;gap:8px}.notice-item{display:flex;gap:12px;align-items:flex-start}.notice-item .tag-new{background:var(--ink);color:var(--gold);font-size:.72rem;font-weight:700;padding:3px 10px;border-radius:999px;white-space:nowrap;margin-top:2px}.notice-item strong{display:block}.notice-item p{margin:0;font-size:.92rem;color:#4b5563;white-space:pre-line}.footer a{color:#aaa}.login-help{font-size:.82rem;color:var(--muted);background:#faf8f0;border-radius:10px;padding:10px 12px;margin:0;line-height:1.5}.hero-card h3{padding-right:84px}.auth-switch{display:inline-flex;border-radius:999px;background:#ffffff14;padding:3px;gap:3px}.auth-switch .btn{border-radius:999px}.btn-login{color:#fff;border-color:transparent}.btn-login:hover{background:#fff;color:var(--ink)}.hero-login-hint{margin:14px 0 0;font-size:.9rem;opacity:.8}.hero-login-hint a{color:var(--gold);font-weight:600}@media(max-width:720px){.nav nav .auth-switch{width:100%}.nav nav .auth-switch .btn{flex:1;text-align:center}}@media(max-width:520px){.auth-switch.large{width:100%}.auth-switch.large .btn{flex:1;text-align:center;padding:12px 10px;font-size:.95rem}}.family-note{background:#fffbeb;border:1px solid #fcd34d;border-radius:12px;padding:12px 16px;margin-bottom:18px;font-size:.92rem}.reg-form input[readonly]{background:#f3f4f6;color:#6b7280}.field-hint{display:block;color:var(--muted);font-size:.78rem;font-weight:400;margin-top:4px}.section-schedule{background:#fffbeb}.schedule-lead{color:var(--muted);margin:-20px 0 22px}.schedule-cta{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:26px}.tt-filter{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}.tt-filter button{border:1px solid #d1d5db;background:#fff;border-radius:999px;padding:6px 14px;font:inherit;font-size:.85rem;font-weight:600;cursor:pointer;color:#374151}.tt-filter button.on{background:#111827;color:#fff;border-color:#111827}.tt-empty{color:#6b7280;padding:20px 0}.tt-grid{display:grid;gap:6px}.tt-head{text-align:center;font-weight:800;font-size:.88rem;padding:8px 4px;border-radius:10px;border:2px solid #111827;background:#f3f4f6;color:#111827}.tt-time-h{background:#c084fc}.tt-head.d1{background:#7dd3fc}.tt-head.d2{background:#99f6e4}.tt-head.d3{background:#bef264}.tt-head.d4{background:#facc15}.tt-head.d5{background:#fb923c}.tt-head.d6{background:#f9a8d4}.tt-head.d7{background:#fca5a5}.tt-time{display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:10px;border:2px solid #111827;background:#e0f2fe;padding:6px;text-align:center}.tt-time b{font-size:.92rem;color:#111827}.tt-time small{font-size:.78rem;color:#374151}.tt-cell{display:flex;flex-direction:column;gap:4px;min-height:58px;border:1px dashed #e5e7eb;border-radius:10px;padding:4px}.tt-cell.empty{border-color:transparent}.tt-class{border-radius:8px;padding:6px 8px;text-align:center;border:2px solid #111827;background:#fff;color:#111827;line-height:1.25}.tt-class small{display:block;font-size:.72rem;color:#374151}.tt-class strong{display:block;font-size:.86rem;text-transform:uppercase;letter-spacing:.02em}.tt-class.mine,.tt-row.mine{box-shadow:0 0 0 3px #facc15}.c-bm{background:#fef3c7}.c-en{background:#dbeafe}.c-mt{background:#dcfce7}.c-sn{background:#f3e8ff}.c-sj{background:#ffe4e6}.c-am{background:#ccfbf1}.c-km{background:#fae8ff}.c-fz{background:#e0e7ff}.c-bi{background:#ecfccb}.c-ot{background:#f3f4f6}.tt-list{display:none}.tt-day{margin-bottom:14px}.tt-day h4{margin:0 0 6px;padding:6px 12px;border-radius:8px;border:2px solid #111827;font-size:.9rem;color:#111827}.tt-day h4.d1{background:#7dd3fc}.tt-day h4.d2{background:#99f6e4}.tt-day h4.d3{background:#bef264}.tt-day h4.d4{background:#facc15}.tt-day h4.d5{background:#fb923c}.tt-day h4.d6{background:#f9a8d4}.tt-day h4.d7{background:#fca5a5}.tt-row{display:flex;gap:12px;align-items:center;padding:8px 12px;border-radius:10px;margin-bottom:6px;border:1px solid rgba(0,0,0,.08);color:#111827}.tt-row-time{font-weight:700;font-size:.82rem;min-width:96px}.tt-row small{display:block;font-size:.78rem;color:#4b5563}@media(max-width:760px){.tt-grid{display:none}.tt-list{display:block}}.chat-shell{display:grid;grid-template-columns:320px 1fr;height:calc(100vh - 190px);min-height:480px;background:#fff;border:1px solid #e5e7eb;border-radius:16px;overflow:hidden}.chat-rooms{border-right:1px solid #e5e7eb;overflow-y:auto;background:#fafafa}.cr-group{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#6b7280;padding:12px 14px 4px}.chat-room{display:flex;gap:10px;align-items:center;width:100%;padding:10px 14px;border:0;background:none;font:inherit;text-align:left;cursor:pointer;border-left:3px solid transparent}.chat-room:hover{background:#f3f4f6}.chat-room.on{background:#fffbeb;border-left-color:#f5b400}.chat-room.reports{border-bottom:1px solid #e5e7eb}.cr-icon{font-size:1.3rem;width:34px;height:34px;flex:none;border-radius:10px;background:#fff;border:1px solid #e5e7eb;display:flex;align-items:center;justify-content:center}.cr-main{flex:1;min-width:0}.cr-main strong{display:block;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cr-main strong em{font-style:normal;font-weight:500;color:#6b7280;font-size:.8rem}.cr-main small{display:block;color:#6b7280;font-size:.78rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cr-side{display:flex;flex-direction:column;align-items:flex-end;gap:3px}.cr-side small{font-size:.7rem;color:#9ca3af}.cr-badge{background:#16a34a;color:#fff;font-size:.7rem;min-width:20px;padding:1px 6px;border-radius:999px;text-align:center}.chat-muted-note{margin:10px;padding:8px 10px;border-radius:10px;background:#fee2e2;color:#991b1b;font-size:.8rem}.chat-main{display:flex;flex-direction:column;min-width:0;min-height:0;background:#f6f3ee}.chat-head{display:flex;align-items:center;gap:10px;padding:10px 14px;background:#fff;border-bottom:1px solid #e5e7eb}.chat-title{flex:1;min-width:0}.chat-title strong{display:block}.chat-title small{color:#6b7280;font-size:.8rem}.chat-back{display:none;font-size:1.5rem}.chat-list{flex:1;overflow-y:auto;padding:12px 16px;display:flex;flex-direction:column}.chat-list.mod{background:#fff}.chat-older{align-self:center;margin-bottom:8px;font-size:.82rem}.chat-empty{margin:auto;text-align:center;color:#9ca3af;font-size:2.4rem}.chat-empty p,.chat-empty.small{font-size:.95rem}.chat-day{text-align:center;margin:10px 0}.chat-day span{background:#e8e2d6;color:#57534e;font-size:.72rem;font-weight:600;padding:3px 10px;border-radius:999px}.msg{display:flex;gap:8px;align-items:flex-end;margin-top:8px}.msg.grouped{margin-top:2px}.msg.mine{justify-content:flex-end}.msg-avatar{width:30px;flex:none;font-size:1.3rem;text-align:center}.msg-bubble{position:relative;max-width:min(560px,78%);background:#fff;border-radius:4px 14px 14px;padding:6px 10px 18px;box-shadow:0 1px 1px #0000000f}.msg.grouped .msg-bubble{border-radius:14px}.msg.mine .msg-bubble{background:#fef3c7;border-radius:14px 4px 14px 14px}.msg.role-tutor .msg-bubble,.msg.role-admin .msg-bubble{background:#e0f2fe}.msg.mine.role-tutor .msg-bubble,.msg.mine.role-admin .msg-bubble{background:#dbeafe}.msg-name{font-size:.78rem;font-weight:700;color:#1e3a8a;margin-bottom:2px;display:flex;gap:6px;align-items:center}.role-tag{display:inline-block;height:auto;min-height:0;line-height:1.5;font-size:.62rem;font-weight:700;padding:0 6px;border-radius:999px;background:#1e3a8a;color:#fff}.role-tag.rt-parent{background:#9333ea}.role-tag.rt-admin{background:#b91c1c}.msg-text{white-space:pre-wrap;word-wrap:break-word;overflow-wrap:anywhere;font-size:.93rem;line-height:1.4}.msg-deleted{color:#9ca3af;font-size:.85rem}.msg-time{position:absolute;right:10px;bottom:3px;font-size:.64rem;color:#9ca3af}.msg-more{position:absolute;top:2px;right:2px;border:0;background:none;color:#9ca3af;cursor:pointer;opacity:0;font-size:.9rem;padding:0 4px}.msg-bubble:hover .msg-more{opacity:1}.msg-menu{position:absolute;top:22px;right:0;z-index:5;background:#fff;border:1px solid #e5e7eb;border-radius:10px;box-shadow:0 6px 20px #0000001f;display:flex;flex-direction:column;min-width:160px;overflow:hidden}.msg-menu button{border:0;background:none;text-align:left;padding:8px 12px;font:inherit;font-size:.85rem;cursor:pointer}.msg-menu button:hover{background:#f3f4f6}.chat-compose{display:flex;gap:8px;padding:10px 12px;background:#fff;border-top:1px solid #e5e7eb}.chat-compose textarea{flex:1;resize:none;max-height:120px;padding:10px 12px;border:1px solid #d1d5db;border-radius:20px;font:inherit;font-size:.93rem;field-sizing:content}.chat-compose .btn{border-radius:50%;width:44px;height:44px;padding:0;font-size:1.1rem}.chat-readonly{padding:12px 16px;background:#fff;border-top:1px solid #e5e7eb;color:#6b7280;font-size:.85rem;text-align:center}.chat-rules{padding:0 16px 8px;background:#fff;color:#9ca3af;font-size:.7rem;text-align:center}.mod-card{border:1px solid #fecaca;background:#fff7f7;border-radius:12px;padding:10px 12px;margin-bottom:10px;display:flex;flex-direction:column;gap:2px}.mod-card.row{flex-direction:row;justify-content:space-between;align-items:center;border-color:#e5e7eb;background:#fafafa}.mod-card small{color:#6b7280;font-size:.78rem;display:block}.mod-msg{font-size:.95rem}.chip-on{background:#fff4cc;border-color:#f5b400;font-weight:700}.nav-badge{margin-left:auto;background:#16a34a;color:#fff;font-size:.7rem;font-weight:700;min-width:20px;padding:1px 6px;border-radius:999px;text-align:center}.tab-badge{display:inline-block;margin-left:4px;background:#16a34a;color:#fff;font-size:.68rem;min-width:18px;padding:0 5px;border-radius:999px}@media(max-width:760px){.chat-shell{grid-template-columns:1fr;height:calc(100vh - 170px)}.chat-shell.has-room .chat-rooms{display:none}.chat-shell:not(.has-room) .chat-main{display:none}.chat-back{display:inline-flex}.msg-bubble{max-width:85%}.msg-more{opacity:1}}.ccard{margin-top:4px;min-width:260px;max-width:420px;background:#ffffffbf;border:1px solid #e5e7eb;border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:6px}.msg.mine .ccard{background:#fff9}.ccard-head{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:#6b7280}.ccard-title{font-weight:700;font-size:.98rem}.ccard-title small{font-weight:500;color:#6b7280}.ccard-body{font-size:.88rem;white-space:pre-wrap;color:#374151}.ccard .btn{align-self:flex-start}.ccard small{font-size:.78rem}.card-x{font-size:.85rem;padding:6px 0}.ccard-classday{border-color:#fcd34d}.ccard-notice{border-color:#c4b5fd}.ccard-note{border-color:#93c5fd}.ccard-homework{border-color:#86efac}.poll-opts{display:flex;flex-direction:column;gap:6px}.poll-opt{position:relative;overflow:hidden;display:flex;justify-content:space-between;align-items:center;gap:8px;border:1.5px solid #d1d5db;background:#fff;border-radius:10px;padding:8px 10px;font:inherit;font-size:.9rem;cursor:pointer;text-align:left}.poll-opt:not(:disabled):hover{border-color:#f5b400}.poll-opt.mine{border-color:#16a34a}.poll-opt:disabled{cursor:default;color:inherit}.poll-fill{position:absolute;inset:0 auto 0 0;background:#fef3c7;transition:width .4s}.poll-opt.mine .poll-fill{background:#dcfce7}.poll-label,.poll-opt b{position:relative}.poll-names{font-size:.78rem;color:#4b5563}.cd-status{font-size:.82rem;font-weight:700;padding:4px 10px;border-radius:8px}.cd-status.red{background:#fee2e2;color:#991b1b}.cd-status.green{background:#dcfce7;color:#166534}.ccard .cc-bar{display:flex;height:8px;background:#e5e7eb;border-radius:999px;overflow:hidden;margin:2px 0}.ccard .cc-bar .g{background:#16a34a}.ccard .cc-bar .n{background:#f87171}.cd-kid{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;font-size:.86rem;padding:4px 0;border-top:1px dashed #e5e7eb}.cd-kid .vbtn{padding:4px 10px;font-size:.8rem}.row-gap.wrap{flex-wrap:wrap}.attach-wrap{position:relative}.attach-btn{border-radius:50%;width:44px;height:44px;padding:0;font-size:1.3rem}.attach-menu{position:absolute;bottom:52px;left:0;z-index:10;background:#fff;border:1px solid #e5e7eb;border-radius:14px;box-shadow:0 10px 30px #00000026;width:270px;overflow:hidden}.attach-menu button{display:grid;grid-template-columns:34px 1fr;grid-template-rows:auto auto;width:100%;border:0;background:none;text-align:left;padding:9px 12px;font:inherit;cursor:pointer}.attach-menu button:hover{background:#fffbeb}.attach-menu span{grid-row:span 2;font-size:1.3rem}.attach-menu b{font-size:.9rem}.attach-menu small{color:#6b7280;font-size:.75rem}.attach-list{max-height:300px;overflow-y:auto;border:1px solid #e5e7eb;border-radius:12px;margin:10px 0}.attach-item{display:flex;gap:10px;align-items:flex-start;padding:9px 12px;border-bottom:1px solid #f3f4f6;cursor:pointer;font-size:.9rem}.attach-item:last-child{border:0}.attach-item.on{background:#fffbeb}.attach-item small{display:block;color:#6b7280;font-size:.76rem}.attach-item input{margin-top:3px}.full-w{width:100%!important}.poll-form{display:flex;flex-direction:column;gap:10px}.poll-form .chip{align-self:flex-start}.poll-opt-row{display:flex;gap:6px}.poll-opt-row input{flex:1;padding:8px 10px;border:1px solid #d1d5db;border-radius:10px;font:inherit}@media(max-width:760px){.ccard{min-width:0}}.ccard .btn-sm{font-size:.82rem;padding:6px 12px}.msg-name .real-name{font-weight:400;opacity:.7;font-size:.85em}.admin{display:flex;min-height:100vh;background:#f4f5f7;color:var(--ink)}.admin-loading{display:grid;place-items:center;min-height:100vh;color:var(--muted)}.sidebar{width:240px;flex-shrink:0;background:var(--ink);color:#fff;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.sidebar-brand{display:flex;align-items:center;gap:10px;padding:20px 20px 24px}.sidebar-brand small{display:block;font-size:.7rem;opacity:.7}.sidebar-brand strong{color:var(--gold);letter-spacing:2px}.sidebar nav{display:flex;flex-direction:column;gap:2px;padding:0 12px;flex:1;overflow-y:auto}.sidebar nav a{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:10px;text-decoration:none;color:#d1d5db;font-size:.93rem;font-weight:500}.sidebar nav a:hover{background:#1f1f1f;color:#fff}.sidebar nav a.active{background:var(--gold);color:var(--ink);font-weight:700}.nav-icon{width:22px;text-align:center}.sidebar-foot{padding:16px 20px;border-top:1px solid #262626;font-size:.85rem}.sidebar-foot a{color:#9ca3af;text-decoration:none}.sidebar-foot a:hover{color:#fff}.sidebar-scrim{display:none}.admin-main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:12px;height:64px;padding:0 24px;background:#fff;border-bottom:1px solid #e5e7eb;position:sticky;top:0;z-index:20}.topbar-title{font-weight:700;flex:1}.menu-toggle{display:none}.user-chip{display:flex;align-items:center;gap:10px}.avatar{width:36px;height:36px;border-radius:50%;background:var(--navy);color:#fff;display:grid;place-items:center;font-weight:700}.user-meta{display:flex;flex-direction:column;line-height:1.2;margin-right:6px}.user-meta small{color:var(--muted)}.admin-content{padding:24px;max-width:1280px;width:100%}.page-header{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:20px}.page-header h1{font-size:1.5rem;margin:0 0 4px}.page-header p{margin:0;color:var(--muted);font-size:.92rem}.page-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.admin select,.admin input:not([type=checkbox]),.admin textarea,.login-card input{font:inherit;font-size:.92rem;padding:9px 12px;border:1.5px solid #d1d5db;border-radius:10px;background:#fff}.admin select:focus,.admin input:focus,.admin textarea:focus,.login-card input:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px #f5b70033}.search{min-width:280px}.btn-sm{padding:6px 12px;font-size:.82rem}.btn-ghost{background:transparent;border-color:#d1d5db;color:var(--ink)}.btn-ghost:hover{background:#f3f4f6}.btn-green{background:#16a34a;color:#fff}.btn-green:hover{background:#15803d}.btn-block{width:100%}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.danger{color:#dc2626!important}.icon-btn{background:none;border:0;font-size:1.2rem;cursor:pointer;padding:6px 10px;border-radius:8px;color:inherit}.icon-btn:hover{background:#f3f4f6}.link{background:none;border:0;padding:0;font:inherit;font-weight:600;color:var(--navy);cursor:pointer;text-align:left}.link:hover{text-decoration:underline}.spacer{flex:1}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-bottom:20px}.stat{background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:16px 18px;display:flex;flex-direction:column;gap:4px;text-decoration:none;color:inherit;border-left:5px solid #d1d5db}a.stat:hover{box-shadow:0 4px 14px #0000000f}.stat span{color:var(--muted);font-size:.85rem}.stat strong{font-size:1.6rem}.stat small{color:var(--muted)}.stats.small .stat strong{font-size:1.25rem}.stat-amber{border-left-color:var(--gold)}.stat-red{border-left-color:#dc2626}.stat-green{border-left-color:#16a34a}.stat-plain{border-left-color:var(--navy)}.dash-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.panel{background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:18px 20px}.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.panel-head h2{font-size:1.05rem;margin:0}.panel-head a{font-size:.85rem;color:var(--navy);text-decoration:none;font-weight:600}.list{list-style:none;margin:0;padding:0}.list li{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid #f1f1f1}.list li:last-child{border:0}.list small,td small{display:block;color:var(--muted);font-size:.8rem}.notice-list article{padding:12px 0;border-bottom:1px solid #f1f1f1}.notice-list article:last-child{border:0}.notice-list h3{font-size:.98rem;margin:0 0 4px}.notice-list p{margin:0 0 4px;white-space:pre-line;font-size:.92rem}.notice-list small{color:var(--muted)}.tabs{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}.tabs button{border:1.5px solid #e5e7eb;background:#fff;padding:7px 14px;border-radius:999px;font:inherit;font-size:.88rem;cursor:pointer;display:flex;align-items:center;gap:6px}.tabs button.active{background:var(--ink);color:#fff;border-color:var(--ink)}.count{background:var(--gold);color:var(--ink);border-radius:999px;padding:0 7px;font-size:.75rem;font-weight:700}.table-wrap{background:#fff;border:1px solid #e5e7eb;border-radius:14px;overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:.9rem}.table th{text-align:left;font-size:.75rem;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);padding:12px 14px;border-bottom:1px solid #e5e7eb;background:#fafafa;white-space:nowrap}.table td{padding:12px 14px;border-bottom:1px solid #f1f1f1;vertical-align:top}.table tr:last-child td{border-bottom:0}.table tr:hover td{background:#fcfcfd}.table .num{text-align:right;white-space:nowrap}.table tr.inactive td{opacity:.55}.table.compact{border:1px solid #e5e7eb;border-radius:10px;margin-bottom:16px}.table.compact td,.table.compact th{padding:8px 12px}.total-row td{font-weight:700;background:#fafafa}.row-actions{white-space:nowrap;text-align:right}.row-actions .btn+.btn{margin-left:6px}.tags{max-width:260px}.tag{display:inline-block;background:#f3f4f6;border-radius:6px;padding:2px 8px;margin:2px 4px 2px 0;font-size:.78rem}.inline-select{padding:5px 8px!important;font-size:.85rem!important}.attend{font-weight:700}.badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:.75rem;font-weight:700;white-space:nowrap}.badge-grey{background:#f3f4f6;color:#4b5563}.badge-green{background:#dcfce7;color:#166534}.badge-red{background:#fee2e2;color:#991b1b}.badge-amber{background:#fef3c7;color:#92400e}.badge-navy{background:#e0e7ff;color:#1e3a8a}.badge-gold{background:#fff4cc;color:#7a5a00}.month-picker{display:flex;align-items:center;background:#fff;border:1.5px solid #d1d5db;border-radius:10px}.month-picker input{border:0!important;box-shadow:none!important;padding:7px 4px!important}.modal-backdrop{position:fixed;inset:0;background:#11111180;display:grid;place-items:center;z-index:100;padding:16px}.modal{background:#fff;border-radius:16px;width:100%;max-width:560px;max-height:calc(100vh - 32px);display:flex;flex-direction:column;box-shadow:0 24px 60px #0000004d}.modal-wide{max-width:820px}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #eee}.modal-head h2{font-size:1.1rem;margin:0}.modal-body{padding:20px;overflow-y:auto}.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid #eee;align-items:center}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 16px}.form-grid.one{grid-template-columns:1fr}.field{display:flex;flex-direction:column;gap:5px}.field>span,.field-label{font-size:.82rem;font-weight:600;color:#374151}.field-label{display:block;margin-bottom:8px}.field.full,.form-grid .full{grid-column:1 / -1}.check{display:flex;align-items:center;gap:8px;font-size:.9rem;align-self:end;padding-bottom:8px;cursor:pointer}.check input{width:17px;height:17px;accent-color:var(--ink)}.check-row{display:flex;gap:18px;align-items:end}.section-title{font-size:1rem;margin:20px 0 10px}.chip-select{display:flex;flex-wrap:wrap;gap:8px}.chip-select button{border:1.5px solid #d1d5db;background:#fff;border-radius:999px;padding:6px 12px;font:inherit;font-size:.85rem;cursor:pointer}.chip-select button small{color:var(--muted);margin-left:4px}.chip-select button.on{background:#fff4cc;border-color:var(--gold);font-weight:600}.attend-head{display:flex;justify-content:space-between;align-items:center}.attend-list{list-style:none;padding:0;margin:0;border:1px solid #e5e7eb;border-radius:12px}.attend-list li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid #f1f1f1}.attend-list li:last-child{border:0}.attend-list small{display:block;color:var(--muted);font-size:.78rem}.seg{display:flex;border:1.5px solid #d1d5db;border-radius:10px;overflow:hidden;flex-shrink:0}.seg button{border:0;background:#fff;padding:7px 12px;font:inherit;font-size:.82rem;cursor:pointer}.seg button+button{border-left:1px solid #e5e7eb}.seg button.on.green{background:#16a34a;color:#fff}.seg button.on.red{background:#dc2626;color:#fff}.seg button.on.amber{background:var(--gold);color:var(--ink)}.notice-admin{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}.notice-admin .panel.inactive{opacity:.6}.notice-meta{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:8px}.notice-meta small{color:var(--muted)}.notice-admin h3{margin:0 0 6px;font-size:1.05rem}.notice-admin p{margin:0 0 12px;white-space:pre-line;font-size:.92rem;color:#374151}.notice-foot{display:flex;justify-content:space-between;align-items:center}.notice-foot small{color:var(--muted)}.empty-state{padding:32px 16px;text-align:center;color:var(--muted)}.muted{color:var(--muted)}.small{font-size:.85rem}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);padding:12px 20px;border-radius:12px;color:#fff;font-weight:600;z-index:200;box-shadow:0 10px 30px #00000040}.toast-green{background:#166534}.toast-red{background:#991b1b}@media(max-width:900px){.sidebar{position:fixed;left:0;top:0;z-index:60;transform:translate(-100%);transition:transform .2s}.sidebar.open{transform:none}.sidebar-scrim{display:block;position:fixed;inset:0;background:#0006;z-index:50}.menu-toggle{display:block}.user-meta,.user-chip .btn-ghost{display:none}.dash-grid{grid-template-columns:1fr}.admin-content{padding:16px}.topbar{padding:0 12px}.search{min-width:0;width:100%}}@media(max-width:600px){.form-grid{grid-template-columns:1fr}.attend-list li{flex-direction:column;align-items:flex-start}}.field input:not([type=checkbox]),.field select,.field textarea{width:100%;min-width:0}.form-grid>*{min-width:0}.alert-ok{background:#dcfce7;color:#166534;padding:12px 14px;border-radius:10px;margin-bottom:14px;font-size:.9rem}code{background:#fff4cc;padding:2px 8px;border-radius:6px;font-weight:700;font-size:.95rem}.topic-picker{border:1px solid #e5e7eb;border-radius:12px;padding:12px;background:#fcfcfd}.topic-head{display:flex;gap:12px;align-items:center;margin-bottom:10px}.topic-head input{flex:1}.topic-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.topic-chips button{border:0;background:var(--ink);color:#fff;border-radius:999px;padding:5px 12px;font:inherit;font-size:.8rem;cursor:pointer}.topic-groups{max-height:320px;overflow-y:auto;border-top:1px solid #eee}.topic-groups details{border-bottom:1px solid #eee}.topic-groups summary{display:flex;justify-content:space-between;gap:10px;padding:9px 4px;cursor:pointer;font-weight:600;font-size:.9rem}.topic-groups summary small{color:var(--muted);font-weight:500}.topic-item{display:flex;align-items:flex-start;gap:10px;padding:7px 8px 7px 14px;border-radius:8px;cursor:pointer;font-size:.88rem}.topic-item:hover{background:#f3f4f6}.topic-item.on{background:#fff4cc}.topic-item input{margin-top:3px;accent-color:var(--ink);flex-shrink:0}.topic-sk{flex:1}.topic-item .taught{color:#166534;font-size:.78rem;white-space:nowrap}.topic-item .next{background:var(--gold);color:var(--ink);font-size:.72rem;font-weight:700;padding:1px 8px;border-radius:999px;white-space:nowrap}.topics-cell{max-width:320px}.topics-cell small{display:block;color:var(--muted)}.rph-progress{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}.bar{height:8px;background:#e5e7eb;border-radius:999px;overflow:hidden}.bar.big{height:12px}.rph-group{margin-bottom:12px}.rph-group h3{margin:0 0 8px;font-size:1rem}.rph-group ul{list-style:none;margin:0;padding:0}.rph-group li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid #f1f1f1;font-size:.9rem}.rph-group li:last-child{border:0}.rph-group li.done .rph-sk{color:var(--muted)}.rph-progress .bar{background:#e5e7eb}.rph-edit-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}.rph-actions{display:flex;gap:2px;flex-shrink:0}.rph-actions .icon-btn{font-size:1rem;padding:4px 8px}.rph-add{margin-top:8px}.rph-group.removed{opacity:.8;border-style:dashed}.note-btn{border:1px solid #e5e7eb;background:#fff;border-radius:999px;padding:2px 10px;font:inherit;font-size:.78rem;cursor:pointer;color:var(--muted);flex-shrink:0}.note-btn.has{background:#fff4cc;border-color:var(--gold);color:var(--ink);font-weight:700}.note-btn:hover{border-color:var(--ink)}.rph-group li .rph-sk{flex:1}.note-list{display:flex;flex-direction:column;gap:12px}.note-card{border:1px solid #e5e7eb;border-radius:12px;padding:14px 16px}.note-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.note-head h3{margin:0 0 6px;font-size:1rem}.note-body{white-space:pre-line;margin:0 0 10px;font-size:.92rem;color:#374151}.note-links{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.note-links small{color:var(--muted);font-weight:500}.note-foot{display:flex;justify-content:space-between;align-items:center}.note-foot small{color:var(--muted)}.note-form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}.current-file{font-size:.88rem;margin-bottom:6px;display:flex;gap:10px;align-items:center}.rph-stats{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.q-toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.q-list{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:12px}.q-card{border:1px solid #e5e7eb;border-radius:12px;padding:12px 16px}.q-card::marker{font-weight:700}.q-meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:8px}.q-text{white-space:pre-line;margin:0 0 10px}.q-image{max-width:100%;max-height:320px;border:1px solid #eee;border-radius:8px;display:block;margin-bottom:10px}.q-image.loading{padding:20px;color:var(--muted);font-size:.85rem}.q-options{list-style:none;padding:0;margin:0 0 8px;display:grid;grid-template-columns:1fr 1fr;gap:6px}.q-options li{border:1px solid #e5e7eb;border-radius:8px;padding:6px 10px;font-size:.9rem}.q-options li.correct{background:#dcfce7;border-color:#16a34a}.q-answer{background:#f0fdf4;border-radius:8px;padding:8px 12px;margin:6px 0;font-size:.9rem}.q-answer p{margin:4px 0;white-space:pre-line}.q-types{margin-bottom:14px;flex-wrap:wrap}.opt-row{display:flex;gap:8px;align-items:center;margin-bottom:6px}.opt-row input:not([type=radio]){flex:1}.opt-key{display:flex;align-items:center;gap:4px;font-weight:700;width:48px;cursor:pointer;padding:6px 8px;border-radius:8px;border:1.5px solid #d1d5db}.opt-key.on{background:#dcfce7;border-color:#16a34a}.opt-key input{accent-color:#16a34a}@media(max-width:600px){.q-options{grid-template-columns:1fr}}.link-btn{background:none;border:0;padding:0;font:inherit;color:var(--navy);cursor:pointer;text-align:left;font-weight:600}.link-btn:hover{text-decoration:underline}.row-gap{display:inline-flex;gap:8px;align-items:center}.sub-h{font-size:.95rem;margin:18px 0 8px}.chip-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.chip{border:1px solid #d1d5db;background:#fff;border-radius:999px;padding:4px 12px;font-size:.85rem;cursor:pointer}.chip:hover{background:#fff4cc;border-color:var(--gold)}.xp-plus{color:#16a34a;white-space:nowrap}.xp-pill{background:#dcfce7;color:#166534;padding:3px 10px;border-radius:999px;font-weight:700;font-size:.85rem}.level-card{display:flex;gap:16px;align-items:center;background:linear-gradient(135deg,var(--navy),#1e3a8a);color:#fff;border-radius:16px;padding:18px 20px;margin-bottom:18px}.level-card.compact{padding:12px 16px;margin:0}.level-badge{width:64px;height:64px;flex:none;border-radius:50%;background:var(--gold);color:var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 0 0 4px #fff3}.level-card.compact .level-badge{width:50px;height:50px}.level-badge small{font-size:.65rem;text-transform:uppercase;letter-spacing:.05em}.level-badge strong{font-size:1.5rem;line-height:1}.level-body{flex:1;min-width:0}.level-title{display:flex;justify-content:space-between;gap:10px;margin-bottom:6px}.level-title strong{font-size:1.15rem}.level-body small{opacity:.8;font-size:.8rem}.xp-bar{height:10px;background:#fff3;border-radius:999px;overflow:hidden;margin-bottom:6px}.xp-bar span{display:block;height:100%;background:linear-gradient(90deg,var(--gold),#fde68a);border-radius:999px;transition:width .6s ease}.xp-bar.thin{height:6px;background:#e5e7eb;margin:8px 0 16px}.level-link{display:block;width:100%;background:none;border:0;padding:0;margin-bottom:18px;cursor:pointer;text-align:left;font:inherit}.badge-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}.badge-tile{border:1px solid #e5e7eb;border-radius:12px;padding:12px 8px;text-align:center;display:flex;flex-direction:column;gap:3px;align-items:center}.badge-tile.earned{background:#fffbeb;border-color:#fcd34d}.badge-tile.locked{opacity:.55}.badge-icon{font-size:1.8rem}.badge-tile strong{font-size:.82rem}.badge-tile small{font-size:.72rem;color:var(--muted)}.leaderboard{list-style:none;margin:0;padding:0}.leaderboard li{display:flex;align-items:center;gap:10px;padding:8px 6px;border-bottom:1px solid #f1f1f1}.leaderboard li:last-child{border:0}.leaderboard li.me{background:#fff4cc;border-radius:8px}.leaderboard .rank{width:30px;text-align:center;font-weight:700;color:var(--muted);font-size:1rem}.leaderboard .lb-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.leaderboard strong{white-space:nowrap}.level-strip{display:grid;grid-template-columns:repeat(10,1fr);gap:8px}@media(max-width:1100px){.level-strip{grid-template-columns:repeat(5,1fr)}}.level-strip div{border:1px solid #e5e7eb;border-radius:10px;padding:8px;text-align:center;display:flex;flex-direction:column}.level-strip strong{color:var(--navy);font-size:1.2rem}.level-strip span{font-size:.82rem;font-weight:600}.level-strip small{font-size:.72rem;color:var(--muted)}.rules li span{font-size:.9rem}.topic-practice{list-style:none;margin:0;padding:0}.topic-practice li{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid #f1f1f1}.topic-practice li:last-child{border:0}.topic-practice small{display:block;color:var(--muted);font-size:.8rem;margin-bottom:4px}.quiz-card{max-width:720px;margin:0 auto}.quiz-progress{display:flex;gap:12px;align-items:center;font-size:.85rem}.quiz-progress .diff{padding:2px 8px;border-radius:999px;font-size:.75rem;background:#e5e7eb}.d-Mudah{background:#dcfce7!important;color:#166534}.d-Sederhana{background:#fef3c7!important;color:#92400e}.d-Sukar{background:#fee2e2!important;color:#991b1b}.quiz-q{font-size:1.1rem;line-height:1.5;white-space:pre-wrap;margin:6px 0 12px}.q-image{max-width:100%;max-height:360px;border-radius:10px;border:1px solid #e5e7eb;margin-bottom:12px;display:block}.quiz-options{display:grid;gap:10px}.quiz-opt{text-align:left;padding:12px 14px;border:2px solid #e5e7eb;border-radius:12px;background:#fff;font:inherit;cursor:pointer}.quiz-opt b{display:inline-block;width:26px;height:26px;border-radius:50%;background:#f3f4f6;text-align:center;line-height:26px;margin-right:8px}.quiz-opt:hover:not(:disabled){border-color:var(--gold)}.quiz-opt.picked{border-color:var(--navy);background:#eef2ff}.quiz-opt.right{border-color:#16a34a;background:#dcfce7}.quiz-opt.wrong{border-color:#dc2626;background:#fee2e2}.quiz-opt:disabled{cursor:default;color:inherit}.quiz-input{width:100%;padding:12px 14px;font-size:1.05rem;border:2px solid #e5e7eb;border-radius:12px}.quiz-feedback{margin-top:14px;padding:12px 14px;border-radius:12px}.quiz-feedback.ok{background:#dcfce7;color:#14532d}.quiz-feedback.no{background:#fee2e2;color:#7f1d1d}.quiz-feedback p{margin:6px 0 0}.quiz-feedback .expl{color:var(--ink);font-size:.92rem}.quiz-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px;align-items:center}.quiz-done{text-align:center;max-width:560px;margin:0 auto}.big-emoji{font-size:3.2rem}.hero-cta.center{justify-content:center;display:flex;gap:10px;flex-wrap:wrap}.celebrate{position:fixed;inset:0;background:#0f172a8c;display:flex;align-items:center;justify-content:center;z-index:100;padding:16px;animation:fadein .2s}.celebrate-card{background:#fff;border-radius:20px;padding:28px 32px;text-align:center;max-width:380px;animation:pop .35s cubic-bezier(.2,1.6,.4,1)}.celebrate-card h2{margin:6px 0}.new-badge{margin:10px 0;padding:10px;background:#fffbeb;border:1px solid #fcd34d;border-radius:12px}.new-badge span{font-size:1.5rem;vertical-align:middle}.celebrate-card .btn{margin-top:12px}@keyframes pop{0%{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}@keyframes fadein{0%{opacity:0}}@media(max-width:640px){.level-badge{width:52px;height:52px}.topic-practice li{grid-template-columns:1fr auto}.topic-practice li .btn{grid-column:1 / -1}.leaderboard small{display:none}}@media(max-width:640px){.portal .stats,.modal .stats{grid-template-columns:1fr 1fr}.stat strong{font-size:1.3rem}}.tag-sib{display:inline-block;margin-left:6px;font-size:.7rem;background:#fffbeb;border:1px solid #fcd34d;border-radius:999px;padding:1px 7px;vertical-align:middle}.profile-row{display:flex;gap:16px;align-items:stretch;margin-bottom:18px}.profile-row .level-card{margin:0}.profile-level{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}.avatar-big{width:96px;flex:none;border-radius:18px;border:2px solid #fcd34d;background:#fffbeb;font-size:3rem;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px}.avatar-big span{font-size:.72rem;font-weight:700;color:var(--muted)}.avatar-big.static{cursor:default}.avatar-big:not(.static):hover{background:#fff4cc}.title-chip{align-self:flex-start;background:#eef2ff;color:var(--navy);border-radius:999px;padding:3px 12px;font-size:.82rem;font-weight:700}.avatar-sm{font-size:2.2rem;flex:none;width:56px;height:56px;display:flex;align-items:center;justify-content:center;background:#fffbeb;border:2px solid #fcd34d;border-radius:14px}.lb-avatar{font-size:1.3rem;width:28px;text-align:center}.lb-title{display:block;color:var(--muted);font-size:.72rem;font-weight:500}.avatar-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px}.avatar-opt{border:2px solid #e5e7eb;background:#fff;border-radius:12px;padding:8px 4px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px;font:inherit}.avatar-opt span{font-size:1.9rem}.avatar-opt small{font-size:.68rem;color:var(--muted);line-height:1.2;text-align:center}.avatar-opt.on{border-color:var(--gold);background:#fffbeb}.avatar-opt.locked span{filter:grayscale(1);opacity:.35}.avatar-opt:disabled{cursor:default}.avatar-opt:not(:disabled):hover{border-color:var(--gold)}.title-grid{display:flex;flex-wrap:wrap;gap:8px}.title-opt{border:2px solid #e5e7eb;background:#fff;border-radius:999px;padding:6px 14px;font:inherit;font-size:.85rem;font-weight:600;cursor:pointer}.title-opt small{display:block;font-size:.68rem;color:var(--muted);font-weight:400}.title-opt.on{border-color:var(--gold);background:#fffbeb}.title-opt.locked{color:#9ca3af;border-style:dashed;border-radius:12px;cursor:default}.summary-game{margin-bottom:18px}.summary-game .level-link{display:flex;gap:12px;align-items:center;margin-bottom:10px}.summary-game .level-card{flex:1}.game-chips{display:flex;gap:8px;flex-wrap:wrap}.game-chip{border:1px solid #e5e7eb;background:#fff;border-radius:999px;padding:7px 14px;font:inherit;font-size:.88rem;cursor:pointer}.game-chip.ok{background:#fff7ed;border-color:#fdba74}.game-chip.hot{background:#fef3c7;border-color:var(--gold);font-weight:600;animation:pulse 1.6s infinite}@keyframes pulse{50%{box-shadow:0 0 0 4px #f5b40040}}.streak-pill{background:#fff7ed;color:#9a3412;border:1px solid #fdba74;padding:3px 10px;border-radius:999px;font-weight:700;font-size:.82rem;white-space:nowrap}.streak-pill.done{background:#ffedd5}.streak-card{display:grid;grid-template-columns:1.3fr 1fr;gap:18px;background:linear-gradient(135deg,#7c2d12,#ea580c);color:#fff;border-radius:18px;padding:20px 22px;margin-bottom:20px}.streak-card.done{background:linear-gradient(135deg,#9a3412,#f59e0b)}.streak-main{display:flex;gap:16px;align-items:center}.streak-main h2{margin:0 0 4px;font-size:1.3rem}.streak-main p{margin:0 0 8px;opacity:.92;font-size:.92rem}.streak-main small{opacity:.85;font-size:.8rem}.streak-main .xp-bar{background:#ffffff40}.streak-flame{font-size:2.6rem;display:flex;flex-direction:column;align-items:center;line-height:1;min-width:72px}.streak-flame strong{font-size:1.8rem;margin-top:2px}.streak-side{display:flex;flex-direction:column;gap:10px;align-items:flex-start;justify-content:center}.week-dots{display:flex;gap:6px}.week-dots .dot{width:38px;display:flex;flex-direction:column;align-items:center;gap:2px}.week-dots .dot span{width:34px;height:34px;border-radius:50%;background:#ffffff2e;display:flex;align-items:center;justify-content:center;font-size:1.05rem}.week-dots .dot.active span{background:#fffffff2}.week-dots .dot.frozen span{background:#bae6fd}.week-dots .dot.today span{border:2px dashed rgba(255,255,255,.8)}.week-dots .dot small{font-size:.68rem;opacity:.85}.freezes{display:flex;align-items:center;gap:4px;font-size:1.2rem}.freezes .empty{filter:grayscale(1);opacity:.35}.freezes small{font-size:.78rem;opacity:.9;margin-left:6px}.freeze-note{background:#bae6fd40;border-radius:10px;padding:6px 10px;font-size:.82rem}.mission-list{list-style:none;margin:0;padding:0}.mission-list li{display:flex;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid #f1f1f1}.mission-list li:last-child{border:0}.mission-list li.ready{background:#fffbeb;border-radius:10px;padding:10px}.mission-list li.claimed{opacity:.6}.mission-icon{font-size:1.6rem;width:36px;text-align:center}.mission-body{flex:1;min-width:0}.mission-body strong{font-size:.92rem}.mission-body .bar{margin:6px 0 3px}.mission-body .bar span{background:var(--gold)}.mission-list li.claimed .bar span{background:#16a34a}.mission-body small{color:var(--muted);font-size:.78rem}.mission-done{color:#16a34a;font-weight:700;font-size:.85rem;white-space:nowrap}.goal-list{display:grid;gap:12px}.goal-card{border:1px solid #e5e7eb;border-radius:14px;padding:14px 16px}.goal-card.reached{border-color:#86efac;background:#f0fdf4}.goal-card.expired{opacity:.7}.goal-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.goal-head small{display:block;color:var(--muted);font-size:.8rem}.goal-status{font-size:.75rem;font-weight:700;padding:3px 10px;border-radius:999px;white-space:nowrap;background:#e5e7eb}.goal-status.s-active{background:#dbeafe;color:#1e40af}.goal-status.s-reached{background:#dcfce7;color:#166534}.goal-bar{position:relative;height:26px;background:#f3f4f6;border-radius:999px;overflow:hidden;margin:10px 0 8px}.goal-bar span{display:block;height:100%;background:linear-gradient(90deg,#16a34a,#4ade80);border-radius:999px;transition:width .6s}.goal-bar b{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:.8rem}.goal-foot{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:.85rem}.goal-top{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.goal-top span{background:#f9fafb;border:1px solid #e5e7eb;border-radius:999px;padding:2px 10px;font-size:.78rem}.goal-top span.me{background:#fff4cc;border-color:var(--gold)}.goal-actions{display:flex;gap:6px;justify-content:flex-end;margin-top:8px}@media(max-width:760px){.streak-card{grid-template-columns:1fr}.profile-row{gap:10px}.avatar-big{width:72px;font-size:2.3rem}.week-dots .dot{width:34px}.week-dots .dot span{width:30px;height:30px}}.toolbar{display:flex;justify-content:flex-end;margin-bottom:12px}.week-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.week-col{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:10px;min-height:140px;display:flex;flex-direction:column;gap:6px}.week-col h3{margin:0 0 4px;font-size:.9rem;display:flex;justify-content:space-between}.week-col h3 small{color:var(--muted);font-weight:500}.slot{text-align:left;border:1px solid #fcd34d;background:#fffbeb;border-radius:10px;padding:8px;font:inherit;cursor:pointer;display:flex;flex-direction:column;gap:1px}.slot:disabled{cursor:default;color:inherit}.slot:not(:disabled):hover{border-color:var(--gold);box-shadow:0 2px 6px #0000000f}.slot b{font-size:.82rem}.slot span{font-weight:600;font-size:.86rem}.slot small{color:var(--muted);font-size:.72rem}.slot.off{background:#f3f4f6;border-color:#e5e7eb;opacity:.7}.off-tag{color:#b91c1c!important;font-weight:600}.check-inline-sm{display:flex;gap:8px;align-items:center;font-weight:500;padding-top:8px}.wa-bar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}.wa-bar input[type=date]{padding:5px 8px;border:1px solid #d1d5db;border-radius:8px;font:inherit}.wa-template{margin-bottom:14px}.wa-template summary{cursor:pointer;font-weight:600}.wa-template textarea{width:100%;margin:10px 0 6px;padding:10px;border:1px solid #d1d5db;border-radius:10px;font:inherit;resize:vertical}.wa-slot{margin-bottom:12px}.btn-wa{background:#25d366;color:#fff;border-color:#25d366}.btn-wa:hover{background:#1ebe5b}.wa-sent{opacity:.65}@media(max-width:1000px){.week-grid{grid-template-columns:1fr 1fr}.week-col{min-height:0}}@media(max-width:560px){.week-grid{grid-template-columns:1fr}}.cc-list{display:grid;gap:14px}.cc-card{border-left:5px solid #f59e0b}.cc-card.go{border-left-color:#16a34a}.cc-card.cancelled{border-left-color:#dc2626;background:snow}.cc-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;flex-wrap:wrap}.cc-head h3{margin:0 0 2px;font-size:1.02rem}.cc-head h3 small{color:var(--muted);font-weight:500}.cc-status{font-size:.78rem;font-weight:700;padding:4px 12px;border-radius:999px;white-space:nowrap}.cc-status.s-pending{background:#fef3c7;color:#92400e}.cc-status.s-go{background:#dcfce7;color:#166534}.cc-status.s-cancelled{background:#fee2e2;color:#991b1b}.cc-bar{display:flex;height:12px;background:#e5e7eb;border-radius:999px;overflow:hidden;margin:12px 0 6px}.cc-bar .g{background:#16a34a}.cc-bar .n{background:#f87171}.cc-counts{display:flex;gap:14px;flex-wrap:wrap;font-size:.86rem;align-items:center}.cc-warn{background:#fef3c7;color:#92400e;padding:2px 10px;border-radius:999px;font-weight:600;font-size:.78rem}.cc-steps{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.cc-step{background:#f9fafb;border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:6px;font-size:.86rem}.cc-step .ok{color:#166534}.cc-step .warn{color:#9a3412}.cc-toggle{margin-top:10px;font-size:.85rem}.cc-students{margin-top:6px}@media(max-width:760px){.cc-steps{grid-template-columns:1fr}}.btn-danger{background:#dc2626;color:#fff;border-color:#dc2626}.btn-danger:hover{background:#b91c1c}.btn-danger:disabled{opacity:.5}.fee-tools{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}.fee-tools .tabs{margin-bottom:0}.tabs button .count{display:inline-block;min-width:22px;padding:0 6px;margin-left:4px;border-radius:999px;background:#fef3c7;color:#92400e;font-size:.75rem;font-weight:700}.tabs button.active .count{background:#fff3;color:#fff}.fee-filters{display:flex;gap:8px;flex-wrap:wrap}.fee-filters select,.fee-search{padding:8px 10px;border:1px solid #d1d5db;border-radius:10px;font:inherit;font-size:.9rem;background:#fff}.fee-search{width:280px}.fee-result{margin:0 0 10px}.pager{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px}@media(max-width:760px){.fee-search,.fee-filters{width:100%}.fee-filters select{flex:1}}.mini-bar{height:6px;width:110px;background:#e5e7eb;border-radius:999px;overflow:hidden;margin-bottom:3px}.mini-bar span{display:block;height:100%;background:#16a34a}.txt-amber{color:#b45309!important}.txt-green{color:#15803d!important}.txt-red{color:#b91c1c!important}.hw-instructions{background:#fffbeb;border-left:4px solid var(--gold);padding:10px 14px;border-radius:8px;white-space:pre-wrap;margin:0 0 14px}.picker-bar{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:.88rem;font-weight:600;margin-bottom:8px}.q-picker{max-height:320px;overflow-y:auto;border:1px solid #e5e7eb;border-radius:12px;padding:8px 12px}.q-group{padding:6px 0;border-bottom:1px solid #f3f4f6}.q-group:last-child{border:0}.q-group>strong{font-size:.82rem;color:var(--navy);display:block;margin-bottom:4px}.q-pick{display:flex;gap:10px;align-items:flex-start;padding:6px 8px;border-radius:8px;cursor:pointer;font-size:.88rem}.q-pick small{display:block;color:var(--muted);font-size:.74rem}.q-pick.on{background:#fffbeb}.q-pick input{margin-top:3px}.mark-layout{display:grid;grid-template-columns:1.5fr 1fr;gap:16px;align-items:start}.mark-pages{display:flex;flex-direction:column;gap:10px;max-height:68vh;overflow-y:auto;padding-right:4px}.mark-img{width:100%;border-radius:10px;border:1px solid #e5e7eb;cursor:zoom-in;background:#f9fafb}.img-loading{display:flex;align-items:center;justify-content:center;min-height:120px;color:var(--muted);background:#f3f4f6;border-radius:10px}.pdf-tile{border:1px dashed #d1d5db;background:#f9fafb;border-radius:10px;padding:18px;font:inherit;cursor:pointer;text-align:left}.hw-note{background:#eff6ff;border-radius:10px;padding:8px 12px;font-size:.9rem}.mark-side{position:sticky;top:0;display:flex;flex-direction:column;gap:12px}.mark-box{border:1px solid #fcd34d;background:#fffbeb;border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:6px}.mark-box label{font-weight:700;font-size:.85rem}.mark-input{display:flex;align-items:center;gap:8px;font-size:1.2rem;font-weight:700}.mark-input input{width:100px;font-size:1.4rem;font-weight:700;padding:6px 10px;border:2px solid #d1d5db;border-radius:10px}.mark-box textarea{width:100%;padding:8px 10px;border:1px solid #d1d5db;border-radius:10px;font:inherit;resize:vertical}.scheme{border:1px solid #e5e7eb;border-radius:12px;padding:10px 12px;max-height:40vh;overflow-y:auto;font-size:.86rem}.scheme-q{padding:8px 0;border-bottom:1px solid #f3f4f6}.scheme-q:last-child{border:0}.scheme-a{color:#15803d;margin-top:4px;white-space:pre-wrap}.scheme-e{color:var(--muted);font-size:.8rem;white-space:pre-wrap}.img-zoom{position:fixed;inset:0;background:#000000d9;z-index:200;display:flex;align-items:center;justify-content:center;padding:20px;cursor:zoom-out}.img-zoom-pic{max-width:100%;max-height:100%;border-radius:8px}@media(max-width:860px){.mark-layout{grid-template-columns:1fr}.mark-side{position:static}.mark-pages{max-height:none}}@media(max-width:640px){.modal-backdrop{align-items:flex-end;padding:0}.modal,.modal-wide{width:100%;max-width:100%;max-height:92dvh;border-radius:18px 18px 0 0;animation:sheet-up .22s ease-out}.modal-body{padding:14px 16px}.modal-foot{flex-wrap:wrap;padding:12px 16px calc(12px + env(safe-area-inset-bottom))}.modal-foot .btn{flex:1}.form-grid{grid-template-columns:1fr!important}input,select,textarea{font-size:16px!important}}@keyframes sheet-up{0%{transform:translateY(40px);opacity:.6}to{transform:none;opacity:1}}.sidebar-mobile-actions{display:none}@media(max-width:900px){.sidebar{width:min(84vw,290px);height:100dvh;overflow-y:auto;overscroll-behavior:contain}.sidebar nav{flex:none;overflow:visible}.sidebar-brand{padding-top:calc(20px + env(safe-area-inset-top))}.sidebar nav a{min-height:44px}.sidebar-mobile-actions{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border-top:1px solid #262626}.sidebar-mobile-actions button{display:flex;align-items:center;gap:10px;min-height:44px;padding:0 10px;border:0;background:none;color:#d1d5db;font:inherit;font-weight:600;border-radius:10px;text-align:left;cursor:pointer}.sidebar-mobile-actions button:active{background:#262626}.sidebar-mobile-actions .who{color:#9ca3af;font-size:.8rem;padding:4px 10px}.user-chip .btn-dark{display:none}.topbar{position:sticky;top:0;z-index:30;height:56px}.topbar-title{font-size:1rem}.menu-toggle{font-size:1.3rem;width:44px;height:44px}.page-header{flex-direction:column;align-items:stretch;gap:10px}.page-header h1{font-size:1.3rem}.page-actions{flex-wrap:wrap}.admin .chat-shell{height:calc(100dvh - 88px)}}@media(max-width:640px){.admin .stats{grid-template-columns:1fr 1fr;gap:10px}.admin .stats.small{grid-template-columns:repeat(3,1fr);gap:8px}.admin .stats.small .stat{padding:10px}.admin .stats.small .stat strong{font-size:1rem}.admin .stats.small .stat span{font-size:.72rem}.admin .tabs{flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px}.admin .tabs button{white-space:nowrap}.admin .table th,.admin .table td{padding:10px}}.login-msg{white-space:pre-wrap;background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:12px;font:inherit;font-size:.85rem;margin:0 0 12px}.send-row{display:flex;gap:8px}.send-row input{flex:1;min-width:0}.send-row .btn{white-space:nowrap}.tag-reg{display:inline-block;margin-left:6px;padding:1px 8px;border-radius:999px;background:#e0e7ff;color:#3730a3;font-size:.7rem;font-weight:700;vertical-align:middle}.text-red{color:#b91c1c}.receipt-box{background:#fffbeb;border:1px solid #fcd34d;border-radius:12px;padding:12px 16px;margin-bottom:16px}.receipt-box h3{margin:0 0 8px;font-size:1rem}.receipt-box ul{list-style:none;margin:0;padding:0}.receipt-box li{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:8px 0;border-top:1px solid #fde68a}.receipt-box li small{display:block;color:var(--muted)}.waive-box{align-items:flex-start;background:#f9fafb;border:1px solid #e5e7eb;border-radius:10px;padding:10px 12px;margin-top:8px}.waive-box.full{grid-column:1 / -1}.waive-box input{margin-top:2px}.waive-box small{display:block;color:var(--muted);font-size:.8rem}.tag-alias{display:inline-block;margin-left:6px;padding:1px 8px;border-radius:999px;background:#ecfdf5;color:#047857;font-size:.72rem;font-weight:600;vertical-align:middle}.notify-device{display:flex;justify-content:space-between;align-items:center;gap:12px;border:1px solid #e5e7eb;border-radius:12px;padding:12px 14px;margin-bottom:14px}.notify-device.on{background:#f0fdf4;border-color:#86efac}.notify-device small{display:block;color:var(--muted);font-size:.8rem}.notify-prefs{display:grid;gap:10px;margin-bottom:14px}.notify-row{display:flex;align-items:center;gap:12px;border:1px solid #e5e7eb;border-radius:12px;padding:10px 14px;cursor:pointer}.notify-row>span{flex:1}.notify-row small{display:block;color:var(--muted);font-size:.78rem}.notify-row input[type=checkbox]{width:18px;height:18px}.notify-row input[type=time],.notify-row select{padding:6px 8px;border:1px solid #d1d5db;border-radius:8px;font:inherit}.ios-help{background:#eff6ff;border:1px solid #bfdbfe;border-radius:12px;padding:12px 16px;margin-bottom:14px;font-size:.9rem}.ios-help ol{margin:6px 0;padding-left:20px}.notify-label{font-size:.7rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#9ca3af;margin-top:4px}.portal{min-height:100vh;background:#f4f5f7}.portal-top{background:linear-gradient(135deg,var(--ink),var(--navy));color:#fff}.portal-top-inner{display:flex;justify-content:space-between;align-items:center;height:68px;gap:12px}.portal-brand{display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none}.portal-brand small{display:block;font-size:.7rem;opacity:.75}.portal-brand strong{color:var(--gold)}.portal-user{display:flex;align-items:center;gap:10px;font-weight:600}.btn-ghost.light{color:#fff;border-color:#fff6}.btn-ghost.light:hover{background:#ffffff1a}.portal-main{padding-top:24px;padding-bottom:60px}.child-switch{display:flex;gap:10px;margin-bottom:18px;overflow-x:auto}.child-switch button{border:2px solid #e5e7eb;background:#fff;border-radius:14px;padding:10px 16px;text-align:left;cursor:pointer;font:inherit;display:flex;flex-direction:column;min-width:160px}.child-switch button small{color:var(--muted)}.child-switch button.on{border-color:var(--gold);background:#fff8dc}.portal-tabs{display:flex;gap:4px;background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:4px;margin-bottom:20px;overflow-x:auto}.portal-tabs button{flex:1;border:0;background:none;padding:10px 14px;border-radius:10px;font:inherit;font-weight:600;cursor:pointer;color:var(--muted);white-space:nowrap}.portal-tabs button.active{background:var(--ink);color:#fff}.portal-hero{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:18px}.portal-hero h1{margin:0 0 4px;font-size:1.6rem}.portal-hero p{margin:0;color:var(--muted)}.portal .stat{text-align:left;font:inherit;cursor:pointer}.portal div.stat{cursor:default}.portal-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;gap:12px;flex-wrap:wrap}.portal-bar h2{margin:0;font-size:1.3rem}.profile{margin-top:20px}.profile dl{display:grid;grid-template-columns:160px 1fr;gap:8px 16px;margin:0 0 12px;font-size:.92rem}.profile dt{color:var(--muted)}.profile dd{margin:0}.summary-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-bottom:16px}.summary-cards .panel{display:flex;flex-direction:column;gap:8px;padding:14px 16px}.summary-cards small{color:var(--muted)}.bar{height:8px;background:#fee2e2;border-radius:999px;overflow:hidden}.bar span{display:block;height:100%;background:#16a34a}.fee-list{display:flex;flex-direction:column;gap:10px}.fee-list .panel{padding:0}.fee-row{width:100%;display:flex;justify-content:space-between;align-items:center;padding:16px 18px;background:none;border:0;font:inherit;cursor:pointer;text-align:left}.fee-row small{display:block;color:var(--muted)}.fee-right{display:flex;align-items:center;gap:12px}.fee-detail{padding:0 18px 16px}@media(max-width:640px){.hide-sm{display:none}.profile dl{grid-template-columns:1fr;gap:2px}.profile dd{margin-bottom:8px}.portal-brand small{display:none}}.child-switch .add-child{border:2px dashed var(--gold);background:#fffbeb;color:var(--ink)}.child-switch .add-child:hover{background:#fff4cc}.pending-box{background:#fffbeb;border:1px solid #fcd34d;border-radius:12px;padding:12px 16px;margin-bottom:16px}.pending-box ul{list-style:none;margin:8px 0 0;padding:0}.pending-box li{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:6px 0;flex-wrap:wrap}.pending-box small{color:var(--muted)}.portal-user .bell{font-size:1rem;padding:6px 10px}.upcoming{margin-bottom:20px}.upcoming-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}.upcoming-list li{display:grid;grid-template-columns:80px 100px 1fr;gap:10px;align-items:center;padding:8px 10px;border-radius:10px;background:#f9fafb}.upcoming-list li.today{background:#fffbeb;border:1px solid #fcd34d}.up-day{font-weight:700;font-size:.88rem}.up-day small,.up-sub small{display:block;color:var(--muted);font-weight:400;font-size:.76rem}.up-time{font-weight:600;font-variant-numeric:tabular-nums}@media(max-width:560px){.upcoming-list li{grid-template-columns:70px 1fr}.up-sub{grid-column:1 / -1}}.vote-panel{margin-bottom:20px;border:2px solid #fcd34d}.vote-card{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:12px 0;border-bottom:1px solid #f1f1f1;flex-wrap:wrap}.vote-card:last-child{border:0;padding-bottom:0}.vote-card.cancelled .vote-info strong{text-decoration:line-through;color:#9ca3af}.vote-info small{display:block;color:var(--muted);font-size:.82rem}.vote-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.vchip{font-size:.75rem;font-weight:600;padding:2px 10px;border-radius:999px;background:#f3f4f6}.vchip.green{background:#dcfce7;color:#166534}.vchip.red{background:#fee2e2;color:#991b1b}.vote-actions{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.vote-btns{display:flex;gap:6px}.vbtn{border:2px solid #e5e7eb;background:#fff;border-radius:999px;padding:7px 16px;font:inherit;font-weight:700;cursor:pointer}.vbtn.yes.on{background:#16a34a;border-color:#16a34a;color:#fff}.vbtn.no.on{background:#dc2626;border-color:#dc2626;color:#fff}.vbtn:not(.on):hover{border-color:var(--gold)}.vote-closed{font-weight:600;font-size:.88rem;text-align:right}.vote-closed small{display:block;color:var(--muted);font-weight:400;font-size:.76rem}.up-cancel{color:#dc2626;font-style:normal;font-size:.82rem}@media(max-width:560px){.vote-actions{align-items:stretch;width:100%}.vote-btns .vbtn{flex:1}}.hw-section{margin-bottom:14px}.hw-card{width:100%;display:flex;justify-content:space-between;align-items:center;gap:12px;text-align:left;font:inherit;background:#fff;border:1px solid #e5e7eb;border-left:4px solid #d1d5db;border-radius:12px;padding:12px 14px;margin-bottom:8px;cursor:pointer}.hw-card:hover{border-color:var(--gold)}.hw-card.late{border-left-color:#dc2626}.hw-card.soon{border-left-color:#f59e0b}.hw-card.wait{border-left-color:#3b82f6}.hw-card.ok{border-left-color:#16a34a}.hw-card small{display:block;color:var(--muted);font-size:.8rem;margin-top:2px}.hw-due{font-size:.78rem;font-weight:700;padding:3px 10px;border-radius:999px;background:#f3f4f6;white-space:nowrap}.hw-due.late{background:#fee2e2;color:#991b1b}.hw-due.soon{background:#fef3c7;color:#92400e}.hw-due.wait{background:#dbeafe;color:#1e40af}.hw-due.ok{background:#dcfce7;color:#166534}.hw-score{font-size:1.4rem;font-weight:800;color:#15803d;white-space:nowrap}.hw-score small{font-size:.85rem;color:var(--muted)}.hw-view .panel{margin-bottom:14px}.hw-title{margin:0 0 4px;font-size:1.25rem}.hw-questions{padding-left:20px;margin:12px 0 0;display:grid;gap:12px}.hw-questions li>div:first-child{white-space:pre-wrap}.hw-opts{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:4px;font-size:.9rem}.hw-answer{background:#f0fdf4;border-radius:8px;padding:6px 10px;margin-top:6px;color:#166534;font-size:.88rem}.hw-answer small{display:block;color:var(--muted)}.hw-result{display:flex;gap:18px;align-items:center;border:2px solid #86efac;background:#f0fdf4}.hw-result-score{font-size:2.6rem;font-weight:800;color:#15803d;line-height:1}.hw-result-score small{font-size:1.1rem;color:var(--muted)}.hw-comment{margin:4px 0;font-style:italic}.page-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px;margin-bottom:12px}.page-tile{position:relative;display:flex;flex-direction:column;gap:4px;align-items:center;font:inherit;background:none;border:0;padding:0}.page-tile small{font-size:.72rem;color:var(--muted)}.page-thumb{width:100%;aspect-ratio:3 / 4;object-fit:cover;border-radius:10px;border:1px solid #e5e7eb;background:#f9fafb;cursor:zoom-in;display:flex;align-items:center;justify-content:center;font:inherit}.page-thumb.pdf{cursor:pointer;font-weight:700;color:#b91c1c}.page-tile.new .page-thumb{border:2px dashed var(--gold)}.page-tile.add{cursor:pointer}.page-tile.add span{width:100%;aspect-ratio:3 / 4;border:2px dashed #d1d5db;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:2rem;background:#fafafa}.page-tile.add:hover span{border-color:var(--gold);background:#fffbeb}.page-x{position:absolute;top:4px;right:4px;width:24px;height:24px;border-radius:50%;border:0;background:#0009;color:#fff;cursor:pointer;font-size:.75rem}.hw-note-input{width:100%;padding:10px;border:1px solid #d1d5db;border-radius:10px;font:inherit;resize:vertical}.hw-submit{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:10px}.m-top{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:4px;height:56px;padding:0 6px;background:linear-gradient(135deg,var(--ink),var(--navy));color:#fff;box-shadow:0 2px 10px #00000026;padding-top:env(safe-area-inset-top)}.m-icon{position:relative;width:44px;height:44px;flex:none;border:0;background:none;color:#fff;font-size:1.25rem;border-radius:12px;cursor:pointer;display:flex;align-items:center;justify-content:center}.m-icon:hover,.m-icon:active{background:#ffffff1f}.m-burger{display:flex;flex-direction:column;gap:4px}.m-burger i{display:block;width:20px;height:2px;background:#fff;border-radius:2px}.m-dot{position:absolute;top:9px;right:8px;width:9px;height:9px;border-radius:50%;background:#22c55e;border:2px solid #1e293b}.m-badge{position:absolute;top:4px;right:2px;min-width:18px;height:18px;padding:0 4px;border-radius:999px;background:#22c55e;color:#fff;font-size:.65rem;display:flex;align-items:center;justify-content:center}.m-title{flex:1;min-width:0;line-height:1.15;padding-left:2px}.m-title strong{display:block;font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.m-title small{display:block;font-size:.72rem;opacity:.75;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.m-scrim{position:fixed;inset:0;background:#0f172a80;z-index:70;opacity:0;pointer-events:none;transition:opacity .2s}.m-scrim.show{opacity:1;pointer-events:auto}.m-drawer{position:fixed;top:0;bottom:0;left:0;z-index:80;width:min(84vw,320px);background:#fff;overflow-y:auto;transform:translate(-102%);transition:transform .25s cubic-bezier(.2,.8,.2,1);box-shadow:4px 0 24px #0003;padding-bottom:calc(16px + env(safe-area-inset-bottom));overscroll-behavior:contain}.m-drawer.open{transform:none}.m-drawer-head{display:flex;align-items:center;gap:10px;padding:14px 14px 12px;padding-top:calc(14px + env(safe-area-inset-top));background:linear-gradient(135deg,var(--ink),var(--navy));color:#fff}.m-drawer-head .logo-img{width:40px;height:40px}.m-drawer-head div{flex:1;min-width:0}.m-drawer-head small{display:block;font-size:.68rem;opacity:.75}.m-drawer-head strong{color:var(--gold)}.m-close{border:0;background:#ffffff1f;color:#fff;width:34px;height:34px;border-radius:10px;font-size:1rem;cursor:pointer}.m-user{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid #f1f1f1}.m-user small{display:block;color:var(--muted);font-size:.76rem}.m-avatar{width:38px;height:38px;border-radius:50%;background:var(--gold);color:var(--ink);font-weight:800;display:flex;align-items:center;justify-content:center}.m-section{padding:8px 8px 4px;border-bottom:1px solid #f1f1f1}.m-section:last-child{border:0}.m-label{font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#9ca3af;padding:6px 10px 4px}.m-item{display:flex;align-items:center;gap:12px;width:100%;min-height:46px;padding:0 10px;border:0;background:none;border-radius:12px;font:inherit;font-size:.97rem;font-weight:600;color:var(--ink);text-align:left;text-decoration:none;cursor:pointer}.m-item:hover,.m-item:active{background:#f3f4f6}.m-item.on{background:#fff4cc;color:#92400e}.m-item.danger{color:#b91c1c}.m-ic{width:26px;text-align:center;font-size:1.15rem}.m-count{margin-left:auto;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:#16a34a;color:#fff;font-size:.72rem;display:flex;align-items:center;justify-content:center}.m-child{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border:0;background:none;border-radius:12px;font:inherit;text-align:left;cursor:pointer}.m-child small{display:block;color:var(--muted);font-size:.76rem}.m-child:hover{background:#f9fafb}.m-child.on{background:#fffbeb}.m-radio{width:18px;height:18px;border-radius:50%;border:2px solid #d1d5db;flex:none}.m-child.on .m-radio{border-color:var(--gold);background:radial-gradient(circle,var(--gold) 45%,transparent 50%)}.m-child.add{color:#92400e;font-weight:700;padding-left:38px}@media(max-width:820px){.portal-mobile .portal-main{padding:14px 12px 40px}.portal-mobile .panel{padding:14px;border-radius:14px}.portal-mobile .portal-hero h1{font-size:1.3rem}.portal-mobile .portal-bar h2{font-size:1.15rem}.portal-mobile .dash-grid{grid-template-columns:1fr;gap:14px}.portal-mobile .stats{grid-template-columns:1fr 1fr;gap:10px}.portal-mobile .stat{padding:12px}.portal-mobile .stat strong{font-size:1.25rem}.portal-mobile .profile dl{grid-template-columns:1fr;gap:2px}.portal-mobile .profile dt{margin-top:8px}.portal-mobile .chat-shell{height:calc(100dvh - 84px);min-height:420px;border-radius:14px}.portal-mobile .level-card{padding:14px}.portal-mobile .game-chips{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px}.portal-mobile .game-chip{white-space:nowrap}.portal-mobile .btn{min-height:40px}}.gx{display:flex;flex-direction:column;gap:14px}.gx-hero{display:flex;align-items:center;gap:14px;padding:18px;border-radius:22px;color:#fff;background:radial-gradient(circle at 85% 15%,rgba(255,255,255,.18),transparent 40%),linear-gradient(135deg,#7c3aed,#2563eb 55%,#06b6d4);box-shadow:0 10px 30px #2563eb40}.gx-avatar{width:64px;height:64px;flex:none;border-radius:20px;border:3px solid rgba(255,255,255,.6);background:#ffffff2e;font-size:2.2rem;cursor:pointer}.gx-hello{flex:1;min-width:0}.gx-hello small{opacity:.85;font-weight:600}.gx-hello h1{margin:2px 0;font-size:1.6rem;line-height:1.1}.gx-hello span{font-size:.85rem;opacity:.9}.gx-level{flex:none;display:flex;flex-direction:column;align-items:center;gap:4px;background:none;border:0;color:#fff;cursor:pointer;font:inherit}.gx-level b{font-size:.75rem;background:#00000040;padding:2px 8px;border-radius:999px}.gx-ring{--p: 0;width:54px;height:54px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(#facc15 calc(var(--p) * 1%),#ffffff40 0)}.gx-ring i{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#3b4fd8;font-style:normal;font-size:.72rem;font-weight:800}.gx-quote{position:relative;padding:16px 18px;border-radius:20px;background:linear-gradient(135deg,#fff7ed,#fef3c7);border:2px solid #fcd34d;overflow:hidden}.gx-quote:after{content:"“";pointer-events:none;position:absolute;right:12px;top:-18px;font-size:7rem;color:#f59e0b2e;font-family:Georgia,serif}.gx-quote-tag{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:#b45309}.gx-quote p{margin:6px 0 4px;font-size:1.12rem;font-weight:700;line-height:1.4;color:#1f2937;position:relative;z-index:1}.gx-quote-foot{display:flex;justify-content:space-between;align-items:center}.gx-quote-foot small{color:#92400e;font-weight:600}.gx-quote-foot button{border:0;background:#ffffffb3;border-radius:50%;width:34px;height:34px;cursor:pointer;font-size:1rem}.gx-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.gx-tile{display:flex;flex-direction:column;gap:2px;text-align:left;padding:14px;border-radius:18px;border:0;cursor:pointer;font:inherit;color:#111827;box-shadow:0 2px #0000000f;transition:transform .12s}.gx-tile:active{transform:scale(.97)}.gx-tile span{font-size:1.6rem}.gx-tile b{font-size:.98rem}.gx-tile small{font-size:.76rem;color:#4b5563}.gx-tile.t-hw{background:#dcfce7}.gx-tile.t-streak{background:#ffedd5}.gx-tile.t-mission{background:#ede9fe}.gx-tile.t-chat{background:#dbeafe}.gx-tile.hot{box-shadow:0 0 0 2px #f59e0b inset}.gx-tile.hot span{animation:wiggle 1.6s infinite;display:inline-block}@keyframes wiggle{0%,80%,to{transform:rotate(0)}85%{transform:rotate(-12deg)}90%{transform:rotate(12deg)}95%{transform:rotate(-6deg)}}.gx-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.gx-row .panel{display:flex;flex-direction:column;gap:4px;text-align:left;font:inherit;cursor:pointer;border-radius:18px}.gx-row small{color:var(--muted);font-weight:600}.gx-row strong{font-size:1.3rem}.gx-row span{font-size:.85rem;color:#4b5563}.gx-next{background:linear-gradient(135deg,#eff6ff,#fff)!important}.gx-fee.due strong{color:#b91c1c}.gx-news{border-radius:18px}.news-list{display:flex;flex-direction:column}.news-item{display:flex;gap:12px;align-items:flex-start;padding:10px 4px;border-bottom:1px solid #f1f1f1;text-decoration:none;color:inherit}.news-item:last-child{border:0}.news-item:active{background:#f9fafb}.news-ic{width:40px;height:40px;flex:none;border-radius:12px;background:#f3f4f6;display:grid;place-items:center;font-size:1.3rem}.news-body strong{display:block;font-size:.92rem;line-height:1.35}.news-body small{color:var(--muted);font-size:.76rem}.gx-profile{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:22px 18px;border-radius:22px;color:#fff;background:linear-gradient(135deg,#7c3aed,#2563eb 55%,#06b6d4)}.gx-profile-av{width:92px;height:92px;border-radius:28px;display:grid;place-items:center;font-size:3.2rem;background:#fff3;border:3px solid rgba(255,255,255,.6)}.gx-profile h1{margin:0;font-size:1.4rem}.gx-profile p{margin:0;opacity:.9}.gx-chip{background:#fff3;padding:3px 10px;border-radius:999px;font-size:.8rem;font-weight:600}.row-gap.center{justify-content:center}.gx-subjects{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.gx-subject{display:flex;flex-direction:column;padding:8px 12px;border-radius:12px;background:#f5f3ff;border:1px solid #ddd6fe;font-weight:700;font-size:.9rem}.gx-subject small{font-weight:500;color:var(--muted);font-size:.74rem}.m-user{cursor:pointer}@media(max-width:820px){.gx-tiles{grid-template-columns:1fr 1fr}.gx-hero{padding:16px;border-radius:20px}.gx-hello h1{font-size:1.35rem}.gx-avatar{width:56px;height:56px;font-size:1.9rem;border-radius:18px}.gx-row{grid-template-columns:1fr 1fr}.gx-row strong{font-size:1.1rem}}.gx-quote-foot{position:relative;z-index:1}@media(max-width:820px){.portal-mobile .gx .profile dl{grid-template-columns:110px 1fr;gap:10px 12px}.portal-mobile .gx .profile dt{margin-top:0;font-size:.85rem}.portal-mobile .gx .profile dd{font-size:.9rem;word-break:break-word}}.fee-due{border-left:4px solid #ef4444}.m-sub{margin-left:auto;font-size:.75rem;color:var(--muted);font-weight:500;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
