/* Calendario: tablero con relieve. Cada día es una tecla elevada; cada reserva, una ficha del color de su apartamento. */

.rtop{color:#EAF2FF;padding-bottom:64px;
  background:linear-gradient(170deg,#8A7E6F 0%,#7F7364 55%,#6A5F52 100%)}
.rtop .bar{display:flex;align-items:center;justify-content:space-between;gap:12px 20px;flex-wrap:wrap;
  padding-block:calc(16px + env(safe-area-inset-top,0px)) 8px}
.rtop .brand{color:#fff}
.rtop .brand .sun{color:var(--amber)}
.rtop h1{margin-top:14px;font-size:clamp(40px,6.4vw,68px);font-weight:400;letter-spacing:-.01em;color:#fff}
.hours-line{margin-top:14px;color:#EFEAE2;display:flex;flex-wrap:wrap;gap:6px 26px}
.hours-line b{color:#fff;font-weight:700;margin-right:4px}
.who{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:14px;color:#EFEAE2}
.badge{border-radius:999px;padding:4px 12px;font-weight:700;color:#fff;background:linear-gradient(180deg,var(--c1,#4E6A96),var(--c2,#34507A));box-shadow:0 2px 0 var(--c3,#22385A)}
.who .btn.plain{padding:6px 12px;font-size:13px}

main{margin-top:-40px;padding-bottom:calc(56px + env(safe-area-inset-bottom,0px))}

.panel{background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:22px;
  box-shadow:0 18px 40px -22px rgba(var(--shadow),.55)}
.panel+.panel{margin-top:20px}
.panel h2{font-size:28px;font-weight:600;letter-spacing:-.02em;margin-bottom:12px}
.center{max-width:480px;margin-inline:auto}
.center p{margin-top:8px;color:var(--muted)}
.muted{color:var(--muted)}
.hint{color:var(--muted);font-size:14px;margin-top:10px}

/* Pestañas */
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}
.tabs button{border:0;cursor:pointer;border-radius:999px;padding:9px 18px;font-weight:600;background:var(--surface);color:var(--ink);
  box-shadow:inset 0 0 0 1px var(--line),0 3px 0 var(--tile-edge);transition:transform .12s}
.tabs button:active{transform:translateY(2px)}
.tabs button[aria-selected="true"]{background:var(--night);color:#fff;box-shadow:0 3px 0 #1E1913}

/* Mensajes */
.msg{border-radius:12px;padding:11px 14px;margin-bottom:16px;font-weight:500}
.msg.ok{background:var(--ok-bg);color:var(--ok)}
.msg.err{background:var(--danger-bg);color:var(--danger)}

/* Formularios */
.form{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}
.fld{display:flex;flex-direction:column;gap:5px}
.fld label{font-weight:600;font-size:14px}
input,select{background:var(--surface-2);border:1.5px solid var(--line);border-radius:10px;padding:10px 12px;min-height:44px}
input:focus,select:focus{outline:3px solid var(--amber);outline-offset:1px;border-color:transparent}
.center .fld{margin-top:14px}
.center input{width:100%}
.center form .btn{margin-top:16px}

/* Tablero del mes */
.nav{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}
.nav h2{margin:0;font-size:clamp(32px,5.4vw,48px);font-weight:600;text-align:center;flex:1;
  text-shadow:0 1px 0 var(--tile-edge),0 2px 0 var(--tile-edge),0 3px 0 var(--tile-edge),0 10px 14px rgba(var(--shadow),.25)}
.round{flex:none;width:48px;height:48px;border-radius:50%;border:0;cursor:pointer;display:grid;place-items:center;font-size:26px;line-height:1;
  background:linear-gradient(180deg,var(--tile-top),var(--tile-bot));color:var(--ink);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 4px 0 var(--tile-edge),0 10px 14px -8px rgba(var(--shadow),.55);transition:transform .12s,box-shadow .12s}
.round:active{transform:translateY(3px);box-shadow:0 1px 0 var(--tile-edge)}

.stage{perspective:1400px}
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;transform-origin:50% 0}
.cal.flip{animation:flip .38s ease-out}
@keyframes flip{from{transform:rotateX(-14deg) translateY(-6px);opacity:.3}}
.dow{text-align:center;font-weight:700;font-size:14px;color:var(--muted);padding-bottom:4px}

.day{position:relative;min-height:104px;padding:7px 6px 6px;border:0;border-radius:14px;cursor:pointer;text-align:left;
  display:flex;flex-direction:column;gap:4px;align-items:stretch;min-width:0;
  background:linear-gradient(180deg,var(--tile-top),var(--tile-bot));color:var(--ink);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 5px 0 var(--tile-edge),0 12px 16px -10px rgba(var(--shadow),.55);
  transition:transform .15s,box-shadow .15s}
.day:hover{transform:translateY(-3px) rotateX(5deg);box-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 8px 0 var(--tile-edge),0 18px 22px -10px rgba(var(--shadow),.6)}
.day:active{transform:translateY(3px);box-shadow:0 2px 0 var(--tile-edge)}
.day.out{background:transparent;box-shadow:none;cursor:default;pointer-events:none}
.day .n{align-self:flex-start;font-family:var(--font);font-weight:700;font-size:18px;line-height:1;padding:2px 3px}
.day.past{opacity:.55}
.day.today .n{display:inline-grid;place-items:center;min-width:28px;height:28px;border-radius:50%;padding:0 6px;
  background:var(--amber);color:#2A1800;box-shadow:0 2px 0 var(--amber-edge)}
.day.sel{box-shadow:0 0 0 3px var(--amber),0 6px 0 var(--amber-edge),0 14px 18px -8px rgba(232,137,12,.6);transform:translateY(-2px)}

/* Fichas de reserva */
.chip{display:block;border-radius:8px;padding:3px 6px;font-size:12.5px;font-weight:700;line-height:1.25;color:#fff;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  background:linear-gradient(180deg,var(--c1),var(--c2));text-shadow:0 1px 1px rgba(0,0,0,.35);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.28),0 2px 0 var(--c3)}
.chip .t{font-weight:500;opacity:.92;margin-left:3px}
.chip.mine{outline:2px solid var(--amber);outline-offset:1px}
.more{font-size:12px;font-weight:600;color:var(--muted);padding-left:3px}

/* Leyenda de colores */
.legend{margin-top:22px;display:flex;flex-wrap:wrap;gap:8px}
.legend span{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--muted)}
.legend i{width:26px;height:16px;border-radius:5px;background:linear-gradient(180deg,var(--c1),var(--c2));box-shadow:0 2px 0 var(--c3)}
.legend .sep{flex-basis:100%;font-weight:500}

/* Panel del día */
.dayhead{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap}
.dayhead h2{margin:0}
.list{display:grid;gap:10px;margin-top:6px}
.row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px 12px 10px 14px;border-radius:12px;
  background:var(--surface-2);border-left:8px solid var(--c1,var(--line))}
.row.mine{box-shadow:0 0 0 2px var(--amber)}
.row b{font-weight:700}

.timeline{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:3px;margin:14px 0 4px}
.timeline .h{height:26px;border-radius:5px;background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--line)}
.timeline .h.taken{background:linear-gradient(180deg,var(--c1),var(--c2));box-shadow:0 2px 0 var(--c3)}
.tl-scale{display:flex;justify-content:space-between;font-size:12px;color:var(--muted)}

.reserve-form{margin-top:22px;padding-top:20px;border-top:1px dashed var(--line)}
.reserve-form h3{font-size:19px;font-weight:700;margin-bottom:12px}

/* Admin */
.admin-row{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:8px 0;border-bottom:1px solid var(--line)}

@media (max-width:640px){
  .panel{padding:16px;border-radius:18px}
  .cal{gap:5px}
  .day{min-height:78px;padding:5px 3px 4px;border-radius:10px}
  .day .n{font-size:15px}
  .day.today .n{min-width:24px;height:24px}
  .chip{font-size:11.5px;padding:2px 3px;text-align:center}
  .chip .t{display:none}
  .round{width:44px;height:44px}
  .tabs button{padding:9px 14px}
}

/* Mi cuenta (vecino) y estado de cuotas (administrador) */
.acct-ok{padding:12px 14px;border-radius:12px;background:var(--ok-bg);color:var(--ok);font-weight:500;margin-bottom:8px}
.acct-due{padding:12px 14px;border-radius:12px;background:var(--danger-bg);color:var(--danger);font-weight:500;margin-bottom:8px}
.row.acct{border-left-color:var(--line)}
.row.acct.ok{border-left-color:#3E8E5A}
.row.acct.due{border-left-color:var(--amber)}
.row.acct.late{border-left-color:#B3402F}
.row.acct .st{color:var(--muted);font-weight:500}
.lg{overflow-x:auto;margin-top:6px}
.lg-row{display:grid;grid-template-columns:64px repeat(var(--n,2),minmax(104px,1fr)) minmax(96px,auto);gap:8px;align-items:center;padding:7px 0;border-bottom:1px solid var(--line);min-width:420px}
.lg-head{font-size:13px;font-weight:700;color:var(--muted)}
.lg-apt{display:inline-block;border-radius:8px;padding:3px 8px;color:#fff;text-align:center;background:linear-gradient(180deg,var(--c1,#4E6A96),var(--c2,#34507A))}
.lg-cell{border:0;cursor:pointer;border-radius:8px;padding:8px 6px;font-weight:700;font-size:13px}
.lg-cell.paid{background:var(--ok-bg);color:var(--ok)}
.lg-cell.open{background:var(--surface-2);color:var(--muted);box-shadow:inset 0 0 0 1px var(--line)}
.pay-h{margin-top:26px;font-size:19px;font-weight:700}
.pay{margin:10px 0 0;border-top:1px solid var(--line)}
.pay div{display:flex;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid var(--line)}
.pay dt{font-weight:600}
.pay dd{margin:0;text-align:right;user-select:all;overflow-wrap:anywhere}

/* Avisos */
textarea{background:var(--surface-2);border:1.5px solid var(--line);border-radius:10px;padding:10px 12px;width:100%;resize:vertical;font:inherit}
textarea:focus{outline:3px solid var(--amber);outline-offset:1px;border-color:transparent}
.notice-form .fld.wide{flex:1 1 100%}
.notice{padding:16px 0;border-top:1px solid var(--line)}
.notice:first-of-type{border-top:0}
.n-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.notice h3{font-size:21px;font-weight:700;letter-spacing:-.01em}
.n-new{border-radius:999px;padding:2px 10px;font-size:12px;font-weight:700;background:var(--amber);color:#2A1800}
.n-body{margin-top:8px;white-space:pre-line}
.n-date{margin-top:8px;font-size:13px;color:var(--muted)}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--amber);margin-left:6px;vertical-align:middle}

/* Informe financiero */
.repmonths{display:flex;gap:8px;flex-wrap:wrap;margin:4px 0 16px}
.chipbtn{border:0;cursor:pointer;border-radius:999px;padding:7px 14px;font-weight:600;background:var(--surface-2);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line)}
.chipbtn[aria-pressed="true"]{background:var(--night);color:#fff}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}
.kpi{border-radius:14px;padding:14px 16px;background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--line);display:flex;flex-direction:column;gap:4px}
.kpi span{font-weight:600;color:var(--muted);font-size:14px}
.kpi b{font-family:var(--font-display);font-size:30px;font-weight:600;letter-spacing:-.01em;line-height:1.1}
.kpi small{color:var(--muted);font-size:13px}
.kpi.pos b{color:var(--ok)}.kpi.neg b{color:var(--danger)}
.row.exp .amt{text-align:right}
.row.exp em{font-style:normal;font-size:13px;color:var(--muted);margin-left:6px}
.row.exp.ok{border-left-color:#3E8E5A}.row.exp.due{border-left-color:var(--amber)}

/* Reglas del área social */
.rules .rules-h{margin-top:24px;font-size:22px;font-weight:700;letter-spacing:-.01em}
.rules .rules-h:first-of-type{margin-top:10px}
.rules p{margin-top:8px}
.rules-list{margin:10px 0 0;padding-left:22px;display:grid;gap:8px}
.rules-list li{padding-left:4px}

/* Reportes y solicitudes */
.req,.req-adm{padding:16px 0;border-top:1px solid var(--line)}
.req h3,.req-adm h3{font-size:19px;font-weight:700}
.req-note{margin-top:8px;padding:10px 12px;border-radius:10px;background:var(--surface-2);box-shadow:inset 3px 0 0 var(--amber)}
.pill{border-radius:999px;padding:2px 11px;font-size:12.5px;font-weight:700}
.pill.recibido{background:var(--surface-2);color:var(--muted);box-shadow:inset 0 0 0 1px var(--line)}
.pill.proceso{background:var(--amber);color:#2A1800}
.pill.resuelto{background:var(--ok-bg);color:var(--ok)}

/* Personal y contactos */
.row.contact{align-items:flex-start}
.c-actions{display:flex;gap:8px;flex-wrap:wrap}
.c-actions .btn{text-decoration:none}
