.app-menu{background:var(--c-bg);border-bottom:1px solid var(--c-line)}.app-menu-list{display:flex;flex-wrap:wrap;gap:var(--s-1);max-width:var(--page-width);margin:0 auto;padding:0 var(--s-5)}.app-menu-item{display:inline-flex;align-items:center;min-height:42px;padding:0 18px;border-bottom:2px solid transparent;margin-bottom:-1px;color:var(--c-muted);font-size:15px;font-weight:700;text-decoration:none;white-space:nowrap}.app-menu-item:hover{color:var(--c-ink)}.app-menu-item[aria-current=page]{color:var(--c-brand-ink);border-bottom-color:var(--c-brand)}.app-menu-badge{display:none}.app-menu-group{display:contents}.app-menu-group-head{display:none}.app-menu-group-items{display:contents}@media(max-width:639px){.app-menu{position:fixed;left:0;right:0;bottom:0;z-index:30;background:color-mix(in srgb,var(--c-bg) 88%,transparent);-webkit-backdrop-filter:saturate(180%) blur(14px);backdrop-filter:saturate(180%) blur(14px);border-top:1px solid var(--c-line);border-bottom:none;box-shadow:var(--shadow-up);padding-bottom:env(safe-area-inset-bottom)}.app-menu-list{flex-wrap:nowrap;justify-content:space-around;gap:0;padding:0}.app-menu-item{flex:1 1 0;min-width:0;flex-direction:column;justify-content:center;gap:3px;min-height:50px;padding:6px 4px 4px;border-bottom:none;margin-bottom:0;font-size:11px;font-weight:600;letter-spacing:.01em;transition:color .12s ease}.app-menu-item:active{background:var(--c-bg-soft)}.app-menu-badge{display:grid;place-items:center;width:34px;height:34px;border-radius:var(--radius-pill);background:var(--c-ink);color:var(--c-on-fill);line-height:0;transition:background .12s ease}.app-menu-badge svg{stroke-width:2.4}.app-menu-item[aria-current=page]{color:var(--c-brand)}.app-menu-item[aria-current=page] .app-menu-badge{background:var(--c-brand)}.app-menu-label{line-height:1.1}.app-menu--dense .app-menu-item{padding:6px 2px 4px;font-size:9.5px;letter-spacing:0}.app-menu--dense .app-menu-badge{width:32px;height:32px}.app-menu--dense .app-menu-label{white-space:normal;text-align:center;line-height:1.06}}@media(min-width:1180px){.app-menu{flex:0 0 240px;align-self:flex-start;position:sticky;top:calc(var(--bar-height) + var(--s-5));background:var(--c-bg);border:1px solid var(--c-line);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px}.app-menu-list{flex-direction:column;flex-wrap:nowrap;gap:2px;max-width:none;margin:0;padding:0}.app-menu-item{justify-content:flex-start;gap:10px;min-height:40px;padding:0 10px;border-bottom:none;margin-bottom:0;border-radius:var(--radius-sm);color:var(--c-ink);font-weight:600;font-size:14px}.app-menu-item:hover{background:var(--c-bg-soft)}.app-menu-item[aria-current=page]{background:var(--c-brand-soft);border-bottom-color:transparent}.app-menu-badge{display:grid;place-items:center;width:22px;height:22px;color:var(--c-muted)}.app-menu-item[aria-current=page] .app-menu-badge{color:var(--c-brand-ink)}.app-menu-item--child{min-height:36px}.app-menu-item--child .app-menu-badge{display:none}.app-menu-group{display:block;margin-top:10px}.app-menu-group:first-child{margin-top:0}.app-menu-group-head{display:flex;align-items:center;gap:10px;margin:0;padding:6px 10px 4px;color:var(--c-muted);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.app-menu-group-items{display:flex;flex-direction:column;gap:2px;margin-left:21px;padding-left:7px;border-left:1px solid var(--c-line)}}.connection-strip{position:sticky;top:var(--bar-height);z-index:35;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--s-3);padding:var(--s-2) var(--s-4);background:var(--c-danger-soft);color:var(--c-ink);border-top:3px solid var(--c-danger);border-bottom:1px solid var(--c-line-strong);font-size:14px}@media(min-width:640px){.connection-strip{padding-left:var(--s-5);padding-right:var(--s-5)}}.connection-strip.back{background:var(--c-brand-soft);color:var(--c-brand-ink);border-top-color:var(--c-brand)}.connection-strip-words{flex:1 1 8em;min-width:0;margin:0}.connection-strip-why{display:block;font-size:13px}.connection-strip button{flex:0 0 auto;min-height:var(--tap-min);padding:0 var(--s-3);border:1px solid var(--c-line-control);border-radius:var(--radius-sm);background:var(--c-bg);color:var(--c-ink);font-family:inherit;font-size:inherit;font-weight:600;cursor:pointer}.connection-strip button:hover{background:var(--c-bg-soft)}@media(max-width:639px){.connection-strip button{min-height:var(--tap-phone)}}.school-switcher{display:flex;gap:var(--s-2);padding:var(--s-4)}.school-switcher a{display:flex;align-items:center;font-size:13px;padding:0 var(--s-3);min-height:var(--tap-min);border-radius:var(--radius-sm);color:var(--c-brand);text-decoration:none}.school-switcher a[aria-current=page]{background:var(--c-brand-soft);color:var(--c-brand-ink);font-weight:600}@media(max-width:820px){.school-switcher a{min-height:var(--tap-phone)}}.app-shell-bar{position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);flex-wrap:wrap;padding:var(--s-3) var(--s-5);padding-top:calc(var(--s-3) + env(safe-area-inset-top));background:var(--c-brand);box-shadow:var(--shadow-sm)}.app-shell-bar :focus-visible{outline-color:var(--c-on-fill)}.app-shell-brand{display:flex;align-items:center;gap:var(--s-2);min-width:0;overflow:hidden}.app-shell-mark{display:block;flex:0 0 auto;border-radius:var(--radius-sm);box-shadow:0 0 0 1px #ffffff2e}.app-shell-word{color:var(--c-on-fill);font-size:20px;font-weight:700;letter-spacing:.01em;white-space:nowrap}.app-shell-tenant{display:none;min-width:0;overflow:hidden;padding-left:10px;margin-left:2px;border-left:1px solid rgba(255,255,255,.28);color:var(--c-on-fill);opacity:.82;font-size:13px;white-space:nowrap;text-overflow:ellipsis}.app-shell-bar .school-switcher{display:none;padding:0}.app-shell-bar .school-switcher a{color:var(--c-brand-soft)}.app-shell-bar .school-switcher a[aria-current=page]{background:var(--c-brand);color:var(--c-on-fill)}.app-shell-who{display:none;flex:0 0 auto;align-items:center;gap:var(--s-3);font-size:14px}.app-shell-name{color:var(--c-on-fill);font-size:14px;font-weight:600;white-space:nowrap}.app-shell-role{display:inline-flex;align-items:center;padding:var(--s-1) var(--s-3);border-radius:var(--radius-pill);background:#ffffff2e;color:var(--c-on-fill);font-size:13px;font-weight:600;white-space:nowrap}.app-shell-signout-failed{color:var(--c-on-fill);font-size:13px;white-space:nowrap}.app-shell-signout{all:unset;box-sizing:border-box;display:inline-flex;align-items:center;min-height:36px;padding:0 14px;border:1px solid rgba(255,255,255,.35);border-radius:var(--radius-pill);background:#ffffff14;color:var(--c-on-fill);font-size:14px;font-weight:600;white-space:nowrap;cursor:pointer}.app-shell-signout:hover{background:#ffffff2e}@media(min-width:820px){.app-shell-tenant,.app-shell-who,.app-shell-bar .school-switcher{display:flex}}.app-shell-page{padding:var(--s-5);min-width:0}@media(min-width:1180px){.app-shell-body{display:flex;align-items:flex-start;gap:var(--s-5);padding:var(--s-5);max-width:var(--page-width-wide);margin:0 auto}.app-shell-page{flex:1 1 auto;padding:0;min-width:0}.app-shell-page .app-shell-column{max-width:none;margin:0}}.app-shell-column{max-width:var(--page-width);margin:0 auto}.app-shell-page .card-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--s-4);margin-bottom:var(--s-4)}.app-shell-page .card-head h1{margin:0}.app-shell-page .row-actions{display:inline-flex;align-items:center;flex-wrap:nowrap;gap:var(--s-2)}.app-shell-page .row-actions button{padding:0 var(--s-2);white-space:nowrap}.app-shell-page .row-actions a .badge{margin-left:var(--s-2)}.app-shell-page .card{background:var(--c-bg);border:1px solid var(--c-line);border-radius:var(--radius);padding:var(--s-5);box-shadow:var(--shadow);min-width:0}.app-shell-page .card+.card{margin-top:var(--s-5)}.app-shell-page h1,.app-shell-page h2,.app-shell-page h3{color:var(--c-ink);margin:0 0 var(--s-2);letter-spacing:-.01em}.app-shell-page h1{font-size:19px}.app-shell-page h2{font-size:18px}.app-shell-page h3{font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--c-muted);margin-bottom:var(--s-3)}.app-shell-page a{color:var(--c-brand)}.app-shell-page button,.app-shell-page a.button{font-family:inherit;font-size:inherit;line-height:inherit;cursor:pointer;min-height:var(--tap-phone);padding:0 var(--s-4);border:1px solid var(--c-line-control);border-radius:var(--radius-sm);background:var(--c-bg);color:var(--c-ink)}.app-shell-page button:hover,.app-shell-page a.button:hover{background:var(--c-bg-soft)}.app-shell-page a.button{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.app-shell-page button:disabled{color:var(--c-muted);cursor:not-allowed}.app-shell-page button.brand:disabled,.app-shell-page button.mini.approve:disabled,.app-shell-page button.mini.reject:disabled{background:var(--c-bg);border-color:var(--c-line);color:var(--c-muted)}.app-shell-page button.brand{background:var(--c-brand);border-color:var(--c-brand);color:var(--c-on-fill);font-weight:600}.app-shell-page button.brand:hover{background:var(--c-brand-ink);border-color:var(--c-brand-ink)}.app-shell-page button.ghost{background:var(--c-bg)}.app-shell-page button.ghost:hover{background:var(--c-bg-soft)}.app-shell-page .mini{min-height:var(--tap-min);padding:0 var(--s-3);font-size:13px;font-weight:700}.app-shell-page .mini.approve{background:var(--c-brand);border-color:var(--c-brand);color:var(--c-on-fill)}.app-shell-page .mini.approve:hover{background:var(--c-brand-ink);border-color:var(--c-brand-ink)}.app-shell-page .mini.reject{background:var(--c-bg);border-color:var(--c-danger-line);color:var(--c-danger)}.app-shell-page .mini.reject:hover{background:var(--c-danger-soft)}.app-shell-page input:not([type=checkbox]):not([type=radio]),.app-shell-page select{width:100%;font:inherit;min-height:48px;padding:0 var(--s-3);border:1px solid var(--c-line-control);border-radius:var(--radius-sm);background:var(--c-bg);color:var(--c-ink)}.app-shell-page input:focus,.app-shell-page select:focus{border-color:var(--c-brand)}.app-shell-page input[type=checkbox],.app-shell-page input[type=radio]{width:18px;height:18px;min-height:0;margin:0}.app-shell-page label,.app-shell-page .field-label{display:block;font-size:14px;font-weight:600;color:var(--c-ink);margin-bottom:6px}.app-shell-page .field{margin-bottom:16px}.app-shell-page fieldset{margin:0 0 var(--s-4);padding:var(--s-4);border:1px solid var(--c-line);border-radius:var(--radius-sm)}.app-shell-page fieldset>legend{padding:0 var(--s-2);margin-left:calc(var(--s-2) * -1);font-size:14px;font-weight:600;color:var(--c-ink)}.app-shell-page fieldset label{display:inline-flex;align-items:center;gap:var(--s-2);margin:0 var(--s-2) var(--s-2) 0;padding:0 var(--s-3);min-height:var(--tap-phone);border:1px solid var(--c-line-control);border-radius:var(--radius-pill);font-weight:500}.app-shell-page table{width:100%;border-collapse:collapse}.app-shell-page th,.app-shell-page td{text-align:left;padding:var(--s-3);border-bottom:1px solid var(--c-line);font-size:14px}.app-shell-page th{color:var(--c-muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.app-shell-page .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width:639px){.app-shell-page .table-wrap.stacks-on-phone table,.app-shell-page .table-wrap.stacks-on-phone tbody,.app-shell-page .table-wrap.stacks-on-phone tr,.app-shell-page .table-wrap.stacks-on-phone td{display:block;width:100%}.app-shell-page .table-wrap.stacks-on-phone thead{display:none}.app-shell-page .table-wrap.stacks-on-phone tr{border:1px solid var(--c-line);border-radius:var(--radius-sm);padding:var(--s-2) var(--s-3);margin-bottom:var(--s-3);background:var(--c-bg)}.app-shell-page .table-wrap.stacks-on-phone td{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-2) var(--s-3);padding:var(--s-2) 0;border-bottom:none;overflow-wrap:anywhere}.app-shell-page .table-wrap.stacks-on-phone td[data-label]:before{content:attr(data-label);flex:none;color:var(--c-muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.app-shell-page .table-wrap.stacks-on-phone td:last-child{padding-top:var(--s-3)}.app-shell-page .table-wrap.stacks-on-phone td:last-child:not([data-label]){justify-content:flex-end}.app-shell-page .table-wrap.stacks-on-phone .row-actions{flex-wrap:wrap;justify-content:flex-end}}.app-shell-page .empty{padding:var(--s-4) 0;text-align:center;color:var(--c-muted)}.app-shell-page .chip{display:inline-block;padding:3px 9px;border-radius:6px;background:var(--c-brand-soft);color:var(--c-brand-ink);font-size:12px;font-weight:700;letter-spacing:.01em;white-space:nowrap}.app-shell-page .chip-quiet{background:var(--c-bg-soft);color:var(--c-muted)}.app-shell-page .chip-sm{padding:2px 7px;font-size:11px}.app-shell-page .name-with-mark{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 var(--s-2)}.app-shell-page .chip-soft{background:var(--c-bg-sink);color:var(--c-body);font-variant-numeric:tabular-nums}.app-shell-page .chip-danger{background:var(--c-danger-soft);color:var(--c-danger)}.app-shell-page .badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--radius-pill);background:var(--c-bg-sink);color:var(--c-body);font-size:12px;font-weight:600;white-space:nowrap}.app-shell-page .badge:before{content:"";width:6px;height:6px;border-radius:var(--radius-pill);background:currentColor;opacity:.7}.app-shell-page .badge.to-PENDING,.app-shell-page .badge.locked{background:var(--c-bg-sink);color:var(--c-muted)}.app-shell-page .badge.to-APPROVED,.app-shell-page .badge.submitted,.app-shell-page .badge.CONFIRMED{background:var(--c-brand-soft);color:var(--c-brand-ink)}.app-shell-page .badge.to-REJECTED{background:var(--c-danger-soft);color:var(--c-danger)}.app-shell-page .badge.outstanding{background:var(--c-warn-soft);color:var(--c-warn)}.app-shell-page .badge.CANCELLED{background:var(--c-due-overdue-soft);color:var(--c-due-overdue)}.app-shell-page .due{display:inline-flex;align-items:center;gap:6px;font-variant-numeric:tabular-nums}.app-shell-page .due-tag{padding:1px 6px;border-radius:var(--radius-pill);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.03em}.app-shell-page .due.soon{color:var(--c-due-soon)}.app-shell-page .due.soon .due-tag{background:var(--c-due-soon-soft);color:var(--c-due-soon)}.app-shell-page .due.overdue{color:var(--c-due-overdue)}.app-shell-page .due.overdue .due-tag{background:var(--c-due-overdue-soft);color:var(--c-due-overdue)}.app-shell-page .row-muted td{color:var(--c-muted)}.app-shell-page .muted-hint{margin:0 0 var(--s-3);color:var(--c-muted);font-size:13px}.app-shell-page .muted-hint.sm{margin:var(--s-1) 0 0;font-size:12px}.app-shell-page .form-grid{display:flex;flex-direction:column;gap:14px}.app-shell-page .form-grid .field{margin-bottom:0}@media(min-width:640px){.app-shell-page .form-grid.two-col{display:grid;grid-template-columns:1fr 1fr;column-gap:20px;row-gap:14px}.app-shell-page .form-grid.two-col>.span-2,.app-shell-page .form-grid.two-col>.modal-actions,.app-shell-page .form-grid.two-col>[role=alert]{grid-column:1 / -1}}.app-shell-page .cat-chips{display:flex;flex-wrap:wrap;gap:6px}.app-shell-page .cat-chip{min-height:var(--tap-phone);padding:0 var(--s-3);border:1px solid var(--c-line-control);border-radius:var(--radius-pill);background:var(--c-bg);color:var(--c-ink);font-family:inherit;font-size:13px;font-weight:700;letter-spacing:.01em;cursor:pointer}.app-shell-page .cat-chip:hover{border-color:var(--c-brand)}.app-shell-page .cat-chip.on{background:var(--c-brand);border-color:var(--c-brand);color:var(--c-on-fill)}@media(max-width:639px){.app-shell-page button,.app-shell-page a.button{border-radius:var(--radius-pill)}.app-shell-page .mini{min-height:var(--tap-phone)}}@media(max-width:560px){.app-shell-bar{padding:10px var(--s-4);padding-top:calc(10px + env(safe-area-inset-top))}.app-shell-page{padding:var(--s-4)}.app-shell-page .card{padding:18px}}.app-shell-footer{max-width:var(--page-width);margin:0 auto;padding:0 var(--s-5) var(--s-5);color:var(--c-muted);font-size:12px;text-align:center}.app-shell-build{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}@media(max-width:639px){.app-shell-footer{padding-bottom:calc(var(--s-5) + var(--bottom-menu-height) + env(safe-area-inset-bottom))}}.language-switcher{display:flex;gap:var(--s-2)}.language-switcher button{display:inline-flex;align-items:center;gap:var(--s-2);font:inherit;font-size:13px;padding:0 var(--s-3);min-height:var(--tap-min);border:1px solid var(--c-line-control);border-radius:var(--radius-sm);background:var(--c-bg);color:var(--c-ink);cursor:pointer}.language-switcher-flag{display:block;border:1px solid var(--c-line-strong)}.language-switcher button[aria-pressed=true]{background:var(--c-brand-soft);color:var(--c-brand-ink);font-weight:600}@media(max-width:820px){.language-switcher button{min-height:var(--tap-phone)}}.auth-screen{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:var(--s-5)}.auth-card{width:100%;max-width:420px;background:var(--c-bg);border:1px solid var(--c-line);border-radius:var(--radius);padding:var(--s-5);box-shadow:var(--shadow)}.auth-logo{display:flex;flex-direction:column;align-items:center;margin:0 0 var(--s-5);text-align:center}.auth-logo img{width:52px;height:52px;border-radius:14px;box-shadow:var(--shadow);margin-bottom:12px}.auth-logo b{color:var(--c-brand);font-size:26px;letter-spacing:.01em}.auth-logo p{margin:2px 0 0;color:var(--c-muted);font-size:14px}.auth-heading{margin:0 0 var(--s-4);color:var(--c-ink);font-size:18px;text-align:center}.auth-text{margin:0 0 var(--s-4);color:var(--c-body);font-size:14px;text-align:center}.auth-field{display:block;margin-bottom:var(--s-4);font-size:14px;font-weight:600;color:var(--c-ink)}.auth-field input{display:block;width:100%;margin-top:6px;min-height:48px;padding:0 var(--s-3);font:inherit;border:1px solid var(--c-line-control);border-radius:var(--radius-sm);background:var(--c-bg);color:var(--c-ink)}.auth-field input:focus{border-color:var(--c-brand)}.auth-field-toggle{display:flex;align-items:center;min-height:var(--tap-phone);gap:var(--s-2);margin:calc(-1 * var(--s-2)) 0 var(--s-4);font-size:14px;color:var(--c-body)}.auth-field-toggle input{width:20px;height:20px}.auth-submit{display:block;width:100%;min-height:var(--tap-phone);padding:0 var(--s-4);font:inherit;font-weight:600;color:var(--c-on-fill);background:var(--c-cta);border:1px solid var(--c-cta);border-radius:var(--radius-sm);cursor:pointer}.auth-submit:hover{background:var(--c-cta-hover);border-color:var(--c-cta-hover)}.auth-submit:disabled{cursor:not-allowed}.auth-error{margin:0 0 var(--s-4);padding:var(--s-3);border:1px solid var(--c-danger);border-radius:var(--radius-sm);background:var(--c-danger-soft);color:var(--c-danger);font-size:14px;font-weight:600}.auth-hint{margin:var(--s-5) 0 0;font-size:14px;color:var(--c-muted);text-align:center}.auth-hint a,.auth-hint button{display:inline-flex;align-items:center;justify-content:center;min-height:var(--tap-min);padding:0 var(--s-3);color:var(--c-brand)}@media(max-width:820px){.auth-hint a,.auth-hint button{min-height:var(--tap-phone)}}.auth-hint button{font:inherit;border:none;background:none;cursor:pointer}.auth-hint button:disabled{cursor:not-allowed}.auth-hint a[aria-disabled=true]{cursor:not-allowed}.auth-language-switcher{display:flex;justify-content:center;margin-top:var(--s-5);padding-top:var(--s-5);border-top:1px solid var(--c-line)}.auth-screen--start{align-items:flex-start}.auth-text--left{text-align:left}.auth-subheading{margin:var(--s-5) 0 var(--s-2);color:var(--c-ink);font-size:15px;font-weight:700;text-align:left}.auth-field-group{margin-bottom:var(--s-4);font-size:14px;font-weight:600;color:var(--c-ink)}.auth-field-hint{margin-top:var(--s-2);color:var(--c-muted);font-size:13px}.auth-field-error{display:block;margin-top:6px;color:var(--c-danger);font-size:13px;font-weight:600}.auth-field--bad input{border-color:var(--c-danger)}.auth-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.auth-chip{min-width:var(--tap-phone);min-height:var(--tap-phone);padding:0 var(--s-3);border:1px solid var(--c-line-control);border-radius:var(--radius-pill);background:var(--c-bg);color:var(--c-ink);font:inherit;font-size:13px;font-weight:700;letter-spacing:.01em;cursor:pointer}.auth-chip.on{background:var(--c-brand);border-color:var(--c-brand);color:var(--c-on-fill)}.auth-consent{display:flex;align-items:flex-start;gap:var(--s-3);min-height:var(--tap-phone);margin-bottom:var(--s-4);padding:var(--s-3);border:1px solid var(--c-line);border-radius:var(--radius-sm);background:var(--c-bg-soft);font-size:14px;font-weight:400;color:var(--c-body)}.auth-consent input{width:20px;height:20px;margin-top:2px}.auth-consent--bad{border-color:var(--c-danger);background:var(--c-danger-soft)}.auth-list{padding-left:var(--s-5);color:var(--c-muted);font-size:13px}.auth-submit--quiet{background:var(--c-bg);color:var(--c-brand);border-color:var(--c-brand)}.auth-submit--quiet:hover{background:var(--c-brand);color:var(--c-on-fill)}.admin-page{min-height:100vh;min-height:100dvh;background:var(--c-bg-sink);padding:var(--s-5)}.admin-page-column{max-width:var(--page-width);margin:0 auto}.admin-page h1{margin:0;color:var(--c-ink);font-size:24px;letter-spacing:-.01em}.admin-page-header{display:flex;justify-content:space-between;align-items:center;gap:var(--s-3);margin:0 0 var(--s-5)}.admin-page-signout{display:flex;align-items:center;gap:var(--s-2)}.admin-card{background:var(--c-bg);border:1px solid var(--c-line);border-radius:var(--radius);padding:var(--s-5);box-shadow:var(--shadow);min-width:0}.admin-card+.admin-card{margin-top:var(--s-5)}.admin-card h2{margin:0 0 var(--s-4);color:var(--c-ink);font-size:19px}.admin-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.admin-table-wrap table{width:100%;border-collapse:collapse}.admin-table-wrap th,.admin-table-wrap td{text-align:left;padding:var(--s-3);border-bottom:1px solid var(--c-line);font-size:14px}.admin-table-wrap th{color:var(--c-muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.admin-empty{padding:var(--s-4) 0;text-align:center;color:var(--c-muted)}.admin-demo-form{margin:0 0 var(--s-5);max-width:360px}.admin-demo-form-row{display:flex;gap:var(--s-2)}.admin-demo-form-row input{flex:1}.admin-demo-form-row button{flex:none;font:inherit;padding:0 var(--s-3);border:1px solid var(--c-line-control);border-radius:var(--radius-sm);background:var(--c-bg);color:var(--c-ink);cursor:pointer}.admin-demo-handover{margin:var(--s-4) 0 0;padding:var(--s-3);border:1px solid var(--c-line);border-radius:var(--radius-sm);background:var(--c-bg-soft)}.admin-page button.brand{background:var(--c-brand);border:none;border-radius:var(--radius-sm);color:var(--c-on-fill);font:inherit;font-weight:600;min-height:var(--tap-min);padding:0 var(--s-4);cursor:pointer}.admin-page button.brand:hover{background:var(--c-brand-ink)}.admin-page button.brand:disabled{cursor:not-allowed}.admin-code-cell{display:flex;align-items:center;gap:var(--s-2)}.admin-pause-action{display:flex;gap:var(--s-2);align-items:center}.admin-pause-action select{font:inherit;font-size:12px;padding:0 var(--s-2);border:1px solid var(--c-line-control);border-radius:var(--radius-sm);background:var(--c-bg);color:var(--c-ink);min-height:var(--tap-min)}.admin-row-action{flex:none;font:inherit;font-size:12px;padding:0 var(--s-2);border:1px solid var(--c-line-control);border-radius:var(--radius-sm);background:var(--c-bg);color:var(--c-ink);cursor:pointer;min-height:var(--tap-min)}.admin-row-action:hover{background:var(--c-bg-soft)}.admin-card .auth-field select{display:block;width:100%;margin-top:var(--s-2);min-height:var(--tap-phone);padding:0 var(--s-3);font:inherit;border:1px solid var(--c-line-control);border-radius:var(--radius-sm);background:var(--c-bg);color:var(--c-ink)}.admin-card .auth-submit{width:auto;padding:0 var(--s-5)}.waiting{display:flex;flex-direction:column;gap:var(--s-3);padding:var(--s-3) 0}.waiting-said{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.waiting-row{display:block;height:14px;border-radius:var(--radius-sm);background:linear-gradient(90deg,var(--c-bg-soft),var(--c-bg-sink),var(--c-bg-soft));background-size:300% 100%;animation:waiting-sweep 1.4s linear infinite}.waiting-row:last-child{width:64%}@keyframes waiting-sweep{0%{background-position:150% 0}to{background-position:-150% 0}}@media(prefers-reduced-motion:reduce){.waiting-row{background:var(--c-bg-soft);animation:none}}.demo-school{margin:0 0 var(--s-3);color:var(--c-ink);font-size:18px;text-align:center}.demo-choose{margin:var(--s-5) 0 var(--s-3);color:var(--c-ink);font-size:14px;font-weight:600;text-align:center}.demo-roles{display:flex;flex-direction:column;gap:var(--s-2)}.demo-role{min-height:var(--tap-phone);padding:0 var(--s-3);font:inherit;font-weight:600;color:var(--c-ink);background:var(--c-bg);border:1px solid var(--c-line-control);border-radius:var(--radius-sm);cursor:pointer}.demo-role:hover{background:var(--c-brand-soft);border-color:var(--c-brand);color:var(--c-brand-ink)}.demo-role:disabled{cursor:not-allowed}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:var(--s-4)}.app-shell-page .dashboard-tile{display:flex;flex-direction:column;gap:var(--s-2);min-height:112px;padding:var(--s-4);border:1px solid var(--c-line);border-left:3px solid var(--c-line);border-radius:var(--radius-sm);background:var(--c-bg);color:var(--c-ink);text-decoration:none}.app-shell-page .dashboard-tile:hover{background:var(--c-bg-soft);border-color:var(--c-brand)}.app-shell-page .dashboard-tile--urgent{border-left-color:var(--c-cta)}.dashboard-tile-label{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--c-muted)}.dashboard-tile-figure{display:flex;align-items:baseline;gap:var(--s-2)}.dashboard-tile-value{font-size:30px;font-weight:800;line-height:1.05;color:var(--c-ink)}.dashboard-tile--urgent .dashboard-tile-value{color:var(--c-cta)}.dashboard-tile-unit{font-size:13px;font-weight:600;color:var(--c-muted)}.dashboard-tile-hint{margin-top:auto;font-size:13px;line-height:1.45;color:var(--c-muted)}.dashboard-courses{margin-top:var(--s-5)}.dashboard-course-list{display:flex;flex-direction:column;gap:var(--s-2);margin:0;padding:0;list-style:none}.dashboard-course{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-4);border:1px solid var(--c-line);border-radius:var(--radius-sm);background:var(--c-bg)}.dashboard-course-instructor{color:var(--c-ink);font-weight:600}.setup{margin-bottom:var(--s-5);padding:var(--s-4);border:1px solid var(--c-line);border-left:3px solid var(--c-cta);border-radius:var(--radius-sm);background:var(--c-bg)}.setup--done{border-left-color:var(--c-brand)}.setup-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-3);margin-bottom:var(--s-1)}.setup-head h2{font-size:16px;color:var(--c-ink)}.setup-count{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--c-muted);white-space:nowrap}.setup-lead{margin-bottom:var(--s-3);font-size:13px;color:var(--c-muted)}.setup-rows{display:flex;flex-direction:column;gap:var(--s-2);margin:0;padding:0;list-style:none}.app-shell-page .setup-row{display:flex;align-items:center;gap:var(--s-3);min-height:var(--tap-phone);padding:var(--s-2) var(--s-3);border:1px solid var(--c-line);border-radius:var(--radius-sm);background:var(--c-bg);color:var(--c-ink);text-decoration:none}.app-shell-page .setup-row:hover{background:var(--c-bg-soft);border-color:var(--c-brand)}.setup-mark{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:24px;height:24px;border:2px solid var(--c-line-control);border-radius:var(--radius-pill);color:var(--c-on-fill)}.setup-row--done .setup-mark{border-color:var(--c-brand);background:var(--c-brand)}.setup-row--done{background:var(--c-bg-soft)}.setup-row--done .setup-row-title{color:var(--c-body);font-weight:400}.setup-row-text{display:flex;flex-direction:column;min-width:0}.setup-row-title{font-size:14px;font-weight:700}.setup-row-desc{font-size:13px;line-height:1.4;color:var(--c-muted)}.setup-row-go{margin-left:auto;color:var(--c-muted)}li.setup-extra{margin-top:var(--s-3);padding-top:var(--s-3);border-top:1px solid var(--c-line)}.app-shell-page .setup-row--extra{padding-left:calc(var(--s-3) + 24px + var(--s-3))}.app-shell-page .setup-away,.app-shell-page .setup-reopen{min-height:var(--tap-min);font-size:13px;color:var(--c-brand);border:none;background:none;padding:0;cursor:pointer}@media(max-width:639px){.app-shell-page .setup-row{align-items:flex-start}.app-shell-page .setup-row--done{align-items:center}.app-shell-page .setup-away,.app-shell-page .setup-reopen{min-height:var(--tap-phone)}}body.has-dialog{overflow:hidden;padding-right:var(--scrollbar-width, 0px)}.app-shell-page .modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:var(--s-4);background:var(--c-scrim)}.app-shell-page .modal{width:100%;max-width:560px;max-height:calc(100vh - 32px);overflow-y:auto;background:var(--c-bg);border-radius:var(--radius);box-shadow:var(--shadow)}.app-shell-page .modal.wide{max-width:760px}.app-shell-page .modal:focus{outline:none}.app-shell-page .modal-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);padding:var(--s-4) var(--s-5);border-bottom:1px solid var(--c-line)}.app-shell-page .modal-head h2{margin:0}.app-shell-page .modal-close{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;padding:0;font-family:inherit;display:inline-flex;align-items:center;justify-content:center;width:var(--tap-min);height:var(--tap-min);border-radius:var(--radius-sm);color:var(--c-muted);font-size:22px;line-height:1;cursor:pointer}.app-shell-page .modal-close:hover{background:var(--c-bg-soft)}.app-shell-page .modal-body{padding:var(--s-5)}.app-shell-page .modal-actions{display:flex;justify-content:flex-end;gap:var(--s-3);margin:var(--s-4) calc(-1 * var(--s-5)) calc(-1 * var(--s-5));padding:14px 20px;border-top:1px solid var(--c-line)}.app-shell-page .modal-actions .brand,.app-shell-page .modal-actions .ghost{min-height:42px}@media(max-width:639px){.app-shell-page .modal-actions .brand,.app-shell-page .modal-actions .ghost{min-height:var(--tap-phone)}}.msg-split{display:flex;flex-direction:column;gap:var(--s-5);min-width:0}.msg-split .card+.card{margin-top:0}@media(min-width:900px){.msg-split{flex-direction:row;align-items:flex-start}.msg-list-card{flex:0 0 320px;min-width:0}.msg-thread-card{flex:1 1 auto;min-width:0}}.msg-list{list-style:none;margin:0;margin-left:calc(-1 * var(--s-5));margin-right:calc(-1 * var(--s-5));padding:0}@media(min-width:900px){.msg-list{max-height:calc(100vh - var(--bar-height) - 160px);overflow-y:auto;overscroll-behavior:contain}}.msg-list-row{display:grid;grid-template-columns:1fr auto;align-items:center;gap:var(--s-1) var(--s-3);width:100%;min-height:var(--tap-phone);padding:var(--s-3) var(--s-5);border:none;border-bottom:1px solid var(--c-line);border-radius:0;background:none;text-align:left;text-decoration:none;cursor:pointer}.msg-list-row:hover{background:var(--c-bg-soft)}.msg-list-row[aria-current=page]{background:var(--c-brand-soft)}.msg-list-name{color:var(--c-ink);font-size:15px;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.msg-list-row.unread .msg-list-name{font-weight:700}.msg-list-when{color:var(--c-muted);font-size:12px;white-space:nowrap}.msg-list-last{grid-column:1;color:var(--c-muted);font-size:13px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.msg-list-last.never{font-style:italic}.msg-thread-card{display:flex;flex-direction:column}.msg-thread{flex:1 1 auto;display:flex;flex-direction:column;gap:var(--s-3);min-height:240px;padding:var(--s-1) 0 var(--s-4);max-height:calc(100vh - var(--bar-height) - var(--bottom-menu-height) - 272px - env(safe-area-inset-top) - env(safe-area-inset-bottom));overflow-y:auto;overscroll-behavior:contain}@media(min-width:900px){.msg-thread{max-height:calc(100vh - var(--bar-height) - 272px)}}.msg-earlier{align-self:center;flex:0 0 auto}.msg-line{max-width:78%;padding:var(--s-2) var(--s-3);border-radius:var(--radius);white-space:pre-wrap;overflow-wrap:anywhere;font-size:15px}.msg-line.from-office{align-self:flex-start;background:var(--c-brand-soft);color:var(--c-brand-ink)}.msg-line.from-instructor{align-self:flex-end;background:var(--c-bg-sink);color:var(--c-body)}.msg-when{display:block;margin-top:var(--s-1);font-size:12px;opacity:.8}.msg-read-mark{display:flex;align-items:center;gap:var(--s-3);margin:var(--s-1) 0;color:var(--c-muted);font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}.msg-read-mark:before,.msg-read-mark:after{content:"";flex:1 1 auto;height:1px;background:var(--c-line)}.msg-arrived{position:sticky;bottom:0;align-self:center;flex:0 0 auto}.msg-compose{flex:0 0 auto;display:flex;align-items:flex-end;gap:var(--s-3);padding-top:var(--s-3);border-top:1px solid var(--c-line)}.msg-compose textarea{flex:1 1 auto;width:100%;font:inherit;min-height:48px;max-height:120px;padding:var(--s-2) var(--s-3);border:1px solid var(--c-line-control);border-radius:var(--radius-sm);background:var(--c-bg);color:var(--c-ink);resize:none}.msg-compose textarea:focus{border-color:var(--c-brand)}.msg-compose button{flex:0 0 auto;min-height:48px}.msg-send-failed{flex:0 0 100%;margin:var(--s-2) 0 0;color:var(--c-danger);font-size:13px}.msg-back{display:inline-flex;align-items:center;min-height:var(--tap-phone)}@media(min-width:900px){.msg-back{display:none}}.app-shell-page .notification-ask{background:var(--c-brand-soft);border-color:var(--c-brand)}.notification-ask-title{margin:0;font-weight:600;color:var(--c-brand-ink)}.notification-ask-body{margin:var(--s-2) 0 0;color:var(--c-brand-ink)}.notification-ask-actions{display:flex;justify-content:flex-end;gap:var(--s-3);margin-top:var(--s-4)}@media(max-width:639px){.notification-ask-actions button{min-height:var(--tap-phone)}}.week-grid{margin-bottom:var(--s-4)}.week-grid__calendar{background:var(--c-bg);border:1px solid var(--c-line);border-radius:var(--radius);overflow:hidden;padding-bottom:var(--s-3)}.week-grid__daybar{display:grid;grid-template-columns:64px repeat(7,minmax(0,1fr));border-bottom:1px solid var(--c-line-strong)}.week-grid__grid{display:grid;grid-template-columns:64px minmax(0,1fr)}.week-grid__daybar-spacer{border-left:0}.week-grid__day-header{padding:var(--s-2) var(--s-2);font-size:13px;color:var(--c-body);border-left:1px solid var(--c-line);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.week-grid__day-header b{display:block;color:var(--c-ink);font-size:14px;font-weight:650;font-variant-numeric:tabular-nums}.week-grid__day-header--today{background:var(--c-brand-soft)}.week-grid__day-header--today b{color:var(--c-brand-ink)}.week-grid__grid{position:relative}.week-grid__hours{position:relative;border-right:1px solid var(--c-line)}.week-grid__hour-label{position:absolute;right:var(--s-2);transform:translateY(-.6em);font-size:12.5px;color:var(--c-muted);font-variant-numeric:tabular-nums}.week-grid__days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.week-grid__day{position:relative;border-left:1px solid var(--c-line)}.week-grid__day--weekend{background-color:var(--c-bg-soft)}.week-grid__day-body{position:relative;background-image:repeating-linear-gradient(to bottom,var(--c-line) 0,var(--c-line) 1px,transparent 1px,transparent 52px)}.week-grid__time-off{position:absolute;left:0;right:0;box-sizing:border-box;background-image:repeating-linear-gradient(-45deg,var(--c-bg-sink) 0,var(--c-bg-sink) 6px,var(--c-bg-soft) 6px,var(--c-bg-soft) 12px);border-top:1px solid var(--c-line-strong);border-bottom:1px solid var(--c-line-strong)}.week-grid__lesson{position:absolute;box-sizing:border-box;overflow:hidden;padding:var(--s-1) var(--s-2);border-radius:var(--radius-sm);border:1px solid var(--c-line-strong);color:var(--c-ink);display:flex;flex-direction:column;gap:1px;font-size:13px;line-height:1.35;cursor:default;container:lesson / inline-size}.week-grid__lesson-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s-1)}.week-grid__lesson-time{font-weight:650;font-variant-numeric:tabular-nums;order:2;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.week-grid__chip{order:1;flex:0 0 auto;padding:1px var(--s-1);border-radius:4px;font-size:12px;font-weight:700;letter-spacing:.02em;color:var(--c-on-fill)}.week-grid__outcome{order:1;flex:0 0 auto;line-height:0}.week-grid__lesson-student,.week-grid__lesson-car{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.week-grid__lesson-car{font-size:12.5px}.week-grid__lesson-car--none{font-style:italic}@media(max-width:639px){.week-grid__daybar,.week-grid__grid{grid-template-columns:56px minmax(0,1fr)}.week-grid__days{grid-template-columns:minmax(0,1fr)}.week-grid__hour-label{right:var(--s-1)}.week-grid__day-header:not(.week-grid__day-header--phone),.week-grid__day:not(.week-grid__day--phone){display:none}}@container lesson (max-width: 27px){.week-grid__outcome{margin-inline:auto}.week-grid__lesson-time,.week-grid__lesson-student,.week-grid__lesson-car{display:none}.week-grid__chip{flex:1 1 auto;margin-left:calc(-1 * var(--s-2));margin-right:calc(-1 * var(--s-2));padding-left:0;padding-right:0;border-radius:0;text-align:center;letter-spacing:0;line-height:1.1;overflow-wrap:anywhere}}.agenda-day+.agenda-day{margin-top:var(--s-5)}.agenda-day-head{margin:0 0 var(--s-2);font-size:15px;font-weight:800;color:var(--c-ink)}.agenda-list{display:flex;flex-direction:column;gap:var(--s-2);margin:0;padding:0;list-style:none}.agenda-item{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--s-3);padding:var(--s-3);border:1px solid var(--c-line);border-radius:var(--radius-sm);background:var(--c-bg)}.agenda-time{min-width:96px;font-weight:800;color:var(--c-ink)}.agenda-main{display:flex;flex-direction:column;gap:var(--s-1)}.agenda-instructor{font-weight:700;color:var(--c-ink)}.agenda-meta{display:flex;flex-wrap:wrap;gap:var(--s-3);font-size:13px;color:var(--c-muted)}.agenda-more{margin-top:var(--s-4)}.profile-name{font-size:17px;font-weight:600;color:var(--c-ink)}.profile-role{margin-top:0;color:var(--c-muted)}.profile-muted{margin-top:var(--s-2);color:var(--c-muted);font-size:14px}.profile-section{margin-top:var(--s-5);padding-top:var(--s-5);border-top:1px solid var(--c-line)}.profile-signout{margin-top:var(--s-5)}:root{--c-brand: #1f6f5c;--c-brand-ink: #12483b;--c-brand-soft: #e7f2ee;--c-cta: #c44a06;--c-cta-hover: #a83f05;--c-on-fill: #ffffff;--c-danger: #c0392b;--c-danger-soft: #fdecea;--c-danger-line: rgba(192, 57, 43, .35);--c-warn: #99651a;--c-warn-soft: #fdf3e2;--c-due-soon: #b35309;--c-due-soon-soft: #fff4e6;--c-due-overdue: #c92a2a;--c-due-overdue-soft: #ffe3e3;--c-ink: #1b1f24;--c-body: #3c444d;--c-muted: #636b77;--c-line: #dfe3e8;--c-line-strong: #cfd4dc;--c-line-control: #82868c;--c-bg: #ffffff;--c-bg-soft: #f6f8fa;--c-bg-sink: #eef1f4;--c-focus: #1971c2;--c-scrim: rgba(27, 31, 36, .5);--radius: 12px;--radius-sm: 8px;--radius-pill: 999px;--shadow: 0 1px 2px rgba(27, 31, 36, .05), 0 6px 20px rgba(27, 31, 36, .06);--shadow-sm: 0 1px 2px rgba(27, 31, 36, .06);--shadow-up: 0 -1px 2px rgba(27, 31, 36, .05);--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 24px;--s-6: 32px;--s-7: 48px;--tap-min: 36px;--tap-phone: 44px;--bar-height: 60px;--page-width: 1040px;--page-width-wide: 1320px;--bottom-menu-height: 58px;--w-phone: 640px;--w-wide: 820px}*{box-sizing:border-box}html{accent-color:var(--c-brand)}body{margin:0;background:var(--c-bg-sink);color:var(--c-body);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased}:focus-visible{outline:3px solid var(--c-focus);outline-offset:2px;border-radius:var(--radius-sm)}
