.page{max-width:960px;margin:0 auto;padding:1.25rem 1rem 3rem}.masthead{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.75rem;margin-bottom:1.25rem;padding-bottom:1rem;display:flex}.eyebrow{letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin:0;font-size:.72rem}.masthead h1,.wordmark{margin:.2rem 0 0;font-size:clamp(1.8rem,5vw,2.4rem)}.lede{max-width:40rem;color:var(--muted);margin:0;line-height:1.45}.card,.auth-card,.panel{background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:1.15rem 1.2rem 1.25rem;box-shadow:0 3px 12px #24352d0f}.auth-card{gap:.9rem;max-width:28rem;display:grid}.auth-card h1,.panel h1,.panel h2{margin:0}.grid{gap:.85rem;display:grid}@media (width>=720px){.grid.two{grid-template-columns:1fr 1fr}}.toolbar{flex-wrap:wrap;align-items:center;gap:.65rem;margin:.75rem 0 1rem;display:flex}nav.tabs{flex-wrap:wrap;gap:.4rem;display:flex}button,.tab{appearance:none;background:var(--primary);color:var(--surface);cursor:pointer;border:0;border-radius:14px;min-height:48px;padding:.7rem 1rem}button.secondary,button.ghost,.tab{background:var(--primary-soft);color:var(--primary)}button.danger{background:var(--notice-surface);color:var(--notice-ink)}button.link,.tab.link{color:var(--primary);background:0 0;min-height:44px;padding:.45rem .2rem;text-decoration:underline}button:disabled{opacity:.6;cursor:wait}.tab.active{background:var(--primary);color:var(--surface)}.field{color:var(--muted);gap:.35rem;font-size:.92rem;display:grid}.field-input{align-items:center;gap:.5rem;display:flex}.field input,.field select{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--ink);border-radius:12px;flex:1;min-height:48px;padding:.6rem .7rem}.form-error,.status-error{color:var(--notice-ink);margin:0}.status-saved{color:var(--primary)}.status-saving,.muted{color:var(--muted)}.form-footer{color:var(--muted);margin:1rem 0 0;font-size:.92rem}.list{gap:.6rem;margin:0;padding:0;list-style:none;display:grid}.list button.row,a.row{text-align:left;background:var(--surface);width:100%;color:var(--ink);border:1px solid var(--border);border-radius:14px;justify-content:space-between;gap:.75rem;text-decoration:none;display:flex}.mark-row{border-bottom:1px solid var(--border);gap:.55rem;padding:.85rem 0;display:grid}.mark-row:last-child{border-bottom:0}.mark-buttons{flex-wrap:wrap;gap:.4rem;display:flex}.mark-buttons button{flex:7rem}.mark-buttons button.pending{box-shadow:inset 0 0 0 2px var(--gold)}.counts{flex-wrap:wrap;gap:.5rem;margin:.5rem 0 1rem;display:flex}.counts span{background:var(--primary-soft);border-radius:999px;padding:.35rem .75rem;font-size:.9rem}.notice{background:var(--notice-surface);color:var(--notice-ink);border-radius:14px;padding:.85rem 1rem}.card-detail{color:var(--muted);margin:.4rem 0 0;font-size:.92rem}.week-grid{gap:.6rem;display:grid}.rule-row{border-top:1px solid var(--border);margin-top:.65rem;padding-top:.55rem}fieldset.field{border:1px solid var(--border);border-radius:12px;gap:.35rem;padding:.75rem 1rem;display:grid}@media (width>=900px){.week-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){.page{padding:.85rem .8rem 2.5rem}button,.tab{width:auto}}.page.cabinet{max-width:1080px;padding:.85rem 1rem 2rem;font-size:15px;line-height:1.4}.page.cabinet .wordmark{font-size:1.5rem}.page.cabinet .masthead{gap:.5rem;margin-bottom:.7rem;padding-bottom:.55rem}.page.cabinet .panel,.page.cabinet .card{border-radius:14px;padding:.8rem .9rem .95rem}.page.cabinet h1{font-size:1.32rem}.page.cabinet h2{margin:1rem 0 .4rem;font-size:1.12rem}.page.cabinet h3{margin:.75rem 0 .35rem;font-size:1rem}.page.cabinet .lede{margin:.2rem 0 .7rem;font-size:.92rem}.page.cabinet .grid{gap:.55rem}.page.cabinet .toolbar{gap:.4rem;margin:.45rem 0 .7rem}.page.cabinet .toolbar.tight{margin:0}.page.cabinet button,.page.cabinet .tab{border-radius:10px;min-height:34px;padding:.28rem .7rem}.page.cabinet button.link,.page.cabinet .tab.link{min-height:32px;padding:.2rem .15rem}.page.cabinet .field{gap:.22rem;font-size:.86rem}.page.cabinet .field input,.page.cabinet .field select,.page.cabinet .field textarea{border-radius:10px;min-height:34px;padding:.28rem .55rem}.page.cabinet .list{gap:.35rem}.page.cabinet .list.compact{gap:.25rem}.page.cabinet .list button.row,.page.cabinet a.row{border-radius:10px;align-items:center;min-height:36px;padding:.4rem .65rem}.page.cabinet .notice{border-radius:10px;padding:.55rem .7rem}.page.cabinet .notice.compact{margin:.4rem 0;font-size:.9rem}.page.cabinet .mark-row{padding:.45rem 0}.page.cabinet .mark-buttons button{flex:6rem}.page.cabinet button:hover:not(:disabled),.page.cabinet .tab:hover{filter:brightness(.97)}.page.cabinet button:focus-visible,.page.cabinet .tab:focus-visible,.page.cabinet input:focus-visible,.page.cabinet select:focus-visible,.page.cabinet textarea:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.page.cabinet button:disabled,.page.cabinet .tab:disabled{opacity:.55;cursor:not-allowed}.page.cabinet .row.selected,.page.cabinet .combobox-list .selected{box-shadow:inset 0 0 0 1.5px var(--primary)}.section-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:.6rem;margin-bottom:.7rem;display:flex}.inline-form{flex-wrap:wrap;align-items:end;gap:.45rem;margin:.4rem 0 .8rem;display:flex}.inline-form .field{flex:10rem;min-width:10rem}.search-field{min-width:14rem}.student-section{border-top:1px solid var(--border);margin-top:.45rem;padding-top:.35rem}.section-head{width:100%;color:var(--ink);text-align:left;background:0 0;border-radius:8px;justify-content:space-between;align-items:center;min-height:36px;padding:.25rem .1rem;display:flex}.student-list{gap:.3rem;margin:0;padding:.2rem 0 .5rem;list-style:none;display:grid}.student-row{border:1px solid var(--border);background:var(--surface);border-radius:10px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.35rem .7rem;padding:.35rem .5rem;display:grid}.student-identity{gap:.1rem;min-width:0;display:grid}.student-name{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.student-actions{flex-shrink:0;align-items:center;gap:.3rem;display:flex}.student-access{border-top:1px solid var(--border);grid-column:1/-1;padding-top:.35rem}.empty-row{padding:.35rem .15rem}.hint{color:var(--muted);font-size:.82rem;line-height:1.35;display:block}.check-row{align-items:flex-start;gap:.45rem;margin:.25rem 0;display:flex}.icon-btn{background:var(--primary-soft);min-width:36px;min-height:36px;color:var(--primary);padding:0}.overflow{position:relative}.overflow-menu{z-index:8;background:var(--surface);border:1px solid var(--border);border-radius:10px;gap:.15rem;min-width:11rem;padding:.35rem;display:grid;position:absolute;top:calc(100% + 4px);right:0;box-shadow:0 8px 24px #24352d1f}.overflow-menu button{text-align:left;justify-content:flex-start;width:100%}.combobox-box{position:relative}.combobox-list{z-index:9;background:var(--surface);border:1px solid var(--border);border-radius:10px;max-height:220px;margin:.2rem 0 0;padding:.25rem;list-style:none;position:absolute;left:0;right:0;overflow:auto;box-shadow:0 8px 24px #24352d1f}.combobox-list button{width:100%;color:var(--ink);text-align:left;background:0 0;border-radius:8px}.combobox-list button:hover,.combobox-list button.selected{background:var(--primary-soft);color:var(--primary)}.session-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.35rem;display:grid}.dialog-scrim{z-index:20;background:#24352d47;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.dialog{background:var(--surface);border:1px solid var(--border);border-radius:14px;width:min(36rem,100%);max-height:min(88vh,48rem);padding:.9rem 1rem 1rem;overflow:auto;box-shadow:0 12px 36px #24352d29}.preview-block,.bulk-scope{gap:.4rem;margin:.5rem 0;display:grid}.toast{z-index:30;background:var(--primary);color:var(--surface);border-radius:10px;margin:0;padding:.45rem .8rem;font-size:.92rem;position:fixed;bottom:1rem;right:1rem;box-shadow:0 6px 18px #24352d29}.page.cabinet .section-head,.page.cabinet .combobox-list button{color:var(--ink);box-shadow:none;background:0 0}.page.cabinet .section-head:hover,.page.cabinet .combobox-list button:hover{background:var(--primary-soft);color:var(--primary);filter:none}@media (width<=720px){.page.cabinet button,.page.cabinet .tab,.page.cabinet .field input,.page.cabinet .field select,.page.cabinet .icon-btn{min-height:44px}.student-row{grid-template-columns:1fr}.student-name{white-space:normal}.student-actions{justify-content:flex-start}.session-row{grid-template-columns:1fr}}@font-face{font-family:Lora;src:url(/fonts/Lora-Variable.ttf)format("truetype");font-weight:400 700;font-style:normal;font-display:swap}@font-face{font-family:Noto Sans;src:url(/fonts/NotoSans-Variable.ttf)format("truetype");font-weight:400 700;font-style:normal;font-display:swap}:root{--background:#fff9ee;--surface:#fffcf7;--ink:#24352d;--muted:#59685f;--primary:#386448;--primary-soft:#e5efe6;--accent:#d74642;--notice-ink:#a83230;--notice-surface:#fdecea;--border:#e6e0d5;--gold:#d7ad54;color:var(--ink);background:var(--background);font-synthesis:none;text-rendering:optimizelegibility;font-family:Noto Sans,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:var(--background)}button,input,select,textarea{font:inherit}h1,h2,h3{font-family:Lora,Georgia,serif;font-weight:700}
