:root{--color-primary:#185943;--color-ink:#192d28;--color-muted:#52635d;--color-background:#f3f7f5;--color-surface:#fff;--color-border:#becbc5;--color-danger:#a12828;--color-warning:#795100;--color-primary-hover:#104331;--color-accent-surface:#e4efe9;--color-danger-surface:#fff0ef;--color-warning-surface:#fff6df;--font-body:"Segoe UI", system-ui, sans-serif;--font-mono:ui-monospace, monospace;--radius-control:.5rem;--radius-panel:1rem;--space-section:2rem;--page-max:75rem}*{box-sizing:border-box}html{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;scrollbar-gutter:stable;scrollbar-color:var(--color-muted) var(--color-background);scrollbar-width:auto}body{background:var(--color-background);color:var(--color-ink);font:1rem/1.55 var(--font-body);margin:0}button,input,select,textarea{font:inherit}a{color:var(--color-primary)}:focus-visible{outline:3px solid var(--color-primary);outline-offset:3px}h1,h2,h3,p{margin-top:0}h1{letter-spacing:-.025em;font-size:clamp(1.55rem,3vw,2.15rem);line-height:1.2}h2{font-size:1.25rem;line-height:1.35}p{color:var(--color-muted)}small{font-size:.85rem}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.65}.button{border-radius:var(--radius-control);border:1px solid #0000;justify-content:center;align-items:center;gap:.5rem;min-height:44px;padding:.65rem 1rem;font-weight:600;transition:background-color .12s;display:inline-flex}.button--primary{background:var(--color-primary);color:var(--color-surface)}.button--primary:hover:not(:disabled){background:var(--color-primary-hover)}.button--secondary{background:var(--color-surface);color:var(--color-primary);border-color:var(--color-border)}.button--secondary:hover:not(:disabled){background:var(--color-accent-surface)}.button--danger{background:var(--color-danger);color:var(--color-surface)}.field{gap:.35rem;min-width:0;display:grid}.field label{font-weight:600}.field input,.field select,.field textarea{border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);width:100%;min-height:46px;color:var(--color-ink);padding:.65rem .75rem}.field small{min-height:1.25em;color:var(--color-muted)}.field .field-error,[aria-invalid=true]{color:var(--color-danger);border-color:var(--color-danger)}textarea{resize:none;min-height:8rem}form{gap:1rem;display:grid}.status{border-left:4px solid var(--color-primary);background:var(--color-accent-surface);overflow-wrap:anywhere;margin-block:1rem;padding:.9rem 1rem}.status--error{border-color:var(--color-danger);background:var(--color-danger-surface)}.status--warning{border-color:var(--color-warning);background:var(--color-warning-surface)}.loading{justify-content:center;align-items:center;gap:.75rem;min-height:12rem;display:flex}.spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:1rem;height:1rem;animation:1s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.auth-layout{grid-template-columns:1fr 1fr;align-items:center;gap:4rem;max-width:70rem;min-height:100svh;margin:auto;padding:clamp(1rem,4vw,4rem);display:grid}.auth-intro{border-left:6px solid var(--color-primary);padding-left:1.5rem}.brand-name{color:var(--color-primary);font-size:1.1rem;font-weight:700}.auth-intro h1{font-size:clamp(2rem,5vw,3.5rem)}.auth-note{color:var(--color-muted);margin-top:3rem}.auth-panel,.panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-panel);padding:clamp(1rem,3vw,2rem)}.auth-panel>.button{margin-top:1rem}.app-shell{grid-template-columns:15rem minmax(0,1fr);min-height:100svh;display:grid}.sidebar{background:var(--color-surface);border-right:1px solid var(--color-border);padding:1.5rem 1rem}.sidebar nav{gap:.35rem;margin-top:2rem;display:grid}.sidebar nav a{border-radius:var(--radius-control);min-height:46px;color:var(--color-muted);align-items:center;gap:.65rem;padding:.65rem .8rem;text-decoration:none;display:flex}.sidebar nav a[aria-current=page]{background:var(--color-accent-surface);color:var(--color-primary);font-weight:650}.main-area{min-width:0}.topbar{border-bottom:1px solid var(--color-border);background:var(--color-surface);justify-content:space-between;align-items:center;gap:1rem;padding:1rem 2rem;display:flex}.topbar span{display:block}.topbar small{color:var(--color-muted)}.content{max-width:var(--page-max);margin:auto;padding:clamp(1rem,3vw,2rem)}.page-heading{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.5rem;display:flex}.page-heading h1{margin-bottom:.5rem}.stack{gap:1.5rem;display:grid}.form-grid,.two-columns{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.form-limit{max-width:42rem}.actions{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.attendance-pair{border-block:1px solid var(--color-border);grid-template-columns:1fr 1fr;margin:1.5rem 0;display:grid}.attendance-side{gap:.5rem;padding:1.5rem 1rem;display:grid}.attendance-side+div{border-left:1px solid var(--color-border)}.actual-time{font-variant-numeric:tabular-nums;letter-spacing:-.03em;font-size:2.2rem}.meta{color:var(--color-muted);font-size:.9rem}.badge{background:var(--color-accent-surface);color:var(--color-primary);border-radius:.3rem;padding:.2rem .6rem;font-size:.85rem;display:inline-block}.table-scroll{border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);overflow:auto}table{border-collapse:collapse;text-align:left;width:100%}caption{text-align:left;padding:1rem;font-weight:650}th,td{border-top:1px solid var(--color-border);vertical-align:top;overflow-wrap:anywhere;min-width:8rem;padding:.85rem 1rem}th{background:var(--color-background);font-size:.9rem}td{font-variant-numeric:tabular-nums}.empty{text-align:center;padding:2rem}.pagination{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.6rem;margin-top:1rem;display:flex}.pagination span{margin-right:auto}.filters{flex-wrap:wrap;align-items:flex-end;gap:1rem;margin-bottom:1rem;display:flex}.filters .field{flex:1;min-width:10rem}dialog{border:1px solid var(--color-border);border-radius:var(--radius-panel);width:min(38rem,100vw - 2rem);max-height:90svh;color:var(--color-ink);padding:1.5rem;overflow:auto;box-shadow:0 12px 40px #0003}dialog::backdrop{background:#132b2480}.dialog-head{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.5rem;display:flex}.camera-preview{aspect-ratio:3/4;object-fit:contain;background:var(--color-ink);border-radius:var(--radius-control);width:100%;max-height:24rem}.skip-link{background:var(--color-surface);z-index:10;padding:1rem;position:absolute;top:-10rem;left:1rem}.skip-link:focus{top:1rem}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:var(--color-background)}::-webkit-scrollbar-thumb{background:var(--color-muted);border:3px solid var(--color-background);border-radius:6px}::-webkit-scrollbar-thumb:hover{background:var(--color-primary)}@media (max-width:760px){.auth-layout{grid-template-columns:1fr;align-content:center;gap:2rem}.auth-note{margin-top:1rem}.app-shell{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid var(--color-border);padding:1rem}.sidebar nav{flex-wrap:wrap;gap:.25rem;margin-top:1rem;display:flex}.sidebar nav a{padding:.5rem;font-size:.9rem}.sidebar nav svg{display:none}.topbar{padding:1rem}.form-grid,.two-columns{grid-template-columns:1fr}.attendance-side{padding:1rem .5rem}.actual-time{font-size:1.7rem}.content{padding-bottom:calc(2rem + env(safe-area-inset-bottom))}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}@media (forced-colors:active){html{scrollbar-color:auto}.button,.status{border:1px solid buttontext}}
