:root{
  --bg:#FFFFFF; --card:#FFFFFF; --ink:#1B162F; --ink2:#6F6C7C; --line:#D1D0D5; --soft:#EDECEE;
  --ser:#35908F; --ser-t:#308180; --ser-bg:#EFF6F6;
  --inm:#123B66; --inm-t:#123B66; --inm-bg:#ECEFF3;
  --urb:#F4C133; --urb-t:#957008; --urb-bg:#FEFAEF;
  --hg:#1B162F; --hg-t:#1B162F; --hg-bg:#EDECEE;
  --con:#FBBA21; --con-t:#9C6E03; --con-bg:#FFF9ED;
  --rent:#A6B48D; --rent-t:#6D7C52; --rent-bg:#F8F9F6;
  --wml:#7A3346; --wml-t:#7A3346; --wml-bg:#F7EEF1;
  --ok:#2E7D4F; --warn:#B54708; --bad:#B42318;
  --shadow:0 1px 2px rgba(27,22,47,.06),0 6px 20px rgba(27,22,47,.06);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0C0A15; --card:#17142A; --ink:#F2F1F5; --ink2:#A9A6B8; --line:#2F2A47; --soft:#221E38;
    --ser:#4FB3B1; --ser-t:#7FD0CE; --ser-bg:#132A2D;
    --inm:#5290D0; --inm-t:#8DB8E6; --inm-bg:#14223A;
    --urb:#F4C133; --urb-t:#F4C133; --urb-bg:#2C2513;
    --hg:#C9C6D6; --hg-t:#E4E2EC; --hg-bg:#221E38;
    --con:#FBBA21; --con-t:#FBBA21; --con-bg:#2C2410;
    --rent:#A6B48D; --rent-t:#C3CFAE; --rent-bg:#1E2418;
    --wml:#C97A8E; --wml-t:#E3A3B3; --wml-bg:#2A1820;
    --ok:#5BC08A; --warn:#F2A35E; --bad:#F38B83;
    --shadow:0 1px 2px rgba(0,0,0,.3),0 6px 20px rgba(0,0,0,.25);
  }
}
:root[data-theme="dark"]{
  --bg:#0C0A15; --card:#17142A; --ink:#F2F1F5; --ink2:#A9A6B8; --line:#2F2A47; --soft:#221E38;
  --ser:#4FB3B1; --ser-t:#7FD0CE; --ser-bg:#132A2D;
  --inm:#5290D0; --inm-t:#8DB8E6; --inm-bg:#14223A;
  --urb:#F4C133; --urb-t:#F4C133; --urb-bg:#2C2513;
  --hg:#C9C6D6; --hg-t:#E4E2EC; --hg-bg:#221E38;
  --con:#FBBA21; --con-t:#FBBA21; --con-bg:#2C2410;
  --rent:#A6B48D; --rent-t:#C3CFAE; --rent-bg:#1E2418;
  --wml:#C97A8E; --wml-t:#E3A3B3; --wml-bg:#2A1820;
  --ok:#5BC08A; --warn:#F2A35E; --bad:#F38B83;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 6px 20px rgba(0,0,0,.25);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:72px}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.55 "Plus Jakarta Sans",system-ui,sans-serif;-webkit-font-smoothing:antialiased}
h1,h2,h3{line-height:1.2;margin:0 0 .5em}
h2{font-size:1.5rem;font-weight:800}
h3{font-size:1.05rem;font-weight:700}
p{margin:0 0 .8em}
a{color:inherit}
button{font:inherit;color:inherit;cursor:pointer}
.wrap{max-width:none;margin:0;padding:0 12px}

/* Barra superior */
.top{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding-top:10px;padding-bottom:10px}
.brand{font-weight:800;letter-spacing:.02em;white-space:nowrap}
.brand small{display:block;font-weight:500;font-size:.72rem;color:var(--ink2);letter-spacing:0}
nav.tabs{display:flex;flex-wrap:wrap;gap:4px;order:3;flex:1 1 100%}
#fsBtn{margin-left:auto;font-size:1.05rem}
nav.tabs::-webkit-scrollbar{display:none}
nav.tabs a{cursor:pointer;padding:7px 12px;border-radius:999px;text-decoration:none;font-weight:600;font-size:.85rem;color:var(--ink2);white-space:nowrap}
nav.tabs a.on,nav.tabs a:hover{background:var(--soft);color:var(--ink)}
.icon-btn{border:1px solid var(--line);background:var(--card);border-radius:10px;width:38px;height:38px;display:grid;place-items:center;flex:none}

section{padding:28px 0 40px}
[hidden]{display:none!important}
.hero{padding-bottom:0!important}
section:last-of-type{border-bottom:0}
.lead{color:var(--ink2);max-width:760px}
.kicker{display:inline-block;font-size:.72rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--ink2);margin-bottom:6px}

/* Hero */
.hero{padding:36px 0 28px}
.hero h1{font-size:clamp(1.7rem,4vw,2.6rem);font-weight:800;max-width:900px}
.hero .actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}

/* Botones */
.btn{display:inline-flex;align-items:center;gap:6px;text-decoration:none;border:1px solid var(--line);background:var(--card);padding:9px 14px;border-radius:10px;font-weight:600;font-size:.88rem;transition:transform .12s,background .12s}
.btn:hover{transform:translateY(-1px);background:var(--soft)}
.btn:active{transform:none}
.btn.primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.btn.primary:hover{opacity:.9}
.btn.sm{padding:6px 10px;font-size:.8rem;border-radius:8px}
.chip{border:1px solid var(--line);background:var(--card);padding:6px 12px;border-radius:999px;font-weight:600;font-size:.82rem;display:inline-flex;align-items:center;gap:6px}
.chip .dot{width:9px;height:9px;border-radius:50%}
.chip[aria-pressed="false"]{opacity:.45}
.chip[aria-pressed="true"]{box-shadow:inset 0 0 0 1px var(--ink)}
.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}

/* Tarjetas KPI */
.grid{display:grid;gap:14px}
.kpis{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:var(--shadow)}
.kpi b{display:block;font-size:2rem;font-weight:800;line-height:1.1}
.kpi span{color:var(--ink2);font-size:.85rem}
.two{grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr))}
.three{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr))}

/* Barras */
.bars{display:flex;flex-direction:column;gap:8px}
.bar{display:grid;grid-template-columns:130px 1fr 38px;gap:10px;align-items:center;font-size:.85rem}
.bar .track{height:12px;background:var(--soft);border-radius:999px;overflow:hidden}
.bar .fill{height:100%;border-radius:999px;width:0;transition:width .7s cubic-bezier(.2,.8,.2,1)}
.bar b{text-align:right}
.timeline{display:flex;align-items:flex-end;gap:6px;height:160px;padding-top:10px}
.timeline .col{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:4px;min-width:0}
.timeline .stack{width:100%;max-width:34px;display:flex;flex-direction:column-reverse;border-radius:6px;overflow:hidden}
.timeline .stack i{display:block}
.timeline small{font-size:.68rem;color:var(--ink2);white-space:nowrap}

/* Cuentas */
.acc-card{border-top:5px solid var(--c)}
.acc-card h3{color:var(--ct)}
.tag{display:inline-block;font-size:.72rem;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--soft);color:var(--ink2)}
.acc-card ul{padding-left:18px;margin:.4em 0 .8em}
.acc-card li{margin:.2em 0}
.pillars{display:flex;flex-wrap:wrap;gap:6px;margin:.6em 0}

/* Tabla */
.tools{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}
.tools input,.tools select{font:inherit;font-size:.88rem;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink)}
.tools input{flex:1;min-width:180px}
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:14px;background:var(--card)}
table{border-collapse:collapse;width:100%;font-size:.85rem}
th,td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}
th{position:sticky;top:0;background:var(--card);font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink2);cursor:pointer;user-select:none;white-space:nowrap}
th[data-sort]:after{content:" ↕";opacity:.4}
tbody tr{cursor:pointer}
tbody tr:hover{background:var(--soft)}
td.sku{font-family:ui-monospace,Menlo,monospace;font-size:.78rem;white-space:nowrap}
.acc-pill{display:inline-flex;align-items:center;gap:6px;font-weight:700;white-space:nowrap}
.acc-pill i{width:9px;height:9px;border-radius:3px;display:inline-block}
.uso{font-size:.72rem;font-weight:700;padding:2px 8px;border-radius:999px;white-space:nowrap}
.uso.pub{background:color-mix(in srgb,var(--ok) 15%,transparent);color:var(--ok)}
.uso.apoyo,.uso.hist{background:var(--soft);color:var(--ink2)}
.uso.rev,.uso.int{background:color-mix(in srgb,var(--warn) 15%,transparent);color:var(--warn)}
.meter{display:inline-flex;gap:2px;vertical-align:middle}
.meter i{width:5px;height:12px;border-radius:2px;background:var(--line)}
.meter i.on{background:var(--mc,var(--ink))}
.count{color:var(--ink2);font-size:.85rem}

/* Calendario */
.week-tabs{display:flex;gap:6px;flex-wrap:wrap}
.week-tabs button{border:1px solid var(--line);background:var(--card);border-radius:12px;padding:8px 14px;font-weight:700;font-size:.85rem;text-align:left}
.week-tabs button small{display:block;font-weight:500;color:var(--ink2);font-size:.72rem}
.week-tabs button.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.week-tabs button.on small{color:inherit;opacity:.75}
.week-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;align-items:flex-end;margin:18px 0 12px}
.week-head h3{margin:0;font-size:1.2rem}
.progress{height:8px;background:var(--soft);border-radius:999px;overflow:hidden;width:220px;max-width:100%}
.progress i{display:block;height:100%;background:var(--ok);width:0;transition:width .4s}
.cal-wrap{overflow-x:auto;border-radius:14px}
.cal{display:grid;grid-template-columns:100px repeat(7,minmax(136px,1fr));gap:8px;min-width:1100px}
.vi{font-size:.7rem;font-weight:800;color:var(--ink2);white-space:nowrap}
.vi b{color:var(--c)}
.cal .hd{font-weight:800;font-size:.82rem;padding:6px 8px}
.cal .hd small{display:block;font-weight:500;color:var(--ink2)}
.cal .hd.fest{color:var(--warn)}
.cal .rowlab{display:flex;align-items:center;gap:8px;font-weight:800;font-size:.85rem;padding:8px;border-radius:12px;background:var(--bgc);color:var(--ct)}
.cal .rowlab i{width:10px;height:10px;border-radius:3px;background:var(--c);flex:none}
.slot{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--c);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:6px;cursor:pointer;transition:transform .12s,box-shadow .12s;min-height:132px;position:relative}
.slot:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
.slot.done{opacity:.55}
.slot.done .ttl{text-decoration:line-through}
.slot .meta{display:flex;justify-content:space-between;gap:6px;font-size:.7rem;color:var(--ink2);font-weight:600}
.slot .ttl{font-weight:700;font-size:.82rem;line-height:1.3}
.slot .foot{margin-top:auto;display:flex;justify-content:space-between;align-items:center;gap:6px}
.kind{font-size:.66rem;font-weight:800;padding:2px 7px;border-radius:999px;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}
.kind.L{background:color-mix(in srgb,var(--ok) 16%,transparent);color:var(--ok)}
.kind.D{background:color-mix(in srgb,var(--inm) 16%,transparent);color:var(--inm-t)}
.kind.P{background:color-mix(in srgb,var(--warn) 16%,transparent);color:var(--warn)}
.kind.C{background:var(--soft);color:var(--ink2)}
.check{width:22px;height:22px;border-radius:6px;border:1.5px solid var(--line);background:var(--card);display:grid;place-items:center;font-size:.8rem;flex:none}
.slot.done .check{background:var(--ok);border-color:var(--ok);color:#fff}
.fmt-row{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.fm{display:inline-flex;align-items:center;gap:4px;font-size:.68rem;font-weight:700;border:1px solid var(--line);border-radius:999px;padding:2px 7px 2px 5px;cursor:pointer;color:var(--ink2);user-select:none;background:var(--card)}
.fm input{margin:0;width:12px;height:12px;accent-color:var(--c);cursor:pointer}
.fm.on{border-color:var(--c);color:var(--ink);background:color-mix(in srgb,var(--c) 14%,transparent)}
.vlink{font-size:.7rem;font-weight:800;text-decoration:none;color:var(--ink);border-bottom:2px solid var(--c,var(--ink));margin-left:auto;white-space:nowrap;cursor:pointer}
td .vlink{margin-left:6px}
.idea{border-top:4px solid var(--c)}
.idea h3{margin:10px 0 8px}
.idea .note{margin:0 0 8px}
.legend{display:flex;flex-wrap:wrap;gap:10px;font-size:.8rem;color:var(--ink2);margin-top:12px}

/* Vista de lista (móvil) */
.daylist{display:none}
.daylist .day{margin-bottom:14px}
.daylist .day h4{margin:0 0 8px;font-size:.95rem}
.daylist .slots{display:grid;gap:8px}

/* Pilares y retención */
.ret-table td:first-child{font-weight:700;white-space:nowrap}
.steps{counter-reset:s;list-style:none;padding:0;margin:0;display:grid;gap:10px}
.steps li{counter-increment:s;display:grid;grid-template-columns:34px 1fr;gap:10px;align-items:start}
.steps li:before{content:counter(s);width:30px;height:30px;border-radius:9px;background:var(--ink);color:var(--bg);display:grid;place-items:center;font-weight:800;font-size:.85rem}
.issue{display:grid;grid-template-columns:auto 1fr;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}
.issue:last-child{border-bottom:0}
.sev{font-size:.68rem;font-weight:800;padding:3px 8px;border-radius:999px;height:fit-content;text-transform:uppercase}
.sev.a{background:color-mix(in srgb,var(--bad) 15%,transparent);color:var(--bad)}
.sev.m{background:color-mix(in srgb,var(--warn) 15%,transparent);color:var(--warn)}
.sev.b{background:var(--soft);color:var(--ink2)}
.todo{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--line);cursor:pointer}
.todo:last-child{border-bottom:0}
.todo input{width:18px;height:18px;margin-top:2px;accent-color:var(--ok)}
.todo.done span{text-decoration:line-through;color:var(--ink2)}
details.card summary{cursor:pointer;font-weight:700}
details.card[open] summary{margin-bottom:10px}

/* Modal */
dialog{border:0;border-radius:18px;padding:0;max-width:620px;width:calc(100% - 32px);background:var(--card);color:var(--ink);box-shadow:0 20px 60px rgba(0,0,0,.35)}
dialog::backdrop{background:rgba(12,10,21,.55);backdrop-filter:blur(3px)}
.m-head{padding:18px 20px;border-bottom:1px solid var(--line);border-top:6px solid var(--c);border-radius:18px 18px 0 0}
.m-head h3{margin:6px 0 0;font-size:1.15rem}
.m-body{padding:16px 20px;display:grid;gap:12px;max-height:min(60vh,440px);overflow:auto}
.m-body dl{display:grid;grid-template-columns:140px 1fr;gap:6px 12px;margin:0;font-size:.88rem}
.m-body dt{color:var(--ink2);font-weight:600}
.m-body dd{margin:0}
.note{padding:10px 12px;border-radius:10px;background:var(--soft);font-size:.86rem}
.note.warn{background:color-mix(in srgb,var(--warn) 12%,transparent)}
.m-foot{padding:14px 20px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}

.toast{position:fixed;left:50%;bottom:22px;transform:translate(-50%,30px);opacity:0;background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:12px;font-weight:600;font-size:.88rem;transition:.25s;z-index:50;pointer-events:none}
.toast.show{opacity:1;transform:translate(-50%,0)}
.to-top{position:fixed;right:16px;bottom:16px;z-index:15}
footer{padding:24px 0 60px;color:var(--ink2);font-size:.8rem}

@media (max-width:760px){
  .brand small{display:none}
  .bar{grid-template-columns:96px 1fr 30px}
  .timeline{gap:3px;height:190px}
  .timeline .col>small:last-child{writing-mode:vertical-rl;transform:rotate(180deg);height:42px}
  .cal-wrap{display:none}
  .daylist{display:block}
  .m-body dl{grid-template-columns:1fr}
  .m-body dt{margin-top:6px}
}
@media print{
  .top,.to-top,.tools,.hero .actions,.btn,.week-tabs{display:none!important}
  section{break-inside:avoid-page;padding:16px 0}
  body{background:#fff;color:#000}
  .cal{min-width:0;grid-template-columns:90px repeat(7,1fr);font-size:10px}
}

/* Conexión con el servidor del equipo */
#lockBtn{font-size:1rem}
html.authed #lockBtn{border-color:var(--ok)}
.login input{font:inherit;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink);width:100%}
.ai-card{border-top:4px solid var(--ink);margin:14px 0}
.ai-card .tools{margin:10px 0 0}
.ai-card .tools input{flex:1;min-width:200px}
#aiOut{margin-top:12px}
.guion{white-space:pre-wrap;font:inherit;font-size:.84rem;margin:6px 0 0;background:var(--soft);padding:10px 12px;border-radius:10px}
.idea-head{grid-column:1/-1;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-top:12px}
.idea-head h3{margin:0;display:flex;align-items:center;gap:8px}
.idea-head .dot{width:10px;height:10px;border-radius:50%}
.idea .acts{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:10px}
.slot-empty{border:2px dashed var(--line);background:transparent;box-shadow:none;min-height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center}
.idea.pick{outline:2px solid var(--warn);outline-offset:2px}
.idea.fresh{animation:fresh 2.4s ease}
@keyframes fresh{0%,40%{box-shadow:0 0 0 3px var(--c)}100%{box-shadow:none}}
.btn.danger{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 50%,var(--line))}
.tag.ai{background:color-mix(in srgb,var(--ser) 18%,transparent);color:var(--ser-t)}
.btn[disabled]{opacity:.6;cursor:wait;transform:none}
.vlink[data-open]{cursor:pointer}

/* ---------- Plan editable (semanas sin límite, quitar y agregar, plan automático) ---------- */
.only-auth{display:none!important}
html.authed .only-auth{display:inline-flex!important}
html.authed div.only-auth{display:flex!important}
.plan-tools{margin-top:10px}
.month-nav{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px}
.month-nav select,.inp{font:inherit;font-size:.88rem;padding:7px 10px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink)}
.month-nav select{font-weight:700}
.month-nav .btn[disabled]{opacity:.35;pointer-events:none}
.cell{display:flex;flex-direction:column;gap:6px;min-width:0}
.slot-empty-day{border:1px dashed var(--line);border-radius:12px;padding:10px;color:var(--ink2);font-size:.75rem;min-height:64px;display:flex;align-items:center;justify-content:center;text-align:center}
.add-pub{border:1px dashed var(--line);background:transparent;border-radius:10px;padding:5px;font:inherit;font-size:.72rem;font-weight:700;color:var(--ink2);cursor:pointer;justify-content:center}
.add-pub:hover{background:var(--soft);color:var(--ink)}
.slot-del{position:absolute;top:5px;right:5px;width:22px;height:22px;border-radius:50%;border:1px solid var(--line);background:var(--card);font-size:.68rem;line-height:1;color:var(--ink2);cursor:pointer;opacity:0;transition:opacity .12s;align-items:center;justify-content:center;padding:0;z-index:1}
.slot:hover .slot-del,.slot:focus-within .slot-del{opacity:1}
.slot-del:hover{color:var(--warn);border-color:var(--warn)}
@media (hover:none){.slot-del{opacity:1}}
html.authed .slot .meta{padding-right:22px}
.form-grid{display:grid;gap:14px}
.form-grid b{display:block;margin-bottom:6px;font-size:.85rem}
.form-grid label>.inp{display:block;width:100%;box-sizing:border-box}
textarea.inp{resize:vertical}
.opt{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;padding:5px 11px;font-size:.8rem;font-weight:600;cursor:pointer}
.opt input{margin:0;accent-color:var(--c,var(--ink))}
.opt:has(input:checked){border-color:var(--c,var(--ink));background:color-mix(in srgb,var(--c,var(--ink)) 10%,transparent)}
.pick-list{max-height:46vh;overflow:auto;margin-top:10px;border-top:1px solid var(--line)}
.pick-row{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:8px 2px;border-bottom:1px solid var(--line)}
.pick-row[hidden]{display:none}
#mHead h3{margin:0}
.m-foot{flex-wrap:wrap}
.sync-card{box-shadow:none}
.sync-card details{margin-top:10px}
.sync-list{margin:6px 0 0;padding-left:18px;font-size:.84rem;max-height:240px;overflow:auto}
.tag.ok{background:color-mix(in srgb,var(--ok) 16%,transparent);color:var(--ok)}
@media (max-width:760px){.slot-del{opacity:1}}
