[hidden]{display:none!important}html{-webkit-text-size-adjust:100%;color-scheme:light}body{margin:0}img{max-width:100%}:root{padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}:root{--paper:#FBF7F9;--sheet:#FFFFFF;--sheet-2:#F6EEF2;--line:#EBDDE5;--line-strong:#D8C2CF;--ink:#211A2B;--ink-2:#5B5166;--ink-3:#8C8296;--magenta:#A81E63;--magenta-ink:#FFFFFF;--magenta-soft:#F6E1EC;--present:#1B7550;--present-soft:#DFF1E7;--absent:#BF3526;--absent-soft:#FBE5E0;--hi:#F3E26A;--hi-ink:#2A2410;--shadow:0 1px 2px rgba(60,20,45,.06),0 8px 24px -12px rgba(60,20,45,.18);--display:"Gloock",Georgia,"Times New Roman",serif;--body:"Figtree",system-ui,-apple-system,"Segoe UI",sans-serif;--mono:"JetBrains Mono",ui-monospace,Consolas,monospace}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--paper:#15111A;--sheet:#1E1925;--sheet-2:#261F2E;--line:#342B3D;--line-strong:#4A3F55;--ink:#EFE9F3;--ink-2:#B9AEC4;--ink-3:#877C93;--magenta:#E86FAB;--magenta-ink:#240A17;--magenta-soft:#3A1E2F;--present:#56C492;--present-soft:#16302A;--absent:#F2806E;--absent-soft:#3A1D1C;--hi:#D9C54A;--hi-ink:#1E1905;--shadow:0 1px 2px rgba(0,0,0,.3),0 10px 28px -14px rgba(0,0,0,.6)}}:root[data-theme=dark]{color-scheme:dark;--paper:#15111A;--sheet:#1E1925;--sheet-2:#261F2E;--line:#342B3D;--line-strong:#4A3F55;--ink:#EFE9F3;--ink-2:#B9AEC4;--ink-3:#877C93;--magenta:#E86FAB;--magenta-ink:#240A17;--magenta-soft:#3A1E2F;--present:#56C492;--present-soft:#16302A;--absent:#F2806E;--absent-soft:#3A1D1C;--hi:#D9C54A;--hi-ink:#1E1905;--shadow:0 1px 2px rgba(0,0,0,.3),0 10px 28px -14px rgba(0,0,0,.6)}*{box-sizing:border-box}html,body{background:var(--paper)}body{font-family:var(--body);color:var(--ink);font-size:15px;line-height:1.5;padding-inline:16px;padding-block:0 96px}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--magenta);outline-offset:2px}.num{font-family:var(--mono);font-variant-numeric:tabular-nums}.app{max-width:1360px;margin:0 auto}.top{display:flex;flex-wrap:wrap;align-items:center;gap:12px 24px;padding-block:18px 14px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;margin-right:auto}.logo{width:40px;height:40px;border-radius:10px;background:var(--magenta);color:var(--magenta-ink);display:grid;place-items:center;font-family:var(--display);font-size:26px;line-height:1}.brand h1{font-family:var(--display);font-weight:400;font-size:28px;line-height:1;margin:0;letter-spacing:.2px}.brand small{display:block;color:var(--ink-3);font-size:12px;letter-spacing:.08em;text-transform:uppercase;margin-top:4px}.tabs{display:flex;gap:4px;background:var(--sheet-2);padding:4px;border-radius:12px}.tabs button{border:0;background:transparent;padding:8px 16px;border-radius:9px;font-weight:600;color:var(--ink-2)}.tabs button[aria-selected=true]{background:var(--sheet);color:var(--ink);box-shadow:var(--shadow)}.group-sel{display:flex;align-items:center;gap:8px;color:var(--ink-3);font-size:13px}select,input[type=text],input[type=password],input[type=email],input[type=number],input[type=date],textarea{background:var(--sheet);border:1px solid var(--line-strong);border-radius:8px;padding:7px 10px;min-width:0}input::placeholder,textarea::placeholder{color:var(--ink-3)}.banner{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin-top:14px;padding:10px 14px;border-radius:10px;background:var(--hi);color:var(--hi-ink);font-size:14px}.banner b{font-weight:700}.banner .spacer{margin-left:auto;display:flex;gap:8px}.banner button{border:1px solid rgba(0,0,0,.25);background:transparent;color:inherit;border-radius:8px;padding:4px 10px;font-weight:600}.layout{display:grid;grid-template-columns:minmax(0,1fr);gap:24px;margin-top:20px}@media(min-width:1100px){.layout{grid-template-columns:minmax(0,1fr) 380px}}.panel{background:var(--sheet);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}.eyebrow{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);font-weight:600}h2.title{font-family:var(--display);font-weight:400;font-size:30px;line-height:1.1;margin:2px 0 0;text-wrap:balance}.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line-strong);background:var(--sheet);border-radius:9px;padding:7px 12px;font-weight:600;font-size:14px}.btn:hover{border-color:var(--ink-3)}.btn.primary{background:var(--magenta);border-color:var(--magenta);color:var(--magenta-ink)}.btn.danger{color:var(--absent);border-color:var(--absent)}.btn.ghost{border-color:transparent;background:transparent;color:var(--ink-2)}.btn[disabled]{opacity:.5;cursor:default}.muted{color:var(--ink-3)}.empty{padding:32px 20px;text-align:center;color:var(--ink-3)}.band{display:inline-block;min-width:40px;text-align:center;padding:2px 7px;border-radius:6px;font-family:var(--mono);font-weight:700;font-size:13px;font-variant-numeric:tabular-nums;background:var(--sheet-2);color:var(--ink-3)}.band.b-hi{background:var(--present-soft);color:var(--present)}.band.b-mid{background:var(--magenta-soft);color:var(--magenta)}.band.b-lo{background:var(--absent-soft);color:var(--absent)}.pill{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;padding:2px 8px;border-radius:99px;background:var(--sheet-2);color:var(--ink-2)}.pill.warn{background:var(--absent-soft);color:var(--absent)}.pill.ok{background:var(--present-soft);color:var(--present)}.initials{flex:none;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--magenta-soft);color:var(--magenta);font-weight:700;font-size:13px;letter-spacing:.03em}.view-head{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px 20px;margin-bottom:16px}.view-head .actions{margin-left:auto;display:flex;flex-wrap:wrap;gap:8px}.datenav{display:flex;align-items:center;gap:6px}.datenav .btn{padding:7px 10px}.tally{display:flex;flex-wrap:wrap;gap:8px 20px;align-items:center;padding:14px 18px;border-bottom:1px solid var(--line)}.tally .t{display:flex;align-items:baseline;gap:6px;font-size:14px;color:var(--ink-2)}.tally .t b{font-family:var(--mono);font-size:20px;color:var(--ink)}.tally .t.p b{color:var(--present)}.tally .t.a b{color:var(--absent)}.meter{flex:1 1 160px;display:flex;height:8px;border-radius:99px;overflow:hidden;background:var(--sheet-2);min-width:120px}.meter i{display:block;height:100%}.meter .mp{background:var(--present)}.meter .ma{background:var(--absent)}.roll{list-style:none;margin:0;padding:0}.reg-group{margin-bottom:18px}.row.dirty{box-shadow:inset 3px 0 0 var(--magenta)}.pill.unsaved{background:var(--magenta-soft);color:var(--magenta)}.savebar{position:fixed;left:50%;transform:translate(-50%);bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:18;width:min(640px,calc(100% - 32px));display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;justify-content:space-between;padding:10px 12px 10px 16px;border-radius:14px;background:var(--sheet);border:1.5px solid var(--magenta);box-shadow:var(--shadow);font-size:14px}.savebar .sb-actions{display:flex;gap:8px;margin-left:auto}body.has-savebar{padding-bottom:170px}body.has-savebar .toast{bottom:calc(150px + env(safe-area-inset-bottom,0px))}@media(min-width:1100px){.savebar{left:calc(50% - 202px)}}@media(max-width:1099px){.savebar{bottom:calc(76px + env(safe-area-inset-bottom,0px))}}.reg-head{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;padding:14px 18px 4px}.reg-head h3{margin:0;font-family:var(--display);font-weight:400;font-size:22px}.reg-head small{color:var(--ink-3);font-size:13px}.reg-head .btn{margin-left:auto}.reg-note{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin:0 0 14px;color:var(--ink-2);font-size:14px}.row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 16px;align-items:center;padding:14px 18px;border-bottom:1px solid var(--line);background:var(--sheet)}.row:last-child{border-bottom:0;border-radius:0 0 14px 14px}.row.is-a{background:linear-gradient(90deg,var(--absent-soft),var(--sheet) 55%)}.who{display:flex;align-items:center;gap:12px;min-width:0}.who b{display:block;font-weight:600;overflow-wrap:anywhere}.who small{display:flex;flex-wrap:wrap;gap:6px;align-items:center;color:var(--ink-3);font-size:13px}.marks{display:flex;gap:8px}.mk{width:52px;height:46px;border-radius:10px;border:1.5px dashed var(--line-strong);background:transparent;display:grid;place-items:center;padding:0}.mk svg{width:30px;height:30px;fill:none;stroke-width:3.2;stroke-linecap:round;stroke-linejoin:round;stroke:var(--line-strong)}.mk:hover svg{stroke:var(--ink-3)}.mk.tick[aria-pressed=true]{border:1.5px solid var(--present);background:var(--present-soft)}.mk.tick[aria-pressed=true] svg{stroke:var(--present)}.mk.cross[aria-pressed=true]{border:1.5px solid var(--absent);background:var(--absent-soft)}.mk.cross[aria-pressed=true] svg{stroke:var(--absent)}.mk[aria-pressed=true] path{stroke-dasharray:60;stroke-dashoffset:0;animation:draw .35s ease-out}@keyframes draw{0%{stroke-dashoffset:60}to{stroke-dashoffset:0}}.reason{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding-left:50px}.reason input{flex:1 1 220px;border-color:var(--absent);background:var(--sheet)}.chip{border:1px solid var(--line-strong);background:var(--sheet);border-radius:99px;padding:3px 10px;font-size:13px;color:var(--ink-2)}.chip:hover{border-color:var(--absent);color:var(--absent)}@media(max-width:520px){.reason{padding-left:0}.mk{width:46px;height:42px}}.tests{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.test-chip{border:1px solid var(--line-strong);background:var(--sheet);border-radius:10px;padding:6px 12px;text-align:left;line-height:1.25}.test-chip small{display:block;color:var(--ink-3);font-size:12px}.test-chip[aria-pressed=true]{border-color:var(--magenta);background:var(--magenta-soft);color:var(--magenta)}.test-chip[aria-pressed=true] small{color:var(--magenta)}.newtest{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;padding:14px 18px;margin-bottom:14px}.newtest label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--ink-3);font-weight:600;flex:1 1 140px}.newtest label.wide{flex:2 1 220px}.testbar{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;padding:12px 18px;border-bottom:1px solid var(--line)}.testbar h3{margin:0;font-family:var(--display);font-weight:400;font-size:22px}.testbar .right{margin-left:auto;display:flex;flex-wrap:wrap;gap:8px;align-items:center}.scroll{overflow-x:auto}table.grid{border-collapse:collapse;width:100%;min-width:940px}.grid th,.grid td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}.grid thead th{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);font-weight:600;background:var(--sheet-2)}.grid thead th small{display:block;text-transform:none;letter-spacing:0;font-weight:500}.grid tbody tr:last-child td{border-bottom:0}.grid td.name{font-weight:600;min-width:160px}.grid td.name small{display:block;font-weight:400;color:var(--ink-3);font-size:12px}.cell{display:flex;align-items:center;gap:8px}.cell input{width:62px;font-family:var(--mono);font-size:14px;padding:6px 8px}.cell input.wide{width:104px}.cell input.xwide{width:132px}td.ov .band{font-size:15px;padding:4px 9px}tr.absent-day td.name:after{content:"absent that day";display:inline-block;margin-top:4px;font-size:11px;font-weight:600;color:var(--absent);background:var(--absent-soft);border-radius:99px;padding:1px 7px}.seg{display:inline-flex;flex-wrap:wrap;gap:4px;background:var(--sheet-2);padding:4px;border-radius:12px;margin-bottom:14px}.seg button{border:0;background:transparent;padding:7px 14px;border-radius:9px;font-weight:600;color:var(--ink-2)}.seg button[aria-pressed=true]{background:var(--sheet);color:var(--ink);box-shadow:var(--shadow)}.seg .count{font-family:var(--mono);font-size:12px;color:var(--ink-3);margin-left:4px}table.grid.narrow{min-width:560px}.card header .grp{padding:2px 6px;font-size:13px;margin-top:2px;max-width:100%}.rename{display:grid;gap:8px;width:100%}.rename label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:var(--ink-3)}.rename label small{font-weight:400}.rename-actions{display:flex;gap:8px;justify-content:flex-end}.kind-tag{display:inline-block;font-size:11px;font-weight:600;color:var(--magenta);text-transform:uppercase;letter-spacing:.05em}.legend{padding:12px 18px;font-size:13px;color:var(--ink-3);border-top:1px solid var(--line)}.addform{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;padding:14px 18px;margin-bottom:16px}.addform label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--ink-3);font-weight:600;flex:1 1 150px}.addform label.wide{flex:2 1 220px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:16px}.card{display:flex;flex-direction:column;gap:14px;padding:16px 18px}.card header{display:flex;gap:12px;align-items:center}.card h3{margin:0;font-size:17px;font-weight:700;overflow-wrap:anywhere}.card header small{color:var(--ink-3);font-size:13px}.card header .tgt{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end;gap:2px;font-size:11px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.card header .tgt select{padding:3px 6px;font-family:var(--mono);font-size:13px}.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.kpi{background:var(--sheet-2);border-radius:10px;padding:8px 10px}.kpi span{display:block;font-size:11px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.kpi b{font-family:var(--mono);font-size:19px}.kpi small{color:var(--ink-3);font-size:12px}.spark{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--ink-3)}.spark svg{flex:1;height:44px;min-width:0}.skills{display:grid;gap:6px}.sk{display:grid;grid-template-columns:78px 1fr 36px;gap:8px;align-items:center;font-size:13px;color:var(--ink-2)}.sk .bar{height:7px;border-radius:99px;background:var(--sheet-2);position:relative;overflow:hidden}.sk .bar i{position:absolute;inset:0 auto 0 0;background:var(--magenta);border-radius:99px}.sk .bar u{position:absolute;top:-2px;bottom:-2px;width:2px;background:var(--ink);opacity:.55}.sk b{font-family:var(--mono);font-size:13px;text-align:right}details.more summary{cursor:pointer;font-weight:600;font-size:14px;color:var(--magenta)}details.more .inner{display:grid;gap:10px;margin-top:10px;font-size:13px}details.more table{width:100%;border-collapse:collapse}details.more td,details.more th{padding:5px 4px;border-bottom:1px solid var(--line);text-align:left}details.more th{font-size:11px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em}.card footer{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;align-items:center;margin-top:auto}.assistant{display:flex;flex-direction:column;min-height:0;overflow:hidden}@media(min-width:1100px){.assistant{position:sticky;top:calc(env(safe-area-inset-top,0px) + 16px);height:calc(100vh - 140px);max-height:820px}}.as-head{padding:16px 18px 12px;border-bottom:1px solid var(--line);display:flex;flex-wrap:wrap;gap:8px;align-items:flex-start}.as-head h2{margin:0;font-family:var(--display);font-weight:400;font-size:24px}.as-head p{margin:2px 0 0;font-size:13px;color:var(--ink-3)}.as-head .ctl{margin-left:auto;display:flex;gap:6px;align-items:center}.speak{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-2)}.as-log{flex:1;overflow-y:auto;padding:14px 18px;display:flex;flex-direction:column;gap:10px;min-height:160px}.msg{max-width:92%;padding:9px 12px;border-radius:12px;font-size:14px;white-space:pre-wrap;overflow-wrap:anywhere}.msg.u{align-self:flex-end;background:var(--magenta);color:var(--magenta-ink);border-bottom-right-radius:4px}.msg.a{align-self:flex-start;background:var(--sheet-2);border-bottom-left-radius:4px}.msg.a.thinking{color:var(--ink-3);font-style:italic}.rcpt{align-self:flex-start;display:flex;gap:8px;align-items:flex-start;font-size:13px;color:var(--ink-2);padding:6px 10px;border:1px dashed var(--line-strong);border-radius:10px;max-width:92%}.rcpt:before{content:"";flex:none;width:8px;height:8px;border-radius:50%;margin-top:6px;background:var(--present)}.rcpt.a:before{background:var(--absent)}.rcpt.i:before{background:var(--magenta)}.choices{display:flex;flex-direction:column;gap:8px}.choice-row{display:flex;flex-wrap:wrap;gap:6px}.choice-row button{border:1.5px solid var(--magenta);background:var(--sheet);color:var(--ink);border-radius:10px;padding:7px 12px;font-weight:600;font-size:14px;text-align:left}.choice-row button:hover:not([disabled]){background:var(--magenta-soft)}.choice-row button[disabled]{opacity:.45;cursor:default}.choice-row button.picked{opacity:1;background:var(--magenta);color:var(--magenta-ink)}.as-chips{display:flex;flex-wrap:wrap;gap:6px;padding:0 18px 10px}.as-chips button{border:1px solid var(--line-strong);background:var(--sheet);border-radius:99px;padding:4px 10px;font-size:12.5px;color:var(--ink-2);text-align:left}.as-chips button:hover{border-color:var(--magenta);color:var(--magenta)}.as-form{display:flex;gap:8px;align-items:flex-end;padding:12px 14px 14px;border-top:1px solid var(--line)}.as-form textarea{flex:1;resize:none;min-height:44px;max-height:140px;border-radius:12px;padding:10px 12px}.mic{flex:none;width:44px;height:44px;border-radius:50%;border:1px solid var(--line-strong);background:var(--sheet);display:grid;place-items:center;padding:0}.mic svg{width:20px;height:20px;fill:none;stroke:var(--ink-2);stroke-width:2;stroke-linecap:round}.mic.on{background:var(--absent);border-color:var(--absent);animation:pulse 1.2s ease-in-out infinite}.mic.on svg{stroke:#fff}@keyframes pulse{50%{box-shadow:0 0 0 8px var(--absent-soft)}}.send{flex:none;height:44px;border-radius:12px}.tip{margin:0 14px 14px;padding:10px 12px;border-radius:10px;background:var(--hi);color:var(--hi-ink);font-size:13px}.tip kbd{font-family:var(--mono);font-size:12px;border:1px solid rgba(0,0,0,.3);border-radius:4px;padding:0 4px}.fab{display:none}@media(max-width:1099px){.assistant{position:fixed;left:0;right:0;bottom:0;z-index:20;height:min(78vh,640px);border-radius:18px 18px 0 0;padding-bottom:env(safe-area-inset-bottom,0px);transform:translateY(105%);transition:transform .25s ease;border-bottom:0}.assistant.open{transform:none}.fab{display:inline-flex;position:fixed;right:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:15;padding:12px 18px;border-radius:99px;box-shadow:var(--shadow);font-size:15px}}@media(min-width:1100px){.only-mobile{display:none}}.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translate(-50%);background:var(--ink);color:var(--paper);padding:10px 16px;border-radius:10px;font-size:14px;z-index:30;max-width:calc(100% - 32px)}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}.boot{padding:40px 16px;text-align:center;color:var(--ink-3)}code{font-family:var(--mono);font-size:.9em;background:var(--sheet-2);padding:1px 5px;border-radius:5px}.small{font-size:13px}.linkish{border:0;background:none;padding:0 2px;color:var(--ink-3);font-size:12px;text-decoration:underline;cursor:pointer}.linkish:hover{color:var(--absent)}.login-wrap{min-height:80vh;display:grid;place-items:center;padding-block:32px}.login{width:min(420px,100%);padding:24px;display:grid;gap:14px}.login .brand{margin:0 0 4px}.login label{display:grid;gap:6px;font-size:13px;font-weight:600;color:var(--ink-2)}.login input{font-size:16px;padding:10px 12px}.login .btn.primary{justify-content:center;padding:11px 14px;font-size:15px}.login p{margin:0}.login-error{color:var(--absent);background:var(--absent-soft);padding:8px 10px;border-radius:8px;font-size:14px}.as-opts{flex-basis:100%;display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center}.as-opts .btn{padding:4px 8px;font-size:13px;margin-left:auto}.rec-bar{display:flex;align-items:center;gap:10px;margin:0 14px 8px;padding:8px 10px;border-radius:12px;background:var(--absent-soft);color:var(--absent);font-size:14px;font-weight:600}.rec-dot{width:10px;height:10px;border-radius:50%;background:var(--absent);animation:pulse 1.2s ease-in-out infinite}.rec-level{flex:1;height:6px;border-radius:99px;background:var(--sheet);overflow:hidden}.rec-level i{display:block;height:100%;width:0;background:var(--absent);transition:width .08s linear}.rec-bar .btn{padding:4px 10px}.login-row{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;font-size:13px;padding-top:10px;border-top:1px dashed var(--line)}.login-row .btn{padding:4px 10px;font-size:13px}.cred{flex-basis:100%;display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;padding:10px 12px;border-radius:10px;background:var(--hi);color:var(--hi-ink)}.cred b{font-size:15px}.cred small{flex-basis:100%;opacity:.85}.cred .btn{color:var(--hi-ink)}.bulk-creds{padding:14px 18px;margin-bottom:16px;border-color:var(--magenta)}.bc-head{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}.bc-head h3{margin:0;font-family:var(--display);font-weight:400;font-size:22px}.bc-head .actions{display:flex;flex-wrap:wrap;gap:8px}.chat{display:flex;flex-direction:column;height:min(72vh,720px)}.chat-head{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;padding:12px 18px;border-bottom:1px solid var(--line)}.chat-head h3{margin:0 auto 0 0;font-family:var(--display);font-weight:400;font-size:22px}.chat-head .seg{margin:0}.chat-log{flex:1;overflow-y:auto;padding:14px 18px;display:flex;flex-direction:column;gap:10px}.cmsg{max-width:min(620px,92%);align-self:flex-start;background:var(--sheet-2);padding:8px 12px;border-radius:12px 12px 12px 4px}.cmsg.mine{align-self:flex-end;background:var(--magenta-soft);border-bottom-left-radius:12px;border-bottom-right-radius:4px}.cmsg.teacher{box-shadow:inset 3px 0 0 var(--present)}.cmeta{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:12px;margin-bottom:2px}.cbody{white-space:pre-wrap;overflow-wrap:anywhere;font-size:15px}.chat-form{display:flex;gap:8px;align-items:flex-end;padding:12px 14px;border-top:1px solid var(--line)}.chat-form textarea{flex:1;resize:none;min-height:44px;border-radius:12px;padding:10px 12px}.chat-form .btn{height:44px}.chat-note{margin:0;padding:0 18px 12px;font-size:12px}.student-main{display:grid;gap:18px;margin-top:20px}.hero{display:grid;grid-template-columns:minmax(0,1fr);gap:18px;padding:20px}@media(min-width:820px){.hero{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}.hero-main{display:grid;gap:12px;align-content:start}.hero-band{display:flex;align-items:center;gap:16px}.big-band{font-family:var(--display);font-size:72px;line-height:1;color:var(--magenta)}.hero-target{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.hero-side{display:grid;gap:14px;align-content:start}.hero-side .spark svg{height:60px}.student-main .testbar h3{font-size:20px}.grid td small{display:block}.rank-note{margin:0;padding:10px 18px 0;font-size:13px}.ranking{list-style:none;margin:0;padding:8px 10px 12px}.ranking li{display:grid;grid-template-columns:32px 38px minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px;border-radius:10px}.ranking li.me{background:var(--magenta-soft)}.ranking .rank{font-weight:700;color:var(--ink-3);text-align:center}.ranking .rname{font-weight:600;overflow-wrap:anywhere}.ranking .rname small{display:block;font-weight:400}.fab svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}.sheet-shade{position:fixed;top:0;right:0;bottom:0;left:0;z-index:19;background:#140a1459}@media(min-width:1100px){.sheet-shade{display:none}}@media(max-width:1099px){.fab{align-items:center;gap:8px;font-weight:700}.assistant{height:min(84vh,680px);box-shadow:0 -12px 40px -10px #280a1e73}.as-head{padding:12px 16px 10px}.as-head .ctl{order:-1;margin-left:auto}.as-log{min-height:120px}}@media(max-width:700px){input,select,textarea{font-size:16px!important}body{padding-bottom:calc(150px + env(safe-area-inset-bottom,0px))}body.has-savebar{padding-bottom:calc(220px + env(safe-area-inset-bottom,0px))}.top{gap:8px 10px;padding-block:10px 10px}.brand{gap:8px}.logo{width:32px;height:32px;font-size:21px;border-radius:8px}.brand h1{font-size:22px}.brand small{display:none}.top .group-sel{margin-left:auto;font-size:0}.top{flex-wrap:nowrap}.brand{margin-right:0;min-width:0}.top .group-sel select{font-size:15px!important;padding:6px;max-width:118px}#logoutBtn{padding:6px 4px;font-size:13px;white-space:nowrap;margin-left:auto}.top .group-sel+#logoutBtn{margin-left:0}.tabs{position:fixed;left:0;right:0;bottom:0;z-index:16;display:flex;gap:2px;border-radius:0;padding:6px 6px calc(6px + env(safe-area-inset-bottom,0px));background:var(--sheet);border-top:1px solid var(--line);box-shadow:0 -8px 24px -16px #280a1e59}.tabs button{flex:1 1 0;min-width:0;padding:12px 2px;font-size:13px;border-radius:10px}.tabs button[aria-selected=true]{background:var(--magenta-soft);color:var(--magenta);box-shadow:none}.teacher-app .tabs button:nth-child(2){margin-right:76px}.fab{left:50%;right:auto;transform:translate(-50%);bottom:calc(12px + env(safe-area-inset-bottom,0px));z-index:17;width:64px;height:64px;padding:0;border-radius:50%;justify-content:center;border:4px solid var(--sheet);box-shadow:0 8px 20px -6px #78144699}.fab svg{width:26px;height:26px}.fab span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.savebar{bottom:calc(72px + env(safe-area-inset-bottom,0px));width:calc(100% - 24px)}.savebar .sb-actions{margin-left:0;width:100%}.savebar .sb-actions .btn{flex:1;justify-content:center;padding:10px}.toast{bottom:calc(140px + env(safe-area-inset-bottom,0px))}body.has-savebar .toast{bottom:calc(210px + env(safe-area-inset-bottom,0px))}.assistant{height:calc(100% - 56px);max-height:none;border-radius:18px 18px 0 0}.layout{margin-top:14px}h2.title{font-size:24px}.view-head{gap:10px;margin-bottom:12px}.view-head .actions{margin-left:0;width:100%}.datenav{width:100%}.datenav input{flex:1}.datenav .btn{padding:9px 14px}.reg-head{padding:12px 14px 2px}.reg-head .btn{margin-left:0;width:100%;justify-content:center}.tally{padding:10px 14px;gap:6px 14px}.row{padding:12px 14px;gap:8px 10px}.initials{width:34px;height:34px;font-size:12px}.mk{width:50px;height:46px}.reason{gap:6px}.reason input{flex-basis:100%}.chip{padding:6px 12px}.newtest,.addform{padding:12px 14px}.newtest .btn,.addform .btn{flex:1 1 100%;justify-content:center;padding:10px}.testbar{padding:12px 14px}.testbar .right{margin-left:0}.seg{display:flex;width:100%}.seg button{flex:1;padding:8px 6px;font-size:13px}.tests{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;margin-inline:-16px;padding-inline:16px}.test-chip{flex:none}.cards{grid-template-columns:minmax(0,1fr)}.card{padding:14px}.chat{height:calc(100vh - 230px);min-height:360px}.scroll{overflow:visible}table.grid,table.grid.narrow{min-width:0}.grid thead{display:none}.grid,.grid tbody,.grid tr,.grid td{display:block;width:100%}.grid tr{padding:12px 14px;border-bottom:1px solid var(--line)}.grid tbody tr:last-child{border-bottom:0}.grid td{border:0;padding:5px 0;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:40px}.grid td[data-label]:before{content:attr(data-label);font-size:12px;font-weight:600;color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em}.grid td.name{display:block;min-height:0;font-size:16px;padding-bottom:4px}.grid td.name small{display:inline;margin-left:6px}tr.absent-day td.name:after{margin:0 0 0 6px}.cell input,.cell input.wide,.cell input.xwide{width:120px}.legend{padding:12px 14px}.hero{padding:16px}.big-band{font-size:60px}}
