:root{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#15242a;background:#f5f7f7;font-size:15px;--muted:#526568;--border:#dce5e5;--accent:#064e8b}
*{box-sizing:border-box}
body{margin:0;min-height:100vh;display:grid;grid-template-columns:230px minmax(0,1fr)}
aside{background:#064e8b;color:#d4e4e0;min-height:100vh;padding:26px 17px;display:flex;flex-direction:column;gap:37px}
.brand{display:flex;align-items:center;gap:11px;padding:0 6px;color:white;text-decoration:none;font-size:25px;font-weight:760;letter-spacing:.04em}
.brand img{width:43px;height:43px;object-fit:contain}
.brand small{display:block;font-size:11px;letter-spacing:0;font-weight:500;color:#b8cfcb;margin-top:4px}
nav{display:grid;gap:5px} nav a{padding:12px 14px;color:inherit;border-radius:8px;text-decoration:none} nav a:hover,nav a[aria-current=page]{background:#24669f;color:#fff} nav a[aria-current=page]{box-shadow:inset 3px 0 #d7aa56}
.local{margin-top:auto;padding:0 7px;color:#bed4cf;font-size:12px}.local span{display:inline-block;width:7px;height:7px;border-radius:100%;background:#72c3a6;margin-right:6px}
main{padding:34px clamp(18px,4vw,55px);max-width:1450px;width:100%;min-width:0}
header{margin-bottom:23px}.eyebrow{font-size:11px;letter-spacing:.14em;font-weight:750;color:#52706f}h1{font-size:clamp(28px,4vw,39px);margin:9px 0 7px;letter-spacing:-.035em}h2{font-size:18px;margin:0 0 14px}h3{font-size:15px}p{line-height:1.55;color:var(--muted);margin:0 0 14px}header p{margin:0}
.panel{border:1px solid var(--border);background:white;border-radius:13px;padding:19px;margin:0 0 17px;box-shadow:0 2px 5px #143c3c08}
.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.metric{margin:0 0 17px}.metric strong{display:block;font-size:27px;margin-top:5px}.metric span{color:var(--muted)}
.toolbar,.actions,.fields{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.toolbar{justify-content:space-between;margin-bottom:12px}.toolbar h2{margin:0}.fields{align-items:end}
button,input,select{font:inherit}button{cursor:pointer;border:1px solid var(--border);border-radius:7px;padding:8px 11px;background:#fff;color:#183537}button:hover{background:#eaf2fa}button.primary{background:var(--accent);color:white;border-color:var(--accent)}button.primary:hover{background:#033d70}button:disabled{opacity:.5;cursor:wait}button.small{font-size:12px}
input,select{border:1px solid #bacaca;padding:8px;border-radius:7px;background:white;color:inherit;max-width:100%;min-width:0}
label{display:grid;gap:5px;color:#324c50;font-size:13px}input[type=search]{width:min(100%,360px)}input[type=file]{max-width:345px}
.table{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left}th,td{padding:10px 9px;border-bottom:1px solid #e8eeee;vertical-align:middle}th{background:#f3f7f6;color:#405b5b;font-size:12px;white-space:nowrap}td{font-size:13px}td.num{font-variant-numeric:tabular-nums;white-space:nowrap}tbody tr:last-child td{border:0}
.badge{background:#edf1f1;color:#385454;border-radius:20px;padding:4px 8px;font-size:11px;white-space:nowrap}.badge.posted,.badge.match{background:#e0f1e9;color:#165e48}.badge.reserved,.badge.review{background:#fff0d8;color:#764800}
.empty{padding:18px 0;margin:0}.link{color:#064e8b;text-decoration:underline;background:transparent;border:0;padding:0}
#notice{padding:12px;border:1px solid #add8c7;background:#e6f5ed;border-radius:8px;margin-bottom:13px;color:#184c3d}#notice.error{background:#fff0eb;border-color:#e3b9af;color:#843525}
dialog{width:min(780px,95vw);max-height:88vh;overflow:auto;border:1px solid var(--border);border-radius:13px;padding:22px;color:inherit}dialog::backdrop{background:#052a4c80}.close{float:right;padding:2px 9px;font-size:20px}.lineform{padding:12px 0;border-top:1px solid var(--border);margin-top:12px}.lineform select{max-width:390px}.lineform input[type=text]{width:105px}
@media(max-width:760px){body{display:block}aside{min-height:0;gap:15px;padding:14px}nav{display:flex;flex-wrap:wrap;gap:3px}nav a{padding:6px 8px}.local{display:none}main{padding:20px 12px}.metrics{gap:6px}.metric{padding:10px}}

nav a.nested{padding-left:24px;font-size:13px;color:#c6ded8}
.mode-links{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:15px}
.mode-links a,.toolbar>a{color:var(--accent);text-underline-offset:3px}
.menu-grid{display:grid;grid-template-rows:repeat(7,auto);grid-auto-flow:column;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;list-style:none;padding:0;margin:0}
.menu-grid li>*{display:flex;align-items:center;gap:12px;padding:12px 14px;min-height:66px;height:100%;width:100%;border:1px solid var(--border);border-radius:10px;background:#fff;color:#183537;text-align:left;text-decoration:none}
.menu-grid li>a:hover,.menu-grid li>button:hover{background:#eaf2fa;border-color:#8ebeb1}
.menu-grid .unavailable{background:#f4f6f6;color:#526568}
.menu-grid small{display:block;font-size:11px;margin-top:4px}
.menu-number{display:grid;place-items:center;flex:0 0 30px;height:30px;border-radius:8px;background:#e4f0eb;color:#215c52;font-weight:700;font-size:12px}
.menu-grid .unavailable .menu-number{background:#e8eded;color:#526568}
.filters{margin-bottom:14px}
.filters input{width:145px}
.filters input[type=checkbox]{width:auto}
.filters label.toggle{display:flex;align-items:center;padding-bottom:9px}
.filters select{max-width:360px}
.subtle{font-size:13px}
#summary-list h3{margin-top:18px}
@media(max-width:760px){.menu-grid{grid-template-rows:none;grid-auto-flow:row;grid-template-columns:1fr}nav a.nested{padding-left:9px}}
.workshop-switch{display:flex;align-items:center;gap:7px;margin-bottom:6px;font-weight:650}
.workshop-note{padding:10px 12px;border:1px solid #e5cfac;background:#fff6e5;color:#704a14;border-radius:8px;font-size:13px}
.workshop-error{color:#843525;font-weight:650}
#workshop-form{margin-top:16px}
details summary{cursor:pointer;color:var(--accent);margin:12px 0}
.account{display:grid;gap:7px;padding:8px 6px;color:white}.account[hidden]{display:none}.account small{color:#b8cfcb}
.account a{color:#d4e4e0}.account button{justify-self:start}
.auth-form{display:grid;gap:12px;max-width:390px}.auth-form button{justify-self:start}
.login-page nav{visibility:hidden}.login-page .local{display:none}
