:root{--color-paper:#f9f8f3;--color-surface:#ffffff;--color-ink:#222222;--color-muted:#777777;--color-green:#1a3c34;--color-green-hover:#142e28;--color-danger:#a63d3d;--color-duplicate:#b45309;--color-border:#e4e2da;--color-border-strong:#d4d2c8;--color-input-bg:#fbfaf6;--color-pill-bg:#f3f1ea;--color-success-bg:#f3f7f2;--color-success-border:#c5d4c8;--radius:8px}*{box-sizing:border-box}body{font-family:system-ui,sans-serif;line-height:1.5;margin:0;padding:0;background:var(--color-paper)}a,body{color:var(--color-ink)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--color-green);outline-offset:2px}.dashboard,.login-page{max-width:1080px;margin:0 auto;padding:1.75rem 1.25rem 3rem}.app-header,.dashboard-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap;margin-bottom:1.75rem}.brand{min-width:0}.brand-title,.dashboard-header h1,.login-page h1{margin:0;font-size:1.15rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.brand-subtitle{margin:.15rem 0 0;font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--color-muted);font-weight:500}.header-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.65rem}.attention-link,.header-nav-link{font-size:.875rem;font-weight:600;text-decoration:none;color:var(--color-ink)}.attention-link--active,.header-nav-link--alert{color:var(--color-duplicate)}.role-pill{display:inline-flex;align-items:center;background:var(--color-green);color:#fff;border-radius:999px;padding:.35rem .85rem;font-size:.75rem;font-weight:600;letter-spacing:.04em}.panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.1rem 1.15rem 1.2rem;margin-bottom:1.5rem}.section-rule{display:flex;align-items:baseline;gap:.75rem;margin:0 0 .9rem}.section-rule h2{margin:0;font-size:1.15rem}.section-rule-line{flex:1 1;border:none;border-top:1px solid var(--color-border);min-width:1.5rem}.section-rule-meta{font-size:.7rem;letter-spacing:.08em;white-space:nowrap}.day-heading,.section-rule-meta{text-transform:uppercase;color:var(--color-muted)}.day-heading{display:flex;align-items:center;gap:.75rem;margin:1.35rem 0 .65rem;font-size:.72rem;letter-spacing:.1em;font-weight:500}.day-heading:first-child{margin-top:0}.day-heading-line{flex:1 1;border:none;border-top:1px solid var(--color-border)}.form-grid{display:grid;grid-gap:.85rem 1rem;gap:.85rem 1rem}@media (min-width:700px){.form-grid{grid-template-columns:1fr 1fr}.form-grid .error,.form-grid>button[type=submit]{grid-column:1/-1}}label{display:grid;grid-gap:.35rem;gap:.35rem;font-size:.7rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--color-muted)}button,input,select,textarea{font:inherit;padding:.55rem .75rem}input,select,textarea{width:100%;background:var(--color-input-bg);border:1px solid var(--color-border-strong);border-radius:6px;color:var(--color-ink);text-transform:none;font-weight:400;letter-spacing:normal}button{cursor:pointer;width:-moz-fit-content;width:fit-content;border-radius:6px}.button,.google-sign-in-button{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:.5rem .95rem;border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-ink);font-weight:600;text-decoration:none}.button--primary,.google-sign-in-button{background:var(--color-green);border-color:var(--color-green);color:#fff}.button--primary:hover:not(:disabled),.google-sign-in-button:hover:not(:disabled){background:var(--color-green-hover);border-color:var(--color-green-hover)}.button--ghost,.button--secondary{background:var(--color-surface);border-color:var(--color-border-strong);color:var(--color-ink)}.button--danger-text,.danger-button{background:transparent;border:none;color:var(--color-danger);min-height:40px;padding:.4rem .15rem;font-weight:600}.button--mark-left{min-height:44px;min-width:7.5rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.button--wide{width:100%}button:disabled{opacity:.65;cursor:default}@media (max-width:699px){.button--wide,.form-grid .button--primary{width:100%}}table{width:100%;border-collapse:collapse}td,th{border-bottom:1px solid var(--color-border);padding:.7rem .55rem;text-align:left;vertical-align:top}th{font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--color-muted);font-weight:600}.ledger-table .time-cell{font-size:1.15rem;font-weight:700;white-space:nowrap}.ledger-panel{overflow:hidden}.error{color:var(--color-danger)}.empty{color:var(--color-muted);margin:0}.duplicate-warning{display:block;margin-top:.2rem;color:var(--color-duplicate);font-size:.8rem;font-weight:600}.recurring-permission-badge{display:block;margin-top:.2rem;color:var(--color-green);font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.actions-cell{min-width:10rem}.manage-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem}.edit-details{width:-moz-fit-content;width:fit-content}.edit-details summary{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:.4rem .75rem;border:1px solid var(--color-border-strong);border-radius:6px;background:var(--color-surface);cursor:pointer;font-weight:600;letter-spacing:normal;text-transform:none;color:var(--color-ink);list-style:none}.edit-details summary::-webkit-details-marker{display:none}.compact-form{margin-top:.75rem;max-width:32rem}.inactive-row,.status-inactive{color:var(--color-muted)}.status-inactive{font-weight:600}.success-banner{background:var(--color-success-bg);border:1px solid var(--color-success-border);border-radius:var(--radius);padding:.75rem 1rem;margin-bottom:1rem}.helper-text{color:var(--color-muted);margin-top:-.25rem;margin-bottom:1rem}.original-email-panel{border-left:4px solid var(--color-green)}.email-meta{display:grid;grid-gap:.5rem;gap:.5rem;margin:0 0 1rem}.email-meta dt{font-weight:600}.email-meta dd{margin:0}.email-body{white-space:pre-wrap;background:var(--color-input-bg);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem;margin:0;font-family:inherit}.attention-reason{margin-top:0}.target-picker{display:grid;grid-gap:1rem;gap:1rem}.target-search-fields,.target-selection{border:1px solid var(--color-border);border-radius:var(--radius);padding:.75rem}.target-selection{display:grid;grid-gap:.5rem;gap:.5rem}.target-option{font-weight:400;display:flex;gap:.5rem;align-items:flex-start;text-transform:none;letter-spacing:normal;font-size:.95rem;color:var(--color-ink)}.login-list{list-style:none;padding:0;display:grid;grid-gap:.75rem;gap:.75rem}.login-section{margin-bottom:1.5rem}.login-actions{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center}.student-identity{min-width:0}.student-identity-primary{display:flex;flex-wrap:wrap;align-items:baseline;gap:.4rem .5rem}.student-name{font-weight:700;color:var(--color-ink)}.student-name--struck{text-decoration:line-through}.student-identity--muted .class-pill,.student-identity--muted .student-name{color:var(--color-muted)}.class-pill{display:inline-flex;align-items:center;background:var(--color-pill-bg);border:1px solid var(--color-border);border-radius:999px;padding:.05rem .5rem;font-size:.75rem;font-weight:600;color:var(--color-ink)}.status-pill{display:inline-flex;flex-direction:column;align-items:flex-start;gap:.1rem;border:1px solid var(--color-border-strong);border-radius:999px;padding:.15rem .65rem;background:var(--color-surface)}.status-pill-label{font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;font-weight:600}.status-pill-detail{font-size:.75rem;letter-spacing:normal;text-transform:none;font-weight:600}.status-pill--inactive,.status-pill--muted,.status-pill-detail{color:var(--color-muted)}.departure-card-list{display:grid;grid-gap:.75rem;gap:.75rem}.departure-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;grid-gap:1rem 1.25rem;gap:1rem 1.25rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem 1.15rem}.departure-card-time{margin:0;font-size:1.7rem;font-weight:700;color:var(--color-green);line-height:1}.departure-card-mode{margin:.2rem 0 0;font-size:.9rem}.departure-card--left,.departure-card-mode{color:var(--color-muted)}.departure-card--left .departure-card-time{color:var(--color-muted);font-weight:600}.left-meta{text-align:right}.left-meta-label{margin:0;font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--color-muted)}.left-meta-time{margin:.15rem 0 0;font-size:1.15rem;font-weight:700;color:var(--color-ink)}.page-heading{margin:0 0 1rem;font-size:1.25rem}@media (max-width:699px){.departure-card{grid-template-columns:1fr;justify-items:start}.departure-card .button--mark-left,.departure-card .left-meta{width:100%;text-align:left}.ledger-table thead{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.ledger-table,.ledger-table tbody,.ledger-table td,.ledger-table tr{display:block;width:100%}.ledger-table tr{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:.85rem;margin-bottom:.65rem}.ledger-table td{border:none;display:grid;grid-template-columns:7rem 1fr;align-items:start;padding:.3rem 0}.ledger-table td:before{content:attr(data-label);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--color-muted);font-weight:600;padding-top:.2rem}.ledger-table td.actions-cell{grid-template-columns:1fr}.ledger-table td.actions-cell:before{display:none}.compact-form,.edit-details{width:100%;max-width:none}.manage-actions{width:100%}}@media (min-width:700px) and (max-width:899px){.ledger-table td,.ledger-table th{padding:.55rem .4rem}.manage-actions{max-width:14rem}}