/* ======== PALETA ======== */
:root{
  --verde-oscuro:#3f5a26;
  --verde:#6b8e4e;
  --verde-claro:#b7d39a;
  --terracota:#d9895a;
  --terracota-osc:#b86d42;
  --dorado:#c9a86a;
  --crema:#f7efdd;
  --crema-claro:#fdf9ee;
  --arena:#ede1c4;
  --texto:#2e3b22;
  --texto-suave:#5a5040;
  --rojo:#c0392b;
  --sombra:0 8px 30px rgba(63,90,38,.12);
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html,body{min-height:100%}
body{
  font-family:'Nunito',system-ui,-apple-system,sans-serif;
  color:var(--texto);background:var(--crema-claro);line-height:1.55;
}
a{color:var(--terracota-osc);text-decoration:none}
a:hover{color:var(--verde-oscuro)}
h1,h2,h3,h4{font-family:'Fraunces',Georgia,serif;color:var(--verde-oscuro);line-height:1.2;font-weight:600}

/* ======== LOGIN ======== */
.login-wrap{
  min-height:100vh;display:grid;grid-template-columns:1fr 1fr;
  background:var(--crema-claro);
}
.login-cover{
  position:relative;background:linear-gradient(160deg,var(--verde-oscuro),var(--verde));
  color:#fff;display:flex;flex-direction:column;justify-content:flex-end;
  padding:56px;overflow:hidden;
}
.login-cover::before{
  content:"";position:absolute;inset:0;
  background:url('/static/patricio-ninos.jpg') center/cover;
  opacity:.35;mix-blend-mode:overlay;
}
.login-cover::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(63,90,38,.4),rgba(63,90,38,.8));
}
.login-cover > *{position:relative;z-index:1}
.login-brand{display:flex;align-items:center;gap:14px;margin-bottom:auto}
.login-brand img{width:58px;height:58px;border-radius:50%;background:#fff;padding:4px}
.login-brand b{font-family:'Fraunces',serif;font-size:1.2rem}
.login-cover h1{color:#fff;font-size:2.4rem;margin-bottom:14px;font-family:'Fraunces',serif;line-height:1.15}
.login-cover p{opacity:.92;max-width:440px;font-size:1.02rem}
.login-cover .quote{
  font-family:'Caveat',cursive;font-size:1.6rem;margin-top:24px;font-style:italic;opacity:.95;
}
.login-form-wrap{display:flex;align-items:center;justify-content:center;padding:40px}
.login-form{width:100%;max-width:400px}
.login-form h2{font-size:1.8rem;margin-bottom:8px}
.login-form p.hint{color:var(--texto-suave);margin-bottom:32px;font-size:.95rem}
.field{margin-bottom:18px}
label{display:block;font-weight:700;color:var(--verde-oscuro);font-size:.9rem;margin-bottom:6px}
input,select,textarea{
  width:100%;padding:12px 14px;border:1.5px solid #e2d5b5;border-radius:12px;
  font:inherit;background:var(--crema-claro);color:var(--texto);transition:border .2s;
}
input:focus,select:focus,textarea:focus{outline:0;border-color:var(--verde);box-shadow:0 0 0 4px rgba(107,142,78,.12)}
.btn{
  display:inline-flex;align-items:center;gap:8px;justify-content:center;
  padding:.85rem 1.6rem;border-radius:999px;
  font-weight:700;font-size:1rem;
  background:var(--terracota);color:#fff;border:2px solid var(--terracota);
  cursor:pointer;transition:all .2s;text-decoration:none;
}
.btn:hover{background:var(--terracota-osc);border-color:var(--terracota-osc);color:#fff}
.btn.outline{background:transparent;color:var(--verde-oscuro);border-color:var(--verde-oscuro)}
.btn.outline:hover{background:var(--verde-oscuro);color:#fff}
.btn.rojo{background:var(--rojo);border-color:var(--rojo)}
.btn.rojo:hover{background:#9b2d20;border-color:#9b2d20}
.btn.wide{width:100%}
.btn.small{padding:.4rem 1rem;font-size:.88rem}

.flash{padding:12px 14px;border-radius:12px;margin-bottom:16px;font-size:.95rem}
.flash.error{background:#fce4d6;color:#8c3d1a;border:1px solid var(--terracota)}
.flash.ok{background:#e8f4d9;color:#3f5a26;border:1px solid var(--verde)}

@media(max-width:860px){
  .login-wrap{grid-template-columns:1fr}
  .login-cover{min-height:40vh}
}

/* ======== LAYOUT PANEL ======== */
.layout{display:grid;grid-template-columns:260px 1fr;min-height:100vh}
aside{
  background:linear-gradient(180deg,var(--verde-oscuro),#2c3f1a);
  color:#dce3cd;padding:28px 18px;position:sticky;top:0;align-self:start;height:100vh;
  display:flex;flex-direction:column;
}
aside .brand{display:flex;align-items:center;gap:10px;margin-bottom:30px}
aside .brand img{width:46px;height:46px;border-radius:50%;background:#fff;padding:3px}
aside .brand b{font-family:'Fraunces',serif;color:#fff;font-size:1.05rem;line-height:1.1}
aside nav{display:flex;flex-direction:column;gap:6px;flex:1}
aside nav a{
  display:flex;align-items:center;gap:10px;
  color:#dce3cd;padding:10px 14px;border-radius:10px;font-weight:600;font-size:.95rem;
  transition:background .2s;
}
aside nav a:hover{background:rgba(255,255,255,.08);color:#fff}
aside nav a.active{background:var(--terracota);color:#fff}
aside nav a .ico{width:22px;display:inline-block;text-align:center}
aside .bottom{border-top:1px solid rgba(255,255,255,.12);padding-top:16px;margin-top:16px;font-size:.85rem;opacity:.9}
aside .bottom a{color:#fff;display:block;margin-top:6px}

main{padding:32px 36px;max-width:1200px;width:100%}
.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px;gap:14px;flex-wrap:wrap}
.topbar h1{font-size:1.8rem}
.topbar .hello{color:var(--texto-suave);font-size:.95rem}

/* ======== CARDS / KPIs ======== */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:30px}
@media(max-width:900px){.kpis{grid-template-columns:repeat(2,1fr)}}
.kpi{
  background:#fff;padding:22px;border-radius:18px;box-shadow:var(--sombra);
  border:1px solid rgba(201,168,106,.22);
  display:flex;flex-direction:column;gap:6px;position:relative;overflow:hidden;
}
.kpi::after{content:"";position:absolute;right:-30px;top:-30px;width:120px;height:120px;border-radius:50%;background:var(--verde-claro);opacity:.25}
.kpi small{font-size:.82rem;color:var(--texto-suave);font-weight:700;text-transform:uppercase;letter-spacing:1px}
.kpi strong{font-family:'Fraunces',serif;font-size:2rem;color:var(--verde-oscuro);line-height:1}
.kpi.t{border-left:4px solid var(--terracota)}
.kpi.v{border-left:4px solid var(--verde)}
.kpi.d{border-left:4px solid var(--dorado)}
.kpi.o{border-left:4px solid var(--terracota-osc)}

/* ======== Cards / tablas ======== */
.card{background:#fff;border-radius:18px;box-shadow:var(--sombra);padding:24px;margin-bottom:22px;border:1px solid rgba(201,168,106,.22)}
.card h2{font-size:1.3rem;margin-bottom:14px}
.card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;gap:12px;flex-wrap:wrap}
.chips{display:flex;gap:8px}
.chip{
  padding:.35rem .9rem;border-radius:999px;font-size:.82rem;font-weight:700;
  background:var(--crema);color:var(--texto-suave);border:1px solid var(--arena);
}
.chip.active{background:var(--verde-oscuro);color:#fff;border-color:var(--verde-oscuro)}
.chip.rojo{background:#fce4d6;color:#8c3d1a;border-color:var(--terracota)}
.chip.verde{background:#e8f4d9;color:#3f5a26;border-color:var(--verde)}
.chip.amarillo{background:#f8e9c5;color:#6b5a3e;border-color:var(--dorado)}

table{width:100%;border-collapse:collapse;font-size:.95rem}
table th{text-align:left;padding:10px 12px;color:var(--texto-suave);font-size:.8rem;text-transform:uppercase;letter-spacing:1px;border-bottom:1px solid #eadfbf}
table td{padding:12px;border-bottom:1px solid #f3ead3}
table tr:hover td{background:var(--crema-claro)}
table .acciones{white-space:nowrap}

.badge{display:inline-block;padding:3px 9px;border-radius:999px;font-size:.75rem;font-weight:700}
.badge.pendiente{background:#f8e9c5;color:#6b5a3e}
.badge.confirmada{background:#e8f4d9;color:#3f5a26}
.badge.completada{background:#d3e3dd;color:#2c5349}
.badge.cancelada{background:#fce4d6;color:#8c3d1a;text-decoration:line-through}

.empty{padding:40px;text-align:center;color:var(--texto-suave)}
.empty b{display:block;color:var(--verde-oscuro);font-family:'Fraunces',serif;font-size:1.2rem;margin-bottom:6px}

.row-2{display:grid;grid-template-columns:1fr 1fr;gap:22px}
@media(max-width:900px){.row-2{grid-template-columns:1fr}}

/* ======== Agenda ======== */
.slot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:10px;margin-top:12px}
.slot-grid label{
  display:flex;align-items:center;justify-content:center;
  padding:12px;border-radius:10px;background:var(--crema);font-weight:700;cursor:pointer;
  color:var(--verde-oscuro);border:2px solid transparent;transition:all .15s;user-select:none;
}
.slot-grid input[type=checkbox]{display:none}
.slot-grid input[type=checkbox]:checked + label{background:var(--verde-oscuro);color:#fff;border-color:var(--verde-oscuro)}
.cupos-lista{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.cupo{background:var(--crema-claro);border-radius:14px;padding:14px;border:1px solid var(--arena);display:flex;justify-content:space-between;align-items:center}
.cupo.ocupado{background:#f3ead3;opacity:.8}
.cupo strong{display:block;font-family:'Fraunces',serif;color:var(--verde-oscuro);font-size:1.1rem}
.cupo small{color:var(--texto-suave)}
.cupo button{background:transparent;border:0;cursor:pointer;font-size:1.2rem;color:var(--rojo);padding:4px}

/* ======== Detalle ======== */
.detail-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:22px}
@media(max-width:900px){.detail-grid{grid-template-columns:1fr}}
dl.info dt{font-weight:800;color:var(--texto-suave);font-size:.8rem;text-transform:uppercase;letter-spacing:1px;margin-top:14px}
dl.info dd{color:var(--texto);font-size:1rem;margin-top:3px}

.menu-movil{display:none}
@media(max-width:800px){
  .layout{grid-template-columns:1fr}
  aside{position:fixed;left:-280px;z-index:50;width:260px;transition:left .3s;box-shadow:10px 0 30px rgba(0,0,0,.2)}
  aside.open{left:0}
  .menu-movil{display:inline-flex;background:var(--verde-oscuro);color:#fff;border:0;padding:8px 12px;border-radius:10px;cursor:pointer}
  main{padding:18px}
}

/* ======== Mensajes ======== */
.msg{
  background:#fff;border-radius:16px;padding:18px;margin-bottom:12px;
  box-shadow:var(--sombra);display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:start;
  border-left:4px solid var(--verde);
}
.msg.nuevo{border-left-color:var(--terracota);background:#fffaf3}
.msg .avatar{width:44px;height:44px;border-radius:50%;background:linear-gradient(135deg,var(--verde-claro),var(--verde));color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-family:'Fraunces',serif}
.msg .cuerpo h4{color:var(--verde-oscuro);font-family:'Fraunces',serif;font-size:1.05rem;margin-bottom:3px}
.msg .cuerpo small{color:var(--texto-suave);font-size:.82rem}
.msg .cuerpo p{margin-top:8px;color:var(--texto);font-size:.95rem}
.msg .acts{display:flex;flex-direction:column;gap:6px}
