:root{--text:#1f2937;--muted:#4b5563;--border:#6b7280;--brand:#9a3412;--brand-dark:#7c2d12;--present:#166534;--absent:#991b1b;--focus:#1d4ed8;--page:#fff;--tint:#f9fafb;--tab-bar:3.5rem;color:var(--text);background:var(--page);-webkit-text-size-adjust:100%;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:100%;line-height:1.5}*,:before,:after{box-sizing:border-box}body{background:var(--page);min-height:100vh;margin:0}h1{margin:.5rem 0 .75rem;font-size:1.5rem;line-height:1.25}h2{margin:0;font-size:1.125rem}h1:focus{outline:none}h1:focus-visible{outline:3px solid var(--focus);outline-offset:2px}a{color:var(--brand)}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.page{max-width:40rem;padding:1rem 1rem calc(1.5rem + env(safe-area-inset-bottom));margin:0 auto}.app-header{padding:.5rem 1rem;padding-top:calc(.5rem + env(safe-area-inset-top));background:var(--page);border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.app-header-text{flex-direction:column;min-width:0;display:flex}.app-name{color:var(--brand);letter-spacing:.02em;font-weight:700}.app-name.large{margin:1rem 0 0;font-size:1.25rem}.teacher-name{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.9375rem;overflow:hidden}.page.with-tab-bar{padding-bottom:calc(var(--tab-bar) + 1.5rem + env(safe-area-inset-bottom))}.tab-bar{z-index:5;padding-bottom:env(safe-area-inset-bottom);background:var(--page);border-top:1px solid #d1d5db;position:fixed;bottom:0;left:0;right:0}.tab-bar ul{grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;max-width:40rem;margin:0 auto;padding:0;list-style:none;display:grid}.tab{width:100%;min-height:var(--tab-bar);font:inherit;text-align:center;overflow-wrap:anywhere;color:var(--muted);touch-action:manipulation;background:0 0;border:0;border-top:3px solid #0000;flex-direction:column;justify-content:center;align-items:center;padding:.25rem .125rem;font-size:.8125rem;font-weight:600;line-height:1.2;text-decoration:none;display:flex}.tab[aria-current=page]{color:var(--brand);border-top-color:var(--brand);background:#fff7ed;font-weight:700}.tab:focus-visible{outline-offset:-3px}.tab:disabled{cursor:not-allowed}.tab-note{font-size:.6875rem;font-weight:500}.offline-banner:empty{display:none}.offline-banner{z-index:10;background:var(--text);color:#fff;text-align:center;padding:.75rem 1rem;font-weight:600;position:sticky;top:0}label{margin-bottom:.25rem;font-weight:600;display:block}input[type=email],input[type=text],input[type=tel],input[type=date],input[type=search],select{width:100%;min-height:3rem;font:inherit;color:var(--text);background:var(--page);border:2px solid var(--border);border-radius:.5rem;padding:.5rem .75rem;font-size:1.125rem;display:block}.code-input{letter-spacing:.3em;font-variant-numeric:tabular-nums;font-size:1.5rem!important}form{flex-direction:column;gap:.75rem;display:flex}.button{min-width:3rem;min-height:3rem;font:inherit;text-align:center;border:2px solid var(--brand);cursor:pointer;touch-action:manipulation;border-radius:.5rem;justify-content:center;align-items:center;padding:.5rem 1rem;font-weight:600;text-decoration:none;display:inline-flex}.button.primary{background:var(--brand);color:#fff;width:100%}.button.primary:hover:not(:disabled){background:var(--brand-dark)}.button.secondary{background:var(--page);color:var(--brand)}.button.quiet{color:var(--brand);background:0 0;border-color:#0000;text-decoration:underline}.button.big{min-height:3.5rem;margin:.5rem 0 1.25rem;font-size:1.0625rem}.button:disabled{cursor:not-allowed;opacity:.55}.secondary-actions{flex-direction:column;gap:.5rem;margin-top:1rem;display:flex}.message{border-left:4px solid;border-radius:.5rem;margin:.75rem 0;padding:.75rem 1rem}.message p{margin:0 0 .5rem}.message p:last-child{margin-bottom:0}.message.error{color:var(--absent);background:#fef2f2}.message.success{color:var(--present);background:#f0fdf4}.message.info{color:#1e3a8a;background:#eff6ff}.cards{gap:.75rem;margin:.5rem 0 0;padding:0;list-style:none;display:grid}.card{min-height:3rem;color:var(--muted);border:2px solid #d1d5db;border-radius:.75rem;flex-direction:column;gap:.125rem;padding:1rem;text-decoration:none;display:flex}a.card{border-color:var(--brand)}a.card:hover{background:#fff7ed}.card-title{color:var(--text);font-size:1.125rem;font-weight:700}a.card .card-title{color:var(--brand)}.card.disabled{background:var(--tint);border-style:dashed}.bv-class-info{color:var(--muted);flex-direction:column;margin:0 0 .5rem;display:flex}.bv-class-name{color:var(--text);font-weight:600}.month-nav{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.date-list{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.date-link{min-height:3rem;color:var(--text);border:2px solid #d1d5db;border-radius:.5rem;justify-content:space-between;align-items:center;padding:.5rem 1rem;font-weight:600;text-decoration:none;display:flex}.date-link.selected{border-color:var(--brand);background:#fff7ed}.tag{color:var(--brand);font-size:.8125rem;font-weight:600}.back{margin:0}.back a{align-items:center;min-height:3rem;font-weight:600;display:inline-flex}.counts{color:var(--muted);margin:0 0 .75rem}.roster{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.child fieldset{border:1px solid #d1d5db;border-radius:.75rem;min-width:0;margin:0;padding:.75rem}.child legend{padding:0 .25rem;font-size:1.0625rem;font-weight:700}.toggle{grid-template-columns:1fr 1fr;gap:.5rem;margin-top:.25rem;display:grid}.choice{margin:0;position:relative}.choice input{opacity:0;margin:0;position:absolute;inset:0}.choice span{border:2px solid var(--border);background:var(--page);min-height:3rem;color:var(--text);cursor:pointer;border-radius:.5rem;justify-content:center;align-items:center;padding:.5rem;font-weight:500;display:flex}.choice input:checked+span{color:#fff;font-weight:700}.choice input:checked+span:before{content:"✓";margin-right:.375rem}.choice-present input:checked+span{background:var(--present);border-color:var(--present)}.choice-absent input:checked+span{background:var(--absent);border-color:var(--absent)}.choice input:focus-visible+span{outline:3px solid var(--focus);outline-offset:2px}.choice input:disabled+span{cursor:not-allowed;opacity:.7}.note{color:var(--muted);margin:.5rem 0 0;font-size:.9375rem}.note.unsaved{color:#92400e;font-weight:600}.action-bar{bottom:calc(var(--tab-bar) + env(safe-area-inset-bottom));background:var(--page);border-top:1px solid #e5e7eb;flex-direction:column;gap:.5rem;margin-top:1rem;padding:.75rem 0;display:flex;position:sticky}.action-bar .button.secondary{width:100%}.hint{color:var(--muted);margin:0;font-size:.875rem}input[aria-invalid=true],select[aria-invalid=true]{border-color:var(--absent)}fieldset{border:0;min-width:0;margin:0;padding:0}.group{border-bottom:1px solid #e5e7eb;flex-direction:column;gap:.75rem;padding-bottom:1rem;display:flex}.group>legend{margin-bottom:.75rem;padding:0;font-size:1.125rem;font-weight:700}.choices>legend{margin-bottom:.25rem;padding:0;font-weight:600}.optional{color:var(--muted);font-weight:400}.field .hint{margin-bottom:.25rem}.field-error{color:var(--absent);margin:.25rem 0 0;font-weight:600}.option{grid-template-columns:1.5rem 1fr;align-items:center;column-gap:.75rem;min-height:3rem;display:grid}.option input{width:1.5rem;height:1.5rem;accent-color:var(--brand);margin:0}.option label{margin:0}.option .hint{grid-column:2}.option.inline{margin-right:1.25rem;font-weight:400;display:inline-grid}.more{flex-direction:column;gap:.75rem;display:flex}.more>summary{min-height:3rem;color:var(--brand);cursor:pointer;align-items:center;font-weight:600;display:flex}.more[open]>summary{margin-bottom:.5rem}.read-only-line{margin:0;font-size:1.125rem}.read-only-label{font-weight:600}.read-only:focus{outline:none}.existing-family .button{width:100%}.existing-family .button+.button{margin-top:.5rem}.family-search h2{margin:0;font-size:1.125rem}.family-search form{flex-direction:column;gap:.75rem;display:flex}.family-search input[type=search]{appearance:none}.search-status:empty{display:none}.search-status{margin:0}.family-results{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.family-result{overflow-wrap:anywhere;border:1px solid #d1d5db;border-radius:.5rem;padding:.75rem 1rem}.family-result h3{margin:0 0 .25rem;font-size:1rem}.family-result p,.family-emails{margin:0 0 .25rem}.family-emails{color:var(--muted);padding:0;list-style:none}.family-result .button{width:100%;margin-top:.5rem}.summary{margin:0 0 1rem}.summary-row{border-bottom:1px solid #e5e7eb;padding:.5rem 0}.summary dt{font-weight:600}.summary dd{margin:0}.reference{overflow-wrap:anywhere;font-family:ui-monospace,Cascadia Mono,Menlo,monospace;font-size:.875rem}@media (width>=40rem){.action-bar{flex-flow:wrap}.action-bar>div[aria-live]{flex-basis:100%}.action-bar .button{flex:1}.hint{flex-basis:100%}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
