/* Posada reservas — estilos
   Layout: barra de mes fija arriba → línea de tiempo (casas en filas, días en columnas) → resumen → lista del mes.
   Alta y detalle en una hoja que sube desde abajo (pensado para celular). */

:root{
  --bg:#F3F4F1; --surface:#FFFFFF; --ink:#1E2422; --muted:#5F6964; --line:#DADFDA;
  --wknd:#EEF0EC; --accent:#1F5E5B; --accent-ink:#FFFFFF; --danger:#B3261E; --overlay:rgba(20,24,22,.45);
  --roja:#C8402F; --azul:#2F5FB3; --verde:#3A8A55; --mostaza:#D4A11F; --mostaza-ink:#2A2108;
  --f-display:"Bricolage Grotesque", "Segoe UI", system-ui, sans-serif;
  --f-body:"Atkinson Hyperlegible", system-ui, -apple-system, "Segoe UI", sans-serif;
  --cell:44px; --label:100px; --row:54px;
  color-scheme:light;
}
@media (prefers-color-scheme: dark){ :root{
  --bg:#121614; --surface:#1B201E; --ink:#E7ECE9; --muted:#9DA8A2; --line:#2C3431;
  --wknd:#171C1A; --accent:#6DB7B0; --accent-ink:#0E1A19; --danger:#F2867D; --overlay:rgba(0,0,0,.6);
  --roja:#D9594A; --azul:#5684D6; --verde:#4FA56C; --mostaza:#E0B23A; --mostaza-ink:#241C06;
  color-scheme:dark }}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:15px;line-height:1.45;
  padding-left:max(16px, env(safe-area-inset-left, 0px));padding-right:max(16px, env(safe-area-inset-right, 0px));
  padding-block:0 calc(120px + env(safe-area-inset-bottom, 0px))}
[hidden]{display:none!important}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.num{font-variant-numeric:tabular-nums}

/* Encabezado */
header.top{position:sticky;top:0;z-index:5;background:var(--bg);
  display:flex;align-items:center;gap:8px;padding-top:calc(14px + env(safe-area-inset-top, 0px));padding-bottom:10px;margin-inline:-4px}
.brand{display:flex;align-items:center;gap:6px;font-family:var(--f-display);font-weight:700;font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.brand img{border-radius:4px;flex:none}
.month{flex:1;min-width:0}
.month h1{margin:0;font-family:var(--f-display);font-weight:700;font-size:24px;line-height:1.1;text-transform:capitalize}
.iconbtn{width:40px;height:40px;border-radius:12px;border:1px solid var(--line);background:var(--surface);display:grid;place-items:center;flex:none}
.iconbtn svg{width:18px;height:18px}
.todaybtn{height:40px;padding:0 12px;border-radius:12px;border:1px solid var(--line);background:var(--surface);font-size:14px;font-weight:700}

.status{font-size:13px;color:var(--muted);margin:0 0 10px;display:flex;gap:8px;align-items:center}
.status .dot{width:8px;height:8px;border-radius:50%;background:var(--verde);flex:none}
.status.warn .dot{background:var(--mostaza)}

/* Línea de tiempo */
.tl-wrap{background:var(--surface);border:1px solid var(--line);border-radius:16px;overflow:hidden}
.tl-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
.tl{position:relative;width:calc(var(--label) + var(--days) * var(--cell))}
.tl-row{display:flex;height:var(--row);border-top:1px solid var(--line);position:relative}
.tl-row.head{height:50px;border-top:0}
.tl-label{position:sticky;left:0;z-index:3;width:var(--label);flex:none;background:var(--surface);border-right:1px solid var(--line);
  display:flex;align-items:center;gap:7px;padding-left:12px;font-weight:700;font-size:14px}
.tl-row.head .tl-label{font-size:12px;color:var(--muted);font-weight:400}
.swatch{width:10px;height:10px;border-radius:3px;flex:none}
.tl-cells{display:flex;position:relative}
.cell{width:var(--cell);flex:none;border:0;border-right:1px solid var(--line);background:transparent;padding:0}
.cell.wk{background:var(--wknd)}
.head .cell{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;font-size:11px;color:var(--muted)}
.head .cell b{font-size:15px;color:var(--ink);font-weight:700}
.head .cell.today b{background:var(--accent);color:var(--accent-ink);border-radius:8px;padding:0 5px}
.today-line{position:absolute;top:0;bottom:0;width:2px;background:var(--accent);opacity:.35;pointer-events:none;z-index:1}
.bar{position:absolute;top:9px;height:calc(var(--row) - 18px);border-radius:9px;border:0;padding:0 8px;z-index:2;
  display:flex;align-items:center;font-size:13px;font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left;
  box-shadow:0 1px 0 rgba(0,0,0,.08)}
.bar.cut-l{border-top-left-radius:0;border-bottom-left-radius:0}
.bar.cut-r{border-top-right-radius:0;border-bottom-right-radius:0}
.c-roja{background:var(--roja)} .c-azul{background:var(--azul)} .c-verde{background:var(--verde)}
.c-mostaza{background:var(--mostaza);color:var(--mostaza-ink)!important}
.hint{font-size:12.5px;color:var(--muted);margin:8px 2px 0}

/* Resumen */
.summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:18px}
.sum{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 10px 9px;min-width:0}
.sum .n{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:var(--muted);overflow:hidden;white-space:nowrap}
.sum .v{font-family:var(--f-display);font-size:20px;font-weight:700;line-height:1.2;margin-top:2px}
.sum .s{font-size:11.5px;color:var(--muted)}

/* Lista */
h2{font-family:var(--f-display);font-weight:700;font-size:19px;margin:26px 0 10px;text-wrap:balance}
.list{display:flex;flex-direction:column;gap:8px}
.item{display:grid;grid-template-columns:6px 1fr auto;gap:12px;align-items:center;width:100%;text-align:left;background:var(--surface);
  border:1px solid var(--line);border-radius:12px;padding:12px 12px 12px 0;overflow:hidden}
.item .stripe{align-self:stretch;margin:-12px 0}
.item .who{font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.item .when{font-size:13px;color:var(--muted)}
.item .amt{text-align:right;font-weight:700}
.item .amt small{display:block;font-weight:400;font-size:12px;color:var(--muted)}
.empty{background:var(--surface);border:1px dashed var(--line);border-radius:12px;padding:18px;color:var(--muted);font-size:14px}

.foot{margin-top:28px;display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:13px;color:var(--muted)}
.linkbtn{border:0;background:none;color:var(--accent);font-weight:700;padding:6px 0}

.fab{position:fixed;right:calc(16px + env(safe-area-inset-right,0px));bottom:calc(18px + env(safe-area-inset-bottom,0px));z-index:6;
  height:54px;padding:0 20px 0 16px;border-radius:16px;border:0;background:var(--accent);color:var(--accent-ink);
  font-weight:700;font-size:16px;display:flex;align-items:center;gap:8px;box-shadow:0 6px 18px rgba(0,0,0,.18)}
.fab svg{width:20px;height:20px}

/* Hoja inferior */
.overlay{position:fixed;inset:0;background:var(--overlay);z-index:20}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:21;background:var(--surface);border-radius:20px 20px 0 0;
  max-height:92%;overflow-y:auto;padding-top:8px;padding-bottom:calc(96px + env(safe-area-inset-bottom,0px));
  padding-left:max(18px, env(safe-area-inset-left,0px));padding-right:max(18px, env(safe-area-inset-right,0px));
  max-width:560px;margin:0 auto;animation:up .22s ease-out}
@keyframes up{from{transform:translateY(24px);opacity:.6}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){.sheet{animation:none}}
.grab{width:40px;height:4px;border-radius:2px;background:var(--line);margin:0 auto 10px}
.sheet h3{font-family:var(--f-display);font-size:22px;margin:0 0 14px;display:flex;justify-content:space-between;align-items:center;gap:8px}
.close{border:0;background:transparent;width:36px;height:36px;border-radius:10px;display:grid;place-items:center;color:var(--muted);flex:none}

form{display:flex;flex-direction:column;gap:14px}
.fld{display:flex;flex-direction:column;gap:5px;min-width:0}
.fld label,.lbl{font-size:12px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.fld input,.fld select{height:46px;border-radius:11px;border:1px solid var(--line);background:var(--bg);padding:0 12px;width:100%;min-width:0;font-size:16px}
.fld input:focus,.fld select:focus{outline:2px solid var(--accent);outline-offset:0;border-color:transparent}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.three{display:grid;grid-template-columns:88px 1fr 1fr;gap:10px}
.casas{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.casa-opt{position:relative}
.casa-opt input{position:absolute;opacity:0;inset:0}
.casa-opt span{display:flex;flex-direction:column;align-items:center;gap:5px;padding:9px 4px;border-radius:11px;border:1.5px solid var(--line);font-size:13px;font-weight:700;background:var(--bg)}
.casa-opt span i{width:18px;height:18px;border-radius:5px}
.casa-opt input:checked + span{border-color:var(--ink);background:var(--surface)}
.casa-opt input:focus-visible + span{outline:2px solid var(--accent);outline-offset:2px}
.nights{font-size:13.5px;color:var(--muted);margin-top:-4px}
.err{background:color-mix(in srgb, var(--danger) 12%, transparent);color:var(--danger);border-radius:10px;padding:10px 12px;font-size:14px}
.actions{display:flex;gap:10px;margin-top:4px}
.btn{height:50px;border-radius:13px;border:1px solid var(--line);background:var(--surface);font-weight:700;font-size:16px;padding:0 16px;flex:1}
.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:transparent}
.btn.danger{color:var(--danger)}
.btn.danger.armed{background:var(--danger);color:var(--surface);border-color:transparent}
.btn:disabled{opacity:.6}

.detail{display:flex;flex-direction:column;margin-bottom:16px;border:1px solid var(--line);border-radius:14px;overflow:hidden}
.drow{display:flex;justify-content:space-between;gap:12px;padding:12px 14px;border-top:1px solid var(--line);align-items:center}
.drow:first-child{border-top:0}
.drow span:first-child{color:var(--muted);font-size:14px}
.drow span:last-child{font-weight:700;text-align:right;min-width:0;overflow-wrap:anywhere}
.tag{display:inline-flex;align-items:center;gap:6px}
.links{display:flex;gap:8px;margin-bottom:12px}
.links a,.links button{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;height:44px;border-radius:12px;border:1px solid var(--line);background:var(--bg);text-decoration:none;color:var(--ink);font-weight:700;font-size:14px}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(100px + env(safe-area-inset-bottom,0px));z-index:30;background:var(--ink);color:var(--bg);
  padding:10px 16px;border-radius:12px;font-size:14px;font-weight:700;max-width:calc(100% - 32px)}

/* Ingreso */
.login{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding-block:40px}
.login-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:24px 20px}
.login-card h1{font-family:var(--f-display);font-size:26px;margin:0 0 4px}
.login-card p{margin:0 0 18px;color:var(--muted);font-size:14px}
.login-logo{display:block;width:72px;height:72px;border-radius:18px;margin-bottom:16px}
.login-card .btn{flex:none;height:56px}
.password-control{position:relative}
.password-control input{padding-right:54px}
.password-toggle{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:40px;height:40px;border:0;border-radius:9px;background:transparent;color:var(--muted);display:grid;place-items:center}
.password-toggle svg{width:20px;height:20px}
.password-toggle .eye-closed,.password-toggle[aria-pressed="true"] .eye-open{display:none}
.password-toggle[aria-pressed="true"] .eye-closed{display:block}

@media (min-width:720px){
  body{max-width:1100px;margin:0 auto}
  .summary{max-width:640px}
}
