/* ===========================================================================
   TIPOGRAFIA - fuentes auto-hospedadas (no hay CDN: la app funciona sin conexion)
   Space Grotesk  -> titulos. Grotesca tecnica, formas reconocibles.
   IBM Plex Sans  -> cuerpo e interfaz. Humanista, aguanta texto chico y denso.
   IBM Plex Mono  -> cifras y tablas. Con figuras tabulares, columnas alineadas.
   Las dos primeras son variables (un archivo cubre todos los pesos), asi que
   los pesos intermedios que ya usaba el diseno recien ahora existen de verdad.
   =========================================================================== */
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url(fonts/ibm-plex-mono-400-latin.woff2) format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:600;font-display:swap;src:url(fonts/ibm-plex-mono-600-latin.woff2) format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:100 700;font-display:swap;src:url(fonts/ibm-plex-sans-var-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:100 700;font-display:swap;src:url(fonts/ibm-plex-sans-var-latin.woff2) format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:"Space Grotesk";font-style:normal;font-weight:300 700;font-display:swap;src:url(fonts/space-grotesk-var-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:"Space Grotesk";font-style:normal;font-weight:300 700;font-display:swap;src:url(fonts/space-grotesk-var-latin.woff2) format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}

/* ===========================================================================
   ESCALA TIPOGRAFICA
   9 pasos (antes habia 26 tamanos ad-hoc) y 4 pesos (antes 7, de los cuales
   750 y 850 no existian sin fuente variable). Los pasos van en rem contra el
   font-size de :root, que multiplica por --font-scale: asi la preferencia de
   tamano del usuario funciona de verdad, sin el hack de body.style.zoom que
   escalaba el layout entero y desenfocaba el texto.
   =========================================================================== */
:root{
  font-size:calc(16px * var(--font-scale,1));

  --font-display:"Space Grotesk",var(--font-body);
  --font-body:"IBM Plex Sans",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --font-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Consolas,monospace;

  --fs-1:.6875rem;   /* 11px - insignias, antetitulos en mayuscula */
  --fs-2:.75rem;     /* 12px - metadatos, fechas */
  --fs-3:.8125rem;   /* 13px - etiquetas */
  --fs-4:.875rem;    /* 14px - texto secundario */
  --fs-5:1rem;       /* 16px - cuerpo */
  --fs-6:1.125rem;   /* 18px - titulo de tarjeta */
  --fs-7:1.3125rem;  /* 21px - h2 */
  --fs-8:1.5625rem;  /* 25px - cifras destacadas */
  --fs-9:1.8125rem;  /* 29px - h1 */

  --fw-normal:400; --fw-medium:500; --fw-semibold:600; --fw-bold:700;

  --lh-tight:1.15;   /* titulos */
  --lh-snug:1.35;
  --lh-normal:1.55;  /* cuerpo */
}
/* ===========================================================================
   SISTEMA DE COLOR - autoridad unica.
   19 nombres de token, pero solo 9 valores por paleta (superficies, linea,
   texto, sombra). Los 5 de marca son constantes en las 7 paletas y los 5
   restantes se derivan con color-mix, asi que ninguna paleta los repite.
   REGLA: nada fuera de este bloque redefine estos nombres, salvo las islas de
   tema de mas abajo. Si un componente necesita un tono, se mezcla en el sitio
   con color-mix contra --paper.
   =========================================================================== */
:root{
  /* superficies, de la mas profunda a la mas elevada */
  --bg:#f3f5fa;--sidebar:#ffffff;--paper:#ffffff;--wash:#f7f8fc;--field:#ffffff;--line:#e2e6f0;--ink:#1e2540;--muted:#676f8a;--shadow:rgba(23,29,54,.10);
  /* marca - constantes, para que la identidad no mute entre paletas */
  --accent:#6258e8;   /* indigo - el usuario lo puede cambiar (update4.js) */
  --ok:#4bc7a3;       /* menta  */
  --warn:#ffb76c;     /* ambar  */
  --danger:#fa7a93;   /* rosa   */
  --on-accent:#fff;   /* texto/iconos encima de un relleno de marca */
  /* derivados: siguen a la paleta y al accent del usuario sin declararse dos
     veces. Los porcentajes salen de _contrast-audit.js: son los mas vivos que
     todavia pasan AA 4.5:1 en las 7 paletas. */
  --accent-ink:color-mix(in srgb,var(--accent) 56%,var(--ink));
  --ok-ink:color-mix(in srgb,var(--ok) 48%,var(--ink));
  --warn-ink:color-mix(in srgb,var(--warn) 44%,var(--ink));
  --danger-ink:color-mix(in srgb,var(--danger) 58%,var(--ink));
  --danger-strong:color-mix(in srgb,var(--danger) 62%,#2a0a12);

  /* elevacion: tres pasos y nada mas. En superficie oscura la sombra casi no se
     lee, asi que la jerarquia la cargan el borde y el cambio de superficie; la
     sombra solo asienta el elemento. Sin difuminados grandes: inflan la caja. */
  --elev-1:0 1px 2px var(--shadow);
  --elev-2:0 2px 6px var(--shadow), 0 1px 2px var(--shadow);
  --elev-3:0 12px 32px var(--shadow), 0 3px 8px var(--shadow)
}
:root[data-palette=dark]{--bg:#111526;--sidebar:#1d2339;--paper:#242a42;--wash:#1b2135;--field:#20263b;--line:#3a425f;--ink:#f2f4ff;--muted:#aab2cc;--shadow:rgba(2,4,10,.50)}
:root[data-palette=neon]{--bg:#03111b;--sidebar:#061d2b;--paper:#0d2635;--wash:#071e2b;--field:#091d29;--line:#205166;--ink:#eefbff;--muted:#8fb7c7;--shadow:rgba(0,3,8,.55)}
:root[data-palette=ember]{--bg:#12100f;--sidebar:#211a16;--paper:#2a241f;--wash:#201a17;--field:#231e1b;--line:#503b2d;--ink:#fff3e7;--muted:#c2aa95;--shadow:rgba(7,4,2,.52)}
:root[data-palette=forest]{--bg:#06130d;--sidebar:#0c2217;--paper:#173025;--wash:#0d2519;--field:#11281e;--line:#2b5944;--ink:#effbf4;--muted:#9fc4af;--shadow:rgba(2,8,4,.52)}
:root[data-palette=sunset]{--bg:#180b0d;--sidebar:#2b1215;--paper:#36201e;--wash:#281314;--field:#2d1a19;--line:#633a34;--ink:#fff3ee;--muted:#caa8a0;--shadow:rgba(10,3,3,.52)}
:root[data-palette=plum]{--bg:#130a18;--sidebar:#26132e;--paper:#33213b;--wash:#25142c;--field:#2a1b31;--line:#5a3966;--ink:#fcf2ff;--muted:#c7a8d1;--shadow:rgba(6,2,9,.52)}

/* -- Islas de tema ---------------------------------------------------------
   Unica excepcion a "solo :root define tokens": superficies que son oscuras a
   proposito en las 7 paletas. Al redefinir los tokens en su scope, todo lo de
   adentro los hereda y no hace falta hardcodear un navy por regla. */
.access-gate,.toast{
  --paper:#242a42;--wash:#171d34;--field:#171d34;--sidebar:#202744;
  --ink:#f7f8ff;--muted:#b9c1dc;--line:rgba(255,255,255,.12);
  --shadow:rgba(2,5,18,.55)}

/* Alias de compatibilidad: nombres heredados que siguen usados en ~500 lugares.
   Apuntan a los tokens de arriba, asi que migrar un call site es opcional y
   nunca hay dos fuentes de verdad para un color. */
:root{
  --theme-bg:var(--bg);--theme-sidebar:var(--sidebar);--theme-status:var(--sidebar);
  --theme-context:var(--paper);--theme-surface:var(--paper);--theme-surface-2:var(--wash);
  --theme-field:var(--field);--theme-line:var(--line);--theme-ink:var(--ink);
  --theme-muted:var(--muted);--theme-shadow:var(--shadow);
  --theme-positive:var(--ok);--theme-warning:var(--warn);--theme-danger:var(--danger);
  --mint:var(--ok);--peach:var(--warn);--pink:var(--danger)
}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-body)}.app-shell{min-height:100vh;display:flex}.sidebar{width:254px;background:var(--paper);border-right:1px solid var(--line);padding:27px 15px;display:flex;flex-direction:column;flex-shrink:0}.brand{display:flex;align-items:center;gap:10px;font-size:var(--fs-5);line-height:1.1;letter-spacing:-.3px;padding:0 9px 33px}.brand b{font-size:var(--fs-6)}.brand-mark{display:grid;place-items:center;width:33px;height:33px;border-radius:10px;background:var(--accent);color:white;font-size:var(--fs-6);font-weight:var(--fw-bold);overflow:hidden}
.brand-mark img{width:100%;height:100%;object-fit:cover}.project-label{font-size:var(--fs-3);color:var(--muted);font-weight:var(--fw-bold);letter-spacing:.9px;padding:0 9px 8px}select,input{font:inherit;color:var(--ink);border:1px solid var(--line);border-radius:9px;background:var(--paper);padding:10px}#project{width:100%;margin-bottom:25px;font-size:var(--fs-5)}nav{display:grid;gap:4px}.nav-item{border:0;background:transparent;text-align:left;color:var(--muted);font-weight:var(--fw-medium);font-size:var(--fs-5);font-family:inherit;padding:11px 10px;border-radius:9px;cursor:pointer}.nav-item>span:first-child{width:25px;display:inline-block;font-size:var(--fs-6)}.nav-item i{font-size:var(--fs-4);font-style:normal;float:right;background:color-mix(in srgb,var(--accent) 10%,var(--paper));color:var(--accent-ink);padding:2px 7px;border-radius:9px}.nav-item.active,.nav-item:hover{background:color-mix(in srgb,var(--accent) 10%,var(--paper));color:var(--accent-ink)}.sidebar-footer{margin-top:auto;border-top:1px solid var(--line);padding:18px 8px 0;display:flex;align-items:center;gap:9px;font-size:var(--fs-4)}.sidebar-footer small{color:var(--muted)}.avatar{display:grid;place-items:center;width:29px;height:29px;border-radius:50%;background:color-mix(in srgb,var(--accent) 18%,var(--paper));color:var(--accent-ink);font-size:var(--fs-3);font-weight:var(--fw-bold)}main{width:100%;padding:40px clamp(24px,5vw,70px);max-width:1500px;margin:auto}header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:32px;gap:16px}header>div:first-child{min-width:0}.header-actions{flex:0 0 auto}#eyebrow{font-size:var(--fs-4);font-weight:var(--fw-bold);color:var(--muted);letter-spacing:1px;margin:0 0 7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}h1{font-size:var(--fs-9);letter-spacing:-1.1px;margin:0}.primary{background:var(--accent);color:white;border:0;padding:11px 16px;border-radius:9px;font-weight:var(--fw-semibold);font-size:var(--fs-4);font-family:inherit;cursor:pointer;box-shadow:var(--elev-2)}.secondary{border:1px solid var(--line);background:var(--paper);border-radius:9px;padding:10px 14px;color:var(--muted);font-weight:var(--fw-semibold);cursor:pointer}.grid{display:grid;gap:18px}.metrics{grid-template-columns:repeat(4,1fr);margin-bottom:28px}.card{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:20px}.metric-label{font-size:var(--fs-4);color:var(--muted);font-weight:var(--fw-medium)}.metric-number{font-size:var(--fs-9);font-weight:var(--fw-semibold);letter-spacing:-1px;margin:8px 0}.metric-note{font-size:var(--fs-4);color:var(--ok-ink);font-weight:var(--fw-semibold)}.metric-note.warn{color:var(--danger-ink)}.dashboard-columns{grid-template-columns:1.45fr .9fr}.section-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px}.section-title h2{font-size:var(--fs-6);margin:0}.text-button{border:0;background:transparent;color:var(--accent-ink);font-weight:var(--fw-semibold);font-size:var(--fs-4);font-family:inherit;cursor:pointer}.task-row{display:flex;gap:12px;align-items:center;padding:13px 0;border-top:1px solid var(--line);font-size:var(--fs-5)}.task-row:first-of-type{border-top:0}.check{width:18px;height:18px;border:1.5px solid var(--line);border-radius:6px;cursor:pointer;background:white;flex:0 0 auto}.check.done{background:var(--mint);border-color:var(--mint)}.task-copy{flex:1;min-width:0}.task-copy.done{text-decoration:line-through;color:var(--muted)}.tag{font-size:var(--fs-3);font-weight:var(--fw-bold);padding:4px 7px;border-radius:6px}.high{color:var(--danger-ink);background:color-mix(in srgb,var(--danger) 14%,var(--paper))}.medium{color:var(--warn-ink);background:color-mix(in srgb,var(--warn) 20%,var(--paper))}.low{color:var(--ok-ink);background:color-mix(in srgb,var(--ok) 14%,var(--paper))}.date{color:var(--muted);font-size:var(--fs-4)}.progress{height:8px;background:var(--wash);border-radius:9px;overflow:hidden;margin:13px 0 8px}.progress span{display:block;height:100%;border-radius:9px;background:linear-gradient(90deg,var(--accent),#958dff)}.goal-row{padding:13px 0;border-top:1px solid var(--line)}.goal-row h3{font-size:var(--fs-5);margin:0}.goal-row p{font-size:var(--fs-4);color:var(--muted);margin:6px 0}.calendar-wrap{display:grid;grid-template-columns:1fr 275px;gap:20px}.calendar{display:grid;grid-template-columns:repeat(7,1fr);border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--paper)}.day-name{padding:13px;text-align:center;color:var(--muted);font-size:var(--fs-3);font-weight:var(--fw-bold);background:var(--wash)}.day{min-height:102px;min-width:0;border-top:1px solid var(--line);border-right:1px solid var(--line);padding:9px;font-size:var(--fs-4);cursor:pointer;overflow:hidden}.day:nth-child(7n){border-right:0}.day.muted{color:var(--muted)}.day.today .day-num{background:var(--accent);color:var(--on-accent);border-radius:50%;width:23px;height:23px;display:grid;place-items:center}.cal-event{font-size:var(--fs-3);margin-top:6px;padding:4px 5px;border-radius:5px;background:color-mix(in srgb,var(--accent) 10%,var(--paper));color:var(--accent-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-event.goal{background:color-mix(in srgb,var(--ok) 14%,var(--paper));color:var(--ok-ink)}.upcoming{font-size:var(--fs-5)}.empty{color:var(--muted);font-size:var(--fs-5);padding:20px 0}.list-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.filter{font-size:var(--fs-4);color:var(--muted)}.files{font-family:var(--font-mono);font-size:var(--fs-5);line-height:2;color:var(--muted)}.folder{color:var(--warn-ink)}.brand-layout{grid-template-columns:1fr 1fr}.brand-preview{border-radius:12px;background:#252b4c;min-height:200px;padding:28px;color:var(--on-accent)}.brand-preview .mini-logo{font-size:var(--fs-8);font-weight:var(--fw-bold)}.swatches{display:flex;gap:9px;margin-top:22px}.swatch{width:38px;height:38px;border-radius:50%;border:2px solid #fff}.brand-form{display:grid;gap:13px}.brand-form label{font-size:var(--fs-4);font-weight:var(--fw-semibold);color:var(--muted);display:grid;gap:6px}dialog{border:0;border-radius:15px;padding:0;box-shadow:var(--elev-3);width:min(420px,92vw)}dialog::backdrop{background:#20243c66}form{padding:23px;display:grid;gap:14px}.dialog-top{display:flex;align-items:center;justify-content:space-between}.dialog-top h2{font-size:var(--fs-6);margin:0}.close{border:0;background:transparent;font-size:var(--fs-8);color:var(--muted);cursor:pointer}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}form label{font-size:var(--fs-4);color:var(--muted);font-weight:var(--fw-semibold);display:grid;gap:6px}form input,form select{width:100%}#itemTitle{font-size:var(--fs-6)}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:5px}@media(max-width:800px){.sidebar{position:fixed;z-index:3;bottom:0;left:0;width:100%;height:63px;padding:7px 9px;border-top:1px solid var(--line);border-right:0;display:block}.brand,.project-label,#project,.sidebar-footer{display:none}nav{display:flex;justify-content:space-around}.nav-item{font-size:0;padding:5px 8px}.nav-item>span:first-child{font-size:var(--fs-7);width:auto}.nav-item i{display:none}main{padding:29px 18px 85px}h1{font-size:var(--fs-7)}.metrics{grid-template-columns:1fr 1fr}.dashboard-columns,.calendar-wrap,.brand-layout{grid-template-columns:1fr}.calendar-wrap aside{order:-1}.day{min-height:72px;padding:6px}.cal-event{font-size:0;height:6px;padding:0}.day-name{padding:9px 3px;font-size:var(--fs-1)}header{margin-bottom:22px}}
.access-locked{overflow:hidden!important}
.toast{z-index:11000!important}
.access-gate{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;padding:28px;background:radial-gradient(circle at 75% 15%,rgba(98,88,232,.23),transparent 32%),linear-gradient(145deg,#11162a,#181d34 58%,#12162a);color:#f7f8ff;overflow:auto}
.access-gate[hidden]{display:none}
.access-card{width:min(1040px,100%);position:relative;border:1px solid rgba(255,255,255,.12);border-radius:28px;background:rgba(30,36,64,.94);box-shadow:var(--elev-3);padding:44px}
.login-gate{max-width:580px;text-align:center}
.access-logo{display:grid;place-items:center;width:58px;height:58px;margin:0 auto 24px;border-radius:17px;background:linear-gradient(145deg,var(--accent),var(--accent));font-size:var(--fs-9);font-weight:var(--fw-bold);box-shadow:var(--elev-3)}
.access-logo.error{background:var(--danger)}
.access-kicker{margin:0 0 12px;color:#9d94ff;font-size:var(--fs-4);font-weight:var(--fw-bold);letter-spacing:.14em}
.access-card h1{margin:0;color:#fff;font-size:clamp(31px,5vw,52px);line-height:1.04;letter-spacing:-.04em}
.access-copy{max-width:650px;margin:18px 0 28px;color:var(--muted);font-size:var(--fs-6);line-height:1.65}
.login-gate .access-copy{margin-inline:auto}
.access-google{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;min-height:52px;border:1px solid rgba(255,255,255,.15);border-radius:14px;background:#fff;color:#1d2540;font:inherit;font-weight:var(--fw-bold);cursor:pointer;transition:.2s transform,.2s box-shadow}
.access-google:hover{transform:translateY(-2px);box-shadow:var(--elev-2)}
.access-google span{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:#f2f4ff;color:#4285f4;font-size:var(--fs-6);font-weight:var(--fw-bold)}
.access-security{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:18px;color:var(--muted);font-size:var(--fs-4)}
.access-security span{color:var(--ok)}
.access-loading{display:flex;align-items:center;gap:14px;padding:18px 22px;border:1px solid rgba(255,255,255,.12);border-radius:16px;background:#202744;color:#fff;box-shadow:var(--elev-3)}
.access-spinner{width:22px;height:22px;border:3px solid rgba(255,255,255,.2);border-top-color:#7569ff;border-radius:50%;animation:access-spin .8s linear infinite}
@keyframes access-spin{to{transform:rotate(360deg)}}
.onboarding-user{display:flex;align-items:center;gap:14px;padding-bottom:25px;margin-bottom:34px;border-bottom:1px solid rgba(255,255,255,.1)}
.onboarding-user img,.onboarding-user>span{display:grid;place-items:center;width:50px;height:50px;object-fit:cover;border-radius:15px;background:var(--accent);color:#fff;font-weight:var(--fw-bold)}
.onboarding-user div{display:grid;gap:2px}.onboarding-user small{color:var(--muted);font-size:var(--fs-3);font-weight:var(--fw-bold);letter-spacing:.12em}.onboarding-user b{font-size:var(--fs-6)}.onboarding-user p{margin:0;color:var(--muted);font-size:var(--fs-5)}
.onboarding-layout{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(280px,.75fr);gap:48px;align-items:start}
.first-project-form{display:grid;gap:12px;max-width:560px;margin-top:30px}
.first-project-form label{display:grid;gap:9px;color:#dfe3f4;font-weight:var(--fw-semibold)}
.first-project-form input:not([type=radio]):not([type=checkbox]){min-height:54px;border:1px solid rgba(255,255,255,.15);border-radius:14px;background:#171d34;color:#fff;padding:0 17px;font:inherit;font-size:var(--fs-6);outline:none}
.first-project-form input:not([type=radio]):not([type=checkbox]):focus{border-color:#7569ff;box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 14%,transparent)}
.first-project-form .primary{min-height:52px;margin-top:5px;font-size:var(--fs-6)}.first-project-form .primary:disabled{opacity:.65;cursor:wait}
.form-error{min-height:20px;margin:0;color:#ff9999;font-size:var(--fs-5)}
.onboarding-preview{display:grid;gap:12px;padding:18px;border:1px solid var(--line);border-radius:var(--r-4);background:var(--wash)}
.onboarding-preview div{display:grid;grid-template-columns:34px 1fr;column-gap:12px;padding:14px;border-radius:var(--r-3);background:var(--sidebar)}
.onboarding-preview span{grid-row:1/3;display:grid;place-items:center;width:32px;height:32px;border-radius:var(--r-2);background:color-mix(in srgb,var(--accent) 18%,var(--sidebar));color:var(--accent-ink);font-weight:var(--fw-bold)}
.onboarding-preview b{font-size:var(--fs-5)}.onboarding-preview p{margin:4px 0 0;color:var(--muted);font-size:var(--fs-4);line-height:1.45}
.legacy-notice{display:flex;gap:13px;margin-top:28px;padding:16px 18px;border:1px solid rgba(75,199,163,.25);border-radius:16px;background:rgba(75,199,163,.08)}
.legacy-notice>span{color:var(--ok)}.legacy-notice b{display:block;font-size:var(--fs-5)}.legacy-notice p{margin:4px 0 0;color:var(--muted);font-size:var(--fs-4);line-height:1.5}
.onboarding-close{position:absolute;top:22px;right:24px;width:38px;height:38px;border:0;border-radius:12px;background:#171d34;color:#cbd2e8;font-size:var(--fs-8);cursor:pointer}
@media(max-width:760px){.access-gate{padding:14px;place-items:start center}.access-card{margin-block:10px;padding:25px;border-radius:22px}.onboarding-layout{grid-template-columns:1fr;gap:25px}.access-card h1{font-size:var(--fs-9)}.onboarding-user{padding-right:35px}.onboarding-preview{padding:10px}}

/* Equipos y permisos por proyecto */
.team-page{display:grid;gap:18px}.team-summary{display:flex;align-items:center;justify-content:space-between;gap:24px;background:linear-gradient(135deg,var(--paper),color-mix(in srgb,var(--accent) 8%,var(--paper)))}.team-summary h2,.team-invite h2{margin:4px 0 7px;font-size:var(--fs-7)}.team-summary p,.team-invite p,.team-permission-note p{margin:0;color:var(--muted);font-size:var(--fs-5);line-height:1.55}.team-summary-metrics{display:flex;gap:10px}.team-summary-metrics>div{display:grid;gap:3px;min-width:112px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--paper)}.team-summary-metrics b{color:var(--accent-ink);font-size:var(--fs-6)}.team-summary-metrics span{color:var(--muted);font-size:var(--fs-3);font-weight:var(--fw-semibold)}.team-invite{display:grid;grid-template-columns:minmax(200px,.75fr) minmax(0,1.25fr);gap:24px;align-items:center;overflow:hidden}.team-invite form{min-width:0;grid-template-columns:minmax(0,1fr) minmax(150px,.85fr);gap:10px;align-items:end;padding:0}.team-invite label{min-width:0}.team-invite input,.team-invite select{min-width:0;width:100%}.team-invite .primary{grid-column:1/-1;width:100%;min-height:42px;white-space:normal}.team-members{display:grid}.team-member{display:grid;grid-template-columns:42px minmax(170px,1fr) auto 145px auto;gap:12px;align-items:center;padding:14px 0;border-top:1px solid var(--line)}.team-member:first-child{border-top:0}.team-avatar{width:40px;height:40px}.team-avatar img,.team-avatar span{display:grid;place-items:center;width:100%;height:100%;object-fit:cover;border-radius:12px;background:color-mix(in srgb,var(--accent) 13%,var(--paper));color:var(--accent-ink);font-size:var(--fs-4);font-weight:var(--fw-bold)}.team-identity{display:grid;gap:3px}.team-identity b{font-size:var(--fs-5)}.team-identity small{color:var(--muted);font-size:var(--fs-4)}.team-status,.team-role{padding:6px 9px;border-radius:8px;background:color-mix(in srgb,var(--ok) 14%,var(--paper));color:var(--ok-ink);font-size:var(--fs-3);font-weight:var(--fw-bold)}
.team-inline-check{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-3);color:var(--muted);cursor:pointer}.team-inline-check input{margin:0}.team-status.pending{background:color-mix(in srgb,var(--warn) 17%,var(--paper));color:var(--warn-ink)}.team-role.owner{background:color-mix(in srgb,var(--accent) 12%,var(--paper));color:var(--accent-ink)}.team-role-select{min-width:138px;padding:8px;font-size:var(--fs-4)}.team-remove{border:0;background:transparent;color:var(--danger-ink);font-size:var(--fs-4);font-weight:var(--fw-bold);cursor:pointer}.team-loading{display:flex;align-items:center;justify-content:center;gap:12px;min-height:180px}.team-loading p{color:var(--muted)}.team-loading .access-spinner{border-color:color-mix(in srgb,var(--accent) 20%,transparent);border-top-color:var(--accent)}.team-setup{display:flex;gap:18px;align-items:flex-start}.team-setup-icon{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:color-mix(in srgb,var(--danger) 14%,var(--paper));color:var(--danger-ink);font-weight:var(--fw-bold)}.team-setup h2{margin:0 0 8px}.team-setup p{margin:0 0 8px;color:var(--danger-ink)}.team-setup small{color:var(--muted)}.team-confirm-backdrop{position:fixed;inset:0;z-index:12000;display:grid;place-items:center;padding:20px;background:rgba(13,17,34,.68);backdrop-filter:blur(5px)}.team-confirm{width:min(430px,100%);padding:30px;border:1px solid var(--line);border-radius:20px;background:var(--paper);box-shadow:var(--elev-3);text-align:center}.team-confirm .access-logo{margin-bottom:18px}.team-confirm h2{margin:0 0 10px}.team-confirm p{color:var(--muted);font-size:var(--fs-5);line-height:1.6}.team-confirm .dialog-actions{margin-top:22px}.primary.danger{background:var(--danger-strong);box-shadow:none}
.text-button.danger-text{color:var(--danger-ink)}
@media(max-width:980px){.team-summary{align-items:flex-start;flex-direction:column}.team-invite{grid-template-columns:1fr}.team-invite form{grid-template-columns:1fr 1fr}.team-invite form .primary{grid-column:1/-1}.team-member{grid-template-columns:42px minmax(150px,1fr) auto}.team-member .team-status{display:none}.team-member .team-remove{grid-column:3}}
@media(max-width:640px){.team-summary-metrics{width:100%;display:grid;grid-template-columns:1fr 1fr}.team-summary-metrics>div{min-width:0}.team-summary-metrics>div:last-child{grid-column:1/-1}.team-invite form{grid-template-columns:1fr}.team-invite form .primary{grid-column:auto}.team-member{grid-template-columns:40px 1fr}.team-member .team-role,.team-member .team-role-select,.team-member .team-remove{grid-column:2;justify-self:start}.team-list .section-title{align-items:flex-start}.team-list .section-title .secondary{padding:8px 10px}}
.project-readonly-banner{display:flex;align-items:center;gap:12px;margin:-12px 0 22px;padding:12px 15px;border:1px solid color-mix(in srgb,var(--accent) 20%,var(--line));border-radius:12px;background:color-mix(in srgb,var(--accent) 7%,var(--paper));color:var(--ink)}.project-readonly-banner>span{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:var(--accent);color:var(--on-accent)}.project-readonly-banner div{display:grid;gap:2px}.project-readonly-banner b{font-size:var(--fs-4)}.project-readonly-banner small{color:var(--muted);font-size:var(--fs-4)}body[data-project-role="viewer"] #quickAdd{opacity:.5}

/* Actualización 11.1 · respaldo anterior e importación segura */
.backup-page{display:grid;gap:18px}.backup-cloud,.backup-legacy{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:20px;align-items:center}.backup-cloud h2,.backup-legacy h2,.backup-scope h2{margin:4px 0 7px;font-size:var(--fs-7)}.backup-cloud p,.backup-legacy p,.backup-scope p{margin:0;color:var(--muted);font-size:var(--fs-5);line-height:1.55}.backup-cloud-state{display:grid;grid-template-columns:9px auto;gap:2px 8px;align-items:center;min-width:155px;padding:13px 15px;border:1px solid var(--line);border-radius:13px;background:color-mix(in srgb,var(--ok) 8%,var(--paper))}.backup-cloud-state>span{width:9px;height:9px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 4px color-mix(in srgb,color-mix(in srgb,var(--ok) 100%,transparent) 14%,transparent)}.backup-cloud-state b{font-size:var(--fs-4)}.backup-cloud-state small{grid-column:2;color:var(--muted);font-size:var(--fs-3)}.backup-stats{display:grid;grid-template-columns:repeat(4,minmax(72px,1fr));gap:8px}.backup-stats>div{display:grid;gap:2px;padding:12px;border:1px solid var(--line);border-radius:11px;background:color-mix(in srgb,var(--accent) 5%,var(--paper));text-align:center}.backup-stats b{color:var(--accent-ink);font-size:var(--fs-6)}.backup-stats span{color:var(--muted);font-size:var(--fs-2);font-weight:var(--fw-bold)}.backup-legacy.imported,.backup-legacy.empty-backup{grid-template-columns:auto 1fr}.backup-legacy.imported>span,.backup-legacy.empty-backup>span{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:color-mix(in srgb,var(--ok) 14%,var(--paper));color:var(--ok-ink);font-size:var(--fs-7);font-weight:var(--fw-bold)}.backup-scope{display:grid;gap:18px}.backup-scope-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.backup-scope-grid>div{display:grid;grid-template-columns:34px 1fr;gap:3px 10px;align-items:center;padding:16px;border:1px solid var(--line);border-radius:13px;background:color-mix(in srgb,var(--accent) 3%,var(--paper))}.backup-scope-grid span{grid-row:1/3;display:grid;place-items:center;width:32px;height:32px;border-radius:10px;background:color-mix(in srgb,var(--accent) 13%,var(--paper));color:var(--accent-ink);font-size:var(--fs-4);font-weight:var(--fw-bold)}.backup-scope-grid b{font-size:var(--fs-4)}.backup-scope-grid p{font-size:var(--fs-4)}.backup-note{padding:12px 14px;border-radius:11px;background:color-mix(in srgb,var(--warn) 13%,var(--paper));color:var(--ink)!important}.legacy-import-modal{width:min(620px,100%);max-height:min(760px,calc(100vh - 40px));overflow:auto;padding:28px;border:1px solid var(--line);border-radius:20px;background:var(--paper);box-shadow:var(--elev-3)}.legacy-import-modal h2{margin:4px 0 0}.legacy-import-modal form{display:grid;gap:16px}.legacy-project-list{display:grid;gap:9px;margin-top:4px}.legacy-project-option{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:13px;background:color-mix(in srgb,var(--accent) 3%,var(--paper));cursor:pointer}.legacy-project-option:has(input:checked){border-color:color-mix(in srgb,var(--accent) 55%,var(--line));background:color-mix(in srgb,var(--accent) 9%,var(--paper))}.legacy-project-option input{width:17px;height:17px;accent-color:var(--accent)}.legacy-project-option span{display:grid;gap:3px}.legacy-project-option b{font-size:var(--fs-5)}.legacy-project-option small{color:var(--muted);font-size:var(--fs-4)}.legacy-import-warning{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:12px;background:color-mix(in srgb,var(--ok) 10%,var(--paper))}.legacy-import-warning span{color:var(--ok-ink)}.legacy-import-warning p{margin:0;color:var(--muted);font-size:var(--fs-4);line-height:1.5}.legacy-import-modal .form-error{min-height:16px;margin:0;color:var(--danger-ink);font-size:var(--fs-4);font-weight:var(--fw-semibold)}.legacy-import-modal .dialog-actions{margin-top:0}
@media(max-width:1050px){.backup-cloud,.backup-legacy{grid-template-columns:1fr auto}.backup-cloud>div:first-child,.backup-legacy>div:first-child{grid-column:1/-1}.backup-legacy.imported,.backup-legacy.empty-backup{grid-template-columns:auto 1fr}.backup-legacy.imported>div,.backup-legacy.empty-backup>div{grid-column:auto}.backup-stats{grid-template-columns:repeat(4,1fr)}}
@media(max-width:700px){.backup-cloud,.backup-legacy{grid-template-columns:1fr}.backup-cloud>div:first-child,.backup-legacy>div:first-child{grid-column:auto}.backup-cloud-state{min-width:0}.backup-cloud>button,.backup-legacy>button{width:100%}.backup-stats{grid-template-columns:1fr 1fr}.backup-scope-grid{grid-template-columns:1fr}.backup-legacy.imported,.backup-legacy.empty-backup{grid-template-columns:auto 1fr}.legacy-import-modal{padding:20px}.legacy-import-modal .dialog-actions{grid-template-columns:1fr}.legacy-import-modal .dialog-actions button{width:100%}}

/* Actualización 12 · instalación, tiempo real y modo sin conexión */
.realtime-status{display:flex;align-items:center;gap:6px;font-weight:var(--fw-bold)}.realtime-status::before{content:"";width:7px;height:7px;border-radius:50%;background:#aeb5c9}.realtime-status.live::before{background:var(--ok);box-shadow:0 0 0 3px color-mix(in srgb,var(--ok) 19%,transparent);animation:livePulse 1.8s infinite}.realtime-status.connecting::before{background:var(--warn)}.realtime-status.offline::before,.realtime-status.error::before{background:var(--danger)}@keyframes livePulse{50%{box-shadow:0 0 0 6px transparent}}.install-app-button{display:flex;align-items:center;gap:7px;border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:9px;padding:9px 11px;font-weight:var(--fw-semibold);font-size:var(--fs-4);font-family:inherit;cursor:pointer}.install-app-button:hover{border-color:var(--accent);color:var(--accent-ink)}.install-app-button span{color:var(--accent-ink);font-size:var(--fs-6)}.pwa-installed [data-install-app]{display:none!important}.account-install-card{display:grid;grid-template-columns:auto 1fr auto;gap:11px;align-items:center;padding:13px;border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--accent) 5%,var(--paper))}.account-install-card>div:nth-child(2){display:grid;gap:3px}.account-install-card b{font-size:var(--fs-4)}.account-install-card small{color:var(--muted);font-size:var(--fs-3);line-height:1.35}.mini-app-icon,.app-icon-preview{display:grid;place-items:center;border-radius:12px;background:var(--accent);color:var(--on-accent);font-weight:var(--fw-bold);box-shadow:inset 0 0 0 1px #ffffff24}.mini-app-icon{width:38px;height:38px}.app-icon-preview{width:68px;height:68px;margin:0 auto 16px;font-size:var(--fs-9)}.pwa-install-modal{width:min(430px,100%);padding:30px;border:1px solid var(--line);border-radius:20px;background:var(--paper);box-shadow:var(--elev-3);text-align:center}.pwa-install-modal h2{margin:4px 0 10px}.pwa-install-modal>p:not(.dialog-kicker){color:var(--muted);font-size:var(--fs-5);line-height:1.6}.pwa-install-modal>.primary{width:100%;margin-top:18px}.install-steps{display:grid;grid-template-columns:34px 1fr;gap:8px 10px;align-items:center;margin:18px 0;text-align:left}.install-steps span{display:grid;place-items:center;width:31px;height:31px;border-radius:9px;background:color-mix(in srgb,var(--accent) 13%,var(--paper));color:var(--accent-ink);font-size:var(--fs-4);font-weight:var(--fw-bold)}.install-steps b{font-size:var(--fs-4)}.offline-banner{position:fixed;z-index:9000;top:16px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:11px;width:min(500px,calc(100vw - 28px));padding:13px 16px;border:1px solid var(--warn);border-radius:13px;background:color-mix(in srgb,var(--warn) 20%,var(--paper));color:#6e4b17;box-shadow:var(--elev-3)}.offline-banner[hidden]{display:none}.offline-banner>span{display:grid;place-items:center;width:32px;height:32px;border-radius:10px;background:var(--warn);font-size:var(--fs-6)}.offline-banner div{display:grid;gap:2px}.offline-banner b{font-size:var(--fs-4)}.offline-banner small{font-size:var(--fs-3);line-height:1.4}
@media(max-width:800px){.sidebar{overflow-x:auto;overflow-y:hidden;scrollbar-width:none}.sidebar::-webkit-scrollbar{display:none}#navigation{justify-content:flex-start;width:max-content;min-width:100%;gap:3px}.nav-item{flex:0 0 48px;min-width:48px;text-align:center}.install-app-button{padding:8px;font-size:var(--fs-4)}.install-app-button b{display:inline}.account-install-card{grid-template-columns:auto 1fr}.account-install-card>button{grid-column:1/-1;width:100%}}

/* Checkpoint 14: la instalacion debe distinguirse de los controles de panel. */
.install-app-button,
body[data-theme=dark] .install-app-button{
  border:1px solid #4f46c8;
  background:linear-gradient(135deg,var(--accent),var(--accent));
  color:var(--on-accent);
  box-shadow:var(--elev-2)}
.install-app-button span,

.install-app-button:hover,
body[data-theme=dark] .install-app-button:hover{
  border-color:#3f38a8;
  background:linear-gradient(135deg,var(--accent),var(--accent));
  color:var(--on-accent);
  transform:translateY(-1px)}
.install-app-button:focus-visible{outline:3px solid rgba(98,88,232,.28);outline-offset:2px}

/* Checkpoint 15: estado del dispositivo, recuperación y conflictos. */
.sync-health-card{display:grid;gap:13px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--paper)}
.sync-health-head{display:flex;gap:10px;align-items:flex-start}.sync-health-head>div{display:grid;gap:3px}.sync-health-head b{font-size:var(--fs-4)}.sync-health-head small{color:var(--muted);font-size:var(--fs-3);line-height:1.45}
.sync-health-dot{width:10px;height:10px;margin-top:3px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 4px color-mix(in srgb,var(--ok) 12%,transparent);flex:0 0 auto}
.sync-health-card[data-mode="pending"] .sync-health-dot{background:var(--warn);box-shadow:0 0 0 4px color-mix(in srgb,var(--danger) 13%,transparent)}.sync-health-card[data-mode="offline"] .sync-health-dot,.sync-health-card[data-mode="conflict"] .sync-health-dot{background:var(--danger);box-shadow:0 0 0 4px color-mix(in srgb,var(--danger) 13%,transparent)}
.sync-health-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.sync-health-grid>div{display:grid;gap:3px;padding:9px;border-radius:9px;background:var(--wash)}.sync-health-grid small{font-size:var(--fs-1);font-weight:var(--fw-bold);letter-spacing:.6px;color:var(--muted)}.sync-health-grid b{font-size:var(--fs-3)}
.sync-conflict-modal{width:min(520px,calc(100vw - 28px));padding:30px;border:1px solid var(--line);border-radius:20px;background:var(--paper);box-shadow:var(--elev-3);text-align:center}.sync-conflict-icon{display:grid;place-items:center;width:58px;height:58px;margin:0 auto 14px;border-radius:16px;background:color-mix(in srgb,var(--warn) 20%,var(--paper));color:var(--warn-ink);font-size:var(--fs-8);font-weight:var(--fw-bold)}.sync-conflict-modal h2{margin:5px 0 9px}.sync-conflict-modal>p:not(.dialog-kicker){color:var(--muted);font-size:var(--fs-4);line-height:1.55}.sync-conflict-options{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:20px}.sync-conflict-options button{display:grid;gap:4px;text-align:left;padding:13px}.sync-conflict-options small{font-size:var(--fs-2);line-height:1.4;opacity:.8}
.update-ready-banner{position:fixed;z-index:9500;right:22px;bottom:42px;display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;width:min(440px,calc(100vw - 28px));padding:13px;border:1px solid #7a71ec;border-radius:13px;background:#242a42;color:var(--on-accent);box-shadow:var(--elev-3)}.update-ready-banner>span{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--accent);font-size:var(--fs-7)}.update-ready-banner div{display:grid;gap:2px}.update-ready-banner b{font-size:var(--fs-4)}.update-ready-banner small{color:#cdd2e7;font-size:var(--fs-2)}.update-ready-banner button{border:0;border-radius:8px;background:var(--accent);color:var(--on-accent);padding:9px 12px;font-weight:var(--fw-bold);cursor:pointer}
@media(max-width:600px){header:not(.mobile-app-header){flex-direction:column;gap:14px}.header-actions{width:100%;justify-content:flex-end}.offline-banner{top:8px}.pwa-install-modal{padding:24px}}
@media(max-width:600px){.sync-conflict-modal{padding:23px}.sync-conflict-options{grid-template-columns:1fr}.update-ready-banner{right:14px;bottom:14px;grid-template-columns:auto 1fr}.update-ready-banner button{grid-column:1/-1;width:100%}.sync-health-grid{grid-template-columns:1fr}}
@media(max-width:900px){.inspector{display:none!important}}
@media(max-width:800px){html,body{max-width:100%;overflow-x:hidden}.app-shell{width:100%;min-width:0}main{min-width:0}.sidebar{max-width:100vw}#navigation{padding-right:9px}}

/* Checkpoint 19: interfaz propia para teléfono y tablet. */
.mobile-app-header,.mobile-bottom-nav,.mobile-sheet-layer{display:none}
.mobile-sheet-layer[hidden],.mobile-sheet[hidden]{display:none!important}

@media(max-width:900px){
  html{background:var(--wash);overscroll-behavior-y:none}
  body.mobile-ui{min-height:100dvh;overflow-x:hidden;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
  body.mobile-ui.mobile-sheet-open{overflow:hidden}
  body.mobile-ui .app-shell{display:block;min-height:100dvh}
  body.mobile-ui .sidebar{display:none!important}
  body.mobile-ui .inspector,body.mobile-ui .statusbar{display:none!important}
  body.mobile-ui .app-shell>main{width:100%;max-width:900px;min-height:100dvh;margin:0 auto;padding:calc(86px + env(safe-area-inset-top)) 18px calc(98px + env(safe-area-inset-bottom))!important}
  body.mobile-ui .app-shell>main>header{display:block;margin:0 0 18px;padding:0}
  body.mobile-ui .app-shell>main>header .header-actions{display:none!important}
  body.mobile-ui #eyebrow{margin-bottom:5px;color:var(--accent-ink);font-size:var(--fs-2);letter-spacing:1.25px}
  body.mobile-ui #pageTitle{font-size:clamp(24px,5vw,31px);line-height:1.08;letter-spacing:-.85px}
  body.mobile-ui #view{min-width:0}
  body.mobile-ui .card{border-radius:18px;padding:17px;box-shadow:var(--elev-2)}
  body.mobile-ui button,body.mobile-ui select,body.mobile-ui input{min-height:42px}
  body.mobile-ui .text-button{min-height:38px;padding:5px 7px;font-weight:var(--fw-bold)}
  body.mobile-ui .icon-button{min-width:38px;min-height:38px;display:grid;place-items:center}
  body.mobile-ui .section-title{align-items:center;margin-bottom:11px}
  body.mobile-ui .section-title h2{font-size:var(--fs-6)}
  body.mobile-ui .empty{line-height:1.55}

  .mobile-ui .mobile-app-header{position:fixed;z-index:7000;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:calc(58px + env(safe-area-inset-top));padding:calc(8px + env(safe-area-inset-top)) 15px 8px;border-bottom:1px solid color-mix(in srgb,var(--line) 82%,transparent);background:color-mix(in srgb,var(--paper) 94%,transparent);box-shadow:var(--elev-2);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}
  .mobile-project-button{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:10px;align-items:center;min-width:0;max-width:calc(100vw - 76px);padding:0;border:0;background:transparent;color:var(--ink);text-align:left}
  .mobile-project-mark{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:linear-gradient(145deg,var(--accent),color-mix(in srgb,var(--accent) 72%,#29215c));color:var(--on-accent);font-size:var(--fs-4);font-weight:var(--fw-bold);box-shadow:var(--elev-2);overflow:hidden}
  .mobile-project-mark img{width:100%;height:100%;object-fit:cover;background:var(--paper)}
  .mobile-project-copy{display:grid;gap:1px;min-width:0}.mobile-project-copy small{color:var(--muted);font-size:var(--fs-1);font-weight:var(--fw-bold);letter-spacing:1px}.mobile-project-copy b{display:block;overflow:hidden;color:var(--ink);font-size:var(--fs-5);text-overflow:ellipsis;white-space:nowrap}.mobile-chevron{color:var(--muted);font-size:var(--fs-6)}
  .mobile-account-button{position:relative;display:grid;place-items:center;width:42px;height:42px;padding:0;border:1px solid var(--line);border-radius:13px;background:var(--paper);color:var(--accent-ink);box-shadow:var(--elev-2)}
  .mobile-account-button::after{content:"";position:absolute;right:-1px;bottom:-1px;width:10px;height:10px;border:3px solid var(--paper);border-radius:50%;background:var(--ok)}.mobile-ui[data-connection="offline"] .mobile-account-button::after,.mobile-ui[data-connection="error"] .mobile-account-button::after{background:var(--danger)}.mobile-ui[data-connection="connecting"] .mobile-account-button::after{background:var(--warn)}
  .mobile-account-button span{display:grid;place-items:center;width:32px;height:32px;border-radius:10px;background:color-mix(in srgb,var(--accent) 12%,var(--paper));font-size:var(--fs-3);font-weight:var(--fw-bold);overflow:hidden}.mobile-account-button img{width:100%;height:100%;object-fit:cover}

  .mobile-ui .mobile-bottom-nav{position:fixed;z-index:7000;left:0;right:0;bottom:0;display:grid;grid-template-columns:1fr 1fr 1.15fr 1fr 1fr;align-items:end;min-height:calc(60px + env(safe-area-inset-bottom));padding:6px 7px calc(6px + env(safe-area-inset-bottom));border-top:1px solid color-mix(in srgb,var(--line) 82%,transparent);background:color-mix(in srgb,var(--paper) 96%,transparent);box-shadow:var(--elev-3);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}
  .mobile-bottom-nav button{position:relative;display:grid;place-items:center;align-content:center;gap:3px;min-width:0;min-height:44px;padding:3px;border:0;border-radius:13px;background:transparent;color:var(--muted)}
  .mobile-bottom-nav button>span{font-size:var(--fs-7);line-height:1}.mobile-bottom-nav button>b{font-size:var(--fs-2);font-weight:var(--fw-bold)}.mobile-bottom-nav button.active{color:var(--accent-ink);background:color-mix(in srgb,var(--accent) 8%,transparent)}
  .mobile-bottom-nav button>i{position:absolute;top:1px;right:calc(50% - 20px);display:grid;place-items:center;min-width:17px;height:17px;padding:0 4px;border:2px solid var(--paper);border-radius:9px;background:var(--danger);color:var(--on-accent);font-weight:var(--fw-bold);font-size:var(--fs-1);font-family:inherit}
  .mobile-bottom-nav .mobile-create-button{align-self:start;min-height:52px;margin-top:-16px;color:var(--on-accent);background:linear-gradient(145deg,var(--accent),var(--accent));border:5px solid var(--paper);border-radius:21px;box-shadow:var(--elev-2)}
  .mobile-bottom-nav .mobile-create-button>span{font-size:var(--fs-9)}.mobile-bottom-nav .mobile-create-button>b{color:var(--on-accent)}

  .mobile-ui .mobile-sheet-layer{position:fixed;z-index:8200;inset:0;display:flex;align-items:flex-end;justify-content:center;padding-top:env(safe-area-inset-top);background:rgba(13,17,34,.42);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
  .mobile-sheet-dismiss{position:absolute;inset:0;width:100%;height:100%;border:0;background:transparent}
  .mobile-sheet{position:relative;z-index:1;width:100%;max-height:min(84dvh,760px);overflow:auto;padding:9px 16px calc(22px + env(safe-area-inset-bottom));border:1px solid var(--line);border-bottom:0;border-radius:25px 25px 0 0;background:var(--paper);box-shadow:var(--elev-3);animation:mobileSheetIn .2s ease-out}
  @keyframes mobileSheetIn{from{transform:translateY(35px);opacity:.4}}
  .mobile-sheet-handle{width:42px;height:5px;margin:1px auto 13px;border-radius:5px;background:color-mix(in srgb,var(--muted) 35%,transparent)}
  .mobile-sheet-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.mobile-sheet-title small{color:var(--accent-ink);font-size:var(--fs-1);font-weight:var(--fw-bold);letter-spacing:1px}.mobile-sheet-title h2{margin:3px 0 0;font-size:var(--fs-7)}.mobile-sheet-title>button{width:40px;height:40px;border:0;border-radius:12px;background:var(--wash);color:var(--muted);font-size:var(--fs-7)}
  .mobile-tool-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.mobile-tool-grid button,.mobile-create-grid button{display:grid;grid-template-columns:40px minmax(0,1fr);gap:2px 10px;align-items:center;min-width:0;padding:12px;border:1px solid var(--line);border-radius:15px;background:var(--paper);color:var(--ink);text-align:left}.mobile-tool-grid button>span,.mobile-create-grid button>span{grid-row:1/3;display:grid;place-items:center;width:40px;height:40px;border-radius:12px;font-size:var(--fs-6);font-weight:var(--fw-bold)}.mobile-tool-grid button>b,.mobile-create-grid button>b{overflow:hidden;font-size:var(--fs-4);text-overflow:ellipsis;white-space:nowrap}.mobile-tool-grid button>small,.mobile-create-grid button>small{overflow:hidden;color:var(--muted);font-size:var(--fs-2);text-overflow:ellipsis;white-space:nowrap}
  .mobile-create-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.mobile-create-grid button{min-height:76px}
  .mobile-tool-grid .violet,.mobile-create-grid .violet{background:color-mix(in srgb,var(--accent) 11%,var(--paper));color:var(--accent-ink)}.mobile-tool-grid .mint,.mobile-create-grid .mint{background:color-mix(in srgb,var(--ok) 14%,var(--paper));color:var(--ok-ink)}.mobile-tool-grid .peach,.mobile-create-grid .peach{background:color-mix(in srgb,var(--warn) 20%,var(--paper));color:var(--warn-ink)}.mobile-tool-grid .blue,.mobile-create-grid .blue{background:var(--wash);color:#327bb1}.mobile-tool-grid .pink,.mobile-create-grid .pink{background:color-mix(in srgb,var(--danger) 14%,var(--paper));color:var(--danger-ink)}
  .mobile-project-list{display:grid;gap:8px}.mobile-project-option{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:11px;align-items:center;width:100%;padding:10px;border:1px solid var(--line);border-radius:15px;background:var(--paper);color:var(--ink);text-align:left}.mobile-project-option.active{border-color:color-mix(in srgb,var(--accent) 55%,var(--line));background:color-mix(in srgb,var(--accent) 7%,var(--paper))}.mobile-project-option-mark,.mobile-project-option-mark>span,.mobile-project-option-mark>img{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:color-mix(in srgb,var(--accent) 13%,var(--paper));color:var(--accent-ink);font-size:var(--fs-3);font-weight:var(--fw-bold);object-fit:cover;overflow:hidden}.mobile-project-option>span:nth-child(2){display:grid;gap:3px}.mobile-project-option b{font-size:var(--fs-5)}.mobile-project-option small{color:var(--muted);font-size:var(--fs-3)}.mobile-project-option>i{color:var(--accent-ink);font-style:normal;font-weight:var(--fw-bold)}.mobile-new-project{width:100%;margin-top:10px;border:1px dashed color-mix(in srgb,var(--accent) 55%,var(--line));border-radius:14px;background:color-mix(in srgb,var(--accent) 5%,var(--paper));color:var(--accent-ink);font-weight:var(--fw-bold)}

  body.mobile-ui .metrics{display:flex!important;gap:11px!important;margin:0 -18px 17px!important;padding:0 18px 4px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}body.mobile-ui .metrics::-webkit-scrollbar{display:none}body.mobile-ui .metrics>.card{flex:0 0 min(74vw,270px);scroll-snap-align:start;min-height:142px}body.mobile-ui .metric-label{font-size:var(--fs-3)}body.mobile-ui .metric-number{font-size:var(--fs-9);margin:10px 0}body.mobile-ui .metric-note{font-size:var(--fs-3);line-height:1.35}
  body.mobile-ui .dashboard-columns,body.mobile-ui .insight-grid,body.mobile-ui .brand-layout,body.mobile-ui .finance-monthly{grid-template-columns:1fr!important;gap:13px}
  body.mobile-ui .insight-grid{margin-top:13px}
  body.mobile-ui .task-row{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:7px 9px;align-items:start;padding:14px 0}body.mobile-ui .task-row>.check{grid-column:1;grid-row:1/3;margin-top:2px;width:42px;height:42px;border-width:2px;border-radius:13px;display:grid;place-items:center}body.mobile-ui .task-row>.check.done::after{content:'✓';font-size:var(--fs-6);font-weight:var(--fw-bold);color:var(--on-accent);line-height:1}body.mobile-ui .task-row>.task-copy{grid-column:2;grid-row:1;min-width:0;line-height:1.38}body.mobile-ui .task-row>.tag{grid-column:2;grid-row:2;justify-self:start}body.mobile-ui .task-row>.row-actions{grid-column:3;grid-row:1/3;align-self:center}body.mobile-ui .task-row>.icon-button{grid-column:3}body.mobile-ui .task-copy .date{margin-top:4px;line-height:1.4}
  body.mobile-ui .list-head{gap:12px}body.mobile-ui .filterbar{display:flex;flex-wrap:nowrap;margin:10px -17px 14px;padding:0 17px;overflow-x:auto;scrollbar-width:none}body.mobile-ui .filterbar select{flex:0 0 auto;min-width:145px}
  body.mobile-ui .board{display:flex!important;gap:12px!important;margin-inline:-18px;padding:0 18px 8px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}body.mobile-ui .board::-webkit-scrollbar{display:none}body.mobile-ui .board-column{flex:0 0 min(84vw,430px);width:min(84vw,430px);min-height:360px!important;max-height:none!important;overflow:visible!important;scroll-snap-align:center;border-radius:18px!important;padding:14px!important}body.mobile-ui .board-column-wide{flex-basis:calc(100vw - 36px);width:calc(100vw - 36px)}body.mobile-ui .board-card{border-radius:13px;padding:14px;box-shadow:var(--elev-2)}
  body.mobile-ui .week-grid.vertical-week{gap:9px}body.mobile-ui .vertical-week .week-day{grid-template-columns:92px minmax(0,1fr);gap:10px;min-height:82px;padding:13px;border-radius:15px}body.mobile-ui .vertical-week .week-task{display:block;margin:0 0 6px;padding:7px;font-size:var(--fs-4)}
  body.mobile-ui .file-layout{grid-template-columns:1fr;gap:12px}body.mobile-ui .file-sidebar{display:flex;gap:6px;margin-inline:-17px;padding:8px 17px;border:0;border-radius:0;overflow-x:auto;scrollbar-width:none}body.mobile-ui .file-folder-button{flex:0 0 auto;width:auto;min-height:40px;padding:8px 11px;border:1px solid var(--line);background:var(--paper);white-space:nowrap}body.mobile-ui .file-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}body.mobile-ui .file-tile{min-height:145px;border-radius:15px;padding:13px}
  body.mobile-ui .settings-shell{grid-template-columns:1fr;gap:12px}body.mobile-ui .settings-nav{position:static;display:flex;margin-inline:-18px;padding:5px 18px;overflow-x:auto;scrollbar-width:none}body.mobile-ui .settings-nav h2{display:none}body.mobile-ui .settings-nav button{flex:0 0 auto;min-height:40px;padding:8px 12px;border:1px solid var(--line);white-space:nowrap}body.mobile-ui .settings-content>.card{min-height:0}body.mobile-ui .setting-row{align-items:flex-start;gap:14px}body.mobile-ui .setting-row>input:not([type="checkbox"]),body.mobile-ui .setting-row>select{max-width:48%}
  body.mobile-ui .brand-gallery{grid-template-columns:repeat(3,minmax(0,1fr))}body.mobile-ui .brand-preview{min-height:170px;padding:20px;border-radius:17px}body.mobile-ui .font-grid{grid-template-columns:1fr}
  body.mobile-ui .finance-summary{display:flex!important}body.mobile-ui .finance-chart{grid-template-columns:1fr!important;gap:13px}body.mobile-ui .transaction{grid-template-columns:34px minmax(0,1fr) auto!important;gap:8px;padding:13px 0}body.mobile-ui .transaction>strong{grid-column:3}body.mobile-ui .transaction>.icon-button{grid-row:2;grid-column:3}body.mobile-ui .budget-breakdown{grid-template-columns:1fr 1fr}
  body.mobile-ui .backup-cloud,body.mobile-ui .backup-legacy{grid-template-columns:1fr!important}body.mobile-ui .backup-cloud>*,body.mobile-ui .backup-legacy>*{grid-column:auto!important}body.mobile-ui .backup-stats{grid-template-columns:1fr 1fr}
  body.mobile-ui .project-readonly-banner{margin:0 0 15px;border-radius:14px}
  body.mobile-ui .offline-banner{top:calc(75px + env(safe-area-inset-top));width:calc(100vw - 24px)}
  body.mobile-ui .toast{right:12px;bottom:calc(88px + env(safe-area-inset-bottom));max-width:calc(100vw - 24px)}
  body.mobile-ui .update-ready-banner{right:12px;bottom:calc(88px + env(safe-area-inset-bottom));width:calc(100vw - 24px)}

  body.mobile-ui dialog[open]{position:fixed!important;inset:0!important;width:100vw!important;max-width:none!important;height:100dvh!important;max-height:none!important;margin:0!important;padding:0!important;border-radius:0!important;overflow:hidden!important;background:var(--paper)!important}
  body.mobile-ui dialog>form{width:100%;height:100dvh;min-height:100dvh;padding:calc(18px + env(safe-area-inset-top)) 18px calc(16px + env(safe-area-inset-bottom))!important;overflow-y:auto;align-content:start;background:var(--paper)}
  body.mobile-ui dialog .dialog-top{position:sticky;z-index:2;top:calc(-18px - env(safe-area-inset-top));margin:calc(-18px - env(safe-area-inset-top)) -18px 6px;padding:calc(15px + env(safe-area-inset-top)) 18px 12px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--paper) 96%,transparent);backdrop-filter:blur(14px)}
  body.mobile-ui dialog .close{width:42px;height:42px;border-radius:12px;background:var(--wash)}
  body.mobile-ui dialog .dialog-actions{position:sticky;z-index:2;bottom:calc(-16px - env(safe-area-inset-bottom));display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:auto -18px calc(-16px - env(safe-area-inset-bottom));padding:12px 18px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:color-mix(in srgb,var(--paper) 96%,transparent);backdrop-filter:blur(14px)}
  body.mobile-ui dialog .dialog-actions button{width:100%;min-height:47px}
  body.mobile-ui .team-confirm-backdrop{align-items:end;padding:0}body.mobile-ui .team-confirm,body.mobile-ui .pwa-install-modal,body.mobile-ui .sync-conflict-modal,body.mobile-ui .legacy-import-modal{width:100%;max-height:90dvh;margin:0;padding:23px 18px calc(22px + env(safe-area-inset-bottom));border-radius:25px 25px 0 0;overflow:auto}

  .mobile-calendar-view{display:grid;gap:15px}.mobile-calendar-toolbar{display:grid;grid-template-columns:44px 1fr 44px;gap:10px;align-items:center}.mobile-calendar-toolbar>button{width:44px;height:44px;border:1px solid var(--line);border-radius:13px;background:var(--paper);color:var(--accent-ink);font-size:var(--fs-8)}.mobile-calendar-toolbar>div{text-align:center}.mobile-calendar-toolbar small,.mobile-section-heading small{color:var(--accent-ink);font-size:var(--fs-1);font-weight:var(--fw-bold);letter-spacing:1px}.mobile-calendar-toolbar h2{margin:2px 0 0;font-size:var(--fs-6);text-transform:capitalize}.mobile-calendar-card{padding:12px 8px 9px;border:1px solid var(--line);border-radius:19px;background:var(--paper);box-shadow:var(--elev-2)}.mobile-calendar-weekdays,.mobile-calendar-grid{display:grid;grid-template-columns:repeat(7,1fr)}.mobile-calendar-weekdays span{padding:4px;text-align:center;color:var(--muted);font-size:var(--fs-2);font-weight:var(--fw-bold)}.mobile-calendar-day{display:grid;place-items:center;align-content:center;gap:4px;min-width:0!important;min-height:48px!important;padding:3px!important;border:0;border-radius:12px;background:transparent;color:var(--ink)}.mobile-calendar-day>span{display:grid;place-items:center;width:28px;height:28px;border-radius:10px;font-size:var(--fs-4);font-weight:var(--fw-bold)}.mobile-calendar-day.muted{opacity:.34}.mobile-calendar-day.today>span{background:var(--accent);color:var(--on-accent);box-shadow:var(--elev-2)}.mobile-calendar-day>small{display:flex;align-items:center;justify-content:center;gap:2px;height:5px}.mobile-calendar-day>small i{width:4px;height:4px;border-radius:50%;background:var(--accent)}.mobile-calendar-day>small i.goal{background:var(--ok)}.mobile-calendar-day>small b{color:var(--muted);font-size:var(--fs-1)}.mobile-agenda{padding:17px;border:1px solid var(--line);border-radius:19px;background:var(--paper)}.mobile-section-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.mobile-section-heading h2{margin:2px 0 0;font-size:var(--fs-6)}.mobile-section-heading>button{border:0;border-radius:10px;background:color-mix(in srgb,var(--accent) 10%,var(--paper));color:var(--accent-ink);font-size:var(--fs-4);font-weight:var(--fw-bold);padding:8px 10px}.mobile-agenda-item{display:grid;grid-template-columns:42px minmax(0,1fr) 8px;gap:11px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}.mobile-agenda-item:first-of-type{border-top:0}.mobile-agenda-date{display:grid;place-items:center;width:42px;height:48px;border-radius:13px;background:var(--wash)}.mobile-agenda-date b{font-size:var(--fs-6)}.mobile-agenda-date small{color:var(--muted);font-size:var(--fs-1);font-weight:var(--fw-bold);text-transform:uppercase}.mobile-agenda-item>button{display:grid;gap:4px;min-width:0;min-height:44px;padding:0;border:0;background:transparent;color:var(--ink);text-align:left}.mobile-agenda-item>button b{overflow:hidden;font-size:var(--fs-4);text-overflow:ellipsis;white-space:nowrap}.mobile-agenda-item>button small{color:var(--muted);font-size:var(--fs-2)}.mobile-agenda-item>i{width:8px;height:8px;border-radius:50%;background:var(--warn)}.mobile-agenda-item>i.done{background:var(--ok)}.mobile-empty-state{display:grid;place-items:center;gap:4px;padding:25px 10px;text-align:center}.mobile-empty-state>span{display:grid;place-items:center;width:45px;height:45px;border-radius:14px;background:var(--wash);color:var(--accent-ink);font-size:var(--fs-7)}.mobile-empty-state b{margin-top:5px;font-size:var(--fs-5)}.mobile-empty-state small{color:var(--muted);font-size:var(--fs-3)}
}

@media(min-width:901px){
  html,body{width:100%;height:100%;min-height:100%;overflow:hidden!important;overscroll-behavior:none}
  body{--desktop-sidebar:234px;--desktop-context:250px;--desktop-status:27px}
  body.sidebar-collapsed{--desktop-sidebar:0px}body.inspector-hidden{--desktop-context:0px}body.statusbar-hidden{--desktop-status:0px}
  .app-shell{display:block!important;width:100%!important;height:100%!important;min-height:0!important;overflow:visible!important}
  .sidebar{position:fixed!important;z-index:60;inset:0 auto 0 0!important;display:flex!important;width:var(--desktop-sidebar)!important;height:auto!important;min-height:0!important;padding:21px 14px calc(38px + var(--desktop-status))!important;overflow:hidden!important;transition:width .18s ease,padding .18s ease}
  body.sidebar-collapsed .sidebar{width:0!important;padding-inline:0!important}
  .sidebar .brand{flex:0 0 auto;margin-bottom:15px}.sidebar .project-label{flex:0 0 auto}.sidebar #project{flex:0 0 auto;margin-bottom:10px}
  .sidebar #navigation{display:grid!important;flex:1 1 auto!important;min-height:0!important;align-content:start!important;gap:6px!important;overflow-y:auto!important;overflow-x:hidden!important;overscroll-behavior:contain!important;scrollbar-width:thin}
  .sidebar .nav-item{min-height:40px!important;padding:10px 12px!important;font-size:var(--fs-4)!important;line-height:1.2!important}.sidebar .nav-item>span{font-size:var(--fs-6)!important}
  .sidebar-footer{flex:0 0 auto!important;margin-top:8px!important;padding-top:11px!important}
  .app-shell>main{position:fixed!important;z-index:1;inset:0 var(--desktop-context) var(--desktop-status) var(--desktop-sidebar)!important;width:auto!important;max-width:none!important;height:auto!important;min-width:0!important;min-height:0!important;margin:0!important;padding:37px clamp(24px,3vw,50px) 54px!important;overflow-x:hidden!important;overflow-y:auto!important;overscroll-behavior:contain!important;scrollbar-gutter:auto!important;transition:left .18s ease,right .18s ease}
  .app-shell>main #view{min-height:calc(100% - 78px)}
  .inspector{position:fixed!important;z-index:55;top:36px!important;right:14px!important;bottom:auto!important;left:auto!important;width:calc(var(--desktop-context) - 28px)!important;max-width:none!important;max-height:calc(100% - 82px - var(--desktop-status))!important;margin:0!important;padding:19px 17px!important;overflow:hidden!important}
  body.inspector-hidden .inspector{display:none!important}
  .statusbar{position:fixed!important;z-index:9000!important;inset:auto 0 0 0!important;display:flex!important;width:100%!important;height:var(--desktop-status)!important;min-height:var(--desktop-status)!important;padding:0 14px!important;overflow:hidden!important;background:var(--accent)!important;color:var(--on-accent)!important}.statusbar-hidden .statusbar{display:none!important}
  .share-page .team-invite{grid-template-columns:minmax(230px,.75fr) minmax(0,1.25fr)!important;overflow:hidden!important}
  .share-page .team-invite form{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;width:100%!important;min-width:0!important}
  .share-page .team-invite form>*{min-width:0!important}.share-page .team-invite .primary{grid-column:1/-1!important;width:100%!important;min-width:0!important}
}
@media(min-width:901px) and (max-height:760px){
  .sidebar{padding-top:13px!important}.sidebar .brand{margin-bottom:9px}.sidebar #project{margin-bottom:5px}.sidebar-footer{margin-top:5px!important;padding-top:7px!important}
}

@media(max-width:900px){
  .statusbar{display:none!important}
}
@media(max-width:900px){
  html{width:100%!important;height:auto!important;min-height:100%!important;overflow-x:hidden!important;overflow-y:auto!important;overscroll-behavior-y:auto!important;touch-action:pan-y pinch-zoom!important}
  body.mobile-ui{width:100%!important;height:auto!important;min-height:100dvh!important;overflow-x:hidden!important;overflow-y:visible!important;overscroll-behavior-y:auto!important;touch-action:pan-y pinch-zoom!important;-webkit-overflow-scrolling:touch}
  body.mobile-ui.mobile-sheet-open{overflow:hidden!important}
  body.mobile-ui .app-shell{display:block!important;width:100%!important;height:auto!important;min-height:100dvh!important;overflow:visible!important;touch-action:pan-y pinch-zoom!important}
  body.mobile-ui .app-shell>main{position:static!important;width:100%!important;max-width:900px!important;height:auto!important;min-height:100dvh!important;overflow:visible!important;touch-action:pan-y pinch-zoom!important}
  body.mobile-ui #view,body.mobile-ui #view>*{max-width:100%;touch-action:pan-y pinch-zoom}
  body.mobile-ui .metrics,body.mobile-ui .board,body.mobile-ui .filterbar,body.mobile-ui .file-sidebar,body.mobile-ui .settings-nav,body.mobile-ui .share-role-grid{touch-action:pan-x pan-y pinch-zoom}
  body.mobile-ui .mobile-bottom-nav{box-sizing:border-box!important;display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr))!important;inset-inline:0!important;width:100%!important;max-width:100%!important;overflow:visible!important}
  body.mobile-ui .mobile-bottom-nav>button:not(.mobile-nav-expand){width:100%!important;min-width:0!important;max-width:100%!important}
  body.mobile-ui .mobile-nav-expand{position:absolute!important;z-index:2!important;top:-40px!important;right:max(12px,env(safe-area-inset-right))!important;display:grid!important;place-items:center!important;width:42px!important;height:42px!important;min-width:42px!important;min-height:42px!important;padding:0!important;border:3px solid var(--paper)!important;border-radius:50%!important;background:var(--accent)!important;color:var(--on-accent)!important;box-shadow:var(--elev-2)!important}
  body.mobile-ui .mobile-nav-expand span{font-size:var(--fs-5)!important;line-height:1!important;transform:none!important}
  body.mobile-ui .mobile-sheet{touch-action:pan-y pinch-zoom!important;-webkit-overflow-scrolling:touch}
  body.mobile-ui .team-invite{overflow:hidden!important}body.mobile-ui .team-invite form{display:grid!important;grid-template-columns:1fr!important;width:100%!important;min-width:0!important}body.mobile-ui .team-invite form>*{width:100%!important;min-width:0!important}body.mobile-ui .team-invite .primary{grid-column:auto!important;width:100%!important;min-width:0!important}
}/* CENTRO_STYLES_CLOUD_STABLE_30: capas 22, 24 y 25 consolidadas. */
/* ==== checkpoint22.css ==== */
/* Centro de Operaciones — Checkpoint 22
   Capa final de temas completos y experiencia táctil. Se carga después de los estilos históricos. */


body[data-palette]{
  background:var(--theme-bg)!important;color:var(--theme-ink)!important
}
html[data-palette]{background:var(--theme-bg)!important}
body[data-palette] .app-shell>main{background:var(--theme-bg)!important}
body[data-palette] .sidebar{background:var(--theme-sidebar)!important;border-color:var(--theme-line)!important}
body[data-palette] .inspector{background:var(--theme-context)!important;border-color:var(--theme-line)!important;box-shadow:var(--elev-3)!important}
body[data-palette] :is(.card,.board-card,.file-tile,.week-day,.calendar,.mobile-calendar-card,.mobile-agenda,.mobile-sheet,.pwa-install-modal,.team-confirm,.sync-conflict-modal,.legacy-import-modal){
  background:var(--theme-surface)!important;color:var(--theme-ink)!important;border-color:var(--theme-line)!important;box-shadow:var(--elev-2)}
body[data-palette] :is(.day-name,.context-stat,.notice,.file-sidebar,.account-hero,.cloud-note,.mobile-agenda-date,.mobile-empty-state>span,.recurrence-panel,.preview-section,.budget-progress,.manage-item){
  background:var(--theme-surface-2)!important;color:var(--theme-ink)!important;border-color:var(--theme-line)!important
}
body[data-palette] :is(input,select,textarea,dialog,.account-button,.google-button,.secondary,.context-action,.file-folder-button,.mobile-project-option,.mobile-tool-grid button,.mobile-create-grid button){
  background:var(--theme-field)!important;color:var(--theme-ink)!important;border-color:var(--theme-line)!important
}
body[data-palette] :is(.task-row,.transaction,.cashflow-line,.goal-row,.setting-row){border-color:var(--theme-line)!important}
body[data-palette] :is(.filter,.date,.metric-label,.dialog-copy,.settings-heading p,.settings-help,.task-row small,.transaction small){color:var(--theme-muted)!important}
body[data-palette] .metric-note{color:var(--ok-ink)!important}body[data-palette] .metric-note.warn{color:var(--danger-ink)!important}
body[data-palette] .mobile-app-header,body[data-palette] .mobile-bottom-nav{background:color-mix(in srgb,var(--theme-surface) 94%,transparent)!important;border-color:var(--theme-line)!important;box-shadow:var(--elev-2)!important}
body[data-palette] .nav-item:hover,body[data-palette] .nav-item.active,body[data-palette] .settings-nav button:hover,body[data-palette] .settings-nav button.active{background:color-mix(in srgb,var(--accent) 16%,var(--theme-surface))!important;color:color-mix(in srgb,var(--accent) 82%,white)!important}
body[data-palette] .primary,body[data-palette] .statusbar{background:var(--accent)!important;color:var(--on-accent)!important}
body[data-palette] .share-intro{background:linear-gradient(135deg,var(--theme-surface),color-mix(in srgb,var(--accent) 13%,var(--theme-surface)))!important}
body[data-palette] .share-live{background:color-mix(in srgb,var(--theme-positive) 12%,var(--theme-surface))!important;border-color:color-mix(in srgb,var(--theme-positive) 46%,var(--theme-line))!important}
body[data-palette] .board-column:nth-child(1){background:color-mix(in srgb,var(--theme-warning) 12%,var(--theme-surface))!important;border-color:color-mix(in srgb,var(--theme-warning) 38%,var(--theme-line))!important}
body[data-palette] .board-column:nth-child(2){background:color-mix(in srgb,var(--accent) 13%,var(--theme-surface))!important;border-color:color-mix(in srgb,var(--accent) 40%,var(--theme-line))!important}
body[data-palette] .board-column:nth-child(3){background:color-mix(in srgb,var(--theme-positive) 12%,var(--theme-surface))!important;border-color:color-mix(in srgb,var(--theme-positive) 38%,var(--theme-line))!important}

@media(max-width:900px){
  html{width:100%!important;height:auto!important;min-height:100%!important;overflow-x:hidden!important;overflow-y:auto!important;overscroll-behavior-y:auto!important;touch-action:auto!important}
  body.mobile-ui{position:static!important;inset:auto!important;width:100%!important;height:auto!important;min-height:100dvh!important;overflow-x:hidden!important;overflow-y:visible!important;overscroll-behavior-y:auto!important;touch-action:auto!important;-webkit-overflow-scrolling:touch!important}
  body.mobile-ui .app-shell{display:block!important;width:100%!important;height:auto!important;min-height:100dvh!important;overflow:visible!important;touch-action:auto!important}
  body.mobile-ui .app-shell>main{
    position:static!important;inset:auto!important;width:100%!important;max-width:none!important;height:auto!important;min-height:100dvh!important;
    margin:0!important;padding:calc(86px + env(safe-area-inset-top)) 18px calc(116px + env(safe-area-inset-bottom))!important;
    overflow:visible!important;overscroll-behavior-y:auto!important;touch-action:auto!important;-webkit-overflow-scrolling:touch!important
  }
  body.mobile-ui.mobile-sheet-open{position:fixed!important;inset:0!important;width:100%!important;overflow:hidden!important}
  body.mobile-ui #view,body.mobile-ui #view>*{max-width:100%!important;touch-action:auto!important}
  body.mobile-ui :is(.metrics,.board,.filterbar,.file-sidebar,.settings-nav,.share-role-grid){touch-action:pan-x pan-y!important}
  body.mobile-ui .mobile-sheet{overflow-x:hidden!important;overflow-y:auto!important;touch-action:pan-y!important;-webkit-overflow-scrolling:touch!important}
  body.mobile-ui .mobile-bottom-nav{grid-template-columns:1fr 1fr 1.15fr 1fr 1fr!important;overflow:visible!important}
  body.mobile-ui .mobile-nav-expand,body[data-theme=dark].mobile-ui .mobile-nav-expand{
    position:fixed!important;z-index:10020!important;right:max(14px,env(safe-area-inset-right))!important;bottom:calc(72px + env(safe-area-inset-bottom))!important;top:auto!important;left:auto!important;
    display:grid!important;place-items:center!important;align-content:center!important;width:52px!important;max-width:52px!important;height:52px!important;min-width:52px!important;min-height:52px!important;margin:0!important;padding:3px!important;
    border:3px solid var(--theme-surface)!important;border-radius:18px!important;background:var(--accent)!important;color:var(--on-accent)!important;box-shadow:var(--elev-2)!important}
  body.mobile-ui .mobile-nav-expand span{font-size:var(--fs-7)!important;line-height:1!important;transform:none!important}
  body.mobile-ui .mobile-nav-expand b{display:block!important;font-size:var(--fs-1)!important;color:inherit!important}
}

@media(max-width:640px){body.mobile-ui .app-shell>main{padding-inline:14px!important}}/* ==== checkpoint24.css ==== */
/* Centro de Operaciones — Checkpoint 24: móvil estable, Finanzas analíticas y objetivos/tareas. */


body[data-palette]{background:var(--theme-bg)!important}
body[data-palette] .app-shell,body[data-palette] .app-shell>main{background:var(--theme-bg)!important}
body[data-palette] .sidebar{background:var(--theme-sidebar)!important}
body[data-palette] .inspector{background:var(--theme-context)!important}
body[data-palette] .statusbar{background:var(--theme-status,var(--theme-sidebar))!important;color:var(--theme-ink)!important;border-top:1px solid var(--theme-line)!important}
body[data-palette] .mobile-app-header,body[data-palette] .mobile-bottom-nav{background:color-mix(in srgb,var(--theme-sidebar) 96%,transparent)!important}

.mobile-universal-toggle{display:none}

/* Finanzas: períodos, gráfico y filas alineadas. */
.finance-period-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 16px}
.finance-period-button{border:1px solid var(--theme-line,var(--line));background:var(--theme-surface,var(--paper));color:var(--theme-muted,var(--muted));border-radius:9px;padding:8px 12px;font-weight:var(--fw-bold);font-size:var(--fs-3);font-family:inherit;cursor:pointer}
.finance-filter-group{display:flex;gap:6px;margin-right:14px}
.finance-series-line{color:var(--theme-muted,var(--muted));font-weight:var(--fw-semibold)}
.finance-series-amounts{margin-top:2px;border-top:1px dashed var(--theme-line,var(--line));padding-top:10px}
.finance-series-amounts-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.finance-series-amount-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:6px 0;border-top:1px solid var(--theme-line,var(--line))}
.finance-series-amount-row:first-child{border-top:0}
.finance-series-amount-row input{width:110px;text-align:right;padding:6px 8px}
.finance-series-amount-row.locked input{text-decoration:line-through;opacity:.55;cursor:not-allowed}
.finance-series-amount-row.locked span{opacity:.55;text-decoration:line-through}
.finance-period-button:hover,.finance-period-button.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 15%,var(--theme-surface));color:var(--theme-ink,var(--ink))}
.finance-period-caption{margin-left:auto;color:var(--theme-muted,var(--muted));font-size:var(--fs-4);font-weight:var(--fw-semibold)}
.finance-trend-card{margin:0 0 18px;overflow:hidden}
.finance-trend-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:12px}
.finance-trend-head h2{margin:0 0 4px}.finance-trend-head p{margin:0;color:var(--theme-muted,var(--muted));font-size:var(--fs-4)}
.finance-legend{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.finance-legend-item{display:flex;align-items:center;gap:7px;border:1px solid var(--theme-line,var(--line));background:var(--theme-surface-2,var(--wash));color:var(--theme-ink,var(--ink));border-radius:9px;padding:7px 9px;cursor:pointer;font-weight:var(--fw-semibold);font-size:var(--fs-2);font-family:inherit;transition:.18s}
.finance-legend-item.off{opacity:.42}.finance-legend-item i{width:10px;height:10px;border-radius:3px}.finance-legend-item em{width:22px;height:12px;border-radius:9px;background:var(--theme-line);position:relative}.finance-legend-item em:after{content:"";position:absolute;width:8px;height:8px;border-radius:50%;background:var(--theme-muted);left:2px;top:2px}.finance-legend-item:not(.off) em:after{left:12px;background:var(--accent)}
.finance-line-chart{width:100%;height:250px;display:block;overflow:visible}.finance-line-chart .grid-line{stroke:var(--theme-line,var(--line));stroke-width:1}.finance-line-chart text{fill:var(--theme-muted,var(--muted));font-size:var(--fs-3);font-family:inherit}.finance-line-chart polyline{fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.finance-line-chart circle{stroke:var(--theme-surface,var(--paper));stroke-width:2}
.finance-transaction-list{display:grid}.finance-transaction{display:grid!important;grid-template-columns:36px minmax(190px,1fr) 132px 110px 88px 32px 32px!important;gap:10px!important;align-items:center!important;min-height:58px;background:transparent!important;padding:10px 0!important}
.finance-transaction.planned,.finance-transaction.due,.finance-transaction.overdue{background:transparent!important}
.finance-paid-toggle{display:flex;align-items:center;gap:7px;justify-self:start;white-space:nowrap}.finance-paid-toggle input{width:17px!important;height:17px!important;margin:0!important;accent-color:var(--theme-positive,#39b68e)}
.finance-paid-toggle span{font-size:var(--fs-3);font-weight:var(--fw-bold);color:var(--theme-muted,var(--muted))}.finance-status{justify-self:start;white-space:nowrap}.finance-transaction .transaction-copy{min-width:0}.finance-transaction .transaction-copy b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.finance-transaction .transaction-copy small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.finance-chart-colors{display:grid;gap:8px;margin-top:12px}.finance-chart-color{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--theme-line);padding-top:9px}.finance-chart-color label{display:flex;align-items:center;gap:8px;font-size:var(--fs-4);font-weight:var(--fw-semibold)}.finance-chart-color input{width:38px!important;height:30px!important;padding:2px!important}

/* Checkpoint 24: composición diferenciada para tareas y objetivos. */
.item-no-deadline,.item-no-deadline span{display:flex;align-items:center;gap:9px}.item-no-deadline{padding:10px;border:1px solid var(--theme-line,var(--line));border-radius:10px;background:var(--theme-surface-2,var(--wash))}.item-no-deadline input{width:18px;height:18px;margin:0;accent-color:var(--accent)}.item-no-deadline span{display:block}.item-no-deadline small{display:block;color:var(--theme-muted,var(--muted));font-size:var(--fs-3);margin-top:2px}
.item-status-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:6px}.item-status-grid button{border:1px solid var(--theme-line,var(--line));background:var(--theme-surface-2,var(--wash));color:var(--theme-muted,var(--muted));border-radius:8px;padding:9px 5px;cursor:pointer;font-weight:var(--fw-bold);font-size:var(--fs-2);font-family:inherit}.item-status-grid button.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 16%,var(--theme-surface));color:var(--theme-ink,var(--ink))}
.item-tag-chips{display:flex;gap:7px;flex-wrap:wrap;margin-top:7px}.item-tag-chip{display:flex;align-items:center;gap:6px;border:1px solid var(--theme-line,var(--line));background:var(--theme-surface-2,var(--wash));color:var(--theme-ink,var(--ink));border-radius:999px;padding:7px 10px;cursor:pointer;font-weight:var(--fw-bold);font-size:var(--fs-2);font-family:inherit}.item-tag-chip i{width:9px;height:9px;border-radius:50%}.item-tag-chip.active{outline:2px solid var(--tag-color);outline-offset:1px;background:color-mix(in srgb,var(--tag-color) 15%,var(--theme-surface))}
.estimate-editor{display:grid;grid-template-columns:1fr 120px;gap:7px;margin-top:6px}.goal-progress-editor{display:grid;grid-template-columns:62px 20px 1fr;align-items:center;gap:6px;margin-top:6px}.goal-progress-editor input[type=range]{padding:0;accent-color:var(--accent)}
.checklist-builder{border:1px solid var(--theme-line,var(--line));border-radius:11px;padding:10px;margin-top:7px;background:var(--theme-surface-2,var(--wash))}.checklist-builder-list{display:grid;gap:6px;margin-bottom:8px}.checklist-builder-item{display:grid;grid-template-columns:18px 1fr 128px 26px 26px;gap:7px;align-items:center;padding:6px;border-radius:7px;background:var(--theme-surface,var(--paper))}.checklist-builder-item input{width:16px;height:16px;margin:0;accent-color:var(--accent)}.checklist-builder-item input.checklist-step-date{width:100%;height:auto;padding:3px 4px;font-size:var(--fs-2);border:1px solid var(--theme-line,var(--line));border-radius:5px;background:var(--theme-field,var(--paper));color:var(--theme-ink,var(--ink))}.checklist-builder-item button{border:0;background:transparent;color:var(--theme-muted);cursor:pointer;font-size:var(--fs-6);display:grid;place-items:center}.checklist-insert{display:grid;grid-template-columns:1fr auto;gap:7px}.checklist-toolbar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.checklist-toggle-group{display:inline-flex;border:1px solid var(--theme-line,var(--line));border-radius:8px;overflow:hidden}.checklist-toggle-group button{border:0;background:var(--theme-surface,var(--paper));color:var(--theme-muted);cursor:pointer;font-weight:var(--fw-bold);font-size:var(--fs-2);font-family:inherit;padding:6px 10px}.checklist-toggle-group button.active{background:color-mix(in srgb,var(--accent) 16%,var(--theme-surface,var(--paper)));color:var(--theme-ink,var(--ink))}.subtask-date{margin-left:6px;color:var(--muted);font-size:var(--fs-2);font-weight:var(--fw-semibold)}.preview-checklist-date{margin-left:auto;color:var(--muted);font-size:var(--fs-2);font-weight:var(--fw-semibold)}
.goal-progress-manual{display:grid;grid-template-columns:minmax(120px,1fr) 76px;gap:10px;align-items:center}.goal-progress-manual input[type=range]{accent-color:var(--accent)}.goal-progress-manual input[type=number]{padding:7px}

@media(max-width:900px){.finance-transaction{grid-template-columns:32px minmax(160px,1fr) 115px 95px 80px 30px 30px!important}.finance-trend-head{display:grid}.finance-legend{justify-content:flex-start}}

@media(max-width:900px){
  html,body{position:static!important;width:100%!important;height:auto!important;min-height:100%!important;overflow-x:hidden!important;overflow-y:auto!important;overscroll-behavior-y:auto!important;touch-action:auto!important;-webkit-overflow-scrolling:touch!important}
  body .app-shell{display:block!important;position:static!important;width:100%!important;height:auto!important;min-height:100dvh!important;overflow:visible!important;touch-action:auto!important}
  body .app-shell>main{position:static!important;inset:auto!important;width:100%!important;max-width:none!important;height:auto!important;min-height:100dvh!important;margin:0!important;padding:calc(86px + env(safe-area-inset-top)) 14px calc(128px + env(safe-area-inset-bottom))!important;overflow:visible!important;touch-action:auto!important;-webkit-overflow-scrolling:touch!important}
  body #view,body #view>*,body #view *{max-width:100%!important;touch-action:auto!important}
  body.mobile-sheet-open{position:fixed!important;inset:0!important;overflow:hidden!important}
  .mobile-universal-toggle{position:fixed!important;z-index:10030!important;left:max(10px,env(safe-area-inset-left))!important;right:auto!important;bottom:calc(76px + env(safe-area-inset-bottom))!important;display:grid!important;place-items:center!important;align-content:center!important;width:54px!important;height:54px!important;padding:2px!important;border:3px solid var(--theme-surface,var(--paper))!important;border-radius:18px!important;background:var(--accent)!important;color:var(--on-accent)!important;box-shadow:var(--elev-2)!important}
  .mobile-universal-toggle span{font-size:var(--fs-6);line-height:1}.mobile-universal-toggle b{font-size:var(--fs-1);line-height:1.2}
  body.mobile-ui .mobile-nav-expand,body[data-palette].mobile-ui .mobile-nav-expand{position:fixed!important;z-index:10031!important;left:max(10px,env(safe-area-inset-left))!important;right:auto!important;top:auto!important;bottom:calc(76px + env(safe-area-inset-bottom))!important;display:grid!important;visibility:visible!important;opacity:1!important;place-items:center!important;align-content:center!important;width:54px!important;height:54px!important;min-width:54px!important;min-height:54px!important;padding:2px!important;border:3px solid var(--theme-surface,var(--paper))!important;border-radius:18px!important;background:var(--accent)!important;color:var(--on-accent)!important;box-shadow:var(--elev-2)!important;pointer-events:auto!important;transform:none!important}
  body.mobile-ui .mobile-nav-expand span{font-size:var(--fs-6)!important;line-height:1!important;transform:none!important}body.mobile-ui .mobile-nav-expand b{display:block!important;color:var(--on-accent)!important;font-size:var(--fs-1)!important;line-height:1.2!important}
  body.mobile-fallback-menu .sidebar{display:flex!important;position:fixed!important;z-index:10025!important;inset:auto 10px calc(72px + env(safe-area-inset-bottom)) 10px!important;width:auto!important;height:min(76dvh,620px)!important;max-height:min(76dvh,620px)!important;padding:18px!important;border:1px solid var(--theme-line)!important;border-radius:22px!important;box-shadow:var(--elev-3)!important;overflow-y:auto!important;transform:none!important}
  body.mobile-fallback-menu .sidebar :is(.brand,.project-label,#project,.sidebar-footer){display:flex!important}
  body.mobile-fallback-menu .sidebar #navigation{display:grid!important;width:100%!important;overflow:visible!important;gap:4px!important}
  body.mobile-fallback-menu .sidebar .nav-item{display:flex!important;width:100%!important;justify-content:flex-start!important;padding:10px 12px!important;font-size:var(--fs-5)!important}
  body.mobile-fallback-menu .mobile-universal-toggle span{transform:rotate(180deg)}
  .finance-transaction{grid-template-columns:30px minmax(0,1fr) auto auto!important;gap:8px!important}.finance-transaction .finance-paid-toggle{grid-column:2}.finance-transaction>strong{grid-column:3;grid-row:1}.finance-transaction .finance-status{grid-column:3;grid-row:2}.finance-transaction .icon-button{grid-row:1}.finance-transaction .icon-button:last-child{display:none}
  .finance-period-caption{width:100%;margin-left:0}.finance-line-chart{height:210px}.finance-trend-head{display:grid}.finance-legend{display:grid;grid-template-columns:1fr 1fr}.finance-legend-item{justify-content:flex-start}
  #itemDialog{width:min(94vw,620px)}#itemDialog .form-grid{grid-template-columns:1fr!important}.estimate-editor{grid-template-columns:1fr 110px}.goal-progress-editor{grid-template-columns:58px 18px 1fr}
}

@media(max-width:560px){.finance-summary{grid-template-columns:1fr 1fr!important}.finance-summary .metric{min-width:0}.finance-line-chart{height:180px}.finance-legend{grid-template-columns:1fr}.finance-period-button{flex:1}.finance-period-bar{display:grid;grid-template-columns:1fr 1fr}.finance-period-caption{grid-column:1/-1}.checklist-insert{grid-template-columns:1fr}.item-status-grid{grid-template-columns:1fr}}


/* ==== checkpoint25.css ==== */
/* Paquete de estabilización: entrega móvil, formularios claros y Proceso Productivo. */

/* Formularios de tarea y objetivo: la estructura no depende de estilos históricos. */
#itemDialog{width:min(720px,calc(100vw - 28px));max-height:min(92svh,880px);padding:0;border:1px solid var(--theme-line,var(--line));border-radius:22px;background:var(--theme-surface,var(--paper));color:var(--theme-ink,var(--ink));overflow:hidden}
#itemDialog::backdrop{background:rgba(9,12,24,.72);backdrop-filter:blur(8px)}
#itemDialog form{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:16px!important;width:100%!important;height:auto!important;min-height:0!important;max-height:min(92svh,880px);padding:24px!important;margin:0!important;overflow-y:auto!important;overflow-x:hidden!important;box-sizing:border-box!important}
#itemDialog form>*{min-width:0!important;max-width:100%!important;margin:0!important;box-sizing:border-box!important}
#itemDialog label{display:grid!important;gap:7px!important;color:var(--theme-muted,var(--muted));font-size:var(--fs-4);font-weight:var(--fw-bold);line-height:1.35}
#itemDialog input,#itemDialog select,#itemDialog textarea{width:100%!important;min-width:0!important;box-sizing:border-box!important;background:var(--theme-field,var(--paper));color:var(--theme-ink,var(--ink));border:1px solid var(--theme-line,var(--line));border-radius:10px;padding:11px 12px;font-weight:var(--fw-medium);font-size:var(--fs-4);font-family:inherit}
#itemDialog textarea{min-height:84px;resize:vertical}
#itemDialog [hidden]{display:none!important}
#itemDialog .dialog-top{display:flex!important;align-items:flex-start!important;justify-content:space-between!important;gap:18px!important;border-bottom:1px solid var(--theme-line,var(--line));padding-bottom:15px!important}
#itemDialog .dialog-top h2{margin:2px 0 3px;font-size:var(--fs-8)}.optional{font-size:var(--fs-2);color:var(--theme-muted,var(--muted));font-weight:var(--fw-medium)}
.item-main-title input{font-size:var(--fs-6)!important;padding:14px!important}
.item-deadline-card,.item-section{display:grid!important;gap:14px!important;border:1px solid var(--theme-line,var(--line));border-radius:15px;padding:15px!important;background:var(--theme-surface-2,var(--wash))}
.item-deadline-head,.item-section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.item-deadline-head>div,.item-section-heading{color:var(--theme-ink,var(--ink))}.item-deadline-head small,.item-section-heading small{display:block;color:var(--theme-muted,var(--muted));font-size:var(--fs-3);margin-top:3px;font-weight:var(--fw-medium)}
.item-deadline-switch{display:flex!important;grid-template-columns:auto auto auto!important;align-items:center!important;gap:8px!important;white-space:nowrap!important;cursor:pointer}.item-deadline-switch input{position:absolute;opacity:0;width:1px!important;height:1px!important}.item-deadline-switch span{width:38px;height:22px;border-radius:999px;background:var(--theme-line,var(--line));position:relative}.item-deadline-switch span:after{content:"";position:absolute;width:16px;height:16px;border-radius:50%;left:3px;top:3px;background:var(--paper);transition:.18s}.item-deadline-switch input:checked+span{background:var(--accent)}.item-deadline-switch input:checked+span:after{left:19px}.item-deadline-switch b{color:var(--theme-ink,var(--ink));font-size:var(--fs-3)}
#itemDialog .form-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px!important;width:100%!important}
#itemDialog .item-status-grid{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:6px!important;margin:0!important}
#itemDialog .item-status-grid button{min-width:0!important;border:1px solid var(--theme-line,var(--line));border-radius:9px;background:var(--theme-field,var(--paper));color:var(--theme-muted,var(--muted));padding:11px 5px;font-weight:var(--fw-bold);font-size:var(--fs-2);font-family:inherit;white-space:normal!important}.item-status-grid button.active{background:color-mix(in srgb,var(--accent) 18%,var(--theme-field))!important;border-color:var(--accent)!important;color:var(--theme-ink,var(--ink))!important}
#itemDialog .estimate-editor{display:grid!important;grid-template-columns:minmax(0,1fr) 118px!important;gap:7px!important;margin:0!important}.goal-progress-editor{display:grid!important;grid-template-columns:66px 20px minmax(0,1fr)!important;align-items:center!important;gap:7px!important;margin:0!important}.goal-progress-editor input[type=range]{padding:0!important}
#itemDialog .item-tag-chips{margin:0!important}.item-tag-chip{min-height:34px}
#itemDialog .checklist-builder{display:grid!important;gap:10px!important;margin:0!important;padding:11px!important;background:var(--theme-field,var(--paper))}.checklist-builder-list{margin:0!important}.checklist-builder-item{display:grid!important;grid-template-columns:20px minmax(0,1fr) 122px 26px 26px!important;gap:9px!important;align-items:center!important;padding:9px!important;border:1px solid var(--theme-line,var(--line));background:var(--theme-surface-2,var(--wash))!important}.checklist-builder-item input{width:17px!important;height:17px!important;padding:0!important}.checklist-builder-item input.checklist-step-date{width:100%!important;height:auto!important;padding:4px 5px!important;font-size:var(--fs-2)!important}.checklist-builder-item span{color:var(--theme-ink,var(--ink));font-size:var(--fs-4);line-height:1.4}.checklist-insert{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;gap:8px!important}.checklist-insert button{white-space:nowrap}.dialog-actions{position:sticky;bottom:-24px;z-index:2;margin:3px -24px -24px!important;padding:14px 24px!important;background:color-mix(in srgb,var(--theme-surface,var(--paper)) 96%,transparent);border-top:1px solid var(--theme-line,var(--line));backdrop-filter:blur(12px)}

/* Finanzas: controles y gráfico siempre visibles, incluso con estados vacíos. */
.finance-period-bar{display:flex!important}.finance-trend-card{display:block!important;min-height:300px}.finance-line-chart{display:block!important;min-height:210px}.finance-metric{display:flex!important;flex-direction:column!important;align-items:flex-start!important;justify-content:center!important;gap:0!important;min-height:126px!important}.finance-metric .metric-label{display:block!important;line-height:1.35!important}.finance-metric .metric-number{display:block!important;width:100%!important;margin:9px 0 7px!important;line-height:1!important;white-space:nowrap!important}.finance-metric .metric-note{display:block!important;line-height:1.35!important}.finance-transaction{background:transparent!important}.finance-transaction.planned,.finance-transaction.due,.finance-transaction.overdue{background:transparent!important}.finance-transaction .transaction-icon,.finance-transaction .transaction-copy,.finance-transaction .finance-paid-toggle,.finance-transaction>strong,.finance-transaction .finance-status,.finance-transaction .icon-button{align-self:center!important}.finance-status.planned{background:color-mix(in srgb,var(--accent) 14%,var(--theme-surface));color:var(--theme-ink,var(--ink))}

/* Proceso Productivo. */
.process-page{display:grid;gap:18px}.process-hero,.process-editor-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:24px!important;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 17%,var(--theme-surface,var(--paper))),var(--theme-surface,var(--paper)))!important}.process-hero h2,.process-editor-hero h2{font-size:var(--fs-8);margin:3px 0 8px}.process-hero p,.process-editor-hero p{max-width:680px;margin:0;color:var(--theme-muted,var(--muted));line-height:1.6}.process-symbol-guide{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.process-symbol-guide article{display:flex;align-items:center;gap:12px;padding:14px!important}.process-symbol-guide b{display:block;font-size:var(--fs-4)}.process-symbol-guide small{display:block;margin-top:3px;color:var(--theme-muted,var(--muted));font-size:var(--fs-2);line-height:1.35}
.process-symbol{display:grid;place-items:center;width:34px;height:34px;min-width:34px;position:relative}.process-symbol i{display:block;width:24px;height:24px;border:2px solid var(--accent);box-sizing:border-box}.process-symbol.operation i{border-radius:50%}.process-symbol.inspection i{border-radius:2px}.process-symbol.transport i{width:29px;height:17px;border-radius:0;border-right:0;clip-path:polygon(0 26%,60% 26%,60% 0,100% 50%,60% 100%,60% 74%,0 74%);background:var(--accent);border:0}.process-symbol.storage i{border:0;background:var(--accent);clip-path:polygon(0 0,100% 0,50% 100%)}.process-symbol.storage:after{content:"";position:absolute;top:8px;width:17px;height:14px;background:var(--theme-surface,var(--paper));clip-path:polygon(0 0,100% 0,50% 100%)}.process-symbol.delay i{border-radius:0 16px 16px 0}.process-symbol.combined i{border-radius:2px}.process-symbol.combined:after{content:"";position:absolute;width:18px;height:18px;border:2px solid var(--accent);border-radius:50%}
.process-list-head{display:flex;justify-content:space-between;align-items:end}.process-list-head h2{margin:0}.process-list-head p{margin:4px 0 0;color:var(--theme-muted,var(--muted));font-size:var(--fs-4)}.process-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.process-card{display:grid;gap:18px}.process-card-top{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:12px;align-items:start}.process-card-mark{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:color-mix(in srgb,var(--accent) 16%,var(--theme-surface));color:var(--accent-ink);font-size:var(--fs-7)}.process-card h3{margin:0 0 4px;font-size:var(--fs-6)}.process-card p{margin:0;color:var(--theme-muted,var(--muted));font-size:var(--fs-4);line-height:1.5}.process-count{font-size:var(--fs-2);font-weight:var(--fw-bold);color:var(--accent-ink);background:color-mix(in srgb,var(--accent) 12%,var(--theme-surface));border-radius:999px;padding:6px 8px}.process-card footer{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--theme-line,var(--line));padding-top:13px}.process-card footer>span{color:var(--theme-muted,var(--muted));font-size:var(--fs-2);font-weight:var(--fw-semibold)}.process-card footer>div{display:flex;gap:7px}
.process-preview{display:flex;align-items:center;gap:4px;min-height:54px;overflow-x:auto;scrollbar-width:none}.process-preview::-webkit-scrollbar{display:none}.process-preview-step{display:grid;grid-template-columns:34px;justify-items:center;gap:1px;min-width:36px}.process-preview-step .process-symbol{transform:scale(.78)}.process-preview-step b{font-size:var(--fs-2);color:var(--theme-muted,var(--muted))}.process-connector{display:block;width:30px;height:2px;background:var(--theme-line,var(--line));position:relative}.process-connector:after{content:"";position:absolute;right:-1px;top:-3px;border-left:6px solid var(--theme-line,var(--line));border-top:4px solid transparent;border-bottom:4px solid transparent}.process-preview>em{font-size:var(--fs-3);color:var(--theme-muted,var(--muted))}
.process-people{margin:0;font-size:var(--fs-2);font-weight:var(--fw-semibold);color:var(--theme-muted,var(--muted))}.process-grouping-controls{display:flex;gap:8px}.process-group-section{display:grid;gap:15px;margin-bottom:18px}.process-group-head{display:flex;align-items:center;justify-content:space-between}.process-group-head h3{margin:0;font-size:var(--fs-5)}
.assignee-checklist{display:flex;flex-wrap:wrap;gap:8px;max-height:160px;overflow-y:auto}.assignee-checklist-option{display:inline-flex;align-items:center;gap:6px;padding:7px 11px;border:1px solid var(--line);border-radius:999px;cursor:pointer;font-size:var(--fs-3);color:var(--muted)}.assignee-checklist-option:has(input:checked){border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--paper));color:var(--accent-ink);font-weight:var(--fw-semibold)}.assignee-checklist-option input{margin:0}
.process-empty{grid-column:1/-1;text-align:center;padding:44px 24px!important}.process-empty>span{display:grid;place-items:center;width:64px;height:64px;border-radius:20px;background:color-mix(in srgb,var(--accent) 15%,var(--theme-surface));color:var(--accent-ink);font-size:var(--fs-9);margin:0 auto 14px}.process-empty h2{margin:0 0 7px}.process-empty p{color:var(--theme-muted,var(--muted));margin:0 auto 17px;max-width:420px}.process-editor-toolbar{display:flex;justify-content:space-between;align-items:center}.process-numbering{display:grid;gap:7px;min-width:260px}.process-numbering>span{font-size:var(--fs-2);font-weight:var(--fw-bold);color:var(--theme-muted,var(--muted));text-transform:uppercase}.process-numbering>div{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--theme-line,var(--line));border-radius:10px;padding:4px;background:var(--theme-surface-2,var(--wash))}.process-numbering button{border:0;border-radius:7px;padding:8px;background:transparent;color:var(--theme-muted,var(--muted));font-weight:var(--fw-bold);font-size:var(--fs-2);font-family:inherit;cursor:pointer}.process-numbering button.active{background:var(--accent);color:var(--on-accent)}.process-editor>.process-preview{border:1px solid var(--theme-line,var(--line));border-radius:14px;padding:12px 16px;background:var(--theme-surface,var(--paper))}.process-step-list{display:grid;gap:10px}.process-step{display:grid;grid-template-columns:74px minmax(0,1fr) auto;align-items:center;gap:14px;padding:15px!important}.process-step-index{display:flex;align-items:center;gap:7px}.process-step-index>b{display:grid;place-items:center;width:28px;height:28px;border-radius:9px;background:color-mix(in srgb,var(--accent) 15%,var(--theme-surface));color:var(--accent-ink);font-size:var(--fs-4)}.process-step-copy small{color:var(--accent-ink);font-size:var(--fs-2);font-weight:var(--fw-bold);text-transform:uppercase}.process-step-copy h3{margin:3px 0;font-size:var(--fs-5)}.process-step-copy p{margin:4px 0 0;color:var(--theme-muted,var(--muted));font-size:var(--fs-4);line-height:1.5}.process-step-actions{display:flex;align-items:center;gap:5px}.process-step-actions button:disabled{opacity:.3}.danger-icon{color:var(--danger-ink)!important}.process-type-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.process-type-picker button{display:flex;align-items:center;gap:9px;text-align:left;border:1px solid var(--theme-line,var(--line));border-radius:11px;background:var(--theme-surface-2,var(--wash));color:var(--theme-ink,var(--ink));padding:10px;cursor:pointer}.process-type-picker button.active{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 18%,transparent)}.process-type-picker b,.process-type-picker small{display:block}.process-type-picker b{font-size:var(--fs-4)}.process-type-picker small{font-size:var(--fs-1);color:var(--theme-muted,var(--muted));margin-top:2px;line-height:1.3}

@media(max-width:900px){
  html,body{height:auto!important;min-height:100%!important;overflow-x:hidden!important;overflow-y:auto!important;touch-action:auto!important;-webkit-overflow-scrolling:touch!important}
  body.mobile-ui{position:static!important;height:auto!important;min-height:100dvh!important;overflow-y:auto!important;touch-action:auto!important}
  body.mobile-ui .app-shell{position:static!important;height:auto!important;min-height:100dvh!important;overflow:visible!important;touch-action:auto!important}
  body.mobile-ui .app-shell>main{position:static!important;height:auto!important;min-height:100dvh!important;overflow:visible!important;overscroll-behavior:auto!important;touch-action:none!important;-webkit-overflow-scrolling:touch!important}
  body.mobile-ui #view{position:static!important;height:auto!important;min-height:0!important;overflow:visible!important;touch-action:none!important}
  body.mobile-ui #view>*{touch-action:none!important}
  body.mobile-ui .mobile-sheet-layer[hidden],body.mobile-ui .access-gate[hidden]{display:none!important;pointer-events:none!important}
  #mobileUniversalToggle.mobile-universal-toggle{display:grid!important;visibility:visible!important;opacity:1!important;pointer-events:auto!important;position:fixed!important;left:auto!important;right:max(10px,env(safe-area-inset-right))!important;bottom:calc(60px + env(safe-area-inset-bottom))!important;z-index:7001!important;width:46px!important;height:32px!important;border-radius:13px 13px 0 0!important;background:var(--accent)!important;color:var(--on-accent)!important;border:3px solid var(--theme-surface,var(--paper))!important;border-bottom:0!important;box-shadow:var(--elev-2)!important}
  #mobileUniversalToggle span{display:block!important;font-size:var(--fs-6)!important;line-height:1!important;transform:translateY(2px)!important}#mobileUniversalToggle b{display:none!important}
  #mobileNavToggle{display:none!important}
  #itemDialog form{padding:17px!important;gap:12px!important}.dialog-actions{bottom:-16px;margin:3px -17px -17px!important;padding:12px 17px calc(12px + env(safe-area-inset-bottom))!important}
  #itemDialog .form-grid{grid-template-columns:1fr!important}.item-deadline-head,.item-section-heading{display:grid!important}.item-deadline-switch{justify-self:start}.estimate-editor{grid-template-columns:minmax(0,1fr) 108px!important}.checklist-insert{grid-template-columns:1fr!important}.item-status-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  .finance-period-bar{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important}.finance-period-caption{grid-column:1/-1}.finance-trend-card{min-height:260px}.finance-transaction{grid-template-columns:30px minmax(0,1fr) auto!important}.finance-transaction .finance-paid-toggle{grid-column:2!important}.finance-transaction .finance-status{grid-column:3!important}.finance-transaction .icon-button{grid-column:auto!important}.finance-transaction .icon-button:last-child{display:none!important}
  .process-hero,.process-editor-hero{display:grid}.process-symbol-guide{grid-template-columns:repeat(2,minmax(0,1fr))}.process-card-grid{grid-template-columns:1fr}.process-card footer{align-items:flex-start}.process-editor-toolbar{position:sticky;top:78px;z-index:4;padding:8px;border-radius:12px;background:color-mix(in srgb,var(--theme-bg) 92%,transparent);backdrop-filter:blur(10px)}.process-numbering{min-width:0}.process-step{grid-template-columns:60px minmax(0,1fr)}.process-step-actions{grid-column:1/-1;justify-content:flex-end;border-top:1px solid var(--theme-line);padding-top:9px}.process-type-picker{grid-template-columns:1fr}
}

@media(max-width:520px){.process-symbol-guide{grid-template-columns:1fr}.process-card-top{grid-template-columns:42px minmax(0,1fr)}.process-count{grid-column:2;justify-self:start}.process-card footer{display:grid}.process-card footer>div{display:grid;grid-template-columns:1fr 1fr}.process-step{grid-template-columns:52px minmax(0,1fr)}.process-step-actions .secondary{flex:1}.goal-progress-editor{grid-template-columns:58px 18px minmax(0,1fr)!important}}

/* RELEASE 30 · capa final servida desde el núcleo estable. */
#itemDialog .item-deadline-head>div,#itemDialog .item-section-heading{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:3px!important;min-width:0!important}
#itemDialog .item-section-heading>b,#itemDialog .item-deadline-head b{font-size:var(--fs-5)!important;line-height:1.25!important;color:var(--theme-ink,var(--ink))!important}
#itemDialog .item-section-heading>small,#itemDialog .item-deadline-head small{margin:0!important;line-height:1.45!important}
#itemDialog .item-deadline-switch{padding:7px 9px!important;border:1px solid var(--theme-line,var(--line))!important;border-radius:999px!important;background:var(--theme-field,var(--paper))!important}
#itemDialog .item-deadline-switch>b{font-size:var(--fs-3)!important;white-space:nowrap!important}
#itemDialog .item-section{align-items:start!important}
#itemDialog .item-section>label,#itemDialog .form-grid>label{align-content:start!important;min-width:0!important}
#itemDateFields{align-items:end!important}
#itemDialog .item-status-grid{align-self:start!important;width:100%!important}
#itemDialog .item-status-grid button{display:grid!important;place-items:center!important;min-height:42px!important;line-height:1.2!important}
#itemDialog .estimate-editor{align-items:stretch!important}
#itemDialog .estimate-editor input,#itemDialog .estimate-editor select{height:44px!important}
#itemDialog .checklist-builder{border-radius:12px!important;overflow:hidden!important}
#itemDialog .checklist-insert input,#itemDialog .checklist-insert button{min-height:42px!important}
.finance-period-bar{display:flex!important;align-items:center!important;gap:8px!important;flex-wrap:wrap!important;margin-bottom:16px!important}
.finance-trend-card{display:block!important;visibility:visible!important;min-height:310px!important}
.finance-line-chart{display:block!important;visibility:visible!important;width:100%!important;min-height:220px!important}
.finance-transaction-list{width:100%!important}
.finance-transaction,.finance-transaction.planned,.finance-transaction.due,.finance-transaction.overdue{background:transparent!important;border-top:1px solid var(--theme-line,var(--line))!important;border-radius:0!important}
.finance-transaction:first-child{border-top:0!important}
.finance-transaction .transaction-copy,.finance-transaction .finance-paid-toggle,.finance-transaction>strong,.finance-transaction .finance-status{align-self:center!important}
.finance-form-v2 .finance-recurrence-fields{width:100%!important;box-sizing:border-box!important}
.finance-form-v2 .finance-check-row{width:100%!important;box-sizing:border-box!important}
.process-page{display:grid!important;visibility:visible!important;min-width:0!important}

@media(max-width:900px){
  html,body,body.mobile-ui{position:static!important;width:100%!important;height:auto!important;min-height:100%!important;overflow-x:hidden!important;overflow-y:auto!important;touch-action:pan-y!important;overscroll-behavior-y:auto!important;-webkit-overflow-scrolling:touch!important}
  body.mobile-ui .app-shell,body.mobile-ui .app-shell>main,body.mobile-ui #view{position:static!important;height:auto!important;min-height:0!important;overflow:visible!important;touch-action:pan-y!important;-webkit-overflow-scrolling:touch!important}
  body.mobile-ui .app-shell{min-height:100dvh!important}
  body.mobile-ui .app-shell>main{min-height:100dvh!important;padding-bottom:calc(132px + env(safe-area-inset-bottom))!important}
  body.mobile-ui #view>*{touch-action:pan-y!important}
  body.mobile-ui button,body.mobile-ui a,body.mobile-ui input,body.mobile-ui select,body.mobile-ui textarea{touch-action:manipulation!important}
  body.mobile-ui dialog form,body.mobile-ui .mobile-sheet{touch-action:pan-y!important;-webkit-overflow-scrolling:touch!important}
  #mobileUniversalToggle.mobile-universal-toggle,#mobileUniversalToggle.mobile-universal-toggle[hidden]{display:grid!important;visibility:visible!important;opacity:1!important;pointer-events:auto!important;position:fixed!important;left:auto!important;right:max(10px,env(safe-area-inset-right))!important;bottom:calc(60px + env(safe-area-inset-bottom))!important;z-index:7001!important;width:46px!important;height:32px!important;border-radius:13px 13px 0 0!important;background:var(--accent)!important;color:var(--on-accent)!important;border:3px solid var(--theme-surface,var(--paper))!important;border-bottom:0!important;box-shadow:var(--elev-2)!important}
  #mobileUniversalToggle span{display:block!important;font-size:var(--fs-6)!important;line-height:1!important;transform:translateY(2px)!important}#mobileUniversalToggle b{display:none!important}
  #mobileNavToggle{display:none!important}
  #itemDialog{width:calc(100vw - 18px)!important;max-height:94svh!important}
  #itemDialog form{max-height:94svh!important;padding:16px!important;gap:13px!important;touch-action:pan-y!important}
  #itemDialog .dialog-top{gap:10px!important}
  #itemDialog .dialog-top h2{font-size:var(--fs-7)!important}
  #itemDialog .item-deadline-head{display:grid!important;grid-template-columns:1fr!important}
  #itemDialog .item-deadline-switch{justify-self:start!important}
  #itemDialog .form-grid{grid-template-columns:1fr!important}
  #itemDialog .item-status-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  #itemDialog .estimate-editor{grid-template-columns:minmax(0,1fr) 112px!important}
  #itemDialog .dialog-actions{margin:3px -16px -16px!important;padding:12px 16px calc(12px + env(safe-area-inset-bottom))!important}
  .finance-period-bar{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .finance-period-button{width:100%!important;min-height:40px!important}
  .finance-period-caption{grid-column:1/-1!important;width:100%!important;margin:0!important}
  .finance-trend-head{display:grid!important}.finance-legend{justify-content:flex-start!important}
  .finance-transaction{grid-template-columns:30px minmax(0,1fr) auto!important;gap:8px!important}
  .finance-transaction .finance-paid-toggle{grid-column:2!important}.finance-transaction>strong{grid-column:3!important;grid-row:1!important}.finance-transaction .finance-status{grid-column:3!important;grid-row:2!important}.finance-transaction .icon-button{grid-row:auto!important}
}

@media(max-width:520px){
  #itemDialog .item-status-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  #itemDialog .estimate-editor{grid-template-columns:1fr!important}
  .finance-legend{display:grid!important;grid-template-columns:1fr 1fr!important}
}



/* Checkpoint 23: temas completos, navegación táctil y Finanzas 2.0. */
html[data-palette],body[data-palette]{background:var(--theme-bg)!important;color:var(--theme-ink)!important}
body[data-palette] .app-shell>main{background:var(--theme-bg)!important;color:var(--theme-ink)!important}
body[data-palette] .sidebar{background:var(--theme-sidebar)!important;color:var(--theme-ink)!important;border-color:var(--theme-line)!important}
body[data-palette] .inspector{background:var(--theme-context)!important;color:var(--theme-ink)!important;border-color:var(--theme-line)!important}
body[data-palette] :is(.card,.board-card,.week-day,.file-tile,.settings-nav,.recurrence-panel,.mobile-calendar-card,.mobile-agenda){background:var(--theme-surface)!important;color:var(--theme-ink)!important;border-color:var(--theme-line)!important}
body[data-palette] :is(input,select,textarea,dialog,.secondary,.layout-controls button,.context-stat,.notice,.manage-item){background:var(--theme-field)!important;color:var(--theme-ink)!important;border-color:var(--theme-line)!important}
body[data-palette] :is(.nav-item,.filter,.date,.transaction small,.setting-row small,.settings-heading p,.context-focus small,.sidebar-footer small){color:var(--theme-muted)!important}
body[data-palette] :is(.task-row,.goal-row,.transaction,.setting-row,.activity-entry,.cashflow-line,.inspector div){border-color:var(--theme-line)!important}
body[data-palette] :is(.mobile-app-header,.mobile-bottom-nav,.mobile-sheet){background:color-mix(in srgb,var(--theme-surface) 96%,transparent)!important;color:var(--theme-ink)!important;border-color:var(--theme-line)!important}
body[data-palette] .statusbar{background:var(--accent)!important;color:var(--on-accent)!important}
body[data-palette] .nav-item.active,body[data-palette] .nav-item:hover{background:color-mix(in srgb,var(--accent) 18%,var(--theme-sidebar))!important;color:var(--theme-ink)!important}

.finance-form-v2{gap:14px}.finance-form-v2 .dialog-top{align-items:flex-start}.finance-check-row{display:grid!important;grid-template-columns:auto minmax(0,1fr);gap:11px;align-items:flex-start;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--wash);cursor:pointer}.finance-check-row input{width:18px!important;height:18px!important;margin-top:2px;padding:0!important;accent-color:var(--accent)}.finance-check-row span{display:grid;gap:3px}.finance-check-row b{font-size:var(--fs-4)}.finance-check-row small{color:var(--muted);font-size:var(--fs-3);line-height:1.45}.finance-check-row.compact{padding:10px}.finance-recurrence-fields{display:grid;gap:12px;padding:14px;border:1px solid color-mix(in srgb,var(--accent) 28%,var(--line));border-radius:13px;background:color-mix(in srgb,var(--accent) 5%,var(--paper))}.finance-recurrence-fields[hidden]{display:none!important}.finance-debt-card{margin-bottom:18px;border-color:color-mix(in srgb,var(--danger) 45%,var(--line))!important}.finance-debt-card>.section-title>b{color:var(--danger-ink);font-size:var(--fs-7)}.finance-debt-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:9px}.finance-debt-list button{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:11px;border:1px solid var(--line);border-radius:11px;background:var(--wash);color:var(--ink);text-align:left;cursor:pointer}.finance-debt-list span{display:grid;gap:3px}.finance-debt-list small{color:var(--muted);font-size:var(--fs-2)}.finance-debt-list b{color:var(--danger-ink);font-size:var(--fs-4)}.finance-transaction-list{display:grid}.finance-transaction{grid-template-columns:36px minmax(150px,1fr) auto auto auto auto auto!important}.finance-transaction.overdue{background:color-mix(in srgb,var(--danger) 4%,transparent)}.finance-transaction.due{background:color-mix(in srgb,var(--warn) 5%,transparent)}.finance-paid-toggle{display:flex!important;align-items:center;gap:6px;white-space:nowrap;color:var(--muted);font-size:var(--fs-2);font-weight:var(--fw-semibold);cursor:pointer}.finance-paid-toggle input{width:16px!important;height:16px!important;padding:0!important;accent-color:#38b995}.finance-status{display:inline-flex;align-items:center;justify-content:center;padding:4px 7px;border-radius:7px;font-size:var(--fs-1);font-weight:var(--fw-bold);letter-spacing:.35px;white-space:nowrap}.finance-status.paid{background:color-mix(in srgb,var(--ok) 14%,var(--paper));color:var(--ok-ink)}.finance-status.planned{background:color-mix(in srgb,var(--warn) 20%,var(--paper));color:var(--warn-ink)}.finance-status.due{background:color-mix(in srgb,var(--warn) 20%,var(--paper));color:var(--warn-ink)}.finance-status.overdue{background:color-mix(in srgb,var(--danger) 16%,var(--paper));color:var(--danger-ink)}.finance-category-settings{grid-column:1/-1}.finance-category-list{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.finance-category-list>span{display:flex;align-items:center;gap:7px;padding:7px 9px;border:1px solid var(--line);border-radius:9px;background:var(--wash);font-size:var(--fs-4);font-weight:var(--fw-semibold)}.finance-category-list button{display:grid;place-items:center;width:18px;height:18px;padding:0;border:0;border-radius:6px;background:transparent;color:var(--muted);cursor:pointer}.finance-category-list button:hover{background:color-mix(in srgb,var(--danger) 16%,var(--paper));color:var(--danger-ink)}

@media(max-width:900px){
  html,body.mobile-ui,body.mobile-ui .app-shell,body.mobile-ui .app-shell>main,body.mobile-ui #view,body.mobile-ui #view>*{touch-action:auto!important}
  body.mobile-ui:not(.mobile-sheet-open){position:static!important;height:auto!important;overflow-y:visible!important}
  body.mobile-ui .mobile-nav-expand,body[data-palette].mobile-ui .mobile-nav-expand{position:fixed!important;z-index:10020!important;right:max(14px,env(safe-area-inset-right))!important;bottom:calc(76px + env(safe-area-inset-bottom))!important;top:auto!important;left:auto!important;display:grid!important;place-items:center!important;width:54px!important;height:54px!important;min-width:54px!important;min-height:54px!important;border:3px solid var(--theme-surface,var(--paper))!important;border-radius:18px!important;background:var(--accent)!important;color:var(--on-accent)!important;box-shadow:var(--elev-2)!important;visibility:visible!important;opacity:1!important;pointer-events:auto!important}
  body.mobile-ui .mobile-nav-expand span{font-size:var(--fs-6)!important;line-height:1!important}body.mobile-ui .mobile-nav-expand b{display:block!important;color:var(--on-accent)!important;font-size:var(--fs-1)!important}
  .finance-transaction{grid-template-columns:30px minmax(0,1fr) auto!important;gap:7px!important}.finance-transaction .transaction-copy{grid-column:2}.finance-transaction .finance-paid-toggle{grid-column:2}.finance-transaction>strong{grid-column:3;grid-row:1}.finance-transaction>.finance-status{grid-column:3;grid-row:2}.finance-transaction>.icon-button{grid-row:3}.finance-transaction>.icon-button:last-child{grid-column:3}.finance-debt-list{grid-template-columns:1fr}
}
@media(max-width:560px){.finance-form-v2 .form-grid{grid-template-columns:1fr}.finance-category-settings .section-title{align-items:flex-start;flex-direction:column}.finance-category-settings .text-button{width:100%;text-align:left}}

@media(min-width:641px) and (max-width:900px){
  body.mobile-ui .app-shell>main{padding-inline:28px}
  body.mobile-ui .metrics{display:grid!important;grid-template-columns:1fr 1fr!important;margin:0 0 18px!important;padding:0;overflow:visible}body.mobile-ui .metrics>.card{min-height:140px}
  body.mobile-ui .dashboard-columns,body.mobile-ui .insight-grid{grid-template-columns:1fr 1fr!important}
  body.mobile-ui .file-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  body.mobile-ui .mobile-sheet{max-width:720px}
  body.mobile-ui .mobile-bottom-nav{left:50%;right:auto;bottom:10px;width:min(680px,calc(100vw - 28px));min-height:60px;padding-bottom:6px;transform:translateX(-50%);border:1px solid var(--line);border-radius:22px;box-shadow:var(--elev-3)}
}

@media(max-width:640px){
  body.mobile-ui .app-shell>main{padding-inline:14px}
  body.mobile-ui .metrics{margin-inline:-14px!important;padding-inline:14px}
  body.mobile-ui .dashboard-columns,body.mobile-ui .insight-grid{grid-template-columns:1fr!important}
  body.mobile-ui .list-head{align-items:flex-start;flex-direction:column}body.mobile-ui .list-head>.primary,body.mobile-ui .list-head>button.primary{width:100%}
  body.mobile-ui .form-grid{grid-template-columns:1fr}
  body.mobile-ui .file-grid{grid-template-columns:1fr}
  body.mobile-ui .brand-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}
  body.mobile-ui .settings-split{grid-template-columns:1fr}
  body.mobile-ui .setting-row{display:grid;grid-template-columns:minmax(0,1fr) auto}body.mobile-ui .setting-row>input:not([type="checkbox"]),body.mobile-ui .setting-row>select{max-width:100%;width:100%;grid-column:1/-1}
  .mobile-tool-grid{grid-template-columns:1fr 1fr}.mobile-tool-grid button{grid-template-columns:36px minmax(0,1fr);padding:10px}.mobile-tool-grid button>span{width:36px;height:36px}.mobile-tool-grid button>small{display:none}
  .mobile-create-grid{grid-template-columns:1fr}.mobile-create-grid button{min-height:72px}
  body.mobile-ui .vertical-week .week-day{grid-template-columns:1fr}
  body.mobile-ui .calendar-toolbar{min-width:0}
}

/* Checkpoint 16: interacción consistente y vistas previas. */
@media(min-width:901px){
  html,body{height:100%;overflow:hidden}
  .app-shell{height:100vh;min-height:0;overflow:hidden}
  .sidebar{position:sticky;top:0;height:100vh;min-height:0;overflow:hidden}
  .sidebar #navigation{min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
  .sidebar-footer{flex:0 0 auto}
  .app-shell>main{height:100vh;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
  .inspector{position:sticky;top:40px;max-height:calc(100vh - 80px);overflow-y:auto}
}
.preview-target{cursor:pointer}.preview-target:hover{border-color:color-mix(in srgb,var(--accent) 35%,var(--line))}.task-row.preview-target:hover{background:color-mix(in srgb,var(--accent) 3%,transparent)}
.text-button,.resource a,.file-actions a{font-family:inherit!important;font-weight:var(--fw-semibold);line-height:1.35;text-underline-offset:3px}.text-button:hover,.resource a:hover,.file-actions a:hover{color:color-mix(in srgb,var(--accent) 76%,var(--ink))}
.file-symbol{display:grid;place-items:center;width:43px;height:43px;border-radius:13px;font-size:var(--fs-7);font-weight:var(--fw-bold)}.file-symbol-folder,.mini-file-icon.folder{background:color-mix(in srgb,var(--warn) 20%,var(--paper));color:var(--warn-ink)}.file-symbol-file{background:var(--wash);color:#3478ad}.file-symbol-image{background:color-mix(in srgb,var(--accent) 11%,var(--paper));color:#9251bd}.file-symbol-link{background:color-mix(in srgb,var(--ok) 14%,var(--paper));color:var(--ok-ink)}.file-symbol-text{background:color-mix(in srgb,var(--danger) 14%,var(--paper));color:var(--danger-ink)}.mini-file-icon{display:inline-grid;place-items:center;width:24px;height:24px;margin-right:7px;border-radius:7px;font-size:var(--fs-3)}.file-folder-button{align-items:center}
.item-preview-dialog{width:min(590px,calc(100vw - 28px))}.item-preview-dialog form{gap:17px;padding:28px}.item-preview-dialog h2{max-width:450px;font-size:var(--fs-7);line-height:1.2}.preview-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.preview-meta>span:not(.tag){padding:6px 9px;border-radius:8px;background:var(--wash);color:var(--muted);font-size:var(--fs-4);font-weight:var(--fw-semibold)}.preview-section{display:grid;gap:7px;padding-top:14px;border-top:1px solid var(--line)}.preview-section>small{color:var(--muted);font-size:var(--fs-2);font-weight:var(--fw-bold);letter-spacing:.8px}.preview-section>p{margin:0;color:var(--ink);font-size:var(--fs-5);line-height:1.65}.preview-related{justify-self:start;border:0;background:transparent;color:var(--accent-ink);padding:0;font-weight:var(--fw-semibold);font-size:var(--fs-4);font-family:inherit;cursor:pointer}.preview-tags{display:flex;gap:6px;flex-wrap:wrap}.preview-tags span{padding:5px 8px;border-radius:7px;background:color-mix(in srgb,var(--accent) 10%,var(--paper));color:var(--accent-ink);font-size:var(--fs-3);font-weight:var(--fw-bold)}.preview-checklist{display:grid;gap:7px}.preview-checklist span{display:flex;gap:9px;align-items:center;font-size:var(--fs-4)}.preview-checklist i{display:grid;place-items:center;width:18px;height:18px;border:1px solid var(--line);border-radius:6px;color:var(--on-accent);font-size:var(--fs-2);font-style:normal}.preview-checklist span.done{color:var(--muted);text-decoration:line-through}.preview-checklist span.done i{border-color:var(--mint);background:var(--mint)}.preview-actions{grid-template-columns:auto auto 1fr}.preview-actions .primary{justify-self:end;min-width:110px}
@media(max-width:900px){.item-preview-dialog .preview-actions{grid-template-columns:1fr 1fr}.item-preview-dialog .preview-actions .primary{grid-column:1/-1;grid-row:1;justify-self:stretch}.item-preview-dialog .preview-actions button{width:100%}}

/* Checkpoint 17: planificación recurrente. */
.recurrence-panel{border:1px solid var(--line);border-radius:13px;background:color-mix(in srgb,var(--accent) 3%,var(--paper));overflow:hidden}.recurrence-panel[hidden]{display:none}.recurrence-panel summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 14px;cursor:pointer;list-style:none}.recurrence-panel summary::-webkit-details-marker{display:none}.recurrence-panel summary span{color:var(--ink);font-size:var(--fs-4);font-weight:var(--fw-bold)}.recurrence-panel summary small{color:var(--accent-ink);font-size:var(--fs-3);font-weight:var(--fw-bold)}.recurrence-fields{display:grid;gap:13px;padding:14px;border-top:1px solid var(--line)}.weekday-picker{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.weekday-picker>span{margin-right:5px;color:var(--muted);font-size:var(--fs-3);font-weight:var(--fw-bold)}.weekday-picker label{display:grid!important;place-items:center;width:31px;height:31px;position:relative;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--muted);cursor:pointer}.weekday-picker input{position:absolute;opacity:0;pointer-events:none}.weekday-picker label:has(input:checked){border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.recurrence-help{margin:0;color:var(--muted);font-size:var(--fs-3);line-height:1.5}.recurrence-badge{display:inline-flex!important;align-items:center;margin-left:6px;padding:3px 6px!important;border-radius:6px!important;background:color-mix(in srgb,var(--accent) 10%,var(--paper))!important;color:var(--accent-ink)!important;font-size:var(--fs-2)!important;font-weight:var(--fw-bold)!important}.preview-meta .recurrence-badge{margin-left:0;padding:6px 9px!important;font-size:var(--fs-4)!important}
@media(max-width:600px){.recurrence-panel summary{align-items:flex-start;flex-direction:column}.recurrence-fields .form-grid{grid-template-columns:1fr}.weekday-picker{justify-content:space-between}.weekday-picker>span{width:100%}}

.help-button{display:flex;align-items:center;justify-content:center;border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:9px;padding:9px 13px;font-weight:var(--fw-bold);font-size:var(--fs-4);font-family:inherit;cursor:pointer}
.help-button:hover{border-color:var(--accent);color:var(--accent-ink)}
.mobile-help-button{display:grid;place-items:center;width:42px;height:42px;padding:0;border:1px solid var(--line);border-radius:13px;background:var(--paper);color:var(--accent-ink);font-weight:var(--fw-bold);font-size:var(--fs-6);font-family:inherit;box-shadow:var(--elev-2)}
.glossary-list{display:grid;gap:8px;margin-top:4px}
.glossary-item{border:1px solid var(--line);border-radius:13px;background:color-mix(in srgb,var(--accent) 3%,var(--paper));overflow:hidden}
.glossary-item summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 14px;cursor:pointer;list-style:none}
.glossary-item summary::-webkit-details-marker{display:none}
.glossary-item summary span{color:var(--ink);font-size:var(--fs-4);font-weight:var(--fw-bold)}
.glossary-item p{margin:0;padding:0 14px 14px;color:var(--muted);font-size:var(--fs-4);line-height:1.55}
.help-dialog{width:min(560px,calc(100vw - 28px))}

.chatbot-button{display:flex;align-items:center;justify-content:center;border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:9px;padding:8px 12px;font-size:var(--fs-5);line-height:1;cursor:pointer}
.chatbot-button:hover{border-color:var(--accent)}
.mobile-chatbot-button{display:grid;place-items:center;width:42px;height:42px;padding:0;border:1px solid var(--line);border-radius:13px;background:var(--paper);font-size:var(--fs-6);box-shadow:var(--elev-2)}
.chatbot-dialog{width:min(480px,calc(100vw - 28px))}
.chatbot-thread{display:grid;gap:8px;max-height:min(48vh,420px);overflow-y:auto;padding:4px 2px;margin-top:4px}
.chatbot-message{max-width:82%;padding:10px 13px;border-radius:14px;font-size:var(--fs-4);line-height:1.5}
.chatbot-message.bot{justify-self:start;background:var(--wash);color:var(--ink);border-bottom-left-radius:4px}
.chatbot-message.user{justify-self:end;background:color-mix(in srgb,var(--accent) 16%,var(--paper));color:var(--ink);border-bottom-right-radius:4px}
.chatbot-typing{display:flex!important;gap:4px;align-items:center;padding:14px 16px}
.chatbot-typing span{width:7px;height:7px;border-radius:50%;background:var(--muted);opacity:.4;animation:chatbot-typing-bounce 1.1s infinite}
.chatbot-typing span:nth-child(2){animation-delay:.15s}
.chatbot-typing span:nth-child(3){animation-delay:.3s}
@keyframes chatbot-typing-bounce{0%,60%,100%{opacity:.4;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}
.chatbot-options{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}
.chatbot-options button{border:1px solid var(--line);background:var(--paper);color:var(--accent-ink);border-radius:999px;padding:8px 13px;font-weight:var(--fw-semibold);font-size:var(--fs-3);font-family:inherit;cursor:pointer}
.chatbot-options button:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--paper))}

/* Checkpoint 18: compartir proyectos y administrar permisos. */
.share-page{display:grid;gap:18px}.share-intro{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:28px;align-items:center;background:linear-gradient(135deg,var(--paper),color-mix(in srgb,var(--accent) 9%,var(--paper)))}.share-intro h2{margin:4px 0 8px;font-size:var(--fs-8)}.share-intro p{max-width:680px;margin:0;color:var(--muted);font-size:var(--fs-5);line-height:1.65}.share-live{display:flex;align-items:center;gap:11px;min-width:220px;padding:14px 16px;border:1px solid color-mix(in srgb,var(--ok) 45%,var(--line));border-radius:14px;background:color-mix(in srgb,var(--ok) 9%,var(--paper))}.share-live-dot{width:11px;height:11px;flex:0 0 auto;border:3px solid color-mix(in srgb,var(--ok) 22%,var(--paper));border-radius:50%;background:var(--ok);box-shadow:0 0 0 5px color-mix(in srgb,color-mix(in srgb,var(--ok) 100%,transparent) 12%,transparent)}.share-live>div{display:grid;gap:3px}.share-live b{font-size:var(--fs-4)}.share-live small{color:var(--muted);font-size:var(--fs-2)}.share-role-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.share-role-card{display:grid;grid-template-columns:42px minmax(0,1fr);gap:12px;align-items:center;padding:16px}.share-role-card>span{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;font-size:var(--fs-3);font-weight:var(--fw-bold)}.share-role-card>div{display:grid;gap:4px}.share-role-card b{font-size:var(--fs-5)}.share-role-card small{color:var(--muted);font-size:var(--fs-3);line-height:1.45}.share-role-card.owner>span{background:color-mix(in srgb,var(--accent) 11%,var(--paper));color:var(--accent-ink)}.share-role-card.editor>span{background:color-mix(in srgb,var(--ok) 14%,var(--paper));color:var(--ok-ink)}.share-role-card.viewer>span{background:var(--wash);color:#327bb1}.share-page .team-invite{overflow:visible}.share-page .team-invite form{grid-template-columns:minmax(160px,1fr) minmax(160px,.8fr) minmax(150px,auto)}.share-page .team-invite .primary{grid-column:auto;min-width:150px}.share-page .team-page{display:contents}
@media(max-width:1120px){.share-page .team-invite form{grid-template-columns:1fr 1fr}.share-page .team-invite .primary{grid-column:1/-1;width:100%}.share-intro{grid-template-columns:1fr}.share-live{width:100%}}
@media(max-width:760px){.share-role-grid{grid-template-columns:1fr}.share-page .team-invite form{grid-template-columns:1fr}.share-page .team-invite .primary{grid-column:auto}.share-role-card{min-height:76px}}
@media(max-width:900px){body.mobile-ui .share-page{gap:13px}body.mobile-ui .share-intro{padding:18px}body.mobile-ui .share-intro h2{font-size:var(--fs-7)}body.mobile-ui .share-role-grid{display:flex;margin-inline:-18px;padding:0 18px 5px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}body.mobile-ui .share-role-card{flex:0 0 min(78vw,310px);scroll-snap-align:start}body.mobile-ui .team-page{gap:13px}body.mobile-ui .team-summary-metrics{display:grid;grid-template-columns:1fr 1fr}body.mobile-ui .team-summary-metrics>div{min-width:0}body.mobile-ui .team-summary-metrics>div:last-child{grid-column:1/-1}body.mobile-ui .team-member{grid-template-columns:40px minmax(0,1fr)}body.mobile-ui .team-member .team-role,body.mobile-ui .team-member .team-role-select,body.mobile-ui .team-member .team-remove{grid-column:2;justify-self:start}}

/* Checkpoint 20: estructura fija, sin barras visibles y navegación móvil desplegable. */
html,body{overscroll-behavior:none}*{scrollbar-width:none}*::-webkit-scrollbar{width:0!important;height:0!important;display:none!important}
@media(min-width:901px){
  body{--desktop-sidebar:234px;--desktop-context:250px;height:100dvh;overflow:hidden}
  body.sidebar-collapsed{--desktop-sidebar:0px}body.inspector-hidden{--desktop-context:0px}body.statusbar-hidden{--desktop-status:0px}
  .app-shell{display:grid;grid-template-columns:var(--desktop-sidebar) minmax(0,1fr) var(--desktop-context);width:100%;height:100dvh;min-height:0;overflow:hidden;transition:grid-template-columns .18s ease}
  .sidebar{position:relative;inset:auto;width:auto;height:100dvh;min-height:0;padding:25px 14px 18px;overflow:hidden}
  .sidebar #navigation{display:grid;flex:1;min-height:0;align-content:start;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}
  .sidebar-footer{flex:0 0 auto;margin-top:12px;padding-top:14px}
  .app-shell>main{width:100%;max-width:none;height:100dvh;min-width:0;min-height:0;margin:0;padding:38px clamp(24px,3vw,52px) 42px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:auto;scrollbar-width:thin!important;scrollbar-color:color-mix(in srgb,var(--ink) 20%,transparent) transparent!important}
  .app-shell>main::-webkit-scrollbar{width:8px!important;height:8px!important;display:block!important}
  .app-shell>main::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ink) 20%,transparent)!important;border-radius:8px!important}
  .app-shell>main::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--ink) 32%,transparent)!important}
  .app-shell>main::-webkit-scrollbar-track{background:transparent!important}
  .inspector{position:relative;inset:auto;width:auto;max-width:none;max-height:calc(100dvh - 64px);align-self:start;margin:32px 14px 32px 0;padding:19px 17px;overflow:hidden;font-size:var(--fs-4)}
  .inspector .context-view{font-size:var(--fs-4)}.inspector .context-project{font-size:var(--fs-6)!important}.inspector .context-stat{min-width:0;padding:10px!important}.inspector .context-stat small{font-size:var(--fs-3);line-height:1.35}.inspector .context-actions{gap:8px}.inspector .context-action{min-height:42px;font-size:var(--fs-4)}
}
@media(max-width:900px){body{--desktop-context:0px}}
@media(max-width:900px){
  body.mobile-ui .mobile-bottom-nav{left:0!important;right:0!important;bottom:0!important;width:100vw!important;max-width:100%!important;min-width:0!important;margin:0!important;padding-left:max(7px,env(safe-area-inset-left))!important;padding-right:max(7px,env(safe-area-inset-right))!important;transform:none!important;border-right:0!important;border-left:0!important;border-bottom:0!important;border-radius:20px 20px 0 0!important;overflow:visible!important}
  .mobile-nav-expand{position:absolute!important;right:max(10px,env(safe-area-inset-right));top:-31px;display:grid!important;place-items:center!important;width:42px!important;min-width:42px!important;height:34px!important;min-height:34px!important;padding:0!important;border:1px solid var(--line)!important;border-bottom:0!important;border-radius:13px 13px 0 0!important;background:color-mix(in srgb,var(--paper) 96%,transparent)!important;color:var(--accent-ink)!important;box-shadow:var(--elev-2)}
  .mobile-nav-expand span{font-size:var(--fs-7)!important;font-weight:var(--fw-bold);line-height:1;transform:translateY(2px)}
  .mobile-navigation-sheet{max-height:min(88dvh,780px)}.mobile-navigation-list{display:grid;gap:7px}.mobile-navigation-list button{display:grid;grid-template-columns:42px minmax(0,1fr);gap:12px;align-items:center;width:100%;min-height:54px;padding:6px 12px;border:1px solid transparent;border-radius:14px;background:transparent;color:var(--ink);text-align:left}.mobile-navigation-list button>span{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:color-mix(in srgb,var(--accent) 9%,var(--paper));color:var(--accent-ink);font-size:var(--fs-6);font-weight:var(--fw-bold)}.mobile-navigation-list button>b{font-size:var(--fs-5)}.mobile-navigation-list button.active{border-color:color-mix(in srgb,var(--accent) 30%,var(--line));background:color-mix(in srgb,var(--accent) 8%,var(--paper))}
}

/* Checkpoint 28: carpeta vinculada del dispositivo */
.file-mode-tabs{display:flex;gap:6px;margin-bottom:16px;border-bottom:1px solid var(--line)}
.file-mode-tab{border:0;background:transparent;color:var(--muted);font-weight:var(--fw-semibold);font-size:var(--fs-4);font-family:inherit;padding:10px 14px;border-radius:8px 8px 0 0;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}
.file-mode-tab:hover{color:var(--ink)}
.file-mode-tab.active{color:var(--accent-ink);border-bottom-color:var(--accent)}
.file-mode-tab.unsupported{opacity:.6}
.file-device-notice{max-width:520px}
.file-device-notice h2{margin:0 0 10px;font-size:var(--fs-6)}
.file-device-notice .filter{margin:0 0 14px}
.file-device-actions{display:flex;gap:10px;flex-wrap:wrap}
.file-device-toolbar{margin:14px 0}
@media(max-width:800px){.file-mode-tabs{overflow-x:auto}.file-mode-tab{white-space:nowrap}}

/* Distintivos por tipo de archivo, compartidos entre Biblioteca y Carpeta del dispositivo */
.file-symbol.file-type-chip{font-size:var(--fs-4);font-weight:var(--fw-bold);letter-spacing:.02em}
.file-type-pdf{background:color-mix(in srgb,var(--danger) 16%,var(--paper));color:var(--danger-ink)}
.file-type-doc{background:var(--wash);color:#2b579a}
.file-type-xls{background:color-mix(in srgb,var(--ok) 14%,var(--paper));color:var(--ok-ink)}
.file-type-ppt{background:color-mix(in srgb,var(--danger) 16%,var(--paper));color:#c9481c}
.file-type-zip{background:color-mix(in srgb,var(--accent) 10%,var(--paper));color:var(--accent-ink)}
.file-type-audio{background:color-mix(in srgb,var(--warn) 20%,var(--paper));color:var(--warn-ink)}
.file-type-video{background:var(--wash);color:var(--accent-ink)}
.file-type-text{background:var(--wash);color:var(--muted)}

/* Resumen: tarjetas opcionales (finanzas, equipo, proceso productivo) */
.dashboard-modules-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px;margin-top:18px}
.dashboard-mini-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;margin-top:10px}
.dashboard-mini-stats div{border:1px solid var(--line);border-radius:9px;padding:11px;background:var(--wash)}
.dashboard-mini-stats b{display:block;font-size:var(--fs-6)}
.dashboard-mini-stats span{display:block;color:var(--muted);font-size:var(--fs-4);margin-top:3px}
@media(max-width:800px){.dashboard-modules-grid{grid-template-columns:1fr}}

@media(max-width:900px){.statusbar{display:none!important}}
@media(max-width:900px){
  html{width:100%!important;height:auto!important;min-height:100%!important;overflow-x:hidden!important;overflow-y:auto!important;overscroll-behavior-y:auto!important;touch-action:pan-y pinch-zoom!important}
  body.mobile-ui{width:100%!important;height:auto!important;min-height:100dvh!important;overflow-x:hidden!important;overflow-y:visible!important;overscroll-behavior-y:auto!important;touch-action:pan-y pinch-zoom!important;-webkit-overflow-scrolling:touch}
  body.mobile-ui.mobile-sheet-open{overflow:hidden!important}
  body.mobile-ui .app-shell{display:block!important;width:100%!important;height:auto!important;min-height:100dvh!important;overflow:visible!important;touch-action:pan-y pinch-zoom!important}
  body.mobile-ui .app-shell>main{position:static!important;width:100%!important;max-width:900px!important;height:auto!important;min-height:100dvh!important;overflow:visible!important;touch-action:pan-y pinch-zoom!important}
  body.mobile-ui #view,body.mobile-ui #view>*{max-width:100%;touch-action:pan-y pinch-zoom}
  body.mobile-ui .metrics,body.mobile-ui .board,body.mobile-ui .filterbar,body.mobile-ui .file-sidebar,body.mobile-ui .settings-nav,body.mobile-ui .share-role-grid{touch-action:pan-x pan-y pinch-zoom}
  body.mobile-ui .mobile-bottom-nav{box-sizing:border-box!important;display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr))!important;inset-inline:0!important;width:100%!important;max-width:100%!important;overflow:visible!important}
  body.mobile-ui .mobile-bottom-nav>button:not(.mobile-nav-expand){width:100%!important;min-width:0!important;max-width:100%!important}
  body.mobile-ui .mobile-nav-expand,body[data-theme=dark].mobile-ui .mobile-nav-expand{position:absolute!important;z-index:2!important;top:-40px!important;right:max(12px,env(safe-area-inset-right))!important;display:grid!important;place-items:center!important;width:42px!important;height:42px!important;min-width:42px!important;min-height:42px!important;padding:0!important;border:3px solid var(--paper)!important;border-radius:50%!important;background:var(--accent)!important;color:var(--on-accent)!important;box-shadow:var(--elev-2)!important}
  body.mobile-ui .mobile-nav-expand span{font-size:var(--fs-5)!important;line-height:1!important;transform:none!important}
  body.mobile-ui .mobile-sheet{touch-action:pan-y pinch-zoom!important;-webkit-overflow-scrolling:touch}
  body.mobile-ui .team-invite{overflow:hidden!important}body.mobile-ui .team-invite form{display:grid!important;grid-template-columns:1fr!important;width:100%!important;min-width:0!important}body.mobile-ui .team-invite form>*{width:100%!important;min-width:0!important}body.mobile-ui .team-invite .primary{grid-column:auto!important;width:100%!important;min-width:0!important}
}

/* Jerarquia de accesos: niveles configurables y permisos por persona. */
.access-level-block{border:1px solid var(--line);border-radius:12px;padding:13px;margin-bottom:10px}
.access-level-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px;min-width:0}
.access-level-head>b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.access-level-actions{display:flex;gap:4px;flex:0 0 auto}
.access-level-views{display:flex;flex-wrap:wrap;gap:8px}
.access-view-check{display:inline-flex;align-items:center;gap:6px;padding:7px 11px;border:1px solid var(--line);border-radius:999px;cursor:pointer;font-size:var(--fs-3);color:var(--muted)}
.access-view-check:has(input:checked){border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--paper));color:var(--accent-ink);font-weight:var(--fw-semibold)}
.access-view-check input{margin:0}
.team-access-row{grid-column:1/-1;display:flex;align-items:center;flex-wrap:wrap;gap:9px;margin-top:6px;padding-top:10px;border-top:1px dashed var(--line)}
.team-access-row>small{color:var(--muted);font-size:var(--fs-1);font-weight:var(--fw-bold);letter-spacing:.4px;text-transform:uppercase}

.hierarchy-ladder{display:flex;flex-direction:column;margin:14px 0}
.hierarchy-tier{border:1px solid var(--line);border-radius:12px;padding:10px 14px;background:var(--paper);position:relative;min-width:0}
.hierarchy-tier+.hierarchy-tier{margin-top:18px}
.hierarchy-tier+.hierarchy-tier::before{content:'';position:absolute;top:-18px;left:24px;width:2px;height:18px;background:var(--line)}
.hierarchy-tier-owner{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--paper))}
.hierarchy-tier-owner-row{display:flex;justify-content:space-between;align-items:center;gap:10px}
.hierarchy-tier-owner-actions{display:flex;align-items:center;gap:2px;flex:0 0 auto}
.hierarchy-tier-owner-actions .tag-color{width:26px;height:26px}
.hierarchy-tier b{display:block}
.hierarchy-tier small{color:var(--muted)}
.hierarchy-tier-people{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.hierarchy-person{font-size:var(--fs-2);padding:3px 9px;border-radius:999px;background:color-mix(in srgb,var(--muted) 14%,var(--paper));color:var(--muted)}
.hierarchy-person-exception{background:color-mix(in srgb,var(--accent) 16%,var(--paper));color:var(--accent-ink);font-weight:var(--fw-semibold)}
.exception-note{color:var(--accent-ink);font-weight:var(--fw-semibold)}
.org2-scroll{overflow:hidden;position:relative;height:min(70vh,760px);border:1px solid var(--line);border-radius:16px;background:var(--wash);margin-top:14px;cursor:grab;touch-action:none}
.org2-scroll.panning{cursor:grabbing}
.org2-canvas{display:inline-block;transform-origin:0 0}
.org2-zoom-controls{position:absolute;right:14px;bottom:14px;display:flex;flex-direction:column;gap:6px;background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:4px;box-shadow:var(--elev-2)}
.org2-tree,.org2-tree ul{list-style:none;margin:0;padding:0;display:flex;justify-content:center;align-items:flex-start}
.org2-tree li{position:relative;padding:32px 14px 0;display:flex;flex-direction:column;align-items:center}
.org2-tree li::before{content:'';position:absolute;top:0;left:50%;height:32px;border-left:2px solid var(--line)}
.org2-tree li::after{content:'';position:absolute;top:0;left:0;right:0;border-top:2px solid var(--line)}
.org2-tree li:first-child::after{left:50%}
.org2-tree li:last-child::after{right:50%}
.org2-tree li:only-child::after{display:none}
.org2-tree>li{padding-top:0}
.org2-tree>li::before,.org2-tree>li::after{display:none}
.org2-node{display:flex;align-items:stretch;border:1px solid var(--line);border-radius:12px 12px 0 0;overflow:hidden;background:var(--paper);min-width:180px;height:172px;box-shadow:var(--elev-2)}
.org2-node-main{flex:1;display:flex;flex-direction:column;gap:6px;padding:10px 12px;min-width:0;min-height:0}
.org2-node-actions{display:flex;gap:2px;justify-content:flex-end;flex:0 0 auto}
.org2-node-body{display:flex;flex-direction:column;gap:6px;flex:1;min-height:0;overflow:hidden}
.org2-node-body>.empty{margin:0;font-size:var(--fs-2)}
.org2-rank-group{display:flex;flex-direction:column;gap:4px}
.org2-rank-group-photos{flex-direction:row;flex-wrap:wrap;gap:10px;justify-content:center;width:100%}
.org2-rank-group-photos .org2-person{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;padding:6px}
.org2-rank-divider{border-top:1px solid color-mix(in srgb,var(--ink) 12%,transparent);margin:2px 0}
.org2-more-people{font-size:var(--fs-1);color:var(--muted);font-weight:var(--fw-semibold);padding-top:2px;flex:0 0 auto}
.org2-person{border:1px solid var(--line);border-radius:10px;padding:5px 8px;background:var(--wash)}
.org2-person b{display:block;font-size:var(--fs-2);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.org2-person small{color:var(--muted);font-size:var(--fs-1)}
.org2-person-photo{display:grid;place-items:center;width:84px;height:84px;border-radius:16px;object-fit:cover;background:color-mix(in srgb,var(--accent) 13%,var(--paper));color:var(--accent-ink);font-size:var(--fs-8);font-weight:var(--fw-bold)}
.org2-person-picker{-webkit-appearance:none;appearance:none;flex:0 0 auto;min-width:0;width:34px;height:36.8px;font-size:var(--fs-4);padding:0;margin:0;border:0;border-radius:6px;text-align:center;text-align-last:center;cursor:pointer}
.org2-node-actions .org2-person-picker.icon-button{background:transparent!important;color:var(--muted)!important;border-color:transparent!important}
.org2-node-actions .org2-person-picker.icon-button:hover{background:color-mix(in srgb,#8991a9 12%,transparent)!important}
.org2-node-label{align-self:stretch;min-width:180px;height:40px;flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2px 10px;border-radius:0 0 12px 12px;overflow:hidden;box-shadow:var(--elev-2)}
.org2-node-label small{color:rgba(255,255,255,.78);font-size:var(--fs-1);font-weight:var(--fw-bold);letter-spacing:.4px;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.org2-node-label b{color:var(--on-accent);font-size:var(--fs-3);font-weight:var(--fw-bold);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;text-shadow:0 1px 2px var(--shadow)}
.org2-root .org2-node{height:auto;min-height:64px}
.org2-root .org2-node-main{align-items:center;justify-content:center}
.org2-root .org2-node-body b{font-size:var(--fs-4)}
@media(max-width:900px){
  .org2-scroll{height:min(60vh,560px)}
  .org2-node{min-width:150px}
}

.project-type-picker{display:grid;gap:8px;margin:2px 0}
.project-type-picker>small{color:var(--muted);font-size:var(--fs-2);font-weight:var(--fw-semibold);letter-spacing:.3px;text-transform:uppercase}

.my-projects-trigger{width:100%;text-align:left;padding:8px 4px;margin-bottom:14px;font-size:var(--fs-2)}
.my-projects-dialog{width:min(1000px,94vw);max-height:min(90svh,820px)}
.my-projects-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;max-height:min(72svh,640px);overflow-y:auto;padding:2px}
.my-project-card{display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:14px;align-items:center;padding:16px;border:1px solid var(--line);border-radius:16px;background:transparent;cursor:pointer;text-align:left}
.my-project-card:hover{border-color:var(--accent)}
.my-project-card.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--paper))}
.my-project-mark{display:grid;place-items:center;width:64px;height:64px;border-radius:16px;background:color-mix(in srgb,var(--accent) 12%,var(--paper));color:var(--accent-ink);font-weight:var(--fw-bold);font-size:var(--fs-7);overflow:hidden;flex:0 0 auto}
.my-project-mark img{width:100%;height:100%;object-fit:cover}
.my-project-info{display:grid;gap:3px;min-width:0}
.my-project-info>b{font-size:var(--fs-5);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.my-project-info>small{color:var(--muted);font-size:var(--fs-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.my-project-info>.my-project-stat{color:var(--accent-ink);font-size:var(--fs-2);font-weight:var(--fw-bold)}
.my-project-card>i{font-style:normal;color:var(--accent-ink);font-weight:var(--fw-bold)}
.my-project-add{border-style:dashed;color:var(--muted)}

.block-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

@media(max-width:900px){
  #itemDialog .checklist-builder-item{grid-template-columns:20px minmax(0,1fr) 26px 26px!important;row-gap:4px!important}
  #itemDialog .checklist-builder-item input[type="checkbox"]{grid-column:1!important;grid-row:1!important}
  #itemDialog .checklist-builder-item span{grid-column:2!important;grid-row:1!important}
  #itemDialog .checklist-builder-item input.checklist-step-date{grid-column:2/-1!important;grid-row:2!important;width:100%!important;box-sizing:border-box!important}
  #itemDialog .checklist-builder-item button:nth-of-type(1){grid-column:3!important;grid-row:1!important}
  #itemDialog .checklist-builder-item button:nth-of-type(2){grid-column:4!important;grid-row:1!important}
}
#printArea{display:none}
#printArea h1{font-size:var(--fs-7);margin:0 0 4px}
#printArea>p{color:var(--muted);font-size:var(--fs-3);margin:0 0 16px}
#printArea table{width:100%;border-collapse:collapse}
#printArea th,#printArea td{border:1px solid var(--line);padding:6px 8px;text-align:left;font-size:var(--fs-3)}
#printArea th{background:var(--wash)}
@media print{
  body.printing>*:not(#printArea){display:none!important}
  body.printing #printArea{display:block!important;color:#000;background:var(--paper)}
}

.plan-price{font-size:var(--fs-8);font-weight:var(--fw-bold);color:var(--accent-ink);margin:2px 0 8px}
.plan-card{display:flex;flex-direction:column}
.plan-features{list-style:none;margin:14px 0 18px;padding:0;display:flex;flex-direction:column;gap:9px}
.plan-features li{display:flex;align-items:flex-start;gap:9px;font-size:var(--fs-4);line-height:1.35}
.plan-features li i{flex:0 0 auto;width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-size:var(--fs-2);font-weight:var(--fw-bold);margin-top:1px}
.plan-features li.yes i{background:color-mix(in srgb,var(--ok) 14%,var(--paper));color:var(--ok-ink)}
.plan-features li.no{color:var(--muted)}
.plan-features li.no i{background:var(--wash);color:var(--muted)}
.plan-card>*:last-child{margin-top:auto}
.plan-cta{width:100%;padding:13px 16px;font-size:var(--fs-4)}
.plan-recommended{position:relative;background:var(--ink);color:var(--on-accent);box-shadow:var(--elev-3);padding-top:34px}
.plan-recommended .plan-price{color:#c9c4ff}
.plan-recommended .filter{color:var(--muted)}
.plan-recommended .plan-features li.no{color:var(--muted)}
.plan-recommended .plan-features li.yes i{background:#1f3d33;color:var(--ok)}
.plan-recommended .plan-features li.no i{background:#2a2f4a;color:var(--muted)}
.plan-recommended .plan-cta{background:var(--paper);color:var(--ink);box-shadow:none}
.plan-recommended .tag.low{background:#2a2f4a;color:#c9c4ff}
.plan-ribbon{position:absolute;top:0;left:0;right:0;background:var(--accent);color:var(--on-accent);font-size:var(--fs-2);font-weight:var(--fw-bold);letter-spacing:.06em;text-align:center;padding:5px 0;border-radius:14px 14px 0 0}
.plan-period-toggle{display:flex;gap:6px;margin:0 0 18px}
.plan-period-toggle button{border:1px solid var(--theme-line,var(--line));background:var(--theme-surface,var(--paper));color:var(--theme-muted,var(--muted));border-radius:9px;padding:9px 14px;font-weight:var(--fw-bold);font-size:var(--fs-3);font-family:inherit;cursor:pointer}
.plan-period-toggle button:hover,.plan-period-toggle button.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 15%,var(--theme-surface));color:var(--theme-ink,var(--ink))}
.plan-price-note{display:block;color:var(--ok-ink);font-weight:var(--fw-semibold);margin:-4px 0 8px}
.plan-recommended .plan-price-note{color:var(--ok)}

.recurrence-scope-options{display:grid;gap:10px}
.recurrence-scope-option{display:block;width:100%;text-align:left;border:1px solid var(--line);background:transparent;border-radius:11px;padding:12px 14px;cursor:pointer;font:inherit;color:var(--ink)}
.recurrence-scope-option:hover{border-color:var(--accent)}
.recurrence-scope-option b{display:block;font-size:var(--fs-4)}
.recurrence-scope-option small{color:var(--muted);font-size:var(--fs-3)}
.finance-series-line{display:block}
small.filter{display:block;margin-top:2px}
.preview-series-list{display:grid;gap:2px;max-height:172px;overflow:hidden}
.preview-series.expanded .preview-series-list{max-height:280px;overflow-y:auto;border-bottom:1px solid var(--line);padding-bottom:4px}
.preview-series-row{display:flex;gap:9px;align-items:center;padding:6px 8px;border-radius:8px;font-size:var(--fs-4)}
.preview-series-row:hover{background:var(--theme-surface-2,var(--wash))}
.preview-series-row input{width:16px;height:16px;margin:0;accent-color:var(--accent);flex:0 0 auto}
.preview-series-toggle{display:block;border:0;background:transparent;color:var(--accent-ink);font-weight:var(--fw-semibold);font-size:var(--fs-3);font-family:inherit;cursor:pointer;padding:6px 2px 0;text-align:left}
.preview-pending-confirmation{background:color-mix(in srgb,var(--warn) 20%,var(--paper));border:1px solid #f2d9ad;border-radius:10px;padding:12px 14px}
.preview-confirm-actions{display:flex;gap:8px;margin-top:10px}
.access-confirm-check{display:block;margin-top:6px;padding-top:6px;border-top:1px dashed var(--line)}

/* El panel derecho (.inspector) es un ancho fijo angosto (222px) — sin esto, un nombre de
   proyecto o un título de tarea largo se envuelve en muchas líneas cortas y empuja las
   tarjetas/botones de abajo fuera del área visible (.inspector recorta con overflow:hidden).
   El recorte de "PRÓXIMO FOCO" (.context-focus b) vive en el <style> inline de index.html,
   no acá — esa regla es la que realmente gana (carga después de este archivo). */
.context-project{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.context-view{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
/* "Sin fecha límite" ahora solo oculta la Fecha límite, no la Fecha de inicio (que puede seguir
   anclando una repetición) — si queda sola, que ocupe las dos columnas en vez de dejar un hueco. */
#itemDateFields:has(#itemDeadlineField[hidden]) #itemStartDateField{grid-column:1/-1}


/* ===========================================================================
   CAPA HISTORICA - estaba en un <style> dentro de index.html, que se cargaba
   DESPUES de este archivo y por lo tanto le ganaba por orden de fuente. Eso
   fue justo lo que rompio el sistema de temas: redefinia --ink/--paper/--wash
   y las 6 paletas oscuras mostraban navy. Movida aca para que exista un solo
   orden de cascada, en la misma posicion relativa que tenia antes.
   =========================================================================== */
.board{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;align-items:start}.board-column{background:var(--wash);border-radius:14px;padding:13px;min-height:390px}.board-column h2{font-size:var(--fs-5);margin:2px 3px 12px;color:var(--muted)}.board-card{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:13px;margin-bottom:10px;box-shadow:var(--elev-1);font-size:var(--fs-5)}.board-card p{margin:8px 0 11px}.board-card footer{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:var(--fs-4)}.move{border:0;background:color-mix(in srgb,var(--accent) 10%,var(--paper));color:var(--accent-ink);border-radius:6px;padding:4px 7px;cursor:pointer;font-size:var(--fs-4)}@media(max-width:800px){.board{grid-template-columns:1fr;gap:12px}.board-column{min-height:unset}}
    .row-actions{display:flex;gap:5px}.icon-button{border:0;background:transparent;color:var(--muted);cursor:pointer;border-radius:5px;padding:4px 6px;font-size:var(--fs-7)}.icon-button:hover{background:color-mix(in srgb,var(--accent) 10%,var(--paper));color:var(--accent-ink)}
    .month-title{display:flex;align-items:center;gap:12px;text-transform:capitalize}.month-nav{border:0;background:color-mix(in srgb,var(--accent) 10%,var(--paper));color:var(--accent-ink);width:27px;height:27px;border-radius:7px;font-size:var(--fs-7);line-height:20px;cursor:pointer}.goal-slider{display:flex;align-items:center;gap:13px;color:var(--muted);font-size:var(--fs-4);font-weight:var(--fw-semibold)}.goal-slider input{accent-color:#6258e8;padding:0;border:0;width:145px}
    .resource{display:flex;align-items:center;gap:5px}.resource .icon-button{margin-left:auto}.resource a{color:var(--accent-ink);text-decoration:none;font-weight:var(--fw-semibold)}
    .insight-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:18px;margin-top:18px}.status-line{display:grid;grid-template-columns:82px 1fr 33px;gap:10px;align-items:center;margin:13px 0;font-size:var(--fs-4);color:var(--muted)}.status-track{height:9px;border-radius:9px;background:var(--wash);overflow:hidden}.status-track span{height:100%;display:block;border-radius:9px}.data-card{max-width:720px}.data-actions{display:flex;gap:10px;flex-wrap:wrap;margin:23px 0}.notice{background:color-mix(in srgb,var(--accent) 8%,var(--paper));border-radius:10px;color:var(--accent-ink);padding:13px;font-size:var(--fs-4);line-height:1.5}@media(max-width:800px){.insight-grid{grid-template-columns:1fr}}
    .header-actions,.layout-controls{display:flex;gap:8px;align-items:center}.layout-controls button{border:1px solid var(--line);background:var(--paper);color:var(--muted);border-radius:7px;width:30px;height:30px;cursor:pointer}.inspector{width:215px;margin:40px 28px 40px 0;background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:17px;align-self:flex-start;font-size:var(--fs-4);color:var(--muted)}.inspector p{font-size:var(--fs-3);font-weight:var(--fw-bold);letter-spacing:.8px;margin:0 0 12px}.inspector h2{font-size:var(--fs-6);color:var(--ink);margin:0 0 18px}.inspector div{padding:9px 0;border-top:1px solid var(--line)}.inspector span{font-size:var(--fs-6);font-weight:var(--fw-bold);color:var(--accent-ink)}.statusbar{height:27px;position:fixed;bottom:0;left:0;right:0;z-index:4;background:var(--accent);color:var(--on-accent);display:flex;gap:22px;align-items:center;padding:0 14px;font-size:var(--fs-3)}.sidebar-collapsed .sidebar{width:0;padding:0;overflow:hidden}.inspector-hidden .inspector{display:none}.statusbar-hidden .statusbar{display:none}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.setting-row{display:flex;gap:10px;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding:12px 0;font-size:var(--fs-5)}.setting-row:first-child{border-top:0}.setting-row small{display:block;color:var(--muted);margin-top:3px}.setting-row input[type=checkbox]{width:18px;height:18px;accent-color:#6258e8}.settings-card h2{font-size:var(--fs-6)}.manage-list{display:grid;gap:8px;margin-top:12px}.manage-item{display:flex;justify-content:space-between;align-items:center;border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:var(--fs-4)}.filterbar{display:flex;gap:9px;flex-wrap:wrap;margin:14px 0}.filterbar select{font-size:var(--fs-4);padding:8px;min-width:130px}.week-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:9px}.week-day{background:var(--paper);border:1px solid var(--line);border-radius:12px;min-height:190px;padding:11px}.week-day h3{font-size:var(--fs-4);margin:0 0 9px;color:var(--muted)}.week-day.today-week{border-color:var(--accent)}.week-task{font-size:var(--fs-3);border-radius:6px;padding:6px;margin:5px 0;background:color-mix(in srgb,var(--accent) 10%,var(--paper));color:var(--accent-ink)}.activity-entry{padding:12px 0;border-top:1px solid var(--line);font-size:var(--fs-5)}.activity-entry small{color:var(--muted);display:block;margin-top:4px}textarea{font:inherit;color:var(--ink);border:1px solid var(--line);border-radius:9px;padding:10px;resize:vertical;min-height:72px}@media(max-width:1000px){.inspector{display:none}.settings-grid{grid-template-columns:1fr}}@media(max-width:800px){.layout-controls{display:none}.week-grid{grid-template-columns:1fr}.week-day{min-height:auto}.statusbar{display:none}}
    .task-tags{display:flex;gap:4px;flex-wrap:wrap;margin-top:5px}.task-tags span{background:color-mix(in srgb,var(--accent) 10%,var(--paper));color:var(--accent-ink);border-radius:5px;font-size:var(--fs-2);font-weight:var(--fw-semibold);padding:2px 5px}
    .metric-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))!important}
    .month-title{display:grid;grid-template-columns:27px 185px 27px;align-items:center;text-align:center}.board-column-wide{max-width:680px;margin:auto}
    .finance-summary{grid-template-columns:repeat(4,1fr);margin-bottom:19px}.finance-chart{display:grid;grid-template-columns:1fr 1fr;gap:18px}.bar-chart{display:grid;gap:12px;margin-top:15px}.bar-row{display:grid;grid-template-columns:95px 1fr 70px;align-items:center;gap:10px;font-size:var(--fs-4);color:var(--muted)}.bar-track{height:12px;background:var(--wash);border-radius:8px;overflow:hidden}.bar-track span{display:block;height:100%;background:linear-gradient(90deg,var(--accent),#9b95ff);border-radius:8px}.transaction{display:grid;grid-template-columns:36px 1fr auto auto;gap:10px;align-items:center;padding:12px 0;border-top:1px solid var(--line);font-size:var(--fs-5)}.transaction-icon{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:color-mix(in srgb,var(--danger) 14%,var(--paper));color:var(--danger-ink)}.transaction-icon.income{background:color-mix(in srgb,var(--ok) 14%,var(--paper));color:var(--ok-ink)}.transaction small{display:block;color:var(--muted);margin-top:3px}.transaction strong{font-size:var(--fs-4)}.amount-income{color:var(--ok-ink)}.amount-expense{color:var(--danger-ink)}@media(max-width:800px){.finance-summary,.finance-chart{grid-template-columns:1fr 1fr}.transaction{grid-template-columns:30px 1fr auto}}
    /* Legibilidad y contraste */
    body{font-family:var(--font-body);font-weight:var(--fw-normal);line-height:var(--lh-normal);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.card{line-height:1.45}.filter{line-height:1.5}.section-title{gap:12px}.task-row,.goal-row{padding:15px 0}
    .brand-logo-preview{width:62px;height:62px;border-radius:15px;background:#fff;object-fit:contain;padding:5px;margin-bottom:13px}.palette-toolbar{display:flex;gap:8px;align-items:center;margin:12px 0}.color-editor{display:flex;gap:9px;flex-wrap:wrap;margin:13px 0}.color-field{display:grid;gap:5px;font-size:var(--fs-3);color:var(--muted)}.color-field input{width:47px;height:37px;padding:3px;cursor:pointer}.font-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
    .toast{position:fixed;right:24px;bottom:44px;z-index:10;background:#242a42;color:#fff;border:1px solid var(--ok);border-radius:9px;padding:11px 15px;font-size:var(--fs-4);font-weight:var(--fw-semibold);opacity:0;transform:translateY(8px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:translateY(0)}.avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%}
    /* Actualización 1: biblioteca visual y organización */
    main{margin:0;align-self:stretch}.layout-controls button{background:#343b59!important;border-color:#566080!important;color:#f2f4ff!important}.layout-controls button:hover{background:var(--accent)!important;color:var(--on-accent)!important}.app-dialog{width:min(540px,94vw);background:var(--paper);color:var(--ink)}.app-dialog form{padding:26px}.dialog-kicker{font-size:var(--fs-3)!important;font-weight:var(--fw-bold);color:var(--accent-ink);letter-spacing:1.1px;margin:0 0 5px}.dialog-copy{color:var(--muted);font-size:var(--fs-5);line-height:1.55;margin:5px 0 10px}.danger{border:0;background:var(--danger);color:var(--on-accent);border-radius:9px;padding:10px 15px;font-weight:var(--fw-semibold);cursor:pointer}.file-layout{display:grid;grid-template-columns:205px 1fr;gap:18px}.file-sidebar{background:var(--wash);border:1px solid var(--line);border-radius:12px;padding:13px}.file-sidebar h3{font-size:var(--fs-4);margin:5px 0 11px}.file-folder-button{display:flex;width:100%;border:0;background:transparent;color:var(--muted);border-radius:7px;padding:8px;text-align:left;cursor:pointer;font-weight:var(--fw-medium);font-size:var(--fs-4);font-family:inherit}.file-folder-button.active,.file-folder-button:hover{background:color-mix(in srgb,var(--accent) 11%,var(--paper));color:var(--accent-ink)}.file-breadcrumb{display:flex;gap:7px;align-items:center;font-size:var(--fs-4);color:var(--muted);margin-bottom:15px}.file-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px}.file-tile{min-height:132px;border:1px solid var(--line);background:var(--paper);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:8px;cursor:pointer;transition:.16s}.file-tile:hover{border-color:#938cff;transform:translateY(-2px);box-shadow:var(--elev-2)}.file-symbol{font-size:var(--fs-8)}.file-tile b{font-size:var(--fs-5);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-tile small{color:var(--muted);font-size:var(--fs-3);line-height:1.35}.file-actions{display:flex;justify-content:flex-end;gap:3px;margin-top:auto}.week-grid.vertical-week{grid-template-columns:1fr;gap:10px}.vertical-week .week-day{min-height:88px;display:grid;grid-template-columns:145px 1fr;align-items:start;gap:14px;padding:15px}.vertical-week .week-day h3{font-size:var(--fs-5);color:var(--ink);margin:0}.vertical-week .week-task{display:inline-block;margin:0 5px 5px 0;font-size:var(--fs-4)}.tag-color{width:26px;height:26px;padding:2px;border:0;background:none;cursor:pointer}.settings-section{grid-column:1/-1}.settings-tabs-note{font-size:var(--fs-4);color:var(--muted);margin-top:-7px}.settings-card .manage-item{gap:9px}.manage-item .tag-label{display:flex;align-items:center;gap:8px;flex:1}.tag-dot{width:9px;height:9px;border-radius:50%;display:inline-block}@media(max-width:800px){.file-layout{grid-template-columns:1fr}.file-sidebar{display:flex;gap:5px;overflow:auto}.file-sidebar h3{display:none}.file-folder-button{width:auto;white-space:nowrap}.vertical-week .week-day{grid-template-columns:1fr}.file-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
    /* Actualización 2: ejecución de tareas */
    .board{width:100%;align-items:start}.board-column{min-height:300px}.board-card{display:grid;gap:8px}.checklist-progress{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:var(--fs-3);margin-top:6px}.checklist-progress span{height:5px;background:var(--accent);border-radius:6px;display:block}.subtask-list{display:grid;gap:5px;margin-top:8px}.subtask{display:flex;align-items:center;gap:7px;border:0;background:transparent;padding:2px 0;color:var(--muted);font-size:var(--fs-4);text-align:left;cursor:pointer}.subtask input{accent-color:var(--accent);width:14px;height:14px;padding:0}.subtask.done{text-decoration:line-through;opacity:.65}.estimate-badge{font-size:var(--fs-3);color:var(--accent-ink);background:color-mix(in srgb,var(--accent) 10%,var(--paper));border-radius:6px;padding:3px 6px;font-weight:var(--fw-semibold)}@media(min-width:601px){.board{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:16px!important}.board-column{min-height:300px!important;max-height:calc(100vh - 245px);overflow:auto}}@media(max-width:600px){.board{grid-template-columns:1fr!important}.board-column{min-height:unset!important}}
    /* Actualización 3: control financiero mensual */
    .finance-summary{gap:18px!important;margin-bottom:18px!important}.finance-chart{margin-bottom:18px;align-items:stretch}.finance-chart>.card{min-width:0}.finance-monthly{display:grid;grid-template-columns:1.1fr .9fr;gap:18px;margin-bottom:18px}.budget-card{display:grid;gap:13px}.budget-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.budget-amount{font-size:var(--fs-8);font-weight:var(--fw-bold);letter-spacing:-.8px;margin:3px 0}.budget-caption{font-size:var(--fs-4);color:var(--muted)}.budget-progress{height:11px;border-radius:9px;background:var(--wash);overflow:hidden;border:1px solid var(--line)}.budget-progress span{display:block;height:100%;border-radius:9px;background:linear-gradient(90deg,var(--accent),#928aff)}.budget-progress.over span{background:linear-gradient(90deg,var(--danger),#ff9a73)}.budget-breakdown{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.budget-breakdown div{border:1px solid var(--line);border-radius:9px;padding:9px;font-size:var(--fs-3);color:var(--muted)}.budget-breakdown b{display:block;color:var(--ink);font-size:var(--fs-5);margin-top:3px}.cashflow-list{display:grid;gap:10px}.cashflow-line{display:grid;grid-template-columns:1fr auto;gap:10px;padding:10px 0;border-top:1px solid var(--line);font-size:var(--fs-4)}.cashflow-line:first-child{border-top:0;padding-top:0}.cashflow-line small{color:var(--muted);display:block;margin-top:2px}.finance-empty{padding:8px 0 1px;color:var(--muted);font-size:var(--fs-4)}@media(max-width:900px){.finance-summary{grid-template-columns:repeat(2,minmax(0,1fr))!important}.finance-monthly{grid-template-columns:1fr}}@media(max-width:560px){.finance-summary,.finance-chart{grid-template-columns:1fr!important}.budget-breakdown{grid-template-columns:1fr 1fr}.transaction{grid-template-columns:30px 1fr auto!important}.transaction .icon-button:first-of-type{display:none}}
    /* Actualización 4: contexto útil y ajustes organizados */
    .inspector{display:grid;gap:13px}.inspector p{margin:0}.context-project{font-size:var(--fs-6)!important;line-height:1.3;margin:0!important}.context-view{font-size:var(--fs-3);font-weight:var(--fw-bold);color:var(--accent-ink);letter-spacing:.8px;text-transform:uppercase}.context-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px}.context-stat{border:1px solid var(--line);border-radius:9px;padding:9px!important;background:var(--wash)}.context-stat span{display:block;font-size:var(--fs-6);line-height:1.1}.context-stat small{display:block;color:var(--muted);font-size:var(--fs-3);margin-top:3px}.context-focus{border-top:1px solid var(--line);padding-top:12px}.context-focus b{display:-webkit-box;font-size:var(--fs-4);margin:4px 0;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.context-focus small{color:var(--muted);font-size:var(--fs-3);line-height:1.35}.context-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}.context-action{border:1px solid var(--line);background:transparent;color:var(--ink);border-radius:8px;padding:8px 6px;font-weight:var(--fw-semibold);font-size:var(--fs-2);font-family:inherit;cursor:pointer}.context-action:hover{border-color:var(--accent);color:var(--accent-ink);background:color-mix(in srgb,var(--accent) 8%,var(--paper))}.settings-shell{display:grid;grid-template-columns:205px minmax(0,1fr);gap:18px;align-items:start}.settings-nav{position:sticky;top:20px;display:grid;gap:5px;padding:10px}.settings-nav h2{font-size:var(--fs-4);margin:5px 4px 9px}.settings-nav button{border:0;background:transparent;color:var(--muted);text-align:left;border-radius:8px;padding:10px;font-weight:var(--fw-semibold);font-size:var(--fs-4);font-family:inherit;cursor:pointer}.settings-nav button.active,.settings-nav button:hover{background:color-mix(in srgb,var(--accent) 10%,var(--paper));color:var(--accent-ink)}.settings-content{min-width:0}.settings-content>.card{min-height:330px}.settings-heading{margin-bottom:20px}.settings-heading h2{font-size:var(--fs-7);margin:0 0 5px}.settings-heading p{margin:0;color:var(--muted);font-size:var(--fs-4)}.settings-split{display:grid;grid-template-columns:1fr;gap:18px}.settings-content .setting-row{padding:14px 0}.settings-content .setting-row input[type=color]{width:45px;height:33px;padding:2px}.settings-help{font-size:var(--fs-4);color:var(--muted);line-height:1.5;margin-top:15px}.settings-content .manage-list{max-width:680px}body[data-density=compact] .card{padding:15px}body[data-density=compact] .task-row{padding:9px 0}body[data-density=compact] .board-card{padding:10px}@media(max-width:1000px){.settings-shell{grid-template-columns:1fr}.settings-nav{position:static;display:flex;overflow:auto;padding:6px}.settings-nav h2{display:none}.settings-nav button{white-space:nowrap}}@media(max-width:650px){.settings-split{grid-template-columns:1fr}.context-actions{grid-template-columns:1fr 1fr}}
    /* Actualización 5: galería de marca y correcciones de espacio */
    .settings-content{width:auto!important;max-width:none!important;margin:0!important;padding:0!important;align-self:start}.calendar-wrap{display:block!important}.calendar-wrap>div:first-child{width:100%}.calendar-wrap aside{width:100%;margin:18px 0 0}.calendar-wrap aside .upcoming{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px}.calendar-wrap aside .task-row{margin:0;border:1px solid var(--line);border-radius:9px;padding:10px}.board-column:nth-child(1){background:color-mix(in srgb,var(--warn) 20%,var(--paper))!important;border:1px solid #ffd7a7}.board-column:nth-child(2){background:color-mix(in srgb,var(--accent) 10%,var(--paper))!important;border:1px solid var(--line)}.board-column:nth-child(3){background:color-mix(in srgb,var(--ok) 14%,var(--paper))!important;border:1px solid #bdeedc}.board-column:nth-child(1) h2{color:var(--warn-ink)}.board-column:nth-child(2) h2{color:var(--accent-ink)}.board-column:nth-child(3) h2{color:var(--ok-ink)}.brand-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:10px;margin-top:13px}.brand-image{position:relative;min-height:100px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--wash)}.brand-image.active{outline:2px solid var(--accent);outline-offset:2px}.brand-image img{display:block;width:100%;height:100px;object-fit:cover}.brand-image-actions{position:absolute;left:5px;right:5px;bottom:5px;display:flex;justify-content:space-between;gap:4px}.brand-image-actions button{border:0;border-radius:6px;background:#ffffffea;color:var(--ink);font-weight:var(--fw-semibold);font-size:var(--fs-1);font-family:inherit;padding:5px;cursor:pointer}.brand-image-actions button:hover{background:var(--accent);color:var(--on-accent)}.brand-image .default-badge{position:absolute;top:5px;left:5px;background:var(--accent);color:var(--on-accent);border-radius:5px;padding:3px 5px;font-size:var(--fs-1);font-weight:var(--fw-bold)}.brand-gallery-empty{border:1px dashed var(--line);border-radius:10px;padding:18px;color:var(--muted);font-size:var(--fs-4)}.brand-upload-actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-top:15px}.brand-upload-actions small{color:var(--muted);font-size:var(--fs-4)}
    .account-button{display:flex;align-items:center;gap:7px;border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:9px;padding:9px 11px;font-weight:var(--fw-semibold);font-size:var(--fs-4);font-family:inherit;cursor:pointer}.account-button:hover{border-color:var(--accent);color:var(--accent-ink)}.account-dot{width:8px;height:8px;border-radius:50%;background:#aab1c5}.account-button.connected .account-dot{background:var(--mint);box-shadow:0 0 0 3px color-mix(in srgb,var(--ok) 13%,transparent)}.account-shell{display:grid;gap:16px}.account-hero{display:flex;gap:12px;align-items:center;padding:14px;border:1px solid var(--line);background:var(--wash);border-radius:12px}.account-avatar{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:color-mix(in srgb,var(--accent) 18%,var(--paper));color:var(--accent-ink);font-weight:var(--fw-bold);overflow:hidden;flex:0 0 auto}.account-avatar img{width:100%;height:100%;object-fit:cover}.account-hero h3{margin:0;font-size:var(--fs-5)}.account-hero p{margin:4px 0 0;color:var(--muted);font-size:var(--fs-4);word-break:break-word}.google-button{display:flex;justify-content:center;align-items:center;gap:9px;width:100%;border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:9px;padding:11px 14px;font-weight:var(--fw-semibold);font-size:var(--fs-4);font-family:inherit;cursor:pointer}.google-button:hover{border-color:var(--accent);background:var(--wash)}.cloud-note{padding:12px;border-radius:10px;background:color-mix(in srgb,var(--accent) 10%,var(--paper));color:var(--muted);font-size:var(--fs-4);line-height:1.5}.cloud-note b{display:block;color:var(--accent-ink);margin-bottom:3px}.account-dialog form{gap:16px}@media(max-width:800px){.account-button{padding:8px}.account-button #accountButtonLabel{display:none}}

/* ===========================================================================
   JERARQUIA — se carga al final de styles.css a proposito: es la capa que
   decide que se lee primero en cada tarjeta.
   =========================================================================== */

/* -- Titulos ---------------------------------------------------------------
   Space Grotesk solo en titulos y cifras grandes. El cuerpo queda en Plex Sans:
   mezclar dos grotescas en textos largos cansa la lectura. */
h1,h2,h3,.metric-number,.dialog-top h2,.access-card h1,.section-title h2,.brand{
  font-family:var(--font-display);
  line-height:var(--lh-tight);
  letter-spacing:-.02em;          /* en em, para que siga a --font-scale */
}
h1{letter-spacing:-.032em}
.brand{letter-spacing:-.01em}

/* -- Cifras ----------------------------------------------------------------
   Figuras tabulares: todas las cifras ocupan lo mismo, asi las columnas de
   Finanzas y las metricas no bailan al cambiar de mes. */
.metric-number,.context-stat b,.context-stat,.finance-summary b,.transaction b,
.bar-row,.status-line,.plan-price,.team-summary-metrics b,.backup-stats b,
.nav-item i,.day-num,#taskCount,.progress-label,td,th{
  font-variant-numeric:tabular-nums;
  font-feature-settings:"tnum" 1;
}
.files{font-family:var(--font-mono);font-size:var(--fs-4)}

/* -- Jerarquia dentro de la tarjeta ---------------------------------------
   Antes casi todo caia en 15-16px con peso 700-850: tres niveles distintos
   se veian iguales. Ahora la diferencia la hacen tamano y peso, no color,
   asi el contraste se mantiene en AA en las 7 paletas. */
.card{line-height:var(--lh-normal)}

/* 1. antetitulo: el nivel mas silencioso */
#eyebrow,.dialog-kicker,.access-kicker,.project-label,.context-view,.settings-heading small{
  font-size:var(--fs-1);
  font-weight:var(--fw-semibold);
  letter-spacing:.09em;
  text-transform:uppercase;
  color:var(--muted);
}

/* 2. titulo de tarjeta: manda dentro del bloque */
.section-title h2,.card h2{
  font-size:var(--fs-6);
  font-weight:var(--fw-bold);
  letter-spacing:-.015em;
  margin:0;
}

/* 3. cifra destacada: el ancla visual de una tarjeta de metrica */
.metric-number{
  font-size:var(--fs-8);
  font-weight:var(--fw-bold);
  letter-spacing:-.03em;
  line-height:1.05;
  margin:.25rem 0 .15rem;
}

/* 4. cuerpo y 5. apoyo: el salto de tamano hace el trabajo */
.task-row,.goal-row{font-size:var(--fs-5)}
/* `.card p` (0,1,1) le ganaba a `.filter` (0,1,0) y subia el secundario a 16px:
   el tamano de cuerpo se declara solo en las filas. */
.card .filter,.filter,.metric-label,.date,.board-card-meta{
  font-size:var(--fs-4);
  font-weight:var(--fw-normal);
  color:var(--muted);
}
/* las etiquetas NO son texto secundario: tienen fondo tenido propio, asi que
   conservan la tinta de acento (--muted sobre ese tinte daba 4.35:1) */
.task-tags span{font-size:var(--fs-3);font-weight:var(--fw-medium)}

/* titulo de fila: mas peso que el cuerpo, mismo tamano; se distingue sin gritar */
.task-row b,.goal-row b,.board-card b,.transaction b,.team-member b{
  font-weight:var(--fw-semibold);
}

/* el h1 de pagina respira mas que antes: era 29px pegado al antetitulo */
/* solo el titulo del dashboard vive junto a botones en una fila de ancho fijo:
   es el unico h1 que de verdad necesita truncar en una linea. Antes la regla
   estaba en el h1 generico y se comia el titular de dos lineas del login. */
#pageTitle{font-size:var(--fs-9);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ===========================================================================
   FOCO VISIBLE — antes habia un solo :focus-visible en toda la app, asi que
   navegar con teclado era casi a ciegas. Un solo anillo para todo lo enfocable,
   con dos capas para que se vea sobre cualquiera de las 7 paletas.
   =========================================================================== */
:where(a,button,input,select,textarea,summary,[tabindex]:not([tabindex="-1"]),
       .nav-item,.chip,.move,.icon-button,.text-button):focus-visible{
  outline:2px solid var(--accent);
  outline-offset:2px;
  border-radius:8px;
  box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 28%,transparent);
}
/* el navegador ya no dibuja su anillo por defecto donde ponemos el nuestro */
:where(a,button,input,select,textarea,summary,[tabindex]):focus:not(:focus-visible){
  outline:none;
}
/* sobre un relleno de marca el anillo indigo se pierde: se invierte */
.primary:focus-visible,.statusbar :focus-visible,.access-logo:focus-visible{
  outline-color:var(--on-accent);
  box-shadow:0 0 0 4px color-mix(in srgb,var(--on-accent) 45%,transparent);
}
/* salto al contenido: existe pero no molesta hasta que se lo enfoca */
.skip-link{
  position:fixed;top:.5rem;left:.5rem;z-index:12001;
  padding:.6rem 1rem;border-radius:10px;
  background:var(--paper);color:var(--ink);
  border:1px solid var(--line);box-shadow:var(--elev-2);
  font-weight:var(--fw-semibold);
  transform:translateY(-160%);
}
.skip-link:focus-visible{transform:none}

/* ===========================================================================
   MOVIMIENTO REDUCIDO — no habia ninguna regla. Quien pide menos movimiento
   por sistema operativo (o por mareo/vestibular) recibia todas las animaciones.
   Se apaga el movimiento pero NO el feedback: los cambios de color y opacidad
   se mantienen, para no perder la senal de "esto respondio".
   =========================================================================== */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms!important;
    animation-iteration-count:1!important;
    transition-duration:.01ms!important;
    scroll-behavior:auto!important;
  }
  /* los que existen solo para moverse se quedan quietos, no invisibles */
  .access-spinner,.realtime-status.live::before{animation:none!important}
  .access-spinner{border-top-color:var(--accent)}
  /* nada de desplazamientos al pasar el mouse ni al abrir paneles */
  .access-google:hover,.install-app-button:hover,.card:hover,.board-card:hover,
  .mobile-sheet,.toast,.primary:hover,.secondary:hover{transform:none!important}
  html{scroll-behavior:auto}
}

/* -- Formularios angostos --------------------------------------------------
   Un hijo de grid tiene min-content como minimo, y un <input> trae un ancho
   intrinseco de ~20 caracteres: en pantallas angostas desborda la columna, y
   como el body movil es overflow:hidden queda recortado y no se puede tocar.
   Solo #itemDialog estaba protegido; esto cubre los otros nueve dialogos. */
.form-grid>*{min-width:0}
.form-grid input,.form-grid select,.form-grid textarea{max-width:100%}
@media (max-width:520px){
  .form-grid{grid-template-columns:1fr}
}

/* ===========================================================================
   ICONOS
   Trazo recto (inglete + terminacion plana) para que rimen con las
   terminaciones de Space Grotesk. El grosor se compensa por tamano: a 16px un
   trazo de 1.75 se ve pesado, a 24px se ve fino.
   =========================================================================== */
.icon{
  width:1.25em; height:1.25em;
  flex:0 0 auto;
  fill:none;
  stroke:currentColor;
  stroke-width:1.75;
  stroke-linecap:butt;
  stroke-linejoin:miter;
  vertical-align:-.25em;
  /* el trazo no debe engordar si el icono se escala */
  vector-effect:non-scaling-stroke;
}
.icon-lg{width:1.5em;height:1.5em;stroke-width:1.6}
.icon-sm{width:1em;height:1em;stroke-width:2}
.has-icon{display:inline-flex;align-items:center;gap:.55em}
button.has-icon,a.has-icon{justify-content:center}

/* en la navegacion el icono manda el ancho, no el glifo */
.nav-item>span:first-child{display:inline-flex;align-items:center;justify-content:center;width:22px;flex:0 0 auto}
.nav-item .icon{width:19px;height:19px;stroke-width:1.7}
/* el contador de tareas no es un icono: no debe heredar el gap */
.nav-item i{margin-left:auto}

/* ===========================================================================
   MOVIMIENTO
   Una sola curva y tres duraciones. El objetivo no es decorar: es que cada
   cambio de estado tenga un origen visible, para que la interfaz se sienta
   operada y no redibujada.
   =========================================================================== */
:root{
  --ease:cubic-bezier(.2,.7,.2,1);   /* arranca rapido, asienta lento */
  --dur-1:110ms;                     /* respuesta directa: hover, press */
  --dur-2:190ms;                     /* cambio de estado */
  --dur-3:300ms;                     /* entrada de contenido */
}

/* -- Entrada de vista ------------------------------------------------------
   Solo cuando cambia de seccion, nunca en cada guardado: render() reescribe
   #view 36 veces desde distintos lugares y animar en todas parpadearia. La
   marca la pone setView() en update6.js y se retira al terminar. */
@keyframes centro-rise{
  from{opacity:0;transform:translateY(9px)}
  to{opacity:1;transform:none}
}
#view[data-enter] > *{animation:centro-rise var(--dur-3) var(--ease) both}
#view[data-enter] > *:nth-child(1){animation-delay:0ms}
#view[data-enter] > *:nth-child(2){animation-delay:45ms}
#view[data-enter] > *:nth-child(3){animation-delay:90ms}
#view[data-enter] > *:nth-child(4){animation-delay:135ms}
#view[data-enter] > *:nth-child(n+5){animation-delay:170ms}
/* dentro de la grilla de metricas el escalonado va tarjeta por tarjeta */
#view[data-enter] .metric-grid > *{animation:centro-rise var(--dur-3) var(--ease) both}
#view[data-enter] .metric-grid > *:nth-child(1){animation-delay:40ms}
#view[data-enter] .metric-grid > *:nth-child(2){animation-delay:80ms}
#view[data-enter] .metric-grid > *:nth-child(3){animation-delay:120ms}
#view[data-enter] .metric-grid > *:nth-child(4){animation-delay:160ms}

/* -- Tarjetas --------------------------------------------------------------
   En reposo se asientan con el borde, no con sombra. Al pasar el mouse sube el
   contraste del borde en vez de moverse: desplazar una tarjeta de datos bajo el
   cursor entorpece la lectura. */
.card{
  box-shadow:var(--elev-1);
  transition:border-color var(--dur-1) var(--ease), box-shadow var(--dur-1) var(--ease);
}
.card:hover{
  border-color:color-mix(in srgb,var(--accent) 26%,var(--line));
  box-shadow:var(--elev-2);
}

/* -- Navegacion ------------------------------------------------------------
   Una barra de acento marca donde estas parado. Crece desde el centro, asi el
   cambio de seccion se lee como un desplazamiento y no como un parpadeo. */
.nav-item{position:relative;transition:background var(--dur-1) var(--ease),color var(--dur-1) var(--ease)}
.nav-item::before{
  content:"";
  position:absolute; left:0; top:50%;
  width:3px; height:0;
  border-radius:0 2px 2px 0;
  background:var(--accent);
  transform:translateY(-50%);
  transition:height var(--dur-2) var(--ease);
}
.nav-item.active::before{height:62%}
.nav-item .icon{transition:transform var(--dur-2) var(--ease)}
.nav-item:hover .icon{transform:translateX(1px)}

/* -- Botones: respuesta fisica --------------------------------------------
   Un boton que se hunde al presionarlo es la diferencia mas barata entre una
   maqueta y una app. 110ms para que se sienta inmediato. */
.primary,.secondary,.text-button,.icon-button,.context-action,.move,
.account-button,.install-app-button,.chip{
  transition:transform var(--dur-1) var(--ease), background var(--dur-1) var(--ease),
             border-color var(--dur-1) var(--ease), box-shadow var(--dur-1) var(--ease),
             color var(--dur-1) var(--ease);
}
.primary:active,.secondary:active,.context-action:active,.move:active,
.account-button:active,.install-app-button:active{transform:scale(.975)}
.text-button:active,.icon-button:active{transform:scale(.92)}
.primary{box-shadow:var(--elev-1)}
.primary:hover{box-shadow:var(--elev-2);background:color-mix(in srgb,var(--accent) 92%,var(--ink))}
.secondary:hover{border-color:color-mix(in srgb,var(--accent) 40%,var(--line));color:var(--ink)}
.icon-button:hover{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-ink)}

/* -- Filas -----------------------------------------------------------------
   Sangria del hover hacia afuera del padding de la tarjeta, para que la fila
   completa se sienta como el objetivo del click. */
.task-row,.goal-row,.team-member,.manage-item{
  transition:background var(--dur-1) var(--ease);
  border-radius:8px;
}
.task-row:hover,.goal-row:hover,.manage-item:hover{
  background:color-mix(in srgb,var(--accent) 5%,transparent);
  box-shadow:0 0 0 8px color-mix(in srgb,var(--accent) 5%,transparent);
}

/* -- Barras de progreso ----------------------------------------------------
   Crecen desde cero al entrar: el ancho es el dato, y verlo llegar hasta ahi
   comunica magnitud mejor que encontrarlo ya dibujado. */
@keyframes centro-grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
#view[data-enter] :is(.progress span,.status-track>span,.status-fill,.budget-progress>span){
  transform-origin:left center;
  animation:centro-grow 520ms var(--ease) both;
}

/* -- Toast -----------------------------------------------------------------
   Entra desde abajo con un asentamiento corto; sale sin ceremonia. */
@keyframes centro-toast-in{
  from{opacity:0;transform:translateY(14px) scale(.97)}
  to{opacity:1;transform:none}
}
.toast.show{animation:centro-toast-in 260ms var(--ease) both}

/* -- Dialogos --------------------------------------------------------------
   Aparecen desde el centro, apenas por debajo: sugiere que salieron de la
   pagina y no que se pegaron encima. */
@keyframes centro-dialog-in{
  from{opacity:0;transform:translateY(8px) scale(.985)}
  to{opacity:1;transform:none}
}
dialog[open]{animation:centro-dialog-in var(--dur-2) var(--ease) both;box-shadow:var(--elev-3)}
dialog::backdrop{animation:centro-fade var(--dur-2) var(--ease) both}
@keyframes centro-fade{from{opacity:0}to{opacity:1}}

/* -- Estado en vivo --------------------------------------------------------
   El punto late solo cuando de verdad hay conexion. Sin conexion se queda
   quieto: una animacion perpetua deja de significar algo. */
.realtime-status.live::before{animation:centro-pulse 2.4s var(--ease) infinite}
@keyframes centro-pulse{
  0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--ok) 55%,transparent)}
  55%{box-shadow:0 0 0 5px color-mix(in srgb,var(--ok) 0%,transparent)}
}

/* ===========================================================================
   DETALLE
   =========================================================================== */
/* radios: cuatro pasos. Antes convivian diecisiete valores distintos. */
:root{--r-1:6px;--r-2:10px;--r-3:14px;--r-4:20px}

/* los separadores de fila terminan en el borde del contenido, no en el de la
   tarjeta: una linea que toca el borde parece un error de recorte */
.card > .task-row:first-of-type,.card > .goal-row:first-of-type{border-top:0}

/* las cifras se alinean por su linea base, no por la caja */
.metric-number{font-variant-numeric:tabular-nums;line-height:1.05}

/* el selector de proyecto es el control mas usado del sidebar: merece indicar
   que es un control, no una etiqueta */
#project{transition:border-color var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease);cursor:pointer}
#project:hover{border-color:color-mix(in srgb,var(--accent) 38%,var(--line))}

/* -- Cambio de tema -------------------------------------------------------
   Al cambiar de paleta cambian de golpe decenas de colores. Si las transiciones
   siguen activas, el navegador arranca a interpolar todas a la vez y las que
   dependen de un token quedan pegadas en el valor viejo: la tarjeta conservaba
   el borde y la sombra del tema anterior. Se apagan durante el cambio y se
   devuelven en el frame siguiente (lo hace applyPreferences en update6.js). */
/* Solo transiciones. Antes también apagaba las animaciones, y applyPreferences corre en
   cada save() y en cada refresco de la nube: al devolverlas, la animación de entrada de
   cualquier diálogo abierto arrancaba de cero desde opacidad 0. Ese era el parpadeo de
   "se apaga un segundo y se prende" con un diálogo encima (medido: centro-dialog-in pasaba
   de terminada a t=0 en cada llamada). Las animaciones no tienen el problema de los colores
   pegados, así que no hace falta tocarlas. */
html.theme-switching *,html.theme-switching *::before,html.theme-switching *::after{
  transition:none!important
}

/* la barra de estado es cromo permanente: no debe competir con el contenido */
.statusbar{box-shadow:none}

/* ===========================================================================
   TIPO DE ESPACIO DE TRABAJO
   Es la unica decision de esta pantalla que no se puede deshacer, y estaba
   dibujada como cuatro pastillas indistintas. Pasa a ser una grilla de opciones
   con su icono, del tamano suficiente para leerse como una eleccion.
   El radio nativo sigue ahi —teclado, lectores de pantalla, envio del form—
   pero no se dibuja: la tarjeta entera es el control.
   =========================================================================== */
.project-type-picker{display:grid;gap:10px;margin:6px 0 2px}
.project-type-picker>small{
  color:var(--muted);
  font-size:var(--fs-1);
  font-weight:var(--fw-semibold);
  letter-spacing:.09em;
  text-transform:uppercase;
}
/* la advertencia importa mas que el titulo: es lo unico irreversible de la pantalla */
.project-type-picker>small b{
  display:block;
  margin-top:3px;
  color:color-mix(in srgb,var(--warn) 62%,var(--ink));
  font-weight:var(--fw-semibold);
  letter-spacing:.02em;
  text-transform:none;
  font-size:var(--fs-3);
}

.project-type-grid{
  display:grid;
  /* auto-fit en vez de dos columnas fijas: el panel va de ~600px a ~200px
     segun el ancho de la tarjeta, y fijas dejaban opciones de 94px. Filas de
     igual altura para que "Creador de contenido", que envuelve, no deje su
     fila mas alta que la de al lado. */
  grid-template-columns:repeat(auto-fit,minmax(158px,1fr));
  grid-auto-rows:1fr;
  gap:9px;
}
.project-type-option{
  position:relative;
  display:grid;
  grid-template-columns:34px minmax(0,1fr);
  align-items:center;
  gap:11px;
  min-height:56px;
  padding:11px 13px;
  border:1px solid var(--line);
  border-radius:var(--r-2);
  background:var(--field);
  color:var(--muted);
  cursor:pointer;
  transition:border-color var(--dur-1) var(--ease), background var(--dur-1) var(--ease),
             color var(--dur-1) var(--ease);
}
/* el radio nativo se conserva por accesibilidad, no se dibuja */
.project-type-option input{
  position:absolute;
  width:1px;height:1px;margin:0;padding:0;
  opacity:0;
  pointer-events:none;
}
.project-type-option .icon{
  width:20px;height:20px;
  justify-self:center;
  color:var(--muted);
  transition:color var(--dur-1) var(--ease), transform var(--dur-2) var(--ease);
}
.project-type-option b{
  font-size:var(--fs-4);
  font-weight:var(--fw-medium);
  line-height:1.25;
  color:var(--ink);
}

.project-type-option:hover{
  border-color:color-mix(in srgb,var(--accent) 38%,var(--line));
  background:color-mix(in srgb,var(--accent) 6%,var(--field));
}
.project-type-option:hover .icon{transform:translateY(-1px)}

/* seleccionado: borde de acento, fondo tenido y el icono encendido. Sin
   marca extra: tres senales para un mismo estado ya son ruido. */
.project-type-option:has(input:checked){
  border-color:var(--accent);
  background:color-mix(in srgb,var(--accent) 13%,var(--field));
}
.project-type-option:has(input:checked) .icon{color:var(--accent-ink)}
.project-type-option:has(input:checked) b{font-weight:var(--fw-semibold)}

/* el foco vive en la tarjeta, no en el radio invisible */
.project-type-option:has(input:focus-visible){
  outline:2px solid var(--accent);
  outline-offset:2px;
}

@media (max-width:560px){
  .project-type-grid{grid-template-columns:1fr}
  .project-type-option{min-height:50px}
}

/* — el resto del panel de onboarding —
   El titular a 52px aplastaba al formulario, que es donde de verdad pasa algo.
   Se lo baja un paso y se le da aire al formulario. */
.onboarding-card .access-card h1,.onboarding-card h1{font-size:clamp(28px,3.6vw,40px)}
.first-project-form{gap:16px}
.first-project-form label{gap:7px}
.first-project-form .primary{min-height:52px;font-size:var(--fs-5)}

/* los pasos del aside son una secuencia real (crear, organizar, compartir), por
   eso el numero se gana el lugar; pero es contexto, no accion: pesa menos. */
.onboarding-preview{gap:8px}
.onboarding-preview div{align-items:center}
.onboarding-preview span{
  font-variant-numeric:tabular-nums;
  font-size:var(--fs-3);
}

/* ===========================================================================
   VISTA PREVIA DEL ESPACIO
   Reemplaza el folleto de tres pasos que ocupaba este panel. Repetia
   informacion ya leida y no hacia nada mientras se completaba el alta.
   Ahora muestra el mismo chrome que va a aparecer en el sidebar —avatar con
   las iniciales, nombre, tipo— y se actualiza a medida que se escribe: el
   panel deja de explicar la app y empieza a mostrarla.
   =========================================================================== */
.onboarding-preview>.access-kicker{margin:0 0 2px}

.space-card{
  display:grid;
  grid-template-columns:34px minmax(0,1fr);
  align-items:center;
  column-gap:12px;
  padding:14px;
  border:1px solid var(--line);
  border-radius:var(--r-3);
  background:var(--sidebar);
}
.space-card-copy{display:grid;gap:2px;min-width:0}
.space-card .avatar{
  width:34px;height:34px;
  border-radius:var(--r-2);
  font-size:var(--fs-3);
  transition:background var(--dur-2) var(--ease), color var(--dur-2) var(--ease);
}
.space-card b{
  font-size:var(--fs-5);
  font-weight:var(--fw-semibold);
  color:var(--ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.space-card small{
  color:var(--muted);
  font-size:var(--fs-3);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
/* mientras no hay nombre el hueco se muestra como hueco, no como un dato */
.space-card b.is-empty{color:var(--muted);font-weight:var(--fw-normal);font-style:italic}
.space-card .avatar.is-empty{
  background:transparent;
  border:1px dashed var(--line);
  color:var(--muted);
}
.space-note{
  margin:0;
  color:var(--muted);
  font-size:var(--fs-4);
  line-height:1.5;
}

/* ===========================================================================
   PROXIMAMENTE (calendario)
   Son las entregas que vienen: el orden por fecha ES el dato. Estaba en una
   grilla de tres columnas, que lo destruye —no se sabe si se lee por filas o
   por columnas— y ademas metia cada .task-row, que es una fila horizontal, en
   una celda de 216px: el titulo se partia en hasta seis lineas y la etiqueta
   de prioridad terminaba encima del texto. Vuelve a ser una lista.
   =========================================================================== */
.calendar-wrap aside .upcoming,.upcoming{
  display:grid;
  grid-template-columns:1fr;
  gap:0;
}
/* la fila necesita poder encogerse; sin esto el bloque de texto impone su
   min-content y vuelve a empujar la etiqueta encima */
.upcoming .task-row{gap:12px}
.upcoming .task-copy{min-width:0;flex:1 1 auto}
.upcoming .task-copy b{display:block;overflow-wrap:anywhere}
.upcoming .tag,.upcoming .row-actions{flex:0 0 auto}
/* en el aside angosto del calendario la prioridad pasa debajo del titulo en
   lugar de robarle ancho */
@media (max-width:900px){
  .upcoming .task-row{flex-wrap:wrap}
  .upcoming .tag{order:3}
}

/* aclaracion del campo de intervalo: el dia lo define la fecha, no este numero */
.finance-recurrence-hint{margin:2px 0 0;color:var(--muted);font-size:var(--fs-3);line-height:1.45}

/* -- Anotar ideas -----------------------------------------------------------
   Anotar tiene que costar lo mismo que un mensaje de WhatsApp: un campo grande,
   Enter y listo, sin cerrar el diálogo. A la izquierda los proyectos con su logo
   (dónde va la idea), abajo la bandeja para organizar después. */
.idea-dialog{width:min(980px,96vw);max-height:90vh}
/* sin <form> a propósito: el guard de modo lectura frena todo submit, y eso impediría anotar en otro proyecto */
.idea-dialog-body{display:flex;flex-direction:column;max-height:calc(90vh - 4px);padding:26px;box-sizing:border-box}
.idea-layout{display:grid;grid-template-columns:250px minmax(0,1fr);gap:24px;min-height:0;flex:1}
.idea-projects{display:flex;flex-direction:column;gap:4px;overflow:auto;padding-right:6px;border-right:1px solid var(--line)}
.idea-project{display:grid;grid-template-columns:36px minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;padding:7px 10px 7px 7px;border:1px solid transparent;border-radius:12px;background:none;color:var(--ink);font:inherit;font-size:var(--fs-4);font-weight:var(--fw-semibold);text-align:left;cursor:pointer}
.idea-project:hover{background:color-mix(in srgb,var(--accent) 6%,var(--paper))}
.idea-project.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--paper));color:var(--accent-ink)}
.idea-project.target{border-color:var(--line);border-style:dashed}
.idea-project-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.idea-project i{min-width:22px;padding:1px 7px;border-radius:999px;background:color-mix(in srgb,var(--accent) 14%,var(--paper));color:var(--accent-ink);font-size:var(--fs-2);font-style:normal;font-weight:var(--fw-bold);text-align:center}
.idea-mark{display:grid;place-items:center;flex:0 0 auto;width:36px;height:36px;border-radius:10px;overflow:hidden;background:color-mix(in srgb,var(--project-color) 20%,var(--paper));color:var(--ink);font-size:var(--fs-2);font-weight:var(--fw-bold)}
.idea-mark img{width:100%;height:100%;object-fit:cover;background:#fff}
.idea-mark.big{width:30px;height:30px;border-radius:9px}
.idea-mark.all{background:var(--accent);color:var(--on-accent)}
.idea-main{display:flex;flex-direction:column;min-width:0;min-height:0}
.idea-target{display:flex;align-items:center;gap:9px;margin-bottom:10px;font-size:var(--fs-5)}
.idea-target-label{color:var(--muted);font-size:var(--fs-3)}
.idea-target b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.idea-capture{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:end}
.idea-capture textarea{width:100%;box-sizing:border-box;min-height:104px;resize:vertical;font:inherit;font-size:var(--fs-6);line-height:1.45;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:14px 16px}
.idea-capture textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}
.idea-capture .primary{padding-inline:22px}
.idea-hint{margin:6px 2px 0;min-height:1.4em;font-size:var(--fs-2);color:var(--muted)}
.idea-hint.ok{color:var(--accent-ink);font-weight:var(--fw-semibold)}
.idea-inbox{display:flex;flex-direction:column;min-height:0;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.idea-inbox-head{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:var(--fs-5)}
.idea-inbox-head span{min-width:22px;padding:1px 8px;border-radius:999px;background:color-mix(in srgb,var(--accent) 12%,var(--paper));color:var(--accent-ink);font-size:var(--fs-2);font-weight:var(--fw-bold);text-align:center}
.idea-inbox-head span:empty{display:none}
.idea-list{overflow:auto;min-height:120px}
.idea-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:start;padding:12px 0;border-bottom:1px solid var(--line)}
.idea-row:has(> .idea-mark){grid-template-columns:36px minmax(0,1fr) auto}
.idea-row:last-child{border-bottom:0}
.idea-row-project{display:block;margin-bottom:2px;color:var(--muted);font-size:var(--fs-2);font-weight:var(--fw-bold);letter-spacing:.4px;text-transform:uppercase}
.idea-body p{margin:0 0 3px;white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--fs-5);line-height:1.45;color:var(--ink)}
.idea-body small{color:var(--muted);font-size:var(--fs-2)}
.idea-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center;justify-content:flex-end}
.idea-actions .secondary{padding:6px 12px;font-size:var(--fs-3)}
.idea-move{position:relative}
.idea-move span{display:none}
.idea-move select{max-width:130px;padding:6px 8px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink);font:inherit;font-size:var(--fs-3)}
.idea-undo{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:6px 0;padding:8px 12px;border-radius:9px;background:color-mix(in srgb,var(--warn) 14%,var(--paper));font-size:var(--fs-3)}
.idea-empty{margin:8px 0;color:var(--muted);font-size:var(--fs-4);line-height:1.5}
.idea-strip{display:flex;align-items:center;gap:12px;width:100%;margin:0 0 14px;padding:12px 14px;border:1px dashed color-mix(in srgb,var(--accent) 45%,var(--line));border-radius:12px;background:color-mix(in srgb,var(--accent) 5%,var(--paper));color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.idea-strip:hover{border-style:solid}
.idea-strip-mark{display:grid;place-items:center;flex:0 0 auto;width:34px;height:34px;border-radius:10px;background:var(--accent);color:var(--on-accent)}
.idea-strip-copy{display:grid;flex:1;gap:2px}
.idea-strip-copy b{font-size:var(--fs-4)}
.idea-strip-copy small{color:var(--muted);font-size:var(--fs-3)}
.idea-strip-go{color:var(--accent-ink);font-size:var(--fs-3);font-weight:var(--fw-bold)}
@media(max-width:760px){
  .idea-dialog-body{padding:20px 16px}
  .idea-layout{grid-template-columns:1fr;gap:12px}
  /* en el celular los proyectos pasan a una fila de logos que se desliza */
  .idea-projects{flex-direction:row;overflow-x:auto;overflow-y:hidden;padding:2px 0 8px;border-right:0;scrollbar-width:none}
  .idea-projects::-webkit-scrollbar{display:none}
  .idea-project{grid-template-columns:auto;justify-items:center;gap:4px;width:78px;flex:0 0 78px;padding:8px 4px;position:relative;font-size:var(--fs-2);text-align:center}
  .idea-project .idea-mark{width:42px;height:42px;border-radius:12px}
  .idea-project-name{max-width:70px}
  .idea-project i{position:absolute;top:2px;right:6px}
  .idea-capture{grid-template-columns:1fr}
  .idea-capture .primary{width:100%}
  .idea-capture textarea{min-height:88px}
  .idea-row,.idea-row:has(> .idea-mark){grid-template-columns:auto minmax(0,1fr)}
  .idea-row>.idea-actions{grid-column:1/-1;justify-content:flex-start}
  .idea-row:not(:has(> .idea-mark))>.idea-body{grid-column:1/-1}
}

/* -- Panel general (multiproyecto) -------------------------------------------
   Es de la cuenta, no de un proyecto: ocupa la pantalla entera en vez de flotar sobre
   la vista. El color de cada proyecto sale de su paleta de marca (--project-color) y es
   lo que lo identifica en las tres vistas y en el tablero. */
dialog.multi-dialog{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0;border-radius:0;inset:0}
dialog.multi-dialog::backdrop{background:var(--bg)}
.multi-shell{display:flex;flex-direction:column;height:100%;padding:22px clamp(16px,3vw,40px) 18px;box-sizing:border-box}
.multi-bar{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding-bottom:14px;margin-bottom:16px;border-bottom:1px solid var(--line)}
.multi-title{margin-right:auto}
.multi-title h2{margin:2px 0 0;font-size:var(--fs-8)}
.multi-tabs{display:inline-flex;gap:4px}
.multi-tab{border:0;border-bottom:2px solid transparent;background:none;color:var(--muted);font:inherit;font-size:var(--fs-5);font-weight:var(--fw-semibold);padding:8px 12px;cursor:pointer}
.multi-tab.on{color:var(--accent-ink);border-bottom-color:var(--accent)}
.multi-views{display:inline-flex;gap:2px;padding:3px;border:1px solid var(--line);border-radius:11px;background:var(--paper)}
.multi-views[hidden]{display:none}
.multi-views button{border:0;background:none;color:var(--muted);font:inherit;font-size:var(--fs-3);font-weight:var(--fw-semibold);padding:6px 12px;border-radius:8px;cursor:pointer}
.multi-views button.on{background:var(--accent);color:var(--on-accent)}
.multi-body{flex:1;min-height:0;overflow:auto}
.multi-totals{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:10px}
.multi-totals>div{display:grid;gap:4px;padding:16px 18px;border:1px solid var(--line);border-radius:14px;background:var(--paper)}
.multi-totals b{font-family:var(--font-display);font-size:var(--fs-9);line-height:1}
.multi-totals span{color:var(--muted);font-size:var(--fs-3)}
.multi-totals .alert b{color:var(--danger-ink)}
.multi-help{margin:8px 0 14px;color:var(--muted);font-size:var(--fs-3)}
.multi-muted{color:var(--muted);font-size:var(--fs-3)}
.multi-mark{display:grid;place-items:center;flex:0 0 auto;width:40px;height:40px;border-radius:11px;overflow:hidden;background:color-mix(in srgb,var(--project-color) 18%,var(--paper));color:var(--ink);font-size:var(--fs-3);font-weight:var(--fw-bold)}
.multi-mark.big{width:58px;height:58px;border-radius:15px;font-size:var(--fs-5)}
.multi-mark img{width:100%;height:100%;object-fit:cover;background:#fff}
.multi-name{display:grid;gap:2px;min-width:0}
.multi-name b{font-size:var(--fs-5);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.multi-name small,.multi-stat small,.multi-next small,.multi-goals small{color:var(--muted);font-size:var(--fs-2)}
.multi-rank{display:grid;justify-items:center}
.multi-rank b{font-size:var(--fs-5);line-height:1.1}
.multi-rank .icon-button{padding:0 6px;font-size:var(--fs-1);line-height:1.5}
.multi-rank .icon-button:disabled{opacity:.25;cursor:default}
.multi-stat{display:grid;gap:1px}
.multi-stat b{font-family:var(--font-display);font-size:var(--fs-7);line-height:1.1}
.multi-stat.alert b{color:var(--danger-ink)}
.multi-next{display:grid;gap:2px;min-width:0}
.multi-next span{font-size:var(--fs-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.multi-goals{display:grid;gap:5px}
.multi-progress{height:7px;border-radius:99px;background:color-mix(in srgb,var(--project-color) 14%,var(--line));overflow:hidden}
.multi-progress span{display:block;height:100%;background:var(--project-color);border-radius:inherit}
.multi-open{display:flex;flex-wrap:wrap;gap:6px;align-items:center;justify-content:flex-end}

/* grilla */
.multi-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;padding-bottom:12px}
.multi-tile{display:grid;gap:16px;align-content:start;padding:20px;border:1px solid var(--line);border-top:5px solid var(--project-color);border-radius:16px;background:var(--paper)}
.multi-tile.active{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 30%,transparent)}
.multi-tile-top{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:center}
.multi-tile-top .multi-name b{font-size:var(--fs-6)}
.multi-tile-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:12px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.multi-tile .multi-open{justify-content:flex-start}
.multi-tile .multi-open .secondary{margin-left:auto}

/* lista */
.multi-list{display:grid;gap:8px;padding-bottom:12px}
.multi-project{display:grid;grid-template-columns:28px 40px minmax(140px,1.4fr) 76px 76px minmax(150px,1.6fr) minmax(150px,1.3fr) 230px;gap:14px;align-items:center;padding:12px 14px 12px 10px;border:1px solid var(--line);border-left:5px solid var(--project-color);border-radius:13px;background:var(--paper)}
.multi-project.active{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 22%,transparent)}
.multi-project>.multi-stat{text-align:center}

/* universo: siempre de noche, en cualquier tema */
.multi-dialog.is-universe .multi-body{display:flex;overflow:hidden}
.multi-universe{position:relative;flex:1;min-height:440px;border-radius:20px;overflow:hidden;background:radial-gradient(ellipse 80% 70% at 50% 50%,#161d44 0%,#0a0e24 55%,#05070f 100%)}
.universe-svg{display:block;width:100%;height:100%}
.orbit{fill:none;stroke:#9aa8ff;stroke-opacity:.2;stroke-width:1.5;stroke-dasharray:3 9}
.sun{filter:drop-shadow(0 0 18px #ffb64f)}
.sun-label{fill:#5c2c00;font-family:var(--font-display);font-size:22px;font-weight:700}
.planet{cursor:pointer;outline:none}
.planet-halo{transition:opacity .25s var(--ease)}
.planet:hover .planet-halo,.planet:focus-visible .planet-halo{opacity:.34}
.planet:focus-visible .planet-track{stroke-opacity:.9;stroke:#fff}
.planet.selected .planet-halo{opacity:.42}
.planet.selected .planet-track{stroke-opacity:.75}
.planet-initials{fill:#fff;font-family:var(--font-display);font-weight:700;letter-spacing:.5px}
.planet-name{fill:#f3f5ff;font-family:var(--font-display);font-size:21px;font-weight:700;paint-order:stroke;stroke:#05070f;stroke-width:5px;stroke-opacity:.55}
.planet-sub{fill:#b4bce0;font-size:15px;paint-order:stroke;stroke:#05070f;stroke-width:4px;stroke-opacity:.5}
.planet-moon text{fill:#fff;font-weight:700}
.stars .twinkle{animation:centro-twinkle 3.6s ease-in-out infinite}
@keyframes centro-twinkle{50%{opacity:.08}}
.universe-legend{position:absolute;left:18px;bottom:14px;display:flex;flex-wrap:wrap;gap:6px 16px;margin:0;color:#c3cbee;font-size:var(--fs-2)}
.universe-legend .moon-key::before{content:"";display:inline-block;width:8px;height:8px;margin-right:6px;border-radius:50%;background:#e5484d}
.planet-card{position:absolute;top:18px;right:18px;display:grid;gap:14px;width:min(340px,calc(100% - 36px));padding:18px;border:1px solid var(--line);border-top:5px solid var(--project-color);border-radius:16px;background:var(--paper);color:var(--ink);box-shadow:var(--elev-3)}
.planet-card .close{position:absolute;top:10px;right:10px;width:34px;height:34px}
.planet-card .multi-tile-top{grid-template-columns:auto minmax(0,1fr);padding-right:30px}
.planet-card .multi-open{justify-content:flex-start}
.planet-card .multi-open .secondary{margin-left:auto}

/* tablero */
.multi-filters{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.multi-filter{border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:999px;padding:6px 14px;font:inherit;font-size:var(--fs-3);font-weight:var(--fw-semibold);cursor:pointer}
.multi-filter.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--paper));color:var(--accent-ink)}
.multi-filter.project{border-color:var(--project-color);border-left-width:5px}
.multi-board{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}
.multi-column{display:grid;gap:10px;padding:14px;border-radius:16px;background:color-mix(in srgb,var(--line) 35%,var(--paper))}
.multi-column-head{display:flex;justify-content:space-between;align-items:center;font-size:var(--fs-5)}
.multi-column-head span{color:var(--muted);font-weight:var(--fw-bold)}
.multi-card{display:grid;gap:5px;width:100%;padding:12px 14px;border:1px solid var(--line);border-left:5px solid var(--project-color);border-radius:11px;background:var(--paper);color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.multi-card:hover{border-color:var(--accent);border-left-color:var(--project-color)}
.multi-card-project{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:var(--fs-2);font-weight:var(--fw-bold);letter-spacing:.4px;text-transform:uppercase}
.multi-card-mark{display:grid;place-items:center;width:20px;height:20px;border-radius:6px;overflow:hidden;background:color-mix(in srgb,var(--project-color) 20%,var(--paper));color:var(--ink);font-size:9px;font-style:normal;letter-spacing:0}
.multi-card-mark img{width:100%;height:100%;object-fit:cover;background:#fff}
.multi-card b{font-size:var(--fs-4);font-weight:var(--fw-semibold);line-height:1.35;overflow-wrap:anywhere}
.multi-card-meta{display:flex;gap:8px;align-items:center}
.multi-card-meta small{color:var(--muted);font-size:var(--fs-2)}
.multi-card-meta small.late{color:var(--danger-ink);font-weight:var(--fw-semibold)}
.multi-empty{margin:4px 0;color:var(--muted);font-size:var(--fs-3)}

@media(prefers-reduced-motion:reduce){.stars .twinkle{animation:none}}
@media(max-width:1180px){
  .multi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .multi-project{grid-template-columns:28px 40px minmax(0,1fr) 64px 64px;grid-template-areas:"rank mark name pend late" "rank next next next next" "rank goals goals goals goals" "rank open open open open";row-gap:10px}
  .multi-project>:nth-child(1){grid-area:rank}.multi-project>:nth-child(2){grid-area:mark}.multi-project>:nth-child(3){grid-area:name}
  .multi-project>:nth-child(4){grid-area:pend}.multi-project>:nth-child(5){grid-area:late}.multi-project>:nth-child(6){grid-area:next}
  .multi-project>:nth-child(7){grid-area:goals}.multi-project>:nth-child(8){grid-area:open;justify-content:flex-start}
}
@media(max-width:700px){
  .multi-shell{padding:16px 14px 12px}
  .multi-bar{gap:10px}
  .multi-bar{position:relative}
  .multi-title{width:100%;margin-right:0;padding-right:52px;box-sizing:border-box}
  .multi-bar>.close{position:absolute;top:0;right:0}
  .multi-totals{grid-template-columns:repeat(2,minmax(0,1fr))}
  .multi-grid,.multi-board{grid-template-columns:1fr}
  .multi-universe{min-height:360px;border-radius:14px}
  .multi-dialog.is-universe .multi-universe{display:flex;flex-direction:column}
  .universe-legend{position:static;padding:0 14px 12px}
  .planet-card{top:auto;bottom:12px;right:12px;left:12px;width:auto}
}

/* -- Centro de control ---------------------------------------------------------
   El Panel general con un menú de 6 secciones a la izquierda (arriba y deslizable en el
   celular). Los colores de gravedad de las alertas salen de los tokens de estado. */
.cc-layout{display:grid;grid-template-columns:210px minmax(0,1fr);gap:24px;flex:1;min-height:0}
.cc-nav{display:flex;flex-direction:column;gap:3px;padding-right:14px;border-right:1px solid var(--line);overflow:auto}
.cc-nav-item{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:10px 12px;border:0;border-left:3px solid transparent;border-radius:0 10px 10px 0;background:none;color:var(--ink);font:inherit;font-size:var(--fs-4);font-weight:var(--fw-semibold);text-align:left;cursor:pointer}
.cc-nav-item:hover{background:color-mix(in srgb,var(--accent) 6%,var(--paper))}
.cc-nav-item.on{border-left-color:var(--accent);background:color-mix(in srgb,var(--accent) 11%,var(--paper));color:var(--accent-ink)}
.cc-nav-item i{min-width:22px;padding:1px 7px;border-radius:999px;background:color-mix(in srgb,var(--accent) 14%,var(--paper));color:var(--accent-ink);font-size:var(--fs-2);font-style:normal;font-weight:var(--fw-bold);text-align:center}
.cc-nav-item i.bad{background:var(--danger);color:#fff}
.cc-nav-item i.lock{background:none;color:var(--muted)}
.cc-nav-item i.soon{background:none;color:var(--muted);font-weight:var(--fw-semibold)}
.cc-main{display:flex;flex-direction:column;min-width:0;min-height:0}
.cc-head{margin-bottom:14px}
.cc-head h3{margin:0;font-family:var(--font-display);font-size:var(--fs-7)}
.cc-head p{margin:3px 0 0;color:var(--muted);font-size:var(--fs-4)}
.cc-loading{color:var(--muted)}
.cc-guide{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px;padding:14px 18px;border:1px dashed color-mix(in srgb,var(--accent) 45%,var(--line));border-radius:14px;background:color-mix(in srgb,var(--accent) 5%,var(--paper))}
.cc-guide ol{margin:8px 0 0;padding-left:20px;display:grid;gap:4px;font-size:var(--fs-4);line-height:1.5}
.cc-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}
.cc-kpi{display:grid;gap:3px;padding:16px 18px;border:1px solid var(--line);border-radius:14px;background:var(--paper)}
.cc-kpi small{color:var(--muted);font-size:var(--fs-2);font-weight:var(--fw-bold);letter-spacing:.6px;text-transform:uppercase}
.cc-kpi b{font-family:var(--font-display);font-size:var(--fs-9);line-height:1.05}
.cc-kpi span{color:var(--muted);font-size:var(--fs-3)}
.cc-kpi.ok b{color:var(--ok)}
.cc-kpi.warn b{color:var(--warn)}
.cc-kpi.bad b{color:var(--danger-ink)}
.cc-two{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:16px;align-items:start}
.cc-stack{display:grid;gap:16px;min-width:0}
.cc-card{padding:16px 18px;border:1px solid var(--line);border-radius:14px;background:var(--paper);min-width:0}
.cc-card h3{margin:0 0 12px;font-family:var(--font-display);font-size:var(--fs-6)}
.cc-list{display:grid;gap:7px}
.cc-alert{display:grid;gap:2px;width:100%;padding:10px 14px;border:1px solid var(--line);border-left:5px solid var(--sev,var(--accent));border-radius:10px;background:color-mix(in srgb,var(--line) 18%,var(--paper));color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.cc-alert:hover{border-color:var(--accent);border-left-color:var(--sev,var(--accent))}
.cc-alert b{font-size:var(--fs-4);font-weight:var(--fw-semibold);overflow-wrap:anywhere}
.cc-alert small{color:var(--muted);font-size:var(--fs-3)}
.cc-alert.bad{--sev:var(--danger)}
.cc-alert.warn{--sev:var(--warn)}
.cc-alert.info{--sev:var(--accent)}
.cc-goal{display:grid;gap:5px;padding:9px 0;border-bottom:1px solid var(--line)}
.cc-goal:last-of-type{border-bottom:0}
.cc-goal>div:first-child{display:flex;justify-content:space-between;gap:10px}
.cc-goal b{font-weight:var(--fw-semibold);font-size:var(--fs-4)}
.cc-goal span{color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-3);white-space:nowrap}
.cc-goal small{color:var(--muted);font-size:var(--fs-2)}
.cc-bar{height:7px;border-radius:99px;background:color-mix(in srgb,var(--line) 70%,var(--paper));overflow:hidden}
.cc-bar i{display:block;height:100%;border-radius:inherit;background:var(--accent)}
.cc-bar.ok i{background:var(--ok)}
.cc-review{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px 0;border-top:1px solid var(--line)}
.cc-review span{display:grid;gap:2px}
.cc-review small{color:var(--muted);font-size:var(--fs-3)}
.cc-review input{padding:7px 9px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink);font:inherit}
.cc-locked{display:grid;justify-items:start;gap:10px;max-width:640px;padding:26px;border:1px solid var(--line);border-radius:16px;background:var(--paper)}
.cc-locked h3{margin:0;font-family:var(--font-display);font-size:var(--fs-7)}
.cc-locked p{margin:0;font-size:var(--fs-4);line-height:1.55}
.cc-locked ul{margin:0;padding-left:20px;display:grid;gap:4px;font-size:var(--fs-4)}
.cc-locked-mark{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:color-mix(in srgb,var(--accent) 12%,var(--paper));color:var(--accent-ink)}
.multi-dialog.is-universe .cc-main .multi-body{display:flex;overflow:hidden}
@media(max-width:1100px){.cc-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.cc-two{grid-template-columns:minmax(0,1fr)}}
@media(max-width:820px){
  .cc-layout{grid-template-columns:minmax(0,1fr);gap:12px}
  .cc-nav{flex-direction:row;overflow-x:auto;padding:0 0 4px;border-right:0;border-bottom:1px solid var(--line);scrollbar-width:none}
  .cc-nav::-webkit-scrollbar{display:none}
  .cc-nav-item{flex:0 0 auto;width:auto;border-left:0;border-bottom:3px solid transparent;border-radius:10px 10px 0 0;white-space:nowrap}
  .cc-nav-item.on{border-bottom-color:var(--accent)}
}
@media(max-width:520px){.cc-kpis{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.cc-kpi{padding:12px 14px}.cc-kpi b{font-size:var(--fs-8)}}

/* Centro de control · etapa 2: tablero de 3 columnas, tabla de proyectos y medidor de foco */
.cc-toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px 16px;margin-bottom:12px}
.cc-toolbar label,.cc-quick label{display:grid;gap:4px;color:var(--muted);font-size:var(--fs-2);font-weight:var(--fw-semibold)}
.cc-toolbar select,.cc-quick input,.cc-quick select,.cc-task input,.cc-task select,.cc-task textarea,.cc-table input,.cc-table select,.cc-tope input{min-width:0;padding:7px 9px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink);font:inherit;font-size:var(--fs-3)}
.cc-toolbar .multi-filters{margin:0}
.cc-check{display:flex!important;flex-direction:row;align-items:center;gap:7px!important;color:var(--ink)!important;font-size:var(--fs-3)!important;padding-bottom:7px}
.cc-quick{display:grid;grid-template-columns:minmax(200px,2fr) minmax(150px,1fr) 110px 150px auto;gap:10px;align-items:end;margin-bottom:14px;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--paper)}
.cc-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:start}
.cc-task{display:grid;gap:7px;padding:11px 13px;border:1px solid var(--line);border-left:5px solid var(--prio,var(--muted));border-radius:11px;background:var(--paper);min-width:0}
.cc-task.p-high{--prio:var(--danger)}
.cc-task.p-medium{--prio:var(--warn)}
.cc-task.p-low{--prio:color-mix(in srgb,var(--muted) 60%,var(--line))}
.cc-task.done .cc-task-title{text-decoration:line-through;color:var(--muted)}
.cc-task-title{font-size:var(--fs-4);font-weight:var(--fw-semibold);line-height:1.35;overflow-wrap:anywhere}
.cc-task-meta{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center;color:var(--muted);font-size:var(--fs-2)}
.cc-task-meta .late{color:var(--danger-ink);font-weight:var(--fw-bold)}
.cc-chip{display:inline-flex;align-items:center;gap:6px;padding:2px 9px 2px 3px;border:1px solid color-mix(in srgb,var(--project-color) 45%,var(--line));border-radius:999px;color:var(--ink);font-weight:var(--fw-semibold)}
.cc-task-done-when{margin:0;color:var(--muted);font-size:var(--fs-3);line-height:1.45}
.cc-task-done-when b{color:var(--ink)}
.cc-task-actions{display:flex;justify-content:space-between;align-items:center;gap:6px}
.cc-task-actions>div{display:flex;gap:4px}
.cc-task-actions button{padding:4px 10px;border:1px solid var(--line);border-radius:8px;background:color-mix(in srgb,var(--line) 18%,var(--paper));color:var(--ink);font:inherit;font-size:var(--fs-2);cursor:pointer}
.cc-task-actions button:disabled{opacity:.3;cursor:default}
.cc-task-actions button:hover:not(:disabled){border-color:var(--accent)}
.cc-task.editing{gap:9px}
.cc-task.editing label{display:grid;gap:4px;color:var(--muted);font-size:var(--fs-2);font-weight:var(--fw-semibold)}
.cc-task.editing textarea{resize:vertical}
.cc-task-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}
button.cc-remove{border:0;background:none;color:var(--muted);font:inherit;font-size:var(--fs-3);padding:4px 8px;border-radius:8px;cursor:pointer}
button.cc-remove:hover{color:var(--danger-ink)}
button.cc-remove.armed{background:color-mix(in srgb,var(--danger) 14%,var(--paper));color:var(--danger-ink);font-weight:var(--fw-bold)}
.cc-meter{display:grid;gap:10px;margin-bottom:14px}
.cc-meter-top{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}
.cc-meter-top b{font-size:var(--fs-5)}
.cc-pill{padding:2px 10px;border:1px solid var(--line);border-radius:999px;font-size:var(--fs-2);font-weight:var(--fw-bold)}
.cc-pill.ok{border-color:var(--ok);color:var(--ok)}
.cc-pill.warn{border-color:var(--warn);color:var(--warn)}
.cc-tope{display:flex!important;align-items:center;gap:8px;margin-left:auto;color:var(--muted);font-size:var(--fs-3)}
.cc-tope input{width:64px;text-align:center}
.cc-bar.warn i{background:var(--warn)}
.cc-table-wrap{overflow-x:auto}
.cc-table{width:100%;min-width:1320px;border-collapse:collapse}
.cc-table th{padding:6px 8px;border-bottom:1px solid var(--line);color:var(--muted);font-size:var(--fs-2);font-weight:var(--fw-bold);letter-spacing:.5px;text-align:left;text-transform:uppercase;white-space:nowrap}
.cc-table td{padding:7px 6px;border-bottom:1px solid var(--line);vertical-align:middle}
.cc-table tr:last-child td{border-bottom:0}
.cc-table select,.cc-table input{width:100%}
.cc-table td:nth-child(1){min-width:220px}
.cc-table td:nth-child(2){min-width:125px}
.cc-table td:nth-child(3){min-width:155px}
.cc-table td:nth-child(4){min-width:165px}
.cc-table td:nth-child(5){min-width:130px}
.cc-table td:nth-child(6){min-width:120px}
.cc-table td:nth-child(7){min-width:190px}
.cc-table td:nth-child(8){min-width:150px}
.cc-pname{display:flex;align-items:center;gap:10px;min-width:0}
.cc-pname>span:last-child{display:grid;gap:2px;min-width:0;flex:1}
.cc-pname b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cc-pname small{color:var(--muted);font-size:var(--fs-2)}
.multi-mark.piece{background:color-mix(in srgb,var(--muted) 16%,var(--paper));color:var(--muted)}
.cc-days{display:block;margin-top:3px;color:var(--muted);font-size:var(--fs-2)}
.cc-days.warn{color:var(--warn)}
.cc-days.bad{color:var(--danger-ink);font-weight:var(--fw-semibold)}
.cc-table select[data-v="verde"]{border-color:var(--ok);color:var(--ok)}
.cc-table select[data-v="amarillo"]{border-color:var(--warn);color:var(--warn)}
.cc-table select[data-v="rojo"]{border-color:var(--danger);color:var(--danger-ink)}
.cc-table-foot{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin-top:14px}
.cc-table-foot p{margin:0}
.cc-note{margin:0 0 12px;padding:12px 14px;border:1px dashed var(--line);border-radius:12px;color:var(--muted);font-size:var(--fs-3)}
@media(max-width:1100px){.cc-quick{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.cc-quick .grow{grid-column:1/-1}}
@media(max-width:900px){.cc-board{grid-template-columns:minmax(0,1fr)}}
/* En el celular la tabla se muestra como una tarjeta por proyecto */
@media(max-width:760px){
  .cc-table{min-width:0}
  .cc-table thead{display:none}
  .cc-table,.cc-table tbody,.cc-table tr,.cc-table td{display:block;width:100%}
  .cc-table tr{display:grid;grid-template-columns:1fr 1fr;gap:8px 10px;padding:12px 0;border-bottom:1px solid var(--line)}
  .cc-table td{padding:0;border:0;min-width:0!important}
  .cc-table td:nth-child(1),.cc-table td:nth-child(7){grid-column:1/-1}
  .cc-table td[data-label]:not([data-label=""])::before{content:attr(data-label);display:block;margin-bottom:3px;color:var(--muted);font-size:var(--fs-1);font-weight:var(--fw-bold);letter-spacing:.5px;text-transform:uppercase}
  .cc-table td:nth-child(1)::before{display:none!important}
  .cc-tope{margin-left:0}
}

/* Centro de control · etapa 3: indicadores, decisiones e infraestructura */
.cc-main .multi-body>.cc-card+.cc-card{margin-top:16px}
.cc-kr{display:grid;grid-template-columns:minmax(180px,2fr) auto minmax(150px,1.4fr) auto auto;gap:12px;align-items:center;padding:11px 0;border-bottom:1px solid var(--line)}
.cc-kr:last-of-type{border-bottom:0}
.cc-kr input,.cc-dec input,.cc-dec textarea,.cc-dec select,.cc-reviews input,.cc-renewal-box select{min-width:0;padding:7px 9px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink);font:inherit;font-size:var(--fs-3)}
.cc-step{display:flex;align-items:center;gap:6px}
.cc-step input{width:118px;text-align:center;font-family:var(--font-mono)}
.cc-step button{width:32px;height:32px;border:1px solid var(--line);border-radius:9px;background:color-mix(in srgb,var(--line) 18%,var(--paper));color:var(--ink);font-size:var(--fs-6);line-height:1;cursor:pointer}
.cc-step button:hover{border-color:var(--accent)}
.cc-kr-bar{display:grid;gap:4px}
.cc-kr-bar small{color:var(--muted);font-size:var(--fs-2)}
.cc-kr-meta{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:var(--fs-3);white-space:nowrap}
.cc-kr-meta input{width:118px;font-family:var(--font-mono)}
.cc-reviews{display:flex;flex-wrap:wrap;gap:16px;margin-top:10px}
.cc-reviews label{display:grid;gap:4px;color:var(--muted);font-size:var(--fs-3);font-weight:var(--fw-semibold)}
.cc-reviews small{font-weight:var(--fw-normal)}
.cc-dec-add{grid-template-columns:150px minmax(200px,2fr) minmax(160px,1.4fr) 150px auto;margin-bottom:0;border:0;padding:0}
.cc-dec{display:grid;grid-template-columns:150px minmax(0,1fr) 150px auto;gap:12px;align-items:start;padding:12px 0;border-bottom:1px solid var(--line)}
.cc-dec:last-of-type{border-bottom:0}
.cc-dec-body{display:grid;gap:6px;min-width:0}
.cc-dec textarea{resize:vertical;min-height:44px}
.cc-dec select[data-v="aprobada"],.cc-infra select[data-v="ok"]{border-color:var(--ok);color:var(--ok)}
.cc-dec select[data-v="descartada"]{color:var(--muted)}
.cc-infra select[data-v="atencion"]{border-color:var(--warn);color:var(--warn)}
.cc-infra select[data-v="critico"]{border-color:var(--danger);color:var(--danger-ink)}
.cc-history{display:grid;gap:8px;margin:0;padding:0;list-style:none}
.cc-history li{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 12px;padding-bottom:8px;border-bottom:1px solid var(--line);font-size:var(--fs-3)}
.cc-history li:last-child{border-bottom:0}
.cc-history small{color:var(--muted)}
.cc-infra{min-width:1220px}
.cc-infra td{min-width:0!important}
.cc-infra td:nth-child(1){min-width:200px!important}
.cc-infra td:nth-child(2),.cc-infra td:nth-child(4){min-width:130px!important}
.cc-infra td:nth-child(3),.cc-infra td:nth-child(6){min-width:140px!important}
.cc-infra td:nth-child(5){min-width:150px!important}
.cc-infra td:nth-child(7){min-width:200px!important}
button.cc-link{border:0;background:none;color:var(--accent-ink);font:inherit;font-size:var(--fs-3);font-weight:var(--fw-semibold);padding:4px 6px;border-radius:8px;cursor:pointer;white-space:nowrap}
button.cc-link:hover,button.cc-link.on{background:color-mix(in srgb,var(--accent) 10%,var(--paper))}
.cc-renewal td{background:color-mix(in srgb,var(--accent) 4%,var(--paper))}
.cc-renewal-box{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px 16px;padding:8px 4px}
.cc-renewal-box label{display:grid;gap:4px;color:var(--muted);font-size:var(--fs-2);font-weight:var(--fw-semibold)}
.cc-renewal-actions{display:flex;flex-wrap:wrap;gap:8px}
.cc-renewal-box p{flex-basis:100%;margin:0}
@media(max-width:1100px){.cc-dec-add{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.cc-dec-add .grow{grid-column:1/-1}}
@media(max-width:760px){
  .cc-kr{grid-template-columns:minmax(0,1fr) auto;row-gap:8px}
  .cc-kr>input[type=text]{grid-column:1/-1}
  .cc-kr-bar{grid-column:1/-1}
  .cc-dec{grid-template-columns:minmax(0,1fr) auto}
  .cc-dec-body{grid-column:1/-1;order:2}
  .cc-dec select{order:3}
  .cc-infra{min-width:0}
  .cc-infra td:nth-child(n){min-width:0!important}
  .cc-renewal{grid-template-columns:1fr!important}
  .cc-renewal td{grid-column:1/-1}
}

/* Centro de control: qué proyectos se ven (ocultar los que no son tuyos o elegir uno por uno) */
.cc-visibility{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin-bottom:12px;padding:8px 12px;border:1px solid var(--line);border-radius:12px;background:var(--paper);font-size:var(--fs-3)}
.cc-visibility.slim{padding:6px 12px;border-style:dashed}
.cc-visibility .cc-check{padding:0}
.cc-hidden-note{color:var(--muted)}
.cc-picker{display:grid;gap:6px;margin:-4px 0 14px;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--paper);box-shadow:var(--elev-2)}
.cc-picker>p{margin:0 0 4px}
.cc-pick{display:grid;grid-template-columns:auto 40px minmax(0,1fr);gap:10px;align-items:center;padding:6px 4px;border-radius:10px;cursor:pointer}
.cc-pick:hover{background:color-mix(in srgb,var(--accent) 5%,var(--paper))}
.cc-pick span:last-child{display:grid;gap:1px;min-width:0}
.cc-pick b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cc-pick small{color:var(--muted);font-size:var(--fs-2)}
.cc-pick.locked{opacity:.6;cursor:default}
.cc-picker-foot{display:flex;justify-content:space-between;gap:8px;margin-top:6px}
/* en el Universo, la barra va arriba y el cielo ocupa el resto */
.multi-dialog.is-universe .cc-main .multi-body{flex-direction:column}

/* -- Selector de proyecto con logo (project-picker.js) --------------------------
   Reemplaza a la vista el <select> nativo (que queda oculto guardando el valor): botón con
   el logo y el nombre, lista con logo, rol y buscador. Mismo lenguaje que las etiquetas de
   proyecto de las tarjetas. */
.pp-wrap{position:relative;display:block;min-width:0}
.pp-native{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important}
.pp-button{display:flex;align-items:center;gap:9px;width:100%;min-height:40px;padding:5px 10px 5px 6px;border:1px solid var(--line);border-radius:11px;background:var(--paper);color:var(--ink);font:inherit;font-size:var(--fs-4);text-align:left;cursor:pointer}
.pp-button:hover,.pp-button[aria-expanded="true"]{border-color:var(--accent)}
.pp-button .pp-copy{flex:1;min-width:0}
.pp-button .pp-copy b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:var(--fw-semibold)}
.pp-caret{color:var(--muted);font-size:var(--fs-4);line-height:1}
.pp-mark{display:grid;place-items:center;flex:0 0 auto;width:28px;height:28px;border-radius:8px;overflow:hidden;background:color-mix(in srgb,var(--pp-color,var(--accent)) 18%,var(--paper));color:var(--ink);font-size:var(--fs-1);font-weight:var(--fw-bold);font-style:normal}
.pp-mark img{width:100%;height:100%;object-fit:cover;background:#fff}
.pp-mark.add{background:color-mix(in srgb,var(--accent) 14%,var(--paper));color:var(--accent-ink);font-size:var(--fs-5)}
.pp-mark.all,.pp-mark.piece{background:color-mix(in srgb,var(--muted) 16%,var(--paper));color:var(--muted)}
.pp-pop{position:absolute;z-index:60;top:calc(100% + 6px);left:0;width:max(100%,280px);max-width:min(380px,92vw);max-height:min(380px,60vh);display:flex;flex-direction:column;border:1px solid var(--line);border-radius:14px;background:var(--paper);box-shadow:var(--elev-3);overflow:hidden}
.pp-pop.up{top:auto;bottom:calc(100% + 6px)}
.pp-search{margin:8px;padding:8px 11px;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink);font:inherit;font-size:var(--fs-3)}
.pp-search:focus{outline:none;border-color:var(--accent)}
.pp-list{display:grid;gap:2px;padding:6px;overflow:auto}
.pp-item{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;padding:7px 9px;border:0;border-radius:10px;background:none;color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.pp-item .pp-mark{width:30px;height:30px}
.pp-item .pp-copy{display:grid;gap:1px;min-width:0}
.pp-item .pp-copy b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-4);font-weight:var(--fw-semibold)}
.pp-item .pp-copy small{color:var(--muted);font-size:var(--fs-2)}
.pp-item:hover,.pp-item.active,.pp-item:focus-visible{background:color-mix(in srgb,var(--accent) 8%,var(--paper));outline:none}
.pp-item.selected{background:color-mix(in srgb,var(--accent) 13%,var(--paper))}
.pp-item.selected .pp-copy b{color:var(--accent-ink)}
.pp-item.special{border-top:1px solid var(--line);border-radius:0 0 10px 10px;margin-top:2px}
.pp-item.special:first-child{border-top:0;border-radius:10px;margin-top:0}
.pp-check{color:var(--accent-ink);font-weight:var(--fw-bold)}
.pp-empty{margin:8px;color:var(--muted);font-size:var(--fs-3)}
.sidebar .pp-wrap{margin:0 0 6px}
.sidebar .pp-button{min-height:46px;border-radius:13px}

/* Hoja de proyectos del celular: los dos botones de abajo quedan fijos y la lista se desliza */
.mobile-sheet-foot{position:sticky;bottom:calc(-22px - env(safe-area-inset-bottom));z-index:2;display:grid;gap:8px;margin:10px -16px calc(-22px - env(safe-area-inset-bottom));padding:10px 16px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--paper)}
.mobile-sheet-foot .mobile-new-project{margin:0}
/* Botón de anotar idea en el encabezado del celular */
.mobile-idea-button .icon{width:20px;height:20px}
/* Resumen: logo del proyecto a la derecha de cada alerta y próxima tarea */
.cc-alert.has-mark{grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:12px}
.cc-alert-copy{display:grid;gap:2px;min-width:0}
.cc-side-mark{width:34px;height:34px;border-radius:10px}
.cc-side-mark.piece{display:grid;place-items:center;background:color-mix(in srgb,var(--muted) 16%,var(--paper));color:var(--muted)}
.cc-goal-project{display:flex;align-items:center;gap:6px}
.cc-goal-project .cc-side-mark{width:18px;height:18px;border-radius:5px;font-size:8px}
/* La lista flota sobre la página (fuera de diálogos): ya no empuja la barra lateral de costado */
.pp-pop.floating{position:fixed;z-index:1000;max-width:none}

/* Universo: se puede mover (arrastrar) y hacer zoom (rueda, pellizco, botones) */
.universe-svg{touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none}
.universe-svg.dragging{cursor:grabbing}
.universe-zoom{position:absolute;top:16px;left:16px;z-index:2;display:flex;align-items:center;gap:2px;padding:4px;border:1px solid rgba(255,255,255,.14);border-radius:12px;background:rgba(10,14,36,.72);backdrop-filter:blur(6px);color:#e6eaff}
.universe-zoom button{min-width:34px;height:34px;padding:0 10px;border:0;border-radius:9px;background:none;color:inherit;font:inherit;font-size:var(--fs-5);font-weight:var(--fw-bold);cursor:pointer}
.universe-zoom button.reset{font-size:var(--fs-3);font-weight:var(--fw-semibold)}
.universe-zoom button:hover{background:rgba(255,255,255,.12)}
.universe-zoom-level{min-width:46px;text-align:center;font-family:var(--font-mono);font-size:var(--fs-2);color:#b9c1e6}
@media(max-width:700px){.universe-zoom{top:10px;left:10px}}

/* -- Centro de control · Planilla (planilla.js) -----------------------------------
   Cuadrícula de hoja de cálculo: encabezado y primera columna fijos al deslizar, celdas que
   se editan en el lugar sin bordes de formulario, listas pintadas con el color de su opción
   y vacías en amarillo ("por completar"). */
.ps-tabs{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:10px;border-bottom:1px solid var(--line)}
.ps-tab{padding:8px 14px;border:1px solid transparent;border-bottom:0;border-radius:10px 10px 0 0;background:none;color:var(--muted);font:inherit;font-size:var(--fs-4);font-weight:var(--fw-semibold);cursor:pointer;margin-bottom:-1px}
.ps-tab.on{border-color:var(--line);background:var(--paper);color:var(--accent-ink)}
.ps-tab.add{color:var(--accent-ink)}
.ps-toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 14px;margin-bottom:12px}
.ps-title{display:grid;gap:4px;color:var(--muted);font-size:var(--fs-2);font-weight:var(--fw-semibold)}
.ps-title input,.ps-coledit input,.ps-coledit select{min-width:0;padding:7px 9px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink);font:inherit;font-size:var(--fs-3)}
.ps-toolbar .cc-check{padding-bottom:8px}
.ps-toolbar .cc-remove{margin-left:auto}
.ps-coledit{display:grid;gap:12px;margin-bottom:12px;padding:14px;border:1px solid var(--accent);border-radius:14px;background:color-mix(in srgb,var(--accent) 4%,var(--paper))}
.ps-coledit-row{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:flex-end}
.ps-coledit-row label{display:grid;gap:4px;color:var(--muted);font-size:var(--fs-2);font-weight:var(--fw-semibold)}
.ps-coledit-row label.grow{flex:1;min-width:200px}
.ps-options{display:grid;gap:6px;max-width:460px}
.ps-options b{font-size:var(--fs-3)}
.ps-option{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:center}
.ps-swatch{width:26px;height:26px;border:2px solid color-mix(in srgb,var(--ps-color) 60%,#fff);border-radius:8px;background:var(--ps-color);cursor:pointer}
.ps-coledit-actions{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px}
.ps-coledit-actions>div{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.ps-coledit-actions button:not(.cc-remove):not(.secondary){padding:6px 11px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink);font:inherit;font-size:var(--fs-3);cursor:pointer}
.ps-coledit-actions button.on{border-color:var(--accent);color:var(--accent-ink);font-weight:var(--fw-bold)}
.ps-coledit-actions button:disabled{opacity:.35;cursor:default}
.ps-wrap{overflow:auto;max-height:min(68vh,780px);border:1px solid var(--line);border-radius:14px;background:var(--paper)}
.ps-table{border-collapse:separate;border-spacing:0;min-width:100%}
.ps-table th,.ps-table td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);vertical-align:middle}
.ps-table thead th{position:sticky;top:0;z-index:2;background:color-mix(in srgb,var(--accent) 16%,var(--paper));text-align:left}
.ps-corner{left:0;z-index:3!important;padding:10px 14px;min-width:230px;font-size:var(--fs-3);letter-spacing:.4px;text-transform:uppercase;color:var(--accent-ink)}
.ps-colhead{display:grid;gap:1px;width:100%;min-width:150px;padding:9px 12px;border:0;background:none;color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.ps-colhead span{font-size:var(--fs-4);font-weight:var(--fw-bold);white-space:nowrap}
.ps-colhead small{color:var(--muted);font-size:var(--fs-1);letter-spacing:.4px;text-transform:uppercase}
.ps-colhead:hover,.ps-colhead.on{background:color-mix(in srgb,var(--accent) 12%,transparent)}
.ps-rowhead{position:sticky;left:0;z-index:1;display:flex;align-items:center;gap:10px;min-width:230px;padding:8px 12px;background:var(--paper);text-align:left;font-weight:var(--fw-normal)}
.ps-rowname{display:grid;gap:1px;min-width:0}
.ps-rowname b{font-size:var(--fs-4);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}
.ps-rowname small{color:var(--muted);font-size:var(--fs-2)}
.ps-mark .multi-mark{width:34px;height:34px;border-radius:9px}
.ps-table td{min-width:150px;padding:0;background:var(--paper)}
.ps-table td.empty{background:color-mix(in srgb,var(--warn) 13%,var(--paper))}
.ps-table td textarea,.ps-table td input[type=text],.ps-table td input[type=date],.ps-table td input[type=number]{display:block;width:100%;box-sizing:border-box;min-height:44px;padding:11px 12px;border:0;border-radius:0;background:transparent;color:var(--ink);font:inherit;font-size:var(--fs-3);line-height:1.45;resize:none;overflow:hidden}
.ps-table td textarea:focus,.ps-table td input:focus,.ps-table td select:focus{outline:2px solid var(--accent);outline-offset:-2px;background:var(--paper)}
.ps-table td.ps-texto{min-width:230px}
.ps-num{text-align:right;font-family:var(--font-mono)}
.ps-check{display:block;width:20px!important;height:20px;margin:12px auto}
.ps-select{display:block;width:calc(100% - 12px);margin:6px;padding:7px 9px;border:1px solid transparent;border-radius:9px;background:transparent;color:var(--muted);font:inherit;font-size:var(--fs-3);font-weight:var(--fw-bold);cursor:pointer}
.ps-select.has{background:color-mix(in srgb,var(--ps-color) 22%,var(--paper));border-color:color-mix(in srgb,var(--ps-color) 45%,transparent);color:color-mix(in srgb,var(--ps-color) 70%,var(--ink))}
.ps-link{display:flex;align-items:center}
.ps-link input{flex:1}
.ps-link a{flex:0 0 auto;margin-right:8px;padding:3px 8px;border-radius:7px;color:var(--accent-ink);font-weight:var(--fw-bold);text-decoration:none}
.ps-link a:hover{background:color-mix(in srgb,var(--accent) 12%,var(--paper))}
.ps-filler{min-width:52px;border-right:0!important;background:var(--paper)}
thead .ps-filler{background:color-mix(in srgb,var(--accent) 16%,var(--paper))!important}
.ps-addcol{width:36px;height:36px;margin:4px 8px;border:1px dashed var(--accent);border-radius:9px;background:var(--paper);color:var(--accent-ink);font-size:var(--fs-5);cursor:pointer}
.ps-empty-actions{display:flex;flex-wrap:wrap;gap:10px}
@media(max-width:700px){.ps-corner,.ps-rowhead{min-width:150px}.ps-rowname b{max-width:100px}.ps-table td,.ps-table td.ps-texto{min-width:140px}.ps-toolbar .cc-remove{margin-left:0}}

/* -- Centro de control · Lienzos (lienzos.js) ----------------------------------------
   Lienzo con grilla de puntos; barra de herramientas flotando arriba, propiedades de lo
   elegido a la derecha, zoom abajo. El color de cada forma viene en --lz. */
.lz-stage{position:relative;height:max(480px,calc(100dvh - 330px));border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--paper)}
.lz-svg{display:block;width:100%;height:100%;touch-action:none;user-select:none;-webkit-user-select:none;cursor:default}
.lz-svg[data-tool="select"]{cursor:grab}
.lz-svg.panning{cursor:grabbing}
.lz-svg:not([data-tool="select"]){cursor:crosshair}
.lz-dot{fill:color-mix(in srgb,var(--muted) 40%,transparent)}
.lz-toolbar{position:absolute;top:12px;left:12px;z-index:3;display:flex;flex-wrap:wrap;align-items:center;gap:2px;max-width:calc(100% - 24px);padding:5px;border:1px solid var(--line);border-radius:14px;background:var(--paper);box-shadow:var(--elev-2)}
.lz-tool{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 10px;border:0;border-radius:10px;background:none;color:var(--ink);font:inherit;font-size:var(--fs-3);font-weight:var(--fw-semibold);cursor:pointer}
.lz-tool .icon{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8}
.lz-tool:hover{background:color-mix(in srgb,var(--accent) 8%,var(--paper))}
.lz-tool.on{background:var(--accent);color:var(--on-accent)}
.lz-sep{width:1px;height:24px;margin:0 4px;background:var(--line)}
.lz-props{position:absolute;top:70px;right:12px;z-index:3;display:flex;flex-direction:column;align-items:stretch;gap:10px;width:248px;max-height:calc(100% - 140px);overflow:auto;box-sizing:border-box}
.lz-props:empty{width:auto}
.lz-props:not(:empty){padding:10px;border:1px solid var(--line);border-radius:14px;background:var(--paper);box-shadow:var(--elev-2)}
.lz-swatches{display:grid;grid-template-columns:repeat(auto-fill,24px);gap:4px}
.lz-swatch{width:24px;height:24px;min-height:0;padding:0;border:2px solid var(--paper);border-radius:50%;background:var(--lz);box-shadow:0 0 0 1px var(--line);cursor:pointer}
.lz-swatch.on{box-shadow:0 0 0 2px var(--ink)}
.lz-picker{position:absolute;top:70px;left:12px;z-index:3;display:grid;gap:4px;width:min(280px,calc(100% - 24px));max-height:calc(100% - 140px);overflow:auto;padding:10px;border:1px solid var(--line);border-radius:14px;background:var(--paper);box-shadow:var(--elev-2)}
.lz-picker p{margin:0 0 4px;color:var(--muted);font-size:var(--fs-3)}
.lz-picker[hidden]{display:none}
.lz-pick{display:flex;align-items:center;gap:10px;padding:6px 8px;border:0;border-radius:10px;background:none;color:var(--ink);font:inherit;font-size:var(--fs-4);font-weight:var(--fw-semibold);text-align:left;cursor:pointer}
.lz-pick .multi-mark{width:30px;height:30px;border-radius:8px}
.lz-pick:hover,.lz-pick.on{background:color-mix(in srgb,var(--accent) 12%,var(--paper))}
.lz-zoom{position:absolute;bottom:12px;left:12px;z-index:3;display:flex;align-items:center;gap:2px;padding:4px;border:1px solid var(--line);border-radius:12px;background:var(--paper);box-shadow:var(--elev-1)}
.lz-zoom button{min-width:32px;height:32px;padding:0 10px;border:0;border-radius:9px;background:none;color:var(--ink);font:inherit;font-weight:var(--fw-bold);cursor:pointer}
.lz-zoom button.reset{font-size:var(--fs-3);font-weight:var(--fw-semibold)}
.lz-zoom button:hover{background:color-mix(in srgb,var(--accent) 10%,var(--paper))}
.lz-zoom-level{min-width:44px;text-align:center;font-family:var(--font-mono);font-size:var(--fs-2);color:var(--muted)}
.lz-hint{position:absolute;bottom:14px;left:50%;z-index:2;transform:translateX(-50%);margin:0;padding:6px 12px;border-radius:999px;background:color-mix(in srgb,var(--ink) 78%,transparent);color:var(--paper);font-size:var(--fs-2);white-space:nowrap;pointer-events:none;max-width:calc(100% - 460px);overflow:hidden;text-overflow:ellipsis}
/* formas */
.lz-shape{fill:color-mix(in srgb,var(--lz) 20%,var(--paper));stroke:var(--lz);stroke-width:2}
.lz-shape.nota{fill:color-mix(in srgb,var(--lz) 32%,var(--paper));stroke:color-mix(in srgb,var(--lz) 70%,var(--ink));stroke-width:1.2}
.lz-fold{fill:none;stroke:color-mix(in srgb,var(--lz) 70%,var(--ink));stroke-width:1.2}
.lz-shape.texto{fill:transparent;stroke:transparent}
.lz-node.selected .lz-shape.texto{stroke:var(--accent);stroke-dasharray:4 4}
.lz-node{cursor:move}
.lz-node.selected .lz-shape{stroke:var(--accent);stroke-width:3}
.lz-fo{pointer-events:none;overflow:visible}
.lz-label{display:flex;align-items:center;justify-content:center;width:100%;height:100%;box-sizing:border-box;padding:8px 10px;color:var(--ink);font-family:var(--font-body);font-size:15px;line-height:1.3;text-align:center;white-space:pre-wrap;overflow-wrap:anywhere;overflow:hidden}
.lz-label.nota{align-items:flex-start;justify-content:flex-start;text-align:left;padding:12px 14px}
.lz-label.texto{font-size:17px;font-weight:600}
.lz-project{display:flex;align-items:center;gap:10px;width:100%;height:100%;box-sizing:border-box;padding:8px 12px;color:var(--ink);font-family:var(--font-body)}
.lz-project i{display:grid;place-items:center;flex:0 0 auto;border-radius:10px;overflow:hidden;background:color-mix(in srgb,var(--lz) 25%,var(--paper));font-style:normal;font-weight:700;font-size:13px}
.lz-project i img{width:100%;height:100%;object-fit:cover;background:#fff}
.lz-project b{font-size:15px;line-height:1.25;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.lz-handle{fill:var(--paper);stroke:var(--accent);stroke-width:1.5;cursor:nwse-resize}
.lz-handle[data-handle="ne"],.lz-handle[data-handle="sw"]{cursor:nesw-resize}
.lz-ghost{fill:color-mix(in srgb,var(--accent) 10%,transparent);stroke:var(--accent);stroke-dasharray:5 4}
/* flechas */
.lz-edge-hit{fill:none;stroke:transparent;stroke-width:14;cursor:pointer}
.lz-edge-line{fill:none;stroke:color-mix(in srgb,var(--ink) 70%,var(--paper));stroke-width:2;pointer-events:none}
.lz-edge.dashed .lz-edge-line{stroke-dasharray:7 6}
.lz-edge.selected .lz-edge-line,.lz-edge-line.temp{stroke:var(--accent);stroke-width:2.5}
.lz-arrow{fill:color-mix(in srgb,var(--ink) 70%,var(--paper))}
.lz-arrow.sel{fill:var(--accent)}
.lz-editor{position:absolute;z-index:4;box-sizing:border-box;padding:8px 10px;border:2px solid var(--accent);border-radius:10px;background:var(--paper);color:var(--ink);font-family:var(--font-body);line-height:1.3;text-align:center;resize:none;outline:none}
.lz-editor.nota{text-align:left}
@media(max-width:760px){
  .lz-stage{height:max(420px,calc(100dvh - 300px))}
  .lz-tool span{display:none}
  .lz-tool{padding:0 9px}
  .lz-hint{display:none}
  .lz-props{top:auto;bottom:62px;right:10px;left:10px;width:auto;max-width:none;max-height:36%}
}

/* Lienzos: pantalla completa, tablas, estilos de texto y de flechas */
.lz-stage.lz-full{position:fixed;inset:0;z-index:60;height:auto;border:0;border-radius:0}
.lz-stage:fullscreen{width:100%;height:100%;border:0;border-radius:0}
.lz-tool:disabled{opacity:.4;cursor:default;background:none}
.lz-shape.hollow{fill:transparent}
.lz-shape.tabla{fill:color-mix(in srgb,var(--lz) 6%,var(--paper))}
.lz-table{display:grid;width:100%;height:100%;gap:1px;box-sizing:border-box;border-radius:6px;overflow:hidden;background:color-mix(in srgb,var(--lz) 55%,var(--paper));line-height:1.25}
.lz-cell{display:flex;align-items:center;min-width:0;min-height:0;padding:3px 8px;overflow:hidden;background:color-mix(in srgb,var(--lz) 5%,var(--paper))}
.lz-cell span{width:100%;white-space:pre-wrap;overflow-wrap:anywhere}
.lz-cell.head{background:color-mix(in srgb,var(--lz) 26%,var(--paper));font-weight:700}
.lz-cell.on{box-shadow:inset 0 0 0 2px var(--accent)}
.lz-editor.tabla{padding:3px 8px;border-radius:4px;text-align:left}
.lz-group{display:grid;gap:7px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.lz-cap{color:var(--muted);font-size:var(--fs-1);font-weight:var(--fw-bold);letter-spacing:.06em;text-transform:uppercase}
.lz-mini-cap{color:var(--muted);font-size:var(--fs-2)}
.lz-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.lz-seg{display:inline-flex;align-items:stretch;border:1px solid var(--line);border-radius:9px;overflow:hidden;background:var(--paper)}
.lz-group>.lz-seg{display:flex}
.lz-group>.lz-seg button{flex:1}
.lz-seg button{min-width:32px;height:30px;min-height:0;padding:0 8px;border:0;background:none;color:var(--ink);font:inherit;font-size:var(--fs-3);font-weight:var(--fw-semibold);cursor:pointer}
.lz-seg button+button,.lz-seg .lz-size+button{border-left:1px solid var(--line)}
.lz-seg button:hover{background:color-mix(in srgb,var(--accent) 8%,var(--paper))}
.lz-seg button.on{background:var(--accent);color:var(--on-accent)}
.lz-seg button:disabled{opacity:.4;cursor:default;background:none}
.lz-seg .icon{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;vertical-align:middle}
.lz-size{display:grid;place-items:center;min-width:32px;border-left:1px solid var(--line);font-family:var(--font-mono);font-size:var(--fs-2)}
.lz-font{width:100%;height:32px;padding:0 8px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink);font:inherit;font-size:var(--fs-3)}
.lz-swatch.none{background:linear-gradient(135deg,transparent 44%,var(--danger) 45% 55%,transparent 56%),var(--paper)}
.lz-group .secondary.on{border-color:var(--accent);color:var(--accent-ink)}
.lz-actions{display:flex;flex-wrap:wrap;gap:6px}
.lz-actions button{flex:1 1 auto}
.lz-props .lz-swatch,.lz-props .lz-seg button,.lz-props .lz-font{min-height:0}
body.mobile-ui .lz-props .lz-swatches{grid-template-columns:repeat(auto-fill,30px)}
body.mobile-ui .lz-props .lz-swatch{width:30px;height:30px}
body.mobile-ui .lz-props .lz-seg button{height:36px}
/* Organigrama en pantalla grande */
.org2-wrap.org2-full{position:fixed;inset:0;z-index:8100;display:flex;flex-direction:column;margin:0;border-radius:0;max-width:none;width:auto}
.org2-wrap.org2-full .org2-scroll{flex:1;height:auto;min-height:0}
.org2-wrap.org2-full .section-title{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.org2-exit-full{margin-left:auto}
.org2-zoom-controls .icon-button.on{background:var(--accent);color:var(--on-accent)}
body.org2-full-open{overflow:hidden}
