: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:#8b95a1;--vis-text-invert:#fff;--vis-primary:#1f4d8f;--vis-primary-hover:#173c71;--vis-primary-soft:#e8eff9;--vis-success:#1e7d4f;--vis-success-soft:#e4f4ec;--vis-warning:#9a6a12;--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 h3{font-size:var(--vis-text-sm);color:var(--vis-text-secondary);margin-bottom:var(--vis-space-2)}
