@font-face{font-family:Orbitron;src:url('fuentes/orbitron.woff2') format('woff2');font-weight:400 900;font-display:swap}
@font-face{font-family:Rajdhani;src:url('fuentes/rajdhani-500.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:Rajdhani;src:url('fuentes/rajdhani-600.woff2') format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:Rajdhani;src:url('fuentes/rajdhani-700.woff2') format('woff2');font-weight:700;font-display:swap}
@font-face{font-family:'Share Tech Mono';src:url('fuentes/share-tech-mono.woff2') format('woff2');font-display:swap}
:root{color-scheme:dark;--fondo:#050d11;--panel:#08181e;--ink:#e2f5f7;--muted:#91b9bf;--line:#21454e;--accent:#3fe2f0;--dim:#10323a;--green:#46e3a5;--gold:#f2b347;--red:#ff8585;--title:Orbitron,'Segoe UI',sans-serif;--text:Rajdhani,'Segoe UI',sans-serif;--mono:'Share Tech Mono',monospace;font:600 18px/1.5 var(--text)}
*{box-sizing:border-box}
body{margin:0;min-height:100vh;background:var(--fondo);color:var(--ink);-webkit-font-smoothing:antialiased}
[hidden]{display:none!important}
::selection{background:var(--accent);color:var(--fondo)}
:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
a{color:inherit;text-decoration:none}
button,input,select{font:inherit;accent-color:var(--accent);caret-color:var(--accent)}
button{cursor:pointer;min-height:48px;padding:11px 18px;border:1px solid var(--accent);border-radius:2px;background:var(--accent);color:var(--fondo);font-weight:700;letter-spacing:.01em}
button:hover{background:#9bf1f7;border-color:#9bf1f7}
button:active{transform:translateY(1px)}
button:disabled{cursor:wait;opacity:.6}
.quiet{background:transparent;color:var(--accent);border-color:var(--line)}
.quiet:hover{background:var(--dim);border-color:var(--accent)}
.danger{background:#43232a;color:#ffcccc;border-color:var(--red)}
.danger:hover{background:#60323c;border-color:var(--red)}
input,select{display:block;width:100%;min-height:50px;padding:10px 12px;border:1px solid var(--line);border-radius:2px;background:#071217;color:var(--ink)}
input:hover,select:hover{border-color:#3c7784}
input:disabled,select:disabled{opacity:1;background:#0e252c;color:var(--accent)}
input::placeholder{color:#8ab0b6;font-weight:500}
input[type=password]{font-family:var(--mono);letter-spacing:.16em}
input[type=date]{font-family:var(--mono);font-size:.85rem}
label{display:block;font-size:.95rem;font-weight:700;margin:20px 0 7px;color:var(--ink)}
label span{font-weight:500;color:var(--muted)}
h1{font:600 clamp(1.65rem,3vw,2.35rem)/1.3 var(--title);letter-spacing:-.025em;margin:0 0 14px;color:var(--accent);text-wrap:balance}
h2{font:600 1rem/1.5 var(--title);letter-spacing:0;margin:0 0 20px}
p{margin:0 0 18px}
.top{min-height:92px;display:flex;justify-content:space-between;align-items:center;padding:18px max(24px,calc((100vw - 1280px)/2));border-bottom:1px solid var(--line);gap:16px;background:var(--panel)}
.top>a{display:flex;align-items:center;gap:16px;font:700 1.05rem var(--title);letter-spacing:.14em;color:var(--accent)}
.brand-symbol{width:42px;height:42px;flex-shrink:0;stroke:var(--accent);fill:none;stroke-width:1.4}
.top a span{font:500 .8rem var(--mono);letter-spacing:.03em;color:var(--muted);border-left:1px solid var(--line);padding-left:18px}
#account{display:flex;align-items:center;gap:18px;font-family:var(--mono);font-size:.85rem}
#user-name{color:var(--accent)}
main{max-width:1280px;margin:0 auto;padding:44px 24px}
.login{position:relative;max-width:510px;padding:36px;margin:5vh auto 8vh;background:var(--panel);border:1px solid var(--line)}
.login::before,.login::after,aside::before,aside::after{content:'';position:absolute;width:16px;height:16px;border:0 solid var(--accent);pointer-events:none}
.login::before,aside::before{top:-2px;left:-2px;border-top-width:2px;border-left-width:2px}
.login::after,aside::after{bottom:-2px;right:-2px;border-right-width:2px;border-bottom-width:2px}
.login h1{font-size:1.65rem}
.login>p{color:var(--muted);max-width:36ch;font-weight:500}
.login form{margin-top:28px}
.login form>button{width:100%;margin-top:18px}
.remember{display:flex;align-items:center;gap:10px;font-weight:600;margin-top:24px}
.remember input{display:inline-block;flex-shrink:0;width:22px;min-height:22px;height:22px;margin:0}
.remember+p{margin-top:6px}
.heading{display:flex;justify-content:space-between;align-items:end;gap:20px}
.heading p{color:var(--muted);font-weight:500}
.zone{font-family:var(--mono);font-size:.72rem;white-space:nowrap}
.datebar{display:flex;align-items:center;gap:10px;margin:24px 0 16px;padding-bottom:20px;border-bottom:1px solid var(--line)}
.datebar input{width:194px}
.day-title{font:500 1.1rem var(--mono);color:var(--ink);margin-top:22px}
.notice{font-size:.9rem;color:var(--muted);min-height:1.5em;font-weight:500}
.workspace{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:30px;align-items:start;margin-top:26px}
.legend{display:flex;justify-content:space-between;gap:20px;font-size:.8rem;color:var(--muted);margin-bottom:12px;font-weight:500}
.calendar-scroll{max-height:600px;overflow:auto;border:1px solid var(--line);background:var(--panel);scrollbar-color:#32606b var(--panel);scrollbar-width:thin}
table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;font-size:.85rem}
th{position:sticky;top:0;background:#0e252d;text-align:left;z-index:1;padding:14px 12px;border-bottom:1px solid #386775;color:var(--accent);font-size:.85rem;font-weight:700}
th:first-child{width:70px;font-family:var(--mono);font-weight:400;font-size:.72rem}
td{height:44px;border-bottom:1px solid #15313a;border-right:1px solid var(--line);padding:0}
td:first-child{padding:4px 10px;font:400 .72rem var(--mono);color:var(--muted);background:#07151b}
td:last-child{border-right:0}
.slot{display:block;width:100%;min-height:44px;border:0;border-radius:0;background:transparent;color:#84b7bd;text-align:left;padding:8px 12px;font-size:.8rem;font-weight:500}
.slot:hover{background:var(--dim);color:var(--accent)}
.slot.selected{background:#124b55;color:#c4fbff;font-weight:700;box-shadow:inset 3px 0 0 var(--accent)}
.slot.selected:hover{background:#1b6470;color:#fff}
.slot.range-start{border-top:2px solid var(--accent)}
.slot.range-end{border-top:2px solid var(--accent);color:var(--accent)}
.slot.range-invalid{background:#38232b;color:var(--red)}
.slot:disabled{opacity:.45;cursor:default}
.slot.past{color:#7b969e;background:#071217;opacity:.65;cursor:not-allowed}
.slot.past:hover{color:#7b969e;background:#071217}
.busy{display:block;width:100%;border:0;border-radius:0;text-align:left;background:#103d3e;color:#91f4ce;padding:9px 12px;min-height:44px;font-size:.8rem;font-weight:700}
.busy:disabled{opacity:1;cursor:default}
.busy:hover{background:#103d3e}
.whole{background:#3a3020;color:#ffd395}
.busy.whole:hover{background:#3a3020}
.busy.can-end{border-top:2px solid var(--accent);cursor:pointer}
.busy.can-end:hover{background:#174c55;color:var(--ink)}
.calendar-section h2{margin-top:30px}
.reservation{padding:18px 0;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:16px}
.reservation strong{display:block;color:var(--ink);font-weight:700}
.reservation p{font-size:.9rem;margin:4px 0;color:var(--muted);overflow-wrap:anywhere;font-weight:500}
.actions{display:flex;gap:8px;align-items:start}
.actions button{padding:8px 12px;font-size:.85rem}
.empty{padding:22px 0;border-top:1px solid var(--line);color:var(--muted);font-weight:500}
aside{position:sticky;top:24px;border:1px solid var(--line);padding:24px;background:var(--panel)}
.hours{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.hours input[type=time]{font-family:var(--mono);font-size:1rem;min-width:0;min-height:54px;padding:10px 8px}
.range-summary{margin:16px 0 8px;color:var(--accent);font-weight:700;font-size:1.05rem}
.time-help{margin:12px 0 0}
.muted,.form-help{font-size:.8rem;color:var(--muted);font-weight:500}
#selected-day{margin:8px 0 0}
#save{width:100%;margin-top:10px}
#reset{width:100%;margin-top:10px}
.form-help{margin-top:18px;margin-bottom:0}
.error{color:var(--red);font-size:.95rem;margin:12px 0;min-height:1.3em;font-weight:600}
footer{max-width:1280px;margin:0 auto;padding:24px;color:var(--muted);font:400 .75rem var(--mono);letter-spacing:.02em;border-top:1px solid var(--line)}
dialog{background:var(--panel);color:var(--ink);max-width:460px;width:calc(100% - 32px);border:1px solid var(--line);border-radius:3px;padding:28px;box-shadow:0 16px 60px #0008}
dialog::backdrop{background:#02090dcc}
.dialog-actions{display:flex;justify-content:end;gap:10px;margin-top:24px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:1000px){.top a span{display:none}}
@media(max-width:850px){.workspace{grid-template-columns:1fr;gap:32px}aside{position:relative;top:auto}.zone{white-space:normal}.legend{flex-direction:column;gap:3px}.calendar-scroll{max-height:500px}.heading{display:block}.zone{margin-bottom:0}main{padding-top:28px}}
@media(max-width:480px){main{padding:24px 16px}.top{min-height:76px;padding:14px 16px}.top>a{font-size:.75rem;gap:10px;letter-spacing:.09em}.brand-symbol{width:30px;height:30px}#account{gap:10px;font-size:.75rem}#account button{padding:9px 12px}.datebar{gap:6px;flex-wrap:wrap}.datebar input{flex:1;min-width:140px}.datebar button{padding:10px;font-size:.85rem}.day-title{font-size:.95rem}th{padding:12px 7px}th:first-child{width:56px}td:first-child{padding:4px 5px}.reservation{flex-direction:column}.login{margin:3vh auto 6vh;padding:28px 22px}.login h1{font-size:1.45rem}.busy{padding:9px 7px}.legend{font-size:.8rem}aside{padding:24px 20px}}
@media(prefers-reduced-motion:no-preference){button,input,select{transition:background .15s ease-out,border-color .15s ease-out}.login{animation:arrive .4s ease-out both}@keyframes arrive{from{clip-path:inset(0 0 4% 0);opacity:.8}to{clip-path:inset(0);opacity:1}}}
