:root{font:16px/1.5 system-ui,sans-serif;color:#243d36;background:#f5f5ef;--ink:#234e40;--border:#dce1d8;--muted:#617269}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0}
.login-layout{display:grid;place-items:center;min-height:100vh;padding:1.2rem;background:radial-gradient(ellipse at top left,#e1ece3 0%,transparent 54%),#f5f5ef}
.login-card{width:min(100%,27rem);padding:clamp(1.4rem,5vw,2.3rem);background:#fff;border:1px solid var(--border);border-radius:1.2rem;box-shadow:0 18px 48px #234e4013}
.login-card .identity{margin-bottom:1.65rem}
.login-card .identity small{color:var(--muted)}
.login-card h1{font-size:clamp(1.7rem,6vw,2rem)}
.login-card form{display:grid;gap:.85rem;margin-top:1.25rem}
.login-card .text-button{border:0;color:var(--ink);text-decoration:underline}
#access-status{font-size:.9rem;color:var(--ink);margin:1rem 0 0}
#access-status:empty{display:none}
#access-status[data-error="true"]{color:#9e3025}
.shell{display:grid;grid-template-columns:14rem minmax(0,1fr);min-height:100vh}
.sidebar{display:flex;flex-direction:column;gap:2rem;background:#234e40;color:#fff;padding:1.5rem 1rem}
.identity{display:flex;align-items:center;gap:.65rem}.identity small{display:block;color:#dce1d8}
.monogram{display:grid;place-items:center;width:2.4rem;height:2.4rem;border-radius:.75rem;background:#eee8d7;color:#234e40;font-weight:800}
.brand{font-weight:750}.nav-label{font-size:.7rem;letter-spacing:.15em;color:#dce1d8;margin:0 0 .6rem}
.account{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:.5rem}
.account p{font-size:.85rem;color:#dce1d8;margin:0;overflow-wrap:anywhere}
.account button{background:transparent;color:#fff;border-color:#ffffff65;font-size:.85rem}
.account button:hover{background:#eee8d7;color:#234e40}
.sidebar nav button{display:block;width:100%;text-align:left;margin-bottom:.35rem;border-color:transparent;color:#fff;background:transparent}
.sidebar nav button:hover,.sidebar nav button[aria-pressed="true"]{background:#eee8d7;color:#234e40}
main{max-width:76rem;width:100%;margin:0 auto;padding:2.75rem clamp(1.25rem,4vw,3rem)}
.heading,.section-head,.actions{display:flex;align-items:center;justify-content:space-between;gap:1rem}
.eyebrow{letter-spacing:.13em;font-size:.75rem;font-weight:800;color:#16635a;margin:0}
h1{font-size:clamp(1.8rem,5vw,2.8rem);margin:.15rem 0;line-height:1.1}
h2{font-size:1.15rem;margin:0}.muted{color:var(--muted);margin:.6rem 0}
.filters,.schedule,dialog{background:white;border:1px solid var(--border);border-radius:1rem}
.filters{display:flex;align-items:end;flex-wrap:wrap;gap:1rem;margin:1.65rem 0 .7rem;padding:1rem}
.date-controls,.actions{display:flex;align-items:end;gap:.5rem}
label{display:grid;gap:.3rem;color:var(--muted);font-size:.85rem;font-weight:650}
button,select,input{font:inherit;border:1px solid #c5d8d1;border-radius:.55rem;min-height:2.6rem;background:#fff;padding:.45rem .75rem;color:#192f33}
button{cursor:pointer;font-weight:650;white-space:nowrap}
button:hover{background:#e9f4ef}.primary{background:var(--ink);color:#fff;border-color:var(--ink)}.primary:hover{background:#226659}
button:disabled{opacity:.55;cursor:default}
:focus-visible{outline:3px solid #1d8778;outline-offset:2px}
.section-head{padding:1rem 1.15rem}.section-head span,#notice{color:var(--muted);font-size:.9rem}
#notice:empty,#error:empty{display:none}#error{color:#a82b25}
.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left}
th,td{padding:.75rem 1rem;border-top:1px solid var(--border);vertical-align:middle}
th{background:#f6faf8;color:var(--muted);font-size:.83rem}
td small{display:block;color:var(--muted)}td button{margin:.15rem;font-size:.82rem}
.pill{display:inline-block;border-radius:1rem;background:#e5f4eb;color:#215948;font-size:.79rem;font-weight:650;padding:.2rem .55rem}
.cancelled{background:#fbece9;color:#8b3832}
#empty{padding:1rem;color:var(--muted)}
dialog{width:min(29rem,calc(100% - 2rem));padding:1.4rem;color:inherit}
dialog::backdrop{background:#142b29a0}
dialog label{margin:.65rem 0}.actions{justify-content:flex-end;margin-top:1rem}
@media(max-width:780px){.shell{grid-template-columns:minmax(0,1fr)}.sidebar{gap:.7rem;padding:1rem}.sidebar nav{display:flex;gap:.5rem}.sidebar nav button{width:auto}.nav-label,.private{display:none}}
@media(max-width:630px){.heading{align-items:flex-start;flex-direction:column}.date-controls{flex-wrap:wrap}main{padding-top:1.6rem}}
