:root{font-family:'DM Sans',sans-serif;color:#ecf3ff;background:#0a1120;--ink:#ecf3ff;--muted:#94a5c0;--navy:#0a1120;--panel:#141f35;--panel2:#18253d;--line:#293750;--accent:#7d74ff;--blue:#479af7;--teal:#1cdbc0;--danger:#fa6975;--gold:#f9c970;--radius:19px}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(ellipse at 70% 0%,rgba(53,87,183,.18),transparent 39%),#0a1120}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.48;cursor:not-allowed}a{color:var(--teal)}[hidden]{display:none!important}.app-shell{max-width:1440px;margin:0 auto;min-height:100vh;padding:0 34px;display:flex;flex-direction:column}.topbar{height:88px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;color:#fff;text-decoration:none;font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:22px;letter-spacing:-.9px}.brand>span:last-child>span{color:#64dfe6}.brand small{display:block;font:700 9px/1.2 'DM Sans',sans-serif;letter-spacing:2.7px;color:#8298b7;margin-top:3px}.brand-mark{width:42px;height:42px;display:grid;place-items:center;border:1px solid #7189ef;background:linear-gradient(135deg,#6452d6,#0f91bb);border-radius:12px;font-weight:800;font-size:19px;box-shadow:0 10px 30px #252b7a66}.brand-mark span{color:#96f4ff}.top-actions{display:flex;align-items:center;gap:24px}.connection-badge{font-size:12px;color:#bcd8e0;border:1px solid #2c5b64;background:#133037;padding:9px 13px;border-radius:100px;font-weight:700}.connection-badge.offline{color:#b7bce2;border-color:#384165;background:#1b2546}.status-dot{display:inline-block;width:7px;height:7px;background:#28e4a5;border-radius:50%;margin-right:7px}.offline .status-dot{background:#8188b8}.top-label,.eyebrow,.section-tag{font-size:10px;letter-spacing:2px;font-weight:800;color:#889efa}.view{margin-top:30px}.hero{min-height:298px;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,1fr);align-items:center;padding:15px 30px 35px;position:relative;overflow:hidden}.hero h1,.result-hero h1{font-family:'Space Grotesk',sans-serif;font-size:clamp(35px,4.6vw,59px);line-height:1.07;letter-spacing:-2.6px;margin:16px 0}.hero h1 em{font-style:normal;color:#78a7ff}.hero-sub{color:var(--muted);max-width:610px;font-size:14px;line-height:1.8}.hero-pills{display:flex;gap:10px;flex-wrap:wrap;margin-top:23px}.hero-pills span{font-size:11px;border:1px solid #31405b;background:#172138;border-radius:99px;padding:8px 12px;color:#b6cbe6}.hero-graphic{height:260px;position:relative;display:grid;place-items:center}.orbit{position:absolute;border:1px solid #3c528177;border-radius:50%;transform:rotate(-30deg)}.orbit-a{width:300px;height:190px}.orbit-b{width:260px;height:220px;transform:rotate(45deg)}.orb-core{width:150px;height:150px;border-radius:30px;background:radial-gradient(circle at 30% 20%,#7e80ff,#2b5284);box-shadow:0 30px 80px #395bdf45,inset 0 0 40px #a4a5ff55;display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:'Space Grotesk',sans-serif;font-size:64px;font-weight:700;letter-spacing:-4px}.orb-core span{font-size:11px;letter-spacing:3px}.orb-label{position:absolute;border:1px solid #44557b;background:#182640;padding:9px 14px;border-radius:10px;font:800 11px 'Space Grotesk',sans-serif;box-shadow:0 6px 18px #0005}.orb-a{top:30px;left:0}.orb-b{right:0;bottom:30px;color:#4ce4c8}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(310px,.8fr);gap:20px}.panel{border:1px solid var(--line);background:linear-gradient(153deg,#17243b,#111b2e);padding:26px;border-radius:var(--radius);box-shadow:0 14px 35px #04091427}.panel-heading{display:flex;justify-content:space-between;gap:15px;align-items:start;margin-bottom:20px}.panel h2,.setup-box h2{font:700 23px 'Space Grotesk',sans-serif;letter-spacing:-.5px;margin:10px 0 6px}.panel p{font-size:13px;line-height:1.7;color:var(--muted);margin:5px 0 14px}.panel-icon{font:700 28px 'Space Grotesk';color:#7983de}.panel code{color:#e5d4ac}textarea,input,select{width:100%;background:#0c1629;border:1px solid #33415b;border-radius:12px;color:#eff7ff;outline:none}textarea:focus,input:focus,select:focus{border-color:#817cf8;box-shadow:0 0 0 3px #817cf82a}textarea{min-height:224px;padding:16px;resize:vertical;line-height:1.65;font:12px/1.7 ui-monospace,SFMono-Regular,Consolas,monospace}input,select{min-height:44px;padding:10px 12px}.side-panel>label{display:block;font-size:12px;font-weight:700;color:#bfd0e5;margin:16px 0 7px}.side-panel p{margin-bottom:23px}.toggles{margin:19px 0}.toggle-line{display:flex;gap:9px;align-items:center;color:#acbdd6;font-size:12px;margin-bottom:13px}.toggle-line input{width:15px;min-height:auto;height:15px;accent-color:#706bfe}.button-row{display:flex;align-items:center;flex-wrap:wrap;gap:9px;margin-top:16px}.btn{border:1px solid transparent;border-radius:10px;padding:12px 15px;font-weight:800;font-size:12px;color:#fff;transition:transform .14s,background .14s;white-space:normal;text-align:center}.btn:hover:not(:disabled){transform:translateY(-1px);filter:brightness(1.08)}.btn-primary{background:linear-gradient(110deg,#6262ee,#3b91d6);box-shadow:0 5px 20px #4c64df38}.btn-teal{background:#12bea9;color:#061b22}.btn-secondary{background:#243451;border-color:#3d5272}.btn-outline{background:transparent;border-color:#526384}.btn-ghost{background:#1b2a43;color:#c4d6ee;border-color:#2a3852}.btn-danger{background:#de4e62}.btn-purple{background:#5a48a9}.full{width:100%;margin-top:10px}.or-divider{display:flex;align-items:center;gap:10px;margin-top:22px;color:#7c90a7;font-size:10px;font-weight:800;letter-spacing:1.5px}.or-divider:before,.or-divider:after{content:"";height:1px;background:#344358;flex:1}.inline-status{padding:12px;border-radius:10px;margin-top:14px;background:#243652;border:1px solid #3a4a6c;font-size:12px}.inline-status.error{background:#3a202e;border-color:#9a3e58;color:#ffd8dd}.pack-summary{margin-top:14px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;color:#cfe3f8;font-size:12px}.pack-summary span{background:#203958;border-radius:8px;padding:9px 12px}.setup-box{border:1px solid var(--line);background:#111d30;margin-top:20px;border-radius:15px}.setup-box summary{padding:18px 22px;cursor:pointer;font-weight:700;font-size:13px}.setup-content{padding:2px 23px 22px;font-size:13px;line-height:1.8;color:#b9cde6}.setup-content li{margin-bottom:7px}.fine-print,.muted{color:var(--muted);font-size:12px}.preview-panel{margin-top:20px}.preview-questions{max-height:340px;overflow:auto;display:grid;gap:12px}.preview-item{border:1px solid #31415c;background:#101d31;border-radius:13px;padding:14px;color:#e8f0ff;font-size:13px}.preview-item .mini{color:#90a3c7;font-size:11px;margin-bottom:9px}.preview-item p{color:#e8f0ff;white-space:pre-wrap}.preview-item .option-lines{color:#acbfd9;white-space:pre-wrap}.footer{display:flex;justify-content:space-between;gap:10px;border-top:1px solid #25334a;color:#6f829d;margin-top:auto;padding:25px 2px;font-size:11px}.room-head{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:20px}.room-head h1{font:700 32px 'Space Grotesk',sans-serif;letter-spacing:-1px;margin:8px 0}.room-meta,.room-buttons{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.code-tag{background:#304061;border:1px dashed #6e87b5;border-radius:8px;padding:6px 10px;color:#adf6df;font:700 12px ui-monospace,monospace}.small-badge{background:#243c60;border:1px solid #3b5274;border-radius:20px;padding:6px 11px;font-size:11px;font-weight:800}.room-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:20px}.pulse-indicator{color:#44eab3;font-size:10px;font-weight:800;letter-spacing:1.5px}.member-list{display:grid;gap:10px;margin:20px 0}.member-item{display:flex;gap:13px;align-items:center;padding:13px;border-radius:12px;background:#101b2f;border:1px solid #2f3d55}.avatar{height:37px;width:37px;display:grid;place-items:center;border-radius:11px;background:#384785;color:#e4f3ff;font-weight:800}.member-item strong{font-size:13px}.member-item small{display:block;margin-top:3px;color:#8ea4c1;font-size:11px}.room-callout{background:#122b34;border:1px solid #31545b;border-radius:12px;color:#a8d6d6;padding:14px;font-size:12px}.chat-panel{display:flex;flex-direction:column;min-height:460px}.chat-title{display:flex;justify-content:space-between;align-items:center;font-weight:800;padding-bottom:14px;border-bottom:1px solid #2d3953}.chat-title small{color:#8aa0b9;font-size:10px}.chat-messages{flex:1;overflow-y:auto;max-height:440px;min-height:230px;padding:15px 0;display:flex;flex-direction:column;gap:11px}.chat-message{background:#1b2b45;border:1px solid #32435f;padding:10px 12px;border-radius:12px;max-width:94%;align-self:flex-start;overflow-wrap:anywhere}.chat-message.me{background:#24405c;border-color:#276e81;align-self:flex-end}.chat-message strong{color:#8ce5da;font-size:10px;display:block;margin-bottom:4px}.chat-message span{font-size:12px;color:#edf4ff;white-space:pre-wrap}.chat-form{display:flex;gap:8px}.chat-form input{min-width:0}.exam-view{color:#20314d}.exam-header{display:flex;justify-content:space-between;align-items:center;gap:18px;background:#eaf2fd;padding:18px 23px;border-radius:14px 14px 0 0;border:1px solid #c9d7ed}.exam-header h2{font:700 22px 'Space Grotesk';margin:5px 0}.exam-header .section-tag{color:#586ab2}.timer-wrap{display:grid;gap:3px;justify-items:center}.timer-wrap span{color:#61718d;font-size:10px;font-weight:800;letter-spacing:1.5px}.timer-wrap strong{font:700 24px 'Space Grotesk';color:#173568;font-variant-numeric:tabular-nums}.timer-wrap.low strong{color:#c92842}.exam-layout{display:grid;grid-template-columns:minmax(0,1fr) 296px;gap:0;min-height:640px;background:#f7faff;border-radius:0 0 14px 14px;overflow:hidden}.exam-main{padding:23px;border:1px solid #d4dfee;border-top:0}.exam-aside{padding:22px 18px;border:1px solid #d4dfee;border-left:0;border-top:0;background:#eff4fb}.subject-tabs{display:flex;gap:8px;flex-wrap:wrap;padding-bottom:16px;border-bottom:1px solid #d7e0ee}.subject-tab{border:1px solid #bfcce1;background:#fff;color:#4e6584;padding:9px 14px;border-radius:8px;font-size:12px;font-weight:800}.subject-tab.selected{color:#fff;background:#3b79db;border-color:#3b79db}.question-heading{display:flex;justify-content:space-between;align-items:center;margin:22px 0;color:#344966;font-size:14px;font-weight:800}.question-heading .small-badge{background:#e9f1fd;color:#476a98;border-color:#bcd3ef}.question-card{min-height:325px}.question-body{font-size:16px;font-weight:600;line-height:1.85;white-space:pre-wrap;overflow-wrap:anywhere}.question-body img{max-width:100%;max-height:500px;display:block;margin:14px 0;border:1px solid #d5dfee;border-radius:9px}.question-options{display:grid;gap:10px;margin:22px 0}.option-btn{display:flex;align-items:center;gap:13px;text-align:left;border:1px solid #d0dbe9;background:#fff;border-radius:10px;padding:13px;color:#293f5c;font-size:14px;line-height:1.7;white-space:pre-wrap;overflow-wrap:anywhere}.option-btn .option-letter{border:1px solid #bed1e4;width:29px;height:29px;border-radius:7px;display:grid;place-items:center;font-size:12px;flex:none;font-weight:800}.option-btn.selected{border-color:#268bb4;background:#e6f8f8}.option-btn.selected .option-letter{background:#087ba9;border-color:#087ba9;color:#fff}.numeric-input{max-width:330px;margin:12px 0;font-size:16px;color:#20314d;background:#fff}.numeric-label{font-size:12px;color:#637795}.exam-actions{border-top:1px solid #d3deeb;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;padding-top:19px;margin-top:20px}.exam-actions-right{display:flex;gap:9px;flex-wrap:wrap}.palette-card{background:#fff;border:1px solid #d1daeb;border-radius:12px;padding:15px}.palette-card h3{margin:2px 0 14px;font:700 16px 'Space Grotesk'}.palette-legend{display:grid;grid-template-columns:1fr 1fr;gap:10px 6px;margin-bottom:20px}.palette-legend span{font-size:10px;color:#61718a;display:flex;align-items:center;gap:7px}.legend-dot{height:11px;width:11px;border-radius:3px;display:inline-block;flex:none}.legend-dot.answer,.palette-q.answer{background:#32a47b;color:#fff}.legend-dot.notanswer,.palette-q.notanswer{background:#de6a6f;color:#fff}.legend-dot.review,.palette-q.review{background:#7e63bd;color:#fff}.legend-dot.both,.palette-q.both{background:linear-gradient(135deg,#32a47b 50%,#7e63bd 50%);color:#fff}.legend-dot.unseen,.palette-q.unseen{background:#e7eaf1;color:#52617a}.palette-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.palette-q{height:39px;border:0;border-radius:8px;font-weight:800;font-size:12px}.palette-q.current{outline:3px solid #2f74e5;outline-offset:2px}.centered{text-align:center}.mini-chat{margin-top:15px;padding:13px;background:#fff;color:#273b55}.mini-chat h3{margin:0;font-size:15px}.mini-chat .chat-messages{min-height:140px;max-height:190px}.mini-chat .chat-message{background:#eaf2fd;border-color:#d4deec}.mini-chat .chat-message.me{background:#def3f1}.mini-chat .chat-message span{color:#1b3150}.mini-chat .chat-form input{color:#23354f;background:#fff}.result-hero{display:flex;align-items:center;justify-content:space-between}.result-hero h1{font-size:37px;letter-spacing:-1px;margin:10px 0}.wait-box{text-align:center;margin-top:20px;padding:55px}.waiting-icon{color:#6fb9ff;font-size:55px}.stat-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin:20px 0}.stat-card{border:1px solid #31415f;border-radius:13px;background:#1a2941;padding:18px}.stat-card strong{font:700 29px 'Space Grotesk';display:block;margin-bottom:5px}.stat-card small{color:#a0b4d1;font-size:11px}.results-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:20px}.leader-row{display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:9px;align-items:center;padding:13px 5px;border-bottom:1px solid #2e3b53}.leader-row .rank{font-weight:800;color:#f0d086}.leader-row strong{font-size:13px}.leader-row small{display:block;color:#95a9c5;font-size:11px}.leader-row .points{font-family:'Space Grotesk';font-size:17px;color:#8ae7c5;font-weight:700}.compact-label{font-size:11px;color:#a1b6cf}.compact-label select{margin-top:6px}.subject-breakdown{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:15px}.subject-stat{background:#20314b;border-radius:10px;padding:12px;font-size:12px}.subject-stat b{display:block;margin-top:6px;color:#8ee2d7}.report-questions{max-height:620px;overflow-y:auto;display:grid;gap:10px}.report-item{padding:13px;border-radius:10px;border:1px solid #36435d;background:#15253a;font-size:12px}.report-item .mini{color:#a4b1d3}.report-item p{white-space:pre-wrap;color:#e6efff}.report-item .correct{color:#72e0b8}.report-item .wrong{color:#ff9c9c}.toast{position:fixed;bottom:24px;right:22px;z-index:50;background:#18364b;color:#eaf7fb;border:1px solid #417184;border-radius:10px;max-width:min(460px,90vw);padding:13px 17px;font-size:12px;box-shadow:0 16px 40px #0008;opacity:0;transform:translateY(16px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:translateY(0)}.toast.error{background:#512532;border-color:#a84a63}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}@media(max-width:980px){.hero-graphic{display:none}.hero{grid-template-columns:1fr;min-height:250px}.dashboard-grid,.room-grid,.results-grid{grid-template-columns:1fr}.exam-layout{grid-template-columns:minmax(0,1fr) 242px}.stat-cards{grid-template-columns:repeat(2,1fr)}}@media(max-width:650px){.app-shell{padding:0 13px}.topbar{height:72px}.top-label{display:none}.brand{font-size:18px}.brand-mark{width:36px;height:36px}.hero{padding:18px 4px;min-height:280px}.hero h1{font-size:37px;letter-spacing:-1.6px}.hero-pills{gap:6px}.hero-pills span{font-size:10px}.panel{padding:17px}.dashboard-grid{grid-template-columns:minmax(0,1fr)}.room-head,.exam-header,.result-hero{flex-wrap:wrap}.exam-layout{display:flex;flex-direction:column}.exam-aside{border-left:1px solid #d4dfee}.exam-main{padding:14px}.exam-header{padding:13px}.exam-header h2{font-size:17px}.timer-wrap strong{font-size:21px}.stat-cards{gap:8px}.stat-card{padding:13px}.stat-card strong{font-size:23px}.subject-breakdown{grid-template-columns:1fr}.footer{flex-direction:column}.button-row .btn{flex-grow:1}.question-body{font-size:14px}}

.palette-section{color:#1d4c82;font-size:12px;font-weight:800;margin:0 0 12px;padding:8px 10px;background:#eaf2fd;border-radius:8px;overflow-wrap:anywhere}
.student-link{font-size:12px;font-weight:800;color:#9ff0e0;text-decoration:none;border:1px solid #3d6d7c;border-radius:10px;padding:10px 13px;background:#102d38}
.student-link:hover{text-decoration:underline}
@media(max-width:650px){.top-actions{gap:8px}.student-link{padding:8px;font-size:10px}}

/* Explicit identity gate */
.auth-gate{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:18px;background:rgba(4,10,25,.94);overflow:auto}.auth-gate[hidden]{display:none!important}.auth-panel{background:linear-gradient(145deg,#1b2b46,#101a2f);border:1px solid #435b80;box-shadow:0 25px 90px #0009;border-radius:22px;padding:clamp(22px,5vw,43px);max-width:540px;width:100%;color:#eef6ff}.auth-panel h1{font:700 clamp(25px,5vw,36px) 'Space Grotesk',sans-serif;line-height:1.2;margin:15px 0}.auth-panel p{color:#b0c5df;line-height:1.7;font-size:14px}.auth-choices{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:22px 0}.auth-choices button{min-height:55px;font-size:14px}.auth-panel .auth-status{font-size:12px;color:#91e9d4;min-height:24px}.auth-panel .auth-status.error{color:#ffa2ae}.auth-panel .auth-fine{font-size:11px;color:#91a6bf}.account-label{font-size:12px;color:#a2efdc;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-switch{padding:8px 10px}.auth-locked .app-shell{visibility:hidden}@media(max-width:700px){.auth-choices{grid-template-columns:1fr}.topbar{height:auto;min-height:75px;padding:12px 0}.top-actions{flex-wrap:wrap;justify-content:flex-end}.account-label{max-width:90px}}

@media(max-width:700px){#upgradeAccountBtn{font-size:10px;padding:7px 9px}}

.leader-row.leader-selectable{cursor:pointer;border-radius:9px;padding-left:9px;padding-right:9px}.leader-row.leader-selectable:hover,.leader-row.leader-selectable:focus-visible{background:#213956;outline:2px solid #4cbfdf;outline-offset:1px}

/* PDF math editing / diagram cropper */
.pdf-enhancement-section{margin-top:18px;padding:16px;border:1px solid rgba(150,160,190,.3);border-radius:12px}
.pdf-enhancement-section h3{margin:0 0 8px}
.pdf-enhancement-section label{font-size:.9rem;display:block}
.pdf-enhancement-section input,.pdf-enhancement-section select{padding:9px;max-width:100%;margin:5px 0}
.pdf-enhancement-section #pdfMathText{width:100%;box-sizing:border-box}
.pdf-editor-controls{display:flex;align-items:end;gap:12px;flex-wrap:wrap;margin:10px 0}
.pdf-math-preview{padding:12px;margin:12px 0;border:1px dashed rgba(150,160,190,.35);border-radius:8px;overflow-x:auto}
.pdf-crop-stage{position:relative;width:max-content;max-width:100%;margin:12px auto;border:2px solid rgba(70,150,220,.5);touch-action:none;user-select:none}
.pdf-crop-stage canvas{display:block;max-width:100%;height:auto;cursor:crosshair;touch-action:none}
.pdf-crop-rect{position:absolute;pointer-events:none;border:2px solid #00aaff;background:rgba(0,170,255,.16)}
