:root{--bg:#ececea;--surface:#fff;--surface-2:#f4f4f2;--ink:#0e0e0e;--ink-2:#5f5f5c;--ink-3:#9a9a96;--line:#e4e4e1;--ok-bg:#ddf3e6;--ok:#17753f;--busy-bg:#fbe3dd;--busy:#b23a20;--block-bg:#e8e6f5;--block:#4a3fa0;--warn-bg:#fff1cc;--warn:#8a5a00;--padel:#2f6f4e;--tenis:#b8562b;--fs-xs:12px;--fs-sm:14px;--fs-md:16px;--fs-lg:20px;--fs-xl:28px;--fs-2xl:44px;--r-sm:12px;--r-md:18px;--r-lg:28px;--r-pill:999px;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--shadow:0 1px 2px rgba(0,0,0,.04),0 8px 24px rgba(0,0,0,.05)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font:400 var(--fs-md)/1.5 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}a{color:inherit;text-decoration:none}h1,h2,h3{margin:0;letter-spacing:-.03em;font-weight:600;line-height:1.1}h1{font-size:clamp(32px,6vw,var(--fs-2xl))}h2{font-size:var(--fs-lg)}p{margin:0}:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.muted{color:var(--ink-2)}.small{font-size:var(--fs-sm)}.container{max-width:1200px;margin:0 auto;padding:0 var(--s-4)}@media (min-width:800px){.container{padding:0 var(--s-6)}}.stack{flex-direction:column;gap:var(--s-5)}.row,.stack{display:flex}.row{align-items:center;gap:var(--s-3);flex-wrap:wrap}.row.between{justify-content:space-between}.page{padding-top:var(--s-5);padding-bottom:var(--s-7)}.page-head{margin:var(--s-5) 0 var(--s-5);display:flex;flex-direction:column;gap:var(--s-2)}.topbar{padding:var(--s-4) 0}.topbar .container{gap:var(--s-4);flex-wrap:wrap;justify-content:space-between}.logo,.topbar .container{display:flex;align-items:center}.logo{gap:var(--s-3);font-weight:600;letter-spacing:-.02em}.logo-mark{width:44px;height:44px;border-radius:var(--r-sm);background:var(--ink);color:#fff;display:grid;place-items:center;font-weight:700}.pillnav{display:flex;gap:var(--s-1);background:var(--surface);padding:6px;border-radius:var(--r-pill);box-shadow:var(--shadow);overflow-x:auto;max-width:100%}.pillnav a,.pillnav button{padding:10px 18px;border-radius:var(--r-pill);font-size:var(--fs-sm);font-weight:500;white-space:nowrap;background:none;border:0;cursor:pointer;font-family:inherit;color:inherit;transition:background .15s,color .15s;min-height:44px;display:inline-flex;align-items:center}.pillnav a:hover,.pillnav button:hover{background:var(--surface-2)}.pillnav a.active{background:var(--ink);color:#fff}@media (max-width:799px){.topbar .container{flex-direction:column;align-items:stretch}.pillnav{align-self:stretch}}.card{background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:var(--s-5)}.card.dark{background:var(--ink);color:#fff}.card.dark .muted{color:#b9b9b5}@media (max-width:599px){.card{padding:var(--s-4)}}.grid{display:grid;grid-gap:var(--s-4);gap:var(--s-4)}.grid.cols-2{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.grid.kpis{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}.sport-tile{display:flex;flex-direction:column;gap:var(--s-4);min-height:240px;justify-content:space-between;transition:transform .15s}.sport-tile:hover{transform:translateY(-2px)}.sport-dot{width:14px;height:14px;border-radius:50%;display:inline-block}.sport-tile h2{font-size:var(--fs-xl)}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:500;background:var(--surface-2);color:var(--ink-2)}.badge.ok{background:var(--ok-bg);color:var(--ok)}.badge.busy{background:var(--busy-bg);color:var(--busy)}.badge.block{background:var(--block-bg);color:var(--block)}.badge.warn{background:var(--warn-bg);color:var(--warn)}.kpi{display:flex;flex-direction:column;gap:var(--s-2)}.kpi-label{font-size:var(--fs-sm);color:var(--ink-2)}.kpi-value{font-size:var(--fs-xl);font-weight:600;letter-spacing:-.03em}.card.dark .kpi-label{color:#b9b9b5}.kpi svg{width:100%;height:40px;margin-top:var(--s-2)}.seg{background:var(--surface-2);padding:4px;gap:2px}.seg,.seg a{display:inline-flex;border-radius:var(--r-pill)}.seg a{padding:8px 18px;font-size:var(--fs-sm);font-weight:500;color:var(--ink-2);min-height:40px;align-items:center}.seg a.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.1)}.seg.dark a.active{background:var(--ink);color:#fff}.days{gap:var(--s-2);overflow-x:auto;scroll-snap-type:x proximity;padding:2px 2px var(--s-2)}.day,.days{display:flex}.day{scroll-snap-align:start;flex:0 0 auto;min-width:64px;flex-direction:column;align-items:center;padding:10px 12px;border-radius:var(--r-md);background:var(--surface-2);font-size:var(--fs-xs);color:var(--ink-2);position:relative;transition:background .15s}.day b{font-size:var(--fs-lg);color:var(--ink);font-weight:600}.day:hover{background:#ebebe8}.day.active{background:var(--ink);color:#fff}.day.active b{color:#fff}.day.today:after{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;position:absolute;bottom:4px}.day.off{opacity:.35;pointer-events:none}.slots{grid-gap:var(--s-2)}.slot-row,.slots{display:grid;gap:var(--s-2)}.slot-row{grid-template-columns:64px repeat(var(--cols,2),1fr);grid-gap:var(--s-2);align-items:stretch}.slot-row.sep{margin-top:var(--s-3);padding-top:var(--s-3);border-top:1px dashed var(--line)}.slot-time{font-weight:600;display:flex;align-items:center}.slot-head{font-size:var(--fs-xs);color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em;font-weight:500}.slot-cell{min-height:56px;border-radius:var(--r-md);background:var(--surface-2);display:flex;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:6px;text-align:center;font-size:var(--fs-sm);transition:background .15s,box-shadow .15s}a.slot-cell.free:hover{background:var(--ok-bg);box-shadow:inset 0 0 0 2px var(--ok)}.slot-cell.past{opacity:.45}.slot-cell.blocked small{color:var(--block)}.empty{text-align:center;padding:var(--s-6) 0;color:var(--ink-2)}.overlay{position:fixed;inset:0;background:rgba(14,14,14,.4);display:flex;align-items:center;justify-content:center;padding:var(--s-4);z-index:50}.modal{background:var(--surface);border-radius:var(--r-lg);padding:var(--s-5);width:100%;max-width:440px;display:flex;flex-direction:column;gap:var(--s-4);box-shadow:0 24px 60px rgba(0,0,0,.25)}@media (max-width:599px){.overlay{align-items:flex-end;padding:0}.modal{border-radius:var(--r-lg) var(--r-lg) 0 0;max-width:none}}.summary{padding:var(--s-3) var(--s-4);font-size:var(--fs-sm)}.code-box,.summary{background:var(--surface-2);border-radius:var(--r-md)}.code-box{font-size:var(--fs-2xl);font-weight:700;letter-spacing:.12em;text-align:center;padding:var(--s-4)}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:var(--fs-sm);font-weight:500}.input,select.input{height:48px;border:0;border-radius:var(--r-md);background:var(--surface-2);padding:0 var(--s-4);font:inherit;color:inherit;width:100%}.input:focus{outline:2px solid var(--ink)}.err{color:var(--busy);font-size:var(--fs-sm)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:48px;padding:0 var(--s-5);border-radius:var(--r-pill);border:1px solid var(--ink);background:var(--ink);color:#fff;font:500 var(--fs-sm)/1 inherit;font-family:inherit;cursor:pointer;transition:opacity .15s}.btn:hover{opacity:.88}.btn:disabled{opacity:.5;cursor:wait}.btn.secondary{background:var(--surface);color:var(--ink);border-color:var(--line)}.btn.danger{background:var(--busy-bg);color:var(--busy);border-color:transparent}.btn.sm{height:36px;padding:0 var(--s-4)}.btn.block{width:100%}.notice{padding:var(--s-3) var(--s-4);border-radius:var(--r-md);background:var(--warn-bg);color:var(--warn);font-size:var(--fs-sm)}.notice.ok{background:var(--ok-bg);color:var(--ok)}.inline-form{display:flex;gap:var(--s-2);align-items:flex-end;flex-wrap:wrap}.inline-form .field{min-width:140px;flex:1 1}.table-wrap{overflow-x:auto}table.data{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}table.data th{text-align:left;font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);font-weight:500;padding:var(--s-2) var(--s-3)}table.data td{padding:var(--s-3);border-top:1px solid var(--line);vertical-align:middle}table.data td.actions{text-align:right}.agenda{width:100%;border-collapse:separate;border-spacing:4px;table-layout:fixed;min-width:860px;font-size:var(--fs-xs)}.agenda th{padding:var(--s-2);font-weight:600;font-size:var(--fs-sm);background:var(--surface-2);border-radius:var(--r-sm)}.agenda th.today{background:var(--ink);color:#fff}.agenda th small{display:block;font-weight:400;opacity:.7}.agenda td{vertical-align:top;background:var(--surface-2);border-radius:var(--r-sm);padding:6px;height:74px}.agenda td.time{background:none;font-weight:600;font-size:var(--fs-sm);width:56px}.agenda td.closed{background:repeating-linear-gradient(45deg,transparent 0 6px,rgba(0,0,0,.03) 6px 12px)}.agenda .res{display:block;padding:2px 6px;border-radius:8px;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.agenda .res.taken{background:var(--busy-bg);color:var(--busy)}.agenda .res.blocked{background:var(--block-bg);color:var(--block)}.agenda .res.free{background:var(--surface);color:var(--ink-3)}.days,.pillnav{scrollbar-width:none}.days::-webkit-scrollbar,.pillnav::-webkit-scrollbar{display:none}.footer{padding:var(--s-6) 0;color:var(--ink-3);font-size:var(--fs-sm);text-align:center}@media (prefers-reduced-motion:reduce){*{transition:none!important}}