:root{--ink:#17324d;--muted:#65778a;--line:#d8e0e8;--panel:#fff;--page:#eef3f7;--blue:#35689a;--blue-dark:#244d75;--green:#19764a;--green-bg:#def3e7;--red:#a83232;--red-bg:#f9e2e2;--amber:#8b5b09;--amber-bg:#fff3d2;--shadow:0 10px 30px rgba(29,54,78,.1);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--page);font-size:16px}*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input,select{font:inherit}button,.button{cursor:pointer;border:0;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.primary,.secondary,.danger-button{min-height:42px;border-radius:9px;padding:.65rem 1rem;font-weight:700}.primary{background:var(--blue);color:#fff}.primary:hover{background:var(--blue-dark)}.secondary{background:#fff;color:var(--ink);border:1px solid var(--line)}.danger-button{background:var(--red);color:#fff}input,select{width:100%;min-height:42px;border:1px solid #bdc9d5;border-radius:8px;padding:.55rem .7rem;background:#fff;color:var(--ink)}label{display:grid;gap:.35rem;color:#314d67;font-size:.9rem;font-weight:650}small{font-weight:400;color:var(--muted)}h1,h2,h3,p{margin-top:0}h1{margin-bottom:.35rem;font-size:clamp(1.65rem,2.4vw,2.35rem)}h2{font-size:1.2rem}.eyebrow{text-transform:uppercase;letter-spacing:.09em;color:var(--blue);font-size:.74rem;font-weight:800;margin-bottom:.35rem}.topbar{height:64px;background:#132d46;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(1rem,3vw,2.5rem);box-shadow:0 2px 10px rgba(10,27,43,.18)}.brand{color:#fff;text-decoration:none;font-weight:850;font-size:1.1rem}.topbar nav{display:flex;gap:.4rem}.topbar nav a{color:#dce7f1;text-decoration:none;padding:.55rem .75rem;border-radius:7px;font-size:.9rem}.topbar nav a:hover,.topbar nav a.active{background:#284b6b;color:#fff}.auth-page,.auth-card{display:grid}.auth-card{width:min(440px,calc(100% - 2rem));margin:7vh auto;background:#fff;border:1px solid var(--line);border-radius:18px;padding:clamp(1.4rem,4vw,2.4rem);box-shadow:var(--shadow)}.auth-card>p{color:var(--muted);line-height:1.55}.install-card{width:min(720px,calc(100% - 2rem));margin:3vh auto}.stack{display:grid;gap:1rem}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.form-grid .wide{grid-column:1/-1}.form-grid hr{border:0;border-top:1px solid var(--line);width:100%}.align-end{align-self:end}.alert{padding:.8rem 1rem;border-radius:9px;margin:1rem 0}.alert.success{background:var(--green-bg);color:var(--green)}.alert.danger{background:var(--red-bg);color:var(--red)}.workspace{padding:1.4rem clamp(.8rem,2.5vw,2rem) 2rem;max-width:1550px;margin:auto}.workspace-header,.page-title{display:flex;align-items:end;justify-content:space-between;gap:1rem;margin-bottom:1rem}.class-picker{min-width:155px}.toolbar{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap;background:#fff;padding:.65rem;border:1px solid var(--line);border-radius:12px}.mode-group{display:flex;gap:.4rem;flex:1;flex-wrap:wrap}.mode{min-height:42px;border:1px solid var(--line);border-radius:8px;background:#f6f8fa;color:var(--ink);padding:.5rem .85rem;font-weight:750}.mode.active{box-shadow:inset 0 0 0 2px var(--blue);background:#e4effa}.mode.positive.active{background:var(--green-bg);color:var(--green);box-shadow:inset 0 0 0 2px #2e9362}.mode.negative.active{background:var(--red-bg);color:var(--red);box-shadow:inset 0 0 0 2px #c84b4b}.period-strip{display:flex;align-items:center;gap:1.2rem;justify-content:space-between;padding:.75rem .9rem;margin:.75rem 0;background:#e5edf4;border-radius:10px;color:#36536e}.period-strip div{display:flex;gap:.6rem;align-items:center}.period-strip span,#mode-help{font-size:.88rem}.milestone{background:var(--amber-bg);color:var(--amber);padding:.45rem .7rem;border-radius:7px}.placement-panel{background:#fff;border:1px solid var(--line);border-radius:10px;padding:.75rem 1rem;margin-bottom:.75rem;align-items:end;gap:1rem}.placement-panel:not([hidden]){display:flex}.placement-panel label{min-width:240px}.placement-panel span{color:var(--muted);font-size:.9rem;padding-bottom:.6rem}.room-shell{background:#dce6ee;border:1px solid #b8c7d4;border-radius:14px;padding:.8rem;box-shadow:var(--shadow)}.board{width:55%;margin:0 auto .65rem;background:#315676;color:#fff;border-radius:5px;padding:.42rem;text-align:center;font-weight:800;font-size:.8rem;letter-spacing:.12em}.room-canvas{position:relative;height:min(68vh,650px);min-height:470px;background-color:#f7fafc;background-image:linear-gradient(#dce6ee 1px,transparent 1px),linear-gradient(90deg,#dce6ee 1px,transparent 1px);background-size:28px 28px;border:1px solid #bdcbd7;border-radius:9px;overflow:hidden}.desk{position:absolute;min-width:125px;background:#8fa4b6;border:2px solid #6f879b;border-radius:8px;padding:1.35rem .28rem .28rem;touch-action:none;box-shadow:0 4px 9px rgba(25,51,75,.16)}.desk.dragging{z-index:20;opacity:.88;cursor:grabbing}.desk-label{position:absolute;top:.18rem;left:.45rem;font-size:.67rem;color:#203d57;font-weight:800}.desk-seats{display:flex;gap:.25rem}.seat{flex:1;min-width:0;min-height:73px;border-radius:6px;border:1px solid #cbd8e3;background:#fff;padding:.35rem .25rem;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.12rem;color:var(--ink);transition:transform .12s,background .12s}.seat:hover{transform:translateY(-1px)}.seat.empty{background:#edf2f6;color:#8896a3;border-style:dashed}.student-name{font-weight:800;max-width:100%;overflow:hidden;text-overflow:ellipsis}.score{font-size:1.05rem;color:var(--blue)}.progress{font-size:.72rem;color:var(--muted)}.empty-label{font-size:.75rem}.flash-positive{animation:positiveFlash .55s}.flash-negative{animation:negativeFlash .55s}@keyframes positiveFlash{40%{background:#bdebcf;transform:scale(1.04)}}@keyframes negativeFlash{40%{background:#f5bebe;transform:scale(1.04)}}.canvas-empty,.empty-state{position:absolute;inset:0;display:grid;place-content:center;text-align:center;color:var(--muted)}.empty-state{position:relative;background:#fff;border:1px solid var(--line);border-radius:14px;padding:4rem 1rem}.empty-state .button{margin:auto}.unplaced{margin-top:.75rem;background:#fff;border:1px solid var(--line);border-radius:9px;padding:.75rem;color:#536a80}.toast{position:fixed;right:1rem;bottom:1rem;background:#16334d;color:#fff;padding:.8rem 1rem;border-radius:9px;box-shadow:var(--shadow);opacity:0;transform:translateY(15px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:none}.toast.error{background:var(--red)}.page{padding:1.5rem}.narrow{max-width:960px;margin:auto}.panel{background:#fff;border:1px solid var(--line);border-radius:13px;padding:1.2rem;margin-bottom:1rem;box-shadow:0 4px 12px rgba(29,54,78,.05)}.panel>p{color:var(--muted)}.inline-form{display:flex;align-items:end;gap:.8rem;flex-wrap:wrap}.inline-form label{min-width:210px;flex:1}.roster{columns:3;column-gap:2rem;border-top:1px solid var(--line);margin-top:1rem;padding-top:.8rem}.roster h3{break-after:avoid;margin:.5rem 0 .2rem}.roster div{break-inside:avoid;padding:.18rem 0;color:#405a72}.warning-panel{border-color:#ead7a1}.report-actions{max-width:850px;margin:1rem auto;display:flex;justify-content:space-between;align-items:end;gap:1rem}.report-actions label{min-width:180px}.report-sheet{width:210mm;min-height:297mm;margin:0 auto 2rem;background:#fff;padding:18mm 20mm;box-shadow:var(--shadow)}.report-sheet h1{text-align:center;font-size:1.25rem;margin-bottom:.8rem}.report-meta{text-align:center;margin:.2rem}.report-table{width:100%;border-collapse:collapse;margin-top:1.5rem}.report-table th,.report-table td{border:1px solid #777;padding:.42rem .55rem;text-align:left}.report-table th:first-child,.report-table td:first-child{width:12%;text-align:center}.report-table th:last-child,.report-table td:last-child{width:18%;text-align:center;font-weight:700}@media(max-width:760px){.topbar{height:auto;padding:.65rem 1rem;align-items:flex-start}.topbar nav{flex-wrap:wrap;justify-content:flex-end}.workspace-header,.page-title{align-items:stretch;flex-direction:column}.toolbar{align-items:stretch}.mode-group{display:grid;grid-template-columns:1fr 1fr}.period-strip{align-items:flex-start;flex-direction:column;gap:.55rem}.placement-panel:not([hidden]){align-items:stretch;flex-direction:column}.room-canvas{height:590px}.desk{width:30%!important;min-width:105px}.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.roster{columns:2}.report-actions{margin:1rem;flex-wrap:wrap}.report-sheet{width:100%;min-height:auto;padding:1rem}.auth-card{margin:2vh auto}}@media print{body{background:#fff}.no-print{display:none!important}.report-sheet{box-shadow:none;margin:0;width:auto;min-height:auto;padding:8mm 10mm}.report-table th,.report-table td{padding:.3rem}.report-sheet h1{font-size:15pt}@page{size:A4 portrait;margin:10mm}}
