
/* Concepto: manual de rediseño. Barra lateral con los módulos agrupados, un mockup enmarcado como ventana y una columna de explicación junto a él. */
:root{
  --bg:#e9ece8; --surface:#fafaf8; --surface2:#f1f3ef; --ink:#17201d; --muted:#58645f; --line:#d3d8d2;
  --brand:#16443b; --brand-ink:#ffffff; --andon:#d4391c;
  --ok:#2c7a4b; --ok-bg:#dcefe2; --warn:#a96a0b; --warn-bg:#f6e6c6; --bad:#c0321e; --bad-bg:#f6d9d3; --info:#2f5f9e; --info-bg:#dce7f6;
  --f-d:#1f7a6d; --f-s:#2f5f9e; --f-m:#a96a0b; --f-t:#56636b; --f-c:#c0321e; --viz2:#7a4fb0; --hm-hi:#17201d; --resp:#7a3fb5; --resp-bg:#ece1f7;
  --shadow:0 1px 2px rgba(20,30,26,.08);
  --display:'Barlow Condensed','Arial Narrow',sans-serif; --body:'IBM Plex Sans',system-ui,sans-serif; --mono:'IBM Plex Mono',ui-monospace,monospace;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#101614; --surface:#18201d; --surface2:#1f2824; --ink:#e8eee9; --muted:#9aa8a1; --line:#2f3b36;
  --brand:#5fb79f; --brand-ink:#0d1512; --andon:#ff6a4d;
  --ok:#5cc489; --ok-bg:#1d3a2a; --warn:#e3a84a; --warn-bg:#3d2f13; --bad:#ff7f68; --bad-bg:#44201a; --info:#7fa8e6; --info-bg:#1c2b44;
  --f-d:#4fc4b0; --f-s:#7fa8e6; --f-m:#e3a84a; --f-t:#9db0bb; --f-c:#ff7f68; --viz2:#b896dc; --hm-hi:#0d1512; --resp:#c39bea; --resp-bg:#31214a; --shadow:none; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#101614; --surface:#18201d; --surface2:#1f2824; --ink:#e8eee9; --muted:#9aa8a1; --line:#2f3b36;
  --brand:#5fb79f; --brand-ink:#0d1512; --andon:#ff6a4d;
  --ok:#5cc489; --ok-bg:#1d3a2a; --warn:#e3a84a; --warn-bg:#3d2f13; --bad:#ff7f68; --bad-bg:#44201a; --info:#7fa8e6; --info-bg:#1c2b44;
  --f-d:#4fc4b0; --f-s:#7fa8e6; --f-m:#e3a84a; --f-t:#9db0bb; --f-c:#ff7f68; --viz2:#b896dc; --hm-hi:#0d1512; --resp:#c39bea; --resp-bg:#31214a; --shadow:none; color-scheme:dark}

*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font:14px/1.5 var(--body);padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:0 48px}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--andon);outline-offset:2px}
h1,h2,h3{font-family:var(--display);font-weight:600;margin:0;line-height:1.1;text-wrap:balance;letter-spacing:.01em}
h1{font-size:34px} h2{font-size:26px} h3{font-size:19px}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.muted{color:var(--muted)} .small{font-size:12.5px}
.eyebrow{font-size:11.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);font-weight:600}
.wrap{max-width:1320px;margin:0 auto}


@media (max-width:900px){
}

@media (max-width:1100px){.cols{grid-template-columns:minmax(0,1fr)}}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);min-width:0}
.panel-h{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.panel-b{padding:16px}
.chip{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--surface2);color:var(--muted);white-space:nowrap}
.chip.alta,.chip.bad{background:var(--bad-bg);color:var(--bad)} .chip.media,.chip.warn{background:var(--warn-bg);color:var(--warn)} .chip.baja{background:var(--surface2);color:var(--muted)}
.chip.ok{background:var(--ok-bg);color:var(--ok)} .chip.info{background:var(--info-bg);color:var(--info)} .chip.opex{background:var(--andon);color:#fff}
.tbls{display:flex;gap:6px;flex-wrap:wrap}
.tbls .chip{font-family:var(--mono);font-weight:500;background:var(--surface2);border:1px solid var(--line)}
.btn{border:1px solid var(--line);background:var(--surface);border-radius:6px;padding:6px 12px;font-weight:500}
.btn:hover{background:var(--surface2)}
.btn.pri{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}
.btn.sm{padding:3px 9px;font-size:12.5px}
.btn.on{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}
.seg{display:inline-flex;gap:4px;flex-wrap:wrap}

/* ventana mockup */
.av{width:24px;height:24px;border-radius:50%;background:var(--brand-ink);color:var(--brand);display:grid;place-items:center;font-size:11px;font-weight:700}
.win-b{padding:16px;display:grid;gap:14px;min-width:0}
.card{background:var(--surface);border:1px solid var(--line);border-radius:8px;min-width:0}
.card-h{padding:10px 14px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:10px;align-items:center;flex-wrap:wrap}
.card-b{padding:14px}
.scroll-x{overflow-x:auto}
table{border-collapse:collapse;width:100%}
th{font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);text-align:left;font-weight:600;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
tr:last-child td{border-bottom:0}
.st{display:inline-grid;place-items:center;min-width:44px;height:28px;border-radius:5px;font-family:var(--mono);font-size:12px;font-weight:500;border:0;padding:0 6px}
.st.ok{background:var(--ok-bg);color:var(--ok)} .st.no{background:var(--bad-bg);color:var(--bad)} .st.fut{background:var(--surface2);color:var(--muted)} .st.fut svg{opacity:.55} .st.vac{background:var(--info-bg);color:var(--info)} .st.part,.st.late{background:var(--warn-bg);color:var(--warn)} .st.early{background:var(--info-bg);color:var(--info)} .st.pend{background:transparent;border:1.5px dashed var(--line);color:var(--muted)}
th.today,td.today{background:color-mix(in srgb,var(--andon) 8%,transparent)}
.field{display:grid;gap:4px;font-size:12.5px;color:var(--muted);font-weight:500}
input[type=text],input[type=email],input[type=password],input[type=date],select,textarea{width:100%;background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:8px 10px;color:var(--ink)}
textarea{resize:vertical;min-height:90px}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px}
.tile{display:grid;gap:6px;padding:12px 14px;border-radius:8px;background:var(--surface);border:1px solid var(--line);border-top:5px solid var(--c,var(--line))}
.tile b{font-weight:600}
.tile .n{font-family:var(--display);font-size:28px;font-weight:700;line-height:1}
.bar{height:8px;background:var(--line);border-radius:4px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--ok)}
.hbar{display:grid;grid-template-columns:150px minmax(0,1fr) 44px;gap:8px;align-items:center;font-size:12.5px;padding:3px 0}
@media (max-width:560px){.hbar{grid-template-columns:96px minmax(0,1fr) 40px}}
.kcards{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}
.k1{padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.k1 .v{font-family:var(--display);font-size:34px;font-weight:700;line-height:1;margin-top:4px}
.mth{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
@media (max-width:700px){.mth{grid-template-columns:minmax(0,1fr)}}
.mcol{background:var(--surface2);border-radius:8px;padding:10px;display:grid;gap:8px;align-content:start;min-height:120px}
.mcard{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--c,var(--f-m));border-radius:6px;padding:8px 10px;font-size:13px}
svg text{fill:var(--muted);font-family:var(--body);font-size:11px}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px}
.ctrl{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}
.ctrl .field{min-width:120px}

.tg{position:relative;width:40px;height:22px;border-radius:999px;border:1px solid var(--line);background:var(--surface2);padding:0;flex:none;transition:background .15s}
.tg::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--muted);transition:transform .15s,background .15s}
.tg[aria-checked="true"]{background:var(--brand);border-color:var(--brand)}
.tg[aria-checked="true"]::after{transform:translateX(18px);background:var(--brand-ink)}
.tg:disabled{opacity:.6;cursor:not-allowed}
.prefrow{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;align-items:center;padding:12px 14px;border-bottom:1px solid var(--line)}
.prefrow:last-child{border-bottom:0}
.prefrow b{display:block;font-weight:600} .prefrow small{color:var(--muted);font-size:12.5px}
.prefrow select{width:auto;min-width:96px;padding:5px 8px}
@media (max-width:620px){.prefrow{grid-template-columns:minmax(0,1fr) auto}.prefrow select{grid-column:1/2}}
.mailbox{border:1px solid var(--line);border-radius:10px;background:var(--surface);overflow:hidden}
.mailh{padding:12px 16px;border-bottom:1px solid var(--line);display:grid;gap:3px;font-size:12.5px;color:var(--muted);background:var(--surface2)}
.mailh b{color:var(--ink);font-size:15px;font-weight:600}
.mailb{padding:20px 22px;display:grid;gap:14px;max-width:560px;margin:0 auto}
.mailb .bigt{font-family:var(--display);font-size:56px;font-weight:700;line-height:1;color:var(--brand)}
.mailb table td{padding:7px 8px}
.cta{display:inline-block;background:var(--brand);color:var(--brand-ink);border-radius:6px;padding:9px 18px;font-weight:600;text-decoration:none;justify-self:start}
.mailf{font-size:11.5px;color:var(--muted);border-top:1px solid var(--line);padding-top:10px}
.tip{position:fixed;z-index:60;pointer-events:none;background:var(--ink);color:var(--surface);padding:6px 9px;border-radius:6px;font-size:12px;line-height:1.45;max-width:260px;box-shadow:0 4px 14px rgba(0,0,0,.25)}
.tip[hidden]{display:none}
.xh .bk{fill:var(--ink);opacity:0;pointer-events:none}.xh:hover .bk{opacity:.07}
.xh .xl{stroke:var(--muted);stroke-width:1;opacity:0;pointer-events:none}.xh:hover .xl{opacity:.7}
.hm{display:grid;grid-template-columns:64px repeat(var(--cols,5),minmax(0,1fr));gap:2px;font-size:11.5px}
.hm>span{display:grid;place-items:center;min-height:30px;border-radius:3px;font-family:var(--mono);color:var(--ink)}
.hm>span.hd{color:var(--muted);font-family:var(--body);font-weight:600;min-height:22px}
.hm>span.rl{justify-content:start;color:var(--muted)}
.hm>span.hi{color:var(--hm-hi)}
.hm>span.hb{color:var(--brand-ink)}
.hm>span.lo{box-shadow:inset 0 0 0 2px var(--bad)}
.ramp{display:inline-block;width:90px;height:10px;border-radius:3px;vertical-align:-1px;margin:0 6px}
.spark{display:block}
.kdelta{font-size:12px;color:var(--muted);margin-top:4px;display:flex;gap:6px;align-items:center}
.kdelta{flex-wrap:wrap;row-gap:0}.kdelta b{font-weight:600;white-space:nowrap}.kdelta .g{color:var(--ok)}.kdelta .r{color:var(--bad)}
.mini{display:flex;height:10px;gap:2px;min-width:90px}.mini i{display:block;border-radius:2px;min-width:2px}
.fr{display:grid;grid-template-columns:90px minmax(0,1fr) 118px;gap:8px;align-items:center;font-size:12.5px;padding:3px 0}
@media (max-width:560px){.fr{grid-template-columns:78px minmax(0,1fr) 80px}}

/* login */
.login{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);min-height:640px;border-radius:14px;overflow:hidden;border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow)}
@media (max-width:820px){.login{grid-template-columns:minmax(0,1fr)}.login-l{display:none !important}}
.login-l{position:relative;background:radial-gradient(120% 90% at 0% 0%,#216253 0%,#16443b 48%,#0c2822 100%);color:#fff;padding:40px 44px;display:flex;flex-direction:column;justify-content:space-between;gap:28px;overflow:hidden}
.login-l::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.055) 1px,transparent 1px);background-size:38px 38px;-webkit-mask-image:linear-gradient(160deg,#000,transparent 70%);mask-image:linear-gradient(160deg,#000,transparent 70%);pointer-events:none}
.login-l>*{position:relative}
.lbrand{display:flex;align-items:center;gap:12px;font-family:var(--display);font-weight:700;font-size:30px;letter-spacing:.08em}
.lmark{display:grid;grid-template-columns:repeat(5,5px);gap:3px;align-items:end;height:26px}
.lmark i{display:block;border-radius:1.5px}
.lmark i:nth-child(1){height:100%;background:#4fc4b0}.lmark i:nth-child(2){height:78%;background:#7fa8e6}.lmark i:nth-child(3){height:56%;background:#b896dc}.lmark i:nth-child(4){height:70%;background:#e3a84a}.lmark i:nth-child(5){height:40%;background:#9db0bb}
.lcopy h2{font-size:clamp(40px,5vw,62px);line-height:.98;letter-spacing:.01em;margin:10px 0 14px;font-weight:700}
.lcopy p{margin:0;max-width:36ch;font-size:15.5px;opacity:.86}
.lboard{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);border-radius:12px;padding:14px 16px;display:grid;gap:9px;backdrop-filter:blur(6px);max-width:430px}
.lb-h{display:flex;justify-content:space-between;font-size:12px;letter-spacing:.06em;text-transform:uppercase;opacity:.85}
.lb-r{display:flex;align-items:center;gap:10px;font-size:13.5px}
.lb-r .ck{width:20px;height:20px;border-radius:5px;background:#5fc08a;color:#0c2822;display:grid;place-items:center;font-size:12px;font-weight:700;flex:none}
.lb-r.now .ck{background:transparent;border:2px solid #f2c36b}
.lb-r .t{opacity:.7;font-size:12px}.lb-r .n{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lb-p{font-size:10.5px;padding:1px 7px;border-radius:99px;background:rgba(255,255,255,.16)}.lb-p.now{background:#f2c36b;color:#3b2a05;font-weight:600}
.lb-w{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-top:4px}.lb-w i{display:block;height:6px;border-radius:3px;background:#5fc08a}.lb-w i.a{background:#f2c36b}.lb-w i:nth-child(n+4){background:rgba(255,255,255,.2)}
@media (prefers-reduced-motion:no-preference){.lb-r .ck{animation:pop .45s cubic-bezier(.2,1.4,.4,1) both}@keyframes pop{from{transform:scale(.3)}to{transform:scale(1)}}.shake{animation:shk .35s}@keyframes shk{25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}.spin{animation:sp .8s linear infinite}@keyframes sp{to{transform:rotate(360deg)}}}
.login-r{padding:48px clamp(24px,5vw,64px);display:grid;align-content:center}
.lform{display:grid;gap:18px;max-width:400px;width:100%;margin:0 auto}
.lform h3{font-size:38px}
.lform form{display:grid;gap:16px}
.fi{position:relative;display:block}
.fi>svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}
.fi input{padding:12px 12px 12px 40px;font-size:15px;border-radius:8px}
.fi input:focus{outline:0;border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 25%,transparent)}
.fi.err input{border-color:var(--bad);box-shadow:0 0 0 3px color-mix(in srgb,var(--bad) 18%,transparent)}
.fi.pw input{padding-right:44px}
.fi.pw button{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:0;color:var(--muted);padding:6px;border-radius:6px;display:grid}
.fi.pw button:hover{background:var(--surface2);color:var(--ink)}
.banner{padding:11px 13px;border-radius:8px;font-size:13.5px;display:flex;gap:10px;align-items:flex-start;line-height:1.4}
.banner svg{flex:none;margin-top:1px}
.banner.info{background:var(--info-bg);color:var(--info)}.banner.bad{background:var(--bad-bg);color:var(--bad)}.banner.warn{background:var(--warn-bg);color:var(--warn)}.banner.ok{background:var(--ok-bg);color:var(--ok)}
.lbtn{background:var(--brand);color:var(--brand-ink);border:0;border-radius:8px;padding:13px 16px;font-weight:600;font-size:15.5px;display:flex;gap:8px;align-items:center;justify-content:center}
.lbtn:hover{filter:brightness(1.08)}.lbtn[disabled]{opacity:.75;cursor:progress}
.spin{width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;display:inline-block}
.links{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:13px;align-items:center}
.links a,.lfoot a{color:var(--info);text-decoration:none;font-weight:500}.links a:hover,.lfoot a:hover{text-decoration:underline}
.switchlike{display:flex;gap:7px;align-items:center;color:var(--muted)}
.lfoot{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;font-size:12.5px;color:var(--muted);border-top:1px solid var(--line);padding-top:14px}

/* mapa de roles */
.matrix td,.matrix th{text-align:center} .matrix td:first-child,.matrix th:first-child{text-align:left}
.dot{display:inline-block;width:12px;height:12px;border-radius:50%;background:var(--ok)} .dot.c{background:var(--warn)} .dot.n{background:var(--line)}

/* ER */
.er{width:100%;min-width:1000px}
.er .tb{fill:var(--surface);stroke:var(--line)}
.er .th{fill:var(--brand)}
.er text.tt{fill:var(--brand-ink);font-weight:600;font-size:12px;font-family:var(--mono)}
.er text.cc{fill:var(--ink);font-family:var(--mono);font-size:10.5px}
.er text.pk{fill:var(--andon);font-weight:700}
.er text.fk{fill:var(--info);font-weight:700}
.er line{stroke:var(--muted);stroke-width:1.3}
.er line.dash{stroke-dasharray:5 4}
.er .lab{fill:var(--muted);font-size:10px}
.mig td{vertical-align:top}
@media (prefers-reduced-motion:reduce){*{transition:none !important}}

/* app shell de los mockups */
.rail{background:#12382f;color:#cfe3dc;padding:14px 10px;display:flex;flex-direction:column;gap:14px;min-height:100%}
.rail .logo{display:grid;grid-template-columns:repeat(5,5px);gap:3px;align-items:end;height:22px;margin:2px 8px 6px}
.rail .logo i{display:block;border-radius:1.5px}
.rail .logo i:nth-child(1){height:100%;background:#4fc4b0}.rail .logo i:nth-child(2){height:78%;background:#7fa8e6}.rail .logo i:nth-child(3){height:56%;background:#b896dc}.rail .logo i:nth-child(4){height:70%;background:#e3a84a}.rail .logo i:nth-child(5){height:40%;background:#9db0bb}
.rg{display:grid;gap:2px;padding-top:12px;border-top:1px solid rgba(255,255,255,.1)}.rg:first-of-type{border-top:0;padding-top:0}
.ri{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;font-size:13px;position:relative}
.ri em{font-style:normal;white-space:nowrap}
.ri.on{background:rgba(255,255,255,.13);color:#fff;font-weight:600}
.ri.on::before{content:"";position:absolute;left:-10px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:#ff8670}
.appmain{min-width:0;display:flex;flex-direction:column}
.appbar{display:flex;align-items:center;gap:14px;padding:10px 16px;background:var(--surface);border-bottom:1px solid var(--line)}
.srch{display:flex;align-items:center;gap:8px;flex:1;max-width:320px;padding:7px 12px;border-radius:99px;background:var(--surface2);color:var(--muted);font-size:13px}
.bell{position:relative;margin-left:auto;color:var(--muted);display:grid}
.bell b{position:absolute;top:-6px;right:-8px;background:var(--andon);color:#fff;font-size:10px;min-width:16px;height:16px;border-radius:99px;display:grid;place-items:center;font-weight:600}
.usr{display:flex;align-items:center;gap:9px}
.usr .av{width:32px;height:32px;border-radius:50%;background:var(--brand);color:var(--brand-ink);display:grid;place-items:center;font-weight:700;font-size:13px}
.usr .un{display:grid;line-height:1.15;font-size:13px}.usr .un small{font-size:11px;color:var(--muted)}
.app .win-b{padding:18px 20px 22px}
.pg-h{display:flex;justify-content:space-between;align-items:flex-end;gap:12px}
.pg-h h2{font-size:30px}
@container (max-width:760px){.win.app{grid-template-columns:56px minmax(0,1fr)}.ri em{display:none}.ri{justify-content:center;padding:9px 0}.rail{padding:12px 6px}.rail .logo{margin:2px auto 6px}.ri.on::before{left:-6px}.usr .un{display:none}}
@container (max-width:520px){.win.app{grid-template-columns:minmax(0,1fr)}.rail{display:none}.srch{display:none}.bell{margin-left:0}.usr{margin-left:auto}.app .win-b{padding:14px}}
/* refinamientos generales */
.card{border-radius:10px;box-shadow:var(--shadow)}
.card-h{background:color-mix(in srgb,var(--surface2) 55%,var(--surface))}
tbody tr:hover td{background:color-mix(in srgb,var(--surface2) 70%,transparent)}
th{background:color-mix(in srgb,var(--surface2) 40%,var(--surface))}
.chip.alta::before,.chip.media::before,.chip.baja::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.st{border-radius:7px;font-weight:600;letter-spacing:.01em}
button.st{cursor:pointer}button.st[disabled]{cursor:default}
.k1{border-radius:10px;border-top:4px solid var(--brand)}
.kcards .k1:nth-child(2){border-top-color:var(--info)}.kcards .k1:nth-child(3){border-top-color:var(--ok)}.kcards .k1:nth-child(4){border-top-color:var(--bad)}
.ring{--p:0;width:96px;height:96px;border-radius:50%;background:conic-gradient(var(--ok) calc(var(--p)*1%),var(--line) 0);display:grid;place-items:center;flex:none}
.ring i{font-style:normal;width:74px;height:74px;border-radius:50%;background:var(--surface);display:grid;place-items:center;text-align:center;font-family:var(--display);font-size:28px;font-weight:700;line-height:1;align-content:center}
.ring i small{display:block;font-family:var(--body);font-size:10.5px;font-weight:500;color:var(--muted)}
.hero{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(190px,.7fr);gap:18px;align-items:center;padding:16px 18px;background:linear-gradient(135deg,color-mix(in srgb,var(--brand) 9%,var(--surface)),var(--surface));border:1px solid var(--line);border-radius:12px}
.hero .next{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--andon);border-radius:10px;padding:12px 14px;display:grid;gap:4px}
@container (max-width:640px){.hero{grid-template-columns:auto minmax(0,1fr)}.hero .next{grid-column:1/-1}}
.hchips{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.tile2{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:4px 12px;align-items:center;padding:13px 14px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.tile2 .t-i{width:36px;height:36px;border-radius:9px;display:grid;place-items:center;color:var(--c);background:color-mix(in srgb,var(--c) 14%,transparent)}
.tile2 .t-n{font-size:15px;font-weight:600}
.tile2 .bar{margin-top:8px}
tr.now td{padding:0;border:0;background:none !important}
tr.now td span{display:flex;align-items:center;gap:10px;font-size:11.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--andon);padding:3px 10px}
tr.now td span::after{content:"";flex:1;height:2px;background:var(--andon);opacity:.5;border-radius:2px}

/* ===== Aplicación real (no maqueta) ===== */
body{padding:0}
body.app{display:grid;grid-template-columns:172px minmax(0,1fr);min-height:100vh;background:var(--bg)}
@media (max-width:760px){body.app{grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr}
  .rail{flex-direction:row;overflow-x:auto;padding:8px;gap:6px;min-height:0;align-items:center}.rail .logo{display:none}.ri em{font-size:12px}}
.rail{position:sticky;top:0;height:100vh;align-self:start}
@media (max-width:760px){.rail{position:static;height:auto}}
.rail a.ri{color:inherit;text-decoration:none}
.rail a.ri:hover{background:rgba(255,255,255,.08)}
.rail .out{margin-top:auto}
@media (max-width:760px){.rail .out{margin-top:0;margin-left:auto}}
.appbar .brand{font-family:var(--display);font-size:22px;letter-spacing:.06em}
.appbar .usr{margin-left:auto}
main.win-b{padding:18px;display:grid;gap:14px;align-content:start;min-width:0}
.pg-h h1{font-size:30px}
.kcards .sub{font-size:12px;color:var(--muted);margin-top:2px}
.k1 .v.bad{color:var(--bad)}
.dnum{font-weight:400;text-transform:none;letter-spacing:0;color:var(--muted)}
.legend{margin-top:4px}
.lg{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px}
.lg.ok{background:var(--ok)}.lg.early{background:var(--info)}.lg.late{background:var(--warn)}.lg.no{background:var(--bad)}
.st{cursor:pointer}.st[data-permit="0"]{cursor:default}
.st.early,.st.late{background:var(--ok-bg);color:var(--ok)}.st.pend{background:var(--surface);color:var(--muted);border:1px dashed var(--muted)}
.chip.info{background:var(--info-bg);color:var(--info)}.chip.opex{background:var(--andon);color:#fff}
#msg{padding:11px 13px;border-radius:8px;font-size:13.5px}
#msg.ok{background:var(--ok-bg);color:var(--ok)}#msg.info{background:var(--info-bg);color:var(--info)}#msg.warn{background:var(--warn-bg);color:var(--warn)}#msg.bad{background:var(--bad-bg);color:var(--bad)}
dialog{border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);padding:20px;max-width:420px;width:calc(100% - 32px)}
dialog::backdrop{background:rgba(10,20,16,.5)}
#dlgform{display:grid;gap:12px}.dlgbtns{display:flex;gap:8px;justify-content:flex-end}
body.login-page{display:grid;place-items:center;min-height:100vh;padding:16px}
body.login-page .login{width:100%;max-width:1040px}
.pw{position:relative;display:block}.pw input{padding-right:64px}
.pw .ghost{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:0;color:var(--muted);padding:6px 8px;border-radius:6px;font-size:12.5px}
.field input,.field textarea{font-size:15px}
.login-l{justify-content:space-between}
a{color:var(--info)}
.lcopy .eyebrow{color:#9fd4c4}
input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--brand);outline-offset:1px}

/* Formularios de gestión */
.frm2{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:10px 0}
.frm{display:grid;gap:10px;max-width:640px}
fieldset.chk{border:1px solid var(--line);border-radius:6px;padding:8px 12px;margin:8px 0}
fieldset.chk legend{font-size:12.5px;color:var(--muted);font-weight:500;padding:0 4px}
fieldset.chk label{margin-right:14px;font-size:14px;display:inline-flex;gap:5px;align-items:center}
[hidden]{display:none!important}
.row-btns{display:flex;gap:6px;flex-wrap:wrap}
.btn.bad{color:var(--bad);border-color:var(--bad)}
dialog{border:1px solid var(--line);border-radius:10px;padding:18px;max-width:560px;width:92vw;background:var(--surface);color:var(--ink)}
dialog::backdrop{background:rgba(0,0,0,.4)}
.card-b{padding:14px}
.two{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px}
input[type=time],input[type=number]{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:8px 10px;color:var(--ink)}
.small{font-size:12.5px}

/* Informes */
.gfx{width:100%;height:auto;max-width:640px;display:block}
.gt{font-size:11px;fill:var(--muted);font-family:var(--mono)}
.hmt{border-collapse:separate;border-spacing:2px;width:auto}
.hmt td{padding:4px 8px;border:0;font-size:12px}
.hmt td.hc{text-align:center;min-width:44px;border-radius:3px;font-family:var(--mono)}
.hc.h4{background:var(--ok-bg);color:var(--ok)}.hc.h3{background:var(--info-bg);color:var(--info)}.hc.h2{background:var(--warn-bg);color:var(--warn)}.hc.h1{background:var(--bad-bg);color:var(--bad)}.hc.na{color:var(--muted)}
a.btn{text-decoration:none;display:inline-block}

/* ---- Estilos del mockup (barra agrupada, buscador, hero, tarjetas) ---- */
body.app{grid-template-columns:200px minmax(0,1fr)}
.rail{background:#12382f;color:#cfe3dc;padding:14px 12px;display:flex;flex-direction:column;gap:14px;position:sticky;top:0;height:100vh;align-self:start}
.rail .logo{display:flex;align-items:flex-end;gap:3px;height:26px;margin:4px 8px 8px;padding-bottom:12px;border-bottom:0;box-sizing:content-box}
.rail .logo i{display:block;width:5px;border-radius:1.5px}
.rail .logo i:nth-child(1){height:100%;background:#4fc4b0}.rail .logo i:nth-child(2){height:78%;background:#7fa8e6}.rail .logo i:nth-child(3){height:56%;background:#b896dc}.rail .logo i:nth-child(4){height:70%;background:#e3a84a}.rail .logo i:nth-child(5){height:40%;background:#9db0bb}
.rg{display:grid;gap:2px;padding-top:12px;border-top:1px solid rgba(255,255,255,.1)}
.rg:first-of-type{border-top:0;padding-top:0}
.rg.out{margin-top:auto}
.ri{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;font-size:13.5px;position:relative;color:#cfe3dc;text-decoration:none}
.ri em{font-style:normal;white-space:nowrap}
.ri .ic{flex:none}
.rail a.ri:hover{background:rgba(255,255,255,.08);color:#fff}
.ri.on{background:rgba(255,255,255,.13);color:#fff;font-weight:600}
.ri.on::before{content:"";position:absolute;left:-12px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:#ff8670}
.appmain{min-width:0;display:flex;flex-direction:column}
.appbar{display:flex;align-items:center;gap:14px;padding:10px 20px;background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}
.srch{display:flex;align-items:center;gap:8px;flex:1;max-width:320px;padding:7px 12px;border-radius:99px;background:var(--surface2);color:var(--muted);font-size:13px;margin:0}
.srch input{border:0;background:transparent;padding:0;width:100%;box-shadow:none;border-radius:0;font-size:13px}
.srch input:focus{outline:0;box-shadow:none}
.bell{position:relative;margin-left:auto;color:var(--muted);display:grid;text-decoration:none}
.bell b{position:absolute;top:-6px;right:-8px;background:var(--andon);color:#fff;font-size:10px;min-width:16px;height:16px;padding:0 3px;border-radius:99px;display:grid;place-items:center;font-weight:600}
.usr{display:flex;align-items:center;gap:8px}
.usr .av{width:32px;height:32px;font-size:14px;background:var(--brand);color:var(--brand-ink)}
.usr .un{display:grid;line-height:1.2}.usr .un b{font-size:13px}.usr .un small{color:var(--muted);font-size:11.5px}
.app .win-b{padding:20px 24px;gap:16px;max-width:1280px;width:100%}
.pg-h h1{font-family:var(--display);font-size:32px;line-height:1.1;margin:2px 0 0}
.subtabs{display:flex;gap:4px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.subtabs a{padding:8px 14px;color:var(--muted);text-decoration:none;font-weight:500;border-bottom:2px solid transparent;margin-bottom:-1px}
.subtabs a:hover{color:var(--ink)}
.subtabs a.on{color:var(--brand);border-bottom-color:var(--brand);font-weight:600}
.ring{--p:0;width:96px;height:96px;border-radius:50%;background:conic-gradient(var(--ok) calc(var(--p)*1%),var(--line) 0);display:grid;place-items:center;flex:none}
.hero{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(190px,.7fr);gap:18px;align-items:center;padding:16px 18px;background:linear-gradient(135deg,color-mix(in srgb,var(--brand) 9%,var(--surface)),var(--surface));border:1px solid var(--line);border-radius:12px}
.hero h2{margin:4px 0 0;font-family:var(--display);font-size:32px;line-height:1.1}
.hero .next{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--andon);border-radius:10px;padding:12px 14px;display:grid;gap:4px}
.hchips{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}
a.tile2{color:inherit;text-decoration:none}a.tile2:hover{border-color:var(--c,var(--brand));box-shadow:0 2px 8px rgba(20,30,26,.1)}
.tile2{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:4px 12px;align-items:center;padding:13px 14px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.tile2 .t-i{width:36px;height:36px;border-radius:9px;display:grid;place-items:center;color:var(--c);background:color-mix(in srgb,var(--c) 14%,transparent)}
.tile2 .t-n{font-size:15px;font-weight:600}
.tile2 .bar{margin-top:8px}
.card,.panel,.k1{border-radius:10px}
.btn.sm{padding:4px 10px;font-size:12.5px}
#dlg{border:1px solid var(--line);border-radius:14px;padding:22px;max-width:440px;width:calc(100% - 32px);background:var(--surface);color:var(--ink);box-shadow:0 20px 50px rgba(0,0,0,.3)}
#dlg::backdrop{background:rgba(10,20,16,.5);backdrop-filter:blur(2px)}
#dlg h3{margin:0 0 4px;font-family:var(--display);font-size:24px}
#dlg .field{margin-top:12px}
.dlgbtns{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}
@media (max-width:1000px){body.app{grid-template-columns:64px minmax(0,1fr)}.ri em{display:none}.ri{justify-content:center;padding:10px 0}.rail{padding:14px 8px}.rail .logo{margin:4px auto 8px}.ri.on::before{left:-8px}.usr .un{display:none}.hero{grid-template-columns:auto minmax(0,1fr)}.hero .next{grid-column:1/-1}}
@media (max-width:760px){body.app{grid-template-columns:minmax(0,1fr)}.rail{flex-direction:row;padding:6px 8px;gap:4px;overflow-x:auto;height:auto;position:sticky;top:0;z-index:20;align-items:center}.rail .logo{display:none}.rg{display:flex;border:0;padding:0;gap:2px}.rg.out{margin:0 0 0 auto}.ri{padding:9px 12px}.ri.on::before{display:none}.srch{display:none}.appbar{position:static}.app .win-b{padding:14px}.pg-h h1{font-size:26px}}
.appbar .usr{margin-left:0}

/* ---- Pantallas de trabajo (mockup) ---- */
.barra-sup{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap}
.field-inline{margin:0}.field-inline select{min-width:180px}
.kcards.cinco{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.k1{border-top-color:var(--c,var(--brand))!important}
.kcards .k1:nth-child(n){border-top-color:var(--c,var(--brand))}
table.semana td.hora{white-space:nowrap}
tr.ahora td{padding:0;border:0;background:transparent}
tr.ahora span{display:flex;align-items:center;gap:10px;color:var(--andon);font-size:11px;font-weight:700;letter-spacing:.08em;padding:3px 10px}
tr.ahora span::after{content:"";flex:1;height:2px;background:var(--andon);border-radius:2px}
.dlgw{border:1px solid var(--line);border-radius:14px;padding:22px;max-width:560px;width:calc(100% - 32px);background:var(--surface);color:var(--ink);box-shadow:0 20px 50px rgba(0,0,0,.3)}
.dlgw::backdrop{background:rgba(10,20,16,.5);backdrop-filter:blur(2px)}
.dlgw h3{margin:0;font-family:var(--display);font-size:24px}
.dlgw .frm{max-width:none}
.kanban{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;align-items:start}
.tri3{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;align-items:start}
.mrow{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin:6px 0}
.mcol .eyebrow{margin-bottom:2px}
.mcard{border-left-width:4px}
.notas2{display:grid;grid-template-columns:minmax(220px,1fr) minmax(0,2fr);gap:14px;align-items:start}
@media (max-width:760px){.notas2{grid-template-columns:minmax(0,1fr)}}
.nota-i{display:grid;gap:2px;padding:9px 11px;border:1px solid var(--line);border-radius:8px;color:inherit;text-decoration:none;font-size:13px}
.nota-i:hover{background:var(--surface2)}.nota-i.on{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 8%,var(--surface))}
.seg{display:flex;gap:6px;flex-wrap:wrap}
.btn.on{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}
.tipo{display:inline-block;color:#fff;font-size:11.5px;font-weight:600;padding:2px 9px;border-radius:999px}

/* ---- Responsive: Salir siempre a la vista ---- */
.rail{height:100vh;height:100dvh;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
.rail .rg.out{margin-top:auto}
.salir{display:inline-flex;align-items:center;gap:6px;padding:7px 10px;border-radius:8px;border:1px solid var(--line);color:var(--ink);text-decoration:none;font-size:13px;font-weight:500;flex:none}
.salir:hover{background:var(--surface2);border-color:var(--bad);color:var(--bad)}
@media (max-width:1000px){.salir span{display:none}.salir{padding:7px}}
@media (max-height:760px){.rail{gap:8px;padding-top:10px}.rail .logo{margin-bottom:2px;padding-bottom:6px}.ri{padding:6px 10px}}
@media (max-width:760px){
  .rail{height:auto;overflow-y:visible;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .rail::-webkit-scrollbar{display:none}
  .rail .rg.out{display:none}
  .ri{flex-direction:column;gap:2px;padding:6px 10px;min-width:64px;text-align:center}
  .ri em{display:block;font-size:10.5px}
  .ri .ic{width:20px;height:20px}
  .appbar{padding:8px 12px;gap:10px}
  .bell{margin-left:auto}
  .usr .un{display:none}
  .app .win-b{padding:12px}
  .hero{grid-template-columns:minmax(0,1fr)!important;justify-items:start}
  .barra-sup>*{max-width:100%}
  .subtabs{overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none}.subtabs a{white-space:nowrap}
  .card .scroll-x{overflow-x:auto}
  .tiles{grid-template-columns:minmax(0,1fr)}
  dialog{max-height:92vh;overflow:auto}
}

/* ---- Perfil ---- */
.av.fotoav{padding:0;overflow:hidden;background:var(--surface2)}
.av.fotoav img{width:100%;height:100%;object-fit:cover;display:block}
.av.grande{width:132px;height:132px;font-size:56px;font-family:var(--display);border:4px solid var(--surface);box-shadow:0 0 0 2px var(--line),0 4px 14px rgba(20,30,26,.15)}
.perfil{display:grid;grid-template-columns:240px minmax(0,1fr);overflow:hidden}
.perfil-foto{display:grid;gap:10px;justify-items:center;align-content:start;padding:28px 20px;background:linear-gradient(180deg,color-mix(in srgb,var(--brand) 10%,var(--surface)),var(--surface));border-right:1px solid var(--line);text-align:center}
.perfil-foto form{margin:0}
.perfil-datos{padding:24px 28px;display:grid;gap:14px;align-content:start}
.perfil-nombre{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.perfil-nombre h2{margin:0;font-family:var(--display);font-size:30px}
.dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px 24px;margin:0}
.dl>div{border-bottom:1px solid var(--line);padding-bottom:8px}
.dl dt{font-size:11.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600}
.dl dd{margin:2px 0 0;font-weight:500;overflow-wrap:anywhere}
@media (max-width:760px){.perfil{grid-template-columns:minmax(0,1fr)}.perfil-foto{border-right:0;border-bottom:1px solid var(--line)}.perfil-datos{padding:18px}}
.aviso{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:14px;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line)}
.aviso-t{display:grid;gap:2px}
.aviso-c{display:flex;align-items:center;gap:6px;color:var(--muted)}
.aviso-c input{width:auto;padding:5px 8px}.aviso-c input[type=number]{width:72px}
.sw{position:relative;display:inline-block;width:42px;height:24px;flex:none}
.sw input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer;z-index:1;width:100%;height:100%}
.sw span{position:absolute;inset:0;border-radius:999px;background:var(--line);transition:background .15s}
.sw span::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.3);transition:transform .15s}
.sw input:checked+span{background:var(--brand)}.sw input:checked+span::after{transform:translateX(18px)}
.sw input:focus-visible+span{outline:2px solid var(--brand);outline-offset:2px}
@media (max-width:760px){.aviso{grid-template-columns:minmax(0,1fr) auto}.aviso-c{grid-column:1}}
.aviso .sw{grid-column:3}.aviso-c{grid-column:2}@media (max-width:760px){.aviso-c{grid-column:1}.aviso .sw{grid-column:2;grid-row:1}}
fieldset.alcance{display:grid;gap:8px;border-color:var(--brand)}
.opt{display:flex!important;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:10px;cursor:pointer}
.opt:hover{background:var(--surface2)}
.opt input{margin-top:3px}
.opt span{display:grid;gap:2px}.opt small{color:var(--muted);font-size:12.5px}
.opt:has(input:checked){border-color:var(--brand);background:color-mix(in srgb,var(--brand) 8%,var(--surface))}

/* ---- Distribución a pantalla completa ---- */
.app .win-b{max-width:none;width:100%;padding:24px clamp(16px,2.2vw,40px) 40px;gap:20px}
.appbar{padding-inline:clamp(16px,2.2vw,40px)}
.srch{max-width:420px}
.hero{padding:20px 24px}
.tiles{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
.kcards.cinco{grid-template-columns:repeat(5,minmax(0,1fr))}
@media (max-width:900px){.kcards.cinco{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}}
table.semana th,table.semana td{padding:10px 14px}
table.semana td.hora{width:80px}
/* Inicio: la lista de hoy junto a los indicadores en pantallas anchas */
@media (min-width:1500px){
  .inicio-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(380px,1fr);gap:20px;align-items:start}
  .inicio-grid>.col{display:grid;gap:16px;min-width:0}
}
.barra-sup{align-items:center;padding:2px 0}
.barra-sup .field{display:flex;flex-direction:row;align-items:center;gap:10px;color:var(--ink);font-weight:600}
.barra-sup .field select{width:auto;min-width:190px;font-weight:400}
.pg-h{margin-bottom:-6px}
.app .win-b{gap:16px}

/* ---- Diálogo de evidencia ---- */
#dlg{max-width:500px;padding:0;overflow:hidden}
#dlgform{gap:14px;padding:22px 24px 20px}
#dlg .dlg-h{display:flex;align-items:center;gap:12px;margin-bottom:2px}
#dlg .dlg-ic{width:44px;height:44px;border-radius:12px;background:var(--brand);color:#fff;display:grid;place-items:center;flex:none}
#dlg h3{margin:0;font-size:22px;line-height:1.15}
#dlg .field{margin:0;display:grid;gap:6px;font-weight:600;font-size:13px}
#dlg textarea{width:100%;box-sizing:border-box;resize:vertical;min-height:76px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;font:inherit;font-weight:400;background:var(--surface);color:var(--ink)}
#dlg textarea:focus,.drop:focus-visible{outline:2px solid var(--brand);outline-offset:1px}
.drop{border:2px dashed var(--line);border-radius:12px;background:color-mix(in srgb,var(--surface) 92%,var(--brand) 8%);padding:14px;transition:border-color .15s,background .15s;font-weight:400}
.drop.sobre{border-color:var(--brand);background:color-mix(in srgb,var(--surface) 82%,var(--brand) 18%)}
.drop-vacio{display:grid;justify-items:center;gap:4px;text-align:center;color:var(--ink)}
.drop-vacio svg{color:var(--brand);opacity:.85}
.drop-btns{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:8px}
.drop-btns .btn{display:inline-flex;align-items:center;gap:6px}
.drop-prev{display:flex;align-items:center;gap:12px}
.drop-prev img{width:72px;height:72px;object-fit:cover;border-radius:10px;border:1px solid var(--line);flex:none}
.drop-prev div{display:grid;min-width:0;flex:1}.drop-prev b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.drop-cam video{width:100%;max-height:260px;border-radius:10px;background:#000;display:block}
#dlgerr{color:var(--bad);min-height:0}
#dlg .dlgbtns{margin-top:4px}
@media (max-width:520px){#dlgform{padding:18px 16px}.drop-prev img{width:56px;height:56px}}

/* ---- Diarias: encabezado y score fijos, solo se desplaza la lista (escritorio) ---- */
@media (min-width:761px) and (min-height:620px){
  body.app.fija{height:100vh;height:100dvh;overflow:hidden}
  .fija .appmain{height:100vh;height:100dvh;min-height:0;overflow:hidden}
  .fija main.win-b{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden;gap:12px;padding-top:16px;padding-bottom:14px}
  .fija main.win-b>*{flex:none}
  .fija main.win-b>.card.lista{flex:1 1 auto;min-height:160px;display:flex;flex-direction:column;overflow:hidden}
  .fija .lista>.card-h{flex:none}
  .fija .lista>.scroll-x{flex:1 1 auto;min-height:0;overflow:auto}
  .fija .lista thead th{position:sticky;top:0;z-index:2;background:var(--surface);box-shadow:0 1px 0 var(--line)}
  .fija .kcards .k1{padding-top:10px;padding-bottom:10px}
  .fija .kcards .v{font-size:26px}
  .fija .pg-h h1{font-size:28px}
  .fija .legend{margin:0}.fija main.win-b>p.muted{margin:0}
}

/* ---- Resaltar lo de ahora (semana / mes actual) ---- */
table th.cur{color:var(--brand);box-shadow:inset 0 -3px 0 var(--brand);background:color-mix(in srgb,var(--surface) 90%,var(--brand) 10%)}
.mcol.cur{outline:2px solid var(--brand);outline-offset:-2px;background:color-mix(in srgb,var(--surface) 94%,var(--brand) 6%)}

/* ---- Respaldo: actividades que cubro de otra persona (morado) ---- */
.chip.resp{background:var(--resp-bg);color:var(--resp)}
i.lg.resp{background:var(--resp-bg);box-shadow:0 0 0 2px var(--resp) inset}
table.semana tr.resp>td{background:color-mix(in srgb,var(--surface) 90%,var(--resp) 10%)}
table.semana tr.resp>td:first-child{box-shadow:inset 4px 0 0 var(--resp)}
.st.resp{box-shadow:0 0 0 2px var(--resp)}
.st.cov{background:var(--resp-bg);color:var(--resp);opacity:.85;cursor:default}

table tr.resp>td{background:color-mix(in srgb,var(--surface) 90%,var(--resp) 10%)}table tr.resp>td:first-child{box-shadow:inset 4px 0 0 var(--resp)}

/* ---- Menú lateral siempre fijo (no se mueve con el scroll) ---- */
@media (min-width:761px){
  body.app{display:block;padding-left:200px;margin:0}
  .rail{position:fixed;left:0;top:0;bottom:0;height:auto;width:200px;overflow-y:auto;z-index:30;align-self:auto}
  .appmain{min-height:100vh}
}
@media (min-width:761px) and (max-width:1000px){
  body.app{padding-left:64px;margin:0}
  .rail{width:64px}
}

/* ---- Móvil: diálogo de evidencia como hoja inferior, sin zoom de iOS ---- */
@media (max-width:640px){
  input,select,textarea{font-size:16px !important}
  #dlg{width:100%;max-width:100%;margin:auto 0 0;border-radius:20px 20px 0 0;border-bottom:0;max-height:92vh;max-height:92dvh;overflow-y:auto;overflow-x:hidden;box-shadow:0 -10px 40px rgba(0,0,0,.35)}
  #dlgform{padding:16px 16px calc(14px + env(safe-area-inset-bottom));gap:12px}
  #dlg .dlg-h{position:relative;padding-top:10px}
  #dlg .dlg-h::before{content:"";position:absolute;top:-6px;left:50%;width:40px;height:4px;margin-left:-20px;border-radius:99px;background:var(--line)}
  #dlg h3{font-size:19px}
  #dlg textarea{min-height:88px}
  .drop{padding:12px}
  .drop-btns{flex-direction:column;width:100%;margin-top:4px}
  .drop-btns .btn{width:100%;justify-content:center;min-height:48px;font-size:15px}
  .dlgbtns{position:sticky;bottom:0;background:var(--surface);padding-top:8px;flex-direction:column-reverse;gap:8px}
  .dlgbtns .btn{width:100%;min-height:48px;font-size:15px;justify-content:center}
}
@media (hover:none) and (pointer:coarse){
  .drop-vacio>svg,.drop-vacio>b,.drop-vacio>span.small{display:none}
}

/* ---- Ventana «Nueva actividad»: campos en columna (no heredan el estilo en fila de la barra superior) ---- */
dialog.dlgw .frm{display:grid;gap:14px}
dialog.dlgw h3{margin:0 0 2px;font-size:22px}
dialog.dlgw .field{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;color:var(--ink);font-weight:600;font-size:13px;align-items:stretch}
dialog.dlgw .field input[type=text],dialog.dlgw .field select,dialog.dlgw .field textarea{width:100%;min-width:0;box-sizing:border-box;min-height:44px;padding:0 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);font:inherit;font-size:15px;font-weight:400}
dialog.dlgw .field input:focus,dialog.dlgw .field select:focus{outline:2px solid var(--brand);outline-offset:1px}
dialog.dlgw .frm2{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1fr);gap:12px;margin:0}
dialog.dlgw fieldset.chk{margin:0;padding:10px 12px 12px;border-radius:10px}
dialog.dlgw fieldset.chk:not(.alcance){display:flex;flex-wrap:wrap;gap:8px}
dialog.dlgw fieldset.chk:not(.alcance) legend{flex:0 0 100%}
dialog.dlgw fieldset.chk:not(.alcance) label{margin:0;min-height:40px;padding:0 12px;border:1px solid var(--line);border-radius:99px;cursor:pointer;font-weight:500}
dialog.dlgw fieldset.chk:not(.alcance) label:has(input:checked){border-color:var(--brand);background:color-mix(in srgb,var(--brand) 10%,var(--surface))}
dialog.dlgw fieldset[hidden],dialog.dlgw .field[hidden]{display:none!important}
dialog.dlgw .dlgbtns{margin-top:4px}
@media (max-width:560px){
  dialog.dlgw{padding:18px 16px;max-height:94vh;max-height:94dvh;overflow-y:auto}
  dialog.dlgw .frm2{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  dialog.dlgw .frm2 .field:first-child{grid-column:1 / -1}
}

/* Diarias en celular: la actividad queda fija a la izquierda y la tabla se centra en el día de hoy. */
.hora-m{display:none}
@media (max-width:640px){
  table.semana th.hora,table.semana td.hora,table.semana th.prio,table.semana td:nth-child(3){display:none}
  table.semana th.act,table.semana td.act{position:sticky;left:0;z-index:3;min-width:0!important;width:34vw;max-width:34vw;background:var(--surface);font-size:13px;line-height:1.25;box-shadow:1px 0 0 var(--line)}
  table.semana td.act .hora-m{display:block;font-size:11px;color:var(--muted);margin-bottom:2px}
  table.semana td.act .chip{font-size:10px;padding:1px 6px;white-space:normal}
  table.semana tr.ahora td{position:static}
}

/* Semanales en celular: la actividad queda fija a la izquierda (con su día) y se ve la semana en curso. */
.dia-m{display:none}
@media (max-width:640px){
  table.sem-per th.dia,table.sem-per td.dia,table.sem-per th.prio,table.sem-per td.prio{display:none}
  table.sem-per th.act,table.sem-per td.act{position:sticky;left:0;z-index:3;min-width:0!important;width:34vw;max-width:34vw;background:var(--surface);font-size:13px;line-height:1.25;box-shadow:1px 0 0 var(--line)}
  table.sem-per td.act .dia-m{display:block;font-size:11px;color:var(--muted);margin-bottom:2px}
}
