@charset "UTF-8";@font-face{font-family:Fraunces;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/fraunces-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/fraunces-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/fraunces-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/fraunces-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/fraunces-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/fraunces-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/fraunces-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/fraunces-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/fraunces-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--accent: #2563eb;--accent-hover: #1d4ed8;--accent-ink: #ffffff;--text: #1a1a1a;--muted: #667085;--border: #e3e6eb;--bg: #ffffff;--bg-subtle: #f7f8fa;--radius: 6px;--danger: #dc2626;--danger-hover: #b91c1c;--danger-ink: #ffffff;--night-line: rgba(255, 255, 255, .09);--night-text: #d7deee;--night-muted: #8b96b5;--gold: #e8a33d;--gold-soft: #fbf1de;--present: #1c7a3f;--present-soft: #e7f5eb;--absent: #c0392b;--absent-soft: #fbeae8;--tile-bg: #cfe3dc;--tile-bg-hover: #c0d9d0;--tile-icon: #35594e;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--text);line-height:1.5}*{box-sizing:border-box}body{margin:0;background:var(--bg)}.page{max-width:64rem;margin:0 auto}h1{font-size:1.5rem;margin:0 0 1rem}h2{font-size:1.15rem;margin-top:1.75rem}h3{font-size:1rem}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}fieldset{border:none;padding:0;margin:0}legend{padding:0}.form{display:flex;flex-direction:column;gap:.75rem;margin:1rem 0 1.5rem}.form .row{display:flex;flex-wrap:wrap;gap:1rem}.form label{display:flex;flex-direction:column;font-size:.8rem;color:var(--muted);gap:.3rem}input,select{padding:.45rem .55rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.95rem;background:#fff;color:var(--text)}select{appearance:none;padding-right:2rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23667085' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .6rem center;background-size:14px;cursor:pointer}input:focus,select:focus{outline:2px solid color-mix(in srgb,var(--accent) 40%,transparent);outline-offset:1px;border-color:var(--accent)}.actions{display:flex;gap:.75rem;flex-wrap:wrap}button{padding:.45rem .95rem;border:1px solid var(--border);border-radius:var(--radius);background:#fff;color:var(--text);cursor:pointer;font-size:.9rem;font-weight:500;transition:background .12s,border-color .12s}button:hover:not(:disabled){background:var(--bg-subtle);border-color:#c4c9d2}button:disabled{opacity:.5;cursor:not-allowed}button[type=submit]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}button[type=submit]:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn-add{background:#c5dddb;border-color:#a1b1b8;color:var(--text)}.btn-add:hover:not(:disabled){background:color-mix(in srgb,#c5dddb 80%,black);border-color:color-mix(in srgb,#a1b1b8 80%,black)}.scroll{overflow-x:auto}.grid{border-collapse:collapse;width:100%}.grid th,.grid td{text-align:left;padding:.55rem .8rem;border-bottom:1px solid var(--border);font-size:.9rem}.grid th{font-weight:600;color:var(--muted);background:var(--bg-subtle)}.grid tbody tr:hover{background:color-mix(in srgb,var(--accent) 5%,transparent)}.link{border:none;background:none;padding:0;color:var(--accent);font-size:.75rem;text-decoration:underline;cursor:pointer}.link+.link{margin-left:.6rem}.notice{padding:.65rem .85rem;background:#fff6e0;border:1px solid #e6c869;border-radius:var(--radius);font-size:.9rem}.hint{font-size:.82rem;color:var(--muted)}.success{color:#1c7a3f;font-weight:600}.revoke{display:flex;gap:.4rem;align-items:center}.revoke input{padding:.3rem .45rem;border:1px solid var(--border);border-radius:4px;font-size:.85rem}.row-actions{display:flex;gap:.5rem}.form label.check{flex-direction:row;align-items:center;gap:.4rem;color:var(--text)}.confirm{margin-top:.5rem;padding:.85rem 1rem;border:1px solid #c9d8f0;background:#f1f6ff;border-radius:var(--radius);max-width:32rem}.confirm p{margin:.25rem 0}.confirm-email{font-weight:700;font-size:1.05rem}.panel{margin-top:1.5rem;padding:1rem 1.25rem;border:1px solid var(--border);border-radius:8px;background:var(--bg-subtle)}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:1rem}.panel h3{font-size:1rem;margin-top:1.25rem}.avatar{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:50%;background:var(--tile-bg);color:var(--tile-icon);font-weight:700;font-size:.8rem;letter-spacing:.02em;flex-shrink:0}.avatar.lg{width:3.25rem;height:3.25rem;font-size:1.05rem}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}.status-dot.present{background:var(--present)}.status-dot.tardy{background:var(--gold)}.status-dot.absent{background:var(--absent)}.status-dot.unaccounted{background:var(--muted)}.status-pill{display:inline-flex;align-items:center;gap:.4rem;font-size:.78rem;font-weight:600;padding:.2rem .6rem;border-radius:100px;background:var(--present-soft);color:var(--present)}.status-pill.absent{background:var(--absent-soft);color:var(--absent)}
