:root{--vis-bg:#f6f7f9;--vis-surface:#fff;--vis-surface-raised:#fff;--vis-border:#e3e6ea;--vis-border-strong:#c9ced6;--vis-text:#16202b;--vis-text-secondary:#5a6572;--vis-text-muted:#5f6a75;--vis-text-invert:#fff;--vis-primary:#1f4d8f;--vis-primary-hover:#173c71;--vis-primary-soft:#e8eff9;--vis-success:#1a7047;--vis-success-soft:#e4f4ec;--vis-warning:#8a5d0f;--vis-warning-soft:#fdf3df;--vis-danger:#b3352f;--vis-danger-soft:#fbe9e8;--vis-info:#33608f;--vis-info-soft:#e9f1f9;--vis-font:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--vis-font-mono:ui-monospace, "SF Mono", "Cascadia Code", Menlo, monospace;--vis-text-xs:.75rem;--vis-text-sm:.85rem;--vis-text-md:.95rem;--vis-text-lg:1.15rem;--vis-text-xl:1.5rem;--vis-space-1:.25rem;--vis-space-2:.5rem;--vis-space-3:.75rem;--vis-space-4:1rem;--vis-space-5:1.5rem;--vis-space-6:2rem;--vis-radius-sm:6px;--vis-radius-md:10px;--vis-radius-lg:14px;--vis-shadow-sm:0 1px 2px #16202b0f;--vis-shadow-md:0 4px 14px #16202b14}*{box-sizing:border-box}body{font-family:var(--vis-font);font-size:var(--vis-text-md);color:var(--vis-text);background:var(--vis-bg);margin:0}.shell{grid-template-columns:232px 1fr;min-height:100vh;display:grid}.sidebar{background:var(--vis-surface);border-right:1px solid var(--vis-border);padding:var(--vis-space-4);gap:var(--vis-space-1);flex-direction:column;display:flex}.sidebar .brand{font-weight:700;font-size:var(--vis-text-lg);letter-spacing:.06em;padding:var(--vis-space-2) var(--vis-space-3);margin-bottom:var(--vis-space-3)}.sidebar .brand span{color:var(--vis-primary)}.sidebar a{padding:var(--vis-space-2) var(--vis-space-3);border-radius:var(--vis-radius-sm);color:var(--vis-text-secondary);font-size:var(--vis-text-sm);text-decoration:none;display:block}.sidebar a:hover{background:var(--vis-bg);color:var(--vis-text)}.sidebar a.active{background:var(--vis-primary-soft);color:var(--vis-primary);font-weight:600}.sidebar .spacer{flex:1}.main{padding:var(--vis-space-5) var(--vis-space-6);width:100%;max-width:1100px}.topbar{margin-bottom:var(--vis-space-5);justify-content:space-between;align-items:center;gap:var(--vis-space-3);display:flex}.topbar h1{font-size:var(--vis-text-xl);margin:0}.topbar .who{font-size:var(--vis-text-sm);color:var(--vis-text-secondary)}.card{background:var(--vis-surface);border:1px solid var(--vis-border);border-radius:var(--vis-radius-md);padding:var(--vis-space-5);box-shadow:var(--vis-shadow-sm)}.card+.card{margin-top:var(--vis-space-4)}.card h2{margin:0 0 var(--vis-space-3);font-size:var(--vis-text-lg)}.card h3{margin:var(--vis-space-4) 0 var(--vis-space-2);font-size:var(--vis-text-md)}.grid{gap:var(--vis-space-4);display:grid}.grid.cols-2{grid-template-columns:1fr 1fr}.grid.cols-4{grid-template-columns:repeat(4,1fr)}.stat{background:var(--vis-surface);border:1px solid var(--vis-border);border-radius:var(--vis-radius-md);padding:var(--vis-space-4)}.stat .label{font-size:var(--vis-text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--vis-text-muted)}.stat .value{margin-top:var(--vis-space-1);font-size:1.7rem;font-weight:700}button,.btn{font:inherit;border:1px solid var(--vis-border-strong);background:var(--vis-surface);color:var(--vis-text);border-radius:var(--vis-radius-sm);cursor:pointer;font-size:var(--vis-text-sm);padding:.45rem .9rem}button:hover{border-color:var(--vis-primary)}button.primary{background:var(--vis-primary);border-color:var(--vis-primary);color:var(--vis-text-invert);font-weight:600}button.primary:hover{background:var(--vis-primary-hover)}button.danger{color:var(--vis-danger);border-color:var(--vis-danger);background:var(--vis-surface)}button:disabled{opacity:.5;cursor:not-allowed}label.field{font-size:var(--vis-text-sm);color:var(--vis-text-secondary);margin-bottom:var(--vis-space-3);display:block}label.field>span{margin-bottom:var(--vis-space-1);color:var(--vis-text);font-weight:600;display:block}input,select,textarea{font:inherit;border:1px solid var(--vis-border-strong);border-radius:var(--vis-radius-sm);background:var(--vis-surface);width:100%;color:var(--vis-text);padding:.45rem .6rem}input:focus,select:focus,textarea:focus{outline:2px solid var(--vis-primary-soft);border-color:var(--vis-primary)}input[type=checkbox]{width:auto}input[type=color]{height:2.2rem;padding:.1rem}table{border-collapse:collapse;width:100%;font-size:var(--vis-text-sm)}th{text-align:left;font-size:var(--vis-text-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--vis-text-muted);padding:var(--vis-space-2) var(--vis-space-3);border-bottom:1px solid var(--vis-border)}td{padding:var(--vis-space-3);border-bottom:1px solid var(--vis-border)}tr:hover td{background:var(--vis-bg)}.badge{font-size:var(--vis-text-xs);border-radius:999px;padding:.15rem .55rem;font-weight:600;display:inline-block}.badge.confirmed,.badge.active,.badge.ok{background:var(--vis-success-soft);color:var(--vis-success)}.badge.waitlisted,.badge.draft,.badge.warn{background:var(--vis-warning-soft);color:var(--vis-warning)}.badge.cancelled,.badge.danger{background:var(--vis-danger-soft);color:var(--vis-danger)}.badge.info,.badge.pending{background:var(--vis-info-soft);color:var(--vis-info)}.badge.muted{background:var(--vis-bg);color:var(--vis-text-secondary)}.error-text{color:var(--vis-danger);font-size:var(--vis-text-sm);margin:var(--vis-space-2) 0}.muted{color:var(--vis-text-muted);font-size:var(--vis-text-sm)}.row{gap:var(--vis-space-3);align-items:center;display:flex}.row.between{justify-content:space-between}.row.wrap{flex-wrap:wrap}.tabs{gap:var(--vis-space-1);border-bottom:1px solid var(--vis-border);margin-bottom:var(--vis-space-4);display:flex}.tabs button{padding:var(--vis-space-2) var(--vis-space-3);color:var(--vis-text-secondary);background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0}.tabs button.active{color:var(--vis-primary);border-bottom-color:var(--vis-primary);font-weight:600}.style-cards{gap:var(--vis-space-2);margin-bottom:var(--vis-space-4);grid-template-columns:repeat(auto-fill,minmax(160px,1fr));display:grid}.style-cards .style-card{align-items:flex-start;gap:var(--vis-space-1);text-align:left;padding:var(--vis-space-3);border-radius:var(--vis-radius-md);font-size:var(--vis-text-sm);flex-direction:column;display:flex}.style-cards .style-card .muted{font-size:var(--vis-text-sm)}.style-cards .style-card.selected{border-color:var(--vis-primary);background:var(--vis-primary-soft);box-shadow:inset 0 0 0 1px var(--vis-primary)}.modal-backdrop{z-index:50;background:#16202b73;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--vis-surface);border-radius:var(--vis-radius-lg);box-shadow:var(--vis-shadow-md);padding:var(--vis-space-5);width:min(560px,92vw);max-height:85vh;overflow:auto}.login-wrap{justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{width:min(400px,92vw)}.charges li{padding:var(--vis-space-2) 0;border-bottom:1px dashed var(--vis-border);justify-content:space-between;list-style:none;display:flex}.charges{margin:var(--vis-space-3) 0;padding:0}.day-group{margin-bottom:var(--vis-space-4)}.day-group h2{font-size:var(--vis-text-sm);color:var(--vis-text-secondary);margin-bottom:var(--vis-space-2)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:100;background:var(--vis-primary);color:var(--vis-text-invert);border-radius:var(--vis-radius-sm);padding:.5rem .9rem;position:absolute;top:-3rem;left:.5rem}.skip-link:focus{top:.5rem}:focus-visible{outline:2px solid var(--vis-primary);outline-offset:2px}.sidenav{gap:var(--vis-space-1);flex-direction:column;display:flex}.mobilebar{display:none}.card.empty{text-align:center;padding:var(--vis-space-6) var(--vis-space-5)}.card.empty h2{margin:0 0 var(--vis-space-2)}.card.empty p{max-width:46ch;margin:0 auto var(--vis-space-4)}@media (width<=820px){.shell{display:block}.mobilebar{z-index:40;background:var(--vis-surface);border-bottom:1px solid var(--vis-border);padding:var(--vis-space-2) var(--vis-space-4);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.mobilebar .brand{letter-spacing:.06em;font-weight:700}.mobilebar .brand span{color:var(--vis-primary)}.sidebar{display:none}.menu-open .sidebar{z-index:30;border-right:none;display:flex;position:fixed;inset:3.2rem 0 0;overflow-y:auto}.sidebar>.brand{display:none}.sidebar a{padding:var(--vis-space-3);font-size:var(--vis-text-md)}.main{padding:var(--vis-space-4)}.topbar{flex-wrap:wrap}.grid.cols-2,.grid.cols-4{grid-template-columns:1fr 1fr}.card:has(>table){overflow-x:auto}table{min-width:560px}.modal{border-radius:var(--vis-radius-lg) var(--vis-radius-lg) 0 0;align-self:flex-end;width:100vw;max-height:92vh}.modal-backdrop{align-items:flex-end}input,select,textarea,button{font-size:16px}}@media (width<=480px){.grid.cols-2,.grid.cols-4{grid-template-columns:1fr}}.onboarding{margin-bottom:var(--vis-space-5)}.onboarding h2{margin:0 0 var(--vis-space-1)}.onboarding.done{padding:var(--vis-space-3) var(--vis-space-4);background:var(--vis-success-soft);border-color:#0000}.progress{background:var(--vis-bg);height:6px;margin:var(--vis-space-4) 0;border-radius:999px;overflow:hidden}.progress>span{background:var(--vis-success);border-radius:inherit;height:100%;transition:width .3s;display:block}.steps{margin:0;padding:0;list-style:none}.step{gap:var(--vis-space-3);padding:var(--vis-space-3) 0;border-top:1px solid var(--vis-border);grid-template-columns:1.6rem 1fr auto;align-items:start;display:grid}.step p{font-size:var(--vis-text-sm);margin:.2rem 0 0}.step .tick{border:2px solid var(--vis-border-strong);border-radius:999px;place-items:center;width:1.4rem;height:1.4rem;font-size:.8rem;font-weight:700;display:grid}.step.is-done .tick{background:var(--vis-success);border-color:var(--vis-success);color:var(--vis-text-invert)}.step.is-done strong{color:var(--vis-text-secondary);font-weight:500}.step.is-next .tick{border-color:var(--vis-primary)}a.btn{white-space:nowrap;text-decoration:none;display:inline-block}a.btn.primary-link{background:var(--vis-primary);border-color:var(--vis-primary);color:var(--vis-text-invert);font-weight:600}@media (width<=480px){.step{grid-template-columns:1.6rem 1fr}.step>.btn{grid-column:2;justify-self:start}}
