:root{--bg:#0d0a17;--bg2:#15111f;--card:#1b1629;--card2:#231c35;--line:#2f2745;--txt:#f3effc;--mut:#a79fc0;--acc:#8a2be2;--acc2:#b388ff;--ok:#2ecc9a;--warn:#ffb020;--bad:#ff5c7a;--info:#4cc9f0;--r:14px;--nav:64px}
:root[data-theme=light]{--bg:#f6f3fb;--bg2:#fff;--card:#fff;--card2:#efe9fa;--line:#ddd3ee;--txt:#1d1530;--mut:#6a5f85;--acc:#7a1fd2;--acc2:#7a1fd2}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{color-scheme:dark light}
body{margin:0;background:var(--bg);color:var(--txt);font:15px/1.4 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;padding-bottom:calc(var(--nav) + env(safe-area-inset-bottom) + 12px)}
body.noscroll{overflow:hidden}
.top{position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;align-items:center;padding:calc(10px + env(safe-area-inset-top)) 16px 10px;background:linear-gradient(180deg,var(--bg) 70%,transparent)}
.top h1{margin:0;font-size:20px;letter-spacing:.2px}.top h1 b{color:var(--acc2)}.top small{color:var(--mut)}
main{max-width:760px;margin:0 auto;padding:0 14px 24px}
h2{margin:0;font-size:20px}h3{margin:18px 0 8px;font-size:15px;color:var(--acc2)}h4{margin:16px 0 8px;font-size:13px;text-transform:uppercase;letter-spacing:.6px;color:var(--mut);display:flex;gap:8px;align-items:center;justify-content:space-between}
h4 small{text-transform:none;letter-spacing:0;font-weight:400}
.hint{color:var(--mut);font-size:13px;margin:6px 0 10px}
button{font:inherit;color:inherit;cursor:pointer}
.icon{background:var(--card);border:1px solid var(--line);border-radius:12px;width:40px;height:40px;font-size:18px}
.btn{background:var(--acc);border:0;color:#fff;padding:11px 16px;border-radius:12px;font-weight:600}
.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--txt)}
.btn.danger{background:var(--bad);color:#fff}.btn.danger.ghost{background:transparent;color:var(--bad);border-color:var(--bad)}
.btn:active{transform:scale(.98)}
.chip{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);background:var(--card2);color:var(--txt);border-radius:999px;padding:3px 10px;font-size:12px;white-space:nowrap}
button.chip{cursor:pointer}
.chip.ok{border-color:#2ecc9a66;color:var(--ok)}.chip.warn{border-color:#ffb02066;color:var(--warn)}.chip.bad{border-color:#ff5c7a77;color:var(--bad)}
.ok{color:var(--ok)}.warn-t{color:var(--warn)}
.bar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:6px 0 10px}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:10px 0}.row.end{justify-content:flex-end}.row.sp{justify-content:space-between;flex-wrap:nowrap}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;flex:none}
.mes-nav{display:flex;align-items:center;gap:10px;margin:4px 0 12px}.mes-nav>div{flex:1;text-align:center}.mes-nav h2{font-size:19px}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:8px;margin-bottom:14px}.tiles.s{margin:10px 0}
.tile{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:9px 11px}.tile span{display:block;font-size:11px;color:var(--mut);text-transform:uppercase;letter-spacing:.5px}.tile b{font-size:17px}
.tile.ok b{color:var(--ok)}.tile.warn b{color:var(--warn)}
/* semanas y días */
.semana{background:var(--card);border:1px solid var(--line);border-radius:var(--r);margin-bottom:14px;overflow:hidden}
.semana>header{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;background:linear-gradient(90deg,#8a2be233,transparent);border-bottom:1px solid var(--line)}
.semana>header>div:first-child{flex:1;min-width:120px}.semana>header b{display:block}.semana>header span{color:var(--mut);font-size:12px}
.sem-t{text-align:right}.sem-t b{font-size:14px}
.dia{display:grid;grid-template-columns:46px 1fr auto 30px;gap:8px;align-items:center;padding:7px 10px;border-bottom:1px solid var(--line)}
.dia:last-child{border-bottom:0}.dia.fin{background:#ffffff06}.dia.libre{opacity:.78}.dia.hoy{box-shadow:inset 3px 0 var(--acc2)}
.dia-f{background:var(--card2);border:1px solid var(--line);border-radius:10px;padding:3px 0;text-align:center;line-height:1.1}.dia-f b{display:block;font-size:11px;color:var(--mut);font-weight:600}.dia-f span{font-size:16px;font-weight:700}
.dia-m small{display:block;color:var(--mut);font-size:11px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dia-n{text-align:right;min-width:74px}.dia-n b{display:block;font-size:13px}.dia-n span{font-size:12px;color:var(--mut)}
.mini{width:30px;height:30px;border-radius:9px;border:1px solid var(--line);background:transparent;color:var(--acc2);font-size:15px}
select,input[type=text],input[type=number],input[type=date],input[type=time],input[type=email],input[type=password],input[type=month]{width:100%;background:var(--bg2);color:var(--txt);border:1px solid var(--line);border-radius:10px;padding:9px 10px;font:inherit;min-height:40px}
select.turno-sel{font-weight:600;border-color:#8a2be266}
select.turno-sel.t-Mañana{border-left:4px solid #ffb020}select.turno-sel.t-Tarde{border-left:4px solid #a78bfa}select.turno-sel.t-Partido{border-left:4px solid #4cc9f0}select.turno-sel.t-Noche{border-left:4px solid #5b8cff}
.dia.libre select{color:var(--mut);font-weight:400;border-style:dashed}
input[type=color]{width:100%;height:40px;border:1px solid var(--line);border-radius:10px;background:var(--bg2);padding:3px}
/* tarjetas, tablas */
.card{display:block;width:100%;text-align:left;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:11px 13px;margin-bottom:8px}
.card-t{display:flex;align-items:center;gap:10px}.card-t b{flex:1}.card-t strong{font-size:16px}.dot-t{display:inline-flex;align-items:center;color:var(--mut);font-size:12px}
.card-s{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:7px;color:var(--mut);font-size:12px}
.mes-h{margin:16px 0 6px}
.empty{padding:26px;text-align:center;color:var(--mut)}
.tw{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:var(--card)}
table.t{width:100%;border-collapse:collapse;font-size:13px}table.t th{background:#8a2be2;color:#fff;font-weight:600;padding:7px 8px;text-align:right;white-space:nowrap}table.t th:first-child{text-align:left}
table.t td{padding:7px 8px;text-align:right;border-top:1px solid var(--line);white-space:nowrap}table.t td:first-child{text-align:left}
table.t tr.aj td{background:#2e2e5566;color:var(--mut);white-space:normal}table.t tfoot td,table.t tr.tot td{font-weight:700;background:var(--card2)}
table.clic tbody tr{cursor:pointer}table.clic tbody tr:hover{background:var(--card2)}
.nom-h{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.alert{border-radius:12px;padding:10px 12px;margin:10px 0;border:1px solid var(--line);background:var(--card);font-size:14px}.alert.info{border-color:#4cc9f055}.alert.warn{border-color:#ffb02066}.alert.ok{border-color:#2ecc9a66}.alert.bad{border-color:#ff5c7a77}
.rev{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;margin:6px 0;background:var(--card);border:1px solid var(--line);border-radius:12px}.rev>div{flex:1}.rev small{display:block;color:var(--mut);font-size:12px;margin-top:2px}
.rev.error{border-color:#ff5c7a88}.rev.warn{border-color:#ffb02066}.rev.ok{border-color:#2ecc9a55}
.log{margin:8px 0 0;padding-left:18px;color:var(--mut);font-size:13px}
details.card summary,details.acc summary{cursor:pointer;font-weight:600}
details.acc{background:var(--card);border:1px solid var(--line);border-radius:var(--r);margin-bottom:10px;padding:0 13px}details.acc summary{padding:13px 0}.acc-b{padding:0 0 14px}
.item{display:flex;align-items:center;gap:8px;padding:9px 0;border-top:1px solid var(--line)}.item>div{flex:1}.item small{display:block;color:var(--mut);font-size:12px}
.badge{position:absolute;top:4px;right:calc(50% - 22px);background:var(--bad);color:#fff;border-radius:999px;font-size:10px;font-style:normal;min-width:17px;padding:1px 4px;text-align:center}
/* formularios */
.form{display:grid;gap:11px}.form label{display:grid;gap:4px;font-size:12px;color:var(--mut)}.form label.chk{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--txt)}.form label.chk input{width:auto;min-height:0}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.g4{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.g5{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:10px}
.g-l{display:grid;grid-template-columns:1fr 110px;gap:8px;align-items:center;margin-bottom:6px}.g-c{display:grid;grid-template-columns:1fr 88px auto 30px;gap:6px;align-items:center;margin-bottom:6px}
.calc{background:var(--card2);border:1px solid var(--line);border-radius:12px;padding:10px 12px;font-size:14px}
/* modal */
.sheet-bg{position:fixed;inset:0;z-index:50;background:#000a;display:flex;align-items:flex-end;justify-content:center}
.sheet{background:var(--bg2);border:1px solid var(--line);border-radius:20px 20px 0 0;width:100%;max-width:640px;max-height:92vh;display:flex;flex-direction:column;animation:up .2s ease}
.sheet.small{border-radius:18px;padding:18px;margin:auto 16px;max-height:none}
.sheet-bg.conf{z-index:70;align-items:center}
.sheet-h{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line)}.x{background:var(--card2);border:0;border-radius:10px;width:34px;height:34px}
.sheet-b{padding:14px 16px calc(18px + env(safe-area-inset-bottom));overflow:auto}
@keyframes up{from{transform:translateY(30px);opacity:0}to{transform:none;opacity:1}}
@media(min-width:700px){.sheet-bg{align-items:center}.sheet{border-radius:20px}.g4{grid-template-columns:repeat(4,1fr)}}
/* nav */
nav.tabs{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;background:var(--bg2);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}
nav.tabs button{position:relative;flex:1;background:none;border:0;height:var(--nav);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--mut);font-size:11px}
nav.tabs button i{font-style:normal;font-size:20px;filter:grayscale(.6)}nav.tabs button.on{color:var(--acc2)}nav.tabs button.on i{filter:none}
#toasts{position:fixed;left:0;right:0;bottom:calc(var(--nav) + 18px + env(safe-area-inset-bottom));z-index:90;display:grid;gap:6px;justify-items:center;pointer-events:none}
.toast{background:#2b2342;color:#fff;border:1px solid var(--line);border-radius:12px;padding:9px 14px;font-size:14px;max-width:90%;transition:opacity .4s}.toast.ok{border-color:#2ecc9a88}.toast.err{border-color:#ff5c7a;background:#40202b}.toast.out{opacity:0}
/* pin */
.hide{display:none!important}.pin-dots{display:flex;gap:12px;justify-content:center;margin:14px 0}.pin-dots i{width:14px;height:14px;border-radius:50%;border:2px solid var(--acc2)}.pin-dots i.on{background:var(--acc2)}.pin-dots.shake{animation:sh .35s}
@keyframes sh{20%,60%{transform:translateX(-8px)}40%,80%{transform:translateX(8px)}}
.pin-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-width:280px;margin:0 auto}.pin-pad button{height:54px;border-radius:14px;border:1px solid var(--line);background:var(--card);font-size:20px}.pin-pad button.ghost{background:none;border-color:transparent}
.bio-btn{background:var(--card);border:1px solid var(--line);border-radius:50%;width:84px;height:84px;font-size:36px;margin:8px 0}
@media(max-width:380px){.dia{grid-template-columns:40px 1fr auto}.dia .mini{display:none}.g2{grid-template-columns:1fr}}
.dia>*{min-width:0}.dia-m{min-width:0}.dia-m select{min-width:0;font-size:14px;text-overflow:ellipsis}
.dia{grid-template-columns:44px minmax(0,1fr) auto 30px}
table.t{font-size:12px}table.t th,table.t td{padding:6px 5px}
