/* BOJ S7-PLC v7.2 — Industrial Technical */
:root{
  --bg:    #0C141C; --bg2: #121D28; --bg3: #1A2734; --bg4: #233243;
  --brd:   #27384A; --brd2:#385068; --brd3:#4D6986;
  --txt:   #EAF3FB; --txt2:#AABCCD; --txt3:#91ADBD;
  --brand: #0087BE; --brand-dk:#006991; --brand-lt:rgba(0,135,190,0.10); --brand-br:rgba(0,135,190,0.33);
  --on-brand:#031820; --on-danger:#FFFFFF; --on-ok:#FFFFFF; --control-brd:#4D7184;
  --ok:    #1D6E57; --ok-lt:rgba(29,110,87,0.12); --ok-br:#22A97B; --ok-t:#92E3C8;
  --warn:  #8E650E; --warn-lt:rgba(142,101,14,0.12); --warn-br:#D2A43D; --warn-t:#F1D58F;
  --danger:#A83E3E; --danger-lt:rgba(168,62,62,0.12); --danger-br:#D56565; --danger-t:#F1B0B0;
  --info:  #205D95; --info-lt:rgba(32,93,149,0.12); --info-br:#6EA8D9;
  --purple:#4F6981; --pur-lt:rgba(79,105,129,0.12); --pur-br:#9FBFD9;
  --shadow-panel:0 12px 30px rgba(0,0,0,0.20); --shadow-soft:0 8px 20px rgba(0,0,0,0.16);
  --focus:0 0 0 3px rgba(0,135,190,0.18); --focus-ring:#6EA8D9;
  --r:5px; --rl:8px; --max:560px; --nav-h:56px; --hdr-h:52px;
  --bh:50px; /* button height for field use */
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:rgba(234,88,12,0.1);}
html{font-size:15px;}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;background:#09121A;color:var(--txt);min-height:100vh;padding-bottom:calc(var(--nav-h) + 16px);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;}
::-webkit-scrollbar{width:3px;height:3px;}
::-webkit-scrollbar-track{background:var(--bg2);}
::-webkit-scrollbar-thumb{background:var(--brd2);border-radius:2px;}

/* HEADER */
.hdr{background:rgba(18,29,40,0.97);border-bottom:1px solid var(--brd);position:sticky;top:0;z-index:200;box-shadow:0 1px 0 rgba(255,255,255,0.02),0 10px 26px rgba(0,0,0,0.20);backdrop-filter:blur(10px);}
.hdr-inner{max-width:var(--max);margin:0 auto;display:flex;align-items:center;padding:0 14px;height:var(--hdr-h);gap:10px;}
.hdr-brand{display:flex;align-items:center;gap:9px;}
.hdr-logo{width:32px;height:32px;background:#000;border:1px solid rgba(0,157,218,0.25);border-radius:var(--r);display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;}
.hdr-title{font-size:13px;font-weight:700;color:var(--txt);letter-spacing:0.2px;margin:0;}
.hdr-sub{
  font-size:9px;color:var(--txt3);margin-top:1px;
  /* v8.4.29 — clamp para impedir que un label largo (ej. trial con contador)
     desborde el área del brand del header. Mantener una sola línea con
     ellipsis es preferible a un fragmento cortado. */
  max-width:100%;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
}
.hdr-right{margin-left:auto;display:flex;align-items:center;gap:8px;}
.lang-switcher{display:flex;align-items:center;gap:3px;background:var(--bg3);border:1px solid var(--brd);border-radius:18px;padding:3px;}
.lang-btn{border:none;background:transparent;color:var(--txt3);border-radius:14px;min-width:28px;height:24px;padding:0 6px;font-size:9px;font-weight:800;letter-spacing:.4px;cursor:pointer;font-family:inherit;}
.lang-btn.active{background:var(--brand);color:#fff;}
.lang-gate{position:fixed;inset:0;z-index:1500;background:rgba(10,14,20,.88);align-items:center;justify-content:center;padding:18px;}
.lang-card{width:min(340px,100%);background:var(--bg2);border:1px solid var(--brand-br);border-radius:var(--rl);padding:18px;box-shadow:0 24px 70px rgba(0,0,0,.45);}
.lang-card-title{font-size:18px;font-weight:800;color:var(--txt);margin-bottom:6px;}
.lang-card-text{font-size:12px;line-height:1.55;color:var(--txt2);margin-bottom:14px;}
.lang-card-options{display:grid;gap:8px;}
.lang-card-btn{min-height:46px;border:1px solid var(--brd2);border-radius:var(--r);background:var(--bg3);color:var(--txt);font-size:13px;font-weight:800;cursor:pointer;font-family:inherit;}
.lang-card-btn.active{border-color:var(--brand-br);background:var(--brand-lt);color:var(--brand);}
.cpu-status{display:flex;gap:4px;align-items:center;padding:4px 8px;background:var(--bg3);border:1px solid var(--brd);border-radius:20px;}
.cs-led{width:8px;height:8px;border-radius:50%;background:var(--brd2);transition:all 0.2s;}
.cs-led.run.on{background:#4ADE80;box-shadow:0 0 6px rgba(74,222,128,0.6);}
.cs-led.sf.on,.cs-led.bf.on{background:#EF4444;box-shadow:0 0 6px rgba(239,68,68,0.6);}
.cs-led.blink{animation:csblink 0.7s infinite;}
@keyframes csblink{0%,100%{opacity:1}50%{opacity:0.08}}
.save-dot{width:7px;height:7px;border-radius:50%;background:var(--ok-br);opacity:0;transition:opacity 0.3s;}
.save-dot.on{opacity:1;animation:csblink 0.5s infinite;}
.session-save-warning{position:fixed;z-index:260;top:calc(var(--hdr-h) + var(--nav-h) + 10px);left:50%;width:min(calc(100% - 28px),var(--max));transform:translateX(-50%);padding:10px 12px;border:1px solid var(--danger-br);border-radius:var(--r);background:#30191d;color:var(--danger-t);box-shadow:var(--shadow-panel);font-size:11px;font-weight:700;line-height:1.45;}
.session-save-warning[hidden]{display:none!important;}

/* NAV */
.nav{background:rgba(18,29,40,0.97);border-bottom:1px solid var(--brd);display:flex;overflow-x:auto;position:sticky;top:var(--hdr-h);z-index:190;height:var(--nav-h);box-shadow:0 8px 22px rgba(0,0,0,0.16);backdrop-filter:blur(10px);}
.nav::-webkit-scrollbar{height:0;}
.nb{flex:1;min-width:52px;padding:0 2px;background:none;border:none;border-bottom:2px solid transparent;color:var(--txt3);font-size:10px;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-family:inherit;transition:background 0.15s,color 0.15s,border-color 0.15s;white-space:nowrap;}
.ni{font-size:15px;line-height:1;}
.nb.active{color:var(--brand);border-bottom-color:var(--brand);background:var(--brand-lt);}
.nb:hover:not(.active){color:var(--txt2);}

/* LAYOUT */
.main{max-width:var(--max);margin:0 auto;}
.view{display:none;}
.view.active{display:block;}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;}
.vi{padding:16px 14px 22px;}
.app-footer{max-width:var(--max);margin:0 auto;padding:0 14px 18px;text-align:center;}
.app-footer .edition-note{text-align:left;margin:0 0 10px;}
.app-footer-link{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:8px 12px;border:1px solid var(--brd);border-radius:var(--r);background:var(--bg2);color:var(--txt2);font-size:11px;font-weight:700;text-decoration:none;letter-spacing:.2px;}
.app-footer-link:hover{border-color:var(--brand-br);color:var(--brand);background:var(--brand-lt);}

/* PANELS */
.panel{background:var(--bg2);border:1px solid var(--brd);border-radius:var(--rl);margin-bottom:12px;overflow:hidden;box-shadow:var(--shadow-soft);}
.ph{display:flex;align-items:center;justify-content:space-between;padding:9px 13px;border-bottom:1px solid var(--brd);background:var(--bg3);gap:8px;min-height:40px;}
.pt{font-size:9px;font-weight:700;color:var(--txt3);letter-spacing:1px;text-transform:uppercase;}

/* HERO */
.hero{display:flex;flex-direction:column;gap:12px;margin-bottom:12px;}
.hero-content{background:var(--bg2);border:1px solid var(--brand-br);border-radius:var(--rl);padding:16px;box-shadow:var(--shadow-panel);}
.hero-label{font-size:9px;font-weight:700;color:var(--brand);text-transform:uppercase;letter-spacing:1px;margin-bottom:6px;}
.hero-title{font-size:17px;font-weight:700;color:var(--txt);margin-bottom:6px;line-height:1.3;}
.hero-desc{font-size:12px;color:var(--txt2);line-height:1.6;margin-bottom:12px;}
.hero-cta{background:var(--brand);color:#fff;border:none;border-radius:var(--r);padding:13px 16px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;width:100%;transition:background 0.15s;min-height:var(--bh);}
.hero-cta:active{background:var(--brand-dk);}
.hero-status{background:var(--bg2);border:1px solid var(--brd);border-radius:var(--rl);padding:14px;}
.hs-label{font-size:9px;font-weight:700;color:var(--txt3);letter-spacing:1px;text-transform:uppercase;margin-bottom:10px;}
.hs-empty{font-size:12px;color:var(--txt3);line-height:1.5;}
.hs-item{margin-bottom:10px;}
.hs-item:last-child{margin-bottom:0;}
.hs-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px;}
.hs-rank{font-size:10px;font-weight:700;color:var(--txt3);width:18px;flex-shrink:0;}
.hs-label-txt{font-size:12px;color:var(--txt);flex:1;line-height:1.3;}
.hs-pct{font-size:12px;font-weight:700;flex-shrink:0;margin-left:8px;}
.hs-bar-track{height:4px;background:var(--brd);border-radius:2px;overflow:hidden;}
.hs-bar-fill{height:100%;border-radius:2px;transition:width 0.5s ease;}
.hs-conf{margin-top:12px;padding-top:12px;border-top:1px solid var(--brd);display:flex;align-items:center;justify-content:space-between;}
.hs-conf-lbl{font-size:10px;color:var(--txt3);}
.hs-conf-val{font-size:14px;font-weight:700;}

/* HYPOTHESIS MINI (in guided view) */
.hypo-mini{background:var(--bg3);border:1px solid var(--brd);border-radius:var(--r);padding:10px 13px;margin-bottom:0;}
.hm-title{font-size:9px;font-weight:700;color:var(--txt3);letter-spacing:0.8px;text-transform:uppercase;margin-bottom:8px;}
.hm-context{font-size:10px;font-weight:700;margin-bottom:8px;padding:6px 8px;background:var(--bg2);border:1px solid var(--brd);border-radius:var(--r);}
.hm-items{display:flex;flex-direction:column;gap:5px;}
.hm-row{display:flex;align-items:center;gap:8px;}
.hm-lbl{font-size:11px;color:var(--txt2);flex:1;line-height:1.3;}
.hm-pct{font-size:11px;font-weight:700;flex-shrink:0;min-width:32px;text-align:right;}
.hm-bar{height:3px;background:var(--brd);border-radius:2px;overflow:hidden;width:60px;flex-shrink:0;}
.hm-fill{height:100%;border-radius:2px;transition:width 0.4s;}
.hm-conf{margin-top:8px;font-size:10px;color:var(--txt3);}

/* HYPOTHESIS DETAIL */
.hypo-card{background:var(--bg2);border:1px solid var(--brd);border-radius:var(--rl);margin-bottom:10px;overflow:hidden;}
.hc-hdr{display:flex;align-items:center;gap:10px;padding:12px 14px;}
.hc-rank{font-size:16px;font-weight:700;color:var(--txt3);width:24px;flex-shrink:0;text-align:center;}
.hc-body{flex:1;}
.hc-title{font-size:13px;font-weight:700;color:var(--txt);line-height:1.3;margin-bottom:3px;}
.hc-cat{font-size:10px;color:var(--txt3);}
.hc-pct{font-size:18px;font-weight:700;flex-shrink:0;}
.hc-bar-wrap{padding:0 14px 12px;}
.hc-bar-track{height:6px;background:var(--brd);border-radius:3px;overflow:hidden;}
.hc-bar-fill{height:100%;border-radius:3px;transition:width 0.5s;}
.hc-detail{padding:12px 14px;border-top:1px solid var(--brd);background:var(--bg3);}
.hc-detail-title{font-size:9px;font-weight:700;color:var(--txt3);text-transform:uppercase;letter-spacing:0.8px;margin-bottom:7px;}
.hc-detail-text{font-size:12px;color:var(--txt2);line-height:1.6;}
.hc-actions{margin-top:10px;font-size:12px;color:var(--txt2);line-height:1.8;}

/* GUIDED DIAGNOSIS */
.phase-bar{display:flex;gap:4px;margin-bottom:14px;}
.pb-step{flex:1;height:3px;background:var(--brd);border-radius:2px;}
.pb-step.done{background:var(--ok-br);}
.pb-step.active{background:var(--brand);}
.phase-label{font-size:9px;font-weight:700;color:var(--txt3);text-transform:uppercase;letter-spacing:0.8px;margin-bottom:12px;display:flex;align-items:center;gap:8px;}
.phase-badge{background:var(--brand-lt);border:1px solid var(--brand-br);color:var(--brand);font-size:9px;font-weight:700;padding:2px 8px;border-radius:10px;}

.q-card{background:var(--bg2);border:1px solid var(--brd2);border-radius:var(--rl);padding:16px;margin-bottom:12px;box-shadow:var(--shadow-soft);}
.q-text{font-size:16px;font-weight:700;color:var(--txt);line-height:1.35;margin-bottom:8px;}
.q-kind{display:inline-flex;align-items:center;min-height:20px;margin-bottom:7px;padding:2px 8px;border:1px solid rgba(25,211,255,.28);border-radius:999px;background:rgba(25,211,255,.07);color:var(--brand);font-size:9px;font-weight:800;line-height:1.3;letter-spacing:.075em;text-transform:uppercase;}
.q-response-prompt{margin:-1px 0 8px;color:#D9E8F2;font-size:12px;font-weight:650;line-height:1.45;}
.q-rationale{background:rgba(96,165,250,.055);border-radius:7px;padding:9px 10px;border-top:0!important;}
/* v8.7.2 — Mayor contraste y tamaño del texto explicativo intermedio.
   Antes: 12px / var(--txt3) #72879B (gris apagado). Ahora: 13.5px /
   #EAF3FB (texto principal) con peso 500 para mejorar legibilidad sin
   competir con el título. */
.q-hint{font-size:13.5px;color:var(--txt);font-weight:500;line-height:1.55;margin-top:10px;padding-top:10px;border-top:1px solid var(--brd);display:flex;gap:8px;}
.q-reason{background:rgba(96,165,250,0.10);border:1px solid rgba(96,165,250,0.35);border-radius:var(--r);padding:9px 11px;margin-top:9px;font-size:12px;color:#BFD7FE;line-height:1.55;}
.q-measure{background:var(--info-lt);border:1px solid var(--info-br);border-radius:var(--r);padding:9px 11px;margin-top:8px;font-size:11px;color:var(--info-br);line-height:1.5;}
.q-safety{background:var(--danger-lt);border:1px solid var(--danger-br);border-radius:var(--r);padding:9px 11px;margin-top:8px;font-size:11px;color:var(--danger-t);line-height:1.5;}
.q-safety > strong{display:block;margin-bottom:4px;}
.q-safety > span{display:block;}
.q-donot{background:var(--warn-lt);border:1px solid var(--warn-br);border-radius:var(--r);padding:9px 11px;margin-top:8px;font-size:11px;color:var(--warn-t);line-height:1.5;}

.ans-grid{display:flex;flex-direction:column;gap:8px;}
.ans-btn{
  display:flex;align-items:center;gap:10px;min-height:44px;
  padding:8px 12px;background:var(--bg2);border:1px solid var(--brd);
  border-radius:8px;cursor:pointer;text-align:left;transition:border-color .15s,background .15s,transform .12s,box-shadow .15s;font-family:inherit;
}
.ans-btn:focus-visible,.btn-primary:focus-visible,.btn-secondary:focus-visible,.exp-btn:focus-visible,.nb:focus-visible,.hero-cta:focus-visible,.li-goto:focus-visible{outline:none;box-shadow:var(--focus);}
.ans-btn.skip{border-style:dashed;border-color:var(--brd2);}
.ab-ico{width:26px;height:26px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;flex-shrink:0;}
.abi-y{background:var(--ok-lt);color:var(--ok-t);}
.abi-n{background:var(--danger-lt);color:var(--danger-t);}
.abi-p{background:var(--warn-lt);color:var(--warn-t);}
.abi-u{background:var(--bg3);color:var(--txt3);}
.abi-s{background:var(--bg3);color:var(--txt3);}
.ab-lbl{font-size:13px;font-weight:600;color:var(--txt);}
.ab-sub{font-size:11px;color:var(--txt3);margin-top:2px;line-height:1.3;}

/* BACK BTN */
.back-btn{display:inline-flex;align-items:center;gap:5px;background:none;border:none;color:var(--txt3);font-size:12px;cursor:pointer;padding:4px 0;margin-bottom:12px;font-family:inherit;}
.back-btn:hover{color:var(--txt2);}

/* RESULT */
.result-card{border-radius:var(--rl);padding:14px;margin-bottom:10px;border:1px solid;}
.rc-danger{background:var(--danger-lt);border-color:var(--danger-br);}
.rc-warn{background:var(--warn-lt);border-color:var(--warn-br);}
.rc-ok{background:var(--ok-lt);border-color:var(--ok-br);}
.rc-info{background:var(--info-lt);border-color:var(--info-br);}
.rc-title{font-size:14px;font-weight:700;margin-bottom:5px;line-height:1.3;}
.rc-prob{font-size:10px;font-weight:700;padding:3px 9px;border-radius:20px;color:#fff;display:inline-block;margin-bottom:6px;}
.rcp-alta{background:var(--danger);}
.rcp-media{background:var(--warn);}
.rcp-baja{background:var(--ok);}
.result-chip-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px;}
.result-chip{display:inline-flex;align-items:center;gap:3px;border:1px solid var(--brd2);background:var(--bg2);border-radius:999px;padding:5px 8px;font-size:10px;color:var(--txt2);line-height:1.2;}
.result-chip strong{color:var(--txt);font-weight:800;}
.final-result-card{background:var(--bg2);border:1px solid var(--brd2);border-left:4px solid var(--brand);border-radius:var(--rl);padding:14px;margin-bottom:10px;box-shadow:var(--shadow-panel);}
.q-card:focus,.final-result-card:focus{outline:2px solid #19D3FF;outline-offset:2px;}
.final-top{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px;}
.final-top>div{min-width:0;max-width:100%;overflow-wrap:anywhere;}
.final-k,.final-action-k,.secondary-title{font-size:11px;line-height:1.4;font-weight:800;color:var(--txt3);text-transform:uppercase;letter-spacing:.85px;margin-bottom:5px;}
.final-title{font-size:17px;font-weight:850;color:var(--txt);line-height:1.25;}
.final-disputed-k{font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--txt3);margin-top:11px;margin-bottom:6px;}
.final-disputed-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;max-width:100%;}
.final-disputed-item{display:flex;align-items:flex-start;gap:7px;min-width:0;border:1px solid var(--brd);border-radius:var(--r);padding:8px 9px;font-size:12px;line-height:1.4;color:var(--txt2);overflow-wrap:anywhere;}
.final-disputed-item strong{flex:0 0 auto;color:var(--brand);}
.final-sub{font-size:11px;color:var(--txt3);margin-top:4px;line-height:1.35;}
.final-confidence{min-width:66px;border:1px solid;border-radius:var(--r);padding:7px 8px;text-align:center;background:rgba(255,255,255,.035);flex-shrink:0;}
.final-confidence span{display:block;font-size:18px;font-weight:900;line-height:1;}
.final-confidence small{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.55px;color:var(--txt3);margin-top:4px;}
.final-action-box{background:var(--brand-lt);border:1px solid var(--brand-br);border-radius:var(--r);padding:10px 11px;margin-bottom:9px;}
.final-action-k{color:var(--brand);}
.final-action-t{font-size:14px;font-weight:850;color:var(--txt);line-height:1.35;margin-bottom:4px;}
.final-action-d,.final-why{font-size:12px;color:var(--txt2);line-height:1.55;}
.final-stats{font-size:10px;color:var(--txt3);border-top:1px solid var(--brd);padding-top:8px;margin-top:9px;}
.secondary-panel{background:var(--bg2);border:1px solid var(--brd);border-radius:var(--r);padding:11px 12px;margin-bottom:10px;}
.secondary-cause{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;border-top:1px solid var(--brd);padding-top:7px;margin-top:7px;font-size:12px;color:var(--txt2);line-height:1.35;}
.secondary-cause:first-of-type{border-top:none;padding-top:0;margin-top:0;}
.secondary-cause span{min-width:0;}
.result-details{background:var(--bg2);border:1px solid var(--brd);border-radius:var(--r);margin-bottom:9px;overflow:hidden;box-shadow:var(--shadow-soft);}
.result-details summary{cursor:pointer;list-style:none;padding:12px 13px;font-size:12px;font-weight:800;color:var(--txt);display:flex;align-items:center;justify-content:space-between;gap:8px;}
.result-details summary::-webkit-details-marker{display:none;}
.result-details summary::after{content:'+';font-size:16px;color:var(--txt3);font-weight:600;}
.result-details[open]>summary{border-bottom:1px solid var(--brd);}
.result-details[open]>summary::after{content:'-';}
.result-details-body{padding:12px;}
.result-details-nested{margin-bottom:8px;box-shadow:none;}
.result-details-nested:last-child{margin-bottom:0;}
.result-supporting-details .final-stats{margin-bottom:12px;}
.action-list{font-size:12px;color:var(--txt2);line-height:1.8;}
.action-item{display:flex;gap:9px;padding:7px 0;border-bottom:1px solid var(--brd);}
.action-item:last-child{border-bottom:none;}
.action-n{width:20px;height:20px;border-radius:50%;background:var(--brand);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px;}
.action-t{font-size:12px;color:var(--txt2);line-height:1.5;}
.typical-err{background:var(--pur-lt);border:1px solid var(--pur-br);border-radius:var(--r);padding:10px 12px;margin-bottom:10px;font-size:12px;color:var(--pur-br);line-height:1.5;}
.context-band{display:flex;align-items:center;gap:10px;background:linear-gradient(90deg,rgba(255,255,255,0.035),rgba(255,255,255,0.01));border:1px solid var(--brd2);border-left:4px solid var(--ctx);border-radius:var(--rl);padding:11px 12px;margin-bottom:10px;}
.ctx-ico{width:28px;height:28px;border-radius:var(--r);display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,0.06);font-size:15px;flex-shrink:0;}
.ctx-body{flex:1;min-width:0;}
.ctx-k{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:0.8px;color:var(--txt3);}
.ctx-t{font-size:13px;font-weight:700;color:var(--txt);margin-top:2px;}
.ctx-score{font-size:13px;font-weight:800;color:var(--ctx);background:rgba(255,255,255,0.06);border:1px solid var(--brd2);border-radius:12px;padding:3px 8px;}
.contr-box{background:var(--danger-lt);border:1px solid var(--danger-br);border-radius:var(--rl);padding:11px 12px;margin-bottom:10px;}
.contr-box.compact{padding:9px 10px;}
.contr-title{font-size:10px;font-weight:800;letter-spacing:0.6px;text-transform:uppercase;color:var(--danger-t);margin-bottom:7px;}
.contr-row{font-size:12px;color:var(--danger-t);line-height:1.5;margin-top:5px;}
.contr-row.danger{font-weight:700;}
.trace-panel{background:var(--bg2);border:1px solid var(--brd2);border-radius:var(--rl);padding:12px;margin-bottom:12px;box-shadow:var(--shadow-soft);}
.trace-panel.compact{padding:10px;margin-bottom:10px;}
.trace-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:8px;}
.trace-k{font-size:9px;font-weight:800;color:var(--txt3);text-transform:uppercase;letter-spacing:0.9px;margin-bottom:2px;}
.trace-title{font-size:13px;font-weight:800;color:var(--txt);line-height:1.3;}
.trace-pill{flex-shrink:0;border:1px solid var(--brd2);border-radius:999px;padding:3px 8px;font-size:10px;font-weight:800;color:var(--txt2);background:var(--bg3);}
.trace-pill.convergent{color:var(--ok-t);border-color:var(--ok-br);background:var(--ok-lt);}
.trace-pill.contested{color:var(--warn-t);border-color:var(--warn-br);background:var(--warn-lt);}
.trace-pill.inconsistent{color:var(--danger-t);border-color:var(--danger-br);background:var(--danger-lt);}
.trace-msg{font-size:12px;color:var(--txt2);line-height:1.55;margin-bottom:10px;}
.trace-measure{border:1px solid var(--brand-br);background:var(--brand-lt);border-radius:var(--r);padding:10px;margin-bottom:10px;}
.trace-measure-k{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:0.7px;color:var(--brand);margin-bottom:4px;}
.trace-measure-t{font-size:13px;font-weight:800;color:var(--txt);line-height:1.35;margin-bottom:4px;}
.trace-measure-d{font-size:12px;color:var(--txt2);line-height:1.55;}
.trace-grid{display:grid;grid-template-columns:1fr;gap:9px;}
.trace-hyp{background:var(--bg3);border:1px solid var(--brd);border-radius:var(--r);padding:10px;}
.trace-hyp-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;font-size:12px;font-weight:800;color:var(--txt);line-height:1.35;}
.trace-cat{font-size:10px;color:var(--txt3);margin-top:3px;margin-bottom:8px;}
.trace-meta{display:flex;flex-wrap:wrap;gap:5px;margin:6px 0 9px;}
.trace-state,.trace-priority{display:inline-flex;align-items:center;border:1px solid var(--brd2);border-radius:999px;padding:2px 7px;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.45px;color:var(--txt2);background:var(--bg2);}
.trace-state.confirmed,.trace-state.reinforced{color:var(--ok-t);border-color:var(--ok-br);background:var(--ok-lt);}
.trace-state.contested,.trace-state.pending_measurement,.trace-priority.high,.trace-priority.medium{color:var(--warn-t);border-color:var(--warn-br);background:var(--warn-lt);}
.trace-state.weakened,.trace-state.discarded,.trace-priority.critical{color:var(--danger-t);border-color:var(--danger-br);background:var(--danger-lt);}
.trace-priority.low{color:var(--txt3);}
.trace-cols{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.trace-sub{font-size:9px;font-weight:800;color:var(--txt3);text-transform:uppercase;letter-spacing:0.7px;margin-bottom:5px;}
.trace-ev{font-size:10px;line-height:1.45;margin-bottom:4px;word-break:break-word;}
.trace-ev.good{color:var(--ok-t);}
.trace-ev.bad{color:var(--danger-t);}
.trace-ev.muted{color:var(--txt3);}
.pro-badge{display:inline-flex;align-items:center;margin-left:4px;padding:1px 5px;border:1px solid var(--brand-br);border-radius:10px;color:var(--brand);font-size:8px;font-weight:800;text-transform:uppercase;letter-spacing:0.4px;}
.notes-box{background:var(--bg2);border:1px solid var(--brd);border-radius:var(--r);padding:12px;margin-bottom:10px;}
.notes-lbl{font-size:10px;color:var(--txt3);margin-bottom:6px;}
.notes-ta{width:100%;background:var(--bg3);border:1px solid var(--brd);border-radius:var(--r);padding:9px;font-size:12px;resize:none;color:var(--txt);min-height:64px;font-family:inherit;line-height:1.5;}
.notes-ta:focus{outline:none;border-color:var(--brand-br);}

/* EXPORT ROW */
.exp-row{display:flex;gap:6px;margin-bottom:8px;}
.exp-btn{flex:1;background:var(--bg3);border:1px solid var(--brd2);color:var(--txt2);border-radius:var(--r);padding:9px 5px;font-size:11px;cursor:pointer;font-family:inherit;text-align:center;transition:all 0.15s;}
.exp-btn:hover{border-color:var(--brand-br);color:var(--brand);}
.action-row{display:flex;gap:8px;margin-bottom:8px;}

/* BUTTONS */
.btn-primary{background:var(--brand);color:#fff;border:none;border-radius:var(--r);padding:13px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;width:100%;min-height:var(--bh);transition:background 0.15s,box-shadow 0.15s,transform 0.12s;box-shadow:0 8px 20px rgba(0,135,190,0.22);}
.btn-primary:hover{background:#0996CE;}
.btn-primary:active{background:var(--brand-dk);transform:translateY(1px);}
.btn-secondary{background:rgba(255,255,255,0.01);color:var(--txt2);border:1px solid var(--brd2);border-radius:var(--r);padding:12px;font-size:13px;cursor:pointer;font-family:inherit;width:100%;min-height:44px;transition:background 0.15s,border-color 0.15s,color 0.15s,box-shadow 0.15s;}
.btn-secondary:hover{background:var(--bg3);border-color:var(--brand-br);color:var(--txt);}
.btn-ok{background:var(--ok);color:#fff;border:none;border-radius:var(--r);padding:12px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;width:100%;min-height:var(--bh);}
.btn-sm{background:transparent;border:1px solid var(--brd2);color:var(--txt2);font-size:11px;padding:3px 9px;border-radius:var(--r);cursor:pointer;font-family:inherit;}
.btn-sm-d{background:transparent;border:1px solid var(--danger-br);color:var(--danger-t);font-size:11px;padding:3px 9px;border-radius:var(--r);cursor:pointer;font-family:inherit;}

/* SELECT */
.dsel{background:var(--bg);border:1px solid var(--brd2);border-radius:var(--r);color:var(--txt2);font-size:11px;padding:4px 7px;font-family:inherit;cursor:pointer;max-width:200px;}
.dsel:focus{outline:none;border-color:var(--brand);}

/* CPU VISUAL */
.cpu-visual{padding:14px;display:flex;justify-content:center;}
.cpu-body{background:#090f1e;border:1px solid #1A2540;border-radius:8px;padding:13px;width:100%;max-width:280px;}
.cpu-top{display:flex;gap:12px;}
.cpu-leds{display:flex;flex-direction:column;gap:7px;flex:1;}
.cpu-led-row{display:flex;align-items:center;gap:8px;}
.cpu-led{width:12px;height:12px;border-radius:50%;background:#0D1520;border:1px solid #1A2540;cursor:pointer;flex-shrink:0;transition:all 0.18s;}
.cpu-led.g{background:#4ADE80;border-color:#22C55E;box-shadow:0 0 8px rgba(74,222,128,0.55);}
.cpu-led.y{background:#FBBF24;border-color:#D97706;box-shadow:0 0 8px rgba(251,191,36,0.55);}
.cpu-led.r{background:#F87171;border-color:#EF4444;box-shadow:0 0 8px rgba(248,113,113,0.55);}
.cpu-led.off{background:#0D1520;border-color:#1A2540;box-shadow:none;}
.cpu-led.blink{animation:cpublink 0.65s infinite;}
@keyframes cpublink{0%,100%{opacity:1}50%{opacity:0.07}}
/* v8.1.6 — STOP S7-300 con 4 estados (memory reset): blink-slow 0,5 Hz, blink-fast 2 Hz */
.cpu-led.blink-slow{animation:cpublink-slow 2s infinite;}
.cpu-led.blink-fast{animation:cpublink-fast 0.5s infinite;}
@keyframes cpublink-slow{0%,100%{opacity:1}50%{opacity:0.10}}
@keyframes cpublink-fast{0%,100%{opacity:1}50%{opacity:0.10}}
/* Cadencias observadas: exactas cuando se midieron; doble pulso irregular si
   la frecuencia es desconocida. El aro discontinuo mantiene la distinción
   sin depender de movimiento (incluido prefers-reduced-motion). */
@keyframes cpublink-unknown{0%,18%,38.1%,51%{opacity:1}18.1%,38%,51.1%,100%{opacity:.14}}
@keyframes cpublink-1hz{0%,50%{opacity:1}50.1%,100%{opacity:.10}}
@keyframes cpublink-6hz{0%,50%{opacity:1}50.1%,100%{opacity:.10}}
.cpu-led.blink.blink-unknown{animation:cpublink-unknown 1.7s steps(1,end) infinite;outline:1px dashed rgba(232,238,244,.78);outline-offset:2px;}
.cpu-led.blink.blink-1hz{animation:cpublink-1hz 1s steps(1,end) infinite;}
.cpu-led.blink.blink-6hz{animation:cpublink-6hz 0.166667s steps(1,end) infinite;}
.led-name{font-size:10px;font-weight:700;color:#3F5B7A;letter-spacing:0.7px;width:34px;}
.led-state-txt{font-size:9px;color:#43576D;}
.cpu-sel-wrap{display:flex;flex-direction:column;align-items:center;gap:3px;}
.cpu-sel-label{font-size:8px;color:#3F5B7A;letter-spacing:0.5px;}
.cpu-sel-body{width:18px;background:#090f1e;border:1px solid #1A2540;border-radius:4px;padding:4px 0;display:flex;flex-direction:column;align-items:center;gap:5px;}
.sel-pos{width:8px;height:8px;border-radius:50%;background:#1A2540;cursor:pointer;transition:all 0.15s;}
.sel-pos.active{background:#FBBF24;box-shadow:0 0 4px rgba(251,191,36,0.5);}
.sel-pos.run-p.active{background:#4ADE80;box-shadow:0 0 4px rgba(74,222,128,0.5);}
.sel-pos.stop.active,.sel-pos.mres.active{background:#F87171;box-shadow:0 0 4px rgba(248,113,113,0.5);}
.cpu-model-lbl{font-size:8px;color:#3F5B7A;text-align:center;margin-top:8px;letter-spacing:0.8px;}

/* LED CONTROLS */
.led-ctrls{padding:0 13px 13px;display:flex;flex-direction:column;gap:7px;}
.led-row-ctrl{display:flex;align-items:center;gap:8px;}
.led-row-ctrl label{font-size:10px;font-weight:700;color:var(--txt2);width:40px;flex-shrink:0;letter-spacing:0.3px;}
.led-opts{display:flex;gap:4px;flex:1;}
.led-opt{flex:1;padding:6px 2px;background:var(--bg3);border:1px solid var(--brd);border-radius:var(--r);font-size:10px;color:var(--txt3);cursor:pointer;text-align:center;font-family:inherit;transition:all 0.15s;}
.led-opt.sel{background:var(--brand-lt);border-color:var(--brand-br);color:var(--brand);font-weight:700;}
/* S7-400: nomenclatura técnica con ajuste para etiquetas largas. */
.led-opt-s7400{white-space:normal;overflow-wrap:anywhere;padding:6px 4px;}
/* v8.1.4 — Visual oscuro CPU: LED en estado N/A se renderiza atenuado (vs off normal). */
.cpu-led.off.na{opacity:0.35;}
/* v8.1.5 — Texto de ayuda S7-400 (gris secundario, separación del cuadro inferior). */
.platform-help-s7400{color:var(--txt3);opacity:0.85;margin:8px 0 18px;font-size:11px;line-height:1.45;font-style:italic;padding:0 13px;}
/* v8.1.5 — Título principal de panel reforzado (más contraste, mayor presencia técnica). */
.pt.pt-main{font-size:11px;color:var(--txt);opacity:0.92;letter-spacing:0.08em;}
/* v8.1.5 — Botón "← Volver" del diagnóstico guiado: sutil, secundario, no compite con respuestas. */
.btn-guided-back{background:transparent;border:1px solid var(--brd);color:var(--txt2);padding:8px 14px;font-size:11px;border-radius:var(--r);cursor:pointer;font-family:inherit;transition:all 0.15s;letter-spacing:0.02em;}
.btn-guided-back:hover{background:var(--bg3);color:var(--txt);border-color:var(--brand-br);}
.btn-guided-back:disabled{opacity:0.4;cursor:not-allowed;}

/* LED INTERP */
.led-interp{margin:0 13px 13px;border-radius:var(--r);padding:12px;border:1px solid;font-size:12px;line-height:1.6;}
.li-ok{background:var(--ok-lt);border-color:var(--ok-br);color:var(--ok-t);}
.li-warn{background:var(--warn-lt);border-color:var(--warn-br);color:var(--warn-t);}
.li-danger{background:var(--danger-lt);border-color:var(--danger-br);color:var(--danger-t);}
.li-info{background:var(--info-lt);border-color:var(--info-br);color:var(--info-br);}
.li-title{font-size:13px;font-weight:700;margin-bottom:6px;}
.li-section{font-size:9px;text-transform:uppercase;letter-spacing:0.8px;opacity:0.55;margin:9px 0 5px;}
.li-cause{display:flex;gap:6px;margin-bottom:4px;font-size:11px;}
.li-pct{font-size:9px;font-weight:700;padding:1px 5px;border-radius:8px;background:rgba(255,255,255,0.1);flex-shrink:0;margin-top:1px;}
.li-actions{font-size:11px;line-height:1.8;opacity:0.9;}
.li-goto{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:12px;padding:13px 16px;background:var(--brand);color:#fff;border:none;border-radius:var(--r);font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;width:100%;min-height:var(--bh);line-height:1.25;text-align:center;transition:background 0.15s,box-shadow 0.15s,transform 0.12s;box-shadow:0 8px 20px rgba(0,135,190,0.22);}
.li-goto:hover{background:#0996CE;}
.li-goto:active{background:var(--brand-dk);transform:translateY(1px);}

/* DIRECT GRID */
.direct-grid{padding:12px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
.dc{
  background:
    linear-gradient(135deg, rgba(0,135,190,0.12) 0%, rgba(18,29,40,0.98) 36%, rgba(15,23,32,0.98) 100%),
    repeating-linear-gradient(90deg, rgba(110,168,217,0.045) 0 1px, transparent 1px 22px);
  border:1px solid rgba(110,168,217,0.36);border-radius:var(--rl);padding:16px 14px;cursor:pointer;
  transition:border-color 0.15s,background 0.15s,box-shadow 0.15s,transform 0.12s;
  position:relative;overflow:hidden;min-height:101px;box-shadow:var(--shadow-soft);
}
.dc::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--brand);}
.dc:active{transform:translateY(1px);}
.dc:hover{border-color:rgba(0,159,218,0.72);box-shadow:0 12px 26px rgba(0,0,0,0.22),inset 0 0 0 1px rgba(0,159,218,0.18);}
.dc.locked{opacity:0.78;border-style:dashed;cursor:pointer;}
.dc.locked::before{background:var(--brd2);}
.dc-k{font-size:8px;font-weight:900;color:#55D7FF;text-transform:uppercase;letter-spacing:.85px;margin-bottom:9px;line-height:1.2;}
.dc.locked .dc-k{color:var(--txt3);}
.dc-t{font-size:14px;font-weight:900;color:var(--txt);line-height:1.22;max-width:100%;}
.dc-s{font-size:11px;color:var(--txt2);margin-top:9px;line-height:1.42;max-width:100%;}

/* RESUME — v8.7.33: "Diagnóstico guardado / Reanudar" pasó de banner info en
   la franja superior a CARD SECUNDARIA en la columna derecha. Estilo sobrio:
   sin franja clara, borde neutro discreto, ícono y botón compactos. No
   compite con el módulo principal (Estado CPU). Sin margin-bottom: el gap del
   grid de la columna ya separa las cards. */
.resume-banner{
  background:linear-gradient(180deg,rgba(12,31,43,.85),rgba(7,20,30,.82));
  border:1px solid var(--brd,#27384A);border-radius:8px;
  padding:10px 12px;display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;cursor:pointer;
}
.rb-ico{font-size:15px;flex-shrink:0;opacity:.8;}
.rb-body{flex:1 1 130px;min-width:0;}
.rb-title{font-size:11px;font-weight:700;color:var(--txt2,#B4C9D6);}
.rb-sub{font-size:9.5px;color:var(--txt3);margin-top:2px;}
.rb-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px;}
.rb-btn{background:var(--brand,#0087BE);color:#fff;border:none;border-radius:5px;padding:6px 11px;font-size:10.5px;font-weight:700;cursor:pointer;font-family:inherit;flex-shrink:0;}
.rb-btn:hover{background:var(--brand-dk,#006991);}
.session-unavailable{cursor:default;border-color:var(--warn-br,#B45309);background:linear-gradient(180deg,rgba(63,38,10,.86),rgba(30,22,10,.84));}
.session-unavailable .rb-title{color:var(--warn-t,#FBBF24);}

/* v8.7.33 — Mayor protagonismo del módulo principal (Estado CPU): borde y
   sombra algo más marcados + título un punto más brillante. Acento sutil,
   sin exagerar. Mayor especificidad para ganar al .panel base y a .pt.pt-main. */
.panel.cpu-home-panel{
  border-color:rgba(0,180,220,.46);
  box-shadow:0 18px 44px rgba(0,0,0,.32),inset 0 1px 0 rgba(255,255,255,.045),0 0 0 1px rgba(0,180,220,.12);
}
.panel.cpu-home-panel .pt.pt-main{color:#E6F5FF;}
.cpu-home-head h2.pt,.symptom-head h2.pt{margin:0;font-size:14px;line-height:1.4;letter-spacing:.08em;}

/* CASES */
.case-card{background:var(--bg2);border:1px solid var(--brd);border-radius:var(--rl);margin-bottom:9px;overflow:hidden;}
.case-hdr{display:flex;align-items:center;gap:10px;padding:12px 13px;cursor:pointer;transition:background 0.1s;}
.case-hdr:hover{background:var(--bg3);}
.case-num{font-size:9px;font-weight:700;background:var(--brand-lt);border:1px solid var(--brand-br);color:var(--brand);padding:2px 7px;border-radius:10px;flex-shrink:0;}
.case-title{font-size:12px;font-weight:700;color:var(--txt);flex:1;line-height:1.3;}
.case-chev{font-size:11px;color:var(--txt3);transition:transform 0.2s;flex-shrink:0;}
.case-card.open .case-chev{transform:rotate(180deg);}
.case-body{display:none;padding:13px;border-top:1px solid var(--brd);}
.case-card.open .case-body{display:block;}
.case-sec{margin-bottom:12px;}
.case-sec-t{font-size:9px;font-weight:700;color:var(--txt3);text-transform:uppercase;letter-spacing:0.8px;margin-bottom:6px;}
.case-txt{font-size:12px;color:var(--txt2);line-height:1.7;}
.case-txt strong{color:var(--txt);}
.case-tree-item{font-size:11px;color:var(--txt2);margin-bottom:4px;display:flex;gap:6px;line-height:1.4;}
.case-tree-item::before{content:'→';color:var(--brand);flex-shrink:0;}
.case-tag{display:inline-block;font-size:9px;font-weight:700;padding:2px 7px;border-radius:10px;margin:2px 2px 0 0;}
.ct-stop{background:var(--danger-lt);color:var(--danger-t);}
.ct-bf{background:var(--pur-lt);color:var(--pur-br);}
.ct-sf{background:var(--warn-lt);color:var(--warn-t);}
.ct-run{background:var(--ok-lt);color:var(--ok-t);}
.ct-di{background:var(--info-lt);color:var(--info-br);}
.ct-ai{background:var(--pur-lt);color:var(--pur-br);}
.err-box{background:var(--danger-lt);border:1px solid var(--danger-br);border-radius:var(--r);padding:9px 11px;margin-top:8px;font-size:11px;color:var(--danger-t);line-height:1.5;}
.safe-box{background:var(--warn-lt);border:1px solid var(--warn-br);border-radius:var(--r);padding:9px 11px;margin-top:8px;font-size:11px;color:var(--warn-t);line-height:1.5;}
.case-cta{margin-top:10px;}

/* KB */
.kb-card{background:var(--bg2);border:1px solid var(--brd);border-radius:var(--rl);margin-bottom:9px;overflow:hidden;}
.kb-hdr{display:flex;align-items:center;gap:9px;padding:12px 13px;cursor:pointer;transition:background 0.1s;}
.kb-hdr:hover{background:var(--bg3);}
.kb-tag{font-size:9px;font-weight:700;padding:2px 7px;border-radius:10px;flex-shrink:0;text-transform:uppercase;letter-spacing:0.3px;}
.kt-ob{background:var(--danger-lt);color:var(--danger-t);border:1px solid var(--danger-br);}
.kt-pb{background:var(--pur-lt);color:var(--pur-br);border:1px solid var(--purple);}
.kt-hw{background:var(--info-lt);color:var(--info-br);border:1px solid var(--info-br);}
.kt-sw{background:var(--ok-lt);color:var(--ok-t);border:1px solid var(--ok-br);}
.kt-mpi{background:var(--warn-lt);color:var(--warn-t);border:1px solid var(--warn-br);}
.kt-ai{background:var(--pur-lt);color:var(--pur-br);border:1px solid var(--pur-br);}
.kt-seg{background:var(--danger-lt);color:var(--danger-t);border:1px solid var(--danger-br);}
.kb-title{font-size:12px;font-weight:700;color:var(--txt);flex:1;line-height:1.3;}
.kb-chev{font-size:11px;color:var(--txt3);transition:transform 0.2s;flex-shrink:0;}
.kb-card.open .kb-chev{transform:rotate(180deg);}
.kb-body{display:none;padding:13px;border-top:1px solid var(--brd);font-size:12px;color:var(--txt2);line-height:1.8;}
.kb-card.open .kb-body{display:block;}
.kb-body strong{color:var(--txt);}
.kb-box{border-radius:var(--r);padding:9px 11px;margin-top:9px;font-size:11px;line-height:1.6;}
.kb-box.danger{background:var(--danger-lt);border:1px solid var(--danger-br);color:var(--danger-t);}
.kb-box.warn{background:var(--warn-lt);border:1px solid var(--warn-br);color:var(--warn-t);}
.kb-box.ok{background:var(--ok-lt);border:1px solid var(--ok-br);color:var(--ok-t);}
.kb-box.info{background:var(--info-lt);border:1px solid var(--info-br);color:var(--info-br);}

/* REPORT */
.rep-intro{background:var(--brand-lt);border:1px solid var(--brand-br);border-radius:var(--rl);padding:13px;margin-bottom:12px;}
.rep-badge{font-size:9px;font-weight:700;color:var(--brand);text-transform:uppercase;letter-spacing:0.8px;margin-bottom:4px;}
.rep-num{font-size:20px;font-weight:700;color:var(--brand);margin-bottom:3px;}
.report-locked-shell{position:relative;}
.report-locked-message{position:relative;z-index:2;background:var(--bg2);border:1px solid var(--brand-br);border-radius:var(--rl);padding:14px;margin-bottom:12px;box-shadow:0 8px 24px rgba(0,0,0,.16);}
.report-locked-title{font-size:16px;font-weight:800;color:var(--txt);margin-bottom:6px;}
.report-locked-text{font-size:12px;line-height:1.55;color:var(--txt2);}
.report-locked-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px;}
.report-locked-preview{position:relative;filter:grayscale(1);opacity:.48;pointer-events:none;user-select:none;}
.report-locked-preview::after{content:"";position:absolute;inset:0;border-radius:var(--rl);background:linear-gradient(180deg,rgba(248,247,244,.18),rgba(28,25,23,.08));}
.report-locked-preview input:disabled,.report-locked-preview textarea:disabled,.report-locked-preview button:disabled{cursor:not-allowed;}
.form-group{margin-bottom:12px;}
.form-label{font-size:10px;font-weight:700;color:var(--txt2);margin-bottom:5px;display:block;letter-spacing:0.3px;}
.form-input{width:100%;background:var(--bg3);border:1px solid var(--brd);border-radius:var(--r);padding:9px 11px;font-size:13px;color:var(--txt);font-family:inherit;transition:border-color 0.15s,box-shadow 0.15s,background 0.15s;}
.form-input:focus{outline:none;border-color:var(--brand);box-shadow:var(--focus);background:var(--bg2);}
.form-textarea{width:100%;background:var(--bg3);border:1px solid var(--brd);border-radius:var(--r);padding:9px 11px;font-size:12px;color:var(--txt);font-family:inherit;resize:none;min-height:68px;line-height:1.5;transition:border-color 0.15s,box-shadow 0.15s,background 0.15s;}
.form-textarea:focus{outline:none;border-color:var(--brand);box-shadow:var(--focus);background:var(--bg2);}
.form-input[aria-invalid="true"],.form-textarea[aria-invalid="true"]{border-color:var(--danger-br);box-shadow:0 0 0 2px color-mix(in srgb,var(--danger-br) 26%,transparent);}
.form-error{margin-top:5px;color:var(--danger-t);font-size:10px;font-weight:700;line-height:1.4;}
.report-validation-status{min-height:18px;margin:2px 0 8px;color:var(--danger-t);font-size:11px;font-weight:700;line-height:1.45;}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:9px;}
.form-divider{height:1px;background:var(--brd);margin:13px 0;}
.form-section{font-size:9px;font-weight:700;color:var(--txt3);text-transform:uppercase;letter-spacing:0.8px;margin-bottom:11px;}
.sev-opts{display:flex;gap:6px;}
.sev-opt{flex:1;padding:9px 3px;border:1px solid var(--brd);border-radius:var(--r);background:var(--bg3);font-size:11px;color:var(--txt3);cursor:pointer;text-align:center;font-family:inherit;transition:all 0.15s;}
.sev-opt.act-crítica{background:var(--danger-lt);border-color:var(--danger-br);color:var(--danger-t);font-weight:700;}
.sev-opt.act-alta{background:var(--warn-lt);border-color:var(--warn-br);color:var(--warn-t);font-weight:700;}
.sev-opt.act-media{background:var(--info-lt);border-color:var(--info-br);color:var(--info-br);font-weight:700;}
.sev-opt.act-baja{background:var(--ok-lt);border-color:var(--ok-br);color:var(--ok-t);font-weight:700;}
.estado-opts{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;}
.estado-opt{padding:9px 3px;border:1px solid var(--brd);border-radius:var(--r);background:var(--bg3);font-size:11px;color:var(--txt3);cursor:pointer;text-align:center;font-family:inherit;transition:all 0.15s;}
.estado-opt.act-resuelto{background:var(--ok-lt);border-color:var(--ok-br);color:var(--ok-t);font-weight:700;}
.estado-opt.act-temporal{background:var(--warn-lt);border-color:var(--warn-br);color:var(--warn-t);font-weight:700;}
.estado-opt.act-noresuelto{background:var(--danger-lt);border-color:var(--danger-br);color:var(--danger-t);font-weight:700;}

/* SEARCH */
.search-wrap{display:flex;align-items:center;gap:8px;}
.si{font-size:15px;color:var(--txt3);}
.si-inp{flex:1;background:transparent;border:none;color:var(--txt);font-size:13px;font-family:inherit;padding:2px 0;}
.si-inp:focus{outline:none;}

/* CHECKLIST */
.sb-ov{position:fixed;inset:0;background:rgba(0,0,0,0.7);z-index:500;display:none;}
.sb-ov.open{display:block;}
.sidebar{position:fixed;right:0;top:0;bottom:0;width:290px;background:var(--bg2);border-left:1px solid var(--brd);z-index:501;transform:translateX(100%);transition:transform 0.25s;display:flex;flex-direction:column;}
.sidebar.open{transform:translateX(0);}
.sb-h{display:flex;align-items:center;justify-content:space-between;padding:12px 13px;border-bottom:1px solid var(--brd);background:var(--bg3);flex-shrink:0;}
.sb-x{background:none;border:none;color:var(--txt3);font-size:16px;cursor:pointer;line-height:1;}
.sb-b{flex:1;overflow-y:auto;padding:11px;}
.cl-prog{background:var(--bg3);border:1px solid var(--brd);border-radius:var(--r);padding:9px 11px;margin-bottom:9px;display:flex;justify-content:space-between;}
.cl-prog-l{font-size:11px;color:var(--txt3);}
.cl-prog-p{font-size:13px;font-weight:700;color:var(--brand);}
.cl-item{display:flex;align-items:flex-start;gap:9px;padding:9px 0;border-bottom:1px solid var(--brd);}
.cl-item:last-child{border-bottom:none;}
.cl-check{width:20px;height:20px;border:1.5px solid var(--brd2);border-radius:4px;flex-shrink:0;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:11px;color:transparent;margin-top:1px;transition:all 0.15s;background:var(--bg);}
.cl-check.done{background:var(--ok);border-color:var(--ok-br);color:#fff;}
.cl-txt{flex:1;font-size:12px;line-height:1.5;color:var(--txt2);}
.cl-txt.done{color:var(--txt3);text-decoration:line-through;}
.cl-p{font-size:9px;font-weight:700;flex-shrink:0;padding:2px 6px;border-radius:8px;margin-top:2px;}
.cl-p.h{background:var(--danger-lt);color:var(--danger-t);}
.cl-p.m{background:var(--warn-lt);color:var(--warn-t);}
.cl-p.l{background:var(--ok-lt);color:var(--ok-t);}
.cl-empty{text-align:center;padding:30px 15px;color:var(--txt3);font-size:12px;line-height:1.6;}

/* FAB */
.fab{position:fixed;bottom:calc(var(--nav-h) + 14px);right:14px;width:44px;height:44px;border-radius:50%;background:var(--brand);color:#fff;border:none;font-size:17px;cursor:pointer;z-index:400;box-shadow:0 4px 14px rgba(0,159,218,0.35);display:flex;align-items:center;justify-content:center;transition:all 0.15s;}
.edition-chip{display:inline-flex;align-items:center;padding:2px 7px;border-radius:11px;border:1px solid var(--brand-br);background:var(--brand-lt);color:var(--brand);font-size:8px;font-weight:800;letter-spacing:0.5px;text-transform:uppercase;}
.edition-note{background:var(--bg3);border:1px solid var(--brd2);border-radius:var(--rl);padding:10px 12px;margin-bottom:10px;}
.edition-note-k{font-size:9px;font-weight:800;letter-spacing:0.7px;text-transform:uppercase;color:var(--brand);margin-bottom:4px;}
.edition-note-t{font-size:11px;line-height:1.55;color:var(--txt2);}
.fab:hover{background:var(--brand-dk);transform:scale(1.05);}
.fab .badge{position:absolute;top:-3px;right:-3px;background:var(--danger-br);color:#fff;font-size:9px;font-weight:700;width:15px;height:15px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1.5px solid var(--bg);}

/* MODAL */
.modal-ov{position:fixed;inset:0;background:rgba(0,0,0,0.75);z-index:1000;}
.modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1001;background:var(--bg2);border:2px solid var(--danger-br);border-radius:var(--rl);padding:18px;max-width:330px;width:90%;}
.modal-hdr{font-size:14px;font-weight:700;color:var(--danger-t);margin-bottom:10px;}
.modal-body{font-size:12px;color:var(--txt2);line-height:1.6;margin-bottom:14px;}
.modal-btn{width:100%;background:var(--danger);color:#fff;border:none;border-radius:var(--r);padding:11px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;}
/* v8.7.36 (UX-05) — Variante informativa: los modales NO de seguridad
   (Ayuda, selector de familia) no deben heredar el rojo de peligro del
   safety modal. El safety modal conserva .modal a secas (rojo). */
.modal.modal-info{border-color:var(--brd2,#385068);}
.modal.modal-info .modal-hdr{color:var(--txt,#EAF3FB);}
.modal.modal-info .modal-btn{background:var(--brand,#009FDA);}

/* MISC */
.empty-state{text-align:center;padding:50px 18px;color:var(--txt3);}
.es-ico{font-size:32px;margin-bottom:10px;opacity:0.2;display:block;}
.es-t{font-size:14px;font-weight:700;color:var(--txt2);margin-bottom:6px;}
.es-s{font-size:12px;line-height:1.6;}
.fd{animation:fadein 0.2s ease;}
@keyframes fadein{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
.tag{display:inline-block;font-size:9px;font-weight:700;padding:2px 7px;border-radius:10px;}
.conf-bar-wrap{margin-bottom:10px;}
.conf-lbl{display:flex;justify-content:space-between;font-size:11px;color:var(--txt3);margin-bottom:4px;}
.conf-track{height:4px;background:var(--brd);border-radius:2px;overflow:hidden;}
.conf-fill{height:100%;border-radius:2px;transition:width 0.5s;}

/* Intervention context */
.intervention-panel{padding-bottom:13px;}
.ctx-rec{padding:0 13px 10px;font-size:11px;line-height:1.55;color:var(--txt3);}
.ctx-form{padding:14px 13px 0;display:grid;grid-template-columns:1fr 1fr;gap:0 9px;}
.ctx-form .form-group{margin-bottom:9px;}
.ctx-form .ctx-wide{grid-column:1/-1;}
.ctx-export{font-size:12px;line-height:1.65;color:var(--txt2);}
.ctx-export-row{margin-bottom:3px;}
.ctx-export-empty{color:var(--txt3);font-style:italic;}

/* RESPONSIVE */
@media(min-width:580px){:root{--max:580px;} .form-row{grid-template-columns:1fr 1fr 1fr;}}
@media(min-width:860px){:root{--max:680px;}}
@media(max-width:520px){.ctx-form{grid-template-columns:1fr;}}
@media(max-width:420px){.trace-cols{grid-template-columns:1fr;}.trace-head{align-items:flex-start;}.trace-pill{font-size:9px;padding:3px 7px;}}
@media(orientation:landscape) and (max-height:480px){body{padding-bottom:20px;} .fab{bottom:20px;} :root{--bh:42px;}}

@page{size:Letter;margin:12mm 12mm 14mm;}
@media print{
  body{background:#fff!important;color:#111!important;padding:0!important;-webkit-print-color-adjust:exact;print-color-adjust:exact;}
  .hdr,.nav,.fab,.app-footer,.modal-ov,.modal,.lang-gate,.sb-ov,.sidebar,.exp-row,.btn-ok,.btn-secondary,.pro-upgrade-box,.report-locked-message,#boj-email-gate,.teb-overlay,.boj-update-banner,.boj-startup-help-overlay,.boj-startup-help-modal,.boj-s0-overlay,.boj-contradiction-overlay,.boj-preview-demo-overlay,.lg-overlay{display:none!important;}
  .main{padding:0!important;margin:0!important;max-width:none!important;}
  .view{display:none!important;}
  #view-report{display:block!important;}
  #view-report .vi{padding:0!important;max-width:none!important;}
  .panel,.rep-intro{box-shadow:none!important;border-color:#bbb!important;background:#fff!important;}
  .panel-h{background:#fff!important;border-bottom:1px solid #bbb!important;}
  .p-title,.panel-title,.rep-title{color:#111!important;}
  .p-sub,.ctx-export,.rep-sub,.form-label,.form-section{color:#333!important;}
  input,textarea,select{border:0!important;background:#fff!important;color:#111!important;padding:0!important;box-shadow:none!important;}
  textarea{min-height:auto!important;overflow:visible!important;}
  .form-row,.ctx-form{break-inside:avoid;}
}


/* PRO upgrade */
.pro-upgrade-box{background:linear-gradient(180deg, rgba(0,135,190,0.08), rgba(0,135,190,0.04));border:1px solid var(--brand-br);border-radius:var(--rl);padding:14px;margin-top:-2px;}
.pro-upgrade-k{font-size:9px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--brand);margin-bottom:6px;}
.pro-upgrade-t{font-size:14px;font-weight:700;color:var(--txt);margin-bottom:6px;}
.pro-upgrade-s{font-size:12px;line-height:1.55;color:var(--txt2);margin-bottom:10px;}
.license-inline-note{border-radius:var(--r);padding:8px 10px;margin:8px 0 10px;font-size:11px;line-height:1.45;}
.license-inline-note.warn{background:var(--warn-lt);border:1px solid var(--warn-br);color:var(--warn-t);}
.license-inline-note.danger{background:var(--danger-lt);border:1px solid var(--danger-br);color:var(--danger-t);}
.pro-upgrade-btn,.edition-note-btn,.modal-pro-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--brand);color:#fff;border:none;border-radius:6px;padding:11px 14px;font-size:12px;font-weight:700;cursor:pointer;font-family:inherit;text-decoration:none;min-height:44px;}
.pro-upgrade-btn{width:100%;}
.pro-upgrade-btn.secondary,.modal-pro-btn.secondary{margin-top:8px;background:transparent;color:var(--brand);border:1px solid var(--brand-br);}
.edition-note-btn{margin-top:10px;width:100%;}
.modal-pro-btn{margin-top:12px;width:100%;}
.pro-upgrade-btn:active,.edition-note-btn:active,.modal-pro-btn:active{background:var(--brand-dk);}
.pro-upgrade-btn.secondary:active,.modal-pro-btn.secondary:active{background:var(--brand-lt);}
.dc.locked{opacity:.88;cursor:pointer;}
.dc.locked:hover{border-color:var(--brand-br);}

/* v8.4.44 — Trial: candado en card promocional PRO. Estilo industrial
   premium con cyan acentuado, integrado al pro-upgrade-k existente. */
.pro-upgrade-k-locked{
  display:inline-flex;align-items:center;gap:6px;
  background:rgba(0,135,190,.10);
  border:1px solid rgba(0,135,190,.32);
  padding:4px 9px;border-radius:4px;
  width:fit-content;
}
.pro-upgrade-lock{
  color:var(--brand,#0087BE);
  flex:0 0 auto;
}

/* v8.4.44 — Trial: candado SVG en cards de síntoma bloqueadas.
   Reemplaza el texto "PRO" plano por icono real. */
.dc.locked .dc-ico{
  color:var(--brand,#0087BE);
}
.dc-lock-svg{
  display:block;
  color:var(--brand,#0087BE);
}
.dc.locked .dc-k{
  color:var(--brand,#0087BE);
  font-weight:800;
  letter-spacing:.04em;
}

/* v8.4.44 — Bloque destacado de tiempo restante del trial en Mi licencia. */
.blp-trial-countdown{
  margin:0 16px 4px;
  padding:12px 14px;
  background:linear-gradient(180deg, rgba(0,135,190,0.10), rgba(0,135,190,0.04));
  border:1px solid rgba(0,135,190,.32);
  border-left:3px solid var(--brand,#0087BE);
  border-radius:5px;
  display:flex;flex-direction:column;gap:6px;
}
.blp-trial-countdown-title{
  font-size:10.5px;font-weight:800;
  letter-spacing:.10em;text-transform:uppercase;
  color:var(--brand,#0087BE);
}
.blp-trial-countdown-row{
  display:flex;align-items:baseline;justify-content:space-between;
  font-size:12.5px;line-height:1.4;
}
.blp-trial-countdown-k{color:var(--txt3,#72879B);}
.blp-trial-countdown-h{
  color:#E6EEF7;font-weight:900;font-size:16px;
  font-variant-numeric:tabular-nums;
}

/* PRO activation */
.pro-act-ov{position:fixed;inset:0;background:rgba(0,0,0,0.72);z-index:1200;}
.pro-act-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1201;background:var(--bg2);border:1px solid var(--brand-br);border-radius:var(--rl);padding:16px;max-width:390px;width:92%;max-height:calc(100dvh - 24px);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;box-shadow:0 24px 70px rgba(0,0,0,0.45);}
.pro-act-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px;}
.pro-act-k{font-size:9px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--brand);margin-bottom:4px;}
.pro-act-title{font-size:17px;font-weight:800;color:var(--txt);}
.pro-act-x{background:transparent;border:1px solid var(--brd2);color:var(--txt2);border-radius:6px;width:34px;height:34px;font-size:20px;line-height:1;cursor:pointer;}
.pro-act-status{background:var(--bg3);border:1px solid var(--brd);border-radius:var(--r);padding:9px 10px;margin-bottom:12px;}
.pro-act-row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:11px;color:var(--txt3);padding:3px 0;}
.pro-act-row strong{font-size:11px;color:var(--txt);text-align:right;word-break:break-all;}
.pro-act-label{display:block;font-size:10px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:var(--txt3);margin-bottom:5px;}
.pro-act-input{width:100%;background:var(--bg3);border:1px solid var(--brd2);border-radius:var(--r);color:var(--txt);font-family:inherit;font-size:13px;padding:12px;margin-bottom:10px;min-height:44px;}
.pro-act-input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 2px rgba(0,159,218,0.16);}
.pro-act-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px;}
.pro-act-primary,.pro-act-secondary,.pro-act-buy{border-radius:6px;padding:11px 12px;font-size:12px;font-weight:800;cursor:pointer;font-family:inherit;min-height:44px;}
.pro-act-primary{background:var(--brand);color:#fff;border:none;}
.pro-act-primary:disabled{opacity:.65;cursor:wait;}
.pro-act-secondary{background:transparent;color:var(--txt2);border:1px solid var(--brd2);}
.pro-act-buy{width:100%;background:transparent;color:var(--brand);border:1px solid var(--brand-br);margin-bottom:9px;}
.pro-act-msg{min-height:18px;font-size:12px;line-height:1.45;color:var(--txt3);}
.pro-act-msg.ok{color:var(--ok-t);}
.pro-act-msg.err{color:var(--danger-t);}
.pro-act-msg.info{color:var(--brand);}


/* Course edition refinements */
.hero{margin-top:12px;}
.case-card.case-locked{opacity:.72;background:linear-gradient(180deg,var(--bg2),var(--bg3));border-style:dashed;}
.case-hdr.case-hdr-locked{cursor:default;}
.case-hdr.case-hdr-locked:hover{background:transparent;}
.case-num.case-num-locked{background:rgba(148,163,184,0.10);border-color:var(--brd3);color:var(--txt2);}
.case-locked-meta{padding:0 13px 12px;color:var(--txt3);font-size:11px;}
.kb-card.kb-locked{opacity:.78;border-style:dashed;background:linear-gradient(180deg,var(--bg2),var(--bg3));cursor:pointer;}
.kb-hdr.kb-hdr-locked{cursor:pointer;}
.kb-hdr.kb-hdr-locked:hover{background:var(--bg3);}
.kt-lock{background:rgba(148,163,184,0.12);color:var(--txt2);border:1px solid var(--brd3);}
.kb-level{margin-left:auto;margin-right:8px;border:1px solid var(--brd2);border-radius:999px;padding:2px 7px;font-size:8px;font-weight:900;color:var(--txt3);letter-spacing:.5px;}
.kb-level.course{color:var(--brand);border-color:var(--brand-br);background:var(--brand-lt);}
.kb-level.pro{color:var(--warn-t);border-color:var(--warn-br);background:var(--warn-lt);}

/* ═══════════════════════════════════════════════════════════════════════
   TRIAL EXPIRED BLOCKER — BOJ S7-PLC v8.0
   ═══════════════════════════════════════════════════════════════════════ */

#trial-expired-blocker {
  position: fixed;
  inset: 0;
  z-index: 1900;
}

.teb-overlay {
  position: fixed;
  inset: 0;
  background: rgba(10, 12, 18, 0.97);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px 16px;
  overflow-y: auto;
}

.teb-card {
  background: var(--surface, #1a1d26);
  border: 1px solid var(--border, #2a2e3d);
  border-radius: 16px;
  padding: 36px 32px 32px;
  max-width: 440px;
  width: 100%;
  max-height: calc(100dvh - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  text-align: center;
  box-shadow: 0 24px 64px rgba(0,0,0,0.6);
}

.teb-icon {
  font-size: 48px;
  margin-bottom: 16px;
  opacity: 0.85;
}

.teb-title {
  font-size: 20px;
  font-weight: 700;
  color: var(--text, #e8eaf0);
  margin-bottom: 12px;
  letter-spacing: 0.01em;
}

.teb-msg {
  font-size: 14px;
  color: var(--text-muted, #8b90a0);
  line-height: 1.6;
  margin-bottom: 24px;
}

.teb-label {
  display: block;
  text-align: left;
  font-size: 12px;
  font-weight: 600;
  color: var(--text-muted, #8b90a0);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-bottom: 8px;
}

.teb-input {
  width: 100%;
  box-sizing: border-box;
  background: var(--bg, #0f1117);
  border: 1px solid var(--border, #2a2e3d);
  border-radius: 8px;
  padding: 12px 14px;
  font-size: 15px;
  color: var(--text, #e8eaf0);
  margin-bottom: 16px;
  outline: none;
  transition: border-color 0.2s;
}

.teb-turnstile-prompt {
  color: var(--text-muted, #8b90a0);
  font-size: 12px;
  line-height: 1.45;
  margin: 0 0 8px;
  text-align: left;
}

.teb-turnstile {
  display: flex;
  justify-content: center;
  min-height: 65px;
  margin: 0 0 16px;
  width: 100%;
}

.teb-input:focus {
  border-color: var(--brand, #00b4d8);
}

.teb-btn-primary {
  width: 100%;
  background: var(--brand, #00b4d8);
  color: #fff;
  border: none;
  border-radius: 8px;
  padding: 14px 24px;
  font-size: 15px;
  font-weight: 700;
  cursor: pointer;
  letter-spacing: 0.02em;
  transition: opacity 0.2s, transform 0.1s;
  margin-bottom: 16px;
}

.teb-btn-primary:hover:not(:disabled) {
  opacity: 0.88;
}

.teb-btn-primary:active:not(:disabled) {
  transform: scale(0.98);
}

.teb-btn-primary:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* v8.4.42 — Botón secundario "Usar otro correo" dentro del blocker. */
.teb-card .teb-btn-secondary {
  background: transparent;
  color: var(--brand, #1AA7D3);
  border: 1px solid rgba(0,135,190,.45);
  padding: 9px 16px;
  border-radius: 6px;
  font-size: 13.5px;
  font-weight: 700;
  letter-spacing: .02em;
  cursor: pointer;
  margin-top: 10px;
  width: 100%;
  font-family: inherit;
  transition: background .15s, border-color .15s;
}
.teb-card .teb-btn-secondary:hover {
  background: rgba(0,135,190,.10);
  border-color: rgba(0,135,190,.7);
}
.teb-change-email-hint {
  font-size: 11.5px;
  color: var(--txt3, #72879B);
  line-height: 1.45;
  margin: 8px 2px 6px;
  text-align: left;
}

.teb-result {
  min-height: 20px;
  font-size: 13px;
  margin-bottom: 20px;
  border-radius: 6px;
  padding: 8px 12px;
  display: none;
}

.teb-result:not(:empty) {
  display: block;
}

.teb-result-ok {
  background: rgba(0, 200, 120, 0.12);
  color: #00c878;
  border: 1px solid rgba(0, 200, 120, 0.25);
}

.teb-result-err {
  background: rgba(255, 80, 80, 0.10);
  color: #ff6b6b;
  border: 1px solid rgba(255, 80, 80, 0.22);
}

.teb-result-info {
  background: rgba(0, 180, 216, 0.10);
  color: var(--brand, #00b4d8);
  border: 1px solid rgba(0, 180, 216, 0.22);
}

.teb-learn {
  display: inline-block;
  font-size: 13px;
  color: var(--text-muted, #8b90a0);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: color 0.2s, border-color 0.2s;
}

.teb-learn:hover {
  color: var(--brand, #00b4d8);
  border-color: var(--brand, #00b4d8);
}

@media (max-width: 480px) {
  .teb-card {
    padding: 28px 20px 24px;
  }
}

/* ═══════════════════════════════════════════════════════════════════
   EMAIL GATE — pantalla inicial de ingreso de correo
   ═══════════════════════════════════════════════════════════════════ */

#boj-email-gate {
  position: fixed;
  inset: 0;
  z-index: 1800; /* debajo del bloqueador (1900) pero sobre lang-gate (1500) */
}

.teb-aux {
  font-size: 12px;
  color: var(--text-muted, #8b90a0);
  line-height: 1.5;
  margin-bottom: 20px;
  font-style: italic;
}

/* Botón "Ver aviso legal" dentro del bloqueador */
.teb-legal-link {
  display: inline-block;
  margin-top: 12px;
  background: none;
  border: 1px solid var(--border, #2a2e3d);
  border-radius: 6px;
  padding: 7px 14px;
  font-size: 12px;
  color: var(--text-muted, #8b90a0);
  cursor: pointer;
  transition: color 0.2s, border-color 0.2s;
  text-decoration: none;
}

.teb-legal-link:hover {
  color: var(--text, #e8eaf0);
  border-color: var(--text-muted, #8b90a0);
}

/* v8.4.16 — Consentimiento + enlaces legales en pantalla de email gate.
   Reemplaza el botón "Ver ejemplo de informe" por una tira sobria con
   enlaces a Aviso legal, Términos de uso y Política de privacidad. */
.teb-legal-consent{
  margin:14px 0 6px;font-size:11px;line-height:1.55;color:var(--txt3,#8b90a0);
  text-align:center;
}
.teb-legal-links{
  display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;
  margin:0 0 10px;font-size:11.5px;
}
.teb-legal-links .teb-legal-link{
  margin:0;padding:4px 8px;font-size:11px;
}
.teb-legal-sep{color:var(--txt3,#8b90a0);font-size:11px;user-select:none;}

/* Modal de aviso legal (z-index 2000/2100 definido en legal.css) queda sobre todo por diseño */

/* ═══════════════════════════════════════════════════════════════
   HOME v8.2.2 — diagnóstico operativo desktop
   ═══════════════════════════════════════════════════════════════ */

:root{
  --bg:#06131d;
  --bg2:rgba(9,25,36,0.92);
  --bg3:rgba(12,31,43,0.86);
  --bg4:#0b1f2b;
  --brd:rgba(90,180,210,0.18);
  --brd2:rgba(0,180,220,0.25);
  --brd3:rgba(25,211,255,0.34);
  --txt:#EAF6FF;
  --txt2:#94AFC0;
  --txt3:#91ADBD;
  --brand:#00AEEF;
  --brand-dk:#008EC6;
  --brand-lt:rgba(0,194,255,0.12);
  --brand-br:rgba(0,180,220,0.34);
  --on-brand:#031820;
  --on-danger:#FFFFFF;
  --on-ok:#FFFFFF;
  --control-brd:#4D7184;
  --ok:#22C55E;
  --ok-lt:rgba(34,197,94,0.13);
  --ok-br:#38E27A;
  --ok-t:#B7FFD0;
  --warn:#FACC15;
  --warn-lt:rgba(250,204,21,0.13);
  --warn-br:#FACC15;
  --warn-t:#FFE895;
  --danger:#EF4444;
  --danger-lt:rgba(239,68,68,0.13);
  --danger-br:#EF4444;
  --danger-t:#FFC4C4;
  --info-lt:rgba(0,174,239,0.11);
  --info-br:#19D3FF;
  --shadow-panel:0 22px 58px rgba(0,0,0,0.34);
  --shadow-soft:0 14px 34px rgba(0,0,0,0.24);
  --focus:0 0 0 3px rgba(25,211,255,0.20);
  --focus-ring:#19D3FF;
}

body{
  background:
    radial-gradient(circle at 18% 0%, rgba(0,174,239,0.12), transparent 28%),
    radial-gradient(circle at 86% 12%, rgba(34,197,94,0.06), transparent 24%),
    linear-gradient(135deg,#06131d 0%,#081923 44%,#071019 100%);
}

.app-sidebar{display:none;}

.hdr{
  background:rgba(4,13,22,0.86);
  border-bottom:1px solid rgba(0,180,220,0.18);
}
.hdr-inner{max-width:none;}
.hdr-title{font-size:17px;font-weight:800;letter-spacing:0;}
.hdr-sub{color:#78AABE;}
.hdr-actions{display:none;align-items:center;gap:8px;}
.hdr-action{
  background:transparent;border:0;color:var(--txt2);font-size:11px;font-weight:700;
  cursor:pointer;font-family:inherit;padding:8px 6px;border-radius:6px;
}
.hdr-action:hover{color:var(--txt);background:rgba(0,174,239,0.08);}
.hdr-system-pill{
  display:flex;align-items:center;gap:10px;border:1px solid rgba(0,180,220,0.22);
  background:rgba(5,18,28,0.86);border-radius:8px;padding:8px 14px;
  color:#BFFFD2;font-size:11px;font-weight:900;letter-spacing:.3px;
}
.hdr-ok-dot{width:13px;height:13px;border-radius:50%;background:var(--ok);box-shadow:0 0 18px rgba(34,197,94,.7);}

.panel,.hero-status,.pro-upgrade-box{
  background:
    linear-gradient(180deg,rgba(12,31,43,.94),rgba(7,20,30,.92)),
    repeating-linear-gradient(90deg,rgba(25,211,255,.025) 0 1px,transparent 1px 32px);
  border:1px solid rgba(0,180,220,0.24);
  border-radius:8px;
  box-shadow:var(--shadow-soft);
}
.ph{
  background:linear-gradient(180deg,rgba(18,43,58,.74),rgba(8,25,36,.72));
  border-bottom:1px solid rgba(0,180,220,0.18);
}
.pt.pt-main{color:#CDEBFF;font-size:11px;font-weight:900;letter-spacing:.11em;}
.panel-sub{display:block;color:var(--txt3);font-size:11px;line-height:1.45;margin-top:5px;text-transform:none;letter-spacing:0;font-weight:600;}

.home-vi{padding:14px 14px 24px;}

.home-grid{display:grid;gap:16px;}
.home-main-col,.home-side-col{display:grid;gap:16px;align-content:start;}

.cpu-home-head{align-items:flex-start;}
.cpu-home-head .dsel{min-width:260px;min-height:40px;background:#07131D;border-color:rgba(0,180,220,.34);color:var(--txt);}
.cpu-home-grid{display:grid;grid-template-columns:minmax(250px,.78fr) minmax(360px,1.22fr);gap:10px;padding:16px 16px 0;}
.cpu-visual-zone,.cpu-control-zone{
  min-width:0;border:1px solid rgba(90,180,210,.14);border-radius:7px;background:rgba(3,14,23,.32);padding:12px;
}
.zone-label{font-size:11px;color:#A9C2D4;font-weight:800;margin-bottom:10px;}
.cpu-visual{padding:4px 0 8px;}
.cpu-body{
  max-width:310px;background:linear-gradient(145deg,#111B23,#050B12);
  border-color:rgba(0,180,220,.22);box-shadow:inset 0 0 0 1px rgba(255,255,255,.03),0 20px 38px rgba(0,0,0,.34);
}
.cpu-led{width:13px;height:13px;}
.led-name{color:#A3B9C8;font-size:10px;}
.led-state-txt{color:#879DAD;font-size:10px;}
.cpu-model-lbl{color:#8BA5B8;font-size:9px;}
.led-ctrls{padding:0;gap:8px;}
/* v8.7.35 — FIX responsive: respiro a la DERECHA de los botones de "Modo de
   operación". Antes el último botón quedaba a ~10px (solo el padding del
   control-zone) del borde derecho de la card y, en algunas resoluciones, se
   percibía pegado. Con este padding interno el gap pasa a ~18px en TODAS las
   resoluciones (desktop/notebook/mobile, S7-300 y S7-400), sin tocar el
   diseño de los botones, su comportamiento ni el tamaño general. */
.cpu-control-zone .led-ctrls{padding-right:8px;}
.led-row-ctrl{gap:10px;}
.led-row-ctrl label{color:#B7CDDA;font-size:11px;width:48px;}
.led-opt{
  min-height:31px;background:rgba(9,25,36,.9);border-color:rgba(90,180,210,.18);
  border-radius:6px;color:#94AFC0;font-weight:700;
}
.led-opt.sel{background:rgba(0,174,239,.17);border-color:rgba(25,211,255,.58);color:#EAF6FF;box-shadow:0 0 18px rgba(0,174,239,.12);}
.led-interp{
  margin:16px;border-radius:7px;padding:15px 15px 14px;font-size:12px;
}
.li-title{font-size:14px;}
.li-goto{
  width:auto;min-width:300px;max-width:100%;background:linear-gradient(180deg,#00C2FF,#008EC6);
  border:1px solid rgba(200,244,255,.22);box-shadow:0 13px 30px rgba(0,174,239,.24);
}

.symptom-head{align-items:center;}
.cpu-model-field{display:flex;flex-direction:column;gap:4px;align-items:stretch;}
.cpu-model-label{font-size:10px;font-weight:700;color:var(--txt2);letter-spacing:.04em;}
.symptom-search{
  display:flex;align-items:center;gap:8px;min-width:260px;background:#07131D;border:1px solid rgba(0,180,220,.25);
  border-radius:7px;padding:0 10px;color:#64DFFF;
}
.symptom-search input{
  width:100%;min-height:38px;border:0;background:transparent;color:var(--txt);font-family:inherit;font-size:12px;outline:0;
}
.symptom-search input::placeholder{color:#647887;}
.direct-grid{padding:14px 16px 8px;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
.dc{
  min-height:70px;display:grid;grid-template-columns:36px minmax(0,1fr) 18px;gap:11px;align-items:center;
  padding:12px;background:linear-gradient(135deg,rgba(0,174,239,.10),rgba(6,19,29,.90));
  border-color:rgba(90,180,210,.24);border-radius:7px;
}
.dc::before{display:none;}
/* v8.7.34 — Badge del síntoma: círculo vidriado, borde fino de categoría,
   ícono SVG técnico centrado (currentColor lo tiñe con el color de familia). */
.dc-ico{
  width:32px;height:32px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;
  border:1px solid rgba(0,180,220,.32);
  background:radial-gradient(circle at 50% 32%, rgba(255,255,255,.07), rgba(255,255,255,0) 62%), rgba(0,174,239,.08);
  color:#19D3FF;box-shadow:inset 0 1px 0 rgba(255,255,255,.05);
}
.dc-ico-code{display:block;font-size:11px;font-weight:900;line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums;}
/* 5 grupos cromáticos por familia de problema (clase calculada en render). */
.dc.cat-red .dc-ico{border-color:rgba(239,96,96,.55);background:radial-gradient(circle at 50% 32%,rgba(255,150,150,.12),transparent 62%),rgba(239,68,68,.10);color:#FF8C8C;}
.dc.cat-amber .dc-ico{border-color:rgba(248,186,60,.55);background:radial-gradient(circle at 50% 32%,rgba(252,212,128,.12),transparent 62%),rgba(248,170,30,.10);color:#FBC02D;}
.dc.cat-cyan .dc-ico{border-color:rgba(44,200,236,.52);background:radial-gradient(circle at 50% 32%,rgba(130,232,255,.12),transparent 62%),rgba(0,182,236,.10);color:#41D8F5;}
.dc.cat-teal .dc-ico{border-color:rgba(46,212,172,.52);background:radial-gradient(circle at 50% 32%,rgba(140,242,212,.12),transparent 62%),rgba(0,202,162,.10);color:#33D9B2;}
.dc.cat-neutral .dc-ico{border-color:rgba(146,174,198,.44);background:radial-gradient(circle at 50% 32%,rgba(206,224,238,.08),transparent 62%),rgba(124,152,178,.08);color:#A2B8CA;}
.dc-body{min-width:0;}
.dc-k{display:none;}
.dc-t{font-size:13px;font-weight:800;line-height:1.25;}
.dc-s{font-size:10px;margin-top:3px;color:#8BA5B8;}
.dc-t,.dc-s{min-width:0;overflow-wrap:anywhere;word-break:normal;}
.dc-chevron{color:#A6C6D6;font-size:18px;}
.dc:hover{transform:translateY(-1px);border-color:rgba(25,211,255,.62);}
.dc.locked{opacity:.72;}
.direct-empty{grid-column:1/-1;color:var(--txt3);font-size:12px;padding:14px;text-align:center;}
.symptom-all-btn{
  margin:0 16px 16px;width:calc(100% - 32px);min-height:38px;border:1px solid rgba(0,180,220,.30);
  background:rgba(0,174,239,.08);color:#CDEBFF;border-radius:7px;font-family:inherit;font-weight:800;cursor:pointer;
}
.symptom-all-btn:hover{background:rgba(0,174,239,.14);border-color:rgba(25,211,255,.56);}

.home-license-body{padding:16px;}
.ctx-line{display:flex;justify-content:space-between;gap:16px;border-bottom:1px solid rgba(90,180,210,.12);padding:10px 0;}
.ctx-line:first-child{padding-top:0;}
.ctx-line:last-child{border-bottom:0;padding-bottom:0;}
.ctx-line span{color:var(--txt3);font-size:11px;font-weight:800;}
.ctx-line strong{color:var(--txt);font-size:12px;text-align:right;}
.pro-upgrade-box{
  margin:0;position:relative;overflow:hidden;padding:20px 22px;min-height:214px;
  background:
    radial-gradient(circle at 82% 42%,rgba(0,194,255,.22),transparent 34%),
    linear-gradient(135deg,rgba(0,174,239,.12),rgba(7,20,30,.94) 46%,rgba(7,20,30,.98));
}
.pro-visual{position:absolute;right:22px;top:34px;width:120px;height:120px;transform:rotateX(58deg) rotateZ(45deg);}
.pro-visual span{position:absolute;inset:20px;border:1px solid rgba(25,211,255,.38);box-shadow:0 0 28px rgba(0,174,239,.18);}
.pro-visual span:nth-child(2){inset:0;}
.pro-visual span:nth-child(3){inset:40px;background:rgba(0,194,255,.12);}
.pro-upgrade-k,.pro-upgrade-t,.pro-upgrade-s,.pro-upgrade-btn{position:relative;z-index:1;}
.pro-upgrade-k{color:#19D3FF;font-size:10px;font-weight:900;letter-spacing:.12em;}
.pro-upgrade-t{font-size:21px;font-weight:850;max-width:330px;}
.pro-upgrade-s{font-size:13px;max-width:390px;color:#B4C9D6;}
.pro-feature-row{position:relative;z-index:1;display:flex;flex-wrap:wrap;gap:7px;margin:12px 0 2px;max-width:390px;}
.pro-feature-row span{border:1px solid rgba(90,180,210,.22);border-radius:999px;padding:5px 8px;color:#A9DCEF;background:rgba(0,174,239,.08);font-size:10px;font-weight:800;}
.pro-upgrade-btn{
  width:auto;min-width:250px;margin-top:10px;background:linear-gradient(180deg,#00C2FF,#008EC6);
  border:1px solid rgba(200,244,255,.22);border-radius:7px;box-shadow:0 18px 32px rgba(0,174,239,.22);
}
.pro-upgrade-btn.secondary{background:rgba(0,174,239,.08);border-color:rgba(0,180,220,.34);color:#CDEBFF;}

.license-card-row{display:flex;align-items:center;gap:12px;margin-bottom:12px;}
.license-dot{width:12px;height:12px;border-radius:50%;background:var(--ok);box-shadow:0 0 16px rgba(34,197,94,.64);}
.license-main{font-size:14px;font-weight:900;color:var(--txt);}
.license-sub{font-size:11px;color:#8FA7B8;margin-top:3px;}
.license-actions{display:flex;gap:8px;flex-wrap:wrap;}
.license-actions button{
  border:1px solid rgba(0,180,220,.30);background:rgba(0,174,239,.09);color:#CDEBFF;border-radius:6px;
  min-height:34px;padding:0 10px;font-family:inherit;font-weight:800;cursor:pointer;
}

.hero-status{padding:16px;}
.hs-label{color:#CDEBFF;font-size:10px;font-weight:900;letter-spacing:.12em;}
.hs-empty{color:#91A9B9;}
.hs-bar-track{background:rgba(90,180,210,.18);}

.app-footer{
  border-top:1px solid rgba(0,180,220,.14);background:rgba(4,13,22,.66);max-width:none;
  padding:14px 18px;text-align:left;color:#7D94A5;
}
.lg-footer-disclaimer{font-size:11px;line-height:1.45;margin:0 auto 8px;max-width:860px;text-align:center;color:#8AA1B2;}
.lg-footer-row{justify-content:center;}

@media(min-width:1180px){
  body{padding-bottom:0;}
  .app-sidebar{
    display:flex;flex-direction:column;position:fixed;left:0;top:0;bottom:0;width:218px;z-index:260;
    background:linear-gradient(180deg,#07131D,#030A11);border-right:1px solid rgba(0,180,220,.30);
    box-shadow:18px 0 44px rgba(0,0,0,.34);
  }
  .side-brand{display:flex;align-items:center;gap:12px;padding:24px 20px 22px;border-bottom:1px solid rgba(0,180,220,.16);cursor:pointer;}
  .side-logo{width:40px;height:40px;border-radius:9px;border:1px solid rgba(25,211,255,.34);display:flex;align-items:center;justify-content:center;background:rgba(0,174,239,.08);}
  .side-logo img{border-radius:6px;}
  .side-title{font-size:20px;font-weight:900;line-height:1.05;color:#F1FAFF;}
  .side-edition{
    margin-top:8px;color:#19D3FF;font-size:9px;font-weight:900;letter-spacing:.12em;
    /* v8.4.29 — el sidebar tiene 218 px fijos. Un label largo (trial con
       contador) puede sobrepasar y aparecer cortado sobre el main del
       diagnóstico. Forzamos clamp con ellipsis. */
    max-width:100%;
    overflow:hidden;
    white-space:nowrap;
    text-overflow:ellipsis;
  }
  /* L13 — conserva el aislamiento horizontal y permite alcanzar idioma,
     licencia y versión cuando la ventana de escritorio tiene poca altura. */
  .app-sidebar{ overflow-x:hidden; overflow-y:auto; }
  .side-brand{ min-width:0; }
  .side-brand > div{ min-width:0; flex:1 1 auto; overflow:hidden; }
  .side-title{ overflow:hidden; text-overflow:ellipsis; }
  .side-nav{display:grid;gap:5px;padding:18px 0;}
  .side-nav .nb{
    min-height:52px;flex:none;display:flex;flex-direction:row;justify-content:flex-start;gap:14px;width:100%;
    padding:0 22px;border:0;border-left:3px solid transparent;font-size:13px;color:#A7BDCB;background:transparent;
  }
  .side-nav .ni{width:22px;text-align:center;color:#86A1B3;font-size:20px;}
  .side-nav .nb.active{
    color:#F2FBFF;border-left-color:#19D3FF;background:linear-gradient(90deg,rgba(0,194,255,.23),rgba(0,174,239,.04));
    box-shadow:inset 0 0 30px rgba(0,174,239,.08);
  }
  .side-nav .nb.active .ni{color:#19D3FF;}
  /* v8.4.33 — sidebar inferior premium: jerarquía + spacing uniforme */
  .side-bottom{
    margin-top:auto;
    padding:14px 16px 16px;
    display:flex;flex-direction:column;
    gap:11px;
    /* todas las cards interiores comparten ancho útil del contenedor */
    align-items:stretch;
  }
  .side-lang{
    min-height:40px;
    border:1px solid rgba(90,180,210,.20);background:rgba(7,19,30,.7);border-radius:7px;
    color:#CFE8F6;display:flex;align-items:center;justify-content:space-between;
    gap:8px;padding:0 11px;font-family:inherit;cursor:pointer;
    width:100%;
  }
  #side-lang-code{background:rgba(0,174,239,.15);border-radius:50%;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-weight:900;color:#19D3FF;}
  #side-lang-label{font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.08em;margin-right:auto;}

  /* Card licencia — más limpia: padding 12px, separación clara */
  .side-license{
    border:1px solid rgba(90,180,210,.20);
    background:rgba(7,19,30,.7);
    border-radius:7px;
    padding:12px;
    width:100%;
    display:flex;flex-direction:column;
    gap:6px;
  }
  .side-license-state{
    color:#38E27A;font-size:10px;font-weight:900;
    letter-spacing:.08em;text-transform:uppercase;
    margin:0;
  }
  .side-license-text{
    font-size:11px;line-height:1.55;
    /* email en color secundario, no compite con el estado verde */
    color:#8FA8B8;
    word-break:break-word;
    margin:0;
  }
  .side-license-link{
    /* link/acento cyan, sin underline pesado */
    background:transparent;border:0;
    color:#19D3FF;font-size:11px;font-weight:800;
    padding:0;cursor:pointer;font-family:inherit;
    text-decoration:none;
    align-self:flex-start;
    margin-top:2px;
    letter-spacing:.02em;
  }
  .side-license-link:hover{ text-decoration:underline; }

  /* v8.4.33 — Footer técnico discreto (versión + edition) */
  .side-version{
    /* menor protagonismo que licencia */
    font-size:10.5px;line-height:1.55;
    color:#5E748A;
    width:100%;
    padding:4px 2px 0;
    margin-top:2px;
    text-align:left;
    letter-spacing:.02em;
  }
  .side-version span{
    color:#19D3FF;font-weight:800;font-size:9.5px;
    letter-spacing:.08em;
    opacity:.85;
  }
  .hdr{left:218px;position:sticky;}
  .hdr-inner{height:64px;padding:0 30px 0 26px;}
  .hdr-actions{display:flex;}
  .nav{display:none;}
  .main,.app-footer{margin-left:218px;}
  .main{max-width:none;}
  .vi{max-width:1500px;margin:0 auto;padding:24px 26px 34px;}
  .home-vi{max-width:1640px;}
  .home-grid{grid-template-columns:minmax(660px,1.72fr) minmax(420px,.98fr);}
  .app-footer{padding-left:26px;padding-right:26px;}
}

@media(min-width:1500px){
  .home-grid{grid-template-columns:minmax(780px,1.6fr) minmax(500px,.9fr);}
  .direct-grid{grid-template-columns:repeat(4,minmax(0,1fr));}
}

.hdr-license-label-short{display:none;}
@media(max-width:1179px){
  .hdr-system-pill{display:none;}
  /* v8.7.42 (VM-01) — Ayuda y Mi licencia SÍ accesibles en móvil, en versión
     compacta: la licencia muestra el punto de estado + "Licencia" y Ayuda
     queda con padding reducido. Antes .hdr-actions se ocultaba por completo,
     dejando al usuario de campo (móvil) sin acceso a Ayuda ni gestión de
     licencia/dispositivos. */
  .hdr-actions{display:flex;gap:6px;}
  .hdr-actions .hdr-action{padding:7px 9px;font-size:11px;}
  .hdr-action-license{padding:6px 8px;}
  .hdr-action-license .hdr-license-label{display:none;}
  .hdr-action-license .hdr-license-label-short{display:inline;font-size:11px;}
  /* v8.7.42 (VM-01) — al hacer sitio para Ayuda/Mi licencia, se ocultan del
     header los mirrors decorativos (LEDs de CPU y punto de autoguardado): el
     panel real de LEDs vive en Home y evita el desborde horizontal en móvil. */
  .hdr-right .cpu-status,.hdr-right .save-dot{display:none;}
  /* v8.7.42 (VM-01) — padding/gap del header comprimidos en móvil para que
     Brand · Mi licencia · Ayuda · idioma entren sin scroll horizontal. */
  .hdr-inner{padding:0 10px;gap:8px;}
  .hdr-brand{flex:1 1 auto;min-width:0;}
  .hdr-brand>div:last-child{flex:1 1 auto;min-width:0;}
  .hdr-right{gap:6px;}
  .home-grid,.cpu-home-grid{grid-template-columns:1fr;}
  .cpu-home-head,.symptom-head{align-items:stretch;flex-direction:column;}
  .cpu-home-head .dsel,.symptom-search{min-width:0;width:100%;}
}
@media(max-width:498px){
  .direct-grid{grid-template-columns:1fr;}
}
/* v8.2.2 — compact operating desktop pass */
@media(min-width:1180px){
.home-vi{padding-top:14px;padding-bottom:22px;}
.home-main-col,.home-side-col{gap:12px;}
.panel,.hero-status,.pro-upgrade-box{box-shadow:0 12px 30px rgba(0,0,0,.24),inset 0 1px 0 rgba(255,255,255,.025);}
.ph{padding:8px 13px;min-height:38px;}
.panel-sub{font-size:10px;margin-top:3px;}
.cpu-home-head .dsel{min-height:36px;min-width:248px;font-size:11px;}
/* v8.7.20 — Esta regla queda como heredada de v8.2.2; el rebalance real
   del grid Estado CPU lo gobierna el bloque "v8.4.6 / v8.7.20" mas abajo
   (con !important). Mantengo aqui solo gap/padding heredados. */
.cpu-home-grid{gap:9px;padding:12px 12px 0;grid-template-columns:minmax(230px,.76fr) minmax(330px,1.24fr);}
.cpu-visual-zone,.cpu-control-zone{padding:10px;}
.zone-label{font-size:10px;margin-bottom:7px;}
.cpu-visual{padding:0 0 4px;}
.cpu-body{max-width:292px;padding:11px;}
.cpu-leds{gap:6px;}
.led-row-ctrl{gap:8px;}
.led-row-ctrl label{font-size:10px;width:45px;}
.led-opts{gap:4px;}
.led-opt{min-height:28px;padding:5px 3px;font-size:9px;}
.platform-help-s7400{margin:7px 0 8px;font-size:10px;}
.led-interp{margin:12px;border-radius:7px;padding:12px 13px;font-size:11px;}
.li-title{font-size:13px;margin-bottom:4px;}
.li-section{margin:7px 0 4px;}
.li-goto{min-height:40px;min-width:260px;margin-top:9px;font-size:12px;}

.symptom-head{min-height:42px;}
.symptom-search{min-width:230px;padding:0 9px;}
.symptom-search input{min-height:34px;font-size:11px;}
.direct-grid{padding:11px 12px 7px;gap:8px;}
.dc{
  min-height:58px;grid-template-columns:30px minmax(0,1fr) 14px;gap:8px;padding:9px 10px;
  border-radius:6px;
}
.dc-ico{width:27px;height:27px;font-size:10px;}
.dc-ico-svg{width:15px;height:15px;}
.dc-t{font-size:12px;}
.dc-s{font-size:9px;margin-top:2px;}
.dc-chevron{font-size:15px;}
.symptom-all-btn{margin:0 12px 12px;width:calc(100% - 24px);min-height:34px;font-size:11px;}

.pro-upgrade-box{min-height:166px;padding:16px 17px;}
.pro-visual{right:16px;top:34px;width:90px;height:90px;}
.pro-upgrade-k{font-size:9px;}
.pro-upgrade-t{font-size:18px;max-width:285px;margin-bottom:5px;}
.pro-upgrade-s{font-size:11px;line-height:1.45;max-width:305px;margin-bottom:7px;}
.pro-feature-row{gap:5px;margin:8px 0 0;max-width:305px;}
.pro-feature-row span{font-size:9px;padding:4px 7px;}
.pro-upgrade-btn{min-height:38px;min-width:215px;margin-top:9px;font-size:11px;}
.pro-upgrade-btn.secondary{margin-top:7px;}

.home-license-body{padding:12px;}
.license-card-row{margin-bottom:8px;}
.license-main{font-size:13px;}
.license-sub{font-size:10px;}
.ctx-line{padding:7px 0;}
.ctx-line span,.ctx-line strong{font-size:10px;}
.license-actions button{min-height:30px;font-size:10px;}
.hero-status{padding:12px;}
.hs-label{font-size:9px;margin-bottom:7px;}
.hs-empty{font-size:11px;}
.hs-conf{margin-top:9px;padding-top:9px;}
.app-footer{padding-top:10px;padding-bottom:10px;}
.lg-footer-disclaimer{font-size:10px;margin-bottom:6px;}
}

@media(min-width:1180px){
  .app-sidebar{width:212px;}
  .side-brand{padding:20px 18px 18px;}
  .side-logo{width:42px;height:42px;box-shadow:0 0 22px rgba(0,174,239,.12);}
  .side-title{font-size:20px;}
  .side-edition{margin-top:6px;font-size:8px;}
  .side-nav{gap:3px;padding:14px 0;}
  .side-nav .nb{min-height:47px;padding:0 20px;font-size:12px;}
  .side-nav .ni{font-size:18px;}
  /* v8.4.33 — Override compacto para sidebar 212px sin romper jerarquía */
  .side-bottom{gap:10px;padding:12px 14px 14px;}
  .side-lang{min-height:38px;}
  .side-license{padding:11px;}
  .hdr{left:212px;}
  .main,.app-footer{margin-left:212px;}
  .hdr-inner{height:58px;padding:0 24px;}
  .vi{padding:18px 22px 26px;max-width:1480px;}
  .home-vi{max-width:1540px;}
  .home-grid{grid-template-columns:minmax(760px,1.55fr) minmax(360px,.85fr);gap:18px 20px;}
  .direct-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
}

@media(min-width:1680px){
  .home-vi{max-width:1620px;}
  .home-grid{grid-template-columns:minmax(840px,1.58fr) minmax(420px,.82fr);}
  .direct-grid{grid-template-columns:repeat(4,minmax(0,1fr));}
}

/* ═══════════════════════════════════════════════════════════════
   v8.2.3 — Home polish: compact interp, balanced side col, image PRO
   ═══════════════════════════════════════════════════════════════ */

/* --- Interpretación CPU compacta (dos columnas internas) --- */
.led-interp.fd{padding:12px 13px 13px;}
.led-interp .li-head{margin-bottom:6px;}
.led-interp .li-title{font-size:13px;font-weight:800;margin-bottom:3px;line-height:1.25;}
.led-interp .li-desc{font-size:11.5px;line-height:1.45;opacity:.92;}
.led-interp .li-warning{
  background:rgba(0,0,0,.15);padding:6px 9px;border-radius:4px;
  font-size:11px;margin-top:7px;line-height:1.45;
}
.led-interp .li-section{font-size:9px;text-transform:uppercase;letter-spacing:.8px;opacity:.6;margin:0 0 4px;}
.led-interp .li-cause{font-size:11px;line-height:1.4;margin-bottom:3px;}
.led-interp .li-actions{font-size:11px;line-height:1.55;opacity:.92;}
.led-interp .li-cols{display:grid;grid-template-columns:1fr;gap:10px 18px;margin-top:8px;}
.led-interp .li-col-causes,
.led-interp .li-col-actions{min-width:0;}
.led-interp .li-goto{
  margin-top:10px;min-height:38px;padding:10px 14px;
  font-size:12px;letter-spacing:.02em;width:100%;
}

@media(min-width:980px){
  .led-interp .li-cols{grid-template-columns:1fr 1fr;gap:6px 22px;}
}
@media(min-width:1180px){
  .led-interp.fd{padding:11px 13px 12px;}
  .led-interp .li-head{display:flex;flex-direction:column;gap:2px;}
  .led-interp .li-title{font-size:13px;margin-bottom:1px;}
  .led-interp .li-desc{font-size:11px;line-height:1.4;}
  .led-interp .li-cols{margin-top:6px;gap:4px 22px;}
  .led-interp .li-section{margin:2px 0 4px;}
  .led-interp .li-cause{margin-bottom:2px;}
  .led-interp .li-goto{min-height:36px;margin-top:8px;font-size:11.5px;}
  .led-interp{margin:10px 12px 12px;}
}

.led-interp .li-cols.li-cols-with-safety{grid-template-columns:minmax(0,1fr);}

/* --- PRO card: imagen integrada al fondo, layout más limpio (v8.2.4) --- */
.pro-upgrade-box{
  position:relative;overflow:hidden;
  display:block;min-height:190px;padding:18px 22px;
}
/* Ocultar restos legacy si vinieran de versiones previas */
.pro-upgrade-box .pro-visual,
.pro-upgrade-box .pro-feature-row,
.pro-upgrade-box .pro-upgrade-actions .pro-upgrade-btn.secondary{display:none !important;}

.pro-upgrade-box .pro-upgrade-body{
  position:relative;z-index:3;
  display:flex;flex-direction:column;gap:6px;
  max-width:62%;
}
.pro-upgrade-box .pro-upgrade-actions{
  display:flex;flex-direction:column;gap:6px;margin-top:14px;
}
.pro-upgrade-box .pro-upgrade-actions .pro-upgrade-btn{margin-top:0;width:auto;align-self:flex-start;}

/* Capa de la imagen, ocupa la mitad derecha y se funde con el fondo */
.pro-upgrade-box .pro-upgrade-art{
  position:absolute;right:0;top:0;bottom:0;width:54%;
  z-index:1;pointer-events:none;
  display:flex;align-items:center;justify-content:flex-end;
  overflow:hidden;
}
.pro-upgrade-box .pro-upgrade-art img{
  width:100%;max-width:360px;height:auto;display:block;
  object-fit:contain;
  opacity:.78;
  filter:saturate(1.08) contrast(1.06) drop-shadow(0 8px 18px rgba(0,174,239,.30));
  transform:translateX(14px) scale(1.08);
  -webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 22%,#000 78%,transparent 100%);
  mask-image:linear-gradient(90deg,transparent 0%,#000 22%,#000 78%,transparent 100%);
}

/* Overlay que difumina la imagen contra el fondo y refuerza la legibilidad del texto */
.pro-upgrade-box::after{
  content:'';position:absolute;inset:0;pointer-events:none;z-index:2;
  background:
    linear-gradient(90deg,
      rgba(5,18,28,0.96) 0%,
      rgba(5,18,28,0.88) 42%,
      rgba(5,18,28,0.32) 72%,
      rgba(5,18,28,0.12) 100%),
    radial-gradient(circle at 82% 45%,
      rgba(0,194,255,0.22) 0%,
      rgba(0,194,255,0.08) 34%,
      transparent 64%);
}

/* Desktop ajustes finos */
@media(min-width:1180px){
  .pro-upgrade-box{min-height:174px;padding:16px 18px;}
  .pro-upgrade-box .pro-upgrade-body{max-width:62%;}
  .pro-upgrade-box .pro-upgrade-k{font-size:9px;margin-bottom:4px;}
  .pro-upgrade-box .pro-upgrade-t{font-size:17px;max-width:none;margin-bottom:4px;line-height:1.18;}
  .pro-upgrade-box .pro-upgrade-s{font-size:11px;line-height:1.42;max-width:none;margin-bottom:0;}
  .pro-upgrade-box .pro-upgrade-actions{margin-top:12px;}
  .pro-upgrade-box .pro-upgrade-btn{min-height:38px;min-width:230px;width:auto;align-self:flex-start;font-size:11.5px;padding:9px 16px;}
  .pro-upgrade-box .pro-upgrade-art{width:52%;}
  .pro-upgrade-box .pro-upgrade-art img{max-width:300px;}
}

/* Tablet/mobile: ocultar la imagen para no comprimir el texto */
@media(max-width:900px){
  .pro-upgrade-box .pro-upgrade-body{max-width:100%;}
  .pro-upgrade-box .pro-upgrade-art{display:none;}
  .pro-upgrade-box::after{
    background:radial-gradient(circle at 80% 30%,rgba(0,194,255,0.16),transparent 60%);
  }
}

/* --- Quitar el botón legacy "Ver todos los síntomas" si reaparece --- */
.symptom-all-btn{display:none !important;}

/* --- MOTOR DE DIAGNÓSTICO mini-card --- */
.engine-stats-panel{
  background:
    linear-gradient(180deg,rgba(12,31,43,.94),rgba(7,20,30,.92)),
    repeating-linear-gradient(90deg,rgba(25,211,255,.025) 0 1px,transparent 1px 32px);
  border:1px solid rgba(0,180,220,0.24);border-radius:8px;
  box-shadow:0 12px 30px rgba(0,0,0,.24),inset 0 1px 0 rgba(255,255,255,.025);
  padding:12px 14px;display:flex;flex-direction:column;gap:10px;
}
.engine-stats-panel .es-head{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
}
.engine-stats-panel .es-title{
  color:#CDEBFF;font-size:11px;font-weight:900;letter-spacing:.12em;
}
.engine-stats-panel .es-badge{
  display:inline-flex;align-items:center;gap:6px;
  background:rgba(34,197,94,.12);border:1px solid rgba(34,197,94,.34);
  color:#7BE7A0;font-size:9px;font-weight:900;letter-spacing:.08em;
  padding:3px 8px;border-radius:999px;text-transform:uppercase;
}
.engine-stats-panel .es-dot{
  width:7px;height:7px;border-radius:50%;background:#34D67A;
  box-shadow:0 0 10px rgba(52,214,122,.7);
}
.engine-stats-panel .es-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:7px 14px;
}
.engine-stats-panel .es-cell{
  display:flex;flex-direction:column;gap:1px;
  border-top:1px solid rgba(90,180,210,.10);padding-top:6px;
}
.engine-stats-panel .es-cell:nth-child(-n+2){border-top:0;padding-top:0;}
.engine-stats-panel .es-k{
  color:#8FA7B8;font-size:9.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;
}
.engine-stats-panel .es-v{
  color:#EAF6FF;font-size:12px;font-weight:800;letter-spacing:.01em;
}
.engine-stats-panel .es-v.es-mode{color:#19D3FF;}
.engine-stats-panel .es-v.es-ok{color:#7BE7A0;}

@media(min-width:1180px){
  .engine-stats-panel{padding:11px 13px;gap:9px;}
  .engine-stats-panel .es-title{font-size:10px;}
  .engine-stats-panel .es-grid{gap:6px 12px;}
  .engine-stats-panel .es-k{font-size:9px;}
  .engine-stats-panel .es-v{font-size:11.5px;}
}

/* --- Balance home: gap menor entre Estado CPU y Síntoma (Fase 4) --- */
@media(min-width:1180px){
  .home-main-col{gap:10px;}
  .home-side-col{gap:10px;}
  .panel.cpu-home-panel{margin-bottom:0;}
}

/* --- Asegurar layout 1366/1440/1920 más equilibrado --- */
@media(min-width:1180px) and (max-width:1399px){
  .home-grid{grid-template-columns:minmax(640px,1.45fr) minmax(360px,.95fr);gap:14px 16px;}
}
@media(min-width:1400px) and (max-width:1599px){
  .home-grid{grid-template-columns:minmax(700px,1.5fr) minmax(380px,.9fr);gap:16px 18px;}
}
@media(min-width:1600px){
  .home-grid{grid-template-columns:minmax(820px,1.55fr) minmax(420px,.85fr);gap:18px 22px;}
}

html,body{overflow-x:hidden;}

/* ═══════════════════════════════════════════════════════════════
   OTP GATE — estilos adicionales para paso 2 (código OTP)
   ═══════════════════════════════════════════════════════════════ */

.teb-otp-email {
  font-size: 13px;
  font-weight: 600;
  color: var(--brand, #00b4d8);
  margin-bottom: 18px;
  word-break: break-all;
}

.teb-otp-input {
  letter-spacing: 0.25em;
  font-size: 22px;
  text-align: center;
  font-weight: 700;
}

.gate-otp-actions {
  display: flex;
  gap: 10px;
  margin-bottom: 14px;
  flex-wrap: wrap;
}

.teb-btn-secondary {
  flex: 1;
  background: var(--bg, #0f1117);
  border: 1px solid var(--border, #2a2e3d);
  border-radius: 8px;
  padding: 10px 14px;
  font-size: 13px;
  font-weight: 600;
  color: var(--text, #e8eaf0);
  cursor: pointer;
  transition: border-color 0.2s, color 0.2s;
}
.teb-btn-secondary:hover:not(:disabled) {
  border-color: var(--brand, #00b4d8);
  color: var(--brand, #00b4d8);
}
.teb-btn-secondary:disabled { opacity: 0.45; cursor: not-allowed; }

.teb-btn-ghost {
  flex: 1;
  background: none;
  border: 1px solid transparent;
  border-radius: 8px;
  padding: 10px 14px;
  font-size: 13px;
  color: var(--text-muted, #8b90a0);
  cursor: pointer;
  transition: color 0.2s;
}
.teb-btn-ghost:hover { color: var(--text, #e8eaf0); }

.teb-cooldown {
  font-size: 12px;
  color: var(--text-muted, #8b90a0);
  text-align: center;
  margin-bottom: 10px;
}

@keyframes boj-shake {
  0%,100% { transform: translateX(0); }
  20%      { transform: translateX(-6px); }
  40%      { transform: translateX(6px); }
  60%      { transform: translateX(-4px); }
  80%      { transform: translateX(4px); }
}
.teb-input-shake { animation: boj-shake 0.4s ease; }

/* ── Compact language selector ────────────────────────────────────────────── */
#lang-switcher {
  position: relative;
  display: inline-block;
  z-index: 200;
}
#lang-switcher .lang-pill {
  background: var(--bg2, #1a2030);
  border: 1.5px solid var(--brand-br, rgba(0,180,216,.35));
  color: var(--brand, #00b4d8);
  border-radius: 50%;
  width: 36px; height: 36px;
  font-size: 10px; font-weight: 700; letter-spacing: .04em;
  cursor: pointer; line-height: 1;
  display: flex; align-items: center; justify-content: center;
  transition: background .15s, border-color .15s;
  white-space: nowrap;
}
#lang-switcher .lang-pill:hover,
#lang-switcher.open .lang-pill {
  background: var(--brand-lt, rgba(0,180,216,.15));
  border-color: var(--brand, #00b4d8);
}
#lang-switcher .lang-dropdown {
  display: none;
  position: absolute;
  top: calc(100% + 6px); right: 0;
  background: var(--bg2, #1a2030);
  border: 1.5px solid var(--brand-br, rgba(0,180,216,.35));
  border-radius: 8px;
  padding: 4px;
  min-width: 52px;
  box-shadow: 0 4px 18px rgba(0,0,0,.45);
  flex-direction: column; gap: 2px;
  max-height:calc(100dvh - 64px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
  overflow-y:auto;
  overscroll-behavior:contain;
}
#lang-switcher.open .lang-dropdown:not([hidden]) {
  display: flex;
}
#lang-switcher .lang-dropdown[hidden]{display:none;}
#lang-switcher .lang-opt {
  background: transparent;
  border: none;
  color: var(--txt2, #9ca3af);
  padding: 6px 8px;
  min-width:44px;min-height:44px;
  font-size: 11px; font-weight: 600; letter-spacing: .04em;
  cursor: pointer; border-radius: 5px;
  text-align: center; line-height: 1;
  display:flex;align-items:center;justify-content:center;
  transition: background .12s, color .12s;
}
#lang-switcher .lang-opt:hover {
  background: var(--brand-lt, rgba(0,180,216,.15));
  color: var(--brand, #00b4d8);
}
/* Hide old lang-btn style if present */
#lang-switcher .lang-btn { display: none; }

/* ── Fix 4: separator below nav buttons in guided diagnosis ────────────────── */
#guided-hypo-inline,
.trace-panel.compact,
.context-band {
  margin-top: 18px;
}
#guided-hypo-inline:not(:empty) + .trace-panel,
#guided-hypo-inline:not(:empty) {
  border-top: 1px solid rgba(255,255,255,.07);
  padding-top: 14px;
  margin-top: 18px;
}


/* =====================================================
   LOADING SCREEN — v8.0
   ===================================================== */
body.boj-app-booting > .app-sidebar,
body.boj-app-booting > .hdr,
body.boj-app-booting > .nav,
body.boj-app-booting > .main,
body.boj-app-booting > .app-footer{visibility:hidden;}
.boj-noscript{
  position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;
  padding:24px;background:#0A0E14;color:#E8EEF4;text-align:center;font:700 14px/1.6 system-ui,sans-serif;
}
#boj-loading-screen{
  position:fixed;inset:0;z-index:9999;
  background:var(--bg,#0A0E14);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:18px;transition:opacity 0.35s ease;
}
#boj-loading-screen.bls-hidden{
  opacity:0;pointer-events:none;
}
#boj-loading-screen.bls-error .bls-spinner{display:none;}
#boj-loading-screen.bls-error .bls-sub{max-width:440px;padding:0 24px;color:var(--danger-t,#FCA5A5);text-align:center;line-height:1.55;}
.bls-logo{
  width:52px;height:52px;border-radius:10px;overflow:hidden;
  background:#000;border:1px solid rgba(0,157,218,0.3);
}
.bls-logo img{width:100%;height:100%;display:block;}
.bls-name{font-size:15px;font-weight:700;color:var(--txt,#E8EEF4);letter-spacing:0.5px;}
.bls-spinner{
  width:22px;height:22px;border-radius:50%;
  border:2.5px solid rgba(0,157,218,0.2);
  border-top-color:#009FDA;
  animation:bls-spin 0.8s linear infinite;
}
@keyframes bls-spin{to{transform:rotate(360deg);}}
.bls-sub{font-size:11px;color:var(--txt3,#6B7A8E);}

/* ═══════════════════════════════════════════════════════════════
   v8.4.0 — Confianza explicable (explain-panel)
   ═══════════════════════════════════════════════════════════════ */
.explain-panel{
  background:linear-gradient(180deg,rgba(12,31,43,.92),rgba(7,20,30,.90));
  border:1px solid rgba(0,180,220,0.20);border-radius:8px;
  padding:14px 16px;margin:14px 0;
  font-size:12px;line-height:1.5;color:var(--txt,#E8EEF4);
  box-shadow:0 8px 22px rgba(0,0,0,.18),inset 0 1px 0 rgba(255,255,255,.03);
}
.explain-panel.compact{padding:11px 13px;margin:12px 0 0;}
.explain-panel .explain-head{
  display:flex;justify-content:space-between;align-items:center;gap:10px;
  border-bottom:1px solid rgba(90,180,210,.14);padding-bottom:8px;margin-bottom:10px;
}
.explain-panel .explain-band{font-size:11px;font-weight:900;letter-spacing:.06em;text-transform:uppercase;}
.explain-panel .explain-conf{font-size:11px;color:var(--txt3,#8FA7B8);}
.explain-panel .explain-conf strong{font-size:12px;}
.explain-panel .explain-title{
  font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;
  color:#CDEBFF;margin-bottom:7px;
}
.explain-panel .explain-hyp{
  display:flex;align-items:baseline;gap:8px;
  background:rgba(0,174,239,.06);border:1px solid rgba(0,180,220,.18);
  border-radius:6px;padding:8px 10px;margin-bottom:10px;
}
.explain-panel .explain-hyp-lbl{flex:1;font-size:12.5px;font-weight:700;color:var(--txt,#E8EEF4);}
.explain-panel .explain-hyp-pct{font-size:14px;font-weight:900;}
.explain-panel .explain-section-k{
  font-size:9.5px;font-weight:900;text-transform:uppercase;letter-spacing:.07em;
  color:var(--txt3,#8FA7B8);margin:9px 0 4px;
}
.explain-panel .explain-list{
  margin:0;padding:0 0 0 16px;list-style:none;
}
.explain-panel .explain-list li{
  position:relative;padding:2px 0 2px 14px;font-size:11.5px;line-height:1.45;
}
.explain-panel .explain-list li::before{
  position:absolute;left:0;top:2px;font-size:11px;
}
.explain-panel .explain-list.explain-support li{color:#CDEBFF;}
.explain-panel .explain-list.explain-support li::before{content:'+';color:var(--ok-t,#4ade80);font-weight:900;}
.explain-panel .explain-list.explain-refute li{color:#D4DDE4;}
.explain-panel .explain-list.explain-refute li::before{content:'−';color:var(--warn-t,#facc15);font-weight:900;}
.explain-panel .explain-empty{
  font-size:11px;color:var(--txt3,#8FA7B8);font-style:italic;padding:2px 0;
}
.explain-panel .explain-competitor{
  display:flex;align-items:baseline;gap:8px;
  background:rgba(250,204,21,.08);border:1px solid rgba(250,204,21,.22);
  border-radius:6px;padding:6px 9px;
}
.explain-panel .explain-cmp-lbl{flex:1;font-size:11.5px;color:#FFE9A8;}
.explain-panel .explain-cmp-pct{font-size:12px;font-weight:800;color:var(--warn-t,#facc15);}
.explain-panel .explain-cmp-margin{font-size:10px;color:var(--txt3,#8FA7B8);}
.explain-panel .explain-warning{
  background:rgba(239,68,68,.10);border:1px solid rgba(239,68,68,.28);
  color:#FFB4B4;font-size:11px;padding:5px 9px;border-radius:4px;margin-bottom:4px;
}
.explain-panel .explain-next{
  background:rgba(25,211,255,.06);border:1px solid rgba(25,211,255,.22);
  border-radius:6px;padding:7px 10px;
}
.explain-panel .explain-next-t{font-size:12px;font-weight:700;color:#CDEBFF;margin-bottom:2px;}
.explain-panel .explain-next-d{font-size:11px;color:var(--txt2,#B4C9D6);line-height:1.45;}
.explain-panel .explain-disclaimer{
  margin-top:10px;padding-top:8px;border-top:1px dashed rgba(90,180,210,.16);
  font-size:10.5px;color:var(--txt3,#8FA7B8);font-style:italic;line-height:1.4;
}

/* ═══════════════════════════════════════════════════════════════
   v8.4.1 — Filtro por dominio en grilla de síntomas
   ═══════════════════════════════════════════════════════════════ */
.domain-chips{
  display:flex;flex-wrap:wrap;gap:6px;
  padding:8px 16px 0;
}
.domain-chips .dchip{
  background:rgba(7,19,30,.7);border:1px solid rgba(90,180,210,.20);
  color:#A9C2D4;font-size:10.5px;font-weight:800;letter-spacing:.04em;
  padding:5px 11px;border-radius:999px;cursor:pointer;
  font-family:inherit;text-transform:uppercase;
  transition:background .12s,border-color .12s,color .12s;
}
.domain-chips .dchip:hover{
  background:rgba(0,174,239,.10);border-color:rgba(0,180,220,.34);color:#CDEBFF;
}
.domain-chips .dchip.active{
  background:rgba(0,174,239,.18);border-color:rgba(25,211,255,.65);color:#EAF6FF;
  box-shadow:0 0 12px rgba(0,174,239,.18);
}
@media(min-width:1180px){
  .domain-chips{padding:6px 12px 0;gap:5px;}
  .domain-chips .dchip{font-size:9.5px;padding:4px 9px;}
}
@media(max-width:760px){
  .domain-chips{padding:6px 12px 0;gap:5px;}
  .domain-chips .dchip{font-size:10px;padding:5px 9px;}
}

/* ═══════════════════════════════════════════════════════════════
   v8.4.2 — Onboarding S7-400 PN/DP / H
   ═══════════════════════════════════════════════════════════════ */
.s7400-onb{
  background:linear-gradient(180deg,rgba(12,31,43,.92),rgba(7,20,30,.88));
  border:1px solid rgba(25,211,255,.30);border-radius:8px;
  margin:10px 14px 0;padding:10px 12px;
  position:relative;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);
}
.s7400-onb .s7400-onb-head{
  display:flex;align-items:center;gap:8px;margin-bottom:6px;
}
.s7400-onb .s7400-onb-ico{font-size:14px;color:#19D3FF;flex:0 0 auto;}
.s7400-onb .s7400-onb-title{
  flex:1;font-size:11px;font-weight:900;letter-spacing:.06em;text-transform:uppercase;color:#CDEBFF;
}
.s7400-onb .s7400-onb-close{
  flex:0 0 auto;background:transparent;border:0;color:#8FA7B8;cursor:pointer;
  font-size:14px;line-height:1;padding:4px 6px;border-radius:4px;font-family:inherit;
  transition:background .12s,color .12s;
}
.s7400-onb .s7400-onb-close:hover{background:rgba(255,255,255,.06);color:#EAF6FF;}
.s7400-onb .s7400-onb-body{
  font-size:11px;line-height:1.45;color:#B4C9D6;margin-bottom:8px;
}
.s7400-onb .s7400-onb-chips{display:flex;flex-wrap:wrap;gap:5px;}
.s7400-onb .s7400-onb-chip{
  font-size:9.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;
  background:rgba(0,174,239,.10);border:1px solid rgba(0,180,220,.28);color:#A9DCEF;
  padding:3px 8px;border-radius:999px;
}
@media(min-width:1180px){
  .s7400-onb{margin:8px 12px 0;padding:9px 12px;}
}

/* ═══════════════════════════════════════════════════════════════
   v8.4.2 — App info modal (Ayuda)
   ═══════════════════════════════════════════════════════════════ */
.app-info-modal{max-width:560px;}
.app-info-modal .modal-hdr{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
}
.app-info-modal .app-info-x{
  background:transparent;border:0;color:#A9C2D4;font-size:18px;
  cursor:pointer;padding:4px 8px;border-radius:4px;font-family:inherit;line-height:1;
  transition:color .12s,background .12s;
}
.app-info-modal .app-info-x:hover{color:#EAF6FF;background:rgba(255,255,255,.06);}
.app-info-body{padding:14px 16px;max-height:75vh;overflow-y:auto;}
.app-info-sec{
  border-bottom:1px solid rgba(90,180,210,.14);
  padding:12px 0;
}
.app-info-sec:first-child{padding-top:0;}
.app-info-sec:last-of-type{border-bottom:0;}
.app-info-k{
  font-size:10px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;
  color:#CDEBFF;margin-bottom:6px;
}
.app-info-p{
  font-size:12px;line-height:1.5;color:var(--txt2,#B4C9D6);margin:0 0 8px;
}
.app-info-link{
  display:inline-block;background:transparent;border:1px solid rgba(0,180,220,.30);
  color:#19D3FF;font-size:11px;font-weight:800;padding:6px 11px;border-radius:6px;
  cursor:pointer;font-family:inherit;transition:background .12s,border-color .12s;
}
.app-info-link:hover{background:rgba(0,174,239,.10);border-color:rgba(25,211,255,.55);}
.app-info-link.primary{
  background:rgba(0,174,239,.18);border-color:rgba(25,211,255,.55);color:#EAF6FF;margin-top:8px;
}
.app-info-license{margin:6px 0 4px;}
.app-info-row{
  display:flex;justify-content:space-between;align-items:center;gap:12px;
  padding:6px 0;border-bottom:1px dashed rgba(90,180,210,.10);
}
.app-info-row:last-child{border-bottom:0;}
.app-info-rk{font-size:11px;color:var(--txt3,#8FA7B8);font-weight:700;}
.app-info-row strong{font-size:12px;color:var(--txt,#E8EEF4);text-align:right;}
.app-info-meta{font-size:11px;}
.app-info-actions{display:flex;justify-content:flex-end;gap:7px;flex-wrap:wrap;margin-top:14px;}
.app-info-actions .modal-btn{padding:8px 18px;font-size:12px;}
.app-info-field-hub{
  margin:-2px 0 2px;padding:12px!important;border:1px solid rgba(25,211,255,.22)!important;
  border-radius:10px;background:linear-gradient(145deg,rgba(0,174,239,.09),rgba(22,197,138,.035));
}
.app-info-quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px;}
.app-info-quick-card{
  display:flex;align-items:flex-start;gap:9px;min-width:0;min-height:66px;padding:10px;
  border:1px solid rgba(90,180,210,.22);border-radius:8px;background:rgba(4,18,28,.52);
  color:var(--txt,#E8EEF4);font:inherit;text-align:left;cursor:pointer;
  transition:background .12s,border-color .12s,transform .12s;
}
.app-info-quick-card:hover,.app-info-quick-card:focus-visible{
  background:rgba(0,174,239,.11);border-color:rgba(25,211,255,.55);transform:translateY(-1px);
}
.app-info-quick-icon{
  display:grid;place-items:center;flex:0 0 25px;width:25px;height:25px;border-radius:7px;
  background:rgba(0,174,239,.14);border:1px solid rgba(25,211,255,.3);color:#19D3FF;
  font-size:14px;font-weight:900;
}
.app-info-quick-card strong{display:block;font-size:11.5px;line-height:1.25;color:#EAF6FF;}
.app-info-quick-card small{display:block;margin-top:3px;font-size:10px;line-height:1.35;color:var(--txt3,#8FA7B8);}
.app-info-quick-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px;}
.pro-feature-notice{padding-top:2px;}
@media(max-width:520px){
  .app-info-quick-grid{grid-template-columns:1fr;}
}

/* ═══════════════════════════════════════════════════════════════
   v8.4.3 — UX simplification pass (Home + Ayuda)
   ═══════════════════════════════════════════════════════════════ */

/* --- Estado de licencia compacto (Home) --- */
.home-license-compact{
  padding:11px 13px 12px;display:flex;flex-direction:column;gap:7px;
}
.home-license-compact .lcp-state-row{
  display:flex;align-items:center;gap:8px;font-size:12px;
}
.home-license-compact .lcp-dot{
  width:9px;height:9px;border-radius:50%;flex:0 0 auto;
}
.home-license-compact .lcp-state{
  font-weight:900;letter-spacing:.04em;font-size:12px;text-transform:uppercase;
}
.home-license-compact .lcp-sep{color:var(--txt3,#8FA7B8);}
.home-license-compact .lcp-mode{color:var(--txt2,#B4C9D6);font-size:11px;}
.home-license-compact .lcp-email{
  font-size:11px;color:var(--txt2,#B4C9D6);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.home-license-compact .lcp-actions{
  display:flex;gap:7px;margin-top:2px;flex-wrap:wrap;
}
.home-license-compact .lcp-btn{
  border:1px solid rgba(0,180,220,.30);background:rgba(0,174,239,.10);color:#CDEBFF;
  border-radius:6px;min-height:30px;padding:0 11px;font-family:inherit;font-weight:800;
  cursor:pointer;font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;
  transition:background .12s,border-color .12s;
}
.home-license-compact .lcp-btn:hover{background:rgba(0,174,239,.16);border-color:rgba(25,211,255,.55);}
.home-license-compact .lcp-btn-primary{
  background:rgba(0,174,239,.20);border-color:rgba(25,211,255,.55);color:#EAF6FF;
}
.home-license-compact .lcp-btn-secondary{
  background:transparent;border-color:rgba(90,180,210,.22);color:var(--txt2,#B4C9D6);
}

/* --- Hipótesis activas compacta (Home, sin diagnóstico) --- */
.hero-status.hero-status-empty{
  padding:9px 12px;
  background:linear-gradient(180deg,rgba(12,31,43,.70),rgba(7,20,30,.66));
  border-style:dashed;border-color:rgba(0,180,220,.18);
}
.hero-status.hero-status-empty .hs-label{margin-bottom:4px;font-size:9px;opacity:.7;}
.hero-status.hero-status-empty #hs-list{margin:0;}
.hero-status.hero-status-empty .hs-empty{
  font-size:11px;color:var(--txt3,#8FA7B8);font-style:italic;line-height:1.4;margin:0;
}
.hero-status.hero-status-empty .hs-conf{display:none;}

/* --- Onboarding S7-400 más compacto --- */
.s7400-onb{padding:9px 11px;margin:8px 12px 0;}
.s7400-onb .s7400-onb-title{font-size:10px;letter-spacing:.05em;}
.s7400-onb .s7400-onb-body{font-size:10.5px;line-height:1.4;margin-bottom:6px;}
.s7400-onb .s7400-onb-chip{font-size:9px;padding:2px 7px;}
@media(min-width:1180px){
  .s7400-onb{padding:8px 10px;margin:6px 10px 0;}
  .s7400-onb .s7400-onb-body{font-size:10px;}
}

/* --- LEDs avanzados S7-400 colapsables --- */
.s7400-adv-details,.cpu-adjunct-details{
  margin-top:7px;border-top:1px dashed rgba(90,180,210,.18);padding-top:6px;
}
.s7400-adv-summary{
  display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none;
  font-size:10px;font-weight:900;letter-spacing:.07em;text-transform:uppercase;
  color:#A9C2D4;padding:6px 4px;border-radius:5px;
  transition:background .12s,color .12s;
}
.s7400-adv-summary::-webkit-details-marker{display:none;}
.s7400-adv-summary:hover{background:rgba(0,174,239,.06);color:#CDEBFF;}
.s7400-adv-summary-t{flex:1;}
.s7400-adv-badge{
  color:var(--warn-t,#facc15);font-size:12px;line-height:1;
  text-shadow:0 0 8px rgba(250,204,21,.5);
}
.s7400-adv-chevron{
  font-size:11px;color:#8FA7B8;transition:transform .15s;
}
.s7400-adv-details[open] .s7400-adv-chevron,.cpu-adjunct-details[open] .s7400-adv-chevron{transform:rotate(180deg);}
.s7400-adv-rows{
  display:flex;flex-direction:column;gap:6px;padding:6px 0 2px;
}

/* --- Modal Ayuda: bloque Motor de Diagnóstico embebido --- */
.app-info-engine-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:5px 14px;margin-top:4px;
}
.app-info-erow{
  display:flex;justify-content:space-between;align-items:baseline;gap:8px;
  padding:4px 0;border-bottom:1px dashed rgba(90,180,210,.10);
}
.app-info-erow:last-child,.app-info-erow:nth-last-child(2){border-bottom:0;}
.app-info-erow .app-info-rk{font-size:10.5px;color:var(--txt3,#8FA7B8);}
.app-info-erow strong{font-size:11.5px;color:var(--txt,#E8EEF4);}

/* --- Polish layout final --- */
@media(min-width:1180px){
  .home-side-col{gap:9px;}
  .panel.home-license-panel{padding-bottom:2px;}
}

/* ═══════════════════════════════════════════════════════════════
   v8.4.6 — PLC realista (chassis industrial Siemens-like)
   • Carcasa plástica mate gris/azul-grisáceo
   • Tapas oscuras serigrafiadas arriba y abajo
   • LED bay rebajado con LEDs físicos y rótulos blancos
   • Selector MODE con 4 ranuras y posición activa ámbar (estilo Siemens)
   • Ventilación lateral
   • Sin glow cyan agresivo. Acentos sutiles.
   ═══════════════════════════════════════════════════════════════ */

.plcr{
  width:100%;
  margin:0 auto;
  display:flex;justify-content:center;
}
.plcr-chassis{
  position:relative;
  width:100%;max-width:420px;
  background:
    linear-gradient(145deg,rgba(255,255,255,.065),transparent 34%),
    linear-gradient(180deg,#596979 0%,#405061 42%,#2b3743 100%);
  border:1px solid #151d26;
  border-radius:5px;
  /* Bordes con relieve sutil — simula plástico real */
  box-shadow:
    inset 0 2px 0 rgba(255,255,255,.16),
    inset 1px 0 0 rgba(255,255,255,.07),
    inset -2px 0 0 rgba(0,0,0,.42),
    inset 0 -2px 0 rgba(0,0,0,.55),
    0 14px 30px rgba(0,0,0,.52),
    0 3px 0 rgba(0,0,0,.42);
  overflow:hidden;
}
/* Subtle texture overlay (líneas verticales muy tenues) */
.plcr-chassis::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:repeating-linear-gradient(90deg,
    rgba(255,255,255,.012) 0 1px,
    transparent 1px 32px);
  opacity:.7;
}

/* ── Tapa superior — serigrafía "SIMATIC" sobre placa oscura ────── */
.plcr-top{
  position:relative;z-index:2;
  height:22px;padding:0 12px;
  background:linear-gradient(180deg,#263442 0%,#111922 100%);
  border-bottom:1px solid #050810;
  display:flex;align-items:center;justify-content:space-between;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08),inset 0 -2px 0 rgba(0,0,0,.38);
}
.plcr-top-code{
  font-size:9.5px;font-weight:700;letter-spacing:.22em;
  color:#d7e0e8;text-shadow:0 1px 0 rgba(0,0,0,.9);
  font-family:"Arial Narrow","Liberation Sans Narrow","Inter Narrow",Arial,sans-serif;
  text-transform:uppercase;
}
.plcr-top-dot{
  width:8px;height:8px;border-radius:50%;border:1px solid #171c20;
  background:radial-gradient(circle at 36% 32%,#e4e7ea 0 9%,#929aa2 18%,#555d64 48%,#20262b 76%,#767e84 86%,#252b30 100%);
  box-shadow:inset 0 1px 1px rgba(255,255,255,.5),inset 0 -1px 1px rgba(0,0,0,.8),0 1px 1px rgba(0,0,0,.55);
  flex:0 0 auto;
}

/* ── Cara frontal — LED bay + MODE ──────────────────────────────── */
.plcr-face{
  position:relative;z-index:2;
  display:grid;
  grid-template-columns:1fr 86px;
  gap:10px;padding:12px;
  background:linear-gradient(90deg,rgba(255,255,255,.025),transparent 38%,rgba(0,0,0,.08));
}
.plcr-led-bay{
  background:linear-gradient(180deg,#16202a 0%,#0b1118 58%,#070b10 100%);
  border:1px solid #05080d;
  border-radius:3px;
  padding:10px 10px 11px;
  display:flex;flex-direction:column;gap:7px;
  box-shadow:
    inset 0 0 16px rgba(0,0,0,.82),
    inset 0 2px 0 rgba(255,255,255,.035),
    0 1px 0 rgba(255,255,255,.05);
}
.plcr-led-group{display:flex;flex-direction:column;gap:7px;}
.plcr-led-divider{
  height:1px;
  background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.10) 50%,transparent 100%);
  margin:2px -4px 1px;
}
.plcr-led-row{
  display:grid;
  grid-template-columns:12px 1fr auto;
  gap:10px;align-items:center;
  padding:1px 0;
}
.plcr-led-row-na{opacity:.40;}
.plcr-led-name{
  font-size:10px;font-weight:700;letter-spacing:.08em;
  color:#d2dde7;text-transform:uppercase;
  font-family:"Arial Narrow","Liberation Sans Narrow","Inter Narrow",Arial,sans-serif;
}
.plcr-led-state{
  font-size:9px;color:#6d7e8f;text-align:right;
  white-space:nowrap;letter-spacing:.04em;
  font-family:"Arial Narrow","Liberation Sans Narrow",Arial,sans-serif;
}

/* ── LED dot dentro del PLC realista ──────────────────────────────
   Sutiles: aro plástico, lente convexa, sin halo exagerado.
   Conservamos clase .cpu-led + colores (g/y/r/b/off) para
   que setLed() siga funcionando sin tocar JS.
   ──────────────────────────────────────────────────────────────── */
.plcr .cpu-led{
  width:11px;height:11px;border-radius:50%;
  background:#0a0f15;
  border:1px solid #050810;
  cursor:inherit;
  /* Aro plástico oscuro + lente interior tenue */
  box-shadow:
    inset 0 1px 1px rgba(255,255,255,.06),
    inset 0 -1px 1px rgba(0,0,0,.55),
    0 0 0 1px rgba(255,255,255,.02);
  transition:all .15s ease;
  justify-self:center;
}
.plcr .cpu-led.g{
  background:radial-gradient(circle at 35% 28%,#9bf5b8 0%,#3FCB6F 55%,#1a7a3c 100%);
  border-color:#0d3c1f;
  box-shadow:
    inset 0 1px 1px rgba(255,255,255,.45),
    inset 0 -1px 1px rgba(0,0,0,.35),
    0 0 5px rgba(63,203,111,.55),
    0 0 1px rgba(63,203,111,.6);
}
.plcr .cpu-led.y{
  background:radial-gradient(circle at 35% 28%,#ffe89a 0%,#f0b418 55%,#7a5404 100%);
  border-color:#3a2a04;
  box-shadow:
    inset 0 1px 1px rgba(255,255,255,.45),
    inset 0 -1px 1px rgba(0,0,0,.35),
    0 0 5px rgba(240,180,24,.55),
    0 0 1px rgba(240,180,24,.6);
}
.plcr .cpu-led.r{
  background:radial-gradient(circle at 35% 28%,#ffb4b4 0%,#e85050 55%,#6a0e0e 100%);
  border-color:#3a0808;
  box-shadow:
    inset 0 1px 1px rgba(255,255,255,.45),
    inset 0 -1px 1px rgba(0,0,0,.35),
    0 0 5px rgba(232,80,80,.55),
    0 0 1px rgba(232,80,80,.6);
}
.plcr .cpu-led.b{
  background:radial-gradient(circle at 35% 28%,#a9d8ef 0%,#3590c2 55%,#0e3c5c 100%);
  border-color:#0a2236;
  box-shadow:
    inset 0 1px 1px rgba(255,255,255,.4),
    inset 0 -1px 1px rgba(0,0,0,.35),
    0 0 5px rgba(53,144,194,.5);
}
.plcr .cpu-led.off{
  background:radial-gradient(circle at 35% 28%,#1c2530 0%,#0c1118 60%,#070b10 100%);
  border-color:#050810;
  box-shadow:
    inset 0 1px 1px rgba(255,255,255,.05),
    inset 0 -1px 1px rgba(0,0,0,.5);
}
.plcr .cpu-led.off.na{opacity:.25;}
@keyframes plcrBlinkSlow{0%,50%{opacity:1}50.1%,100%{opacity:.22}}
@keyframes plcrBlinkFast{0%,50%{opacity:1}50.1%,100%{opacity:.16}}
.plcr .cpu-led.blink-slow{animation:plcrBlinkSlow 2s steps(1,end) infinite;}
.plcr .cpu-led.blink-fast{animation:plcrBlinkFast 0.5s steps(1,end) infinite;}
.plcr .cpu-led.blink{animation:plcrBlinkSlow 1s steps(1,end) infinite;}
.plcr .cpu-led.blink.blink-unknown{animation:cpublink-unknown 1.7s steps(1,end) infinite;}
.plcr .cpu-led.blink.blink-1hz{animation:cpublink-1hz 1s steps(1,end) infinite;}
.plcr .cpu-led.blink.blink-6hz{animation:cpublink-6hz 0.166667s steps(1,end) infinite;}

/* ── Bloque MODE — selector estilo Siemens ─────────────────────────
   4 ranuras verticales rotuladas, posición activa pintada en ámbar.
   ──────────────────────────────────────────────────────────────── */
.plcr-mode{
  display:flex;flex-direction:column;align-items:stretch;gap:0;
  padding:8px 7px 6px;
  background:linear-gradient(180deg,#334151 0%,#202b36 56%,#151d26 100%);
  border:1px solid #080d13;
  border-radius:3px;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.09),
    inset 0 -2px 0 rgba(0,0,0,.45),
    0 1px 0 rgba(255,255,255,.035);
}
.plcr-mode-cap, .plcr-mode-foot{
  text-align:center;
  font-size:8px;font-weight:700;letter-spacing:.18em;
  color:#8a9aab;text-transform:uppercase;
  font-family:"Arial Narrow","Liberation Sans Narrow",Arial,sans-serif;
}
.plcr-mode-cap{
  padding-bottom:6px;margin-bottom:6px;
  border-bottom:1px solid rgba(0,0,0,.45);
  box-shadow:inset 0 -1px 0 rgba(255,255,255,.04);
}
.plcr-mode-foot{
  padding-top:5px;margin-top:5px;
  border-top:1px solid rgba(0,0,0,.45);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);
  opacity:.55;
}
.plcr-mode-slots{
  display:flex;flex-direction:column;gap:5px;
}
.plcr-mode-slot{
  display:flex;align-items:center;justify-content:center;
  height:15px;padding:0 4px;
  background:linear-gradient(180deg,#0e141c 0%,#070b10 100%);
  border:1px solid #050810;
  border-radius:1px;
  font-size:8.5px;font-weight:700;letter-spacing:.06em;
  color:#5a6a7a;
  font-family:"Arial Narrow","Liberation Sans Narrow",Arial,sans-serif;
  cursor:pointer;
  box-shadow:
    inset 0 1px 1px rgba(0,0,0,.6),
    inset 0 -1px 1px rgba(255,255,255,.03);
  transition:all .15s ease;
  user-select:none;
}
.plcr-mode-slot:hover{
  color:#aab8c6;border-color:#1a2230;
}
.plcr-mode-slot.active{
  /* Posición activa estilo llave Siemens (amber) */
  background:linear-gradient(180deg,#e6b343 0%,#c79122 50%,#9d6e10 100%);
  border-color:#5a4108;
  color:#2a1f08;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.45),
    inset 0 -1px 1px rgba(0,0,0,.4),
    0 0 4px rgba(230,179,67,.35);
  text-shadow:0 1px 0 rgba(255,255,255,.2);
}

/* ── Ventilación lateral derecha — slits horizontales tenues ───── */
.plcr-vents{
  position:absolute;right:9px;top:36px;
  display:flex;flex-direction:column;gap:5px;
  pointer-events:none;z-index:1;
  opacity:.65;
}
.plcr-vents i{
  display:block;width:30px;height:1.5px;
  background:linear-gradient(90deg,rgba(0,0,0,.7),rgba(0,0,0,.55));
  box-shadow:0 1px 0 rgba(255,255,255,.045);
  border-radius:1px;
}

/* ── Base — placa oscura con etiqueta del modelo serigrafiada ─── */
.plcr-base{
  position:relative;z-index:2;
  height:26px;padding:0 12px;
  background:linear-gradient(180deg,#18232d 0%,#080d13 100%);
  border-top:1px solid #526170;
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.07),inset 0 -1px 0 rgba(0,0,0,.7);
}
.plcr-led-row:not(.plcr-led-control),.plcr-led-row:not(.plcr-led-control) .cpu-led{cursor:default;}
.plcr-base-model{
  flex:1;min-width:0;
  font-size:10.5px;font-weight:700;letter-spacing:.08em;
  color:#d4dde7;text-transform:uppercase;
  font-family:"Arial Narrow","Liberation Sans Narrow","Inter Narrow",Arial,sans-serif;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.plcr-base-fam{
  flex:0 0 auto;
  font-size:8.5px;letter-spacing:.14em;
  color:#6a7a8a;text-transform:uppercase;
  font-family:"Arial Narrow","Liberation Sans Narrow",Arial,sans-serif;
}

/* ── Variantes por familia ────────────────────────────────────── */
/* S7-300: más compacto */
.plcr-s7300 .plcr-chassis{max-width:340px;}
.plcr-s7300 .plcr-face{grid-template-columns:1fr 80px;gap:9px;padding:11px;}

/* S7-400: cuerpo algo más robusto y ancho */
.plcr-s7400 .plcr-chassis{max-width:420px;}
.plcr-s7400 .plcr-face{grid-template-columns:1fr 90px;gap:11px;padding:12px;}
.plcr-s7400 .plcr-led-bay{padding:10px 10px 11px;}
.plcr-s7400 .plcr-led-row{gap:9px;}
.plcr-s7400 .plcr-led-name{font-size:9.5px;}
.plcr-s7400 .plcr-led-state{font-size:8.5px;}

/* Familia desconocida — más estrecho */
.plcr-unknown .plcr-chassis{max-width:300px;}

/* Ocultar el render legacy (.cpu-visual / .plc3d antiguos) si quedara cacheado */
.cpu-visual-zone .cpu-visual:not(.plcr):not(.plc3d){display:none;}
.cpu-visual-zone .plc3d{display:none;}

/* ── Responsive ────────────────────────────────────────────────── */
@media(min-width:1180px){
  .plcr-s7300 .plcr-chassis{max-width:320px;}
  .plcr-s7400 .plcr-chassis{max-width:400px;}
  .plcr-face{padding:11px;}
  .plcr-led-bay{padding:9px 9px 10px;}
  .plcr-led-name{font-size:9.5px;}
  .plcr-led-state{font-size:8.5px;}
  .plcr .cpu-led{width:10px;height:10px;}
  .plcr-mode{padding:7px 6px 5px;}
  .plcr-mode-slot{height:14px;font-size:8px;}
  .plcr-top{height:20px;}
  .plcr-top-code{font-size:9px;}
  .plcr-base{height:24px;}
  .plcr-base-model{font-size:10px;}
  .plcr-base-fam{font-size:8px;}
  .plcr-vents{top:32px;gap:4px;}
  .plcr-vents i{width:26px;}
}
@media(min-width:1500px){
  .plcr-s7300 .plcr-chassis{max-width:340px;}
  .plcr-s7400 .plcr-chassis{max-width:420px;}
  .plcr-led-name{font-size:10px;}
  .plcr-led-state{font-size:9px;}
  .plcr .cpu-led{width:11px;height:11px;}
  .plcr-mode-slot{height:15px;font-size:8.5px;}
  .plcr-top-code{font-size:9.5px;}
  .plcr-base-model{font-size:10.5px;}
}
@media(max-width:760px){
  .plcr-s7300 .plcr-chassis,.plcr-s7400 .plcr-chassis{max-width:340px;}
  .plcr-face{grid-template-columns:1fr 76px;gap:8px;padding:10px;}
}
@media(max-width:480px){
  .plcr-vents{display:none;}
  .plcr-mode{padding:6px 5px 5px;}
}

/* ═══════════════════════════════════════════════════════════════
   v8.4.6 — Rebalance del grid Estado CPU (mantenido de v8.4.5,
   ajustado para chassis más ancho del S7-400)

   v8.7.21 — RESTAURACION del comportamiento de v8.7.12. El intento de
   v8.7.20 (36/64) y de v8.7.19 (sobre la regla equivocada) NO eran la
   solucion correcta. La solucion correcta YA existia en v8.7.12: dejar
   este bloque v8.4.6 intacto (con sus !important) y agregar un override
   final al pie del archivo solo para el rango notebook 1366-1499 px,
   con la regla exacta de v8.7.12: minmax(250px, 0.78fr) minmax(380px, 1.22fr).
   Esto da ~39/61% en notebook sin tocar botones, padding, font-size ni
   min-height. Ver bloque "v8.7.12 — Rebalance interno" al pie del archivo.
   ═══════════════════════════════════════════════════════════════ */
.cpu-home-grid{
  grid-template-columns:minmax(330px,1.15fr) minmax(340px,1fr) !important;
}
@media(min-width:1180px){
  .cpu-home-grid{
    grid-template-columns:minmax(330px,1.1fr) minmax(330px,1fr) !important;
  }
}
@media(min-width:1500px){
  .cpu-home-grid{
    grid-template-columns:minmax(360px,1.1fr) minmax(360px,1fr) !important;
  }
}
@media(max-width:1365px){
  .cpu-home-grid{grid-template-columns:1fr !important;}
}
.cpu-visual-zone{padding:14px 12px 12px;}
@media(min-width:1180px){
  .cpu-visual-zone{padding:12px 10px 10px;}
}
.cpu-visual-zone .zone-label{margin-bottom:8px;}

/* ═══════════════════════════════════════════════════════════════
   v8.4.7 — License Panel "Mi licencia / Cuenta y licencia"
   Modal independiente. No toca PLC ni layout principal.
   Convención de clases: .blp-* (BOJ License Panel)
   ═══════════════════════════════════════════════════════════════ */
.blp-ov{
  position:fixed;inset:0;z-index:1400;
  background:rgba(8,14,20,0.82);backdrop-filter:blur(2px);
}
.blp-modal{
  position:fixed;z-index:1401;left:50%;top:50%;transform:translate(-50%,-50%);
  width:min(640px,calc(100vw - 24px));
  /* v8.4.40 — Fix scroll: limitar altura a min(90vh, 920px) y permitir
     que el body interno scrollee. En desktop el modal nunca ocupa toda
     la pantalla; en pantallas bajas (1366×768, móviles) deja aire. */
  max-height:min(90vh, 920px);
  max-height:min(90dvh, 920px, calc(100dvh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom)));
  display:flex;flex-direction:column;
  background:var(--bg2,#121D28);border:1px solid var(--brd2,#385068);
  border-radius:var(--rl,8px);box-shadow:0 28px 80px rgba(0,0,0,.55);
  overflow:hidden;color:var(--txt,#EAF3FB);
}
.blp-hdr{
  display:flex;align-items:flex-start;justify-content:space-between;gap:12px;
  padding:14px 16px 12px;border-bottom:1px solid var(--brd,#27384A);
  background:linear-gradient(180deg,var(--bg3,#1A2734),var(--bg2,#121D28));
  /* v8.4.40 — el header no debe comprimirse cuando el contenido crece. */
  flex:0 0 auto;
}
.blp-k{
  font-size:9px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;
  color:var(--brand,#0087BE);margin-bottom:2px;
}
.blp-title{font-size:15px;font-weight:800;color:var(--txt,#EAF3FB);letter-spacing:.02em;}
.blp-sub{font-size:11px;color:var(--txt3,#72879B);margin-top:2px;line-height:1.4;}
.blp-x{
  border:1px solid var(--brd,#27384A);background:var(--bg3,#1A2734);color:var(--txt2,#AABCCD);
  width:30px;height:30px;border-radius:var(--r,5px);font-size:18px;line-height:1;cursor:pointer;
  font-family:inherit;flex-shrink:0;
}
.blp-x:hover{background:var(--bg4,#233243);color:var(--txt,#EAF3FB);}

.blp-body{
  /* v8.4.40 — Fix scroll: en un parent flex column con max-height, el
     child con overflow:auto necesita flex:1 + min-height:0 para que el
     scroll funcione en todos los navegadores (Chrome/Firefox/Safari).
     Sin esto, el body crece y rebasa el modal sin permitir scrollear.
     Padding-bottom extra para que la última sección (Soporte) no quede
     pegada al borde. */
  padding:14px 16px 22px;
  overflow-y:auto;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  display:flex;flex-direction:column;gap:14px;
  flex:1 1 auto;
  min-height:0;
}

/* Status banner */
.blp-status{
  border:1px solid var(--brd,#27384A);border-radius:var(--r,5px);
  background:var(--bg3,#1A2734);padding:12px 14px;display:flex;flex-direction:column;gap:8px;
}
.blp-status-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.blp-status-dot{
  width:10px;height:10px;border-radius:50%;flex:0 0 auto;
  background:var(--txt3,#72879B);box-shadow:0 0 8px rgba(0,0,0,0);
}
.blp-status-label{font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;}
.blp-status-sep{color:var(--txt3,#72879B);}
.blp-status-conn{
  font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  padding:2px 8px;border-radius:10px;border:1px solid var(--brd,#27384A);background:var(--bg2,#121D28);
}
.blp-status-conn.on{color:var(--ok-t,#92E3C8);border-color:rgba(34,169,123,.45);}
.blp-status-conn.off{color:var(--warn-t,#F1D58F);border-color:rgba(210,164,61,.45);}
.blp-status-msg{font-size:12px;color:var(--txt2,#AABCCD);line-height:1.55;}
.blp-status-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:2px;}

/* Niveles del banner */
.blp-status-ok .blp-status-dot{background:var(--ok-br,#22A97B);box-shadow:0 0 10px rgba(34,169,123,.55);}
.blp-status-ok .blp-status-label{color:var(--ok-t,#92E3C8);}
.blp-status-info .blp-status-dot{background:var(--info-br,#6EA8D9);box-shadow:0 0 10px rgba(110,168,217,.45);}
.blp-status-info .blp-status-label{color:var(--info-br,#6EA8D9);}
.blp-status-warn .blp-status-dot{background:var(--warn-br,#D2A43D);box-shadow:0 0 10px rgba(210,164,61,.55);}
.blp-status-warn .blp-status-label{color:var(--warn-t,#F1D58F);}
.blp-status-err .blp-status-dot{background:var(--danger-br,#D56565);box-shadow:0 0 10px rgba(213,101,101,.55);}
.blp-status-err .blp-status-label{color:var(--danger-t,#F1B0B0);}

/* Grid de secciones */
.blp-grid{display:flex;flex-direction:column;gap:10px;}
.blp-sec{
  border:1px solid var(--brd,#27384A);border-radius:var(--r,5px);
  background:var(--bg2,#121D28);padding:10px 12px;
}
.blp-sec-k{
  font-size:9.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;
  color:var(--txt3,#72879B);margin-bottom:6px;
}
.blp-row{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:6px 0;border-bottom:1px dashed rgba(90,180,210,.10);font-size:12px;
}
.blp-row:last-child{border-bottom:0;}
.blp-row > span{color:var(--txt3,#72879B);}
.blp-row strong{color:var(--txt,#EAF3FB);font-weight:700;}
.blp-val{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.blp-val strong{color:var(--txt,#EAF3FB);}
.blp-muted{color:var(--txt3,#72879B);font-weight:600;}

/* Chips de verificación */
.blp-chip{
  font-size:9.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;
  padding:2px 7px;border-radius:9px;border:1px solid var(--brd,#27384A);background:var(--bg3,#1A2734);
  color:var(--txt2,#AABCCD);
}
.blp-chip.ok{color:var(--ok-t,#92E3C8);border-color:rgba(34,169,123,.45);background:var(--ok-lt,rgba(29,110,87,0.12));}
.blp-chip.warn{color:var(--warn-t,#F1D58F);border-color:rgba(210,164,61,.45);background:var(--warn-lt,rgba(142,101,14,0.12));}

/* v8.4.8 — Nota inline debajo de una fila (ej. "Esta licencia permite N dispositivos…") */
.blp-row-note{
  font-size:10.5px;color:var(--txt3,#72879B);line-height:1.45;
  padding:6px 0 0;border-top:1px dashed rgba(90,180,210,.10);margin-top:6px;
}
/* v8.4.38 — Variante warn para "Validación online requerida" cuando
   el offline ya venció. Mantiene el estilo pero con borde rojo y texto
   más legible. */
.blp-row-note-warn{
  color:#F1B0B0;
  border-top-color:rgba(213,101,101,.45);
  padding:8px 10px;background:rgba(168,62,62,0.08);
  border:1px solid rgba(213,101,101,.45);
  border-radius:4px;margin-top:8px;
}

/* v8.4.8 — Nota debajo de la fila de acciones (cerrar sesión local) */
.blp-actions-note{
  font-size:10.5px;color:var(--txt3,#72879B);line-height:1.5;
  margin-top:6px;padding:0 2px;
}

/* Acciones primarias */
.blp-actions{display:flex;gap:8px;flex-wrap:wrap;}
.blp-btn-primary,
.blp-btn-secondary,
.blp-btn-ghost{
  border-radius:var(--r,5px);min-height:38px;padding:0 14px;
  font-family:inherit;font-weight:800;font-size:11.5px;letter-spacing:.04em;text-transform:uppercase;
  cursor:pointer;transition:background .12s,border-color .12s,color .12s;
}
.blp-btn-primary{
  background:var(--brand,#0087BE);color:#fff;border:1px solid var(--brand-dk,#006991);
}
.blp-btn-primary:hover{background:var(--brand-dk,#006991);}
.blp-btn-primary:disabled{background:var(--bg4,#233243);color:var(--txt3,#72879B);cursor:default;}
.blp-btn-secondary{
  background:var(--brand-lt,rgba(0,135,190,0.10));color:var(--brand,#0087BE);
  border:1px solid var(--brand-br,rgba(0,135,190,0.33));
}
.blp-btn-secondary:hover{background:rgba(0,135,190,0.18);}
.blp-btn-ghost{
  background:transparent;color:var(--txt2,#AABCCD);border:1px solid var(--brd2,#385068);
}
.blp-btn-ghost:hover{background:var(--bg3,#1A2734);color:var(--txt,#EAF3FB);}

/* Soporte */
.blp-support{
  border-top:1px solid var(--brd,#27384A);padding-top:10px;display:flex;flex-direction:column;gap:6px;
}
.blp-support-row{display:flex;flex-direction:column;gap:6px;}
.blp-link{
  font-size:11.5px;font-weight:700;color:var(--brand,#0087BE);text-decoration:none;
  padding:6px 8px;border-radius:var(--r,5px);border:1px solid transparent;
}
.blp-link:hover{background:var(--brand-lt,rgba(0,135,190,0.10));border-color:var(--brand-br,rgba(0,135,190,0.33));}

/* Toast inferior */
.blp-toast{
  margin:0 16px 14px;padding:0;border-radius:var(--r,5px);font-size:11.5px;
  max-height:0;overflow:hidden;opacity:0;transition:opacity .2s, max-height .2s, padding .2s;
}
.blp-toast-show{max-height:80px;padding:10px 12px;opacity:1;}
.blp-device-name-ov{z-index:10002;}
.blp-device-name-modal{z-index:10003;max-width:440px;}
.blp-toast-ok{background:var(--ok-lt,rgba(29,110,87,0.12));color:var(--ok-t,#92E3C8);border:1px solid rgba(34,169,123,.45);}
.blp-toast-info{background:var(--info-lt,rgba(32,93,149,0.12));color:#CDEBFF;border:1px solid rgba(110,168,217,.45);}
.blp-toast-err{background:var(--danger-lt,rgba(168,62,62,0.12));color:var(--danger-t,#F1B0B0);border:1px solid rgba(213,101,101,.45);}

/* v8.4.37 — Editor inline del nombre del dispositivo */
.blp-input{
  width:100%; box-sizing:border-box;
  padding:9px 11px; font-size:13px;
  background:rgba(7,19,30,.6); color:#E6EEF7;
  border:1px solid rgba(90,180,210,.28); border-radius:5px;
  outline:none;
}
.blp-input:focus{ border-color:#19D3FF; box-shadow:0 0 0 2px rgba(25,211,255,.18); }
.blp-btn-mini{
  font-size:10.5px; padding:3px 8px; line-height:1.3;
  border-radius:4px; font-weight:700; letter-spacing:.02em;
}

/* Botón discreto en header para abrir el panel */
.hdr-action-license{
  display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;
  background:transparent;border:1px solid var(--brd,#27384A);color:var(--txt2,#AABCCD);
  border-radius:var(--r,5px);padding:5px 10px;cursor:pointer;font-family:inherit;
  transition:background .12s,border-color .12s,color .12s;
}
.hdr-action-license .hdr-license-icon{
  display:none;width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto;
}
.hdr-action-license:hover{background:var(--bg3,#1A2734);color:var(--txt,#EAF3FB);border-color:var(--brd2,#385068);}
.hdr-action-license .hdr-license-dot{
  width:7px;height:7px;border-radius:50%;background:var(--txt3,#72879B);flex-shrink:0;
}
.hdr-action-license.is-ok   .hdr-license-dot{background:var(--ok-br,#22A97B);box-shadow:0 0 6px rgba(34,169,123,.55);}
.hdr-action-license.is-info .hdr-license-dot{background:var(--info-br,#6EA8D9);box-shadow:0 0 6px rgba(110,168,217,.45);}
.hdr-action-license.is-warn .hdr-license-dot{background:var(--warn-br,#D2A43D);box-shadow:0 0 6px rgba(210,164,61,.55);}
.hdr-action-license.is-err  .hdr-license-dot{background:var(--danger-br,#D56565);box-shadow:0 0 6px rgba(213,101,101,.55);}
@media(max-width:540px){
  .hdr-action-license .hdr-license-label{display:none;}
}

/* ═══════════════════════════════════════════════════════════════
   v8.4.13 — Resultado del diagnóstico (presentación premium)
   Convención: .rfx-* (Result FX). No modifica PLC visual ni
   tarjetas existentes de hipótesis.
   ═══════════════════════════════════════════════════════════════ */
.rfx-section{
  background:var(--bg2,#121D28);border:1px solid var(--brd,#27384A);
  border-radius:var(--rl,8px);padding:13px 15px;margin:0 0 10px;
  box-shadow:var(--shadow-soft);
}
.rfx-k{
  font-size:11px;line-height:1.4;font-weight:800;letter-spacing:.12em;text-transform:uppercase;
  color:var(--txt3,#72879B);margin-bottom:8px;
}
.rfx-list{margin:0;padding:0 0 0 18px;font-size:12px;color:var(--txt,#EAF3FB);line-height:1.6;}
.rfx-list li{margin:3px 0;padding-left:2px;}
.rfx-list-ordered{padding-left:22px;}
.rfx-list-ordered li::marker{color:var(--brand,#0087BE);font-weight:700;}
.rfx-list-check{list-style:none;padding-left:0;}
.rfx-list-check li{position:relative;padding-left:20px;}
.rfx-list-check li::before{
  content:"\2610";position:absolute;left:0;top:0;
  color:var(--txt3,#72879B);font-weight:800;font-size:12px;
}
.rfx-empty{
  font-size:11.5px;color:var(--txt3,#72879B);font-style:italic;
  padding:6px 4px;
}

/* Diferenciación visual sutil por tipo de sección */
.rfx-section-evidence{border-left:3px solid var(--info-br,#6EA8D9);}
.rfx-section-tests{border-left:3px solid var(--brand-br,rgba(0,135,190,0.55));}
.rfx-section-validation{border-left:3px solid var(--ok-br,#22A97B);}

/* v8.7.4 — Nota de precisión limitada (sin PG/PC o sin conexión online) */
.precision-note{
  background:rgba(245,158,11,0.10);
  border:1px solid rgba(245,158,11,0.40);
  border-left:3px solid #F59E0B;
  border-radius:var(--r,5px);padding:11px 14px;margin:0 0 12px;
}
.precision-note-k{
  font-size:10.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;
  color:#FCD34D;margin-bottom:5px;
}
.precision-note-t{
  font-size:12.5px;line-height:1.55;color:var(--txt,#EAF3FB);
}
.precision-limited_no_online{
  background:rgba(96,165,250,0.10);
  border-color:rgba(96,165,250,0.40);
  border-left-color:#60A5FA;
}
.precision-limited_no_online .precision-note-k{color:#93C5FD;}

/* v8.7.4 — Badge "a verificar" para hipótesis tentativas */
.rfx-tentative-badge{
  display:inline-block;margin-left:6px;padding:1px 7px;
  font-size:9.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;
  background:rgba(245,158,11,0.15);color:#FCD34D;
  border:1px solid rgba(245,158,11,0.35);border-radius:9px;vertical-align:middle;
}

/* Aviso de seguridad — discreto, no alarmista */
.rfx-safety{
  background:var(--warn-lt,rgba(142,101,14,0.10));
  border:1px solid rgba(210,164,61,.32);
  border-left:3px solid var(--warn-br,#D2A43D);
  border-radius:var(--r,5px);padding:10px 13px;margin:0 0 12px;
}
.rfx-safety-k{
  font-size:10.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;
  color:var(--warn-t,#F1D58F);margin-bottom:4px;
}
.rfx-safety-t{
  font-size:11.5px;color:var(--txt2,#AABCCD);line-height:1.55;
}

/* Microcopy "Basado en evidencias técnicas" debajo del bloque principal */
.final-microcopy{
  font-size:10.5px;color:var(--txt3,#72879B);font-style:italic;
  margin:8px 0 2px;letter-spacing:.02em;
}

/* ─────────────────────────────────────────────────────────────────────
   v8.7.12 — Rebalance interno del bloque "Estado CPU" en notebook.
   v8.7.21 — Base restaurada; Lote 17 corrige el borde 1180–1365.

   Rango de dos columnas: 1366px–1499px. Entre 1180px y 1365px se
   apila para evitar overflow; no toca motor, datasets ni scoring.

   Problema observado en v8.7.11: en notebook, la regla previa
   `.cpu-home-grid{grid-template-columns:minmax(330px,1.1fr) minmax(330px,1fr)
   !important}` deja la columna derecha (Modo de operación) más
   angosta que la izquierda (LEDs). La fila STOP con 4 opciones
   queda apretada — "0,5 Hz" se parte en dos líneas, "2 Hz" queda al
   borde.

   Solución en este rango: mantener las dos columnas pero
   invertir la proporción para que la zona de controles tenga más
   ancho real. Reducimos un poco el max-width del chassis del PLC
   para acompañar (la imagen se ve un toque más compacta, sin
   deformarse). NO se modifica el tamaño de los botones, padding,
   gap, font-size ni min-height — evita el error de v8.7.10.

   Override final (al pie del archivo) para ganarle en la cascada
   a `.cpu-home-grid{...!important}` definido más arriba (línea ~2328
   del bloque v8.4.6 de S7-400).
   ───────────────────────────────────────────────────────────────── */
@media(min-width:1366px) and (max-width:1499px){
  /* Columna izquierda compacta (LEDs), columna derecha más ancha
     (Modo de operación). ~39% / ~61% real con anchos mínimos
     280px / 380px. */
  .cpu-home-grid{
    grid-template-columns:minmax(250px,0.78fr) minmax(380px,1.22fr) !important;
  }
  /* Chassis del PLC un poco más estrecho para acompañar la columna
     reducida. 292px → 260px. Imagen no se deforma porque `.cpu-body`
     usa width:100% con max-width — el ancho efectivo es el menor. */
  .cpu-body{max-width:260px;}
}
/* ───────────────────────────────────────────────────────────────── */

/* v8.7.42 (T3) — Candados de conversión trial y horas de prueba. */
.rc-pro-lock{margin-top:8px;padding:8px 11px;border:1px dashed rgba(96,165,250,.45);border-radius:var(--r);background:rgba(96,165,250,.07);color:var(--brand);font-size:11px;line-height:1.45;cursor:pointer;}
.rc-pro-lock:hover{background:rgba(96,165,250,.12);}
.rc-pro-lock-more{margin:10px 0 4px;text-align:center;font-weight:600;}
.dc-more-locked{opacity:.92;}
.dc-more-locked .dc-t{color:var(--brand);}
.lcp-trial-hours{font-size:11px;color:var(--warn-t,#facc15);margin:2px 0 4px;font-weight:600;}

/* AUD-05 — objetivos táctiles prioritarios sin alterar el orden visual. */
.hdr-brand,.hdr-action,.hdr-action-license{min-height:44px;}
.hdr-action{min-width:44px;}
#lang-switcher{padding:0;border:0;background:transparent;}
#lang-switcher .lang-pill{width:44px;height:44px;}
.domain-chips .dchip,.led-opt,.btn-guided-back,.li-goto,.pro-upgrade-btn,.license-actions button,.app-info-link,.app-info-x,.modal-btn,.sb-x,.side-lang,.side-license-link{min-height:44px;}
.domain-chips .dchip{min-width:44px;}
.cpu-home-head .dsel,.symptom-search input,.how-to-use-link,.preparation-quick-link,.pgpc-availability-control,.plcr-mode-slot,.plcr-led-control,.home-license-compact .lcp-btn,.led-interp .li-goto,.pro-upgrade-box .pro-upgrade-btn,.app-footer-link{min-height:44px;}
.plcr-mode-slot{height:auto;}
.plcr-led-control{width:100%;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;}
.app-info-x,.sb-x{min-width:44px;}
.side-license-link{display:inline-flex;align-items:center;}
button:focus-visible,a[href]:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible,[role="button"]:focus-visible{outline:2px solid #19D3FF;outline-offset:2px;}

/* AUD-10 — el panel opcional usa CSS externo para permitir style-src-elem 'self'. */
#eig-debug-panel{position:fixed;bottom:12px;right:12px;width:680px;max-height:420px;overflow:auto;background:rgba(10,12,20,.96);border:1.5px solid var(--brand,#00b4d8);border-radius:10px;font-family:monospace;font-size:11px;color:var(--txt,#e8eaf0);z-index:99999;box-shadow:0 4px 24px rgba(0,180,216,.25);transition:all .2s;}
#eig-debug-panel.minimized{width:200px;max-height:36px;overflow:hidden;}
#eig-debug-panel .eig-header{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background:rgba(0,180,216,.12);border-bottom:1px solid var(--brand,#00b4d8);user-select:none;}
#eig-debug-panel .eig-ok{color:#4ade80;}
#eig-debug-panel .eig-warn{color:#facc15;}
#eig-debug-panel td,#eig-debug-panel th{padding:3px 5px;border-bottom:1px solid rgba(255,255,255,.05);white-space:nowrap;}
#eig-debug-panel .eig-btn{background:rgba(0,180,216,.15);border:1px solid var(--brand,#00b4d8);color:var(--brand,#00b4d8);border-radius:4px;padding:3px 8px;font-size:10px;cursor:pointer;font-family:monospace;}
#eig-debug-panel .eig-btn:hover{background:rgba(0,180,216,.3);}
#eig-debug-panel .eig-toggle{background:transparent;border:1px solid transparent;color:var(--txt,#e8eaf0);border-radius:4px;cursor:pointer;font-family:monospace;line-height:1;}
#eig-debug-panel .eig-toggle:hover{background:rgba(0,180,216,.2);border-color:var(--brand,#00b4d8);}

/* CSP-ATTR-01 — declaraciones estáticas extraídas de markup productivo. */
.csp-s001{cursor:pointer;}
.csp-s002{display:block;border-radius:4px;}
.csp-s003{display:flex;justify-content:flex-end;gap:14px;margin-bottom:6px;}
.csp-s004{background:transparent;border:0;color:var(--txt3,#72879B);font-size:11px;font-weight:700;cursor:pointer;font-family:inherit;padding:4px 2px;text-decoration:underline;text-underline-offset:2px;}
.csp-s005{margin:12px 2px 2px;padding-top:10px;border-top:1px solid var(--brd,#27384A);}
.csp-s006{margin-bottom:9px;}
.csp-s007{cursor:pointer;font-size:11px;color:var(--txt3,#72879B);}
.csp-s008{margin-top:6px;font-size:11px;line-height:1.6;color:var(--txt2,#B7C6D6);}
.csp-s009{margin:6px 0 0;padding-left:18px;}
.csp-s010{margin-top:6px;font-weight:700;}
.csp-s011{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:12px;color:var(--txt2,#B7C6D6);user-select:none;}
.csp-s012{width:16px;height:16px;flex:0 0 auto;cursor:pointer;accent-color:#F59E0B;}
.csp-s013{display:none;margin-top:9px;padding:9px 11px;border:1px solid rgba(245,158,11,0.45);background:rgba(245,158,11,0.10);border-radius:6px;}
.csp-s014{font-size:11.5px;font-weight:700;color:var(--warn-t,#FBBF24);margin-bottom:3px;}
.csp-s015{font-size:11px;line-height:1.55;color:var(--txt2,#B7C6D6);}
.csp-s016{display:none;}
.csp-s017{padding:12px 14px;}
.csp-s018{display:none; max-width:480px;}
.csp-s019{display:flex; gap:8px; padding:12px;}
.csp-s020{flex:1;}
.csp-s021{display:none; max-width:560px;}
.csp-s022{font-size:11px;margin-top:4px;color:var(--txt2,#9ca3af);line-height:1.4;}
.csp-s023{color:var(--txt,#e5e7eb);}
.csp-s024{font-size:11px;margin-top:2px;color:var(--txt2,#9ca3af);line-height:1.4;}
.csp-s025{margin-top:0;font-size:11px;text-transform:none;font-weight:600;}
.csp-s026{margin-top:4px;font-size:11px;}
.csp-s027{text-transform:none;font-size:10px;}
.csp-s028{padding:8px 12px;margin-bottom:8px;border:1px solid var(--brand-br,#1f2937);border-radius:6px;background:var(--surface,rgba(255,255,255,0.02));font-size:11px;}
.csp-s029{display:flex;align-items:center;gap:8px;border:0;padding:0;margin:0;}
.csp-s030{margin-left:auto;color:var(--txt2,#9ca3af);}
.csp-s031{margin-top:6px;}
.csp-s032{cursor:pointer;font-size:10px;color:var(--brand,#60a5fa);padding:2px 0;}
.csp-s033{margin-top:8px;padding-top:8px;border-top:1px dashed var(--brand-br,#1f2937);}
.csp-s034{flex:0 0 auto;width:auto;padding:12px 13px;}
.csp-s035{font-size:10px;font-weight:700;color:var(--txt3);text-transform:uppercase;letter-spacing:0.8px;margin-bottom:10px;}
.csp-s036{margin-top:4px;}
.csp-s037{padding:12px 13px;}
.csp-s038{font-size:12px;color:var(--txt3);}
.csp-s039{font-size:10px;font-weight:700;color:var(--txt3);text-transform:uppercase;letter-spacing:.7px;margin:12px 0 4px;}
.csp-s040{margin:14px 13px;text-align:center;}
.csp-s041{font-size:11px;color:var(--muted);line-height:1.7;}
.csp-s042{font-size:12px;line-height:1.6;}
.csp-s043{margin-top:8px;}
.csp-s044{margin:8px 0 0;}
.csp-s045{margin-top:8px;font-size:11.5px;color:var(--txt2);line-height:1.55;}
.csp-s046{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--muted);margin-top:6px;padding:6px 10px;background:var(--surface-2);border-radius:4px;}
.csp-s047{color:var(--brand);}
.csp-s048{font-weight:600;color:var(--text);}
.csp-s049{font-size:11px;color:var(--muted);margin-top:3px;}
.csp-s050{font-size:12px;color:var(--muted);margin:0 0 8px;}
.csp-s051{padding-bottom:16px;}
.csp-s052{margin-bottom:10px;letter-spacing:.09em;}
.csp-s053{margin:0;padding-left:22px;line-height:1.6;}
.csp-s054{padding-bottom:14px;}
.csp-s055{font-size:12.5px;font-weight:800;color:var(--txt,#EAF3FB);margin-bottom:5px;line-height:1.4;}
.csp-s056{margin:0;line-height:1.6;}
.csp-s057{flex:0 0 auto;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px 20px 14px;border-bottom:1px solid var(--brd,#27384A);}
.csp-s058{font-size:15px;font-weight:800;color:var(--txt,#EAF3FB);}
.csp-s059{font-size:11px;color:var(--txt3,#72879B);margin-top:2px;}
.csp-s060{flex:1 1 auto;min-height:0;overflow-y:auto;padding:18px 20px;}
.csp-s061{padding-bottom:4px;}
.csp-s062{margin:0;line-height:1.65;}
.csp-s063{flex:0 0 auto;display:flex;gap:12px;flex-wrap:wrap;align-items:center;padding:14px 20px;border-top:1px solid var(--brd,#27384A);}
.csp-s064{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--txt3,#72879B);cursor:pointer;margin-right:auto;}
.csp-s065{min-height:34px;border-radius:5px;}
.csp-s066{color:#19D3FF;}
.csp-s067{color:var(--ok-t,#4ade80);}
.csp-s068{display:flex;gap:8px;flex-wrap:wrap;}
.csp-s069{margin-top:10px;}
.csp-s070{font-size:11px;color:var(--txt2,#9ca3af);margin-bottom:5px;}
.csp-s071{display:flex;gap:6px;flex-wrap:wrap;}
.csp-s072{background:var(--surface-2,#1f2937);color:var(--txt,#e5e7eb);max-width:480px;width:100%;border:1px solid var(--brand-br,#1f2937);border-radius:8px;padding:18px 20px;}
.csp-s073{font-size:13px;font-weight:700;color:var(--brand,#60a5fa);text-transform:none;margin-bottom:6px;}
.csp-s074{font-size:12px;line-height:1.5;color:var(--txt2,#9ca3af);margin-bottom:6px;}
.csp-s075{display:flex;gap:10px;justify-content:flex-end;margin-top:16px;}
.csp-s076{background:transparent;border:1px solid var(--brand-br,#1f2937);color:var(--txt2,#9ca3af);padding:7px 14px;border-radius:4px;cursor:pointer;font-size:11px;}
.csp-s077{background:var(--brand,#60a5fa);border:1px solid var(--brand,#60a5fa);color:#0b1220;padding:7px 14px;border-radius:4px;cursor:pointer;font-size:11px;font-weight:700;}
.csp-s078{background:var(--brand-lt);border:1px solid var(--brand-br);border-radius:var(--r);padding:9px 12px;margin-bottom:10px;font-size:11px;color:var(--brand);}
.csp-s079{background:var(--info-lt);border:1px solid var(--info-br);border-radius:var(--r);padding:9px 12px;margin-bottom:10px;font-size:11px;color:var(--info-br);}
.csp-s080{background:rgba(245,158,11,0.10);border:1px solid rgba(245,158,11,0.45);border-radius:var(--r);padding:9px 12px;margin-bottom:10px;font-size:11px;color:var(--warn-t,#FBBF24);}
.csp-s081{margin-right:8px;}
.csp-s082{font-size:11px;line-height:1.4;color:var(--txt2,#9ca3af);margin:6px 0 8px;padding:6px 10px;border-left:2px solid var(--brand,#60a5fa);background:rgba(96,165,250,0.04);border-radius:3px;}
.csp-s083{margin-right:4px;}
.csp-s084{margin-top:8px;font-size:11px;line-height:1.5;color:var(--txt2,#9ca3af);}
.csp-s085{font-weight:600;color:var(--txt,#e5e7eb);margin-bottom:4px;}
.csp-s086{margin-top:6px;padding-top:6px;border-top:1px dashed var(--brand-br,#1f2937);}
.csp-s087{margin-left:auto;font-size:10px;color:var(--txt3);}
.csp-s088{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap;}
.csp-s089{flex:0 0 auto;width:auto;padding:12px 11px;}
.csp-s090{margin-top:20px;}
.csp-s091{margin-top:12px;}
.csp-s092{background:#1f2937;color:#e5e7eb;max-width:520px;width:100%;border-radius:8px;border:1px solid #f59e0b;padding:20px;}
.csp-s093{font-size:13px;font-weight:700;color:#f59e0b;text-transform:uppercase;letter-spacing:0.6px;margin-bottom:10px;}
.csp-s094{font-size:12px;line-height:1.55;color:#cbd5e1;margin-bottom:18px;}
.csp-s095{display:flex;gap:10px;justify-content:flex-end;}
.csp-s096{background:transparent;border:1px solid #4b5563;color:#e5e7eb;padding:8px 14px;border-radius:4px;cursor:pointer;font-size:12px;}
.csp-s097{background:#f59e0b;border:1px solid #f59e0b;color:#1f2937;padding:8px 14px;border-radius:4px;cursor:pointer;font-size:12px;font-weight:700;}
.csp-s098{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px solid rgba(255,255,255,.06);}
.csp-s099{font-size:10px;color:var(--txt3,#6b7280);min-width:14px;}
.csp-s100{flex:1;font-size:11px;color:var(--txt,#e8eaf0);}
.csp-s101{font-size:9px;background:var(--brand-lt);border:1px solid var(--brand-br);color:var(--brand);padding:1px 6px;border-radius:8px;margin-left:5px;}
.csp-s102{background:var(--bg2,#131a26);border:1px solid rgba(255,255,255,.09);border-radius:var(--r,8px);padding:10px 12px;margin-top:0;}
.csp-s103{font-size:10px;font-weight:700;letter-spacing:.06em;color:var(--txt2,#9ca3af);margin-bottom:6px;display:flex;align-items:center;gap:6px;}
.csp-s104{font-size:10px;color:var(--warn-t);margin-top:7px;padding-top:7px;border-top:1px solid var(--brd);}
.csp-s105{font-size:10px;color:var(--danger-t);margin-top:7px;padding-top:7px;border-top:1px solid var(--brd);}
.csp-s106{font-size:9px;background:var(--info-lt);border:1px solid var(--info-br);color:var(--info-br);padding:1px 6px;border-radius:8px;margin-left:5px;}
.csp-s107{background:var(--brand-lt);border:1px solid var(--brand-br);border-radius:var(--r);padding:8px 11px;margin-bottom:10px;font-size:11px;color:var(--brand);}
.csp-s108{background:var(--info-lt);border:1px solid var(--info-br);border-radius:var(--r);padding:8px 11px;margin-bottom:10px;font-size:11px;color:var(--info-br);}
.csp-s109{background:var(--warn-lt);border:1px solid var(--warn-br);border-radius:var(--rl);padding:12px 13px;margin-bottom:12px;}
.csp-s110{font-size:10px;font-weight:700;color:var(--warn-t);text-transform:uppercase;letter-spacing:0.8px;margin-bottom:8px;}
.csp-s111{font-size:12px;color:var(--warn-t);line-height:1.5;margin-bottom:5px;}
.csp-s112{margin-bottom:10px;}
.csp-s113{display:flex;align-items:flex-start;gap:8px;margin-bottom:5px;}
.csp-s114{font-size:14px;font-weight:700;color:var(--txt3);flex-shrink:0;}
.csp-s115{font-size:13px;}
.csp-s116{font-size:10px;color:var(--txt3);margin-top:2px;}
.csp-s117{height:4px;background:var(--brd);border-radius:2px;overflow:hidden;margin-bottom:8px;}
.csp-s118{font-size:11px;color:var(--txt2);margin-bottom:8px;line-height:1.5;}
.csp-s119{font-size:10px;font-weight:700;color:var(--txt3);text-transform:uppercase;letter-spacing:0.7px;margin-bottom:5px;}
.csp-s120{margin-bottom:8px;}
.csp-s121{font-size:11px;color:var(--txt2);padding:4px 0;border-bottom:1px solid var(--brd);display:flex;gap:8px;align-items:flex-start;}
.csp-s122{color:var(--txt3);flex-shrink:0;width:18px;}
.csp-s123{flex:1;line-height:1.4;}
.csp-s124{font-weight:700;color:var(--txt);margin-left:auto;flex-shrink:0;font-size:10px;}
.csp-s125{font-weight:700;color:var(--txt3);margin-left:auto;flex-shrink:0;font-size:10px;}
.csp-s126{margin-bottom:12px;}
.csp-s127{display:flex;align-items:center;justify-content:space-between;margin-top:6px;}
.csp-s128{font-size:12px;color:var(--txt2);}
.csp-s129{height:4px;background:var(--brd);border-radius:2px;overflow:hidden;margin-top:8px;}
.csp-s130{margin-top:9px;}
.csp-s131{width:auto;padding:9px 14px;font-size:12px;}
.csp-s132{font-size:10.5px;color:var(--txt3);margin-top:5px;}
.csp-s133{font-size:10px;font-weight:700;color:var(--warn-t);text-transform:uppercase;letter-spacing:0.8px;margin-bottom:7px;}
.csp-s134{font-size:12px;color:var(--warn-t);line-height:1.5;margin-bottom:4px;}
.csp-s135{padding:13px;margin-bottom:12px;}
.csp-s136{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;}
.csp-s137{height:6px;background:var(--brd);border-radius:3px;overflow:hidden;}
.csp-s138{display:flex;gap:7px;margin-bottom:4px;font-size:12px;}
.csp-s139{color:var(--brand);font-weight:700;flex-shrink:0;}
.csp-s140{color:var(--txt2);}
.csp-s141{color:var(--ok-br);font-weight:700;flex-shrink:0;}
.csp-s142{background:var(--brand-lt);border:1px solid var(--brand-br);border-radius:var(--rl);padding:13px;margin-bottom:12px;}
.csp-s143{font-size:10px;color:var(--brand);font-weight:700;text-transform:uppercase;letter-spacing:0.8px;margin-bottom:5px;}
.csp-s144{font-size:15px;font-weight:700;color:var(--txt);}
.csp-s145{font-size:12px;color:var(--txt2);margin-top:4px;line-height:1.5;}
.csp-s146{display:flex;gap:6px;margin-bottom:4px;}
.csp-s147{color:var(--brand);flex-shrink:0;}
.csp-s148{width:100%;margin-top:10px;}
.csp-s149{font-size:14px;font-weight:700;}
.csp-s150{color:var(--brand)}
.csp-s151{padding:14px;}
.csp-s152{font-size:11px;color:var(--txt2);line-height:1.55;margin:0;padding-left:18px;}
.csp-s153{font-size:11px;color:var(--txt2);}
.csp-s154{font-size:11px;color:var(--txt2);margin-bottom:8px;padding:7px 9px;background:var(--bg3);border:1px solid var(--brd);border-radius:var(--r);}
.csp-s155{font-size:11px;padding:5px 0;border-bottom:1px solid var(--brd);}
.csp-s156{display:flex;justify-content:space-between;gap:8px;}
.csp-s157{font-size:9px;color:var(--txt3);margin-top:2px;}
.csp-s158{font-size:10px;color:var(--txt3);margin-top:7px;}
.csp-s159{display:flex;gap:5px;}
.csp-s160{width:64px;}
.csp-s161{display:flex;align-items:center;gap:10px;padding:9px;background:var(--bg3);border-radius:var(--r);border:1px solid var(--brd);margin-bottom:12px;}
.csp-s162{font-size:10px;color:var(--txt3);}
.csp-s163{font-size:13px;font-weight:700;color:var(--brand);}
.csp-s164{margin-left:auto;}
.csp-s165{margin-bottom:13px;}
.csp-s166{min-height:80px;}
.csp-s167{font-size:11px;color:#78716C;margin-top:6px;}
.csp-s168{background:#FEE2E2;border:1px solid #EF4444;border-radius:4px;padding:9px;margin-top:8px;}
.csp-s169{color:#991B1B;}
.csp-s170{color:#7F1D1D;}
.csp-s171{margin-top:24px;border-top:1px solid #1C1917;padding-top:5px;font-size:11px;color:#78716C;display:inline-block;min-width:180px;}
.csp-s172{background:rgba(74,222,128,0.15);border:1px solid #4ade80;border-radius:4px;padding:1px 5px;font-size:9px;color:#4ade80;}
.csp-s173{background:rgba(74,222,128,0.08);border:1px solid rgba(74,222,128,0.3);border-radius:6px;padding:6px 10px;margin-bottom:6px;font-size:10px;}
.csp-s174{color:#4ade80;}
.csp-s175{color:#aaa;}
.csp-s176{color:#e8eaf0;}
.csp-s177{font-weight:700;text-align:center;}
.csp-s178{font-size:9px;word-break:break-word;}
.csp-s179{text-align:center;}
.csp-s180{font-size:9px;color:var(--txt2,#aaa);}
.csp-s181{text-align:center;font-size:10px;}
.csp-s182{text-align:center;font-size:9px;}
.csp-s183{font-size:9px;}
.csp-s184{width:100%;border-collapse:collapse;font-size:10px;margin-top:8px;}
.csp-s185{background:var(--bg2,#1e2130);color:var(--brand,#00b4d8);}
.csp-s186{font-size:10px;margin-top:6px;color:var(--txt2,#aaa);}
.csp-s187{display:flex;gap:6px;}
.csp-s188{padding:3px 8px;font-size:12px;}
.csp-s189{padding:8px 10px;}
.csp-s190{margin:10px 0;}
.csp-s191{display:block;text-decoration:none;text-align:center;margin-top:8px;background:linear-gradient(135deg,#0FA968,#0C8F58);border-color:#0FA968;}
.csp-s192{background:#1f2937;color:#e5e7eb;max-width:680px;width:100%;border-radius:8px;border:1px solid #374151;margin-top:20px;}
.csp-s193{position:sticky;top:0;background:#1f2937;border-bottom:1px solid #374151;padding:12px 18px;display:flex;justify-content:space-between;align-items:center;border-radius:8px 8px 0 0;}
.csp-s194{font-size:11px;letter-spacing:0.8px;text-transform:uppercase;color:#009FDA;}
.csp-s195{background:transparent;border:1px solid #4b5563;color:#e5e7eb;padding:6px 14px;border-radius:4px;cursor:pointer;font-size:12px;}
.csp-s196{padding:18px 22px;font-size:12px;line-height:1.6;}
.csp-s197{background:#111827;border:1px solid #374151;border-radius:6px;padding:14px;margin-bottom:14px;}
.csp-s198{font-size:10px;color:#9ca3af;text-transform:uppercase;letter-spacing:0.5px;margin-bottom:6px;}
.csp-s199{color:#e5e7eb;font-size:12px;}
.csp-s200{background:#0b1220;border:1px solid #1f4e79;border-radius:6px;padding:14px;margin-bottom:14px;}
.csp-s201{font-size:10px;color:#009FDA;text-transform:uppercase;letter-spacing:0.5px;margin-bottom:8px;font-weight:700;}
.csp-s202{margin-bottom:6px;}
.csp-s203{color:#dc2626;}
.csp-s204{float:right;font-weight:700;color:#dc2626;}
.csp-s205{color:#f59e0b;}
.csp-s206{float:right;color:#f59e0b;}
.csp-s207{color:#3b82f6;}
.csp-s208{float:right;color:#3b82f6;}
.csp-s209{margin:0;padding-left:18px;color:#cbd5e1;}
.csp-s210{font-size:10px;color:#9ca3af;border-top:1px solid #374151;padding-top:10px;text-align:center;}
.csp-s211{color:#ff6b6b;border-color:rgba(255,99,99,0.45);background:rgba(255,70,70,0.06);}
.csp-s212{margin:-1px 2px 0;line-height:1.55;}
.csp-s213{flex-direction:column;align-items:stretch;gap:6px;}
.csp-s214{margin:-1px 2px 8px;line-height:1.55;}
.csp-s215{margin-left:8px;}
.csp-s216{margin-top:14px;}

/* CSP-ATTR-01 — estados y valores dinámicos enumerados en CSS externo. */
.boj-dyn-fg{color:var(--boj-dyn);}
.boj-dyn-bg{background:var(--boj-dyn);}
.boj-dyn-border{border-color:var(--boj-dyn);}
.boj-dyn-dot{background:var(--boj-dyn);box-shadow:0 0 10px var(--boj-dyn);}
.boj-dyn-context{--ctx:var(--boj-dyn);}
.boj-dyn-fill{width:var(--boj-pct);background:var(--boj-dyn);}
.boj-color-brand{--boj-dyn:var(--brand);}
.boj-color-ok{--boj-dyn:var(--ok-t,#4ade80);}
.boj-color-warn{--boj-dyn:var(--warn-t,#facc15);}
.boj-color-danger{--boj-dyn:var(--danger-t,var(--err-t,#f87171));}
.boj-color-muted{--boj-dyn:var(--txt2,#9ca3af);}
.boj-color-0d9488{--boj-dyn:#0D9488;}
.boj-color-0ea5e9{--boj-dyn:#0EA5E9;}
.boj-color-14b8a6{--boj-dyn:#14B8A6;}
.boj-color-16a34a{--boj-dyn:#16A34A;}
.boj-color-1d4ed8{--boj-dyn:#1D4ED8;}
.boj-color-22c55e{--boj-dyn:#22C55E;}
.boj-color-2563eb{--boj-dyn:#2563EB;}
.boj-color-2dd4bf{--boj-dyn:#2DD4BF;}
.boj-color-38bdf8{--boj-dyn:#38BDF8;}
.boj-color-3b82f6{--boj-dyn:#3B82F6;}
.boj-color-4ade80{--boj-dyn:#4ADE80;}
.boj-color-60a5fa{--boj-dyn:#60A5FA;}
.boj-color-6d28d9{--boj-dyn:#6D28D9;}
.boj-color-7c3aed{--boj-dyn:#7C3AED;}
.boj-color-8b5cf6{--boj-dyn:#8B5CF6;}
.boj-color-93c5fd{--boj-dyn:#93C5FD;}
.boj-color-a78bfa{--boj-dyn:#A78BFA;}
.boj-color-d97706{--boj-dyn:#D97706;}
.boj-color-dc2626{--boj-dyn:#DC2626;}
.boj-color-ea580c{--boj-dyn:#EA580C;}
.boj-color-ef4444{--boj-dyn:#EF4444;}
.boj-color-f59e0b{--boj-dyn:#F59E0B;}
.boj-color-f87171{--boj-dyn:#F87171;}
.boj-color-f97316{--boj-dyn:#F97316;}
.boj-color-fb923c{--boj-dyn:#FB923C;}
.boj-color-fbbf24{--boj-dyn:#FBBF24;}
.boj-color-fca5a5{--boj-dyn:#FCA5A5;}
.boj-color-fcd34d{--boj-dyn:#FCD34D;}
.boj-pct-0{--boj-pct:0%;}
.boj-pct-1{--boj-pct:1%;}
.boj-pct-2{--boj-pct:2%;}
.boj-pct-3{--boj-pct:3%;}
.boj-pct-4{--boj-pct:4%;}
.boj-pct-5{--boj-pct:5%;}
.boj-pct-6{--boj-pct:6%;}
.boj-pct-7{--boj-pct:7%;}
.boj-pct-8{--boj-pct:8%;}
.boj-pct-9{--boj-pct:9%;}
.boj-pct-10{--boj-pct:10%;}
.boj-pct-11{--boj-pct:11%;}
.boj-pct-12{--boj-pct:12%;}
.boj-pct-13{--boj-pct:13%;}
.boj-pct-14{--boj-pct:14%;}
.boj-pct-15{--boj-pct:15%;}
.boj-pct-16{--boj-pct:16%;}
.boj-pct-17{--boj-pct:17%;}
.boj-pct-18{--boj-pct:18%;}
.boj-pct-19{--boj-pct:19%;}
.boj-pct-20{--boj-pct:20%;}
.boj-pct-21{--boj-pct:21%;}
.boj-pct-22{--boj-pct:22%;}
.boj-pct-23{--boj-pct:23%;}
.boj-pct-24{--boj-pct:24%;}
.boj-pct-25{--boj-pct:25%;}
.boj-pct-26{--boj-pct:26%;}
.boj-pct-27{--boj-pct:27%;}
.boj-pct-28{--boj-pct:28%;}
.boj-pct-29{--boj-pct:29%;}
.boj-pct-30{--boj-pct:30%;}
.boj-pct-31{--boj-pct:31%;}
.boj-pct-32{--boj-pct:32%;}
.boj-pct-33{--boj-pct:33%;}
.boj-pct-34{--boj-pct:34%;}
.boj-pct-35{--boj-pct:35%;}
.boj-pct-36{--boj-pct:36%;}
.boj-pct-37{--boj-pct:37%;}
.boj-pct-38{--boj-pct:38%;}
.boj-pct-39{--boj-pct:39%;}
.boj-pct-40{--boj-pct:40%;}
.boj-pct-41{--boj-pct:41%;}
.boj-pct-42{--boj-pct:42%;}
.boj-pct-43{--boj-pct:43%;}
.boj-pct-44{--boj-pct:44%;}
.boj-pct-45{--boj-pct:45%;}
.boj-pct-46{--boj-pct:46%;}
.boj-pct-47{--boj-pct:47%;}
.boj-pct-48{--boj-pct:48%;}
.boj-pct-49{--boj-pct:49%;}
.boj-pct-50{--boj-pct:50%;}
.boj-pct-51{--boj-pct:51%;}
.boj-pct-52{--boj-pct:52%;}
.boj-pct-53{--boj-pct:53%;}
.boj-pct-54{--boj-pct:54%;}
.boj-pct-55{--boj-pct:55%;}
.boj-pct-56{--boj-pct:56%;}
.boj-pct-57{--boj-pct:57%;}
.boj-pct-58{--boj-pct:58%;}
.boj-pct-59{--boj-pct:59%;}
.boj-pct-60{--boj-pct:60%;}
.boj-pct-61{--boj-pct:61%;}
.boj-pct-62{--boj-pct:62%;}
.boj-pct-63{--boj-pct:63%;}
.boj-pct-64{--boj-pct:64%;}
.boj-pct-65{--boj-pct:65%;}
.boj-pct-66{--boj-pct:66%;}
.boj-pct-67{--boj-pct:67%;}
.boj-pct-68{--boj-pct:68%;}
.boj-pct-69{--boj-pct:69%;}
.boj-pct-70{--boj-pct:70%;}
.boj-pct-71{--boj-pct:71%;}
.boj-pct-72{--boj-pct:72%;}
.boj-pct-73{--boj-pct:73%;}
.boj-pct-74{--boj-pct:74%;}
.boj-pct-75{--boj-pct:75%;}
.boj-pct-76{--boj-pct:76%;}
.boj-pct-77{--boj-pct:77%;}
.boj-pct-78{--boj-pct:78%;}
.boj-pct-79{--boj-pct:79%;}
.boj-pct-80{--boj-pct:80%;}
.boj-pct-81{--boj-pct:81%;}
.boj-pct-82{--boj-pct:82%;}
.boj-pct-83{--boj-pct:83%;}
.boj-pct-84{--boj-pct:84%;}
.boj-pct-85{--boj-pct:85%;}
.boj-pct-86{--boj-pct:86%;}
.boj-pct-87{--boj-pct:87%;}
.boj-pct-88{--boj-pct:88%;}
.boj-pct-89{--boj-pct:89%;}
.boj-pct-90{--boj-pct:90%;}
.boj-pct-91{--boj-pct:91%;}
.boj-pct-92{--boj-pct:92%;}
.boj-pct-93{--boj-pct:93%;}
.boj-pct-94{--boj-pct:94%;}
.boj-pct-95{--boj-pct:95%;}
.boj-pct-96{--boj-pct:96%;}
.boj-pct-97{--boj-pct:97%;}
.boj-pct-98{--boj-pct:98%;}
.boj-pct-99{--boj-pct:99%;}
.boj-pct-100{--boj-pct:100%;}
.boj-update-banner{position:fixed;right:max(12px,env(safe-area-inset-right,0px));bottom:max(16px,env(safe-area-inset-bottom,0px));z-index:900;width:min(360px,calc(100vw - max(12px,env(safe-area-inset-left,0px)) - max(12px,env(safe-area-inset-right,0px))));max-width:360px;background:#0F1822;color:#E8EEF4;border:1px solid #36566B;border-left:4px solid #19D3FF;border-radius:12px;padding:14px;box-shadow:0 14px 38px rgba(0,0,0,.44),0 0 0 1px rgba(25,211,255,.05);font:13px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;display:flex;flex-direction:column;gap:12px;transition:border-color .16s,box-shadow .16s,opacity .16s;}
.boj-update-banner-head{display:flex;align-items:flex-start;gap:10px;min-width:0;}
.boj-update-banner-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 32px;width:32px;height:32px;border:1px solid rgba(25,211,255,.34);border-radius:9px;background:rgba(25,211,255,.1);color:#7DE9FF;font-size:20px;font-weight:800;line-height:1;}
.boj-update-banner-copy{min-width:0;}
.boj-update-banner-title{margin:0 0 3px;color:#F2F8FC;font-size:13.5px;font-weight:850;line-height:1.3;}
.boj-update-banner-message{color:#AFC3D1;font-size:12px;line-height:1.5;overflow-wrap:anywhere;}
.boj-update-banner-actions{display:grid;grid-template-columns:minmax(0,auto) minmax(0,1fr);gap:8px;justify-content:end;}
.boj-update-banner-reload,.boj-update-banner-dismiss{min-width:0;min-height:44px;padding:8px 12px;border-radius:8px;cursor:pointer;font-family:inherit;font-size:12px;font-weight:800;line-height:1.25;white-space:normal;transition:border-color .15s,background-color .15s,color .15s,box-shadow .15s,transform .1s;}
.boj-update-banner-reload{background:#19D3FF;color:#031820;border:1px solid #19D3FF;}
.boj-update-banner-dismiss{background:#0A141D;color:#BED0DC;border:1px solid #4B697B;}
.boj-update-banner-reload:focus,.boj-update-banner-dismiss:focus,.boj-update-banner-reload:focus-visible,.boj-update-banner-dismiss:focus-visible{outline:2px solid #7DE9FF;outline-offset:2px;box-shadow:0 0 0 3px rgba(25,211,255,.18);}
.boj-update-banner-reload:disabled,.boj-update-banner-dismiss:disabled{cursor:wait;opacity:.7;transform:none;}
.boj-update-banner.is-error{border-left-color:#F87171;box-shadow:0 14px 38px rgba(0,0,0,.44),0 0 0 1px rgba(248,113,113,.12);}
.boj-update-banner.is-collapsed{width:auto;max-width:calc(100vw - 24px);padding:6px;border-left-width:1px;border-radius:10px;}
.boj-update-banner.is-collapsed .boj-update-banner-head,.boj-update-banner.is-collapsed .boj-update-banner-dismiss{display:none;}
.boj-update-banner.is-collapsed .boj-update-banner-actions{display:block;}
.boj-update-banner.is-collapsed .boj-update-banner-reload{padding-inline:14px;}
.boj-startup-help-overlay{position:fixed;inset:0;z-index:1400;background:rgba(8,14,20,.82);}
.boj-startup-help-modal{position:fixed;z-index:1401;left:50%;top:50%;transform:translate(-50%,-50%);width:min(600px,calc(100vw - 24px));max-height:min(90vh,720px);display:flex;flex-direction:column;background:var(--bg2,#121D28);border:1px solid var(--brd2,#385068);border-radius:8px;box-shadow:0 28px 80px rgba(0,0,0,.55);overflow:hidden;color:var(--txt,#EAF3FB);}
.boj-startup-help-close{flex-shrink:0;background:transparent;border:0;color:#A9C2D4;font-size:18px;cursor:pointer;padding:4px 8px;border-radius:4px;font-family:inherit;line-height:1;}
.s0-choice{border:1px solid var(--brand-br,#1f2937);background:transparent;color:var(--txt,#e5e7eb);padding:6px 10px;border-radius:4px;font-size:11px;cursor:pointer;}
.s0-choice.is-selected{background:var(--brand,#60a5fa);color:#0b1220;}
.boj-s0-overlay{position:fixed;inset:0;z-index:10003;background:rgba(0,0,0,.78);display:flex;align-items:center;justify-content:center;padding:24px;}
.boj-contradiction-overlay{position:fixed;inset:0;z-index:10002;background:rgba(0,0,0,.78);display:flex;align-items:center;justify-content:center;padding:24px;}
.explain-band-emphasis{font-weight:600;}
.guided-snapshot-weight{font-size:12px;}
.guided-snapshot-confidence{font-weight:700;}
.result-hypothesis-weight{font-size:18px;font-weight:700;flex-shrink:0;}
.result-progress-fill{height:100%;border-radius:2px;}
.result-confidence-value{font-size:16px;font-weight:700;}
.hypothesis-confidence-value{font-size:20px;font-weight:700;}
.hypothesis-progress-fill{height:100%;border-radius:3px;}
.boj-preview-demo-overlay{position:fixed;inset:0;z-index:10001;background:rgba(0,0,0,.82);display:flex;align-items:flex-start;justify-content:center;padding:24px;overflow-y:auto;}
#eig-debug-panel .eig-delta{text-align:center;font-size:9px;}
#eig-debug-panel .eig-delta.is-improving{color:var(--ok-t,#4ade80);}
#eig-debug-panel .eig-delta.is-warning{color:var(--warn-t,#facc15);}
.report-engine-weight{font-weight:700;}
.btn-ok.is-saved{background:var(--ok);}

/* Reportes HTML descargables: conservan el diseño usando la hoja versionada. */
body.boj-export-intervention,body.boj-export-intervention *{box-sizing:border-box;margin:0;padding:0;}
body.boj-export-intervention{font-family:Arial,sans-serif;font-size:12px;color:#1C1917;background:#fff;padding:24px;max-width:800px;margin:0 auto;}
.report-print-frame{position:fixed!important;left:-10000px!important;top:0!important;width:1px!important;height:1px!important;border:0!important;opacity:0!important;pointer-events:none!important;}
.boj-export-intervention .top{display:flex;justify-content:space-between;align-items:flex-start;padding-bottom:12px;border-bottom:2px solid #009FDA;margin-bottom:16px;}
.boj-export-intervention .top h1{font-size:17px;color:#009FDA;margin-bottom:3px;}
.boj-export-intervention .top p{font-size:10px;color:#78716C;}
.boj-export-intervention .num{font-size:20px;font-weight:700;color:#009FDA;}
.boj-export-intervention .g2{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:14px;}
.boj-export-intervention .b{padding:8px 10px;background:#F8F7F4;border-radius:4px;border-left:3px solid #009FDA;}
.boj-export-intervention .b label{font-size:9px;text-transform:uppercase;letter-spacing:.5px;color:#78716C;display:block;margin-bottom:2px;font-weight:700;}
.boj-export-intervention .b span{font-size:12px;color:#1C1917;font-weight:700;}
.boj-export-intervention h2{font-size:10px;text-transform:uppercase;letter-spacing:.8px;color:#009FDA;font-weight:700;margin:13px 0 6px;padding-bottom:4px;border-bottom:1px solid #E5E2D9;}
.boj-export-intervention .c{font-size:12px;color:#1C1917;line-height:1.7;background:#F8F7F4;padding:9px;border-radius:4px;}
.boj-export-intervention .bdg{display:inline-block;padding:3px 10px;border-radius:20px;color:#fff;font-size:11px;font-weight:700;}
.boj-export-intervention .bdg.is-critical,.boj-export-intervention .bdg.is-unresolved{background:#B91C1C;}
.boj-export-intervention .bdg.is-high,.boj-export-intervention .bdg.is-temporary{background:#D97706;}
.boj-export-intervention .bdg.is-medium,.boj-export-intervention .bdg.is-default{background:#1D4ED8;}
.boj-export-intervention .bdg.is-low,.boj-export-intervention .bdg.is-resolved{background:#16A34A;}
.boj-export-intervention table{width:100%;border-collapse:collapse;margin-top:6px;font-size:11px;}
.boj-export-intervention th,.boj-export-intervention td{padding:6px 8px;border:1px solid #E5E2D9;text-align:left;}
.boj-export-intervention th{background:#F8F7F4;}
.boj-export-intervention .ft{margin-top:20px;padding-top:8px;border-top:1px solid #E5E2D9;font-size:10px;color:#A8A29E;display:flex;justify-content:space-between;}
.boj-export-intervention .report-print-footer{break-before:avoid-page;page-break-before:avoid;}
.boj-export-intervention .report-print-section{break-inside:auto;page-break-inside:auto;}
.boj-export-intervention .report-print-section h2{break-after:avoid-page;page-break-after:avoid;}
.boj-export-intervention .report-long-text{white-space:normal;overflow-wrap:anywhere;word-break:normal;orphans:3;widows:3;}
.boj-export-intervention .report-identification,.boj-export-intervention .report-signature,.boj-export-intervention thead,.boj-export-intervention tr{break-inside:avoid;page-break-inside:avoid;}
.boj-export-intervention .report-signature{margin-top:22px;padding-top:18px;}
.boj-export-intervention .report-signature{break-before:avoid-page;page-break-before:avoid;}
.boj-export-intervention .report-signature-line{border-top:1px solid #78716C;padding-top:5px;max-width:280px;font-weight:700;}
.boj-export-precision{border-radius:4px;padding:10px 13px;margin:10px 0;}
.boj-export-precision.is-online{background:#DBEAFE;border-left:4px solid #60A5FA;}
.boj-export-precision.is-limited{background:#FEF3C7;border-left:4px solid #F59E0B;}
.boj-export-precision-title{font-size:10px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;margin-bottom:4px;}
.boj-export-precision.is-online .boj-export-precision-title{color:#1E40AF;}
.boj-export-precision.is-limited .boj-export-precision-title{color:#92400E;}
.boj-export-precision-text{font-size:11.5px;line-height:1.55;color:#1F2937;}

body.boj-export-diagnostic,body.boj-export-diagnostic *{box-sizing:border-box;}
body.boj-export-diagnostic{font-family:-apple-system,Arial,sans-serif;font-size:12px;color:#1C1917;padding:20px;max-width:780px;margin:0 auto;line-height:1.55;background:#fff;}
.boj-export-diagnostic h1{color:#0087BE;border-bottom:2px solid #0087BE;padding-bottom:8px;margin:0 0 14px;font-size:20px;}
.boj-export-diagnostic h2{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:#0087BE;margin:18px 0 6px;border-left:3px solid #0087BE;padding-left:8px;}
.boj-export-diagnostic h3{font-size:15px;margin:0 0 4px;color:#0F1F2E;}
.boj-export-diagnostic p{margin:0 0 4px;}
.boj-export-diagnostic .rep-head{display:flex;justify-content:space-between;flex-wrap:wrap;font-size:11px;color:#475569;margin-bottom:6px;}
.boj-export-diagnostic .rep-head strong{color:#1C1917;}
.boj-export-diagnostic .rep-primary{background:#F0F9FF;border:1px solid #BAE6FD;border-left:3px solid #0087BE;padding:11px 14px;border-radius:4px;}
.boj-export-diagnostic .rep-primary-meta{font-size:11px;color:#475569;margin-top:4px;}
.boj-export-diagnostic .rep-conf{display:inline-block;background:#0087BE;color:#fff;padding:4px 11px;border-radius:14px;font-weight:700;font-size:12px;margin-left:8px;}
.boj-export-diagnostic .rep-list{margin:4px 0 8px 22px;padding:0;}
.boj-export-diagnostic .rep-list li{margin:3px 0;}
.boj-export-diagnostic .rep-check{list-style:none;margin-left:0;padding-left:0;}
.boj-export-diagnostic .rep-check li{position:relative;padding-left:22px;}
.boj-export-diagnostic .rep-check li::before{content:"\2610";position:absolute;left:4px;color:#72879B;font-weight:bold;}
.boj-export-diagnostic .rep-ans{color:#0087BE;font-style:normal;font-weight:600;font-size:11px;}
.boj-export-diagnostic .rep-meta{font-size:11px;color:#475569;}
.boj-export-diagnostic .rep-empty{font-style:italic;color:#94A3B8;font-size:11px;}
.boj-export-diagnostic .rep-table{width:100%;border-collapse:collapse;font-size:11.5px;margin:4px 0 8px;}
.boj-export-diagnostic .rep-table th,.boj-export-diagnostic .rep-table td{padding:6px 9px;border:1px solid #E2E8F0;text-align:left;}
.boj-export-diagnostic .rep-table th{background:#F8FAFC;font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:#475569;}
.boj-export-diagnostic .rep-safety{background:#FFFBEB;border:1px solid #FCD34D;border-left:3px solid #D97706;padding:10px 13px;border-radius:4px;margin:18px 0 8px;}
.boj-export-diagnostic .rep-safety-k{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:#92400E;font-weight:700;margin-bottom:3px;}
.boj-export-diagnostic .rep-safety-t{font-size:11.5px;color:#78350F;}
.boj-export-diagnostic .rep-notes{background:#F8FAFC;border:1px solid #E2E8F0;border-radius:4px;padding:10px 13px;font-size:12px;color:#1C1917;}
.boj-export-diagnostic .rep-microcopy{font-style:italic;color:#64748B;font-size:10.5px;margin:14px 0 6px;}
.boj-export-diagnostic .rep-footer{font-size:10px;color:#94A3B8;border-top:1px solid #E2E8F0;padding-top:8px;margin-top:18px;}
.boj-export-diagnostic .ctx{background:#F8FAFC;padding:10px;border-radius:4px;font-size:11.5px;line-height:1.7;border:1px solid #E2E8F0;}
@media print{
  body.boj-export-intervention{padding:0;}
  body.boj-export-diagnostic{padding:8mm;}
  .boj-export-diagnostic h2{break-after:avoid-page;page-break-after:avoid;}
  .boj-export-diagnostic .rep-primary,.boj-export-diagnostic .rep-safety{page-break-inside:avoid;}
  .boj-export-diagnostic .rep-notes{break-inside:auto;page-break-inside:auto;orphans:3;widows:3;}
}

/* APP-AUD-LB — controles nativos, foco visible y ciclo accesible de S0. */
.hdr-brand,.side-brand{
  appearance:none;border:0;background:transparent;color:inherit;font:inherit;text-align:left;text-decoration:none;
}
.hdr-brand-copy,.side-brand-copy,.side-title,.side-edition,.hdr-title,.hdr-sub{display:block;min-width:0;}
.side-brand-copy{flex:1 1 auto;overflow:hidden;}
.dc{
  appearance:none;width:100%;border-style:solid;color:inherit;font:inherit;text-align:left;
}
.dc-body,.dc-t,.dc-s{display:block;}
.dc-k{display:none;}
.case-hdr,.kb-hdr{
  appearance:none;width:100%;border:0;background:transparent;color:inherit;font:inherit;text-align:left;
}
.case-body[hidden],.kb-body[hidden]{display:none!important;}
.locked-card-action{
  appearance:none;display:block;width:100%;padding:0;color:inherit;font:inherit;text-align:left;
}
.locked-card-action .case-hdr,.locked-card-action .kb-hdr{display:flex;width:100%;}
.locked-card-action .case-locked-meta{display:block;text-align:left;}
.rc-pro-lock{
  appearance:none;display:block;width:100%;font:inherit;text-align:left;
}
.cl-check{appearance:none;padding:0;min-width:44px;width:44px;min-height:44px;height:44px;font-family:inherit;}
.dc:focus-visible,.case-hdr:focus-visible,.kb-hdr:focus-visible,.locked-card-action:focus-visible,.rc-pro-lock:focus-visible,.cl-check:focus-visible{
  outline:2px solid #19D3FF;outline-offset:-3px;box-shadow:inset 0 0 0 1px #06131d,0 0 0 1px rgba(25,211,255,.28);
}
.csp-s069{min-width:0;border:0;padding:0;}
.csp-s070{padding:0;}
.csp-s072{max-height:calc(100vh - 32px);overflow:auto;}
.s0-choice,.csp-s076,.csp-s077{min-width:44px;min-height:44px;font-family:inherit;}
.s0-choice[aria-pressed="true"]{box-shadow:inset 0 0 0 2px rgba(3,24,32,.42);}
.s0-choice:focus-visible,.csp-s076:focus-visible,.csp-s077:focus-visible{
  outline:2px solid #19D3FF;outline-offset:2px;
}

/* APP-AUD-LB — roles cromáticos medidos sobre componentes reales. */
.lang-btn.active,.hero-cta,.action-n,.btn-primary,.li-goto,.rb-btn,.fab,
.pro-upgrade-btn,.edition-note-btn,.modal-pro-btn,.pro-act-primary,.blp-btn-primary,
.modal.modal-info .modal-btn,.csp-s077,.s0-choice.is-selected{
  color:var(--on-brand)!important;
}
.modal-btn{color:var(--on-danger);}
.fab .badge{color:#170606;}
.btn-ok,.cl-check.done{color:var(--on-ok);}
.led-opt,.plcr-mode-slot,.lang-card-btn,.s0-choice,.csp-s076{
  border-color:var(--control-brd);
}
.led-opt:hover,.plcr-mode-slot:hover,.s0-choice:hover{border-color:#19D3FF;}
.hero-cta:active,.btn-primary:active,.li-goto:active,.rb-btn:hover,.fab:hover,
.pro-upgrade-btn:active,.edition-note-btn:active,.modal-pro-btn:active,.blp-btn-primary:hover{
  color:var(--on-brand)!important;
}
.boj-update-banner-reload{color:var(--on-brand);}

/* El checklist permanece siempre visible, pero ahora ocupa espacio real en
   el header sticky en vez de interceptar contenido desplazable. */
.fab{
  position:static;inset:auto;flex:0 0 44px;z-index:auto;margin:0;
  width:44px;height:44px;min-width:44px;min-height:44px;
}
.fab .badge{top:0;right:0;}
.fab:hover{transform:none;box-shadow:0 0 0 2px rgba(25,211,255,.32),0 5px 14px rgba(0,159,218,.28);}
.hdr-help-short{display:none;}
@media(max-width:1179px){
  body{padding-bottom:calc(16px + env(safe-area-inset-bottom));}
  .hdr-inner{padding-right:max(10px,env(safe-area-inset-right));}
  .nav{padding-right:env(safe-area-inset-right);}
}
@media(max-width:430px){
  .hdr-inner{padding-left:8px;padding-right:max(8px,env(safe-area-inset-right));gap:4px;}
  .hdr-brand{gap:6px;}
  .hdr-logo{width:30px;height:30px;}
  .hdr-title{font-size:14px;}
  .hdr-sub{display:none;}
  .hdr-right,.hdr-actions{gap:4px;}
  .hdr-actions .hdr-action,.hdr-action-license{min-width:44px;width:44px;padding:0;justify-content:center;}
  .hdr-action-license .hdr-license-label,.hdr-action-license .hdr-license-label-short{display:none;}
  .hdr-action-license{position:relative;}
  .hdr-action-license .hdr-license-icon{display:block;}
  .hdr-action-license .hdr-license-dot{position:absolute;top:7px;right:7px;width:6px;height:6px;}
  .hdr-help-long{display:none;}
  .hdr-help-short{display:inline;font-size:17px;font-weight:900;}
  .lang-switcher{flex:0 0 44px;}
}

/* Targets efectivos y reflow técnico sin recorte. */
.pgpc-help>summary{display:flex;align-items:center;min-height:44px;}
.nb,.pro-act-x,.blp-x,.boj-startup-help-close,.lg-btn-close{min-width:44px;min-height:44px;}
.nb:focus-visible,.nb.active:focus-visible,
.side-nav .nb:focus-visible,.side-nav .nb.active:focus-visible{
  outline:3px solid var(--focus-ring);outline-offset:-3px;
  box-shadow:inset 0 0 0 1px #06131D,0 0 0 1px rgba(25,211,255,.28);
}
@media(max-width:520px){
  .led-row-ctrl{flex-direction:column;align-items:stretch;gap:6px;}
  .led-row-ctrl label{width:auto;}
  .led-opts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;}
  .led-opt,.led-opt-s7400{min-width:0;white-space:normal;overflow-wrap:anywhere;padding:7px 5px;}
}
@media(max-width:430px){
  .cpu-home-grid{padding:12px 10px 0;}
  .cpu-visual-zone,.cpu-control-zone{min-width:0;padding:10px;overflow:visible;}
  .cpu-control-zone .led-ctrls{padding-right:0;}
  .led-interp .li-goto{min-width:0;width:100%;white-space:normal;}
  .plcr,.plcr-chassis{min-width:0;width:100%;max-width:100%!important;}
  .plcr-face,.plcr-s7300 .plcr-face,.plcr-s7400 .plcr-face{
    grid-template-columns:minmax(0,1fr);gap:10px;padding:10px;
  }
  .plcr-mode{min-width:0;padding:8px;}
  .plcr-mode-slots{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;}
  .plcr-mode-slot{min-width:0;white-space:normal;}
  .plcr-base{height:auto;min-height:44px;align-items:center;flex-wrap:wrap;padding:7px 10px;}
  .plcr-base-model{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;}
  .plcr-base-fam{white-space:normal;}
}

/* La opción exacta RX/TX 6 Hz sólo existe en los modelos que la ofrecen. Su
   chip muestra una lente real; el texto "6 Hz" sigue siendo el nombre accesible. */
.led-opt.blink-6hz{display:inline-flex;align-items:center;justify-content:center;gap:6px;}
.led-opt.blink-6hz::before{
  content:"";display:inline-block;flex:0 0 auto;width:8px;height:8px;border-radius:50%;
  background:#4ADE80;border:1px solid #22C55E;box-shadow:0 0 6px rgba(74,222,128,.55);
  animation:cpublink-6hz .166667s steps(1,end) infinite;
}

/* Movimiento no esencial desactivado cuando el sistema lo solicita. */
@media(prefers-reduced-motion:reduce){
  html:focus-within{scroll-behavior:auto;}
  *,*::before,*::after{
    animation-duration:.01ms!important;
    animation-iteration-count:1!important;
    transition-duration:.01ms!important;
    transition-delay:0s!important;
  }
  .cpu-led.blink,.cpu-led.blink-slow,.cpu-led.blink-fast,.cs-led.blink,
  .led-opt.blink-6hz::before,
  .save-dot.on,.bls-spinner,.fd{
    animation:none!important;
  }
  .cpu-led.blink,.cpu-led.blink-slow,.cpu-led.blink-fast{opacity:1!important;}
  .dc:hover,.dc:active,.ans-btn:active,.fab:hover,.li-goto:active,
  .pro-upgrade-btn:active,.edition-note-btn:active,.modal-pro-btn:active{
    transform:none!important;
  }
}

/* Post-launch visual gate — access and report ergonomics.
   This layer is intentionally narrow: it changes presentation only and keeps
   the existing authentication, licensing and report handlers untouched. */
.teb-overlay{
  align-items:flex-start;
  padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right))
    max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));
}
.teb-card{
  margin-block:auto;
  min-width:0;
  background:var(--bg2,#121D28);
  border-color:var(--brd2,#385068);
}
.teb-title{color:var(--txt,#EAF3FB);}
.teb-msg,.teb-label,.teb-aux,.teb-turnstile-prompt,.teb-learn,
.teb-cooldown,.teb-btn-ghost{color:var(--txt2,#AABCCD);}
.teb-input{
  min-height:44px;
  background:var(--bg,#0C141C);
  border-color:var(--control-brd,#4D7184);
  color:var(--txt,#EAF3FB);
}
.teb-btn-primary{
  min-height:48px;
  color:var(--on-brand,#031820);
}
.teb-card .teb-btn-secondary,.teb-btn-ghost{
  min-height:44px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
}
.teb-card .teb-btn-secondary{
  background:var(--bg,#0C141C);
  border-color:var(--control-brd,#4D7184);
  color:var(--txt,#EAF3FB);
}
.teb-legal-link{
  border-color:var(--control-brd,#4D7184);
  color:var(--txt2,#AABCCD);
}
.teb-turnstile{min-width:0;overflow:visible;}
.teb-btn-primary.csp-s191{
  background:linear-gradient(135deg,#0C7A4B,#096A40);
  border-color:#0C7A4B;
  color:#fff;
}

/* An update is useful only after the current access decision is complete. */
body:has(#boj-email-gate) .boj-update-banner,
body:has(#trial-expired-blocker) .boj-update-banner{display:none!important;}

.exp-btn{min-height:44px;}
#view-report .report-locked-actions>*{
  min-width:0;
  width:100%;
}
@media(max-width:520px){
  .teb-overlay{
    padding:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right))
      max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));
  }
  #view-report .report-locked-actions,
  #view-report .form-row{grid-template-columns:minmax(0,1fr);}
  #view-report .report-locked-actions .pro-upgrade-btn{
    min-width:0;
    min-height:44px;
    margin-top:0;
  }
  #view-report .form-input,#view-report .form-textarea{font-size:16px;}
}
@media(max-width:340px){
  .teb-overlay{
    padding-left:max(10px,env(safe-area-inset-left));
    padding-right:max(10px,env(safe-area-inset-right));
  }
  .teb-turnstile{
    position:relative;
    left:50%;
    width:300px;
    max-width:none;
    transform:translateX(-50%);
  }
}

/* Post-launch visual gate — deliberate canvas and readable technical density.
   Keep the home dashboard expansive, while bounded reading views avoid long
   scan lines. The desktop header shares the exact sidebar canvas instead of
   relying on a sticky inset that can extend past the viewport. */
@media(min-width:700px) and (max-width:1179px){
  .main,.app-footer{max-width:min(920px,calc(100vw - 32px));}
}
@media(min-width:1180px){
  .hdr{
    left:0;
    margin-left:212px;
    width:calc(100% - 212px);
  }
  .hdr .hdr-brand{
    flex:0 0 44px;
    width:44px;
    min-width:44px;
    min-height:44px;
    justify-content:center;
    gap:0;
  }
  .hdr .hdr-brand-copy{display:none;}
  #view-guided>.vi,#view-hypo>.vi{max-width:920px;}
  #view-cases>.vi,#view-report>.vi,#view-kb>.vi{max-width:1040px;}
  .dc-s,.domain-chips .dchip,.panel-sub,.led-opt{font-size:10.5px;}
}
@media(min-width:1180px) and (max-width:1279px){
  .home-grid{grid-template-columns:minmax(0,1fr);}
}
.q-safety,.rfx-safety-t{font-size:12.5px;}

/* iOS/Android no deben ampliar la interfaz al enfocar los campos editables. */
@media screen and (max-width:900px){
  .dsel,.symptom-search input,.si-inp,.form-input,.form-textarea,.notes-ta,.pro-act-input,.blp-input,.teb-input{font-size:16px;}
}

/* Guided legibility. */
#view-guided .phase-label{font-size:11px;color:var(--txt2);flex-wrap:wrap}
#view-guided .phase-badge{font-size:10px;padding:3px 8px}
#view-guided .q-text{font-size:18px;line-height:1.4}
#view-guided .q-measure,#view-guided .q-donot{font-size:13px;line-height:1.55}
#view-guided .ab-lbl{font-size:14px}
#view-guided .ab-sub{font-size:12px;color:var(--txt2);line-height:1.5}

/* Lote 15 — preparación operativa no modal. El resumen cerrado mantiene el
   tablero compacto; al abrirlo, los radios triestado conservan 44 px táctiles. */
.diagnostic-preparation-panel{overflow:hidden;}
.diagnostic-preparation-panel details>summary{
  min-height:58px;padding:10px 13px;display:flex;align-items:center;
  justify-content:space-between;gap:12px;cursor:pointer;list-style:none;
  border-left:3px solid rgba(25,211,255,.72);
}
.diagnostic-preparation-panel details>summary::-webkit-details-marker{display:none;}
.diagnostic-preparation-panel details>summary::after{
  content:'›';color:var(--brand,#19D3FF);font-size:19px;font-weight:800;
  transform:rotate(90deg);transition:transform .16s ease;
}
.diagnostic-preparation-panel details[open]>summary::after{transform:rotate(-90deg);}
.prep-summary-copy{display:grid;gap:2px;min-width:0;}
.prep-kicker{color:var(--txt,#EAF3FB);font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;}
.prep-hint{color:var(--txt3,#8FA7B8);font-size:10px;line-height:1.35;}
.prep-status{
  margin-left:auto;white-space:nowrap;border:1px solid rgba(25,211,255,.3);
  border-radius:999px;padding:4px 8px;background:rgba(25,211,255,.07);
  color:var(--brand,#19D3FF);font-size:10px;font-weight:800;
}
.prep-body{display:grid;gap:12px;padding:4px 12px 13px;border-top:1px solid rgba(90,180,210,.12);}
.prep-group{min-width:0;margin:0;padding:10px 0 0;border:0;}
.prep-group legend{padding:0;color:var(--txt2,#AABCCD);font-size:10.5px;font-weight:800;line-height:1.4;}
.prep-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-top:7px;}
.prep-option{
  position:relative;min-width:0;min-height:44px;padding:7px 8px;
  display:flex;align-items:center;justify-content:center;text-align:center;
  border:1px solid rgba(90,180,210,.24);border-radius:6px;
  background:rgba(3,14,23,.36);color:var(--txt3,#8FA7B8);
  font-size:10px;font-weight:800;line-height:1.25;cursor:pointer;
}
.prep-option input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:inherit;}
.prep-option.is-selected{
  border-color:rgba(25,211,255,.7);background:rgba(25,211,255,.12);
  color:var(--txt,#EAF3FB);box-shadow:inset 0 0 0 1px rgba(25,211,255,.12);
}
.prep-option:has(input:focus),.prep-option.has-prep-focus{outline:2px solid #19D3FF;outline-offset:2px;}
.prep-option:has(input:disabled){cursor:not-allowed;opacity:.62;}
.pgpc-availability-control.is-locked{cursor:not-allowed;opacity:.62;}
.prep-locked{
  border-left:2px solid var(--warn,#FBBF24);padding:8px 9px;
  display:grid;gap:8px;
  background:rgba(251,191,36,.07);color:var(--txt2,#AABCCD);
  font-size:10px;line-height:1.45;
}
.prep-reset-btn{
  min-height:44px;width:100%;border:1px solid rgba(251,191,36,.34);
  border-radius:6px;background:rgba(251,191,36,.08);color:var(--txt,#EAF3FB);
  font:inherit;font-weight:800;cursor:pointer;
}
.prep-reset-btn:hover{border-color:rgba(251,191,36,.64);background:rgba(251,191,36,.14);}
.prep-reset-btn:focus-visible{outline:2px solid #19D3FF;outline-offset:2px;}
@media(max-width:520px){
  .diagnostic-preparation-panel details>summary{align-items:flex-start;flex-wrap:wrap;}
  .prep-status{margin-left:0;}
  .prep-options{grid-template-columns:minmax(0,1fr);}
  .prep-option{justify-content:flex-start;text-align:left;padding-inline:12px;}
}

/* Lote 16 — controles guiados compactos, táctiles y con respuesta mecánica. */
#view-guided :is(.btn-primary,.btn-secondary,.btn-guided-back){min-width:44px;min-height:44px;padding:8px 12px;border-radius:8px;transition:border-color .15s,background-color .15s,color .15s,box-shadow .15s,transform .12s;}
#view-guided .ans-btn>div:last-child{min-width:0;overflow-wrap:anywhere;}
#view-guided :is(.ans-btn,.btn-primary,.btn-secondary,.btn-guided-back):disabled{opacity:.6;cursor:not-allowed;transform:none;box-shadow:none;}
#view-guided :is(.ans-btn,.btn-primary,.btn-secondary,.btn-guided-back):not(:disabled):active{transform:translateY(0);box-shadow:inset 0 2px 5px rgba(0,0,0,.28);}

.cpu-control-zone .led-ctrls{gap:5px;}
/* Each LED's states keep equal-width cells. Narrow rows use balanced grids
   instead of leaving one full-width option orphaned below the others. */
.cpu-control-zone .led-row-ctrl{container:led-choice-row / inline-size;}
.cpu-control-zone .led-opts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;min-width:0;padding:0;gap:4px;border:0;border-radius:0;background:none;box-shadow:none;}
.cpu-control-zone .led-opts[data-option-count="2"],
.cpu-control-zone .led-opts[data-option-count="4"]{grid-template-columns:repeat(2,minmax(0,1fr));}
.cpu-control-zone .led-opt{flex:none;width:100%;min-width:0;min-height:44px;white-space:normal;overflow-wrap:break-word;word-break:normal;padding:5px 2px;border:1px solid #355568;border-radius:8px;background:#0B1E29;color:#C5D8E5;font-size:10.5px;font-weight:400;line-height:1.1;letter-spacing:0;touch-action:manipulation;-webkit-tap-highlight-color:rgba(25,211,255,.2);box-shadow:none;transition:border-color .15s,background-color .15s,color .15s,box-shadow .15s,transform .12s;}
@container led-choice-row (min-width:241px){
  .cpu-control-zone .led-opts[data-option-count="4"]{grid-template-columns:repeat(4,minmax(0,1fr));}
}
@container led-choice-row (min-width:289px){
  .cpu-control-zone .led-opts[data-option-count="5"]{grid-template-columns:repeat(5,minmax(0,1fr));}
}
@container led-choice-row (min-width:415px){
  .cpu-control-zone .led-opts[data-option-count="6"]{grid-template-columns:repeat(6,minmax(0,1fr));}
}
@media(max-width:520px){
  /* Three comfortable controls per line; five states form a balanced 3+2. */
  .cpu-control-zone .led-opts[data-option-count]{grid-template-columns:repeat(6,minmax(0,1fr));}
  .cpu-control-zone .led-opt{grid-column:span 2;}
  .cpu-control-zone .led-opts[data-option-count="1"] .led-opt{grid-column:span 6;}
  .cpu-control-zone .led-opts[data-option-count="2"] .led-opt,
  .cpu-control-zone .led-opts[data-option-count="4"] .led-opt,
  .cpu-control-zone .led-opts[data-option-count="5"] .led-opt:nth-child(n+4){grid-column:span 3;}
}
.cpu-control-zone .led-opt[data-compact-label="true"]{padding-inline:2px;font-size:9.5px;}
.cpu-control-zone .led-opt::after{content:none;display:none;}
.cpu-control-zone .led-opt.sel{border-width:2px;border-color:#1DADCE;background:#0C3446;color:#F2FBFF;font-weight:500;text-shadow:none;box-shadow:inset 0 0 0 1px rgba(25,211,255,.08);}
.cpu-control-zone .led-opt:not(:disabled):active{transform:translateY(0);box-shadow:inset 0 3px 7px rgba(0,0,0,.55),inset 0 0 0 1px rgba(25,211,255,.08);transition-duration:.06s;}
.cpu-control-zone .led-opt:focus-visible{outline:2px solid #7DE9FF;outline-offset:2px;box-shadow:0 0 0 3px rgba(25,211,255,.2),inset 0 1px 0 rgba(255,255,255,.08);}

.plcr-chassis{padding-right:0;border:1px solid #17222C;border-radius:5px;background:#34414D;box-shadow:inset 0 1px 0 rgba(255,255,255,.12),inset 0 -2px 0 rgba(0,0,0,.52),0 13px 28px rgba(0,0,0,.38);}
.plcr-chassis::before{right:0;opacity:.4;background:repeating-linear-gradient(90deg,rgba(255,255,255,.012) 0 1px,transparent 1px 32px);}
.plcr-chassis::after,.plcr-vents{display:none;}
.plcr-top{height:26px;padding:0 13px;background:#1B2731;border-bottom:1px solid #0A1118;box-shadow:inset 0 1px 0 rgba(255,255,255,.08);}
.plcr-top::after{content:none;}
.plcr-top-code{font-size:10px;color:#E6EEF4;letter-spacing:.2em;}
.plcr-top-dot{width:8px;height:8px;background:radial-gradient(circle at 35% 30%,#8CD3F4,#2F82B2 42%,#10304A 80%);box-shadow:inset 0 1px 0 rgba(255,255,255,.22);}
.plcr-face{grid-template-columns:minmax(0,1fr) 72px;gap:9px;padding:11px;background:#35424D;box-shadow:inset 0 1px 0 rgba(255,255,255,.05);}
.plcr-led-bay{padding:11px 10px 12px;border:1px solid #091017;border-radius:3px;background:#101820;box-shadow:inset 0 0 14px rgba(0,0,0,.48);}
.plcr-led-row{grid-template-columns:12px minmax(24px,1fr) minmax(0,auto);min-width:0;}
.plcr-led-name{min-width:0;}
.plcr-led-control{border-radius:6px;padding-inline:6px;transition:background-color .15s,box-shadow .15s,border-color .15s;}
.plcr-mode{padding:9px 7px 7px;border:1px solid #0A1117;border-radius:3px;background:#26323C;box-shadow:inset 0 1px 0 rgba(255,255,255,.07);}
.plcr-mode-cap,.plcr-mode-foot{font-size:9px;color:#A9BAC7;letter-spacing:.16em;}
.plcr-mode-slot{position:relative;border-radius:3px;font-size:9px;overflow:hidden;}
.plcr-mode-slot.active{padding-left:4px;}
.plcr-mode-slot.active::before{content:none;}
.plcr-base{height:30px;padding:0 13px;background:#111A22;border-top:1px solid #73828C;box-shadow:inset 0 1px 0 rgba(255,255,255,.08);}
.plcr-base-model{font-size:11.5px;color:#F1F6F9;}
.plcr-base-fam{font-size:9px;color:#9EB0BD;}
.plcr-s7300 .plcr-chassis{max-width:380px;}
.plcr-s7300 .plcr-face{grid-template-columns:minmax(0,1fr) 72px;gap:9px;padding:11px;}
.plcr-s7300 .plcr-led-bay{padding-inline:8px;}
.plcr-s7300 .plcr-led-row{grid-template-columns:10px minmax(24px,auto) minmax(0,1fr);gap:3px;}
.plcr-s7400 .plcr-chassis{max-width:440px;}
.plcr-s7400 .plcr-face{grid-template-columns:minmax(0,1fr) 80px;gap:10px;padding:12px;}
.plcr-s7400 .plcr-led-bay{padding-inline:8px;}
.plcr-s7400 .plcr-led-row{grid-template-columns:10px minmax(38px,.8fr) minmax(0,1.2fr);gap:5px;}
.plcr-s7400 .plcr-led-state{white-space:normal;overflow-wrap:anywhere;line-height:1.15;}
.plcr-unknown .plcr-chassis{max-width:310px;}

/* Lote 19 — lectura operativa del diagnóstico guiado. El alcance queda
   limitado a #view-guided: no altera preguntas, respuestas ni decisiones. */
#view-guided .phase-bar{
  height:5px;gap:5px;margin-bottom:9px;
}
#view-guided .pb-step{
  height:5px;border-radius:999px;background:#1A3444;
  box-shadow:inset 0 1px 2px rgba(0,0,0,.5);
}
#view-guided .pb-step.done{background:#27B874;}
#view-guided .pb-step.active{
  background:#19D3FF;
  box-shadow:0 0 0 1px rgba(25,211,255,.14),0 0 9px rgba(25,211,255,.22);
}
#view-guided .phase-label{margin-bottom:10px;min-width:0;}
#view-guided .phase-badge{
  border-color:rgba(25,211,255,.42);background:rgba(25,211,255,.09);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035);
}
#view-guided .csp-s087{
  font-size:11px;font-variant-numeric:tabular-nums;letter-spacing:.04em;
  color:var(--txt2);white-space:nowrap;
}
#view-guided #guided-content .q-card{
  position:relative;border-color:#28495B;border-left:3px solid #19D3FF;
  padding:17px 18px 16px;
  background-color:var(--bg2);
  background-image:linear-gradient(125deg,rgba(25,211,255,.055),transparent 33%);
  box-shadow:0 12px 28px rgba(0,0,0,.22),inset 0 1px 0 rgba(255,255,255,.028);
}
#view-guided #guided-content .q-text{
  font-size:19px;line-height:1.4;letter-spacing:-.01em;
}
#view-guided #guided-content .q-kind{margin-bottom:8px;}
#view-guided #guided-content .q-response-prompt{font-size:13px;line-height:1.5;margin-top:-2px;margin-bottom:8px;}
#view-guided #guided-content .q-hint{
  color:var(--txt2);font-size:13px;font-weight:500;line-height:1.6;
}
#view-guided #guided-content .q-hint strong{color:var(--txt);font-weight:800;}
#view-guided .ans-grid{gap:7px;}
#view-guided .ans-btn{
  position:relative;padding:8px 34px 8px 10px;
  border-color:#31566A;background-color:#071923;
  background-image:linear-gradient(180deg,rgba(19,47,62,.82),rgba(6,22,32,.94));
  box-shadow:0 2px 7px rgba(0,0,0,.18);
}
#view-guided .ans-btn::after{
  content:'›';position:absolute;right:12px;top:50%;transform:translateY(-52%);
  color:#7896A8;font-size:18px;font-weight:800;line-height:1;pointer-events:none;
}
#view-guided .ans-btn.skip{
  border-color:#3B5665;background-color:#081720;
  background-image:linear-gradient(180deg,rgba(23,39,49,.68),rgba(6,18,26,.88));
}
#view-guided #guided-content .explain-head,
#view-guided #guided-content .trace-head,
#view-guided #guided-content .csp-s098,
#view-guided #guided-content .csp-s103{
  flex-wrap:wrap;min-width:0;
}
#view-guided #guided-content :is(.explain-head>*,.trace-head>*,.csp-s098>*,.csp-s103>*){min-width:0;}
#view-guided #guided-content .csp-s100{min-width:0;overflow-wrap:anywhere;font-size:12px;line-height:1.45;}
#view-guided #guided-content .csp-s101{margin-left:auto;}
#view-guided #guided-content .csp-s098{padding:7px 0;}
#view-guided #guided-content .csp-s103{font-size:11px;line-height:1.4;}
#view-guided #guided-content .explain-panel summary.csp-s032{
  min-height:44px;padding:8px 2px;display:flex;align-items:center;justify-content:space-between;gap:10px;
  list-style:none;font-size:12px;line-height:1.4;border-radius:5px;
}
#view-guided #guided-content .explain-panel summary.csp-s032::-webkit-details-marker{display:none;}
#view-guided #guided-content .explain-panel summary.csp-s032::after{
  content:'›';font-size:17px;font-weight:800;line-height:1;transition:transform .14s ease;
}
#view-guided #guided-content .explain-panel details[open]>summary.csp-s032::after{transform:rotate(90deg);}
#view-guided #guided-content .explain-panel summary.csp-s032:focus-visible{
  outline:2px solid #19D3FF;outline-offset:2px;box-shadow:0 0 0 3px rgba(25,211,255,.16);
}
#view-guided #guided-content>.fd>.csp-s088{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;
  margin-top:14px;padding-top:12px;border-top:1px solid rgba(90,180,210,.14);
}
#view-guided #guided-content>.fd>.csp-s088>.btn-secondary{
  width:auto;min-width:0;margin:0;padding:8px 10px;
}
#view-guided #guided-content>.fd>.csp-s088>.csp-s089{width:auto;}
#view-guided #guided-hypo-inline:not(:empty){margin-top:14px;padding-top:12px;}
#view-guided #guided-hypo-inline:not(:empty)+.trace-panel{margin-top:12px;}
#view-guided #guided-content .trace-measure-k{font-size:10.5px;}
#view-guided #guided-content .trace-measure-t{font-size:13.5px;line-height:1.4;}
#view-guided #guided-content .trace-measure-d{font-size:12.5px;line-height:1.6;}
@media(max-width:520px){
  #view-guided #guided-content .q-card{padding:15px 14px 14px;}
  #view-guided #guided-content .q-text{font-size:18px;}
  #view-guided #guided-content>.fd>.csp-s088{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(min-width:1180px) and (max-width:1499px){
  .plcr-s7300 .plcr-face{grid-template-columns:minmax(0,1fr) 64px;gap:6px;padding:8px;}
  .plcr-s7400 .plcr-face{grid-template-columns:minmax(0,1fr) 74px;gap:8px;padding:10px;}
}
@media(hover:hover) and (pointer:fine){
  #view-guided :is(.ans-btn,.btn-primary,.btn-secondary,.btn-guided-back):not(:disabled):hover{border-color:var(--brand-br);box-shadow:0 7px 18px rgba(0,0,0,.18),inset 0 0 0 1px rgba(25,211,255,.08);transform:translateY(-1px);}
  #view-guided .ans-btn:not(:disabled):hover{background-color:var(--brand-lt);}
  #view-guided .ans-btn.skip:not(:disabled):hover{background-color:var(--bg3);border-color:var(--txt3);}
  #view-guided :is(.ans-btn,.btn-primary,.btn-secondary,.btn-guided-back):not(:disabled):active{transform:translateY(0);box-shadow:inset 0 2px 5px rgba(0,0,0,.28);}
  .cpu-control-zone .led-opt:not(:disabled):hover{
    border-color:#55B6D0;background-color:#123243;color:#F1FBFF;
    box-shadow:0 5px 12px rgba(0,0,0,.2);transform:translateY(-1px);
  }
  .cpu-control-zone .led-opt.sel:not(:disabled):hover{background-color:#104055;color:#F2FBFF;box-shadow:inset 0 0 0 1px rgba(25,211,255,.13),0 5px 12px rgba(0,0,0,.2);}
  .cpu-control-zone .led-opt:not(:disabled):active{transform:translateY(0);box-shadow:inset 0 3px 7px rgba(0,0,0,.58),inset 0 0 0 1px rgba(25,211,255,.1);transition-duration:.06s;}
  .plcr-s7300 .plcr-led-control:hover{background-color:rgba(25,211,255,.055);box-shadow:inset 2px 0 0 rgba(25,211,255,.45);}
  .boj-update-banner-reload:not(:disabled):hover{background:#7DE9FF;border-color:#7DE9FF;box-shadow:0 6px 16px rgba(25,211,255,.16);transform:translateY(-1px);}
  .boj-update-banner-dismiss:not(:disabled):hover{background:#132532;border-color:#6B8DA0;color:#F2F8FC;transform:translateY(-1px);}
  #view-report :is(.sev-opt,.estado-opt)[aria-pressed="false"]:hover{border-color:var(--brd2);background:var(--bg2);color:var(--txt2);}
  .btn-primary:not(:disabled):hover,.hero-cta:not(:disabled):hover,
  .li-goto:not(:disabled):hover,.pro-upgrade-btn:not(:disabled):hover,
  .rb-btn:not(:disabled):hover,.modal.modal-info .modal-btn:not(:disabled):hover{
    filter:brightness(1.08) saturate(1.04);
    transform:translateY(-1px);
    border-color:rgba(220,250,255,.46);
    box-shadow:0 16px 32px rgba(0,174,239,.27),inset 0 1px 0 rgba(255,255,255,.38);
  }
  .btn-secondary:not(:disabled):hover,.btn-guided-back:not(:disabled):hover,
  .exp-btn:not(:disabled):hover,.license-actions button:not(:disabled):hover,
  .home-license-compact .lcp-btn:not(:disabled):hover,.app-footer-link:hover{
    transform:translateY(-1px);
    border-color:rgba(25,211,255,.62);
    background:linear-gradient(180deg,rgba(19,59,76,.90),rgba(7,29,42,.94));
    color:#F1FAFF;
    box-shadow:0 11px 24px rgba(0,0,0,.18),inset 0 1px 0 rgba(255,255,255,.05);
  }
  .dc:not(.locked):hover,.ans-btn:not(:disabled):hover,.case-hdr:hover,.kb-hdr:hover{
    border-color:var(--l28-border-strong);
    box-shadow:0 11px 26px rgba(0,0,0,.20),inset 0 1px 0 rgba(255,255,255,.04);
  }
}
#view-guided :is(.ans-btn,.btn-primary,.btn-secondary,.btn-guided-back):focus-visible{outline:2px solid #19D3FF;outline-offset:2px;box-shadow:0 0 0 3px rgba(25,211,255,.18);}
@media(any-pointer:coarse),(hover:none){
  #view-guided :is(.ans-btn,.btn-primary,.btn-secondary,.btn-guided-back){min-height:50px;}
  #view-guided .ans-btn:not(:disabled):hover{border-color:#31566A;background-color:#071923;box-shadow:0 2px 7px rgba(0,0,0,.18);}
  #view-guided .ans-btn.skip:not(:disabled):hover{border-color:#3B5665;background-color:#081720;}
  #view-guided .ans-btn:not(:disabled):active{box-shadow:inset 0 2px 5px rgba(0,0,0,.28);}
  #view-guided .btn-primary:hover{background:var(--brand);}
  #view-guided :is(.btn-secondary,.btn-guided-back):hover{background:transparent;border-color:var(--brd2);color:var(--txt2);}
  .cpu-control-zone .led-opt{min-height:48px;}
  .cpu-control-zone .led-opt:hover{transform:none;}
  .cpu-control-zone .led-opt:not(:disabled):active{box-shadow:inset 0 3px 8px rgba(0,0,0,.62),inset 0 0 0 1px rgba(25,211,255,.12);}
}
@media(prefers-reduced-motion:reduce){
  #view-guided :is(.ans-btn,.btn-primary,.btn-secondary,.btn-guided-back):hover,
  #view-guided :is(.ans-btn,.btn-primary,.btn-secondary,.btn-guided-back):active,
  .cpu-control-zone .led-opt:hover,.cpu-control-zone .led-opt:active{transform:none!important;}
}
@media(max-width:480px){
  .plcr-chassis{padding-right:0;}
  .plcr-chassis::before{right:0;}
  .plcr-chassis::after,.plcr-vents{display:none;}
  .plcr-face,.plcr-s7300 .plcr-face,.plcr-s7400 .plcr-face{grid-template-columns:minmax(0,1fr);gap:10px;padding:10px;}
  .plcr-top{height:29px;}
  .plcr-base{height:auto;min-height:44px;padding:7px 10px;}
  .plcr-mode{padding:8px;}
}

/* Lote 18 — actualización PWA recuperable y jerarquía de lectura técnica. */
body:has(.sidebar.open) .boj-update-banner{opacity:0;pointer-events:none;}
#view-guided .final-result-card{
  padding:18px;border-left-width:5px;border-radius:10px;
  background-image:linear-gradient(145deg,rgba(25,211,255,.055),transparent 34%);
  box-shadow:0 14px 30px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.025);
}
#view-guided .final-top{gap:14px;margin-bottom:15px;}
#view-guided .final-title{font-size:clamp(18px,2vw,21px);line-height:1.22;letter-spacing:-.01em;}
#view-guided .final-sub{font-size:12px;line-height:1.5;}
#view-guided .final-confidence{min-width:76px;padding:9px;border-radius:8px;}
#view-guided .final-confidence span{font-size:21px;}
#view-guided .final-confidence small{font-size:9.5px;}
#view-guided .final-action-box{padding:13px 14px;border-radius:8px;margin-bottom:11px;}
#view-guided .final-action-t{font-size:15px;line-height:1.4;}
#view-guided .final-action-d,#view-guided .final-why{font-size:13px;line-height:1.6;}
#view-guided .final-stats{font-size:11px;line-height:1.5;}
#view-guided .rfx-section{padding:15px 16px;border-radius:9px;margin-bottom:11px;}
#view-guided .rfx-k{font-size:11.5px;margin-bottom:9px;}
#view-guided .rfx-list{font-size:13px;line-height:1.65;}
#view-guided .rfx-list li{margin:5px 0;}

#view-report .form-label{font-size:11.5px;line-height:1.4;margin-bottom:6px;}
#view-report .form-section{font-size:10.5px;line-height:1.4;margin-bottom:12px;}
#view-report :is(.form-input,.sev-opt,.estado-opt){min-height:44px;}
#view-report .form-textarea{min-height:76px;}
#view-report :is(.sev-opt,.estado-opt):focus-visible{outline:2px solid #19D3FF;outline-offset:2px;box-shadow:0 0 0 3px rgba(25,211,255,.16);}

@media(max-width:520px){
  .boj-update-banner{
    right:max(12px,env(safe-area-inset-right,0px));
    bottom:calc(var(--bh,56px) + max(14px,env(safe-area-inset-bottom,0px)));
  }
  .boj-update-banner-actions{grid-template-columns:minmax(0,1fr);}
  .boj-update-banner.is-collapsed .boj-update-banner-actions{display:block;}
  #view-guided .final-result-card{padding:15px;}
  #view-guided .final-confidence{min-width:70px;}
}
@media(prefers-reduced-motion:reduce){
  .boj-update-banner,.boj-update-banner-reload,.boj-update-banner-dismiss{transition:none!important;}
  .boj-update-banner-reload:hover,.boj-update-banner-dismiss:hover{transform:none!important;}
}

/* Lote 20 — cierre visual del diagnóstico. Sólo presentación en pantalla:
   preserva el resultado canónico, el contenido del informe y la impresión. */
@media screen{
  #view-hypo .csp-s135{
    border-color:#28495B;border-left:4px solid #19D3FF;border-radius:10px;
    background-image:linear-gradient(145deg,rgba(25,211,255,.045),transparent 36%);
  }
  #view-hypo .csp-s136{flex-wrap:wrap;gap:8px;min-width:0;}
  #view-hypo .hypothesis-confidence-value{font-size:22px;line-height:1.2;overflow-wrap:anywhere;}
  #view-hypo .hypo-card{
    border-color:#28495B;border-radius:10px;
    box-shadow:0 9px 22px rgba(0,0,0,.16),inset 0 1px 0 rgba(255,255,255,.025);
  }
  #view-hypo .hc-hdr{align-items:flex-start;min-width:0;padding:15px 16px;}
  #view-hypo .hc-body{min-width:0;}
  #view-hypo .hc-title{font-size:15px;line-height:1.45;overflow-wrap:anywhere;}
  #view-hypo .hc-cat{font-size:11.5px;line-height:1.45;overflow-wrap:anywhere;}
  #view-hypo .hc-pct{
    max-width:38%;font-size:16px;line-height:1.35;text-align:right;
    overflow-wrap:anywhere;font-variant-numeric:tabular-nums;
  }
  #view-hypo .hc-bar-wrap{padding:0 16px 14px;}
  #view-hypo .hc-detail{padding:15px 16px;background:linear-gradient(180deg,rgba(15,38,52,.84),rgba(9,27,39,.9));}
  #view-hypo .hc-detail-title{font-size:11px;line-height:1.4;margin-bottom:8px;}
  #view-hypo .hc-detail-text,#view-hypo .hc-actions{font-size:13px;line-height:1.65;}
  #view-hypo .csp-s138{min-width:0;font-size:13px;line-height:1.6;gap:8px;margin-bottom:6px;}
  #view-hypo .csp-s140{min-width:0;overflow-wrap:anywhere;}

  #view-guided #guided-content>.fd:has(>.final-result-card)>.action-row{
    display:grid;grid-template-columns:minmax(0,1fr) minmax(160px,.42fr);gap:8px;
  }
  #view-guided #guided-content>.fd:has(>.final-result-card)>.action-row>button{
    width:100%;min-width:0;margin:0;white-space:normal;overflow-wrap:anywhere;
  }
  #view-guided .result-details>summary,#view-hypo .result-details>summary{
    min-height:44px;padding:11px 13px;font-size:13px;line-height:1.4;
  }
  #view-guided .result-details>summary:focus,#view-hypo .result-details>summary:focus,
  #view-guided .result-details>summary:focus-visible,#view-hypo .result-details>summary:focus-visible{
    outline:2px solid #19D3FF;outline-offset:-3px;
    box-shadow:inset 0 0 0 2px #19D3FF,inset 0 0 0 5px rgba(25,211,255,.12);
  }

  #view-report #report-content>.fd>.rep-intro{
    padding:16px;border-left:4px solid #19D3FF;border-radius:10px;
    background-image:linear-gradient(135deg,rgba(25,211,255,.09),rgba(25,211,255,.015) 44%,transparent 72%);
    box-shadow:0 9px 22px rgba(0,0,0,.15),inset 0 1px 0 rgba(255,255,255,.025);
  }
  #view-report .rep-badge{font-size:10.5px;line-height:1.4;margin-bottom:6px;}
  #view-report .rep-num{font-size:clamp(22px,2.2vw,26px);line-height:1.2;overflow-wrap:anywhere;}
  #view-report #report-content>.fd>.panel.csp-s151{padding:17px;border-color:#28495B;border-radius:10px;}
  #view-report .form-section{
    display:flex;align-items:center;gap:8px;font-size:12px;line-height:1.4;
    color:var(--txt);letter-spacing:.08em;
  }
  #view-report .form-section::before{
    content:"";width:3px;height:14px;flex:0 0 3px;border-radius:999px;background:#19D3FF;
    box-shadow:0 0 8px rgba(25,211,255,.24);
  }
  #view-report .form-divider{margin:18px 0 14px;background:#244253;}
  #view-report [data-report-action="stop-timer"]{min-width:44px;min-height:44px;padding:8px 10px;}
  #view-report .exp-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;}
  #view-report .exp-btn{width:100%;min-width:0;white-space:normal;overflow-wrap:anywhere;}
}
@media screen and (max-width:520px){
  #view-guided .final-disputed-list{grid-template-columns:minmax(0,1fr);}
  #view-hypo .hc-hdr{display:grid;grid-template-columns:28px minmax(0,1fr);gap:8px 10px;padding:14px;}
  #view-hypo .hc-rank{grid-column:1;grid-row:1/3;width:28px;}
  #view-hypo .hc-body{grid-column:2;grid-row:1;}
  #view-hypo .hc-pct{grid-column:2;grid-row:2;justify-self:start;max-width:100%;text-align:left;}
  #view-hypo .hc-bar-wrap,#view-hypo .hc-detail{padding-inline:14px;}
  #view-guided #guided-content>.fd:has(>.final-result-card)>.action-row{grid-template-columns:minmax(0,1fr);}
  #view-report #report-content>.fd>.panel.csp-s151{padding:15px 14px;}
  #view-report .exp-row{grid-template-columns:repeat(2,minmax(0,1fr));}
}

/* Lote 27 — experiencia inicial de acceso.
   Capa deliberadamente visual: conserva IDs, acciones, OAuth, OTP, Turnstile
   y reglas de licencia; sólo moderniza la jerarquía y los estados del gate. */
#boj-email-gate>.teb-overlay{
  background:
    radial-gradient(circle at 18% 8%,rgba(0,174,239,.16),transparent 34%),
    radial-gradient(circle at 88% 88%,rgba(34,197,94,.07),transparent 28%),
    linear-gradient(rgba(25,211,255,.025) 1px,transparent 1px),
    linear-gradient(90deg,rgba(25,211,255,.025) 1px,transparent 1px),
    linear-gradient(145deg,#06131d 0%,#071923 48%,#050c13 100%);
  background-size:auto,auto,32px 32px,32px 32px,auto;
  scrollbar-gutter:stable both-edges;
}
#boj-email-gate .teb-access-card{
  position:relative;
  box-sizing:border-box;
  width:min(100%,480px);
  max-width:480px;
  max-height:none;
  overflow:visible;
  padding:24px 28px 22px;
  border:1px solid var(--brd2,#385068);
  border-radius:14px;
  background-color:var(--bg2,#121D28);
  background-image:
    linear-gradient(180deg,rgba(13,31,43,.96),rgba(6,20,30,.96)),
    repeating-linear-gradient(90deg,rgba(25,211,255,.025) 0 1px,transparent 1px 28px);
  box-shadow:0 28px 80px rgba(0,0,0,.52),inset 0 1px 0 rgba(255,255,255,.04);
  text-align:left;
}
#boj-email-gate .teb-access-card::before{
  content:"";
  position:absolute;
  inset:-1px 20px auto;
  height:2px;
  border-radius:999px;
  background:linear-gradient(90deg,transparent,#19D3FF 28%,#22C55E 72%,transparent);
  opacity:.8;
}
#boj-email-gate .teb-brand-lockup{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  width:max-content;
  margin:0 auto 18px;
}
#boj-email-gate .teb-brand-mark{
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  border:1px solid rgba(25,211,255,.42);
  border-radius:10px;
  background:linear-gradient(145deg,rgba(0,174,239,.15),rgba(3,14,23,.86));
  box-shadow:0 8px 22px rgba(0,174,239,.12),inset 0 1px 0 rgba(255,255,255,.05);
}
#boj-email-gate .teb-brand-mark img{display:block;width:34px;height:34px;object-fit:contain;}
#boj-email-gate .teb-brand-copy{display:flex;flex-direction:column;gap:2px;line-height:1;}
#boj-email-gate .teb-brand-copy strong{
  color:#EAF6FF;font-size:15px;font-weight:900;letter-spacing:.025em;
}
#boj-email-gate .teb-brand-copy small{
  color:#19D3FF;font-size:8px;font-weight:900;letter-spacing:.16em;
}
#boj-email-gate .teb-title{
  margin:0 0 7px;
  color:var(--txt,#EAF3FB);
  font-size:22px;
  line-height:1.25;
  letter-spacing:-.015em;
  text-align:center;
}
#boj-email-gate .teb-msg{
  max-width:390px;
  margin:0 auto 18px;
  color:var(--txt2,#AABCCD);
  font-size:13px;
  line-height:1.55;
  text-align:center;
}
#boj-email-gate .teb-auth-methods{display:flex;flex-direction:column;min-width:0;}
#boj-email-gate .teb-google-identity:not([hidden]){
  display:flex;justify-content:center;align-items:center;width:100%;
  min-height:44px;margin:0 auto 8px;
}
#boj-email-gate .teb-google-identity[hidden]{display:none;}
#boj-email-gate .teb-google-identity.teb-google-loading{visibility:hidden;}
#boj-email-gate .teb-google-frame{display:block;max-width:100%;border:0;background:transparent;}
#boj-email-gate .teb-google-button{
  position:relative;
  width:100%;
  min-height:48px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:12px;
  padding:0 46px;
  border:1px solid #747775;
  border-radius:8px;
  background:#fff;
  color:#1F1F1F;
  font-family:Arial,sans-serif;
  font-size:14px;
  font-weight:600;
  line-height:20px;
  letter-spacing:.01em;
  cursor:pointer;
  transition:background .15s,border-color .15s,box-shadow .15s,transform .1s;
}
#boj-email-gate .teb-google-button:hover:not(:disabled){
  background:#F8FAFF;
  border-color:#5F6368;
  box-shadow:0 2px 7px rgba(0,0,0,.22);
}
#boj-email-gate .teb-google-button:active:not(:disabled){transform:translateY(1px);}
#boj-email-gate .teb-google-button:disabled{cursor:wait;opacity:.78;}
#boj-email-gate .teb-google-button.teb-google-fallback{
  min-height:30px;padding:3px 10px;border-color:transparent;
  background:transparent;color:#A6C3D3;font-size:11px;font-weight:500;
}
#boj-email-gate .teb-google-button.teb-google-fallback:hover:not(:disabled){
  background:rgba(0,175,225,.08);border-color:rgba(0,175,225,.3);
  box-shadow:none;
}
#boj-email-gate .teb-google-fallback .teb-google-mark{display:none;}
#boj-email-gate .teb-google-mark{
  position:absolute;
  left:14px;
  width:20px;
  height:20px;
  object-fit:contain;
}
#boj-email-gate .teb-google-hint{
  margin:7px 4px 0;
  color:#839BAC;
  font-size:10.5px;
  line-height:1.4;
  text-align:center;
}
#boj-email-gate .teb-auth-divider{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);
  align-items:center;
  gap:12px;
  margin:16px 0 14px;
  color:#87A2B3;
  font-size:11px;
  line-height:1.3;
  text-align:center;
}
#boj-email-gate .teb-auth-divider::before,
#boj-email-gate .teb-auth-divider::after{content:"";height:1px;background:#294657;}
#boj-email-gate .teb-label{
  margin:0 0 7px;
  color:#B9CBD7;
  font-size:11.5px;
  font-weight:800;
  line-height:1.35;
  letter-spacing:.01em;
  text-transform:none;
}
#boj-email-gate .teb-field-wrap{position:relative;min-width:0;margin:0 0 8px;}
#boj-email-gate .teb-field-icon{
  color:#68DFFF;
  display:inline-flex;
  align-items:center;
  justify-content:center;
}
#boj-email-gate .teb-field-wrap>.teb-field-icon{
  position:absolute;
  z-index:1;
  left:15px;
  top:50%;
  transform:translateY(-50%);
  pointer-events:none;
}
#boj-email-gate .teb-svg-icon{
  width:20px;
  height:20px;
  display:block;
  fill:none;
  stroke:currentColor;
  stroke-width:1.8;
  stroke-linecap:round;
  stroke-linejoin:round;
}
#boj-email-gate .teb-input{
  min-height:50px;
  margin:0;
  padding:12px 14px 12px 46px;
  border:1px solid #4D7184;
  border-radius:9px;
  background:#07131D;
  color:#EAF6FF;
  font-size:16px;
  line-height:1.4;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025);
}
#boj-email-gate .teb-input::placeholder{color:#667E8E;opacity:1;}
#boj-email-gate .teb-input:hover{border-color:#63899C;}
#boj-email-gate .teb-input:focus{
  border-color:#19D3FF;
  box-shadow:0 0 0 3px rgba(25,211,255,.15),inset 0 1px 0 rgba(255,255,255,.03);
}
#boj-email-gate .teb-input[aria-invalid="true"]{border-color:#FF6868;}
#boj-email-gate .teb-email-note{
  margin:0 3px 13px;
  color:#91A9B8;
  font-size:10.8px;
  font-style:normal;
  line-height:1.45;
  text-align:left;
}
#boj-email-gate .teb-turnstile-prompt{
  margin:0 2px 7px;
  color:#91A9B8;
  font-size:10.8px;
  line-height:1.4;
}
#boj-email-gate .teb-turnstile{margin:0 0 12px;}
#boj-email-gate .teb-btn-primary,
#boj-email-gate .teb-card .teb-btn-secondary{
  position:relative;
  min-height:48px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:9px;
  padding:11px 18px;
  border-radius:8px;
  font-size:13.5px;
  line-height:1.35;
  white-space:normal;
}
#boj-email-gate .teb-btn-primary{
  margin:0;
  border:1px solid rgba(174,237,255,.22);
  background-color:var(--brand,#00AEEF);
  background-image:linear-gradient(180deg,#18C2F3,#0096CF);
  box-shadow:0 10px 24px rgba(0,174,239,.20),inset 0 1px 0 rgba(255,255,255,.18);
}
#boj-email-gate .teb-btn-primary:hover:not(:disabled){
  opacity:1;
  background-color:#00A2DB;
  background-image:linear-gradient(180deg,#36D0FA,#00A2DB);
  box-shadow:0 12px 28px rgba(0,174,239,.28),inset 0 1px 0 rgba(255,255,255,.2);
}
#boj-email-gate .teb-button-icon{
  width:20px;
  height:20px;
  flex:0 0 20px;
  display:inline-grid;
  place-items:center;
  color:currentColor;
}
#boj-email-gate :is(.teb-btn-primary,.teb-btn-secondary,.teb-google-button).is-busy::after{
  content:"";
  position:absolute;
  right:14px;
  width:14px;
  height:14px;
  border:2px solid currentColor;
  border-right-color:transparent;
  border-radius:50%;
  animation:teb-access-spin .75s linear infinite;
}
#boj-email-gate :is(.teb-btn-primary,.teb-btn-secondary).is-busy .teb-button-icon{opacity:.42;}
#boj-email-gate .teb-google-button.is-busy .teb-google-mark{opacity:.46;}
@keyframes teb-access-spin{to{transform:rotate(360deg);}}
#boj-email-gate .teb-result{
  min-height:0;
  margin:11px 0 0;
  padding:9px 11px;
  font-size:11.5px;
  line-height:1.45;
  text-align:left;
}
#boj-email-gate .teb-result:not(:empty){display:block;}
#boj-email-gate .teb-access-footer{
  margin:17px 0 0;
  padding:14px 0 0;
  border-top:1px solid rgba(77,113,132,.28);
  text-align:center;
}
#boj-email-gate .teb-legal-consent{
  margin:0 auto 7px;
  max-width:390px;
  color:#7F97A7;
  font-size:9.8px;
  line-height:1.45;
}
#boj-email-gate .teb-legal-links{gap:3px;margin:0 0 8px;}
#boj-email-gate .teb-legal-links .teb-legal-link{
  min-height:28px;
  padding:4px 6px;
  border:0;
  color:#9BB2C1;
  font-size:10px;
  text-decoration:underline;
  text-decoration-color:rgba(155,178,193,.34);
  text-underline-offset:3px;
}
#boj-email-gate .teb-legal-links .teb-legal-link:hover{color:#EAF6FF;}
#boj-email-gate .teb-learn{font-size:10.5px;color:#69DFFF;}
#boj-email-gate .teb-otp-identity{
  display:grid;
  grid-template-columns:22px minmax(0,1fr) auto;
  align-items:center;
  gap:9px;
  min-height:48px;
  margin:0 0 16px;
  padding:4px 5px 4px 13px;
  border:1px solid #315367;
  border-radius:9px;
  background:rgba(4,17,26,.58);
}
#boj-email-gate .teb-otp-email{
  min-width:0;
  margin:0;
  color:#D9F5FF;
  font-size:12.5px;
  font-weight:700;
  line-height:1.35;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
#boj-email-gate .teb-email-change{
  min-height:38px;
  padding:7px 10px;
  border:0;
  border-radius:7px;
  background:transparent;
  color:#69DFFF;
  font:700 11px/1.2 inherit;
  cursor:pointer;
}
#boj-email-gate .teb-email-change:hover{background:rgba(0,174,239,.10);color:#BFEFFF;}
#boj-email-gate .teb-code-field{margin-bottom:12px;}
#boj-email-gate .teb-code-field .teb-input{
  padding-inline:14px;
  text-align:center;
  font-size:23px;
  font-variant-numeric:tabular-nums;
  letter-spacing:.24em;
}
#boj-email-gate .teb-resend-zone{
  margin:16px 0 0;
  padding:14px 0 0;
  border-top:1px solid rgba(77,113,132,.28);
}
#boj-email-gate .gate-otp-actions{display:block;margin:0;}
#boj-email-gate .teb-card .gate-otp-actions .teb-btn-secondary{
  width:100%;
  margin:0;
  border-color:#4D7184;
  background:rgba(5,19,29,.72);
  color:#CDEBFF;
}
#boj-email-gate .teb-cooldown{margin:8px 0 0;font-size:10.8px;line-height:1.4;}
#boj-email-gate .teb-state-icon{
  width:50px;
  height:50px;
  display:grid;
  place-items:center;
  margin:0 auto 14px;
  border:1px solid rgba(250,204,21,.48);
  border-radius:14px;
  background:rgba(250,204,21,.09);
  color:#FFE06A;
}
#boj-email-gate .teb-state-icon .teb-svg-icon{width:26px;height:26px;}
#boj-email-gate :is(button,input,a):focus-visible{
  outline:2px solid #19D3FF;
  outline-offset:3px;
  box-shadow:0 0 0 4px rgba(25,211,255,.13);
}
@media(max-width:520px){
  #boj-email-gate>.teb-overlay{padding:12px;scrollbar-gutter:auto;}
  #boj-email-gate .teb-access-card{
    width:100%;
    padding:20px 18px 18px;
    border-radius:12px;
  }
  #boj-email-gate .teb-brand-lockup{margin-bottom:15px;}
  #boj-email-gate .teb-title{font-size:20px;}
  #boj-email-gate .teb-msg{font-size:12.5px;margin-bottom:16px;}
  #boj-email-gate .teb-google-button{padding-inline:44px;}
  #boj-email-gate .teb-auth-divider{margin-block:14px 12px;}
  #boj-email-gate .teb-access-footer{margin-top:14px;padding-top:12px;}
}
@media(max-width:359px){
  #boj-email-gate>.teb-overlay{padding-inline:10px;}
  #boj-email-gate .teb-access-card{padding-inline:14px;}
  #boj-email-gate .teb-otp-identity{grid-template-columns:20px minmax(0,1fr);padding-right:10px;}
  #boj-email-gate .teb-email-change{grid-column:1/-1;min-height:40px;margin-top:-2px;}
  #boj-email-gate .teb-code-field .teb-input{font-size:21px;letter-spacing:.18em;}
}
@media(max-height:700px){
  #boj-email-gate .teb-access-card{margin-block:0;}
}
@media(prefers-reduced-motion:reduce){
  #boj-email-gate :is(button,input,a){transition:none!important;}
  #boj-email-gate :is(.teb-btn-primary,.teb-btn-secondary,.teb-google-button).is-busy::after{animation-duration:1.5s;}
}

/* Lote 28 — sistema visual unificado de la aplicación.
   Toma el gate de acceso L27 como referencia sin alterar geometría, datos ni
   decisiones del producto. La capa queda limitada a pantalla y preserva los
   colores semánticos de seguridad, impresión y exportación. */
@media screen{
  body{
    --l28-surface:rgba(8,27,39,.94);
    --l28-surface-strong:rgba(6,22,32,.98);
    --l28-surface-soft:rgba(13,38,52,.82);
    --l28-border:rgba(45,164,197,.30);
    --l28-border-strong:rgba(25,211,255,.48);
    --l28-highlight:rgba(255,255,255,.045);
    --l28-shadow:0 18px 42px rgba(0,0,0,.28),inset 0 1px 0 var(--l28-highlight);
    background:
      radial-gradient(circle at 13% 2%,rgba(0,174,239,.14),transparent 31%),
      radial-gradient(circle at 89% 88%,rgba(34,197,94,.055),transparent 27%),
      linear-gradient(rgba(25,211,255,.022) 1px,transparent 1px),
      linear-gradient(90deg,rgba(25,211,255,.022) 1px,transparent 1px),
      linear-gradient(145deg,#06131d 0%,#071923 48%,#050d14 100%);
    background-size:auto,auto,32px 32px,32px 32px,auto;
  }

  .hdr{
    background:
      linear-gradient(180deg,rgba(7,25,36,.94),rgba(4,16,25,.94)),
      linear-gradient(90deg,rgba(25,211,255,.025) 1px,transparent 1px);
    background-size:auto,32px 32px;
    border-bottom-color:var(--l28-border);
    box-shadow:0 12px 34px rgba(0,0,0,.28),inset 0 -1px 0 rgba(25,211,255,.035);
  }
  .hdr-logo,.side-logo{
    border-color:var(--l28-border-strong);
    background:linear-gradient(145deg,rgba(0,174,239,.16),rgba(2,13,21,.96));
    box-shadow:0 8px 22px rgba(0,0,0,.24),inset 0 1px 0 rgba(255,255,255,.07);
  }
  .hdr-title,.side-title{letter-spacing:-.015em;text-shadow:0 1px 14px rgba(0,174,239,.10);}
  .hdr-action-license,.hdr-action,.lang-switcher,.cpu-status{
    border-color:var(--l28-border);
    background:linear-gradient(180deg,rgba(15,42,56,.82),rgba(5,20,30,.90));
    box-shadow:inset 0 1px 0 rgba(255,255,255,.035),0 7px 18px rgba(0,0,0,.16);
  }

  .panel,.hero-status,.pro-upgrade-box,.q-card,.hypo-card,.case-card,.kb-card,
  .secondary-panel,.result-details,.trace-panel,.final-result-card,.explain-panel,
  .engine-stats-panel{
    border-color:var(--l28-border);
    border-radius:11px;
    background-color:var(--l28-surface);
    background-image:
      linear-gradient(145deg,rgba(25,211,255,.035),transparent 38%),
      linear-gradient(180deg,var(--l28-surface),var(--l28-surface-strong));
    box-shadow:var(--l28-shadow);
  }
  .panel,.hero-status,.pro-upgrade-box,.q-card,.final-result-card{isolation:isolate;}
  .ph{
    padding-block:10px;
    border-bottom-color:rgba(45,164,197,.22);
    background:
      linear-gradient(90deg,rgba(25,211,255,.055),transparent 42%),
      linear-gradient(180deg,rgba(18,48,63,.84),rgba(7,25,36,.88));
    box-shadow:inset 0 1px 0 rgba(255,255,255,.035);
  }
  .pt.pt-main,.hs-label,.zone-label,.final-k,.final-action-k,.secondary-title,
  .form-section,.rep-badge{
    color:#CFEFFF;
    letter-spacing:.095em;
  }
  .panel-sub{color:#91ACBC;font-weight:560;}

  .dsel,.symptom-search,.form-input,.form-textarea,.notes-ta{
    border-color:rgba(77,135,158,.62);
    border-radius:9px;
    background-color:rgba(3,17,26,.86);
    box-shadow:inset 0 2px 8px rgba(0,0,0,.24),inset 0 1px 0 rgba(255,255,255,.025);
    transition:border-color .15s,box-shadow .15s,background-color .15s;
  }
  .symptom-search:focus-within,.dsel:focus-visible,
  .form-input:not([aria-invalid="true"]):focus-visible,
  .form-textarea:not([aria-invalid="true"]):focus-visible,.notes-ta:focus-visible{
    border-color:#55DDFC;
    background-color:rgba(4,22,32,.96);
    outline:0;
    box-shadow:0 0 0 3px rgba(25,211,255,.16),inset 0 2px 8px rgba(0,0,0,.24);
  }

  .btn-primary,.hero-cta,.li-goto,.pro-upgrade-btn,.rb-btn,
  .modal.modal-info .modal-btn{
    border:1px solid rgba(198,243,255,.22);
    border-radius:9px;
    background-color:#039BCB;
    background-image:linear-gradient(180deg,#18C4EF 0%,#039BCB 52%,#058EBC 100%);
    color:#031820;
    font-weight:850;
    letter-spacing:.01em;
    text-shadow:0 1px 0 rgba(255,255,255,.16);
    box-shadow:0 12px 26px rgba(0,174,239,.21),inset 0 1px 0 rgba(255,255,255,.30);
    transition:transform .14s,box-shadow .14s,filter .14s,border-color .14s;
  }
  .btn-secondary,.btn-guided-back,.exp-btn,.license-actions button,
  .home-license-compact .lcp-btn,.app-footer-link{
    border-color:rgba(64,142,169,.48);
    border-radius:9px;
    background:linear-gradient(180deg,rgba(17,48,63,.86),rgba(5,23,34,.92));
    color:#CBE8F6;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.035),0 7px 17px rgba(0,0,0,.13);
    transition:transform .14s,border-color .14s,background-color .14s,box-shadow .14s,color .14s;
  }
  #view-report .form-input[aria-invalid="true"],
  #view-report .form-textarea[aria-invalid="true"]{
    outline:0;
    border:1px solid var(--danger-br);
    background-color:rgba(35,11,17,.72);
    box-shadow:0 0 0 3px color-mix(in srgb,var(--danger-br) 28%,transparent),inset 0 2px 8px rgba(0,0,0,.24);
    transition:none;
  }
  .btn-primary:disabled,.hero-cta:disabled,.li-goto:disabled,
  .pro-upgrade-btn:disabled,.rb-btn:disabled,.modal.modal-info .modal-btn:disabled,
  .btn-secondary:disabled,.btn-guided-back:disabled,.exp-btn:disabled,
  .license-actions button:disabled,.home-license-compact .lcp-btn:disabled{
    cursor:not-allowed;
    opacity:.52;
    filter:saturate(.42);
    transform:none;
    box-shadow:none;
    transition:none;
  }
  .domain-chips .dchip,.phase-badge,.result-chip,.pro-feature-row span{
    border-color:rgba(55,144,174,.42);
    background:linear-gradient(180deg,rgba(13,44,59,.76),rgba(5,23,34,.84));
    box-shadow:inset 0 1px 0 rgba(255,255,255,.025);
  }
  .domain-chips .dchip.active{
    border-color:#28C9ED;
    background:linear-gradient(180deg,rgba(16,101,126,.70),rgba(8,55,72,.84));
    color:#F1FBFF;
    box-shadow:0 0 0 2px rgba(25,211,255,.09),inset 0 1px 0 rgba(255,255,255,.08);
  }

  .dc,.ans-btn,.case-hdr,.kb-hdr{
    border-color:rgba(56,131,157,.38);
    background-color:rgba(5,23,34,.88);
    background-image:linear-gradient(145deg,rgba(25,211,255,.045),transparent 42%);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.025),0 7px 18px rgba(0,0,0,.12);
  }
  .dc-ico,.ab-ico{
    box-shadow:inset 0 1px 0 rgba(255,255,255,.07),0 6px 16px rgba(0,0,0,.19);
  }
  .final-action-box,.q-rationale,.trace-measure,.rep-intro{
    border-radius:9px;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.025);
  }
  .result-details>summary{
    background:linear-gradient(180deg,rgba(15,42,56,.56),rgba(6,25,36,.66));
  }
  #view-guided .final-result-card{border-left-color:#19D3FF;}
  #view-report .form-row{grid-template-columns:repeat(2,minmax(0,1fr));}

  @media(min-width:1180px){
    .app-sidebar{
      background:
        radial-gradient(circle at 30% 0%,rgba(0,174,239,.12),transparent 27%),
        linear-gradient(rgba(25,211,255,.018) 1px,transparent 1px),
        linear-gradient(90deg,rgba(25,211,255,.018) 1px,transparent 1px),
        linear-gradient(180deg,#071722,#030b12);
      background-size:auto,32px 32px,32px 32px,auto;
      border-right-color:var(--l28-border);
      box-shadow:20px 0 50px rgba(0,0,0,.31),inset -1px 0 0 rgba(25,211,255,.035);
    }
    .side-brand{background:linear-gradient(180deg,rgba(13,41,55,.42),rgba(3,15,23,.20));}
    .side-nav .nb{
      width:calc(100% - 12px);
      border-radius:0 10px 10px 0;
      transition:background-color .15s,color .15s,border-color .15s,box-shadow .15s;
    }
    .side-nav .nb.active{
      background:linear-gradient(90deg,rgba(0,194,255,.23),rgba(0,174,239,.055));
      box-shadow:inset 0 1px 0 rgba(255,255,255,.035),0 7px 20px rgba(0,0,0,.12);
    }
    .side-lang,.side-license{
      border-color:var(--l28-border);
      border-radius:10px;
      background:linear-gradient(180deg,rgba(13,39,52,.78),rgba(4,19,29,.86));
      box-shadow:inset 0 1px 0 rgba(255,255,255,.035),0 8px 22px rgba(0,0,0,.16);
    }
  }
}

@media screen and (max-width:1179px){
  .panel,.hero-status,.pro-upgrade-box,.q-card,.hypo-card,.case-card,.kb-card,
  .secondary-panel,.result-details,.trace-panel,.final-result-card,.explain-panel,
  .engine-stats-panel{
    box-shadow:0 12px 28px rgba(0,0,0,.22),inset 0 1px 0 rgba(255,255,255,.035);
  }
  .cpu-home-head .dsel{max-width:none;}
}

@media screen and (max-width:520px){
  #view-report .form-row{grid-template-columns:minmax(0,1fr);}
}

@media screen and (prefers-reduced-motion:reduce){
  .btn-primary,.hero-cta,.li-goto,.pro-upgrade-btn,.rb-btn,
  .btn-secondary,.btn-guided-back,.exp-btn,.license-actions button,
  .home-license-compact .lcp-btn,.app-footer-link,.dc,.ans-btn,.case-hdr,.kb-hdr{
    transition:none!important;
    transform:none!important;
  }
}

/* Lote 29 — avisos de seguridad presentes pero discretos. El contenido
   canónico permanece íntegro y se revela bajo demanda con semántica nativa. */
@media screen{
  details.q-safety{
    margin-top:8px;padding:0;border:0;border-radius:0;background:transparent;
    color:var(--danger-t);font-size:12px;line-height:1.5;
  }
  details.q-safety>.q-safety-summary,
  details.rep-safety.report-form-action-safety>.rep-safety-k{
    min-height:32px;padding:4px 1px;display:flex;align-items:center;gap:8px;
    list-style:none;cursor:pointer;color:var(--danger-t);font-weight:850;
  }
  details.q-safety>.q-safety-summary::after,
  details.rep-safety.report-form-action-safety>.rep-safety-k::after{
    content:'›';margin-left:auto;color:currentColor;font-size:17px;line-height:1;
    transform:rotate(90deg);transition:transform .15s ease;
  }
  details.q-safety[open]>.q-safety-summary::after,
  details.rep-safety.report-form-action-safety[open]>.rep-safety-k::after{transform:rotate(-90deg);}
  details.q-safety>.q-safety-summary:focus-visible,
  details.rep-safety.report-form-action-safety>.rep-safety-k:focus-visible{
    outline:2px solid #7DE9FF;outline-offset:2px;border-radius:5px;
  }
  details.q-safety>.q-safety-body,
  details.rep-safety.report-form-action-safety>.rep-safety-body{
    gap:5px;margin:2px 0 3px;padding:7px 10px;
    border-left:1px solid rgba(90,180,210,.24);
    color:var(--txt2);background:transparent;
  }
  details.q-safety[open]>.q-safety-body,
  details.rep-safety.report-form-action-safety[open]>.rep-safety-body{display:grid;}
  details.q-safety>.q-safety-body>span{display:block;}
  details.rep-safety.report-form-action-safety{
    margin:5px 0 10px;border:0;background:transparent;color:var(--danger-t);
  }
  details.rep-safety.report-form-action-safety>.rep-safety-body .rep-safety-t{
    color:var(--txt2);font-size:12px;line-height:1.5;
  }
}

/* Lote 29 — densidad visual de controles secundarios en escritorio. */
@media screen and (min-width:1180px) and (hover:hover) and (pointer:fine){
  .cpu-control-zone .led-opt{min-height:34px;padding-block:3px;}
  .diagnostic-preparation-panel .prep-option{min-height:38px;padding-block:5px;}
  .app-footer .lg-footer-row{gap:5px;padding-block:3px;}
  .app-footer :is(.lg-footer-link,.app-footer-link){
    min-width:0;max-width:100%;min-height:32px;padding:4px 7px;border-radius:7px;
    font-size:9.5px;line-height:1.2;white-space:normal;overflow-wrap:anywhere;text-align:center;
  }
  .app-footer .lg-footer-link svg{width:10px;height:10px;}
  .app-footer .lg-footer-disclaimer{font-size:9.5px;line-height:1.4;margin-bottom:4px;}
}

/* Los controles se compactan sólo donde hay puntero preciso. En superficies
   táctiles conservan el objetivo de interacción accesible de 44 px. */
@media screen and (max-width:1179px),
       screen and (any-pointer:coarse),
       screen and (hover:none){
  .cpu-control-zone .led-opt,
  .diagnostic-preparation-panel .prep-option,
  .app-footer :is(.lg-footer-link,.app-footer-link),
  details.q-safety>.q-safety-summary,
  details.rep-safety.report-form-action-safety>.rep-safety-k{min-height:44px;}
}

@media screen and (prefers-reduced-motion:reduce){
  details.q-safety>.q-safety-summary::after,
  details.rep-safety.report-form-action-safety>.rep-safety-k::after{transition:none;}
}

/* Una impresión directa no debe omitir el contenido de seguridad que en la
   interfaz permanece plegado para reducir ruido visual. */
@media print{
  details.q-safety>.q-safety-body,
  details.rep-safety.report-form-action-safety>.rep-safety-body{display:block!important;}
}

/* CPU 319-3 PN/DP: imagen limpia y cinco LEDs funcionales del modelo. */
.plc319-photo{display:block;width:100%;max-width:340px;margin:0 auto;}
.plc319-figure{width:100%;margin:0;}
.plc319-device{
  position:relative;isolation:isolate;
  width:min(100%,300px);aspect-ratio:400/533;margin:0 auto;
  container-type:inline-size;
}
.plc319-image{
  display:block;width:100%;height:100%;object-fit:contain;
  user-select:none;pointer-events:none;
  filter:drop-shadow(0 14px 18px rgba(0,0,0,.52));
}
.plc319-mark-family,.plc319-led-label{
  position:absolute;z-index:3;
  font-family:"Arial Narrow","Liberation Sans Narrow",Arial,sans-serif;
  color:#d8e0e6;letter-spacing:.035em;line-height:1;
  text-shadow:0 1px 1px rgba(0,0,0,.9);
  white-space:nowrap;pointer-events:none;
}
.plc319-mark-family{
  left:24%;top:56%;font-size:clamp(11px,3.2vw,15px);
  line-height:1.12;letter-spacing:.08em;color:#cad3da;
}
.plc319-led-panel{
  position:absolute;z-index:4;
  left:12%;top:18%;width:31%;height:18%;
  display:grid;grid-template-rows:repeat(5,minmax(0,1fr));
  pointer-events:none;
}
.plc319-led-slot{
  display:flex;align-items:center;min-width:0;gap:1.45cqw;
  pointer-events:none;
}
.plc319-led-label{position:static;font-size:2.65cqw;font-weight:700;}
.plc319-photo .cpu-led{
  flex:0 0 auto;width:2.4cqw;height:2.85cqw;
  border-radius:2px;cursor:default;pointer-events:none;
  box-shadow:inset 0 1px 1px rgba(255,255,255,.08),inset 0 -1px 1px rgba(0,0,0,.75),0 0 0 1px rgba(0,0,0,.78);
}
.plc319-photo .cpu-led.off{
  background:linear-gradient(135deg,#aab5bd,#6b7780 65%,#4e5b65);
  border-color:#303b43;
  box-shadow:inset 0 1px 1px rgba(255,255,255,.45),inset 0 -1px 1px rgba(0,0,0,.4),0 0 0 1px rgba(15,22,28,.82);
}
.plc319-photo .cpu-led.g{box-shadow:inset 0 1px 1px rgba(255,255,255,.58),0 0 5px rgba(63,203,111,.75),0 0 0 1px rgba(8,48,24,.88);}
.plc319-photo .cpu-led.y{box-shadow:inset 0 1px 1px rgba(255,255,255,.55),0 0 5px rgba(240,180,24,.75),0 0 0 1px rgba(62,42,3,.88);}
.plc319-photo .cpu-led.r{box-shadow:inset 0 1px 1px rgba(255,255,255,.55),0 0 5px rgba(232,80,80,.78),0 0 0 1px rgba(64,6,6,.9);}
.plc319-caption{
  display:flex;justify-content:space-between;align-items:center;gap:10px;
  min-height:34px;margin-top:-2px;padding:7px 10px;
  border:1px solid rgba(96,126,144,.28);border-radius:6px;
  background:linear-gradient(180deg,rgba(11,25,35,.96),rgba(6,17,25,.98));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035);
}
.plc319-caption-model{color:#e6f1f7;font-size:10px;font-weight:800;letter-spacing:.055em;}
.plc319-caption-family{color:#7694a5;font-size:8px;font-weight:700;letter-spacing:.08em;}
@media(max-width:430px){
  .plc319-photo{max-width:320px;}
  .plc319-device{width:min(100%,280px);}
  .plc319-caption{align-items:flex-start;flex-direction:column;gap:3px;}
}

/* Frentes de referencia documentados. La imagen queda libre de rótulos:
   los puntos funcionales se dibujan en las canaletas y la lectura, fuera. */
.plc-reference-photo{
  width:100%;max-width:500px;margin:0 auto;
  display:block;
  color:#d9e8f0;
}
.plc-reference-figure{
  min-width:0;margin:0;
}
.plc-reference-side{min-width:0;margin-top:8px;}
.plc-front-indicators-panel{
  min-width:0;padding:11px 12px;
  border:1px solid rgba(50,139,170,.32);border-radius:var(--rl);
  background:linear-gradient(180deg,rgba(12,36,49,.96),rgba(6,23,34,.98));
  box-shadow:var(--shadow-soft);
}
.plc-front-indicators-panel[hidden]{display:none!important;}
.plc-front-indicators-panel .plc-reference-side{margin-top:0;}
.plc-front-indicators-panel .plc-reference-side-title{
  margin-bottom:8px;color:#b9dded;font-size:10px;letter-spacing:.075em;text-transform:uppercase;
}
.plc-reference-side-title{margin:0 0 5px;color:#9fc8dc;font-size:10px;font-weight:800;letter-spacing:.03em;}
.plc-reference-disclaimer{margin:5px 0 0;color:#7f9cac;font-size:9px;line-height:1.35;}
.plc-reference-device{
  position:relative;isolation:isolate;container-type:inline-size;
  justify-self:center;align-self:start;width:min(100%,310px);
  aspect-ratio:1;
}
.plc-reference-photo--s7400 .plc-reference-device{
  width:min(100%,91.5px);aspect-ratio:460/1649;overflow:visible;
}
.plc-reference-image{
  display:block;width:100%;height:100%;object-fit:contain;
  user-select:none;pointer-events:none;
  filter:drop-shadow(0 12px 16px rgba(0,0,0,.5));
}
/* Los ocho frentes S7-400 usan el mismo lienzo 954x1649 y recorte x=250..710.
   Se preserva su proporción; cada familia sitúa los LED HTML en su canaleta. */
.plc-reference-photo--s7400 .plc-reference-image{
  position:absolute;top:0;left:-54.348%;width:207.391%;max-width:none;
  /* Recorta sólo el lienzo; los nombres HTML pueden salir del borde sin
     destapar los márgenes transparentes de la imagen original. */
  clip-path:inset(0 25.5765% 0 26.2055%);
}
/* En las CPU angostas la escala correcta no deja lugar para la serigrafía
   junto a la ranura original. Esta placa frontal mate la oculta visualmente
   y vuelve a componer allí los LED funcionales, sin deformar la carcasa. */
.plc-reference-photo--s7400 .plc-reference-device::before,
.plc-reference-photo--312-314 .plc-reference-device::before,
.plc-reference-photo--315-317-dp .plc-reference-device::before,
.plc-reference-photo--315-317-pndp .plc-reference-device::before{
  content:"";position:absolute;z-index:1;pointer-events:none;
  border:1px solid rgba(35,40,40,.28);border-radius:1px;
  background:
    linear-gradient(96deg,rgba(255,255,255,.055),transparent 24%,rgba(0,0,0,.08) 78%,rgba(0,0,0,.16)),
    linear-gradient(180deg,#626767 0%,#555a5a 48%,#484e4f 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.09),inset 0 -1px 0 rgba(0,0,0,.18);
}
.plc-reference-photo--s7400 .plc-reference-device::before{
  top:10.6%;left:11.5%;width:48%;height:24.6%;
}
.plc-reference-photo--417h .plc-reference-device::before{
  left:13%;width:65%;
}
.plc-reference-photo--417-5h-pndp .plc-reference-device::before{
  left:10%;width:70%;
}
.plc-reference-photo--312-314 .plc-reference-device::before{
  top:6.7%;left:22.5%;width:53%;height:21.8%;
}
.plc-reference-photo--315-317-dp .plc-reference-device::before,
.plc-reference-photo--315-317-pndp .plc-reference-device::before{
  top:9%;left:23%;width:53%;height:21.2%;
}
.plc-reference-dot{
  position:absolute;z-index:2;display:grid;place-items:center;
  width:3.5cqw;height:3.5cqw;transform:translate(-50%,-50%);
  pointer-events:auto;
}
.plc-reference-device .plc-reference-dot .cpu-led{
  display:block;width:2cqw;height:2cqw;min-width:0;min-height:0;
  border-radius:2px;cursor:default;pointer-events:none;
  box-shadow:inset 0 1px 1px rgba(255,255,255,.08),0 0 0 1px rgba(8,15,20,.9);
}
.plc-reference-device .plc-reference-dot .cpu-led.off{
  background:linear-gradient(145deg,#62747b,#34444b 58%,#1b292f);
  border-color:#202d33;
  box-shadow:inset 0 1px 1px rgba(255,255,255,.25),inset 0 -1px 1px rgba(0,0,0,.55),0 0 0 1px rgba(10,17,21,.94);
}
.plc-reference-device .plc-reference-dot .cpu-led.off.na{
  opacity:.46;
}
.plc-reference-device .plc-reference-dot .cpu-led.g{box-shadow:inset 0 1px 1px rgba(255,255,255,.4),0 0 4px rgba(74,222,128,.58),0 0 0 1px rgba(8,48,24,.9);}
.plc-reference-device .plc-reference-dot .cpu-led.y{box-shadow:inset 0 1px 1px rgba(255,255,255,.4),0 0 4px rgba(251,191,36,.58),0 0 0 1px rgba(62,42,3,.9);}
.plc-reference-device .plc-reference-dot .cpu-led.r{box-shadow:inset 0 1px 1px rgba(255,255,255,.4),0 0 4px rgba(248,113,113,.58),0 0 0 1px rgba(64,6,6,.9);}
.plc-reference-device .plc-reference-dot .cpu-led.b{box-shadow:inset 0 1px 1px rgba(255,255,255,.4),0 0 4px rgba(56,189,248,.58),0 0 0 1px rgba(4,36,60,.9);}
.plc-reference-inline-label{
  position:absolute;left:calc(100% + 3px);top:50%;transform:translateY(-50%);
  color:#c5d0d2;font-family:"Arial Narrow","Liberation Sans Narrow",Arial,sans-serif;
  font-size:clamp(7px,3cqw,9px);font-weight:600;
  line-height:1;letter-spacing:0;white-space:nowrap;
  text-shadow:0 1px 1px rgba(7,14,17,.8);
  pointer-events:none;
}
.plc-reference-photo--s7400 .plc-reference-inline-label{
  left:calc(100% + 1px);right:auto;width:auto;
  color:#d2d7d5;font-size:6px;font-weight:400;
  text-align:left;text-shadow:0 1px 1px rgba(12,16,17,.72);
}
.plc-reference-photo--319 .plc-reference-inline-label,
.plc-reference-photo--315-legacy .plc-reference-inline-label,
.plc-reference-photo--31xt-2dp .plc-reference-inline-label,
.plc-reference-photo--31xt-3-pndp .plc-reference-inline-label,
.plc-reference-photo--31x-legacy-dp .plc-reference-inline-label{
  left:auto;right:calc(100% + 3px);text-align:right;
}
.plc-reference-photo--31x-legacy-dp :is(.plc-ref-led-busf,.plc-ref-led-bus1f,.plc-ref-led-bus2f) .plc-reference-inline-label{
  left:calc(100% + 2px);right:auto;text-align:left;
}
.plc-reference-photo--319 .plc-reference-inline-label,
.plc-reference-photo--31xt-2dp .plc-reference-inline-label,
.plc-reference-photo--31xt-3-pndp .plc-reference-inline-label{
  font-size:clamp(7px,2.5cqw,9px);
}
.plc-reference-photo--417h :is(.plc-ref-led-redf,.plc-ref-led-mstr,.plc-ref-led-rack0,.plc-ref-led-rack1) .plc-reference-inline-label,
.plc-reference-photo--417-5h-pndp :is(.plc-ref-led-redf,.plc-ref-led-bus2f,.plc-ref-led-bus5f,.plc-ref-led-mstr,.plc-ref-led-rack0,.plc-ref-led-rack1) .plc-reference-inline-label{
  left:calc(100% + 2px);right:auto;width:auto;text-align:left;
}
/* Las compactas ya tienen los nombres serigrafiados en el frontal. Los
   frentes T/TF conservan, en cambio, las etiquetas HTML junto a sus lentes. */
.plc-reference-terminal-covers--printed-labels ~ .plc-reference-dot .plc-reference-inline-label{display:none;}

/* Cubiertas de rotulado de I/O de las CPU compactas. Conservan carcasa,
   conectores y lentes originales: sólo ocultan los bornes del frontal. */
.plc-reference-terminal-covers{position:absolute;inset:0;z-index:1;pointer-events:none;}
.plc-reference-terminal-cover{
  position:absolute;top:13.75%;left:50.45%;width:9.2%;height:75%;
}
/* Identificación física celeste: se aplica sólo a frentes con I/O integrada.
   El tono conserva el aspecto de la tira Siemens, pero mantiene suficiente
   croma sobre las cavidades blancas de los frentes T/TF. */
.plc-reference-terminal-covers--cyan-label .plc-reference-terminal-cover{
  border:1px solid rgba(17,38,42,.9);border-radius:1px;
  background:
    radial-gradient(circle at center,rgba(33,91,99,.82) 0 1px,transparent 1.5px) center top / 100% 6.25% repeat-y,
    repeating-linear-gradient(to bottom,transparent 0 5.85%,rgba(34,103,112,.58) 5.85% 6.25%),
    linear-gradient(90deg,#69c5d0 0%,#b2e8e9 24%,#9edfe3 72%,#62bac6 100%);
  background-color:#74ccd6;
  box-shadow:inset 1px 0 2px rgba(255,255,255,.46),inset -2px 0 3px rgba(20,75,84,.55),0 0 0 2px rgba(16,25,29,.88);
}
.plc-reference-terminal-cover--second{left:69.7%;}
.plc-reference-photo--312c .plc-reference-terminal-cover{
  top:13.45%;left:62.5%;width:15%;height:73%;
}
.plc-reference-photo--313c-2dp .plc-reference-terminal-cover,
.plc-reference-photo--313c-2ptp .plc-reference-terminal-cover{
  top:14.7%;left:58.5%;width:14.7%;height:74%;
}
.plc-reference-terminal-covers--technology .plc-reference-terminal-cover{
  top:18.2%;left:75.3%;width:5.9%;height:70%;
}

/* Coordenadas del PNG v6, medidas sobre el lienzo completo (1254 x 1254). */
.plc-reference-photo--319 .plc-ref-led-bf1{left:19.1%;top:15.3%;}
.plc-reference-photo--319 .plc-ref-led-bf2{left:19.1%;top:18.2%;}
.plc-reference-photo--319 .plc-ref-led-bf3{left:19.1%;top:21.1%;}
.plc-reference-photo--319 .plc-ref-led-sf{left:43.2%;top:15.3%;}
.plc-reference-photo--319 .plc-ref-led-maint{left:43.2%;top:18.2%;}
.plc-reference-photo--319 .plc-ref-led-dc5v{left:43.2%;top:21.1%;}
.plc-reference-photo--319 .plc-ref-led-frce{left:43.2%;top:24%;}
.plc-reference-photo--319 .plc-ref-led-run{left:43.2%;top:26.9%;}
.plc-reference-photo--319 .plc-ref-led-stop{left:43.2%;top:29.8%;}

/* Coordenadas del 417-4H v5 tras recortar x=250..710 de su margen transparente. */
.plc-reference-photo--417h .plc-ref-led-intf{left:18%;top:13.3%;}
.plc-reference-photo--417h .plc-ref-led-extf{left:18%;top:15.3%;}
.plc-reference-photo--417h .plc-ref-led-bus1f{left:18%;top:17.3%;}
.plc-reference-photo--417h .plc-ref-led-bus2f{left:18%;top:19.3%;}
.plc-reference-photo--417h .plc-ref-led-ifm1f{left:18%;top:21.3%;}
.plc-reference-photo--417h .plc-ref-led-ifm2f{left:18%;top:23.3%;}
.plc-reference-photo--417h .plc-ref-led-frce{left:18%;top:25.3%;}
.plc-reference-photo--417h .plc-ref-led-run{left:18%;top:27.7%;}
.plc-reference-photo--417h .plc-ref-led-stop{left:18%;top:29.5%;}
.plc-reference-photo--417h .plc-ref-led-redf{left:64.6%;top:13.3%;}
.plc-reference-photo--417h .plc-ref-led-mstr{left:64.6%;top:25.8%;}
.plc-reference-photo--417h .plc-ref-led-rack0{left:64.6%;top:27.8%;}
.plc-reference-photo--417h .plc-ref-led-rack1{left:64.6%;top:29.9%;}

/* Lentes HTML independientes para los otros siete frentes S7-400. El CSP de
   producción no permite style inline, por lo que las coordenadas son CSS. */
.plc-reference-photo--412-1 .plc-reference-dot,
.plc-reference-photo--412-2-pn .plc-reference-dot,
.plc-reference-photo--41x-2 .plc-reference-dot{left:20.2%;}
.plc-reference-photo--41x-3-dp .plc-reference-dot,
.plc-reference-photo--41x-3-pndp .plc-reference-dot{left:19.1%;}
.plc-reference-photo--417-4 .plc-reference-dot{left:17.4%;}
.plc-reference-photo--417-5h-pndp .plc-reference-dot{left:16%;}
.plc-reference-photo--count-7 .plc-reference-dot:nth-of-type(1),
.plc-reference-photo--count-8 .plc-reference-dot:nth-of-type(1),
.plc-reference-photo--count-9 .plc-reference-dot:nth-of-type(1),
.plc-reference-photo--count-10 .plc-reference-dot:nth-of-type(1),
.plc-reference-photo--count-11 .plc-reference-dot:nth-of-type(1){top:13.3%;}
.plc-reference-photo--count-7 .plc-reference-dot:nth-of-type(2){top:15.97%;}
.plc-reference-photo--count-7 .plc-reference-dot:nth-of-type(3){top:18.63%;}
.plc-reference-photo--count-7 .plc-reference-dot:nth-of-type(4){top:21.3%;}
.plc-reference-photo--count-7 .plc-reference-dot:nth-of-type(5){top:23.97%;}
.plc-reference-photo--count-7 .plc-reference-dot:nth-of-type(6){top:26.63%;}
.plc-reference-photo--count-7 .plc-reference-dot:nth-of-type(7){top:29.3%;}
.plc-reference-photo--count-8 .plc-reference-dot:nth-of-type(2){top:15.59%;}
.plc-reference-photo--count-8 .plc-reference-dot:nth-of-type(3){top:17.87%;}
.plc-reference-photo--count-8 .plc-reference-dot:nth-of-type(4){top:20.16%;}
.plc-reference-photo--count-8 .plc-reference-dot:nth-of-type(5){top:22.44%;}
.plc-reference-photo--count-8 .plc-reference-dot:nth-of-type(6){top:24.73%;}
.plc-reference-photo--count-8 .plc-reference-dot:nth-of-type(7){top:27.01%;}
.plc-reference-photo--count-8 .plc-reference-dot:nth-of-type(8){top:29.3%;}
.plc-reference-photo--count-9 .plc-reference-dot:nth-of-type(2){top:15.3%;}
.plc-reference-photo--count-9 .plc-reference-dot:nth-of-type(3){top:17.3%;}
.plc-reference-photo--count-9 .plc-reference-dot:nth-of-type(4){top:19.3%;}
.plc-reference-photo--count-9 .plc-reference-dot:nth-of-type(5){top:21.3%;}
.plc-reference-photo--count-9 .plc-reference-dot:nth-of-type(6){top:23.3%;}
.plc-reference-photo--count-9 .plc-reference-dot:nth-of-type(7){top:25.3%;}
.plc-reference-photo--count-9 .plc-reference-dot:nth-of-type(8){top:27.3%;}
.plc-reference-photo--count-9 .plc-reference-dot:nth-of-type(9){top:29.3%;}
.plc-reference-photo--count-10 .plc-reference-dot:nth-of-type(2){top:15.08%;}
.plc-reference-photo--count-10 .plc-reference-dot:nth-of-type(3){top:16.86%;}
.plc-reference-photo--count-10 .plc-reference-dot:nth-of-type(4){top:18.63%;}
.plc-reference-photo--count-10 .plc-reference-dot:nth-of-type(5){top:20.41%;}
.plc-reference-photo--count-10 .plc-reference-dot:nth-of-type(6){top:22.19%;}
.plc-reference-photo--count-10 .plc-reference-dot:nth-of-type(7){top:23.97%;}
.plc-reference-photo--count-10 .plc-reference-dot:nth-of-type(8){top:25.74%;}
.plc-reference-photo--count-10 .plc-reference-dot:nth-of-type(9){top:27.52%;}
.plc-reference-photo--count-10 .plc-reference-dot:nth-of-type(10){top:29.3%;}
.plc-reference-photo--count-11 .plc-reference-dot:nth-of-type(2){top:14.9%;}
.plc-reference-photo--count-11 .plc-reference-dot:nth-of-type(3){top:16.5%;}
.plc-reference-photo--count-11 .plc-reference-dot:nth-of-type(4){top:18.1%;}
.plc-reference-photo--count-11 .plc-reference-dot:nth-of-type(5){top:19.7%;}
.plc-reference-photo--count-11 .plc-reference-dot:nth-of-type(6){top:21.3%;}
.plc-reference-photo--count-11 .plc-reference-dot:nth-of-type(7){top:22.9%;}
.plc-reference-photo--count-11 .plc-reference-dot:nth-of-type(8){top:24.5%;}
.plc-reference-photo--count-11 .plc-reference-dot:nth-of-type(9){top:26.1%;}
.plc-reference-photo--count-11 .plc-reference-dot:nth-of-type(10){top:27.7%;}
.plc-reference-photo--count-11 .plc-reference-dot:nth-of-type(11){top:29.3%;}
/* 417-5H PN/DP: Fig. 5-1 del manual S7-400H: 9 indicadores a la
   izquierda y 6 a la derecha. BUS2F/BUS5F no van en la fila izquierda. */
.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-intf{top:13.3%;}
.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-extf{top:15.3%;}
.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-bus1f{top:17.3%;}
.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-ifm1f{top:19.3%;}
.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-ifm2f{top:21.3%;}
.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-frce{top:23.3%;}
.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-maint{top:25.3%;}
.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-run{top:27.7%;}
.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-stop{top:29.5%;}
.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-redf{left:68.7%;top:13.3%;}
.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-bus2f{left:68.7%;top:15.3%;}
.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-bus5f{left:68.7%;top:17.3%;}
.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-mstr{left:68.7%;top:25.8%;}
.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-rack0{left:68.7%;top:27.8%;}
.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-rack1{left:68.7%;top:29.9%;}

/* Frentes S7-300: cada lienzo conserva su proporción original. Las posiciones
   son lentes HTML sobre canaletas oscuras; nunca luces horneadas en el PNG. */
.plc-reference-photo--s7300 .plc-reference-device{overflow:visible;}
.plc-reference-photo--319 .plc-reference-device{width:min(100%,330px);}
.plc-reference-photo--s7300 .plc-reference-dot{width:3.1cqw;height:3.1cqw;}
.plc-reference-photo--s7300 .plc-reference-dot .cpu-led{width:2.3cqw;height:2.3cqw;}
.plc-reference-photo--312c .plc-reference-device,
.plc-reference-photo--313c-2dp .plc-reference-device,
.plc-reference-photo--313c-2ptp .plc-reference-device{width:min(100%,210px);aspect-ratio:1004/1567;}
.plc-reference-photo--313c .plc-reference-device,
.plc-reference-photo--314c-2dp .plc-reference-device,
.plc-reference-photo--314c-pndp .plc-reference-device,
.plc-reference-photo--314c-2ptp .plc-reference-device{width:min(100%,290px);aspect-ratio:1374/1145;}
.plc-reference-photo--312-314 .plc-reference-device{width:min(100%,123px);aspect-ratio:793/1984;}
.plc-reference-photo--315-317-dp .plc-reference-device{width:min(100%,160px);aspect-ratio:883/1781;}
.plc-reference-photo--315-317-pndp .plc-reference-device{width:min(100%,184px);aspect-ratio:941/1672;}
.plc-reference-photo--315-legacy .plc-reference-device,
.plc-reference-photo--31x-legacy-dp .plc-reference-device{width:min(100%,270px);aspect-ratio:1;}
.plc-reference-photo--31xt-2dp .plc-reference-device,
.plc-reference-photo--31xt-3-pndp .plc-reference-device{width:min(100%,330px);aspect-ratio:1;}
.plc-reference-photo--313c .plc-reference-dot,
.plc-reference-photo--314c-2dp .plc-reference-dot,
.plc-reference-photo--314c-pndp .plc-reference-dot,
.plc-reference-photo--314c-2ptp .plc-reference-dot{width:2.8cqw;height:2.8cqw;}
.plc-reference-photo--313c .plc-reference-dot .cpu-led,
.plc-reference-photo--314c-2dp .plc-reference-dot .cpu-led,
.plc-reference-photo--314c-pndp .plc-reference-dot .cpu-led,
.plc-reference-photo--314c-2ptp .plc-reference-dot .cpu-led{width:2.2cqw;height:2.2cqw;}
.plc-reference-photo--312-314 .plc-reference-dot,
.plc-reference-photo--315-317-dp .plc-reference-dot,
.plc-reference-photo--315-317-pndp .plc-reference-dot{width:3.2cqw;height:3.2cqw;}
.plc-reference-photo--312-314 .plc-reference-dot .cpu-led,
.plc-reference-photo--315-317-dp .plc-reference-dot .cpu-led,
.plc-reference-photo--315-317-pndp .plc-reference-dot .cpu-led{width:2.5cqw;height:2.5cqw;}

/* Compactas: anclas medidas sobre cada PNG completo (véase QA de frentes). */
.plc-reference-photo--312c .plc-reference-dot{left:23.1%;}
.plc-reference-photo--313c .plc-reference-dot,
.plc-reference-photo--314c-2dp .plc-reference-dot,
.plc-reference-photo--314c-2ptp .plc-reference-dot{left:21.8%;}
.plc-reference-photo--314c-pndp .plc-ref-led-bf1,
.plc-reference-photo--314c-pndp .plc-ref-led-bf2{left:19.72%;}
.plc-reference-photo--314c-pndp :is(.plc-ref-led-sf,.plc-ref-led-maint,.plc-ref-led-dc5v,.plc-ref-led-frce,.plc-ref-led-run,.plc-ref-led-stop){left:29.4%;}
.plc-reference-photo--313c-2dp .plc-reference-dot{left:19%;}
.plc-reference-photo--313c-2ptp .plc-reference-dot{left:18.9%;}
.plc-reference-photo--312c .plc-ref-led-sf{top:16.4%;}
.plc-reference-photo--312c .plc-ref-led-maint{top:19.3%;}
.plc-reference-photo--312c .plc-ref-led-dc5v{top:22.3%;}
.plc-reference-photo--312c .plc-ref-led-frce{top:25.3%;}
.plc-reference-photo--312c .plc-ref-led-run{top:28.3%;}
.plc-reference-photo--312c .plc-ref-led-stop{top:31.2%;}
.plc-reference-photo--313c .plc-ref-led-sf{top:16.7%;}
.plc-reference-photo--313c .plc-ref-led-maint{top:20.1%;}
.plc-reference-photo--313c .plc-ref-led-dc5v{top:23.6%;}
.plc-reference-photo--313c .plc-ref-led-frce{top:27%;}
.plc-reference-photo--313c .plc-ref-led-run{top:30.4%;}
.plc-reference-photo--313c .plc-ref-led-stop{top:33.8%;}
.plc-reference-photo--313c-2dp .plc-ref-led-sf{top:16.7%;}
.plc-reference-photo--313c-2dp .plc-ref-led-bf{top:19.8%;}
.plc-reference-photo--313c-2dp .plc-ref-led-maint{top:22.8%;}
.plc-reference-photo--313c-2dp .plc-ref-led-dc5v{top:25.8%;}
.plc-reference-photo--313c-2dp .plc-ref-led-frce{top:28.7%;}
.plc-reference-photo--313c-2dp .plc-ref-led-run{top:31.7%;}
.plc-reference-photo--313c-2dp .plc-ref-led-stop{top:34.6%;}
.plc-reference-photo--313c-2ptp .plc-ref-led-sf{top:16.8%;}
.plc-reference-photo--313c-2ptp .plc-ref-led-maint{top:20.7%;}
.plc-reference-photo--313c-2ptp .plc-ref-led-dc5v{top:24.2%;}
.plc-reference-photo--313c-2ptp .plc-ref-led-frce{top:27.4%;}
.plc-reference-photo--313c-2ptp .plc-ref-led-run{top:30.8%;}
.plc-reference-photo--313c-2ptp .plc-ref-led-stop{top:34.1%;}
.plc-reference-photo--314c-2dp .plc-ref-led-sf{top:16.6%;}
.plc-reference-photo--314c-2dp .plc-ref-led-bf{top:20.1%;}
.plc-reference-photo--314c-2dp .plc-ref-led-maint{top:23.4%;}
.plc-reference-photo--314c-2dp .plc-ref-led-dc5v{top:26.8%;}
.plc-reference-photo--314c-2dp .plc-ref-led-frce{top:30.1%;}
.plc-reference-photo--314c-2dp .plc-ref-led-run{top:33.4%;}
.plc-reference-photo--314c-2dp .plc-ref-led-stop{top:36.8%;}
.plc-reference-photo--314c-2ptp .plc-ref-led-sf{top:16.6%;}
.plc-reference-photo--314c-2ptp .plc-ref-led-maint{top:21.7%;}
.plc-reference-photo--314c-2ptp .plc-ref-led-dc5v{top:25.2%;}
.plc-reference-photo--314c-2ptp .plc-ref-led-frce{top:28.6%;}
.plc-reference-photo--314c-2ptp .plc-ref-led-run{top:32.2%;}
.plc-reference-photo--314c-2ptp .plc-ref-led-stop{top:35.7%;}
.plc-reference-photo--314c-pndp .plc-ref-led-bf1,
.plc-reference-photo--314c-pndp .plc-ref-led-sf{top:16.59%;}
.plc-reference-photo--314c-pndp .plc-ref-led-bf2,
.plc-reference-photo--314c-pndp .plc-ref-led-maint{top:20%;}
.plc-reference-photo--314c-pndp .plc-ref-led-dc5v{top:23.32%;}
.plc-reference-photo--314c-pndp .plc-ref-led-frce{top:26.72%;}
.plc-reference-photo--314c-pndp .plc-ref-led-run{top:30.04%;}
.plc-reference-photo--314c-pndp .plc-ref-led-stop{top:33.36%;}

/* Estándar 31x: ranura única, con inventario físico 6/7/8 según CPU. */
.plc-reference-photo--312-314 .plc-reference-dot{left:30.9%;}
.plc-reference-photo--315-317-dp .plc-reference-dot{left:33.4%;}
.plc-reference-photo--315-317-pndp .plc-reference-dot{left:34.9%;}
.plc-reference-photo--312-314 .plc-reference-dot:nth-of-type(1){top:9%;}
.plc-reference-photo--312-314 .plc-reference-dot:nth-of-type(2){top:12.4%;}
.plc-reference-photo--312-314 .plc-reference-dot:nth-of-type(3){top:15.8%;}
.plc-reference-photo--312-314 .plc-reference-dot:nth-of-type(4){top:19.2%;}
.plc-reference-photo--312-314 .plc-reference-dot:nth-of-type(5){top:22.6%;}
.plc-reference-photo--312-314 .plc-reference-dot:nth-of-type(6){top:26%;}
.plc-reference-photo--315-317-dp.plc-reference-photo--model-315-2dp .plc-reference-dot:nth-of-type(1){top:11.5%;}
.plc-reference-photo--315-317-dp.plc-reference-photo--model-315-2dp .plc-reference-dot:nth-of-type(2){top:14.2%;}
.plc-reference-photo--315-317-dp.plc-reference-photo--model-315-2dp .plc-reference-dot:nth-of-type(3){top:16.8%;}
.plc-reference-photo--315-317-dp.plc-reference-photo--model-315-2dp .plc-reference-dot:nth-of-type(4){top:19.5%;}
.plc-reference-photo--315-317-dp.plc-reference-photo--model-315-2dp .plc-reference-dot:nth-of-type(5){top:22.2%;}
.plc-reference-photo--315-317-dp.plc-reference-photo--model-315-2dp .plc-reference-dot:nth-of-type(6){top:24.8%;}
.plc-reference-photo--315-317-dp.plc-reference-photo--model-315-2dp .plc-reference-dot:nth-of-type(7){top:27.4%;}
.plc-reference-photo--315-317-dp.plc-reference-photo--model-317-2dp .plc-reference-dot:nth-of-type(1){top:11.5%;}
.plc-reference-photo--315-317-dp.plc-reference-photo--model-317-2dp .plc-reference-dot:nth-of-type(2){top:13.8%;}
.plc-reference-photo--315-317-dp.plc-reference-photo--model-317-2dp .plc-reference-dot:nth-of-type(3){top:16%;}
.plc-reference-photo--315-317-dp.plc-reference-photo--model-317-2dp .plc-reference-dot:nth-of-type(4){top:18.3%;}
.plc-reference-photo--315-317-dp.plc-reference-photo--model-317-2dp .plc-reference-dot:nth-of-type(5){top:20.6%;}
.plc-reference-photo--315-317-dp.plc-reference-photo--model-317-2dp .plc-reference-dot:nth-of-type(6){top:22.8%;}
.plc-reference-photo--315-317-dp.plc-reference-photo--model-317-2dp .plc-reference-dot:nth-of-type(7){top:25.1%;}
.plc-reference-photo--315-317-dp.plc-reference-photo--model-317-2dp .plc-reference-dot:nth-of-type(8){top:27.4%;}
.plc-reference-photo--315-317-pndp .plc-reference-dot:nth-of-type(1){top:10.1%;}
.plc-reference-photo--315-317-pndp .plc-reference-dot:nth-of-type(2){top:12.6%;}
.plc-reference-photo--315-317-pndp .plc-reference-dot:nth-of-type(3){top:15.1%;}
.plc-reference-photo--315-317-pndp .plc-reference-dot:nth-of-type(4){top:17.5%;}
.plc-reference-photo--315-317-pndp .plc-reference-dot:nth-of-type(5){top:20%;}
.plc-reference-photo--315-317-pndp .plc-reference-dot:nth-of-type(6){top:22.4%;}
.plc-reference-photo--315-317-pndp .plc-reference-dot:nth-of-type(7){top:24.9%;}
.plc-reference-photo--315-317-pndp .plc-reference-dot:nth-of-type(8){top:27.3%;}

/* Legacy: doble columna sólo cuando el modelo tiene indicadores BUS. */
.plc-reference-photo--315-legacy .plc-reference-dot,
.plc-reference-photo--31x-legacy-dp .plc-reference-dot{left:44.3%;}
.plc-reference-photo--31x-legacy-dp .plc-ref-led-busf,
.plc-reference-photo--31x-legacy-dp .plc-ref-led-bus1f,
.plc-reference-photo--31x-legacy-dp .plc-ref-led-bus2f{left:56.9%;}
.plc-reference-photo--315-legacy .plc-ref-led-sf,
.plc-reference-photo--31x-legacy-dp .plc-ref-led-sf{top:17.3%;}
.plc-reference-photo--315-legacy .plc-ref-led-batf,
.plc-reference-photo--31x-legacy-dp .plc-ref-led-batf{top:22.2%;}
.plc-reference-photo--315-legacy .plc-ref-led-dc5v,
.plc-reference-photo--31x-legacy-dp .plc-ref-led-dc5v{top:26.3%;}
.plc-reference-photo--315-legacy .plc-ref-led-frce,
.plc-reference-photo--31x-legacy-dp .plc-ref-led-frce{top:30.5%;}
.plc-reference-photo--315-legacy .plc-ref-led-run,
.plc-reference-photo--31x-legacy-dp .plc-ref-led-run{top:35.1%;}
.plc-reference-photo--315-legacy .plc-ref-led-stop,
.plc-reference-photo--31x-legacy-dp .plc-ref-led-stop{top:39.6%;}
.plc-reference-photo--31x-legacy-dp .plc-ref-led-busf,
.plc-reference-photo--31x-legacy-dp .plc-ref-led-bus1f{top:17.3%;}
.plc-reference-photo--31x-legacy-dp .plc-ref-led-bus2f{top:22.2%;}

/* Tecnología: BF de X1 y X3 en canaleta izquierda, estado en la derecha. */
.plc-reference-photo--31xt-2dp .plc-ref-led-bf1{left:17.6%;top:17.2%;}
.plc-reference-photo--31xt-2dp .plc-ref-led-bf2{left:17.6%;top:21.4%;}
.plc-reference-photo--31xt-2dp .plc-ref-led-bf3{left:17.6%;top:25.6%;}
.plc-reference-photo--model-315t-2dp .plc-ref-led-bf3,
.plc-reference-photo--model-317t-2dp .plc-ref-led-bf3{top:21.4%;}
.plc-reference-photo--31xt-2dp .plc-ref-led-sf{left:42.4%;top:17.2%;}
.plc-reference-photo--31xt-2dp .plc-ref-led-dc5v{left:42.4%;top:20%;}
.plc-reference-photo--31xt-2dp .plc-ref-led-frce{left:42.4%;top:22.8%;}
.plc-reference-photo--31xt-2dp .plc-ref-led-run{left:42.4%;top:25.6%;}
.plc-reference-photo--31xt-2dp .plc-ref-led-stop{left:42.4%;top:28.4%;}

/* Tecnología PN/DP: BF1/BF2/BF3 a la izquierda y estados de CPU a la
   derecha. El rótulo celeste de X11 es una capa independiente. */
.plc-reference-photo--31xt-3-pndp :is(.plc-ref-led-bf1,.plc-ref-led-bf2,.plc-ref-led-bf3){left:17.46%;}
.plc-reference-photo--31xt-3-pndp .plc-ref-led-bf1{top:15.55%;}
.plc-reference-photo--31xt-3-pndp .plc-ref-led-bf2{top:20.1%;}
.plc-reference-photo--31xt-3-pndp .plc-ref-led-bf3{top:25.12%;}
.plc-reference-photo--31xt-3-pndp :is(.plc-ref-led-sf,.plc-ref-led-maint,.plc-ref-led-dc5v,.plc-ref-led-frce,.plc-ref-led-run,.plc-ref-led-stop){left:42.34%;}
.plc-reference-photo--31xt-3-pndp .plc-ref-led-sf{top:15.55%;}
.plc-reference-photo--31xt-3-pndp .plc-ref-led-maint{top:19.86%;}
.plc-reference-photo--31xt-3-pndp .plc-ref-led-dc5v{top:24%;}
.plc-reference-photo--31xt-3-pndp .plc-ref-led-frce{top:28.23%;}
.plc-reference-photo--31xt-3-pndp .plc-ref-led-run{top:32.38%;}
.plc-reference-photo--31xt-3-pndp .plc-ref-led-stop{top:37%;}

/* Escala visual normalizada contra 312C / 313C-2 PtP. Los lentes y la
   serigrafía ya no dependen del ancho del equipo: conservan lectura y una
   huella realista aunque el frontal sea físicamente angosto. */
.plc-reference-photo--312-314 .plc-reference-dot,
.plc-reference-photo--315-317-dp .plc-reference-dot,
.plc-reference-photo--315-317-pndp .plc-reference-dot{
  z-index:2;width:8px;height:8px;
}
.plc-reference-photo--312-314 .plc-reference-dot .cpu-led,
.plc-reference-photo--315-317-dp .plc-reference-dot .cpu-led,
.plc-reference-photo--315-317-pndp .plc-reference-dot .cpu-led{
  width:5px;height:5px;border-radius:1.5px;
}
.plc-reference-photo--s7400 .plc-reference-dot{
  z-index:2;width:7px;height:7px;
}
.plc-reference-photo--s7400 .plc-reference-dot .cpu-led{
  width:4px;height:4px;border-radius:1px;
}
.plc-reference-photo--312-314 .plc-reference-inline-label,
.plc-reference-photo--315-317-dp .plc-reference-inline-label,
.plc-reference-photo--315-317-pndp .plc-reference-inline-label{
  left:calc(100% + 2px);right:auto;width:auto;
  color:#d2d7d5;font-size:6.5px;font-weight:400;line-height:1;
  text-align:left;text-shadow:0 1px 1px rgba(12,16,17,.72);
}

/* El frente compacto permite una separación física de 7-11 px entre filas,
   equivalente a las referencias aprobadas. */
.plc-reference-photo--s7400.plc-reference-photo--count-7 .plc-reference-dot:nth-of-type(1){top:12.8%;}
.plc-reference-photo--s7400.plc-reference-photo--count-7 .plc-reference-dot:nth-of-type(2){top:16%;}
.plc-reference-photo--s7400.plc-reference-photo--count-7 .plc-reference-dot:nth-of-type(3){top:19.2%;}
.plc-reference-photo--s7400.plc-reference-photo--count-7 .plc-reference-dot:nth-of-type(4){top:22.4%;}
.plc-reference-photo--s7400.plc-reference-photo--count-7 .plc-reference-dot:nth-of-type(5){top:25.6%;}
.plc-reference-photo--s7400.plc-reference-photo--count-7 .plc-reference-dot:nth-of-type(6){top:28.8%;}
.plc-reference-photo--s7400.plc-reference-photo--count-7 .plc-reference-dot:nth-of-type(7){top:32%;}
.plc-reference-photo--s7400.plc-reference-photo--count-8 .plc-reference-dot:nth-of-type(1){top:12.6%;}
.plc-reference-photo--s7400.plc-reference-photo--count-8 .plc-reference-dot:nth-of-type(2){top:15.4%;}
.plc-reference-photo--s7400.plc-reference-photo--count-8 .plc-reference-dot:nth-of-type(3){top:18.2%;}
.plc-reference-photo--s7400.plc-reference-photo--count-8 .plc-reference-dot:nth-of-type(4){top:21%;}
.plc-reference-photo--s7400.plc-reference-photo--count-8 .plc-reference-dot:nth-of-type(5){top:23.8%;}
.plc-reference-photo--s7400.plc-reference-photo--count-8 .plc-reference-dot:nth-of-type(6){top:26.6%;}
.plc-reference-photo--s7400.plc-reference-photo--count-8 .plc-reference-dot:nth-of-type(7){top:29.4%;}
.plc-reference-photo--s7400.plc-reference-photo--count-8 .plc-reference-dot:nth-of-type(8){top:32.2%;}
.plc-reference-photo--s7400.plc-reference-photo--count-9 .plc-reference-dot:nth-of-type(1){top:12.4%;}
.plc-reference-photo--s7400.plc-reference-photo--count-9 .plc-reference-dot:nth-of-type(2){top:14.9%;}
.plc-reference-photo--s7400.plc-reference-photo--count-9 .plc-reference-dot:nth-of-type(3){top:17.4%;}
.plc-reference-photo--s7400.plc-reference-photo--count-9 .plc-reference-dot:nth-of-type(4){top:19.9%;}
.plc-reference-photo--s7400.plc-reference-photo--count-9 .plc-reference-dot:nth-of-type(5){top:22.4%;}
.plc-reference-photo--s7400.plc-reference-photo--count-9 .plc-reference-dot:nth-of-type(6){top:24.9%;}
.plc-reference-photo--s7400.plc-reference-photo--count-9 .plc-reference-dot:nth-of-type(7){top:27.4%;}
.plc-reference-photo--s7400.plc-reference-photo--count-9 .plc-reference-dot:nth-of-type(8){top:29.9%;}
.plc-reference-photo--s7400.plc-reference-photo--count-9 .plc-reference-dot:nth-of-type(9){top:32.4%;}
.plc-reference-photo--s7400.plc-reference-photo--count-10 .plc-reference-dot:nth-of-type(1){top:12.3%;}
.plc-reference-photo--s7400.plc-reference-photo--count-10 .plc-reference-dot:nth-of-type(2){top:14.55%;}
.plc-reference-photo--s7400.plc-reference-photo--count-10 .plc-reference-dot:nth-of-type(3){top:16.8%;}
.plc-reference-photo--s7400.plc-reference-photo--count-10 .plc-reference-dot:nth-of-type(4){top:19.05%;}
.plc-reference-photo--s7400.plc-reference-photo--count-10 .plc-reference-dot:nth-of-type(5){top:21.3%;}
.plc-reference-photo--s7400.plc-reference-photo--count-10 .plc-reference-dot:nth-of-type(6){top:23.55%;}
.plc-reference-photo--s7400.plc-reference-photo--count-10 .plc-reference-dot:nth-of-type(7){top:25.8%;}
.plc-reference-photo--s7400.plc-reference-photo--count-10 .plc-reference-dot:nth-of-type(8){top:28.05%;}
.plc-reference-photo--s7400.plc-reference-photo--count-10 .plc-reference-dot:nth-of-type(9){top:30.3%;}
.plc-reference-photo--s7400.plc-reference-photo--count-10 .plc-reference-dot:nth-of-type(10){top:32.55%;}
.plc-reference-photo--s7400.plc-reference-photo--count-11 .plc-reference-dot:nth-of-type(1){top:12.2%;}
.plc-reference-photo--s7400.plc-reference-photo--count-11 .plc-reference-dot:nth-of-type(2){top:14.25%;}
.plc-reference-photo--s7400.plc-reference-photo--count-11 .plc-reference-dot:nth-of-type(3){top:16.3%;}
.plc-reference-photo--s7400.plc-reference-photo--count-11 .plc-reference-dot:nth-of-type(4){top:18.35%;}
.plc-reference-photo--s7400.plc-reference-photo--count-11 .plc-reference-dot:nth-of-type(5){top:20.4%;}
.plc-reference-photo--s7400.plc-reference-photo--count-11 .plc-reference-dot:nth-of-type(6){top:22.45%;}
.plc-reference-photo--s7400.plc-reference-photo--count-11 .plc-reference-dot:nth-of-type(7){top:24.5%;}
.plc-reference-photo--s7400.plc-reference-photo--count-11 .plc-reference-dot:nth-of-type(8){top:26.55%;}
.plc-reference-photo--s7400.plc-reference-photo--count-11 .plc-reference-dot:nth-of-type(9){top:28.6%;}
.plc-reference-photo--s7400.plc-reference-photo--count-11 .plc-reference-dot:nth-of-type(10){top:30.65%;}
.plc-reference-photo--s7400.plc-reference-photo--count-11 .plc-reference-dot:nth-of-type(11){top:32.7%;}

/* CPU H: la segunda canaleta se recompone sobre la misma placa, dejando
   espacio interno para REDF/BUS/MSTR/RACK sin ensanchar el equipo. */
.plc-reference-photo--417h .plc-ref-led-intf,
.plc-reference-photo--s7400.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-intf{top:12.2%;}
.plc-reference-photo--417h .plc-ref-led-extf,
.plc-reference-photo--s7400.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-extf{top:14.75%;}
.plc-reference-photo--417h .plc-ref-led-bus1f,
.plc-reference-photo--s7400.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-bus1f{top:17.3%;}
.plc-reference-photo--417h .plc-ref-led-bus2f,
.plc-reference-photo--s7400.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-ifm1f{top:19.85%;}
.plc-reference-photo--417h .plc-ref-led-ifm1f,
.plc-reference-photo--s7400.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-ifm2f{top:22.4%;}
.plc-reference-photo--417h .plc-ref-led-ifm2f,
.plc-reference-photo--s7400.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-frce{top:24.95%;}
.plc-reference-photo--417h .plc-ref-led-frce,
.plc-reference-photo--s7400.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-maint{top:27.5%;}
.plc-reference-photo--417h .plc-ref-led-run,
.plc-reference-photo--s7400.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-run{top:30.05%;}
.plc-reference-photo--417h .plc-ref-led-stop,
.plc-reference-photo--s7400.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-stop{top:32.6%;}
.plc-reference-photo--417h :is(.plc-ref-led-redf,.plc-ref-led-mstr,.plc-ref-led-rack0,.plc-ref-led-rack1),
.plc-reference-photo--s7400.plc-reference-photo--417-5h-pndp :is(.plc-ref-led-redf,.plc-ref-led-bus2f,.plc-ref-led-bus5f,.plc-ref-led-mstr,.plc-ref-led-rack0,.plc-ref-led-rack1){left:49%;}
.plc-reference-photo--417h .plc-ref-led-redf,
.plc-reference-photo--s7400.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-redf{top:12.2%;}
.plc-reference-photo--s7400.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-bus2f{top:14.75%;}
.plc-reference-photo--s7400.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-bus5f{top:17.3%;}
.plc-reference-photo--417h .plc-ref-led-mstr,
.plc-reference-photo--s7400.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-mstr{top:27.5%;}
.plc-reference-photo--417h .plc-ref-led-rack0,
.plc-reference-photo--s7400.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-rack0{top:30.05%;}
.plc-reference-photo--417h .plc-ref-led-rack1,
.plc-reference-photo--s7400.plc-reference-photo--417-5h-pndp .plc-reference-dot.plc-ref-led-rack1{top:32.6%;}

.plc-reference-leds{
  min-width:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;column-gap:8px;
  padding:5px 8px;border:1px solid rgba(80,151,178,.27);border-radius:6px;
  background:linear-gradient(180deg,rgba(14,34,46,.86),rgba(6,21,31,.9));
}
.plc-reference-leds--single{grid-template-columns:minmax(0,1fr);}
.plc-reference-led-column{min-width:0;}
.plc-reference-column-title{
  margin:2px 0 3px;color:#9fc8dc;font-size:9px;font-weight:800;line-height:1.2;
}
.plc-reference-led-row{
  min-width:0;display:flex;align-items:center;gap:6px;min-height:25px;
  border-bottom:1px solid rgba(96,150,171,.14);
  font-size:10px;line-height:1.25;color:#d7e6ef;
}
.plc-reference-led-row:last-child{border-bottom:0;}
.plc-reference-led-row .cpu-led{
  flex:0 0 8px;width:8px;height:8px;cursor:default;pointer-events:none;
}
.plc-reference-led-row .cpu-led.off{background:#657786;border-color:#263d4b;}
.plc-reference-led-row .cpu-led.off.na{opacity:.38;}
.plc-reference-led-row strong{font-weight:800;letter-spacing:.035em;white-space:nowrap;}
.plc-reference-led-row small,
.plc-reference-led-row .plc-reference-led-state{
  min-width:0;margin-left:auto;color:#8eabbc;font-size:9px;text-align:right;
  overflow-wrap:anywhere;
}
.plc-reference-caption{
  display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;
  gap:3px 10px;margin-top:5px;padding:7px 9px;
  border:1px solid rgba(80,151,178,.25);border-radius:6px;
  background:rgba(6,21,31,.82);font-size:10px;color:#d7e6ef;
}
.plc-reference-caption strong{font-size:10px;letter-spacing:.035em;}
.plc-reference-caption span{font-size:9px;color:#8eabbc;}
.plc-reference-port-note{
  margin:5px 0 0;color:#8eabbc;font-size:9px;line-height:1.4;
}
@media(max-width:520px){
  .plc-reference-photo--319 .plc-reference-device{width:min(100%,290px);}
  .plc-reference-photo--s7400 .plc-reference-device{width:min(100%,91.5px);}
  .plc-reference-leds{column-gap:6px;}
  .plc-reference-led-row:nth-last-child(2){border-bottom:0;}
}
