:root{--bg:#EFE7D2;--surface:#F8F3E6;--surface-2:#E7DEC6;--ink:#1B1B18;--ink-soft:#6B6355;--line:rgba(20,33,61,.14);--navy:#152238;--navy-text:#F4EFE2;--gold:#8E6B2E;--sage:#3E6B4C;--rust:#9A3A3D;--focus:#8E6B2E;color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg:#11161F;--surface:#1B2436;--surface-2:#232E44;--ink:#EDE6D3;--ink-soft:#A79F8C;--line:rgba(237,230,211,.14);--navy:#0C1220;--navy-text:#EDE6D3;--gold:#C9A35D;--sage:#6FB388;--rust:#E2726F;--focus:#C9A35D;color-scheme:dark}}:root[data-theme=dark]{--bg:#11161F;--surface:#1B2436;--surface-2:#232E44;--ink:#EDE6D3;--ink-soft:#A79F8C;--line:rgba(237,230,211,.14);--navy:#0C1220;--navy-text:#EDE6D3;--gold:#C9A35D;--sage:#6FB388;--rust:#E2726F;--focus:#C9A35D;color-scheme:dark}*{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:Work Sans,ui-sans-serif,system-ui,sans-serif;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}h1,h2,h3{font-family:Fraunces,Georgia,serif;text-wrap:balance;margin:0}button{font-family:inherit;cursor:pointer}input,textarea{font-family:inherit}button:focus-visible,input:focus-visible,textarea:focus-visible,a:focus-visible{outline:2px solid var(--focus);outline-offset:2px}@media (prefers-reduced-motion: reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}.app-shell{max-width:880px;margin:0 auto;min-height:100%;display:flex;flex-direction:column}.topbar{background:var(--navy);color:var(--navy-text);display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-radius:0 0 10px 10px;margin-top:env(safe-area-inset-top,0px);gap:12px;flex-wrap:wrap}.topbar-left{display:flex;align-items:center;gap:12px;min-width:0}.topbar-right{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.seal-badge{font-family:Fraunces,serif;font-weight:600;font-size:12.5px;letter-spacing:.04em;border:1px solid var(--gold);color:var(--gold);border-radius:100px;padding:3px 11px;flex-shrink:0}.topbar-title{font-size:14px;opacity:.85;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar-name{font-size:14px;font-weight:600}.link-btn{background:none;border:none;color:var(--navy-text);font-size:13.5px;padding:4px 6px;text-decoration:underline;text-underline-offset:3px}.icon-btn{background:none;border:none;color:var(--navy-text);font-size:19px;padding:2px 8px;line-height:1}.page-body{padding:28px 4px 56px;width:100%}.center-wrap{display:flex;align-items:center;justify-content:center;min-height:480px;padding:24px 0}.login-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:36px 30px;max-width:400px;width:100%}.login-badge{display:inline-block;font-family:Fraunces,serif;font-weight:600;font-size:13px;letter-spacing:.05em;color:var(--gold);border:1px solid var(--gold);border-radius:100px;padding:3px 13px;margin-bottom:18px}.login-title{font-size:27px;font-weight:500;margin-bottom:8px;color:var(--ink)}.login-sub{color:var(--ink-soft);font-size:14px;line-height:1.55;margin:0 0 24px;max-width:46ch}.stack{display:flex;flex-direction:column;gap:12px}.stack-tight{display:flex;flex-direction:column;gap:6px}.field-label{font-size:13px;color:var(--ink-soft)}.input{padding:11px 13px;font-size:15px;border:1px solid var(--line);border-radius:7px;background:var(--bg);color:var(--ink);width:100%}.error-text{color:var(--rust);font-size:13px}.btn-primary{background:var(--navy);color:var(--navy-text);border:none;border-radius:7px;padding:12px 18px;font-size:14px;font-weight:600}.btn-primary:disabled{opacity:.5}.btn-secondary{background:transparent;color:var(--ink);border:1.5px solid var(--ink);border-radius:7px;padding:10px 18px;font-size:14px;font-weight:600}.btn-plain-link{background:none;border:none;color:var(--ink-soft);font-size:13px;text-decoration:underline;padding:0;text-align:left}.teacher-entry{display:flex;justify-content:center;padding-bottom:28px}.h2{font-size:24px;font-weight:500;color:var(--ink);margin-bottom:6px}.h3{font-size:18px;font-weight:500;color:var(--ink);margin:28px 0 12px}.muted{color:var(--ink-soft);font-size:13.5px;margin:0}.level-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-top:20px}.level-card{text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:18px;display:flex;flex-direction:column;gap:8px;min-width:0}.level-card-top{display:flex;justify-content:space-between;align-items:center}.level-badge{font-family:Fraunces,serif;font-weight:600;font-size:21px;color:var(--ink)}.level-card-name{font-weight:600;font-size:14.5px}.level-card-desc{font-size:12.5px;color:var(--ink-soft);line-height:1.45}.stamp-grid{display:flex;flex-direction:column;gap:10px}.stamp-card{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:12px 16px}.stamp-level{font-weight:600;font-size:14px}.stamp-detail{font-size:12.5px;color:var(--ink-soft);margin-top:2px}.level-header{display:flex;align-items:center;gap:16px;margin-bottom:8px}.level-badge-big{font-family:Fraunces,serif;font-weight:600;font-size:30px;color:var(--gold);border:2px solid var(--gold);border-radius:50%;width:58px;height:58px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.tab-row{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:20px 0 22px;flex-wrap:wrap}.tab-btn{background:var(--surface-2);border:1px solid var(--line);border-bottom:none;border-radius:8px 8px 0 0;padding:9px 16px;margin-right:4px;font-size:13.5px;color:var(--ink-soft);text-transform:capitalize;transform:translateY(1px)}.tab-btn.active{background:var(--surface);color:var(--ink);font-weight:600;border-color:var(--line);position:relative}.cours-wrap{display:flex;flex-direction:column;gap:8px}.grammar-card{background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:16px;margin-bottom:10px}.grammar-title{font-weight:600;font-size:14.5px;margin-bottom:6px;color:var(--ink)}.grammar-body{font-size:13.5px;line-height:1.6;max-width:68ch}.conj-verb{font-size:12.5px;color:var(--ink-soft);margin:10px 0 4px;font-style:italic}.conj-table{border-collapse:collapse;font-size:13px;margin-bottom:6px}.conj-table td{padding:3px 14px 3px 0;border-bottom:1px solid var(--line)}.conj-table td:first-child{color:var(--ink-soft);padding-right:16px}.conj-table tr:last-child td{border-bottom:none}.method-overview{background:var(--surface);border:1px solid var(--gold);border-radius:9px;padding:14px 16px;font-size:13.5px;line-height:1.6;margin-bottom:16px;max-width:68ch}.method-phase{font-family:Fraunces,serif;font-weight:500;font-size:16px;color:var(--ink);margin:20px 0 8px}.method-card{background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:12px 16px;margin-bottom:8px}.method-card-title{font-weight:600;font-size:14px;margin-bottom:4px}.method-card-text{font-size:13.5px;line-height:1.6;max-width:68ch}.method-list{margin:0;padding-left:20px;font-size:13.5px;line-height:1.65;max-width:68ch}.method-list.pitfalls li::marker{color:var(--rust)}.check-row{display:flex;align-items:flex-start;gap:10px;padding:6px 0;font-size:13.5px;line-height:1.5;cursor:pointer}.check-row input{margin-top:3px;accent-color:var(--gold);flex-shrink:0}.check-row.done span{color:var(--ink-soft);text-decoration:line-through}.vocab-tab-select{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:18px}.vocab-theme-btn{background:var(--surface);border:1px solid var(--line);border-radius:100px;padding:7px 16px;font-size:13px;color:var(--ink)}.vocab-theme-btn.active{border-color:var(--gold);color:var(--gold);font-weight:600}.fill-blank-input{padding:7px 10px;font-size:13.5px;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--ink);width:160px}.fill-blank-input.correct{border-color:var(--sage)}.fill-blank-input.wrong{border-color:var(--rust)}.vocab-list{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:0}.vocab-item{background:var(--surface);border:1px solid var(--line);border-radius:100px;padding:5px 14px;font-size:13px}.quiz-card{margin-bottom:20px}.quiz-q{font-weight:600;font-size:14.5px;margin-bottom:10px}.quiz-options{display:flex;flex-direction:column;gap:6px}.option{text-align:left;background:var(--surface);border:1.5px solid var(--line);border-radius:7px;padding:10px 14px;font-size:13.5px;color:var(--ink);width:100%}.option.selected{border-color:var(--navy)}.option.correct{border-color:var(--sage);background:color-mix(in srgb,var(--sage) 14%,var(--surface))}.option.wrong{border-color:var(--rust);background:color-mix(in srgb,var(--rust) 12%,var(--surface))}.result-box{background:var(--surface);border:1px solid var(--gold);border-radius:9px;padding:18px;text-align:center}.result-score{font-family:Fraunces,serif;font-size:22px;color:var(--ink);margin-bottom:4px;font-variant-numeric:tabular-nums}.writing-wrap{display:flex;flex-direction:column;gap:14px}.writing-prompt{background:var(--surface);border:1px solid var(--gold);border-radius:9px;padding:16px;font-size:14px;line-height:1.55;max-width:68ch}.writing-sent-box{background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:16px;font-size:13.5px;line-height:1.6;margin-bottom:10px;white-space:pre-wrap}.feedback-box{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line);font-size:13.5px}.textarea{width:100%;padding:12px;font-size:13.5px;border:1px solid var(--line);border-radius:7px;resize:vertical;margin-bottom:8px;background:var(--bg);color:var(--ink)}.teacher-layout{display:grid;grid-template-columns:220px 1fr;gap:20px;margin-top:20px}@media (max-width: 560px){.teacher-layout{grid-template-columns:1fr}}.student-list{display:flex;flex-direction:column;gap:4px;min-width:0}.student-row{display:flex;justify-content:space-between;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:7px;padding:10px 12px;font-size:13.5px;width:100%;min-width:0}.student-row span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.student-row.active{border-color:var(--gold);background:color-mix(in srgb,var(--gold) 12%,var(--surface))}.teacher-level-card{background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:16px;margin-bottom:12px}.teacher-writing{margin-top:10px;font-size:13.5px;line-height:1.6}.teacher-writing p{white-space:pre-wrap}.seal-svg circle{stroke:var(--gold)}.seal-svg path{stroke:var(--surface)}.seal-svg.filled circle{fill:var(--gold)}.banner{background:var(--surface-2);border:1px solid var(--line);border-radius:9px;padding:12px 16px;font-size:13px;color:var(--ink-soft);margin:0 0 18px}.subscribe-card{background:var(--surface);border:1.5px solid var(--gold);border-radius:10px;padding:16px 18px;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:18px 0 8px}.subscribe-text{font-size:13.5px;color:var(--ink);max-width:50ch}.subscribe-text strong{display:block;font-family:Fraunces,serif;font-size:15px;margin-bottom:3px}.sub-status{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;padding:4px 10px;border-radius:100px}.sub-status.active{background:color-mix(in srgb,var(--sage) 16%,var(--surface));color:var(--sage)}.sub-status.inactive{background:color-mix(in srgb,var(--rust) 12%,var(--surface));color:var(--rust)}.listen-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}.listen-btn{background:var(--navy);color:var(--navy-text);border:none;border-radius:100px;padding:9px 18px;font-size:13.5px;font-weight:600;display:inline-flex;align-items:center;gap:8px}.listen-btn:disabled{opacity:.5}.transcript-toggle{background:none;border:1px solid var(--line);border-radius:100px;padding:8px 16px;font-size:13px;color:var(--ink-soft)}.transcript-box{background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:14px 16px;font-size:13.5px;line-height:1.6;white-space:pre-wrap;margin-bottom:14px}.text-card{background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:16px;margin-bottom:22px}.text-card-title{font-family:Fraunces,serif;font-weight:500;font-size:16px;margin-bottom:10px;color:var(--ink)}.text-passage{font-size:13.5px;line-height:1.65;white-space:pre-wrap;max-width:68ch;margin-bottom:16px;color:var(--ink)}.topic-select{padding:10px 12px;font-size:13.5px;border:1px solid var(--line);border-radius:7px;background:var(--bg);color:var(--ink);width:100%;margin-bottom:12px}.mini-progress{font-size:12px;color:var(--ink-soft);font-variant-numeric:tabular-nums}.sub-toggle-row{display:flex;align-items:center;gap:10px;margin:6px 0 14px}.sub-toggle-btn{border:1px solid var(--line);border-radius:100px;padding:6px 14px;font-size:12.5px;background:var(--surface);color:var(--ink)}.sub-toggle-btn.active{border-color:var(--sage);color:var(--sage);font-weight:600}.exam-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:2px 0 18px}.exam-pill{font-size:12px;font-weight:600;letter-spacing:.02em;color:var(--gold);border:1px solid var(--gold);border-radius:100px;padding:4px 12px}.exam-subnav{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:18px}.doc-card{background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:16px;margin-bottom:16px}.doc-title{font-family:Fraunces,serif;font-weight:500;font-size:15px;margin-bottom:8px;color:var(--ink)}.po-part-card{background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:16px;margin-bottom:14px}.po-part-title{font-weight:600;font-size:14.5px;margin-bottom:6px}.po-prep-pill{display:inline-block;font-size:11.5px;color:var(--ink-soft);border:1px solid var(--line);border-radius:100px;padding:2px 10px;margin-bottom:8px}.task-card{background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:16px;margin-bottom:16px}.task-title{font-weight:600;font-size:14.5px;margin-bottom:6px}.task-instructions{font-size:13.5px;line-height:1.55;margin-bottom:10px;max-width:66ch}@media (max-width: 420px){.login-card{padding:28px 20px}.level-badge-big{width:48px;height:48px;font-size:24px}}.info-text{color:var(--ink);background:var(--surface-2);border-radius:10px;padding:10px 12px;font-size:14px}.paypal-box{min-width:220px;max-width:320px}.paypal-holder{min-height:44px}.lock-note{margin:0 0 16px;padding:10px 14px;border-radius:10px;background:var(--surface-2);font-size:14px}.level-card.locked{opacity:.65}.lock-icon{font-size:20px;line-height:1}
