:root{--bg:#f6f7f9;--surface:#ffffff;--surface-2:#f1f3f6;--border:#e2e5ea;--text:#1a1d23;--muted:#667085;--primary:#1d4ed8;--primary-text:#ffffff;--danger:#b42318;--danger-bg:#fef3f2;--warn:#b54708;--warn-bg:#fffaeb;--ok:#067647;--ok-bg:#ecfdf3;--radius:8px;--shadow:0 1px 2px rgba(16,24,40,0.06),0 4px 12px rgba(16,24,40,0.06);color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#111318;--surface:#1a1d24;--surface-2:#232730;--border:#2f3440;--text:#e8eaee;--muted:#98a2b3;--primary:#4f7cff;--danger:#f97066;--danger-bg:#3a1a18;--warn:#fdb022;--warn-bg:#36270f;--ok:#47cd89;--ok-bg:#0f2e20;color-scheme:dark}}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--text);font:14px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}h1{font-size:22px;margin:0 0 16px}h2{font-size:16px;margin:0 0 12px}.shell{display:flex;min-height:100vh}.sidebar{width:220px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);padding:16px 12px}.sidebar .topbar{display:flex;align-items:center;gap:8px}.sidebar .brand{font-weight:700;padding:4px 8px 16px;flex:1 1}.sidebar .menu-toggle,.sidebar .topbar-cta{display:none}.sidebar .menu{display:flex;flex-direction:column;gap:4px;height:calc(100% - 44px)}.sidebar .desktop-cta{margin-bottom:8px;justify-content:center}.sidebar .menu a:not(.btn){color:var(--text);padding:8px 10px;border-radius:6px}.sidebar .menu a:not(.btn):hover{background:var(--surface-2);text-decoration:none}.sidebar .menu a.active{background:var(--surface-2);font-weight:600}.sidebar .me{margin-top:auto;padding:8px;font-size:12px;color:var(--muted);border-top:1px solid var(--border)}.main{flex:1 1;padding:24px;min-width:0}@media (max-width:800px){.shell{flex-direction:column}.sidebar{width:auto;border-right:0;border-bottom:1px solid var(--border);padding:8px 12px;position:-webkit-sticky;position:sticky;top:0;z-index:40}.sidebar .brand{padding:0;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.sidebar .menu-toggle,.sidebar .topbar-cta{display:inline-flex;white-space:nowrap}.sidebar .desktop-cta{display:none}.sidebar .menu{display:none;height:auto;padding-top:8px}.sidebar.open .menu{display:flex;max-height:calc(100vh - 60px);overflow-y:auto}.sidebar .menu a:not(.btn){padding:12px 10px}.sidebar .me{margin-top:8px}.main{padding:16px}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.grid{display:grid;grid-gap:16px;gap:16px}.grid-2{grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr))}.stats{display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(auto-fit,minmax(min(160px,100%),1fr))}.stat .label{color:var(--muted);font-size:12px}.stat .value{font-size:clamp(16px,4.6vw,20px);white-space:nowrap;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.spread{justify-content:space-between}.muted{color:var(--muted)}.small{font-size:12px}.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;padding:7px 12px;font:inherit;cursor:pointer}.btn:hover{background:var(--surface-2);text-decoration:none}.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--primary-text)}.btn-primary:hover{background:var(--primary);filter:brightness(1.08)}.btn-danger{color:var(--danger);border-color:var(--danger)}.btn:disabled{opacity:.5;cursor:not-allowed}label{display:block;font-weight:500;margin-bottom:4px}input,select,textarea{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);font:inherit}textarea{min-height:70px}.form-grid{display:grid;grid-gap:14px;gap:14px;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr))}.field-hint{color:var(--muted);font-size:12px;margin-top:2px}.field-warn{background:var(--warn-bg);color:var(--warn);border-radius:6px;padding:8px 10px;margin-top:6px;font-size:13px}.field-warn ul{margin:4px 0;padding-left:18px}.field-ok{color:var(--ok);font-size:13px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;background:var(--surface)}td,th{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:top}th{font-size:12px;color:var(--muted);font-weight:600;background:var(--surface-2)}td.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.badge{display:inline-block;padding:1px 8px;border-radius:999px;font-size:12px;font-weight:500;background:var(--surface-2);white-space:nowrap}.badge-PENDING{background:var(--warn-bg);color:var(--warn)}.badge-CONFIRMED{background:#e0eaff;color:#2446b8}.badge-CHECKED_IN{background:var(--ok-bg);color:var(--ok)}.badge-CHECKED_OUT{background:var(--surface-2);color:var(--muted)}.badge-CANCELLED,.badge-REJECTED{background:var(--danger-bg);color:var(--danger)}@media (prefers-color-scheme:dark){.badge-CONFIRMED{background:#1c2a52;color:#9db4ff}}.alert{border-radius:var(--radius);padding:10px 12px;margin-bottom:12px}.alert-error{background:var(--danger-bg);color:var(--danger)}.alert-warn{background:var(--warn-bg);color:var(--warn)}.alert-ok{background:var(--ok-bg);color:var(--ok)}.alert ul{margin:0;padding-left:18px}.dot{display:inline-block;width:10px;height:10px;border-radius:50%}.cal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.cal-head{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.cal-head div{padding:6px 8px;font-size:12px;color:var(--muted);font-weight:600;background:var(--surface-2)}.cal-head div,.cal-week{border-bottom:1px solid var(--border)}.cal-week{position:relative}.cal-week:last-child{border-bottom:0}.cal-day{padding:4px 8px;font-size:12px;border-right:1px solid var(--border)}.cal-day:nth-child(7){border-right:0}.cal-day.out{color:var(--muted);background:var(--surface-2);opacity:.6}.cal-day.today span{background:var(--primary);color:var(--primary-text);border-radius:999px;padding:1px 6px}.cal-events{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-auto-rows:22px;grid-row-gap:2px;row-gap:2px;padding-bottom:6px}.cal-event{position:relative;margin:0 3px;padding:2px 6px;border-radius:4px;font-size:12px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;border-left:3px solid rgba(0,0,0,.25)}.cal-event:hover{filter:brightness(1.1);text-decoration:none}.cal-event.st-PENDING{opacity:.9;background-image:repeating-linear-gradient(45deg,transparent 0 6px,rgba(255,255,255,.35) 6px 12px)}.cal-event.st-CHECKED_OUT{opacity:.55}.cal-event.cont-l{margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.cal-event.cont-r{margin-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.tooltip{position:fixed;z-index:50;width:300px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px;font-size:13px;pointer-events:none}.tooltip dl{display:grid;grid-template-columns:110px 1fr;grid-gap:2px 8px;gap:2px 8px;margin:8px 0 0}.tooltip dt{color:var(--muted)}.tooltip dd{margin:0}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px}.legend span{display:inline-flex;align-items:center;gap:6px}dl.detail{display:grid;grid-template-columns:170px 1fr;grid-gap:6px 12px;gap:6px 12px;margin:0}dl.detail dt{color:var(--muted)}dl.detail dd{margin:0}.timeline{list-style:none;padding:0;margin:0}.timeline li{padding:8px 0;border-bottom:1px solid var(--border)}.timeline li:last-child{border-bottom:0}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:16px}.login-card{width:100%;max-width:380px}.mobile-only{display:none}.agenda-item{display:grid;grid-gap:4px;gap:4px;padding:10px 12px;margin-bottom:8px;color:var(--text);background:var(--surface);border:1px solid var(--border);border-left:4px solid;border-radius:var(--radius)}.agenda-item:hover{text-decoration:none;background:var(--surface-2)}@media (hover:none){.tooltip{display:none}}@media (max-width:640px){h1{font-size:20px}.mobile-only{display:block}.badge{white-space:normal}.cal-head div{padding:4px 2px;text-align:center;font-size:11px}.cal-day{padding:2px 3px;font-size:11px}.cal-event{margin:0 1px;padding:1px 3px;font-size:10px;text-overflow:clip}input,select,textarea{font-size:16px}.btn{min-height:40px}form.row>input,form.row>select{flex:1 1 140px;width:auto!important}form.row>.btn{flex:1 1 100%;justify-content:center}dl.detail{grid-template-columns:110px 1fr}table.responsive,table.responsive tbody,table.responsive td,table.responsive tr{display:block;width:100%}table.responsive thead{display:none}table.responsive{background:transparent}table.responsive tr{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:8px 12px;margin-bottom:10px}table.responsive td{border:0;padding:4px 0;display:grid;grid-template-columns:96px 1fr;grid-gap:8px;gap:8px;text-align:left}table.responsive td:before{content:attr(data-label);color:var(--muted);font-size:12px;padding-top:2px}table.responsive td[data-label=""]:before{content:none}table.responsive td[data-label=""]{display:block}table.responsive td.num{text-align:left}.table-wrap:has(>table.responsive){overflow:visible}table.sticky-first td:first-child,table.sticky-first th:first-child{position:-webkit-sticky;position:sticky;left:0;background:var(--surface);z-index:1;min-width:150px}table.sticky-first th:first-child{background:var(--surface-2)}}