.landing{min-height:100vh;background:linear-gradient(135deg,#00393c,#006e66);display:flex;align-items:center;justify-content:center;padding:1rem}.landing-state{min-height:100vh;display:flex;align-items:center;justify-content:center;color:#888}.landing-card{background:#fff;border-radius:12px;padding:2rem 1.75rem 1.5rem;max-width:420px;width:100%;box-shadow:0 12px 32px #00000040}.landing-brand{text-align:center;margin-bottom:1.5rem}.landing-brand h1{margin:0;font-size:1.75rem;font-weight:700;color:#00393c;letter-spacing:-.02em}.landing-brand p{margin:.4rem 0 0;color:#666;font-size:.95rem}.landing-form{display:flex;flex-direction:column;gap:.6rem}.landing-form label{font-size:.85rem;font-weight:600;color:#444}.landing-input{font-family:Consolas,Courier New,monospace;font-size:1.25rem;letter-spacing:.1em;text-align:center;padding:.75rem;border:2px solid #e0e0e0;border-radius:8px;outline:none;transition:border-color .15s;text-transform:uppercase;width:100%;box-sizing:border-box}.landing-input:focus{border-color:#009185}.landing-input:disabled{background:#f4f4f4;cursor:not-allowed}.landing-error{background:#fee;color:#c00;padding:.5rem .75rem;border-radius:6px;font-size:.88rem;border:1px solid #fcc}.landing-submit{padding:.75rem 1rem;background:#009185;color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:background .15s;margin-top:.25rem}.landing-submit:hover:not(:disabled){background:#007a70}.landing-submit:disabled{opacity:.6;cursor:not-allowed}.landing-hint{text-align:center;color:#888;font-size:.82rem;margin:.9rem 0 0;line-height:1.5}.landing-divider{display:flex;align-items:center;gap:.6rem;margin:1.25rem 0 1rem;color:#999;font-size:.85rem}.landing-divider:before,.landing-divider:after{content:"";flex:1;height:1px;background:#e0e0e0}.landing-teacher-link{display:block;text-align:center;padding:.7rem;color:#00393c;text-decoration:none;border:1.5px solid #00393c;border-radius:8px;font-weight:500;transition:background .15s,color .15s}.landing-teacher-link:hover{background:#00393c;color:#fff}.pwd-wrap{position:relative;width:100%}.pwd-input{padding-inline-end:2.6rem!important}.pwd-toggle{position:absolute;inset-inline-end:.55rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;border:none;color:#ffffff80;cursor:pointer;border-radius:6px;padding:0;transition:color .15s,background .15s}.pwd-toggle:hover{color:#ffffffe6;background:#ffffff0f}.pwd-toggle:focus-visible{outline:2px solid rgba(88,103,192,.55);outline-offset:2px}.tl-page{min-height:100vh;background:radial-gradient(circle at 20% 0%,rgba(86,103,192,.35),transparent 50%),radial-gradient(circle at 80% 100%,rgba(54,67,149,.45),transparent 50%),linear-gradient(135deg,#1a1a2e,#0f0f1e);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1.5rem;position:relative}.tl-card{background:#ffffff0a;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:2.25rem 2rem 1.75rem;max-width:420px;width:100%;box-shadow:0 20px 50px #0006;color:#fff}.tl-brand{text-align:center;margin-bottom:1.75rem}.tl-brand-mark{width:64px;height:64px;margin:0 auto .85rem;background:linear-gradient(135deg,#5867c0,#364395);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.75rem;box-shadow:0 8px 16px #36439573}.tl-brand h1{margin:0;font-size:1.5rem;font-weight:700;letter-spacing:-.01em}.tl-brand-sub{margin:.4rem 0 0;font-size:.85rem;color:#ffffff8c}.tl-form{display:flex;flex-direction:column;gap:1rem}.tl-label{display:flex;flex-direction:column;gap:.45rem;font-size:.82rem;font-weight:500;color:#ffffffbf}.tl-input{padding:.75rem .95rem;border:1px solid rgba(255,255,255,.12);background:#ffffff0a;border-radius:10px;font-size:.95rem;color:#fff;outline:none;transition:border-color .15s,background .15s;font-family:inherit;width:100%;box-sizing:border-box}.tl-input::placeholder{color:#ffffff4d}.tl-input:focus{border-color:#5867c0;background:#ffffff12}.tl-input:disabled{opacity:.5;cursor:not-allowed}.tl-error{background:#ef44441f;border:1px solid rgba(239,68,68,.35);color:#fca5a5;padding:.6rem .85rem;border-radius:8px;font-size:.85rem}.tl-submit{margin-top:.5rem;padding:.85rem 1rem;background:linear-gradient(135deg,#5867c0,#364395);color:#fff;border:none;border-radius:10px;font-size:1rem;font-weight:600;cursor:pointer;transition:transform .05s,filter .15s;font-family:inherit}.tl-submit:hover:not(:disabled){filter:brightness(1.1)}.tl-submit:active:not(:disabled){transform:scale(.99)}.tl-submit:disabled{opacity:.6;cursor:not-allowed}.tl-divider{display:flex;align-items:center;gap:.6rem;margin:1.5rem 0 1rem;color:#fff6;font-size:.82rem}.tl-divider:before,.tl-divider:after{content:"";flex:1;height:1px;background:#ffffff1a}.tl-back{display:block;text-align:center;padding:.7rem;color:#ffffffb3;text-decoration:none;border:1px solid rgba(255,255,255,.12);border-radius:10px;font-size:.9rem;transition:background .15s,color .15s}.tl-back:hover{background:#ffffff0d;color:#fff}.tl-footer{margin-top:1.5rem;font-size:.78rem;color:#ffffff59;font-family:Consolas,Courier New,monospace;letter-spacing:.06em}.cpm-backdrop{position:fixed;inset:0;z-index:200;background:#080810a6;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:1rem;animation:cpm-fade .15s ease-out}@keyframes cpm-fade{0%{opacity:0}to{opacity:1}}.cpm-card{width:100%;max-width:460px;background:#141628f2;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.1);border-radius:16px;box-shadow:0 20px 60px #0000008c;color:#fff;max-height:90vh;overflow-y:auto;animation:cpm-pop .18s ease-out}@keyframes cpm-pop{0%{transform:scale(.96);opacity:0}to{transform:scale(1);opacity:1}}.cpm-head{display:flex;align-items:center;justify-content:space-between;padding:1.1rem 1.4rem .6rem}.cpm-title{margin:0;font-size:1.15rem;font-weight:700}.cpm-close{width:32px;height:32px;border-radius:8px;border:none;background:transparent;color:#ffffff8c;font-size:1.4rem;line-height:1;cursor:pointer;transition:background .15s,color .15s}.cpm-close:hover{background:#ffffff0f;color:#fff}.cpm-form{display:flex;flex-direction:column;gap:.95rem;padding:.4rem 1.4rem 1.3rem}.cpm-label{display:flex;flex-direction:column;gap:.4rem;font-size:.82rem;font-weight:500;color:#ffffffbf}.cpm-input{padding:.7rem .9rem;border:1px solid rgba(255,255,255,.12);background:#ffffff0a;border-radius:10px;font-size:.95rem;color:#fff;outline:none;transition:border-color .15s,background .15s;font-family:inherit;width:100%;box-sizing:border-box}.cpm-input::placeholder{color:#ffffff4d}.cpm-input:focus{border-color:#5867c0;background:#ffffff12}.cpm-input:disabled{opacity:.5;cursor:not-allowed}.cpm-rules{list-style:none;margin:-.3rem 0 .1rem;padding:.55rem .7rem;display:grid;grid-template-columns:1fr 1fr;gap:.3rem .8rem;font-size:.78rem;color:#ffffff80;background:#ffffff08;border:1px dashed rgba(255,255,255,.08);border-radius:8px}.cpm-rules li{display:flex;align-items:center;gap:.4rem;transition:color .15s}.cpm-rules li.is-ok{color:#86efac}.cpm-rule-mark{display:inline-flex;width:14px;height:14px;align-items:center;justify-content:center;font-size:.7rem;flex-shrink:0}.cpm-match{font-size:.78rem;margin-top:.2rem}.cpm-match.is-ok{color:#86efac}.cpm-match.is-bad{color:#fca5a5}.cpm-error{background:#ef44441f;border:1px solid rgba(239,68,68,.35);color:#fca5a5;padding:.6rem .85rem;border-radius:8px;font-size:.85rem}.cpm-actions{display:flex;gap:.6rem;justify-content:flex-end;margin-top:.3rem}.cpm-btn{padding:.7rem 1.2rem;border-radius:10px;font-size:.92rem;font-weight:600;cursor:pointer;font-family:inherit;border:1px solid transparent;transition:filter .15s,background .15s,border-color .15s,transform .05s}.cpm-btn:disabled{opacity:.5;cursor:not-allowed}.cpm-btn:active:not(:disabled){transform:scale(.98)}.cpm-btn-ghost{background:transparent;color:#ffffffbf;border-color:#ffffff26}.cpm-btn-ghost:hover:not(:disabled){background:#ffffff0d;color:#fff}.cpm-btn-primary{background:linear-gradient(135deg,#5867c0,#364395);color:#fff;box-shadow:0 4px 12px #36439559}.cpm-btn-primary:hover:not(:disabled){filter:brightness(1.1)}@media(max-width:480px){.cpm-rules{grid-template-columns:1fr}}.ttb{display:flex;align-items:center;justify-content:space-between;gap:1rem;color:#fff;position:relative;z-index:10}.ttb--page{background:#ffffff0a;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:.85rem 1.1rem;margin-bottom:1.25rem;box-shadow:0 4px 14px #00000040}.ttb--flush{background:linear-gradient(180deg,#1a1a2e,#14142a);border-bottom:1px solid rgba(255,255,255,.06);padding:.7rem 1rem;flex-shrink:0}.ttb-left{flex:1;min-width:0;display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.ttb-left>*{min-width:0}.ttb-right{position:relative;flex-shrink:0}.ttb-user{display:flex;align-items:center;gap:.55rem;padding:.4rem .6rem .4rem .45rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:999px;color:#fff;font-family:inherit;font-size:.88rem;cursor:pointer;transition:background .15s,border-color .15s}.ttb-user:hover{background:#ffffff14;border-color:#fff3}.ttb-avatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,#5867c0,#364395);display:flex;align-items:center;justify-content:center;font-size:.78rem;font-weight:700;letter-spacing:.02em;flex-shrink:0;box-shadow:0 2px 6px #36439566}.ttb-user-name{max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.ttb-chev{font-size:.7rem;opacity:.6;margin-inline-start:.15rem}.ttb-menu{position:absolute;top:calc(100% + .5rem);inset-inline-end:0;min-width:220px;background:#1c1e32f7;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.1);border-radius:12px;box-shadow:0 12px 32px #00000080;padding:.4rem;z-index:50;animation:ttb-menu-in .12s ease-out}@keyframes ttb-menu-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.ttb-menu-head{padding:.55rem .75rem .7rem;border-bottom:1px solid rgba(255,255,255,.07);margin-bottom:.35rem}.ttb-menu-name{font-size:.92rem;font-weight:600;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ttb-menu-email{font-size:.78rem;color:#ffffff80;margin-top:.15rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ttb-menu-item{width:100%;display:flex;align-items:center;gap:.55rem;padding:.55rem .75rem;background:transparent;border:none;color:#ffffffd9;font-family:inherit;font-size:.88rem;text-align:start;border-radius:8px;cursor:pointer;transition:background .12s,color .12s}.ttb-menu-item:hover{background:#ffffff0f;color:#fff}.ttb-menu-item-danger{color:#fca5a5}.ttb-menu-item-danger:hover{background:#ef44441a;color:#fecaca}.ttb-mi-icon{width:22px;display:inline-flex;justify-content:center;font-size:.95rem}.ttb-toast{position:fixed;top:1.2rem;inset-inline-end:1.2rem;background:linear-gradient(135deg,#22c55ef2,#16a34af2);color:#fff;padding:.7rem 1.1rem;border-radius:10px;font-size:.9rem;font-weight:500;box-shadow:0 12px 28px #0006;z-index:300;animation:ttb-toast 3.4s ease-in-out forwards}@keyframes ttb-toast{0%{opacity:0;transform:translateY(-8px)}10%{opacity:1;transform:translateY(0)}85%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}@media(max-width:540px){.ttb-user-name{display:none}}.td-page{min-height:100vh;background:radial-gradient(circle at 15% 0%,rgba(86,103,192,.22),transparent 45%),radial-gradient(circle at 90% 90%,rgba(54,67,149,.28),transparent 45%),linear-gradient(180deg,#14142a,#0c0c1c);color:#fff;padding:1.25rem 1rem 4rem;box-sizing:border-box}.td-page>*{max-width:980px;margin-inline:auto}.td-state{min-height:60vh;display:flex;align-items:center;justify-content:center;color:#ffffff8c;font-size:.95rem}.td-error{color:#fca5a5}.td-header-block{display:flex;flex-direction:column;min-width:0}.td-greet{display:flex;align-items:baseline;gap:.4rem;flex-wrap:wrap}.td-greet-hi{font-size:.95rem;color:#ffffffa6;font-weight:400}.td-greet-name{font-size:1.15rem;font-weight:700;background:linear-gradient(90deg,#c4cdf4,#fff);-webkit-background-clip:text;background-clip:text;color:transparent}.td-sub{font-size:.8rem;color:#ffffff80;margin-top:.25rem}.td-empty{text-align:center;padding:4rem 1rem;background:#ffffff08;border:1px dashed rgba(255,255,255,.1);border-radius:16px}.td-empty-mark{font-size:3rem;margin-bottom:.5rem}.td-empty h2{margin:.5rem 0 .4rem;font-size:1.25rem;color:#fff;font-weight:700}.td-empty p{margin:.3rem 0;color:#ffffffb3;font-size:.95rem}.td-empty-hint{margin-top:.6rem!important;font-size:.85rem!important;color:#ffffff73!important}.td-featured{position:relative;display:block;text-decoration:none;color:#fff;background:linear-gradient(135deg,#364395,#5867c0);border-radius:18px;padding:1.5rem 1.5rem 1.3rem;margin-bottom:1.75rem;overflow:hidden;box-shadow:0 14px 36px #36439566,inset 0 1px #ffffff1f;transition:transform .15s ease,box-shadow .2s ease;isolation:isolate}.td-featured:hover{transform:translateY(-2px);box-shadow:0 20px 44px #36439580,inset 0 1px #ffffff26}.td-featured-glow{position:absolute;top:-40%;inset-inline-end:-20%;width:60%;aspect-ratio:1;background:radial-gradient(circle,rgba(255,255,255,.18) 0%,transparent 60%);pointer-events:none;z-index:0}.td-featured>*:not(.td-featured-glow){position:relative;z-index:1}.td-featured-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.85rem}.td-status-pill{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .7rem;background:#00000040;border:1px solid rgba(255,255,255,.15);border-radius:999px;font-size:.78rem;font-weight:600;color:#fff;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.td-status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;box-shadow:0 0 8px currentColor}.td-featured-tag{font-size:.72rem;font-weight:600;color:#ffffffa6;letter-spacing:.02em;text-transform:uppercase}.td-featured-title{margin:0 0 .35rem;font-size:1.55rem;font-weight:700;letter-spacing:-.01em;line-height:1.2}.td-featured-meta{display:flex;align-items:center;gap:.6rem;font-size:.92rem;color:#ffffffd9}.td-dot-sep{display:inline-block;width:4px;height:4px;border-radius:50%;background:#fff6}.td-featured-session{margin-top:.85rem;padding:.6rem .85rem;background:#0003;border:1px solid rgba(255,255,255,.12);border-radius:10px;font-size:.92rem;display:inline-flex;gap:.5rem;align-items:center;flex-wrap:wrap}.td-time-icon{font-size:.95rem;opacity:.85}.td-topic{opacity:.85}.td-featured-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;margin-top:1.3rem}.td-stat{background:#00000038;border:1px solid rgba(255,255,255,.08);padding:.85rem .85rem .75rem;border-radius:12px;min-width:0}.td-stat-label{font-size:.75rem;color:#ffffffa6;margin-bottom:.35rem;font-weight:500}.td-stat-value{font-size:1.15rem;font-weight:700;line-height:1.2;color:#fff;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.td-stat-bar{margin-top:.5rem;height:4px;background:#ffffff1a;border-radius:999px;overflow:hidden}.td-stat-bar-fill{height:100%;background:linear-gradient(90deg,#fbbf24,#22c55e);border-radius:999px;transition:width .3s ease}.td-stat-sub{font-size:.72rem;color:#ffffff8c;margin-top:.3rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.td-featured-cta{margin-top:1.3rem;display:flex;justify-content:flex-end;align-items:center;gap:.5rem;font-weight:600;font-size:.95rem;color:#fff}.td-arrow{display:inline-flex;width:26px;height:26px;align-items:center;justify-content:center;background:#ffffff26;border-radius:50%;transition:transform .15s ease,background .15s ease}.td-featured:hover .td-arrow{background:#fff;color:#364395;transform:translate(-3px)}.td-section{margin-top:1.5rem}.td-section-title{display:flex;align-items:center;gap:.6rem;margin:0 0 .85rem;padding:0 .2rem;font-size:.95rem;font-weight:700;color:#ffffffd9}.td-section-bar{display:inline-block;width:4px;height:16px;border-radius:2px;background:linear-gradient(180deg,#5867c0,#364395)}.td-section-count{margin-inline-start:auto;font-size:.78rem;font-weight:600;padding:.15rem .55rem;background:#ffffff14;border-radius:999px;color:#ffffffb3}.td-list{display:flex;flex-direction:column;gap:.55rem}.td-row{display:flex;flex-direction:column;gap:.75rem;padding:.95rem 1.1rem;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:12px;text-decoration:none;color:inherit;transition:background .15s,border-color .15s,transform .05s}.td-row:hover{background:#ffffff12;border-color:#5867c080;transform:translate(2px)}.td-row-top{display:grid;grid-template-columns:minmax(0,2fr) auto minmax(120px,1fr) auto;gap:1rem;align-items:center}.td-row-main{min-width:0}.td-row-title{font-weight:600;color:#fff;font-size:.98rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.td-row-sub{display:flex;align-items:center;gap:.5rem;font-size:.82rem;color:#ffffff8c;margin-top:.2rem}.td-row-status{display:inline-flex;align-items:center;gap:.4rem;font-size:.82rem;font-weight:500;color:#ffffffbf}.td-row-progress{display:flex;flex-direction:column;gap:.3rem;min-width:0}.td-row-progress-text{font-size:.82rem;color:#ffffffd9;font-weight:600}.td-row-progress-bar{height:4px;background:#ffffff14;border-radius:999px;overflow:hidden}.td-row-progress-fill{height:100%;background:linear-gradient(90deg,#5867c0,#8b95d8);border-radius:999px;transition:width .3s ease}.td-row-next{font-size:.78rem;color:#ffffff80;white-space:nowrap}.td-students{display:flex;flex-direction:column;gap:.5rem}.td-students--featured{margin-top:1.1rem;padding-top:1rem;border-top:1px solid rgba(255,255,255,.12)}.td-students--row{padding-top:.7rem;border-top:1px solid rgba(255,255,255,.06)}.td-students-head{display:flex;align-items:center;gap:.45rem;font-size:.78rem;font-weight:600;color:#ffffffa6}.td-students--featured .td-students-head{color:#fffc}.td-students-icon{font-size:.85rem;opacity:.85}.td-students-count{margin-inline-start:auto;padding:.1rem .5rem;background:#ffffff14;border-radius:999px;font-size:.72rem;color:#ffffffb3}.td-students--featured .td-students-count{background:#00000040;color:#ffffffd9}.td-students-chips{display:flex;flex-wrap:wrap;gap:.35rem}.td-chip{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .65rem .3rem .55rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:999px;font-size:.78rem;font-weight:500;color:#ffffffb3;white-space:nowrap;max-width:100%;transition:background .15s,color .15s,border-color .15s}.td-chip-dot{width:6px;height:6px;border-radius:50%;background:#ffffff4d;flex-shrink:0}.td-chip-name{overflow:hidden;text-overflow:ellipsis;max-width:14rem}.td-chip.is-active{background:#22c55e1f;border-color:#22c55e59;color:#bbf7d0}.td-chip.is-active .td-chip-dot{background:#22c55e;box-shadow:0 0 6px #22c55eb3}.td-students--featured .td-chip{background:#00000047;border-color:#ffffff24;color:#ffffffe0}.td-students--featured .td-chip-dot{background:#fff6}.td-students--featured .td-chip.is-active{background:#22c55e38;border-color:#86efac80;color:#dcfce7}@media(max-width:720px){.td-featured-stats{grid-template-columns:1fr}.td-featured-title{font-size:1.3rem}.td-row-top{grid-template-columns:1fr;gap:.6rem}.td-row-status,.td-row-progress{width:100%}.td-chip-name{max-width:9rem}}.toc{height:100%;display:flex;flex-direction:column;background:var(--bg);overflow:hidden}.toc-state{padding:2rem;text-align:center;color:var(--text-muted)}.toc-header{background:var(--bg-dark);color:#fff;padding:1rem 1.25rem;box-shadow:0 2px 8px #00000026;flex-shrink:0}.toc-header h1{margin:0;font-size:1.1rem;font-weight:600}.toc-subtitle{margin:.25rem 0 0;font-size:.85rem;opacity:.75}.toc-header-row{display:flex;align-items:center;justify-content:space-between;gap:1rem}.toc-student-tag{display:flex;align-items:center;gap:.5rem;padding:.45rem .85rem;background:#ffffff1f;border:1px solid rgba(255,255,255,.18);border-radius:999px;font-size:.9rem;font-weight:500;flex-shrink:0;max-width:60%}.toc-student-icon{font-size:.9rem;opacity:.85}.toc-student-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.toc-master-detail{flex:1;display:flex;min-height:0}.toc-units{flex:0 0 280px;overflow-y:auto;background:#2a2d3e;padding:.5rem .5rem 2rem;display:flex;flex-direction:column;gap:4px;border-right:1px solid rgba(0,0,0,.3)}.toc-unit-item{display:flex;align-items:center;gap:.5rem;padding:.65rem .85rem;background:linear-gradient(180deg,#5867c0,#364395);color:#fff;border:1px solid rgba(255,255,255,.18);border-radius:4px;cursor:pointer;font-size:.88rem;font-weight:500;text-align:left;transition:filter .1s,transform .05s;font-family:inherit}.toc-unit-item:hover{filter:brightness(1.12)}.toc-unit-item:active{transform:scale(.98)}.toc-unit-item.is-active{background:linear-gradient(180deg,#f9a825,#c98010);border-color:#ffffff4d;box-shadow:inset 0 0 0 1px #fff3}.toc-unit-arrow{flex-shrink:0;font-size:.95rem;font-weight:700;opacity:.85;width:.9em;text-align:center}.toc-unit-label{flex:1;word-break:break-word}.toc-spreads-pane{flex:1;min-width:0;overflow-y:auto;background:var(--bg);display:flex;flex-direction:column}.toc-spreads-header{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:5}.toc-back-btn{display:none;align-items:center;background:transparent;border:1px solid var(--border);color:var(--text);padding:.35rem .7rem;border-radius:4px;font-size:.85rem;cursor:pointer;font-family:inherit}.toc-back-btn:active{background:var(--border)}.toc-spreads-title{margin:0;font-size:1rem;font-weight:600;color:var(--text);flex:1;word-break:break-word}.toc-spreads-list{list-style:none;margin:0;padding:.75rem;display:flex;flex-direction:column;gap:4px}.toc-spread-card{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.7rem .95rem;background:linear-gradient(180deg,#5867c0,#364395);color:#fff;border:1px solid rgba(255,255,255,.18);border-radius:4px;text-decoration:none;transition:filter .1s,transform .05s}.toc-spread-card:hover{filter:brightness(1.12)}.toc-spread-card:active{transform:scale(.98)}.toc-spread-label{font-weight:500;font-size:.92rem;flex:1;word-break:break-word}.toc-spread-meta{display:flex;gap:.3rem;align-items:center;flex-shrink:0}.toc-card-badge{font-size:.7rem;padding:2px 7px;border-radius:10px;font-weight:600;white-space:nowrap}.toc-card-badge.audio{background:#e6f3ff;color:#06c}.toc-card-badge.video{background:#ffe6e6;color:#c00}.toc-card-badge.answers{background:#fff3cd;color:#997000}.toc-card-badge.unlocks{background:#ffffffd9;color:#555}.toc-card-badge.unlocks.has-open{background:#d1fae5;color:#065f46}@media(max-width:720px){.toc-master-detail{position:relative}.toc-units,.toc-spreads-pane{flex:1 1 100%;width:100%}.toc-units{border-right:none}.toc--units .toc-spreads-pane,.toc--spreads .toc-units{display:none}.toc-back-btn{display:inline-flex}}.hotspot{position:absolute;display:flex;align-items:center;justify-content:center;background:transparent;border:none;cursor:pointer;padding:0;margin:0;pointer-events:auto;box-sizing:border-box}.hotspot-img{width:100%;height:100%;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;transition:transform .08s ease-out}.hotspot:hover .hotspot-img{transform:scale(1.08)}.hotspot:active .hotspot-img{transform:scale(.92)}.hotspot.hotspot-locked{pointer-events:none;display:flex;align-items:center;justify-content:center;background:transparent;border:none}.hotspot-lock-badge{font-size:.6em;line-height:1;filter:grayscale(1);opacity:.5;pointer-events:none}.hotspot.hotspot-edit{display:flex;align-items:center;justify-content:center;border-radius:50%;border:2px solid transparent;font-size:.9em}.hotspot.hotspot-edit.is-locked{background:#dc26262e;border-color:#dc262699}.hotspot.hotspot-edit.is-unlocked{background:#16a34a38;border-color:#16a34ab3}.hotspot.hotspot-edit:hover{transform:scale(1.1)}.hotspot.hotspot-edit:active{transform:scale(.95)}.hotspot-toggle-icon{pointer-events:none;font-size:.85em}.script-panel{position:relative;background:#1f1f1f;color:#f0f0f0;max-height:40vh;overflow-y:auto;border-top:1px solid rgba(255,255,255,.1);padding:.5rem 0;font-size:.92rem;line-height:1.45}.script-empty{padding:1rem;text-align:center;opacity:.6;font-style:italic}.script-line{display:block;padding:.35rem 1rem;cursor:pointer;transition:background .1s;border-left:3px solid transparent}.script-line:hover{background:#ffffff0f}.script-line.is-active{background:#fff59d;color:#1a1a1a;border-left-color:#f9a825}.script-sect{display:inline;font-weight:700;font-style:italic;opacity:.9;margin-right:.4em}.script-sect-empty{display:none}.script-text{display:inline;word-break:break-word}.script-panel::-webkit-scrollbar{width:8px}.script-panel::-webkit-scrollbar-track{background:transparent}.script-panel::-webkit-scrollbar-thumb{background:#fff3;border-radius:4px}.media-overlay{position:fixed;inset:0;background:#000000d9;z-index:100;display:flex;align-items:center;justify-content:center;padding:1rem}.media-frame{background:var(--surface);border-radius:.5rem;max-width:min(95vw,720px);max-height:95vh;width:100%;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 8px 24px #00000080}.media-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;background:var(--bg-dark);color:#fff}.media-label{font-weight:600;font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.media-actions{display:flex;align-items:center;gap:.4rem}.media-script{width:32px;height:32px;border-radius:4px;background:#ffffff1f;display:flex;align-items:center;justify-content:center;opacity:.85}.media-script img{width:18px;height:18px;filter:invert(1);pointer-events:none}.media-script:hover{background:#fff3;opacity:1}.media-script.is-on{background:#fff59dd9;opacity:1}.media-script.is-on img{filter:none}.media-close{font-size:1.5rem;line-height:1;padding:0 .5rem;color:#fff}.media-body{background:#000;display:flex;align-items:center;justify-content:center}.media-body audio{width:100%;padding:1rem;background:var(--surface)}.media-body video{width:100%;max-height:60vh;display:block}.media-subtitle{display:flex;gap:.6rem;align-items:baseline;padding:.7rem 1rem;background:#fff59d;color:#1a1a1a;border-top:1px solid rgba(0,0,0,.08);font-size:1rem;line-height:1.4;cursor:pointer;min-height:2.4rem;transition:background .1s}.media-subtitle:hover{background:#fff176}.media-subtitle-sect{font-weight:700;font-style:italic;flex-shrink:0;min-width:1.6em}.media-subtitle-text{flex:1;word-break:break-word}.audio-bar-wrap{display:flex;flex-direction:column;box-shadow:0 1px 4px #00000040;position:relative;z-index:50}.audio-bar-wrap>.script-panel{position:fixed;top:64px;right:12px;width:360px;max-width:calc(100vw - 24px);max-height:calc(100vh - 80px);border-radius:10px;border:1px solid rgba(255,255,255,.08);box-shadow:0 12px 32px #0000008c;background:#1c1c1ef0;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);z-index:55}@media(max-width:720px){.audio-bar-wrap>.script-panel{inset:auto 12px 12px;width:auto;max-width:none;max-height:25vh}}.audio-bar{display:flex;align-items:center;gap:.5rem;padding:.4rem .6rem;background:linear-gradient(180deg,#00595c,#003c40);color:#fff;border-bottom:1px solid rgba(0,0,0,.25)}.audio-bar-btn{width:36px;height:36px;min-width:36px;border-radius:50%;background:#ffffff2e;color:#fff;font-size:.85rem;display:flex;align-items:center;justify-content:center}.audio-bar-btn:active{background:#ffffff52}.audio-bar-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:.15rem}.audio-bar-row{display:flex;justify-content:space-between;gap:.5rem;font-size:.78rem;line-height:1.1}.audio-bar-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500;opacity:.95}.audio-bar-time{font-variant-numeric:tabular-nums;opacity:.7;flex-shrink:0}.audio-bar-scrub{-webkit-appearance:none;appearance:none;width:100%;height:4px;border-radius:2px;background:#ffffff40;outline:none;cursor:pointer}.audio-bar-scrub::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0006;cursor:pointer}.audio-bar-scrub::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#fff;border:none;box-shadow:0 1px 3px #0006}.audio-bar-script{width:32px;height:32px;min-width:32px;border-radius:4px;background:#ffffff1f;color:#fff;display:flex;align-items:center;justify-content:center;opacity:.85}.audio-bar-script img{width:18px;height:18px;filter:invert(1);pointer-events:none}.audio-bar-script:hover{background:#fff3;opacity:1}.audio-bar-script.is-on{background:#fff59dd9;opacity:1}.audio-bar-script.is-on img{filter:none}.audio-bar-close{font-size:1.4rem;line-height:1;color:#fff;padding:0 .4rem;opacity:.85}.audio-bar-close:active{opacity:1}audio{display:none}.viewer{display:grid;grid-template-rows:auto 1fr auto;height:100%;width:100%;background:#1a1a1a;color:#fff;position:relative;overflow:hidden}.viewer.has-audio{grid-template-rows:auto auto 1fr auto}.viewer-state{padding:2rem;text-align:center;color:var(--text-muted);background:var(--bg);height:100%}.viewer-topbar{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.35rem .75rem;background:var(--bg-dark);border-bottom:1px solid rgba(255,255,255,.08);min-height:36px}.viewer-back{display:inline-flex;align-items:center;gap:.15rem;font-size:.85rem;color:#fff;padding:.2rem .4rem}.viewer-back-arrow{font-size:1.1rem;line-height:1}.viewer-title{font-weight:600;font-size:.85rem;flex:1;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.viewer-student-tag{display:inline-flex;align-items:center;gap:.35rem;padding:.25rem .65rem;background:#ffffff1a;border:1px solid rgba(255,255,255,.15);border-radius:999px;font-size:.78rem;color:#fff;max-width:40%;flex-shrink:0}.viewer-student-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(max-width:640px){.viewer-student-tag{display:none}}.viewer-stage{position:relative;overflow:hidden;min-height:0;background:radial-gradient(ellipse at 50% 0%,rgba(0,145,133,.1) 0%,transparent 60%),linear-gradient(180deg,#1f3437,#0c1518)}.viewer-spread{position:relative;display:flex;align-items:center;justify-content:center;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-touch-callout:none}.viewer-spread-img{max-width:100vw;max-height:calc(100vh - 72px);display:block;box-shadow:0 6px 24px #00000073,0 2px 6px #0000004d;border-radius:2px;-webkit-user-drag:none;pointer-events:none}.viewer-spread-answers{position:absolute;inset:0;width:100%;height:100%;background:transparent;pointer-events:none;-webkit-user-drag:none}.viewer-watermark{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2;mix-blend-mode:multiply}.viewer-hotspots{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:3}.viewer-debug-region{position:absolute;border:2px solid rgba(220,38,38,.85);background:#dc262614;pointer-events:none;z-index:4;box-sizing:border-box}.viewer-debug-region-label{position:absolute;top:-1.1rem;inset-inline-start:0;background:#dc2626d9;color:#fff;font-size:.6rem;padding:1px 5px;border-radius:3px;white-space:nowrap;font-family:Consolas,Courier New,monospace;font-weight:600}@media print{.viewer-spread-img,.viewer-spread-answers,.viewer-watermark,.viewer-hotspots{display:none!important}.viewer-spread:before{content:"Speakout — printing disabled · speakout.asas.plus";display:block;padding:2rem;font-size:1rem;color:#888;border:1px dashed #aaa}}.viewer-panel-toggle.on{background:var(--accent)}.viewer-panel-toggle:not(.on){background:#ffffff26}.viewer-spread-placeholder{background:var(--bg);color:var(--text);width:min(90vw,800px);min-height:50vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem;border:2px dashed var(--border);border-radius:.5rem;text-align:center}.viewer-spread-placeholder-id{font-size:1.5rem;font-weight:700;color:var(--accent)}.viewer-spread-placeholder-hint{color:var(--text-muted);font-size:.9rem;line-height:1.5}.viewer-spread-placeholder-hint code{display:inline-block;margin-top:.25rem;padding:.15rem .4rem;background:var(--surface);border:1px solid var(--border);border-radius:.2rem;font-size:.8rem;word-break:break-all}.viewer-bottombar{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.25rem .6rem;background:var(--bg-dark);border-top:1px solid rgba(255,255,255,.08);min-height:32px}.viewer-nav{padding:.2rem .6rem;font-size:1.05rem;line-height:1;color:#fff;background:#ffffff1a;border-radius:.25rem;min-width:36px;height:26px;display:flex;align-items:center;justify-content:center}.viewer-nav:disabled{opacity:.35;pointer-events:none}.viewer-pageinfo{color:#ffffffb3;font-size:.78rem;font-variant-numeric:tabular-nums;letter-spacing:.02em}.viewer-panel{position:absolute;top:0;right:0;width:min(320px,85vw);height:100%;background:var(--surface);color:var(--text);border-left:1px solid var(--border);transform:translate(100%);transition:transform .25s ease;display:flex;flex-direction:column;z-index:20;box-shadow:-4px 0 12px #0003}.viewer-panel.open{transform:translate(0)}.viewer-panel-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;background:var(--bg-dark);color:#fff;font-weight:600;min-height:44px}.viewer-panel-header button{color:#fff;font-size:1.5rem;line-height:1;padding:0 .5rem}.viewer-panel-body{padding:1rem;overflow-y:auto;flex:1}.viewer-panel-empty{color:var(--text-muted);text-align:center;margin:2rem 0;font-size:.9rem}:root{--bg: #fbf5ea;--bg-dark: #00393c;--accent: #009185;--text: #1a1a1a;--text-muted: #666;--surface: #ffffff;--border: #d9d2c3;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--text);background:var(--bg)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;padding:0}body{overflow:hidden;overscroll-behavior:none}button{font:inherit;cursor:pointer;border:none;background:none;color:inherit}a{color:inherit;text-decoration:none}img{-webkit-user-select:none;user-select:none;-webkit-user-drag:none}
