:root{
  /* GI Realty — oro metálico, carbón y marfil.
     Los valores vienen del sistema de diseño de la marca. El oro plano
     (#c9a34e) es decorativo: para texto y bordes se usa el bronce, que
     sí tiene contraste suficiente sobre marfil. */
  --bg:#FAF8F2; --surface:#FFFFFF; --surface2:#F3F0E8;
  --ink:#121212; --ink-soft:#635D52; --line:#E7E2D6;
  /* El borde de los campos escribibles va aparte: --line no llega ni a 1,3:1
     sobre el marfil y el recuadro no se veía. Éste pasa de 3:1. */
  --line-campo:#8F8A7C;
  --accent:#8F5E25; --accent-ink:#FFFFFF; --accent-soft:#F7F0DE;
  --gold:#C9A34E;
  --gold-grad:linear-gradient(135deg,#8F5E25 0%,#D9B45A 28%,#FBF4A1 52%,#D9B45A 74%,#8F5E25 100%);
  /* El degradado de los botones se queda en la banda clara: sobre los tramos
     de bronce oscuro las letras (#1A1A1A) se quedaban en 3,15:1. */
  --gold-grad-btn:linear-gradient(135deg,#D9B45A 0%,#FBF4A1 50%,#D9B45A 100%);
  --amber-fg:#8A6014; --amber-bg:#F6ECD4;
  --danger:#A24438; --danger-bg:#F2E0DC;
  --good:#3F6444; --good-bg:rgba(79,122,82,.15);
  --info:#3F6480; --info-bg:rgba(63,100,128,.14);
  --pill-bg-s:42%; --pill-bg-l:93%; --pill-bd-s:34%; --pill-bd-l:82%;
  --pill-fg-s:44%; --pill-fg-l:29%;
  color-scheme:light;
  --shadow:0 1px 3px rgba(43,39,31,.08),0 1px 2px rgba(43,39,31,.04);
  --shadow-lift:0 -12px 40px rgba(43,39,31,.16);
  --scrim:rgba(43,39,31,.45);
  --font-display:'Cormorant Garamond','Times New Roman',serif;
  --font-sans:'Manrope',system-ui,-apple-system,sans-serif;
  --font-mono:'IBM Plex Mono',ui-monospace,SFMono-Regular,monospace;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#121212; --surface:#1A1A1A; --surface2:#242424;
    --ink:#FAF8F2; --ink-soft:#A49C8C; --line:#2F2F2F; --line-campo:#726C60;
    --accent:#D9B45A; --accent-ink:#121212; --accent-soft:#2A2313;
    --gold:#D9B45A;
    --amber-fg:#E0B86A; --amber-bg:#332810;
    --danger:#E08A72; --danger-bg:#3A1D16;
    --good:#8FC294; --good-bg:rgba(126,178,131,.18);
    --info:#9FC0DA; --info-bg:rgba(125,164,196,.18);
    --pill-bg-s:26%; --pill-bg-l:19%; --pill-bd-s:26%; --pill-bd-l:30%;
    --pill-fg-s:40%; --pill-fg-l:76%;
    color-scheme:dark;
    --shadow:0 1px 3px rgba(0,0,0,.45);
    --shadow-lift:0 -12px 40px rgba(0,0,0,.6);
    --scrim:rgba(0,0,0,.62);
  }
}
:root[data-theme="dark"]{
  --bg:#121212; --surface:#1A1A1A; --surface2:#242424;
  --ink:#FAF8F2; --ink-soft:#A49C8C; --line:#2F2F2F; --line-campo:#726C60;
  --accent:#D9B45A; --accent-ink:#121212; --accent-soft:#2A2313;
  --gold:#D9B45A;
  --amber-fg:#E0B86A; --amber-bg:#332810;
  --danger:#E08A72; --danger-bg:#3A1D16;
  --good:#8FC294; --good-bg:rgba(126,178,131,.18);
  --info:#9FC0DA; --info-bg:rgba(125,164,196,.18);
  --pill-bg-s:26%; --pill-bg-l:19%; --pill-bd-s:26%; --pill-bd-l:30%;
  --pill-fg-s:40%; --pill-fg-l:76%;
  color-scheme:dark;
  --shadow:0 1px 3px rgba(0,0,0,.45);
  --shadow-lift:0 -12px 40px rgba(0,0,0,.6);
  --scrim:rgba(0,0,0,.62);
}
*{box-sizing:border-box}
/* Nada de «tirar para recargar»: en el móvil, al llegar arriba del todo y
   seguir arrastrando, Chrome recargaba la app entera y parecía que se
   reiniciaba sola. Esto lo corta sin quitar el rebote normal del scroll. */
html{overscroll-behavior-y:contain;}
body{overscroll-behavior-y:contain;}
body{margin:0; background:var(--bg); color:var(--ink);
  font-family:var(--font-sans);
  font-variant-numeric:tabular-nums;
  font-size:15.5px; line-height:1.5;}
body.locked{overflow:hidden}
h1,h2{font-family:var(--font-display); font-weight:600; letter-spacing:.01em;
  font-variant-numeric:lining-nums tabular-nums;}
h3,h4{font-weight:700; letter-spacing:-.005em;}
h1,h2,h3,h4{
  text-wrap:balance; margin:0;}
button,input,textarea,select{font:inherit; color:inherit;}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--accent); outline-offset:2px; border-radius:4px;}
.vacio{color:var(--ink-soft); font-size:.88rem; margin:2px 0 4px; font-style:italic;}

.topbar{position:sticky; top:0; z-index:10; background:var(--bg);
  border-bottom:1px solid var(--line);}
.topbar-in{max-width:1060px; margin:0 auto; padding:14px 18px 0;
  display:flex; align-items:baseline; gap:6px 14px;
  /* SIN saltos de línea: si el chip pasaba de «Al día» a «Guardando…» y no
     cabía, la cabecera crecía 30px y empujaba toda la pantalla hacia abajo.
     Cada vez que tocabas algo. Ahora la fecha se recorta y el alto no varía. */
  flex-wrap:nowrap;}
.brand{display:inline-flex; align-items:center; gap:.5rem;
  flex:none; white-space:nowrap;
  font-family:var(--font-display); font-size:1.18rem; font-weight:600;
  letter-spacing:.17em; text-transform:uppercase; color:var(--accent);}
.brand .mark{width:17px; height:15px; flex:none; display:block;}
.brand .tx{background:var(--gold-grad); -webkit-background-clip:text;
  background-clip:text; color:transparent;}
@supports not (background-clip:text){ .brand .tx{color:var(--accent);} }
.brand em{font-style:normal; font-family:var(--font-sans); font-size:.58rem;
  font-weight:600; letter-spacing:.16em; color:var(--ink-soft); align-self:center;}
.today-label{color:var(--ink-soft); font-size:.92rem;
  flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.savechip{margin-left:auto; flex:none; white-space:nowrap; font-size:.8rem; color:var(--ink-soft);
  background:var(--surface2); border:1px solid var(--line);
  padding:2px 10px; border-radius:99px; white-space:nowrap;}
.savechip.ok{color:var(--accent); border-color:var(--accent);}
.tabs{max-width:1060px; margin:0 auto; padding:10px 12px 0; display:flex; gap:2px;}
.tab{background:none; border:none; border-bottom:3px solid transparent;
  padding:8px 14px 10px; color:var(--ink-soft); font-weight:600; font-size:.98rem;}
.tab[aria-selected="true"]{color:var(--ink); border-bottom-color:var(--accent);}
/* El aviso flota por encima: antes ocupaba sitio entre la cabecera y el
   contenido, así que al aparecer empujaba todo hacia abajo y, cuatro
   segundos después, lo devolvía de golpe. Ese era el otro tic. */
.notice{display:none; position:fixed; z-index:35;
  left:12px; right:12px; bottom:calc(78px + env(safe-area-inset-bottom));
  padding:10px 14px; box-shadow:var(--shadow-lift);
  background:var(--amber-bg); color:var(--amber-fg); border-radius:10px; font-size:.88rem;}
.notice.show{display:block}
@media (min-width:681px){
  .notice{left:auto; right:18px; bottom:18px; max-width:420px;}
}

main{max-width:1060px; margin:0 auto; padding:20px 18px 70px;}
.view{display:none}
.view.active{display:block}

/* ---------- piezas comunes ---------- */
.pill{display:inline-flex; align-items:center; gap:7px;
  padding:3px 12px; border-radius:99px; font-weight:600; font-size:.95rem;
  background:hsl(var(--h,150) var(--pill-bg-s) var(--pill-bg-l));
  border:1px solid hsl(var(--h,150) var(--pill-bd-s) var(--pill-bd-l));
  color:hsl(var(--h,150) var(--pill-fg-s) var(--pill-fg-l));}
.dot{width:10px; height:10px; border-radius:99px; flex:none;
  background:hsl(var(--h,150) 50% 45%);}
.est{font-size:.7rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em;
  padding:2px 8px; border-radius:99px; white-space:nowrap;}
.est.activo{background:var(--accent-soft); color:var(--accent);}
.est.atencion{background:var(--amber-bg); color:var(--amber-fg);}
.est.pausado{background:var(--surface2); color:var(--ink-soft);}
.est.mal{background:var(--danger-bg); color:var(--danger);}
:root[data-theme="dark"] .est.activo{color:var(--ink)}
.badge{font-size:.72rem; font-weight:700; background:var(--surface2); color:var(--ink-soft);
  border:1px solid var(--line); border-radius:99px; padding:1px 7px;
  font-variant-numeric:tabular-nums; white-space:nowrap;}
.badge.hay{background:var(--amber-bg); color:var(--amber-fg); border-color:transparent;}
.chev{color:var(--ink-soft); font-size:1.1rem; flex:none;}
.add-row{display:flex; gap:7px;}
.add-row input{flex:1; min-width:0; background:var(--surface); border:1px dashed var(--line);
  border-radius:10px; padding:8px 11px;}
.add-row button{background:var(--accent); color:var(--accent-ink); border:none;
  border-radius:10px; padding:0 15px; font-weight:700;}
textarea{width:100%; background:var(--surface); border:1px solid var(--line-campo);
  border-radius:12px; padding:10px 12px; resize:vertical; min-height:64px;}
.rotulo{display:block; font-weight:600; font-size:.75rem;
  text-transform:uppercase; letter-spacing:.06em; color:var(--ink-soft); margin-bottom:5px;}

/* ---------- HOY ---------- */
.hoy-head{display:flex; flex-wrap:wrap; align-items:baseline; gap:8px 16px; margin-bottom:18px;}
.hoy-head h2{font-size:1.9rem; font-weight:700;}
.hoy-head .fecha{color:var(--ink-soft);}
.progreso{margin-left:auto; font-variant-numeric:tabular-nums;
  background:var(--accent-soft); color:var(--accent);
  padding:3px 12px; border-radius:99px; font-weight:600; font-size:.88rem;}
:root[data-theme="dark"] .progreso{color:var(--ink)}
.bloques{display:flex; flex-direction:column; gap:10px; max-width:660px;}
.bloque{display:flex; align-items:stretch; gap:0;
  background:var(--surface); border:1px solid var(--line);
  border-radius:14px; box-shadow:var(--shadow); overflow:hidden;}
.bloque.hecho{opacity:.6}
.bloque.pausa{opacity:.5}
.bloque .orden{font-family:var(--font-sans); font-weight:600;
  color:var(--ink-soft); width:2.2em; flex:none; font-size:.85rem;
  display:flex; align-items:center; justify-content:center;}
.check{flex:none; align-self:center; width:36px; height:36px; border-radius:99px;
  border:2px solid var(--line); background:var(--surface); color:transparent;
  display:flex; align-items:center; justify-content:center; font-size:1rem; font-weight:700;}
.check.on{background:var(--accent); border-color:var(--accent); color:var(--accent-ink);}
.abrir{flex:1; min-width:0; display:flex; align-items:center; gap:10px;
  background:none; border:none; text-align:left; padding:14px 14px 14px 12px;}
.abrir .quien{color:var(--ink-soft); font-size:.85rem; min-width:0;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.abrir .sp{flex:1}
.comida{display:flex; align-items:center; gap:10px;
  color:var(--amber-fg); font-weight:600; font-size:.85rem; padding:2px 6px;}
.comida::before,.comida::after{content:""; flex:1; border-top:1px dashed var(--line);}
.descanso{background:var(--surface); border:1px dashed var(--line); border-radius:14px;
  padding:26px; text-align:center; color:var(--ink-soft); max-width:660px;}
.bloque-caja{max-width:660px; margin-top:24px;}

/* arrastres */
.arrastres{max-width:660px; margin-top:24px; background:var(--surface);
  border:1px solid var(--line); border-left:3px solid var(--amber-fg);
  border-radius:14px; padding:14px 16px;}
.arrastres h3{font-size:.8rem; text-transform:uppercase; letter-spacing:.06em;
  color:var(--amber-fg); margin-bottom:10px;}
.arr-item{display:flex; align-items:center; gap:9px; padding:5px 0; font-size:.92rem;
  border-top:1px solid var(--line);}
.arr-item:first-of-type{border-top:none}
.arr-item .txt{flex:1; min-width:0; overflow-wrap:anywhere;}
.arr-item .cuando{font-size:.75rem; color:var(--ink-soft); white-space:nowrap;
  font-variant-numeric:tabular-nums;}
.arr-mover{background:var(--accent-soft); color:var(--accent); border:none;
  border-radius:8px; padding:5px 10px; font-size:.78rem; font-weight:700; white-space:nowrap;}
:root[data-theme="dark"] .arr-mover{color:var(--ink)}

/* agenda */
.ag-block{display:flex; flex-direction:column; gap:6px;}
.ag-item{display:flex; align-items:center; gap:9px; font-size:.9rem;}
.ag-item .txt{flex:1; min-width:0; overflow-wrap:anywhere;}
.ag-item.done .txt{text-decoration:line-through; color:var(--ink-soft);}
.ag-chk{width:24px; height:24px; border-radius:7px; border:1.5px solid var(--line);
  background:var(--surface); color:transparent; font-size:.72rem; font-weight:700;
  display:flex; align-items:center; justify-content:center; flex:none; padding:0;}
.ag-item.done .ag-chk{background:var(--accent); border-color:var(--accent); color:var(--accent-ink);}
.ag-item .del{background:none; border:none; color:var(--ink-soft); padding:2px 5px; font-size:1.05rem;}
.ag-item .del:hover{color:var(--danger)}
.caja-agenda{max-width:660px; margin-top:24px;}
.caja-agenda .ag-item{background:var(--surface); border:1px solid var(--line);
  border-radius:10px; padding:8px 12px;}

/* ---------- SEMANA ---------- */
.sem-head{display:flex; align-items:center; gap:10px; margin-bottom:16px; flex-wrap:wrap;}
.sem-head h2{font-size:1.35rem;}
.sem-nav{display:flex; gap:6px; margin-left:auto;}
.sem-nav button{background:var(--surface); border:1px solid var(--line);
  border-radius:10px; padding:6px 13px; font-weight:600;}
.week-scroll{overflow-x:auto; padding-bottom:6px;}
.week-grid{display:grid; grid-template-columns:repeat(7,minmax(132px,1fr)); gap:8px; min-width:960px;}
.day-col{background:var(--surface); border:1px solid var(--line); border-radius:14px;
  padding:8px; display:flex; flex-direction:column; gap:7px;}
.day-col.es-hoy{border-color:var(--accent); box-shadow:0 0 0 1px var(--accent);}
.day-head{background:none; border:none; width:100%; display:flex; align-items:baseline;
  gap:6px; padding:4px 4px 2px; border-radius:8px;}
.day-head .dnom{font-family:var(--font-sans); font-weight:600; font-size:.95rem;}
.day-head .fnum{color:var(--ink-soft); font-weight:500; font-size:.78rem;
  font-variant-numeric:tabular-nums; margin-left:auto;}
.day-head:hover{background:var(--surface2)}
.celda-wrap{display:flex; align-items:stretch; border-radius:10px; overflow:hidden;
  background:hsl(var(--h,150) var(--pill-bg-s) var(--pill-bg-l));
  border:1px solid hsl(var(--h,150) var(--pill-bd-s) var(--pill-bd-l));}
.celda-wrap.pausa{opacity:.5}
.celda-name{flex:1; min-width:0; text-align:left; border:none; background:none;
  color:hsl(var(--h,150) var(--pill-fg-s) var(--pill-fg-l));
  font-weight:600; font-size:.88rem; padding:9px 10px;
  display:flex; align-items:center; gap:6px;}
.celda-name .nm{overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.celda-name .n-abiertas{font-size:.7rem; font-weight:700; opacity:.7;}
.celda-chk{border:none; background:none; font-weight:700; opacity:.28; padding:9px 13px;
  color:hsl(var(--h,150) var(--pill-fg-s) var(--pill-fg-l));
  border-left:1px dashed hsl(var(--h,150) var(--pill-bd-s) var(--pill-bd-l));}
.celda-chk.on{opacity:1}
.celda{border:1px solid hsl(var(--h,150) var(--pill-bd-s) var(--pill-bd-l));
  text-align:left; display:flex; align-items:center; gap:8px;
  background:hsl(var(--h,150) var(--pill-bg-s) var(--pill-bg-l));
  color:hsl(var(--h,150) var(--pill-fg-s) var(--pill-fg-l));
  border-radius:10px; padding:8px 10px; font-weight:600; font-size:.88rem; width:100%;}
.celda .vb{margin-left:auto; font-weight:700; opacity:.28;}
.celda.on .vb{opacity:1}
.mini-comida{text-align:center; color:var(--amber-fg); background:var(--amber-bg);
  border-radius:8px; font-size:.72rem; font-weight:600; padding:2px;}
.ag-zone{display:flex; flex-direction:column; gap:5px; margin-top:3px;
  border-top:1px dashed var(--line); padding-top:8px;}
.ag-zone h4{font-size:.67rem; text-transform:uppercase; letter-spacing:.07em;
  color:var(--ink-soft); font-weight:600;}
.ag-zone .ag-item{font-size:.83rem}
.ag-add{background:none; border:1px dashed var(--line); border-radius:9px;
  color:var(--ink-soft); font-size:.78rem; padding:6px 10px; width:100%; text-align:left;}
.ag-add:hover{color:var(--accent); border-color:var(--accent);}
.dia-nota-prev{font-size:.78rem; color:var(--ink-soft); font-style:italic;
  overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical;}
.mas{font-size:.75rem; color:var(--ink-soft);}
.col-off{align-items:center; color:var(--ink-soft); border-style:dashed;}
.col-off .off-txt{font-size:.9rem; padding:8px 0;}
.leyenda{margin-top:20px; background:var(--surface); border:1px solid var(--line);
  border-radius:14px; padding:14px 16px; font-size:.9rem;}
.leyenda h3{font-size:.8rem; text-transform:uppercase; letter-spacing:.06em;
  color:var(--ink-soft); margin-bottom:9px;}
.leyenda ul{margin:0; padding:0; list-style:none; display:flex; flex-wrap:wrap; gap:7px 18px;}
.leyenda li{display:flex; gap:7px; align-items:center;}
.leyenda p{margin:0; color:var(--ink-soft);}
.pj-chip{font-size:.78rem; color:var(--ink-soft);}

/* ---------- PROYECTOS ---------- */
.pj-top{display:flex; flex-wrap:wrap; gap:12px; align-items:center; margin-bottom:16px;}
.filtros{display:flex; gap:6px; flex-wrap:wrap;}
.filtro{background:var(--surface); border:1px solid var(--line); border-radius:99px;
  padding:5px 13px; font-size:.85rem; font-weight:600; color:var(--ink-soft);}
.filtro[aria-pressed="true"]{background:var(--accent); border-color:var(--accent); color:var(--accent-ink);}
.pj-nuevo{flex:1; min-width:240px; max-width:380px; margin-left:auto;}
.pj-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:10px;}
.pj-row{display:flex; align-items:center; gap:11px; width:100%; text-align:left;
  background:var(--surface); border:1px solid var(--line); border-radius:14px;
  padding:13px 14px; box-shadow:var(--shadow);}
.pj-row:hover{border-color:hsl(var(--h,150) 45% 60%)}
.pj-row.pausa{opacity:.6}
.pj-main{flex:1; min-width:0; display:flex; flex-direction:column; gap:2px;}
.pj-nom{font-family:var(--font-sans); font-weight:600; font-size:1.05rem;
  display:flex; align-items:center; gap:8px; flex-wrap:wrap;}
.pj-sub{font-size:.82rem; color:var(--ink-soft);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}

/* ---------- FICHA (sheet) ---------- */
.scrim{position:fixed; inset:0; z-index:40; background:var(--scrim);
  display:flex; align-items:center; justify-content:center; padding:24px;}
.scrim[hidden]{display:none}
.ficha{background:var(--bg); border:1px solid var(--line); border-radius:20px;
  width:100%; max-width:580px; max-height:86vh; display:flex; flex-direction:column;
  overflow:hidden; box-shadow:var(--shadow-lift);}
.ficha-head{flex:none; padding:16px 18px 0; border-bottom:1px solid var(--line); background:var(--surface);}
.ficha-tit{display:flex; align-items:center; gap:10px;}
.ficha-tit h2{font-size:1.3rem; flex:1; min-width:0;}
.ficha-sub{color:var(--ink-soft); font-size:.85rem; margin:3px 0 0 20px;}
.cerrar{flex:none; width:36px; height:36px; border-radius:99px; border:1px solid var(--line);
  background:var(--bg); font-size:1.1rem; line-height:1; display:flex;
  align-items:center; justify-content:center; color:var(--ink-soft);}
.subtabs{display:flex; gap:2px; margin-top:12px; overflow-x:auto;}
.subtab{background:none; border:none; border-bottom:3px solid transparent; white-space:nowrap;
  padding:8px 13px 9px; color:var(--ink-soft); font-weight:600; font-size:.92rem;}
.subtab[aria-selected="true"]{color:var(--ink); border-bottom-color:var(--accent);}
.subtab .badge{margin-left:5px}
.ficha-body{flex:1; min-height:0; padding:16px 18px calc(18px + env(safe-area-inset-bottom));
  overflow-y:auto; display:flex; flex-direction:column; gap:16px;
  overscroll-behavior:contain;   /* al llegar al final, no arrastra la página de detrás */
  -webkit-overflow-scrolling:touch;}
.tarea{display:flex; align-items:center; gap:10px; background:var(--surface);
  border:1px solid var(--line); border-radius:10px; padding:9px 12px;}
.tarea input[type="checkbox"]{width:19px; height:19px; accent-color:var(--accent); flex:none;}
.tarea .txt{flex:1; min-width:0; overflow-wrap:anywhere;}
.tarea.done .txt{text-decoration:line-through; color:var(--ink-soft);}
.tarea .del{background:none; border:none; color:var(--ink-soft); padding:2px 5px; font-size:1.05rem;}
.tarea .del:hover{color:var(--danger)}
.lista{display:flex; flex-direction:column; gap:6px;}
details.hechas>summary{cursor:pointer; color:var(--ink-soft); font-size:.85rem;
  font-weight:600; padding:6px 2px; list-style:none;}
details.hechas>summary::-webkit-details-marker{display:none}
details.hechas>summary::before{content:"▸ "; }
details.hechas[open]>summary::before{content:"▾ "; }
details.hechas .lista{margin-top:6px}
.campo{display:flex; flex-direction:column;}
.campo input[type="text"]{width:100%; background:var(--surface); border:1px solid var(--line-campo);
  border-radius:10px; padding:9px 11px;}
select.estado{width:100%; border:1px solid var(--line-campo); background:var(--surface);
  border-radius:10px; padding:9px 11px; font-weight:600;}
.dato{display:flex; justify-content:space-between; gap:12px; padding:9px 12px;
  background:var(--surface2); border-radius:10px; font-size:.9rem;}
.dato b{font-weight:600}
.enlace{color:var(--accent); font-weight:600; text-decoration:none; word-break:break-all;}
.peligro{margin-top:4px; border-top:1px solid var(--line); padding-top:14px;}
.btn-borrar{background:none; border:1px solid var(--line); color:var(--ink-soft);
  border-radius:10px; padding:8px 14px; font-size:.85rem; font-weight:600;}
.btn-borrar.armado{background:var(--danger-bg); color:var(--danger); border-color:var(--danger);}
.fila-blq{display:flex; flex-direction:column; gap:10px;}

/* ---------- BITÁCORA ---------- */
.log-add{display:flex; flex-direction:column; gap:8px; background:var(--surface);
  border:1px solid var(--line); border-radius:12px; padding:12px;}
.log-add textarea{min-height:76px; background:var(--bg);}
.log-add-row{display:flex; gap:7px; flex-wrap:wrap; align-items:center;}
.log-add-row input[type="date"],.log-add-row select{background:var(--bg);
  border:1px solid var(--line); border-radius:10px; padding:8px 10px; font-size:.9rem;}
.log-add-row button{margin-left:auto; background:var(--accent); color:var(--accent-ink);
  border:none; border-radius:10px; padding:9px 17px; font-weight:700;}
.log-e{background:var(--surface); border:1px solid var(--line); border-radius:12px;
  padding:11px 13px; display:flex; flex-direction:column; gap:5px;}
.log-meta{display:flex; align-items:center; gap:8px; font-size:.78rem; color:var(--ink-soft);}
.log-meta .f{font-weight:700; color:var(--ink); font-variant-numeric:tabular-nums;}
.log-meta .del{margin-left:auto; background:none; border:none; color:var(--ink-soft);
  padding:0 4px; font-size:1.05rem;}
.log-meta .del:hover{color:var(--danger)}
.log-e p{margin:0; overflow-wrap:anywhere; white-space:pre-wrap;}
.tag{font-size:.67rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em;
  padding:2px 8px; border-radius:99px;}
.tag.acuerdo{background:var(--accent-soft); color:var(--accent);}
:root[data-theme="dark"] .tag.acuerdo{color:var(--ink)}
.tag.pago{background:var(--amber-bg); color:var(--amber-fg);}
.tag.visita{background:var(--surface2); color:var(--ink-soft);}
.tag.incidencia{background:var(--danger-bg); color:var(--danger);}

/* ---------- FECHAS SEÑALADAS ---------- */
.ag-chk.on{background:var(--accent); border-color:var(--accent); color:var(--accent-ink);}
.fechas{display:flex; flex-direction:column; gap:6px;}
.fecha-i{display:flex; align-items:center; gap:9px; background:var(--surface);
  border:1px solid var(--line); border-radius:10px; padding:8px 11px; font-size:.9rem;}
.fecha-i.ok{opacity:.55}
.fecha-i .txt{flex:1; min-width:0; overflow-wrap:anywhere;}
.fecha-i .cuando{font-size:.75rem; color:var(--ink-soft); white-space:nowrap;
  font-variant-numeric:tabular-nums;}
.fecha-i.urge{border-color:var(--danger)}
.fecha-i.urge .cuando{color:var(--danger); font-weight:700;}
.fecha-add{display:flex; gap:7px; flex-wrap:wrap; margin-top:2px;}
.fecha-add input[type="date"]{background:var(--surface); border:1px dashed var(--line);
  border-radius:10px; padding:8px 10px;}
.fecha-add input[type="text"]{flex:1; min-width:150px; background:var(--surface);
  border:1px dashed var(--line); border-radius:10px; padding:8px 11px;}
.fecha-add button{background:var(--accent); color:var(--accent-ink); border:none;
  border-radius:10px; padding:0 15px; font-weight:700;}
.proximas{max-width:660px; margin-top:24px; background:var(--surface);
  border:1px solid var(--line); border-left:3px solid var(--accent);
  border-radius:14px; padding:14px 16px;}
.proximas.hayvencidas{border-left-color:var(--danger)}
.proximas h3{font-size:.8rem; text-transform:uppercase; letter-spacing:.06em;
  color:var(--ink-soft); margin-bottom:10px;}
.prox-i{display:flex; align-items:center; gap:9px; padding:7px 0; font-size:.92rem;
  width:100%; text-align:left; background:none; border:none; border-top:1px solid var(--line);}
.prox-i:first-of-type{border-top:none}
.prox-i .txt{flex:1; min-width:0; overflow-wrap:anywhere;}
.prox-i .cuando{font-size:.75rem; color:var(--ink-soft); white-space:nowrap;
  font-variant-numeric:tabular-nums;}
.prox-i.venc .cuando{color:var(--danger); font-weight:700;}
.mini-fecha{display:flex; gap:5px; font-size:.75rem; overflow-wrap:anywhere;
  background:var(--accent-soft); color:var(--accent); border-radius:8px; padding:4px 7px;}
:root[data-theme="dark"] .mini-fecha{color:var(--ink)}
.mini-fecha.venc{background:var(--danger-bg); color:var(--danger);}

/* ---------- CUÁNTO HACE QUE NO SE TOCA ---------- */
.toque{font-size:.72rem; font-weight:700; white-space:nowrap; flex:none;
  padding:2px 8px; border-radius:99px;}
.toque.bien{background:var(--accent-soft); color:var(--accent);}
:root[data-theme="dark"] .toque.bien{color:var(--ink)}
.toque.regular{background:var(--amber-bg); color:var(--amber-fg);}
.toque.mal{background:var(--danger-bg); color:var(--danger);}
.ficha-sub .toque{font-weight:600}

/* ---------- EDITOR DEL RITMO ---------- */
.sem-acc{display:flex; gap:7px; flex-wrap:wrap; margin:-6px 0 14px;}
.sem-acc button{background:var(--surface); border:1px solid var(--line);
  border-radius:99px; padding:7px 15px; font-weight:600; font-size:.88rem;
  color:var(--ink-soft);}
.sem-acc button:hover{color:var(--accent); border-color:var(--accent);}
.ritmo-d{background:var(--surface); border:1px solid var(--line); border-radius:14px;
  padding:12px 14px; display:flex; flex-direction:column; gap:10px;}
.ritmo-d.libre{border-style:dashed; background:none;}
.ritmo-h{display:flex; align-items:center; gap:10px;}
.ritmo-h h3{flex:1; font-size:1.05rem;}
.btn-libre{background:none; border:1px solid var(--line); border-radius:99px;
  padding:5px 12px; font-size:.78rem; font-weight:600; color:var(--ink-soft);}
.btn-libre:hover{color:var(--accent); border-color:var(--accent);}
.ritmo-per{display:flex; flex-direction:column; gap:6px;}
.ritmo-lbl{font-size:.7rem; font-weight:700; text-transform:uppercase;
  letter-spacing:.07em; color:var(--ink-soft);}
.ritmo-b{display:flex; align-items:center; gap:9px;
  background:hsl(var(--h,150) var(--pill-bg-s) var(--pill-bg-l));
  border:1px solid hsl(var(--h,150) var(--pill-bd-s) var(--pill-bd-l));
  border-radius:10px; padding:6px 10px;}
.ritmo-b select{flex:1; min-width:0; background:none; border:none; font-weight:600;
  padding:3px 0; color:hsl(var(--h,150) var(--pill-fg-s) var(--pill-fg-l));}
.ritmo-b .del{background:none; border:none; padding:2px 4px; font-size:1.05rem;
  color:hsl(var(--h,150) var(--pill-fg-s) var(--pill-fg-l)); opacity:.6;}
.ritmo-b .del:hover{opacity:1; color:var(--danger);}

/* ---------- CIERRE DE LA SEMANA ---------- */
.cierre-top{background:var(--surface); border:1px solid var(--line);
  border-radius:14px; padding:16px; display:flex; flex-direction:column; gap:9px;}
.cifra{margin:0; display:flex; align-items:baseline; gap:8px;}
.cifra b{font-family:var(--font-mono); font-variant-numeric:tabular-nums; letter-spacing:-.02em; font-size:2.4rem;
  font-weight:700; line-height:1; font-variant-numeric:tabular-nums;}
.cifra span{color:var(--ink-soft)}
.cifra-sub{margin:0; color:var(--ink-soft); font-size:.85rem;}
.barra{height:8px; border-radius:99px; background:var(--surface2); overflow:hidden;}
.barra span{display:block; height:100%; background:var(--accent); border-radius:99px;}
.cierre-pj{display:flex; align-items:center; gap:9px; width:100%; text-align:left;
  background:var(--surface); border:1px solid var(--line); border-left:3px solid var(--line);
  border-radius:10px; padding:9px 12px; font-size:.92rem;}
.cierre-pj.ok{border-left-color:var(--accent)}
.cierre-pj.medio{border-left-color:var(--amber-fg)}
.cierre-pj.no{border-left-color:var(--danger)}
.cierre-pj .txt{flex:1; min-width:0; overflow-wrap:anywhere;}
.cierre-pj .marca{font-size:.78rem; font-weight:700; color:var(--ink-soft); white-space:nowrap;}
.cierre-pj.ok .marca{color:var(--accent)}
:root[data-theme="dark"] .cierre-pj.ok .marca{color:var(--ink)}
.cierre-pj.no .marca{color:var(--danger)}
.ficha-body section{display:flex; flex-direction:column; gap:8px;}

/* ---------- DINERO ---------- */
.sem-nav select{background:var(--surface); border:1px solid var(--line);
  border-radius:10px; padding:6px 10px; font-weight:600;}
.tiles{display:grid; grid-template-columns:repeat(auto-fit,minmax(168px,1fr)); gap:9px;}
.tile{background:var(--surface); border:1px solid var(--line); border-radius:14px;
  padding:13px 15px; display:flex; flex-direction:column; gap:3px;}
.tile span{font-size:.72rem; font-weight:700; text-transform:uppercase;
  letter-spacing:.06em; color:var(--ink-soft);}
/* una cifra larga se encoge, pero NUNCA se parte por la mitad:
   «Rp 3.850.000.00 / 0» se lee mal y da sensación de error */
.tile b{font-family:var(--font-mono); font-variant-numeric:tabular-nums; letter-spacing:-.02em;
  font-size:clamp(1.02rem, 1.6vw, 1.35rem); font-weight:700; overflow-wrap:break-word;}
.tile b.neg{color:var(--danger)}
.tile b.pos{color:var(--accent)}
:root[data-theme="dark"] .tile b.pos{color:var(--ink)}
.avisos{display:flex; gap:9px; flex-wrap:wrap; margin-top:12px;}
.aviso{flex:1; min-width:170px; display:flex; align-items:baseline; gap:9px;
  border-radius:12px; padding:10px 14px; font-size:.85rem; font-weight:600;}
.aviso b{margin-left:auto; font-size:1.05rem; font-variant-numeric:tabular-nums;}
.aviso.deuda{background:var(--danger-bg); color:var(--danger);}
.aviso.cobrar{background:var(--amber-bg); color:var(--amber-fg);}
#view-dinero section{display:flex; flex-direction:column; gap:9px; margin-top:22px;}
#view-dinero .tiles{margin-top:0}
.obra-din{display:flex; flex-direction:column; gap:7px; width:100%; text-align:left;
  background:var(--surface); border:1px solid var(--line); border-left:3px solid hsl(var(--h,150) 50% 45%);
  border-radius:12px; padding:11px 14px;}
.obra-din.sobre{border-left-color:var(--danger)}
.od-a{display:flex; align-items:baseline; gap:8px;}
.od-a .nm{font-family:var(--font-sans); font-weight:600; font-size:1.02rem;}
.od-a .od-i{margin-left:auto; font-weight:700; font-variant-numeric:tabular-nums;
  white-space:nowrap;}
.od-a .de{font-weight:500; color:var(--ink-soft); font-size:.82rem;}
.od-b{display:flex; gap:9px; flex-wrap:wrap; font-size:.78rem; color:var(--ink-soft);}
.od-b .neg{color:var(--danger); font-weight:700;}
.od-b .av{background:var(--amber-bg); color:var(--amber-fg); border-radius:99px;
  padding:1px 8px; font-weight:600;}
.obra-din .barra{height:6px}

/* alta de movimiento */
.mov-form{display:flex; flex-direction:column; gap:8px; background:var(--surface);
  border:1px solid var(--line); border-radius:12px; padding:12px;}
.mov-tipo{display:flex; gap:4px; background:var(--surface2); border-radius:10px; padding:3px;}
.mov-tipo button{flex:1; background:none; border:none; border-radius:8px; padding:7px;
  font-weight:700; font-size:.88rem; color:var(--ink-soft);}
.mov-tipo button[aria-pressed="true"]{background:var(--surface); color:var(--ink);
  box-shadow:var(--shadow);}
.mov-r1,.mov-r2{display:flex; gap:7px; flex-wrap:wrap; align-items:center;}
.mov-form input[type="text"],.mov-form input[type="date"],.mov-form select{
  background:var(--bg); border:1px solid var(--line); border-radius:10px; padding:8px 11px;}
.mov-imp{display:flex; flex-direction:column; gap:2px; min-width:120px;}
.mov-imp input{font-weight:700; font-variant-numeric:tabular-nums;}
.prev-imp{font-size:.72rem; color:var(--accent); font-weight:600; min-height:1em;
  padding-left:2px; font-variant-numeric:tabular-nums;}
.mov-r1 input[data-mov-t]{flex:1; min-width:150px;}
.mov-r2 select,.mov-r2 input{flex:1; min-width:110px;}
.mov-pend{display:flex; align-items:center; gap:6px; font-size:.82rem;
  color:var(--ink-soft); font-weight:600; white-space:nowrap;}
.mov-pend input{width:19px; height:19px; accent-color:var(--accent);}
.mov-r2 button[data-mov-btn]{background:var(--accent); color:var(--accent-ink); border:none;
  border-radius:10px; padding:9px 18px; font-weight:700;}

/* lista de movimientos */
.mov{display:flex; flex-direction:column; gap:5px; width:100%; text-align:left;
  background:var(--surface); border:1px solid var(--line);
  border-left:3px solid var(--danger); border-radius:11px; padding:9px 12px;}
.mov.cobro{border-left-color:var(--accent)}
.mov.pend{border-left-style:dashed}
.mov-a{display:flex; align-items:baseline; gap:9px;}
.mov-c{flex:1; min-width:0; font-weight:600; overflow-wrap:anywhere;}
.mov-i{font-weight:700; font-variant-numeric:tabular-nums; white-space:nowrap;
  color:var(--danger);}
.mov.cobro .mov-i{color:var(--accent)}
:root[data-theme="dark"] .mov.cobro .mov-i{color:var(--ink)}
.mov-b{display:flex; align-items:center; gap:7px; flex-wrap:wrap;
  font-size:.75rem; color:var(--ink-soft);}
.mov-b .f{font-weight:700; font-variant-numeric:tabular-nums;}
.mov-b .q{font-style:italic}
.mov-pchip{background:var(--surface2); color:var(--ink-soft); border:1px solid var(--line);
  border-radius:99px; padding:1px 9px; font-size:.7rem; font-weight:700;}
.mov-pchip.si{background:var(--amber-bg); color:var(--amber-fg); border-color:transparent;}
.mov-b .del{margin-left:auto; background:none; border:none; color:var(--ink-soft);
  padding:0 4px; font-size:1.05rem;}
.mov-b .del:hover{color:var(--danger)}

/* saldo dentro de la ficha */
.saldo{background:var(--surface); border:1px solid var(--line); border-radius:14px;
  padding:15px; display:flex; flex-direction:column; gap:9px;}
.saldo.sobre{border-color:var(--danger)}
.saldo.sobre .barra span{background:var(--danger)}
.saldo-g{display:grid; grid-template-columns:repeat(auto-fit,minmax(110px,1fr)); gap:8px;
  border-top:1px solid var(--line); padding-top:11px;}
.sc{display:flex; flex-direction:column; gap:1px;}
.sc span{font-size:.7rem; font-weight:700; text-transform:uppercase;
  letter-spacing:.06em; color:var(--ink-soft);}
.sc b{font-size:1.02rem; font-variant-numeric:tabular-nums;}
.sc b.neg{color:var(--danger)}
.sc.av b{color:var(--amber-fg)}

/* ---------- DATOS Y COPIAS ---------- */
.savechip{font:inherit; font-size:.8rem; cursor:pointer;}
.savechip:hover{border-color:var(--accent); color:var(--accent);}
.estado-guard{background:var(--surface); border:1px solid var(--line);
  border-left:3px solid var(--accent); border-radius:14px; padding:14px 16px;
  display:flex; flex-direction:column; gap:5px;}
.estado-guard.local{border-left-color:var(--amber-fg)}
.estado-guard .cifra b{font-size:1.25rem}
.btn-ppal{background:var(--gold-grad-btn); color:#1A1A1A; border:none;
  border-radius:11px; padding:11px 18px; font-weight:700; align-self:flex-start;}
.peligro-caja{background:var(--danger-bg); border-radius:12px; padding:13px 15px;}
.peligro-caja p{margin:0 0 4px}
.peligro-caja .cifra-sub{color:var(--danger); opacity:.85;}
input[type="file"]{font-size:.85rem; color:var(--ink-soft);}

@media (max-width:680px){
  .hoy-head h2{font-size:1.5rem}
  .topbar-in{padding:12px 14px 8px}
  main{padding:16px 14px 110px}
  /* la navegación baja al pulgar, como una app */
  .tabs{position:fixed; bottom:0; left:0; right:0; z-index:30;
    background:var(--surface); border-top:1px solid var(--line);
    display:flex; justify-content:space-around; margin:0; max-width:none;
    padding:6px 8px calc(6px + env(safe-area-inset-bottom));}
  .tab{border-bottom:none; border-radius:12px; padding:10px 16px; flex:1; text-align:center;}
  .tab[aria-selected="true"]{background:var(--accent-soft); color:var(--accent); border-bottom:none;}
  :root[data-theme="dark"] .tab[aria-selected="true"]{color:var(--ink)}
  /* objetivos táctiles grandes */
  .check{width:44px; height:44px; font-size:1.15rem;}
  .cerrar{width:44px; height:44px;}
  .abrir{padding:16px 12px}
  .abrir .quien{white-space:normal; font-size:.8rem;}
  .celda-name{padding:13px 11px; font-size:.95rem;}
  .celda-chk{padding:13px 16px}
  .celda{padding:13px 11px; font-size:.95rem;}
  .ag-chk{width:30px; height:30px;}
  .ag-item{font-size:.95rem}
  .ag-zone .ag-item{font-size:.92rem}
  input[type="text"],input[type="date"],textarea,.add-row input,select{font-size:16px;} /* evita el zoom de iOS */
  .fecha-add input[type="date"],.log-add-row input[type="date"]{flex:1}
  .prox-i,.fecha-i{font-size:.95rem}
  .ritmo-b select{font-size:16px}
  .cierre-pj{flex-wrap:wrap}
  .cierre-pj .cuando{margin-left:auto}
  /* cuatro pestañas tienen que caber en un pulgar */
  .tab{padding:10px 4px; font-size:.87rem;}
  .mov-r2 button[data-mov-btn]{flex:1}
  .mov-imp{flex:1}
  .tile b{font-size:1.2rem}
  .sem-nav{margin-left:0; width:100%;}
  .sem-nav select,.sem-nav button{flex:1}
  .btn-ppal{align-self:stretch; text-align:center;}
  .pj-row .toque{display:none}
  .pj-sub[data-toque]::after{content:" · " attr(data-toque)}
  .tarea input[type="checkbox"]{width:22px; height:22px;}
  /* semana: lista vertical, sin scroll lateral */
  .week-scroll{overflow-x:visible}
  .week-grid{grid-template-columns:1fr; min-width:0; gap:10px;}
  .day-col{padding:10px}
  .sem-head h2{font-size:1.1rem}

  .pj-nuevo{margin-left:0; max-width:none;}
  .pj-grid{grid-template-columns:1fr}
  /* la ficha sube desde abajo, como una app nativa */
  .scrim{padding:0; align-items:flex-end;}
  .ficha{max-width:none; max-height:92vh; border-radius:20px 20px 0 0; border-bottom:none;}
  .ficha-body{padding-bottom:calc(28px + env(safe-area-inset-bottom))}
}
@media (prefers-reduced-motion: no-preference){
  .bloque,.check,.pj-row,.celda-chk{transition:opacity .18s, background .15s, border-color .15s;}
  .ficha{animation:subir .22s cubic-bezier(.2,.8,.3,1);}
  @keyframes subir{from{transform:translateY(14px); opacity:0} to{transform:none; opacity:1}}
}
/* ---------- PANTALLA DE ENTRADA ---------- */
.entrada{position:fixed; inset:0; z-index:60; background:var(--bg);
  display:flex; align-items:center; justify-content:center; padding:24px;}
.entrada[hidden]{display:none}
.entrada-caja{background:var(--surface); border:1px solid var(--line);
  border-radius:20px; padding:30px 26px; max-width:380px; width:100%;
  display:flex; flex-direction:column; gap:14px; box-shadow:var(--shadow);
  text-align:center;}
.entrada-caja .brand{margin:0; flex-direction:column; gap:.45rem; font-family:var(--font-display);
  font-size:1.8rem; font-weight:700; letter-spacing:-.01em;}
.entrada-caja .brand .mark{width:52px; height:45px;}
.entrada-caja .brand em{letter-spacing:.28em;}
.entrada-txt{margin:0; color:var(--ink-soft); font-size:.92rem; text-wrap:balance;}
.entrada .btn-ppal{align-self:stretch; text-align:center; padding:13px;}
.entrada-msg{margin:0; min-height:1.2em; font-size:.85rem; color:var(--amber-fg);
  text-wrap:balance;}
.savechip.mal{color:var(--danger); border-color:var(--danger);}
.btn-salir{background:none; border:none; padding:0; font-size:inherit;
  font-weight:700; color:var(--accent); text-decoration:underline; cursor:pointer;}
:root[data-theme="dark"] .btn-salir{color:var(--ink)}

/* ---------- EDITAR LO ESCRITO ---------- */
.txt-edit{background:none; border:none; text-align:left; font:inherit; color:inherit;
  padding:0; cursor:text; flex:1; min-width:0; overflow-wrap:anywhere;
  border-bottom:1px dashed transparent;}
.txt-edit:hover{border-bottom-color:var(--line)}
.ag-item.done .txt-edit{text-decoration:line-through; color:var(--ink-soft);}
.tarea.done .txt-edit{text-decoration:line-through; color:var(--ink-soft);}
.ed{background:none; border:none; color:var(--ink-soft); font-size:.72rem;
  font-weight:700; padding:2px 6px; border-radius:6px;}
.ed:hover{color:var(--accent); background:var(--accent-soft);}
:root[data-theme="dark"] .ed:hover{color:var(--ink)}
.editando{border-color:var(--accent) !important; background:var(--accent-soft) !important;}
:root[data-theme="dark"] .editando{background:var(--surface2) !important;}
.ed-txt{flex:1; min-width:0; background:var(--surface); border:1px solid var(--accent);
  border-radius:9px; padding:8px 10px; font:inherit;}
.ed-fila{display:flex; align-items:center; gap:6px; width:100%;}
.ed-ok,.ed-no{flex:none; width:34px; height:34px; border-radius:9px; border:1px solid var(--line);
  background:var(--surface); font-size:1rem; font-weight:700; line-height:1;
  display:flex; align-items:center; justify-content:center;}
.ed-ok{background:var(--accent); border-color:var(--accent); color:var(--accent-ink);}
.ed-no{color:var(--ink-soft)}
.ed-no-txt{background:none !important; border:1px solid var(--line) !important;
  color:var(--ink-soft) !important; border-radius:10px; padding:9px 14px; font-weight:600;}
.log-e.editando,.mov.editando{gap:9px}
.firma{font-size:.68rem; color:var(--ink-soft); font-style:italic; white-space:nowrap;}

/* ---------- CONFIRMAR ANTES DE BORRAR ---------- */
#confirmar:empty{display:none}
.confirmar{position:fixed; left:0; right:0; bottom:0; z-index:70;
  background:var(--surface); border-top:2px solid var(--danger);
  padding:16px 18px calc(16px + env(safe-area-inset-bottom));
  display:flex; align-items:center; gap:14px; flex-wrap:wrap;
  box-shadow:var(--shadow-lift);}
.confirmar p{margin:0; flex:1; min-width:180px; overflow-wrap:anywhere;}
.confirmar-btn{display:flex; gap:8px; margin-left:auto;}
.confirmar button{border-radius:10px; padding:11px 18px; font-weight:700; border:1px solid var(--line);}
.btn-no{background:var(--surface); color:var(--ink-soft);}
.btn-si{background:var(--danger); border-color:var(--danger); color:#fff;}

@media (max-width:680px){
  .ed-ok,.ed-no{width:40px; height:40px;}
  .ed-txt{font-size:16px}
  .confirmar{flex-direction:column; align-items:stretch;}
  .confirmar-btn{margin-left:0}
  .confirmar-btn button{flex:1}
  .mov-b .ed,.log-meta .ed{font-size:.78rem; padding:4px 8px;}
}

/* ---- el logotipo se adapta a la pantalla ---- */
@media (max-width:480px){
  .brand{font-size:1.02rem; letter-spacing:.12em; gap:.38rem;}
  .brand .mark{width:14px; height:12px;}
  .topbar-in .brand em{display:none;}
  .today-label{font-size:.85rem;}
}
@media (max-width:360px){
  .brand{font-size:.92rem; letter-spacing:.08em;}
}

/* ============================================================
   INVERSIONES — dentro de la app
   ============================================================ */
.dot.oro{background:var(--gold); border-color:var(--gold)}
.inv-vacio{background:var(--surface); border:1px solid var(--line); border-radius:14px;
  padding:20px 22px; box-shadow:var(--shadow); max-width:60ch;}
.inv-vacio p{margin:0 0 10px; color:var(--ink-soft); font-size:.95rem; line-height:1.6;}
.inv-vacio p:first-child{color:var(--ink);}
.inv-vacio p:last-child{margin-bottom:0;}
.pista{margin:7px 0 0; font-size:.82rem; color:var(--ink-soft); line-height:1.5;}
.inv-btns{display:flex; flex-wrap:wrap; gap:8px; margin-top:10px; align-items:center;}
.btn-chico{background:var(--surface); border:1px solid var(--line); border-radius:9px;
  padding:8px 13px; font-size:.86rem; font-weight:600; color:var(--ink); text-decoration:none;
  display:inline-block;}
.btn-chico:hover{border-color:var(--accent); color:var(--accent);}

.op{border:1px solid var(--line); border-radius:14px; background:var(--surface);
  margin-bottom:11px; overflow:hidden;
  /* la ficha es un flex en columna: sin esto, `overflow:hidden` anula la
     altura mínima automática y la tarjeta se aplasta a nada */
  flex:0 0 auto;}
.op.fuera{opacity:.55; border-style:dashed;}
.op-cab{display:flex; align-items:center; gap:11px; padding:13px 15px;}
.op-check input{width:20px; height:20px; accent-color:var(--accent);}
.op-nom{flex:1; min-width:0;}
.op-nom b{display:block; font-size:1rem; font-weight:700;}
.op-nom span{font-size:.8rem; color:var(--ink-soft);}
.op-cifras{display:flex; flex-wrap:wrap; gap:6px 20px; padding:0 15px 13px;}
.cif{display:flex; flex-direction:column; gap:1px;}
.cif i{font-style:normal; font-size:.68rem; text-transform:uppercase; letter-spacing:.09em; color:var(--ink-soft);}
.cif b{font-family:var(--font-mono); font-size:.94rem; font-variant-numeric:tabular-nums;}
.cif b.ac{color:var(--accent);}
.cif u{text-decoration:none; font-family:var(--font-mono); font-size:.74rem; color:var(--ink-soft);}
.op-campos{padding:13px 15px 16px; background:var(--surface2); border-top:1px solid var(--line);}
.num{display:flex; align-items:center; gap:12px; padding:7px 0; border-top:1px solid var(--line);}
.num:first-of-type{border-top:none;}
.num label{flex:1; font-size:.86rem;}
.num input{width:140px; flex:none; text-align:right; font-family:var(--font-mono);
  font-size:.86rem; font-variant-numeric:tabular-nums; background:var(--surface);
  border:1px solid var(--line); border-radius:8px; padding:6px 9px; color:var(--accent);}
.inv-motores{display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:9px;}
.motor{text-align:left; background:var(--surface); border:1px solid var(--line);
  border-radius:12px; padding:12px 14px; cursor:pointer;}
.motor:hover{border-color:var(--accent);}
.motor b{display:block; font-size:.92rem; margin-bottom:3px;}
.motor span{font-size:.78rem; color:var(--ink-soft); line-height:1.45;}

/* ============================================================
   LA PAGINA DEL CLIENTE
   ============================================================ */
.pill{display:inline-block; border-radius:999px; font-size:.68rem; font-weight:700;
  letter-spacing:.05em; padding:3px 10px; text-transform:uppercase; white-space:nowrap;}
.pill.low{background:var(--good-bg); color:var(--good);}
.pill.med{background:var(--amber-bg); color:var(--amber-fg);}
.pill.high{background:var(--danger-bg); color:var(--danger);}


body.pub{background:var(--bg);}
.pub-in{max-width:1080px; margin:0 auto; padding:0 22px;}
.pub-top{border-bottom:1px solid var(--line); padding:14px 0; background:var(--bg);}
.pub-top .pub-in{display:flex; align-items:center; justify-content:space-between; gap:14px;}
.pub-sub{font-size:.72rem; text-transform:uppercase; letter-spacing:.14em; color:var(--ink-soft);}
.pub-main{max-width:1080px; margin:0 auto; padding:30px 22px 60px;}
.pub-cargando{color:var(--ink-soft); font-style:italic;}
.pub-hero{margin-bottom:26px;}
.pub-para{font-size:.72rem; text-transform:uppercase; letter-spacing:.16em; color:var(--accent); margin:0 0 10px;}
.pub-hero h1{font-size:clamp(1.9rem,5vw,2.9rem); line-height:1.1; margin:0 0 12px;}
.pub-entrada{max-width:64ch; color:var(--ink-soft); font-size:1rem; line-height:1.65; margin:0;}

.pub-cards{display:grid; grid-template-columns:repeat(auto-fit,minmax(255px,1fr)); gap:13px; margin-bottom:34px;}
.pub-card{display:flex; flex-direction:column; background:var(--surface); border:1px solid var(--line);
  border-radius:16px; box-shadow:var(--shadow); padding:19px 21px; text-decoration:none; color:inherit;
  transition:border-color .15s, transform .15s;}
.pub-card:hover{border-color:var(--accent); transform:translateY(-2px);}
.pub-card .num{display:block; padding:0; border:none; font-family:var(--font-mono);
  font-size:.68rem; letter-spacing:.1em; color:var(--accent);}
.pub-card h2{font-size:1.25rem; margin:6px 0 6px;}
.pub-card>p{font-size:.86rem; color:var(--ink-soft); margin:0 0 13px; flex:1; line-height:1.55;}
.pub-card .kv{display:flex; justify-content:space-between; align-items:center; gap:10px;
  font-size:.82rem; padding:5px 0; border-top:1px solid var(--line);}
.pub-card .kv b{font-family:var(--font-mono); font-variant-numeric:tabular-nums; font-weight:600;}
.pub-card .go{margin-top:12px; font-size:.82rem; font-weight:700; color:var(--accent);}

.pub-op{border-top:1px solid var(--line); padding-top:30px; margin-top:34px; scroll-margin-top:20px;}
.pub-eyebrow{font-size:.7rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase;
  color:var(--accent); margin:0 0 9px;}
.pub-h2{font-size:clamp(1.5rem,3.5vw,2.1rem); line-height:1.15; margin:0 0 12px;}
.pub-h3{font-size:1.15rem; margin:30px 0 12px;}
.pub-h3 small{display:block; font-family:var(--font-sans); font-size:.8rem; font-weight:500;
  color:var(--ink-soft); margin-top:3px;}

.pub-tit{display:grid; grid-template-columns:repeat(auto-fit,minmax(178px,1fr)); gap:11px; margin:20px 0;}
.tit{background:var(--surface); border:1px solid var(--line); border-radius:14px;
  padding:14px 16px; box-shadow:var(--shadow);}
.tit .l{display:block; font-size:.66rem; font-weight:700; text-transform:uppercase;
  letter-spacing:.1em; color:var(--ink-soft);}
.tit .v{display:block; font-family:var(--font-mono); font-variant-numeric:tabular-nums;
  font-size:1.3rem; font-weight:600; margin-top:6px; letter-spacing:-.02em;}
/* las cifras van en bronce, no en oro plano: sobre el marfil el oro se queda
   en 2,2:1 y el cliente lee estas cifras antes que nada */
.tit.oro .v{color:var(--accent);}
.tit.acento .v{color:var(--accent);}
.tit .e{display:block; font-family:var(--font-mono); font-size:.78rem; color:var(--ink-soft); margin-top:2px;}
.tit .s{display:block; font-size:.76rem; color:var(--ink-soft); margin-top:3px;}

.pub-dos{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:16px; align-items:start;}
@media(max-width:820px){.pub-dos{grid-template-columns:1fr;}}
.pub-caja{background:var(--surface); border:1px solid var(--line); border-radius:16px;
  box-shadow:var(--shadow); padding:18px 20px;}
.pub-caja h3{font-size:1.1rem; margin:0 0 3px;}
.pub-pista{font-size:.8rem; color:var(--ink-soft); margin:0 0 14px; line-height:1.5;}
.pub-pista b{font-family:var(--font-mono); color:var(--accent); font-weight:600;}

.mando{padding:9px 0; border-top:1px solid var(--line);}
.mando:first-child{border-top:none;}
.mando-fila{display:flex; justify-content:space-between; align-items:center; gap:12px;}
.mando-fila label{font-size:.86rem; font-weight:600;}
.mando-caja{width:140px; flex:none; text-align:right; font-family:var(--font-mono);
  font-size:.84rem; font-variant-numeric:tabular-nums; color:var(--accent);
  background:var(--surface2); border:1px solid var(--line); border-radius:8px; padding:5px 9px;}
.mando input[type=range]{width:100%; margin:8px 0 0; accent-color:var(--gold); height:22px;}

.fila{display:flex; justify-content:space-between; gap:14px; padding:8px 0;
  border-top:1px solid var(--line); font-size:.86rem;}
.fila:first-child{border-top:none;}
.fila .k{color:var(--ink-soft);}
.fila .v{font-family:var(--font-mono); font-variant-numeric:tabular-nums; font-weight:600;
  text-align:right; white-space:nowrap;}
.fila.total{border-top:2px solid var(--line); margin-top:4px; padding-top:11px;}
.fila.total .k{color:var(--ink); font-weight:700;}
.fila.total .v{color:var(--accent); font-size:.95rem;}
.fila.hero .v{color:var(--accent); font-size:.95rem;}
.fila .v.mal{color:var(--danger);}

.fases{display:grid; grid-template-columns:repeat(auto-fit,minmax(158px,1fr)); gap:10px; counter-reset:f;}
.fase{background:var(--surface2); border:1px solid var(--line); border-radius:12px; padding:12px 14px;}
.fase::before{counter-increment:f; content:counter(f,decimal-leading-zero);
  font-family:var(--font-mono); font-size:.66rem; font-weight:600; color:var(--accent);}
.fase b{display:block; font-size:.88rem; margin:3px 0 2px;}
.fase span{font-size:.78rem; color:var(--ink-soft); line-height:1.5;}

.reqs{display:grid; grid-template-columns:repeat(auto-fit,minmax(235px,1fr)); gap:12px;}
.req{background:var(--surface); border:1px solid var(--line); border-radius:14px;
  padding:16px 18px; box-shadow:var(--shadow);}
.req h4{font-size:.7rem; font-weight:700; text-transform:uppercase; letter-spacing:.11em;
  color:var(--accent); margin:0 0 9px;}
.req ul{margin:0; padding-left:17px;}
.req li{font-size:.84rem; margin:5px 0; line-height:1.5;}
.req li::marker{color:var(--gold);}
.req.riesgo h4{color:var(--danger);}
.req.riesgo li::marker{color:var(--danger);}

.tabla-scroll{overflow-x:auto; background:var(--surface); border:1px solid var(--line);
  border-radius:16px; box-shadow:var(--shadow); padding:6px 16px 12px; margin-bottom:18px;}
.tabla{width:100%; border-collapse:collapse; font-size:.86rem;}
.tabla th,.tabla td{padding:9px 11px; text-align:right; border-bottom:1px solid var(--line); white-space:nowrap;}
.tabla th{font-size:.66rem; text-transform:uppercase; letter-spacing:.09em; color:var(--ink-soft); font-weight:700;}
.tabla th:first-child,.tabla td:first-child{text-align:left; font-weight:600;}
.tabla td{font-family:var(--font-mono); font-variant-numeric:tabular-nums;}
.tabla td:first-child,.tabla td.suave{font-family:var(--font-sans);}
.tabla td.suave{color:var(--ink-soft); font-size:.78rem;}
.tabla tr:last-child td{border-bottom:none;}

.barras{display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:16px;}
.barras-caja{background:var(--surface); border:1px solid var(--line); border-radius:16px;
  box-shadow:var(--shadow); padding:16px 18px;}
.barras-caja h3{font-size:1rem; margin:0 0 12px;}
.barra{display:grid; grid-template-columns:minmax(80px,1fr) 2fr auto; gap:10px;
  align-items:center; font-size:.8rem; margin-bottom:9px;}
.barra .bl{font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.pista-barra{background:var(--surface2); border-radius:99px; height:12px; overflow:hidden;}
.relleno{display:block; background:var(--accent); height:100%; border-radius:99px; min-width:3px;}
.relleno.oro{background:var(--gold-grad);}
.barra .bv{font-family:var(--font-mono); font-variant-numeric:tabular-nums; font-weight:600; text-align:right;}

.pub-fallo{max-width:52ch; margin:40px auto; text-align:center;}
.pub-fallo h1{font-size:1.5rem; margin:0 0 10px;}
.pub-fallo p{color:var(--ink-soft); margin:0; line-height:1.6;}
.pub-pie{border-top:1px solid var(--line); padding:22px 0 40px; margin-top:20px;}
.pub-pie p{font-size:.76rem; color:var(--ink-soft); margin:0 0 8px; line-height:1.6; max-width:80ch;}

.tit.mala .v{color:var(--danger);}
.cif b.mal{color:var(--danger);}


/* ============================================================
   ARMAZÓN DE ESCRITORIO — el menú lateral del diseño de marca.
   En el móvil no existe: allí manda la barra de pestañas de abajo,
   que es la que se usa en obra con una mano.
   ============================================================ */
.lateral{display:none}
.marco{min-width:0}

@media (min-width:900px){
  #app:not([hidden]){display:grid; grid-template-columns:248px minmax(0,1fr);}
  .lateral{display:flex; flex-direction:column; gap:22px;
    position:sticky; top:0; height:100vh; padding:22px 14px;
    background:var(--surface); border-right:1px solid var(--line);}
  .lat-marca{display:flex; flex-direction:column; align-items:flex-start; gap:2px;
    margin:0 0 4px; padding:0 10px;
    font-family:var(--font-display); font-size:1.12rem; font-weight:600;
    letter-spacing:.17em; text-transform:uppercase; color:var(--accent);}
  .lat-marca .mark{display:block; margin-bottom:8px;}
  .lat-marca .tx{background:var(--gold-grad); -webkit-background-clip:text;
    background-clip:text; color:transparent;}
  @supports not (background-clip:text){ .lat-marca .tx{color:var(--accent);} }
  .lat-marca em{font-style:normal; font-family:var(--font-sans); font-size:.6rem;
    font-weight:600; letter-spacing:.18em; color:var(--ink-soft);}
  .lat-nav{display:flex; flex-direction:column; gap:2px;}
  .lat-item{display:flex; align-items:center; gap:11px; width:100%;
    padding:10px 12px; border:none; border-radius:10px; background:none;
    font-size:.94rem; font-weight:600; color:var(--ink-soft); text-align:left;}
  .lat-item svg{width:18px; height:18px; flex:none;}
  .lat-item:hover{background:var(--surface2); color:var(--ink);}
  .lat-item[aria-selected="true"]{background:var(--accent-soft); color:var(--accent);
    box-shadow:inset 3px 0 0 var(--gold);}
  .lat-pie{margin:auto 0 0; padding:0 12px; font-size:.76rem; color:var(--ink-soft);
    overflow:hidden; text-overflow:ellipsis;}

  /* con el lateral puesto, la barra de arriba solo lleva la fecha y el chip */
  .topbar{border-bottom:1px solid var(--line);}
  .topbar-in{max-width:none; padding:16px 26px;}
  .topbar .brand{display:none;}
  .topbar nav.tabs{display:none;}
  main{max-width:none; padding:26px 26px 60px;}
  .notice{left:auto; right:26px; bottom:26px;}
}

/* ============================================================
   CLIENTES
   ============================================================ */
.ini{flex:none; width:34px; height:34px; border-radius:50%;
  display:grid; place-items:center;
  background:var(--accent-soft); color:var(--accent);
  font-family:var(--font-display); font-size:1.05rem; font-weight:600;}
.ficha-tit .ini{width:30px; height:30px; font-size:.95rem;}
.sub-bloque{border-top:1px dashed var(--line); padding-top:14px;}
.rotulo-h{font-family:var(--font-sans); font-size:.7rem; font-weight:700;
  letter-spacing:.11em; text-transform:uppercase; color:var(--ink-soft); margin:0 0 10px;}
.sub-bloque .pj-row{margin-bottom:8px;}

/* con seis pestañas ya no caben repartidas en un móvil estrecho:
   se quedan a su ancho y la barra se desliza */
@media (max-width:680px){
  .tabs{overflow-x:auto; justify-content:flex-start; scrollbar-width:none;}
  .tabs::-webkit-scrollbar{display:none}
  .tab{flex:0 0 auto; padding:10px 14px;}
}

.pub-moneda{margin:14px 0 0; font-size:.8rem; color:var(--ink-soft); font-family:var(--font-mono);}

/* ============================================================
   PROPIEDADES
   ============================================================ */
.est.reserva{background:var(--info-bg); color:var(--info);}
.est.vendida{background:var(--good-bg); color:var(--good);}

.uni-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:13px;}
.uni{display:flex; flex-direction:column; text-align:left; padding:0; overflow:hidden;
  background:var(--surface); border:1px solid var(--line); border-radius:14px;
  box-shadow:var(--shadow); cursor:pointer; transition:border-color .15s, transform .15s;}
.uni:hover{border-color:var(--accent); transform:translateY(-2px);}
.uni:focus-visible{outline:2px solid var(--accent); outline-offset:2px;}
.uni-foto{display:block; height:86px; background:
  linear-gradient(135deg, hsl(var(--h,42) 34% 92%), hsl(var(--h,42) 28% 86%));
  border-bottom:1px solid var(--line);}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .uni-foto{background:
    linear-gradient(135deg, hsl(var(--h,42) 18% 22%), hsl(var(--h,42) 16% 16%));}
}
:root[data-theme="dark"] .uni-foto{background:
  linear-gradient(135deg, hsl(var(--h,42) 18% 22%), hsl(var(--h,42) 16% 16%));}
.uni-cuerpo{display:flex; flex-direction:column; gap:3px; padding:11px 13px 13px;}
.uni-nom{font-weight:700; font-size:.98rem;}
.uni-obra{font-size:.78rem; color:var(--ink-soft);}
.uni-pie{display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:5px;}
.uni-fecha{font-family:var(--font-mono); font-size:.74rem; color:var(--ink-soft);}
.uni-dato{font-size:.78rem; color:var(--ink-soft); font-family:var(--font-mono);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}

/* ============================================================
   EQUIPO Y PAPELES
   Ocultar no es proteger: quien manda son las reglas del servidor.
   Esto solo evita enseñar puertas que van a estar cerradas.
   ============================================================ */
body.solo-obra [data-tab="dinero"],
body.solo-obra [data-tab="clientes"],
body.solo-obra [data-tab="inversiones"],
body.solo-obra [data-tab="propiedades"]{display:none !important}

.miembro{display:flex; align-items:center; gap:10px; padding:9px 0;
  border-top:1px solid var(--line);}
.miembro:first-of-type{border-top:none}
.miembro.baja{opacity:.5}
.miembro-quien{flex:1; min-width:0}
.miembro-quien b{display:block; font-size:.94rem}
.miembro-quien span{font-size:.78rem; color:var(--ink-soft);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; display:block}
.miembro select{max-width:150px; flex:none}
.miembro-yo{width:30px; text-align:center; color:var(--ink-soft)}
.iconbtn-t{flex:none; width:30px; height:30px; border-radius:9px; cursor:pointer;
  background:var(--surface2); border:1px solid var(--line); color:var(--ink-soft);
  font-size:.85rem; line-height:1; display:grid; place-items:center; padding:0}
.iconbtn-t:hover{border-color:var(--danger); color:var(--danger)}

/* ---------- TAREAS: responsable, fecha y estado ---------- */
.tarea{flex-wrap:wrap}
.tarea-meta{flex-basis:100%; display:flex; flex-wrap:wrap; align-items:center; gap:6px;
  margin:7px 0 0 29px;}
.tarea-meta select,.tarea-meta .tfecha{background:var(--surface2); border:1px solid var(--line);
  border-radius:8px; padding:4px 8px; font:inherit; font-size:.78rem; color:var(--ink-soft);
  max-width:150px;}
.tarea-meta .tfecha.hoy{border-color:var(--amber-fg); color:var(--amber-fg); font-weight:600}
.tarea-meta .tfecha.vence{border-color:var(--danger); color:var(--danger); font-weight:600}
.tarea-meta .curso{background:none; border:1px solid var(--line); border-radius:99px;
  padding:4px 11px; font-size:.75rem; font-weight:600; color:var(--ink-soft); cursor:pointer;}
.tarea-meta .curso:hover{border-color:var(--accent); color:var(--accent)}
.tarea-meta .curso.on{background:var(--accent-soft); border-color:var(--accent); color:var(--accent)}
.tarea.vence{border-left:3px solid var(--danger)}
.tarea.encurso{border-left:3px solid var(--accent)}

/* la lista de Mis tareas */
.bloque-t{margin-bottom:20px}
.bloque-t .rotulo-h.mal{color:var(--danger)}
.tarea .pj-chip,.tarea .quien-chip,.tarea .fecha-chip{flex:none; display:inline-flex;
  align-items:center; gap:6px; font-size:.75rem; font-weight:600; color:var(--ink-soft);
  background:var(--surface2); border:1px solid var(--line); border-radius:99px; padding:3px 10px;}
.tarea .pj-chip{cursor:pointer}
.tarea .pj-chip:hover{border-color:var(--accent); color:var(--accent)}
.tarea .fecha-chip.mal{color:var(--danger); border-color:var(--danger)}
@media (max-width:680px){
  .tarea .quien-chip{display:none}
  .tarea-meta{margin-left:0}
  .tarea-meta select,.tarea-meta .tfecha{max-width:none; flex:1 1 44%}
}

/* ---------- CALENDARIO ---------- */
.cal-grid{display:grid; grid-template-columns:repeat(7,1fr); gap:6px; margin-top:4px;}
.cal-cab{font-size:.68rem; font-weight:700; letter-spacing:.09em; text-transform:uppercase;
  color:var(--ink-soft); padding:2px 4px;}
.cal-dia{background:var(--surface); border:1px solid var(--line); border-radius:11px;
  min-height:92px; padding:5px 6px; display:flex; flex-direction:column; gap:3px;
  overflow:hidden;}
.cal-dia.fuera{opacity:.45}
.cal-dia.hoy{border-color:var(--accent); box-shadow:inset 0 0 0 1px var(--accent);}
.cal-num{align-self:flex-start; background:none; border:none; padding:1px 4px;
  font-size:.8rem; font-weight:700; color:var(--ink-soft); border-radius:7px; cursor:pointer;}
.cal-num:hover{background:var(--accent-soft); color:var(--accent);}
.cal-dia.hoy .cal-num{background:var(--accent); color:var(--accent-ink);}
.ev{display:block; width:100%; text-align:left; border:none; cursor:pointer;
  font:inherit; font-size:.72rem; line-height:1.25; padding:3px 6px; border-radius:7px;
  background:var(--surface2); color:var(--ink); overflow:hidden; text-overflow:ellipsis;
  white-space:nowrap; border-left:3px solid hsl(var(--h,150) 50% 45%);}
.ev:hover{background:var(--accent-soft)}
.ev i{font-style:normal; font-weight:700; color:var(--ink-soft); margin-right:4px}
.ev b{font-weight:700; margin-left:5px}
.ev-hito{border-left-color:var(--amber-fg)}
.ev-dinero{border-left-color:var(--accent); font-weight:600}
.ev-reunion{border-left-style:dashed}
.ev.ok{opacity:.5; text-decoration:line-through}
.cal-nada{text-align:center; margin-top:14px}

/* la lista, que es lo que se ve en el movil */
.cal-lista{display:none; flex-direction:column; gap:10px;}
.cal-fila{display:flex; gap:11px; align-items:flex-start;}
.cal-fecha{flex:none; width:46px; background:var(--surface2); border:1px solid var(--line);
  border-radius:10px; padding:5px 0; text-align:center; cursor:pointer;}
.cal-fecha b{display:block; font-size:1.05rem; line-height:1.1}
.cal-fecha span{font-size:.68rem; text-transform:uppercase; color:var(--ink-soft)}
.cal-evs{flex:1; min-width:0; display:flex; flex-direction:column; gap:4px;}
.cal-evs .ev{font-size:.82rem; padding:7px 10px; white-space:normal;}

/* pagos y cobros dentro de Finanzas */
.pago{display:flex; align-items:center; gap:9px; padding:8px 0;
  border-top:1px solid var(--line);}
.pago:first-of-type{border-top:none}
.pago.ok{opacity:.55}
.pago-quien{flex:1; min-width:0}
.pago-quien b{display:block; font-size:.92rem}
.pago-quien span{font-size:.76rem; color:var(--ink-soft)}
.pago .cifra-sub{font-family:var(--font-mono); font-size:.84rem}
.del-txt{background:none; border:none; color:var(--danger); font-size:.82rem;
  font-weight:600; padding:6px 2px; cursor:pointer;}

@media (max-width:760px){
  .cal-grid{display:none}
  .cal-lista{display:flex}
  .cal-nada{display:none}
}
.cal-nueva{margin-left:auto; padding:8px 16px; font-size:.88rem;}
.ev-mas{border-left-color:transparent; color:var(--ink-soft); font-weight:600;
  background:none; padding-left:9px;}
.ev-mas:hover{background:var(--accent-soft); color:var(--accent)}
@media (max-width:680px){ .cal-nueva{margin-left:0; width:100%; text-align:center} }
/* dueños de una unidad: pueden ser varios */
.duenos{display:flex; flex-wrap:wrap; gap:6px;}
.dueno{display:inline-flex; align-items:center; gap:7px; background:var(--surface2);
  border:1px solid var(--line); border-radius:99px; padding:6px 12px; cursor:pointer;
  font-size:.85rem;}
.dueno.on{background:var(--accent-soft); border-color:var(--accent); color:var(--accent);
  font-weight:600;}
.dueno input{width:15px; height:15px; accent-color:var(--accent); margin:0;}
.dueno i{font-style:normal; color:var(--ink-soft); font-size:.78rem}
.dueno.on i{color:inherit; opacity:.8}
.ev u{text-decoration:none; color:var(--ink-soft); font-weight:600}

/* En el móvil, abajo solo lo de cada día; el resto, en «Más». */
.tab.mas{display:none}
@media (max-width:680px){
  .tab.sec{display:none}
  .tab.mas{display:block}
}
@media (max-width:420px){
  .tabs{padding-left:6px; padding-right:6px; gap:0;}
  .tab{padding-left:9px; padding-right:9px; font-size:.92rem;}
}

/* ============================================================
   AGENDA — una columna por persona
   ============================================================ */
.ag-fecha{color:var(--ink-soft); font-size:.9rem}
.ag-kpis{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; margin-bottom:14px}
.ag-kpi{text-align:left; background:var(--surface); border:1px solid var(--line); border-radius:14px;
  padding:12px 14px; box-shadow:var(--shadow); cursor:pointer; min-height:44px; font:inherit; color:inherit}
.ag-kpi .l{display:block; font-size:.66rem; font-weight:700; text-transform:uppercase;
  letter-spacing:.1em; color:var(--ink-soft)}
.ag-kpi .v{display:block; font-family:var(--font-mono); font-variant-numeric:tabular-nums;
  font-size:1.5rem; font-weight:600; margin-top:4px}
.ag-kpi.mal .v{color:var(--danger)}
.ag-kpi:hover{border-color:var(--accent)}
.ag-kpi[aria-pressed="true"]{border-color:var(--accent); background:var(--accent-soft);
  box-shadow:inset 0 0 0 1px var(--accent)}
.ag-citas{display:flex; flex-wrap:wrap; gap:8px; margin-bottom:14px}
.ag-cita{background:var(--surface2); border:1px solid var(--line); border-radius:10px;
  padding:8px 12px; font:inherit; font-size:.88rem; color:var(--ink); cursor:pointer; min-height:40px; text-align:left}
.ag-cita b{font-family:var(--font-mono); font-weight:600; color:var(--accent); margin-right:4px}
.ag-cita span{color:var(--ink-soft)}
.ag-cita.ok{opacity:.6; text-decoration:line-through}
.ag-cita.otra{background:none; color:var(--ink-soft); font-weight:600}
.ag-cita:hover{border-color:var(--accent)}
.ag-rapido{display:flex; gap:8px}
.ag-rapido input{flex:1; min-width:0; background:var(--surface); border:1px solid var(--line-campo);
  border-radius:10px; padding:11px 13px; font:inherit}
.ag-previo{margin:6px 2px 18px; font-size:.82rem; color:var(--ink-soft); min-height:1.2em}
.ag-cols{display:grid; grid-template-columns:repeat(auto-fit,minmax(290px,1fr)); gap:14px; align-items:start}
.ag-col{background:var(--surface); border:1px solid var(--line); border-radius:14px;
  padding:14px 16px; box-shadow:var(--shadow)}
.ag-col h3{font-family:var(--font-sans); font-size:1rem; font-weight:700; margin:0 0 4px}
.ag-col h3 small{font-weight:500; font-size:.8rem; color:var(--ink-soft)}
.ag-g{font-size:.7rem; font-weight:700; text-transform:uppercase; letter-spacing:.08em;
  color:var(--ink-soft); margin:14px 0 2px}
.ag-g.mal{color:var(--danger)}
.ag-t{display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:8px 0;
  border-top:1px solid var(--line)}
.ag-t input[type="checkbox"]{width:19px; height:19px; accent-color:var(--accent); flex:none; margin:0}
.ag-txt{flex:1; min-width:0; background:none; border:none; padding:4px 0; text-align:left;
  font:inherit; color:var(--ink); cursor:pointer; overflow-wrap:anywhere}
.ag-txt:hover{color:var(--accent)}
.ag-notas,.ag-curso{font-size:.72rem; font-weight:600; color:var(--ink-soft); white-space:nowrap}
.ag-curso{color:var(--accent)}
.ag-meta{display:flex; gap:6px; align-items:center; margin-left:auto}
.ag-meta .pj-chip,.ag-meta .fecha-chip{display:inline-flex; align-items:center; gap:6px;
  font-size:.74rem; font-weight:600; color:var(--ink-soft); background:var(--surface2);
  border:1px solid var(--line); border-radius:99px; padding:3px 10px; white-space:nowrap}
.ag-meta .pj-chip{cursor:pointer}
.ag-meta .pj-chip:hover{border-color:var(--accent); color:var(--accent)}
.ag-meta .fecha-chip.mal{color:var(--danger); border-color:var(--danger)}
.ag-t.vence .ag-txt{font-weight:600}
details.ag-mas{margin-top:10px}
details.ag-mas>summary{cursor:pointer; color:var(--ink-soft); font-size:.82rem; font-weight:600;
  padding:6px 0; list-style:none}
details.ag-mas>summary::-webkit-details-marker{display:none}
details.ag-mas>summary::before{content:"▸ "}
details.ag-mas[open]>summary::before{content:"▾ "}

/* la ficha de una tarea */
.ag-ficha-fila{display:flex; gap:14px; align-items:flex-end; flex-wrap:wrap}
.ag-hecha{display:flex; align-items:center; gap:8px; font-weight:600; min-height:44px}
.ag-hecha input{width:20px; height:20px; accent-color:var(--accent); margin:0}
.ag-proy{flex:1; min-width:180px}
.ag-proy select{width:100%; border:1px solid var(--line-campo); background:var(--surface);
  border-radius:10px; padding:9px 11px; font:inherit}
.ficha .tarea-meta{margin:0}
/* en la ficha hay sitio: los campos a tamaño de dedo, no de lista */
.ficha .tarea-meta select,.ficha .tarea-meta .tfecha{font-size:.9rem; padding:9px 11px;
  max-width:none; flex:1 1 150px; min-height:44px; border-color:var(--line-campo); color:var(--ink)}
.ficha .tarea-meta .curso{min-height:44px; padding:6px 14px; font-size:.82rem}
textarea.ag-nota{width:100%; background:var(--surface); border:1px solid var(--line-campo);
  border-radius:10px; padding:10px 12px; font:inherit; resize:vertical; min-height:74px}
.ag-notas-l{display:flex; flex-direction:column; gap:8px}
.ag-nota-i{background:var(--surface2); border-radius:10px; padding:10px 12px}
.ag-nota-q{display:flex; align-items:center; gap:6px; margin:0 0 4px; font-size:.78rem; font-weight:700}
.ag-nota-q span{font-weight:500; color:var(--ink-soft)}
.ag-nota-t{margin:0; white-space:pre-wrap; overflow-wrap:anywhere; font-size:.92rem; line-height:1.5}
.ag-nota-del{margin-left:auto; background:none; border:1px solid transparent; border-radius:8px;
  color:var(--ink-soft); padding:2px 8px; min-height:30px; cursor:pointer; font:inherit}
.ag-nota-del:hover,.ag-nota-del.armado{color:var(--danger); border-color:var(--danger)}
.ag-ficha-pie{display:flex; gap:10px; flex-wrap:wrap; border-top:1px solid var(--line); padding-top:14px}
.ag-ficha-pie button{background:var(--surface); border:1px solid var(--line-campo); border-radius:10px;
  padding:9px 14px; font:inherit; font-weight:600; min-height:44px; cursor:pointer; color:var(--ink)}
.ag-ficha-pie .ag-borrar{margin-left:auto; color:var(--danger); border-color:var(--danger)}
@media (max-width:680px){
  .ag-kpi{padding:10px 12px}
  .ag-kpi .v{font-size:1.25rem}
  .ag-kpi .l{letter-spacing:.04em}
  /* el título a lo ancho; proyecto y fecha, en su línea de debajo */
  .ag-t{row-gap:2px}
  .ag-meta{flex-basis:100%; margin-left:29px}
  .ag-col{padding:12px 14px}
}
