:root{--coral:#ff5a3c;--coral-press:#e8432a;--coral-text:#c2321a;--coral-tint:#ffe4dc;--paper:#fff7f2;--surface:#fff;--sunk:#f6ece5;--ink:#1a1410;--ink-soft:#6b5f57;--line:#eadfd7;--control:#8a7d74;--sun:#ffc83d;--sun-tint:#fff1c7;--warning:#8a5300;--cancha:#2bc46b;--cancha-tint:#ddf6e6;--success:#14814a;--danger:#c8261b;--danger-tint:#fde3df;--ruta:#4c9bff;--ruta-tint:#dcebff;--display:"Fredoka", "Nunito", system-ui, sans-serif;--body:"Nunito", system-ui, -apple-system, "Segoe UI", sans-serif;--radius:12px;--radius-sm:8px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--paper);color:var(--ink);font-family:var(--body);margin:0;font-size:14px;font-weight:600;line-height:1.45}h1,h2,h3,h4{font-family:var(--display);margin:0;font-weight:600;line-height:1.2}h1{font-size:24px}h2{font-size:18px}h3{font-size:15px}p{margin:0}a{color:var(--coral-text)}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.muted{color:var(--ink-soft)}.small{font-size:12px}.strong{font-weight:800}.num{font-variant-numeric:tabular-nums}.right{text-align:right}.nowrap{white-space:nowrap}.danger-text{color:var(--danger)}.success-text{color:var(--success)}.stack{flex-direction:column;gap:12px;display:flex}.stack-sm{flex-direction:column;gap:6px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.row-between{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.grow{flex:1;min-width:0}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}@media (width<=900px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}.shell{grid-template-columns:228px minmax(0,1fr);min-height:100%;display:grid}.sidebar{background:var(--ink);color:var(--paper);flex-direction:column;gap:16px;height:100vh;padding:16px 12px;display:flex;position:sticky;top:0;overflow-y:auto}.brand{color:var(--paper);align-items:center;gap:10px;padding:0 6px;text-decoration:none;display:flex}.brand img{width:34px;height:34px}.brand b{font-family:var(--display);font-size:18px;font-weight:600;display:block}.brand span{color:#b3a79e;letter-spacing:1px;text-transform:uppercase;font-size:11px;font-weight:800}.venue-select{width:100%;color:var(--paper);border-radius:var(--radius-sm);background:#241c16;border:1px solid #3a2e26;padding:8px}.nav{flex-direction:column;gap:2px;display:flex}.nav-title{color:#b3a79e;text-transform:uppercase;letter-spacing:1px;padding:10px 10px 4px;font-size:11px;font-weight:800}.nav a{border-radius:var(--radius-sm);color:#e9ddd5;align-items:center;gap:10px;padding:8px 10px;font-weight:700;text-decoration:none;display:flex}.nav a:hover{color:var(--paper);background:#241c16}.nav a.active{background:var(--coral);color:var(--ink)}.nav svg{flex:none;width:18px;height:18px}.sidebar-foot{color:#b3a79e;flex-direction:column;gap:8px;margin-top:auto;padding:0 6px;font-size:12px;display:flex}.sidebar-foot button{color:var(--paper);border-radius:var(--radius-sm);cursor:pointer;text-align:left;background:0 0;border:1px solid #3a2e26;padding:6px 10px}.sidebar-foot button:hover{border-color:var(--coral)}.main{min-width:0;padding:20px 24px 40px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:16px;display:flex}.page-head p{margin-top:2px}@media (width<=900px){.shell{grid-template-columns:1fr}.sidebar{height:auto;position:static}.main{padding:16px}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.card-tight{padding:0;overflow:hidden}.card h2{margin-bottom:10px}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px}.kpi .label{color:var(--ink-soft);text-transform:uppercase;letter-spacing:.6px;font-size:12px;font-weight:800}.kpi .value{font-family:var(--display);margin-top:2px;font-size:24px;font-weight:600}.kpi .hint{color:var(--ink-soft);font-size:12px}.notice{border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);padding:10px 14px}.notice.warn{background:var(--sun-tint);color:var(--warning);border-color:#f0d68a}.notice.error{background:var(--danger-tint);color:var(--danger);border-color:#f5b8ae}.notice.ok{background:var(--cancha-tint);color:var(--success);border-color:#a9e6c1}.empty{text-align:center;color:var(--ink-soft);padding:28px}.btn{border:1.5px solid var(--ink);background:var(--surface);min-height:34px;font-family:var(--display);cursor:pointer;color:var(--ink);white-space:nowrap;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{background:var(--sunk)}.btn:disabled{opacity:.5;cursor:default}.btn-primary{background:var(--coral);box-shadow:0 2px 0 var(--ink)}.btn-primary:hover{background:var(--coral-press)}.btn-primary:active{box-shadow:none;transform:translateY(2px)}.btn-ghost{background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--sunk)}.btn-danger{border-color:var(--danger);color:var(--danger)}.btn-danger:hover{background:var(--danger-tint)}.btn-sm{border-radius:8px;min-height:28px;padding:0 9px;font-size:13px}.btn-lg{min-height:44px;padding:0 18px;font-size:16px}.btn-block{width:100%}.seg{border:1.5px solid var(--ink);border-radius:10px;display:inline-flex;overflow:hidden}.seg button,.seg a{background:var(--surface);cursor:pointer;font-family:var(--display);color:var(--ink);border:0;padding:5px 12px;font-weight:600;text-decoration:none}.seg>*+*{border-left:1.5px solid var(--ink)!important}.seg button.on,.seg a.on{background:var(--ink);color:var(--paper)}.field{flex-direction:column;gap:4px;min-width:0;display:flex}.field>span{color:var(--ink-soft);font-size:12px;font-weight:800}.field small{color:var(--ink-soft);font-size:12px}.input,.select,.textarea{border:1px solid var(--control);border-radius:var(--radius-sm);background:var(--surface);width:100%;min-height:34px;padding:7px 9px}.input:focus,.select:focus,.textarea:focus{outline:2px solid var(--coral);outline-offset:0;border-color:var(--ink)}.input-sm{min-height:28px;padding:3px 7px}.textarea{resize:vertical;min-height:70px}.check{cursor:pointer;align-items:center;gap:6px;display:inline-flex}.check input{width:16px;height:16px;accent-color:var(--coral-text)}.form-error{color:var(--danger);font-weight:700}.toolbar{flex-wrap:wrap;align-items:end;gap:8px;margin-bottom:12px;display:flex}.toolbar .field{min-width:140px}.table-wrap{overflow-x:auto}table.table{border-collapse:collapse;width:100%}.table th{text-align:left;color:var(--ink-soft);border-bottom:1px solid var(--line);background:var(--sunk);white-space:nowrap;padding:8px 10px;font-size:12px;font-weight:800;position:sticky;top:0}.table td{border-bottom:1px solid var(--line);vertical-align:middle;padding:7px 10px}.table tr:last-child td{border-bottom:0}.table tr.clickable{cursor:pointer}.table tr.clickable:hover td{background:var(--paper)}.table tfoot td{background:var(--sunk);font-weight:800}.badge{white-space:nowrap;border:1px solid #0000;border-radius:999px;align-items:center;gap:4px;padding:1px 8px;font-size:12px;font-weight:800;display:inline-flex}.badge-confirmed,.badge-ok{background:var(--cancha-tint);color:var(--success)}.badge-pending,.badge-warn{background:var(--sun-tint);color:var(--warning)}.badge-cancelled,.badge-expired,.badge-muted{background:var(--sunk);color:var(--ink-soft)}.badge-danger{background:var(--danger-tint);color:var(--danger)}.badge-app{background:var(--ruta-tint);color:#1f5fae}.badge-coral{background:var(--coral-tint);color:var(--coral-text)}.overlay{z-index:40;background:#1a141059;position:fixed;inset:0}.drawer{background:var(--paper);border-left:1.5px solid var(--ink);z-index:41;flex-direction:column;width:min(480px,100vw);display:flex;position:fixed;top:0;bottom:0;right:0}.drawer-head{border-bottom:1px solid var(--line);background:var(--surface);justify-content:space-between;align-items:center;gap:8px;padding:14px 16px;display:flex}.drawer-body{flex-direction:column;gap:14px;padding:16px;display:flex;overflow-y:auto}.dialog{z-index:41;background:var(--surface);border:1.5px solid var(--ink);width:min(560px,100vw - 32px);max-height:calc(100vh - 48px);box-shadow:0 6px 0 var(--ink);border-radius:16px;position:fixed;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%)}.dialog-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.dialog-body{flex-direction:column;gap:12px;padding:16px;display:flex}.dialog-foot{border-top:1px solid var(--line);justify-content:flex-end;gap:8px;padding:12px 16px;display:flex}.close{cursor:pointer;background:0 0;border:0;border-radius:6px;padding:2px 6px;font-size:22px;line-height:1}.close:hover{background:var(--sunk)}.dl{grid-template-columns:120px 1fr;gap:6px 12px;display:grid}.dl dt{color:var(--ink-soft);font-weight:700}.dl dd{margin:0}.timeline{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.timeline li{border-left:2px solid var(--line);padding-left:10px}.agenda{--row:22px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);max-height:calc(100vh - 190px);display:grid;position:relative;overflow:auto}.agenda-head{z-index:3;background:var(--sunk);border-bottom:1px solid var(--line);font-family:var(--display);text-align:center;white-space:nowrap;text-overflow:ellipsis;padding:6px 8px;font-weight:600;position:sticky;top:0;overflow:hidden}.agenda-head small{font-family:var(--body);color:var(--ink-soft);font-size:11px;font-weight:700;display:block}.agenda-head.today{background:var(--coral-tint)}.agenda-corner{z-index:4;background:var(--sunk);border-bottom:1px solid var(--line);position:sticky;top:0;left:0}.agenda-times{z-index:2;background:var(--surface);border-right:1px solid var(--line);position:sticky;left:0}.agenda-time{height:var(--row);color:var(--ink-soft);text-align:right;font-variant-numeric:tabular-nums;padding-right:6px;font-size:11px;transform:translateY(-7px)}.agenda-col{border-right:1px solid var(--line);position:relative}.agenda-col:last-child{border-right:0}.agenda-cell{height:var(--row);background:repeating-linear-gradient(45deg, var(--sunk), var(--sunk) 4px, #efe3da 4px, #efe3da 8px);border-top:1px dashed #0000}.agenda-cell.hour{border-top-color:var(--line)}.agenda-cell.open{background:var(--surface);cursor:pointer}.agenda-cell.open:hover{background:var(--coral-tint)}.agenda-cell.open.past{cursor:default;background:#fbf6f2}.agenda-cell.drop{background:var(--cancha-tint)!important}.agenda-now{border-top:2px solid var(--coral);z-index:2;pointer-events:none;height:0;position:absolute;left:0;right:0}.slot-item{cursor:pointer;border:1px solid var(--ink);z-index:1;border-radius:6px;padding:2px 6px;font-size:12px;line-height:1.25;position:absolute;left:3px;right:3px;overflow:hidden}.slot-item b{white-space:nowrap;text-overflow:ellipsis;font-weight:800;display:block;overflow:hidden}.slot-item span{color:inherit;opacity:.8;white-space:nowrap}.slot-booking{box-shadow:0 2px 0 var(--ink);background:#fff}.slot-booking.confirmed{background:var(--cancha-tint)}.slot-booking.owed{background:var(--sun-tint)}.slot-booking.pending{background:#fff;border-style:dashed}.slot-booking.app:before{content:"";background:var(--ruta);width:4px;position:absolute;top:0;bottom:0;left:0}.slot-booking[draggable=true]{cursor:grab}.slot-block{border-color:var(--control);color:var(--ink);background:repeating-linear-gradient(-45deg,#e7dcd4,#e7dcd4 6px,#ddd0c6 6px 12px)}.legend{color:var(--ink-soft);flex-wrap:wrap;gap:14px;margin-top:8px;font-size:12px;display:flex}.legend i{border:1px solid var(--ink);vertical-align:-2px;border-radius:3px;width:12px;height:12px;margin-right:4px;display:inline-block}.week-grid{border:1px solid var(--line);border-radius:var(--radius-sm);grid-template-columns:60px repeat(7,minmax(0,1fr));font-size:11px;display:grid;overflow:hidden}.week-grid div{min-height:10px}.week-grid .h{background:var(--sunk);text-align:center;padding:4px 0;font-weight:800}.week-grid .t{color:var(--ink-soft);text-align:right;padding-right:4px}.week-grid .c{border-left:1px solid var(--line)}.week-grid .c.on{background:var(--cancha-tint)}.week-grid .c.on.valle{background:var(--ruta-tint)}.bars{align-items:flex-end;gap:3px;height:140px;padding-top:8px;display:flex}.bars .bar{background:var(--coral);border-radius:3px 3px 0 0;flex:1;min-width:3px;position:relative}.bars .bar.collected{background:var(--cancha)}.bar-axis{color:var(--ink-soft);justify-content:space-between;margin-top:4px;font-size:11px;display:flex}.meter{background:var(--sunk);border-radius:999px;min-width:80px;height:8px;overflow:hidden}.meter>i{background:var(--coral);height:100%;display:block}.heatmap{gap:2px;font-size:11px;display:grid}.heatmap .hm{font-variant-numeric:tabular-nums;border-radius:3px;justify-content:center;align-items:center;height:20px;display:flex}.heatmap .lab{color:var(--ink-soft);align-items:center;font-weight:800;display:flex}.auth-page{background:var(--paper);place-items:center;min-height:100%;padding:24px;display:grid}.auth-card{background:var(--surface);border:1.5px solid var(--ink);width:min(420px,100%);box-shadow:0 6px 0 var(--ink);border-radius:20px;flex-direction:column;gap:14px;padding:28px;display:flex}.auth-card .logo{align-items:center;gap:10px;display:flex}.auth-card .logo img{width:44px;height:44px}.divider{color:var(--ink-soft);align-items:center;gap:10px;font-size:12px;display:flex}.divider:before,.divider:after{content:"";background:var(--line);flex:1;height:1px}.spinner{border:3px solid var(--line);border-top-color:var(--coral);border-radius:50%;width:22px;height:22px;animation:.8s linear infinite spin}.center-fill{place-items:center;min-height:60vh;display:grid}@keyframes spin{to{transform:rotate(360deg)}}.toast{background:var(--ink);color:var(--paper);z-index:60;box-shadow:0 3px 0 var(--coral);border-radius:12px;padding:10px 16px;font-weight:700;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.combo{position:relative}.combo-list{z-index:20;background:var(--surface);border:1.5px solid var(--ink);border-radius:10px;max-height:260px;margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:auto;box-shadow:0 6px 16px #1a14101f}.combo-list button{text-align:left;cursor:pointer;width:100%;font:inherit;background:0 0;border:0;border-radius:8px;padding:8px 10px;display:block}.combo-list button:hover{background:var(--sunk)}.customer-picked{border:1.5px solid var(--ink);background:var(--paper);border-radius:10px;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}
