:root{--paper:#f5f3ee;--card:#fff;--ink:#1d2a30;--muted:#66757a;--line:#e4e1d9;--soft:#efece5;--green:#1f7a50;--green-soft:#e2f2e8;--purple:#6b45b5;--purple-soft:#efe8fb;--amber:#995c06;--amber-soft:#fbf0dc;--accent:#1f7a50;--accent-ink:#fff;--shadow:0 1px 2px #2823140d, 0 4px 16px #2823140d;--font-display:"Gabarito", ui-rounded, system-ui, sans-serif;--font-body:"Atkinson Hyperlegible", system-ui, -apple-system, "Segoe UI", sans-serif;--r:18px;--r-sm:12px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#12191c;--card:#1a2327;--ink:#e7edeb;--muted:#9aabaf;--line:#2a373c;--soft:#212d32;--green:#62c99a;--green-soft:#183829;--purple:#b797f3;--purple-soft:#2b2340;--amber:#f0b45c;--amber-soft:#382a15;--accent:#62c99a;--accent-ink:#0d1a14;--shadow:0 1px 2px #0000004d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--paper:#12191c;--card:#1a2327;--ink:#e7edeb;--muted:#9aabaf;--line:#2a373c;--soft:#212d32;--green:#62c99a;--green-soft:#183829;--purple:#b797f3;--purple-soft:#2b2340;--amber:#f0b45c;--amber-soft:#382a15;--accent:#62c99a;--accent-ink:#0d1a14;--shadow:0 1px 2px #0000004d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);margin:0;font-size:17px;line-height:1.55}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.01em;line-height:1.15}summary{cursor:pointer;list-style:none}summary::-webkit-details-marker{display:none}header.top{z-index:10;background:var(--paper);box-shadow:0 1px 0 var(--line);padding:14px 20px;position:sticky;top:0}.top-row{align-items:center;gap:16px;max-width:1120px;margin:0 auto;display:flex}.brand{font-family:var(--font-display);letter-spacing:-.01em;white-space:nowrap;align-items:center;gap:10px;font-size:1.25rem;font-weight:800;display:flex}.brand .nib{background:var(--green);width:13px;height:13px;box-shadow:5px -5px 0 -1px var(--purple);border-radius:3px 3px 3px 10px;transform:rotate(45deg)}.tabs{background:var(--card);box-shadow:var(--shadow);border-radius:999px;gap:2px;margin:0 auto;padding:4px;display:flex}.tabs button{color:var(--muted);white-space:nowrap;background:0 0;border:0;border-radius:999px;padding:8px 18px;font-weight:700}.tabs button:hover{color:var(--ink)}.tabs button[aria-selected=true]{background:var(--ink);color:var(--card)}.account{position:relative}.account summary{background:var(--card);width:40px;height:40px;box-shadow:var(--shadow);color:var(--muted);border-radius:50%;place-items:center;font-weight:700;display:grid}.account[open] summary{color:var(--ink)}.account-menu{background:var(--card);border-radius:var(--r-sm);overflow-wrap:anywhere;flex-direction:column;gap:4px;min-width:240px;padding:16px;display:flex;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 8px 30px #00000024}.account-menu .btn{align-self:flex-start;margin-top:10px}@media (width<=640px){header.top{padding:10px 16px}.top-row{flex-wrap:wrap;gap:10px}.brand{flex:1}.tabs{order:3;justify-content:space-between;width:100%;margin:0}.tabs button{flex:1;padding:8px 6px}}main{max-width:1120px;margin:0 auto;padding:16px 20px 80px}@media (width<=640px){main{padding:12px 16px 80px}}.banner{background:var(--amber-soft);border-radius:var(--r-sm);flex-wrap:wrap;align-items:center;gap:10px 16px;max-width:1048px;margin:0 auto 24px;padding:12px 16px;display:flex}.banner p{flex:1;min-width:200px;margin:0}.small{color:var(--muted);font-size:.85rem;font-weight:400}.hint{color:var(--muted);margin:0 0 16px;font-size:.92rem}.hint .g{color:var(--green);font-weight:700}.hint .p{color:var(--purple);font-weight:700}label{font-weight:700}input,select,textarea{font-weight:400}p.status:empty{display:none}.field-label{margin:20px 0 8px;font-weight:700;display:block}input.text,textarea,select{border:1.5px solid var(--line);border-radius:var(--r-sm);background:var(--card);width:100%;padding:12px 14px}input.text:focus,textarea:focus,select:focus{border-color:var(--muted);outline:none}textarea{resize:vertical;line-height:1.6}textarea.mono{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.88rem}.status{color:var(--muted);min-height:1.3em;font-size:.9rem}.status.warn{color:var(--amber)}.badge{text-transform:uppercase;letter-spacing:.08em;background:var(--amber-soft);color:var(--amber);border-radius:999px;padding:4px 10px;font-size:.72rem;font-weight:700}.btn{border:1.5px solid var(--line);background:var(--card);border-radius:999px;padding:9px 18px;font-weight:700}.btn:hover{border-color:var(--muted)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);padding:12px 24px;font-size:1.05rem}.btn.primary:hover{filter:brightness(1.07)}.btn.quiet,.btn.ghost{color:var(--muted);background:0 0;border-color:#0000}.btn.quiet:hover,.btn.ghost:hover{color:var(--ink);background:var(--soft)}.btn.danger{color:var(--amber)}.btn:disabled{opacity:.5;cursor:default}.icon-btn{background:var(--soft);width:40px;height:40px;color:var(--ink);border:0;border-radius:50%;font-size:1.4rem;line-height:1}.icon-btn:hover{background:var(--line)}.go{flex-wrap:wrap;align-items:center;gap:12px;margin-top:20px;display:flex}.confirm,.row-actions{flex-wrap:wrap;align-items:center;gap:8px;display:inline-flex}.seg{background:var(--soft);border-radius:999px;padding:3px;display:inline-flex}.seg button{color:var(--muted);background:0 0;border:0;border-radius:999px;padding:5px 14px;font-weight:700}.seg button[aria-pressed=true]{background:var(--card);color:var(--ink);box-shadow:var(--shadow)}.levels{flex-wrap:wrap;gap:8px;display:flex}.level{border:1.5px solid var(--line);background:var(--card);border-radius:var(--r-sm);color:var(--muted);padding:10px 16px;font-weight:700}.level:hover{border-color:var(--muted);color:var(--ink)}.level[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--card)}@media (width<=640px){.levels{flex-wrap:nowrap}.level{flex:1 1 0;padding:10px 6px;line-height:1.2}}.chips{flex-wrap:wrap;gap:10px;display:flex}.chip{border:1.5px solid var(--line);background:var(--card);text-align:left;border-radius:20px;padding:8px 16px;font-size:.95rem;line-height:1.3}.chip:hover{border-color:var(--muted)}.chip.s{background:var(--green-soft);border-color:var(--green)}.chip.s:before{content:"✓ ";color:var(--green);font-weight:700}.chip.n{background:var(--purple-soft);border-color:var(--purple)}.chip.n:before{content:"→ ";color:var(--purple);font-weight:700}.step{align-items:center;gap:12px;margin:40px 0 8px;scroll-margin-top:90px;font-size:1.25rem;display:flex}.step span{background:var(--ink);width:30px;height:30px;color:var(--card);border-radius:50%;flex:none;place-items:center;font-size:.95rem;display:grid}.step .small{width:auto;height:auto;font-family:var(--font-body);color:var(--muted);background:0 0;font-size:.85rem;display:inline}.write{grid-template-columns:240px minmax(0,760px);justify-content:center;align-items:start;gap:48px;display:grid}@media (width<=899px){.write{grid-template-columns:minmax(0,1fr);gap:16px}}.roster{position:sticky;top:84px}.roster summary{pointer-events:none;align-items:center;gap:12px;padding:6px 10px 14px;display:flex}.roster-title{font-family:var(--font-display);font-size:1.05rem;font-weight:700}.progress{flex:1;align-items:center;gap:10px;display:flex}.bar{background:var(--line);border-radius:999px;flex:1;height:8px;overflow:hidden}.bar i{background:var(--green);border-radius:999px;height:100%;transition:width .4s;display:block}.progress b{font-variant-numeric:tabular-nums;color:var(--muted);font-size:.9rem}.plist{flex-direction:column;gap:2px;max-height:calc(100vh - 300px);display:flex;overflow:auto}.pbtn{text-align:left;border-radius:var(--r-sm);background:0 0;border:0;align-items:center;gap:12px;width:100%;padding:9px 12px;display:flex}.pbtn:hover{background:var(--soft)}.pbtn[aria-current=true]{background:var(--card);box-shadow:var(--shadow);font-weight:700}.pname{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.dot{border:2px solid var(--line);border-radius:50%;flex:none;width:10px;height:10px;display:inline-block}.dot.marked{border-color:var(--amber)}.dot.written{border-color:var(--purple);background:var(--purple)}.dot.done{border-color:var(--green);background:var(--green)}.roster-actions{border-top:1px solid var(--line);flex-direction:column;align-items:flex-start;gap:2px;margin-top:16px;padding-top:12px;display:flex}.roster-actions .btn{text-align:left;padding:7px 12px}.roster-actions .saved{padding:8px 12px 0}@media (width<=899px){.roster{background:var(--card);border-radius:var(--r-sm);box-shadow:var(--shadow);padding:4px 8px;position:static}.roster summary{pointer-events:auto;padding:10px}.roster summary:after{content:"Show all";color:var(--muted);font-size:.85rem;font-weight:700}.roster[open] summary:after{content:"Hide"}.plist{max-height:50vh}.roster-actions{margin:8px 0 6px}.pbtn[aria-current=true]{background:var(--soft);box-shadow:none}}.pupil{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);min-width:0;padding:36px 40px 0;scroll-margin-top:90px}@media (width<=640px){.pupil{border-radius:var(--r-sm);padding:24px 20px 0}}.pupil-head{align-items:center;gap:12px;margin-bottom:12px;display:flex}.pupil-name{flex-wrap:wrap;flex:1;align-items:center;gap:12px;min-width:0;display:flex}.pupil-name h1{overflow-wrap:anywhere;margin:0;font-size:2.4rem}.stepper{align-items:center;gap:8px;display:flex}.stepper .small{font-variant-numeric:tabular-nums;white-space:nowrap}.subjects{flex-direction:column;gap:16px;display:flex}.subj{background:var(--paper);border-radius:var(--r-sm);flex-direction:column;gap:16px;padding:20px;display:flex}.subj-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.subj h3{margin:0;font-size:1.2rem}.mark{align-items:center;gap:8px;display:flex}.mark input{border:1.5px solid var(--line);background:var(--card);text-align:center;border-radius:8px;width:64px;padding:6px 8px}.note{flex-direction:column;gap:8px;margin-top:24px;display:flex}.note textarea{field-sizing:content;resize:none;min-height:52px}.out-wrap{flex-direction:column;gap:12px;margin-top:8px;display:flex}.out-wrap textarea{field-sizing:content;border-color:var(--green);min-height:220px;max-height:60vh;padding:16px 18px;font-size:1.06rem;line-height:1.7}.out-meta{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.tweaks{flex-wrap:wrap;gap:8px;display:inline-flex}.tweaks .chip{color:var(--muted);padding:6px 14px;font-size:.88rem;font-weight:700}.actions{background:var(--card);border-top:1px solid var(--line);border-radius:0 0 var(--r) var(--r);flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;margin:28px -40px 0;padding:16px 40px;display:flex;position:sticky;bottom:0}@media (width<=640px){.actions{border-radius:0 0 var(--r-sm) var(--r-sm);flex-wrap:nowrap;gap:2px;margin:24px -20px 0;padding:12px 16px}.actions .btn{white-space:nowrap}.actions .btn.quiet{padding:9px 8px}.actions .btn.primary{padding:11px 16px;font-size:1rem}}.empty{text-align:center;max-width:520px;margin:12vh auto}.empty h1{margin:0 0 8px;font-size:2rem}.page{flex-direction:column;gap:20px;max-width:720px;margin:0 auto;display:flex}.page-title{margin:8px 0 4px;font-size:2rem}.card{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);min-width:0;padding:28px 32px}@media (width<=640px){.card{padding:20px}}.card h2{margin:0 0 6px;font-size:1.25rem}.card .step{margin:0 0 6px}.card-title{justify-content:space-between;align-items:center;gap:10px;display:flex}.fold summary h2{margin:0}.fold[open] summary{margin-bottom:12px}.fold summary:after{content:"Show";color:var(--muted);margin-left:auto;font-size:.85rem;font-weight:700}.fold summary{align-items:center;display:flex}.fold[open] summary:after{content:"Hide"}.setting{flex-direction:column;gap:8px;margin-top:16px;display:flex}.setting .field-label{margin:0}.danger-zone{color:var(--muted);flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;padding:8px 0;display:flex}.toast{opacity:0;background:var(--ink);color:var(--card);pointer-events:none;z-index:20;border-radius:999px;max-width:calc(100% - 32px);padding:12px 20px;font-weight:700;transition:all .25s;position:fixed;bottom:24px;left:50%;transform:translate(-50%)translateY(20px)}.toast.show{opacity:1;transform:translate(-50%)translateY(0)}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}.auth{flex-direction:column;justify-content:center;align-items:center;gap:24px;min-height:100vh;padding:24px 16px;display:flex}.auth-brand{font-size:1.5rem}.auth-card{flex-direction:column;gap:8px;width:100%;max-width:440px;display:flex}.auth-card h1{margin:0 0 4px;font-size:1.7rem}.auth-form{flex-direction:column;gap:16px;display:flex}.auth-form .btn.primary{align-self:flex-start}.auth-form .go{margin-top:4px}.auth-card .btn.ghost{align-self:flex-start;padding-left:0}.auth-card .btn.ghost:hover{background:0 0}.field{flex-direction:column;gap:6px;display:flex}.rows{flex-direction:column;margin:12px 0 0;padding:0;list-style:none;display:flex}.rows li{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:8px 12px;padding:14px 0;display:flex}.row-main{overflow-wrap:anywhere;flex-direction:column;flex:1;min-width:200px;display:flex}.pill{background:var(--soft);color:var(--muted);border-radius:999px;padding:4px 10px;font-size:.75rem;font-weight:700}.pill.ok{background:var(--green-soft);color:var(--green)}.pill.wait{background:var(--amber-soft);color:var(--amber)}.pill.off{background:var(--soft);color:var(--muted);text-decoration:line-through}.linkbox{gap:8px;margin-top:12px;display:flex}.settings-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px 20px;display:grid}
