/* ==========================================================
   Black Pearl Automation - Products pages
   Loaded only by /products/ pages, after site.css.
   No frameworks, no external requests.
   ========================================================== */

.pmono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace}

/* ---------------- Demo section shell ---------------- */
.demo-sec{background:var(--ink);color:#b3c8cf;padding:clamp(40px,6vw,76px) 0}
.demo-sec h2{color:#fff;font-size:clamp(1.5rem,3vw,2.2rem);margin-bottom:.35em}
.demo-sec .eyebrow{color:#5fd3e6}
.demo-sec .lede{color:#b3c8cf;margin-bottom:0}
.demo-head{display:flex;flex-wrap:wrap;gap:14px 28px;align-items:flex-end;justify-content:space-between;margin-bottom:22px}
.demo-note{font-size:.84rem;color:#8ea6b0;margin:0;display:inline-flex;align-items:center;gap:8px}
.demo-note::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--gold);flex:none}

/* ---------------- Step rail ---------------- */
.demo-steps{display:flex;gap:8px;list-style:none;margin:0 0 14px;padding:0;align-items:stretch}
.demo-steps li{flex:1 1 0;min-width:0}
.demo-steps button{
  width:100%;height:100%;text-align:left;background:#0f1f26;color:#9fb6be;border:1px solid #1d3640;border-radius:10px;
  padding:10px 12px 13px;font:inherit;font-size:.86rem;font-weight:650;line-height:1.25;cursor:pointer;position:relative;overflow:hidden;
  transition:background .2s ease,color .2s ease,border-color .2s ease}
.demo-steps button b{display:block;font-size:.72rem;font-weight:700;color:#5f7f89;margin-bottom:2px}
.demo-steps button:hover{background:#132a33;color:#fff}
.demo-steps button[aria-current="step"]{background:#12303a;color:#fff;border-color:#2b7f90}
.demo-steps button[aria-current="step"] b{color:#5fd3e6}
.demo-steps button i{position:absolute;left:0;bottom:0;height:3px;width:0;background:linear-gradient(90deg,var(--accent-2),var(--gold))}
.demo-steps button.done i{width:100%;background:#24525e}
.demo-ctl{display:flex;gap:8px;align-items:center;margin:0 0 14px}
.demo-ctl button{background:transparent;color:#cfe3e8;border:1px solid #2a4a55;border-radius:8px;padding:8px 14px;font:inherit;font-size:.86rem;font-weight:650;cursor:pointer;display:inline-flex;align-items:center;gap:8px}
.demo-ctl button:hover{background:#132a33;border-color:#3d7482;color:#fff}
.demo-ctl .now{margin-left:auto;font-size:.88rem;color:#9fb6be;text-align:right}
@media (max-width:760px){
  .demo-steps{gap:6px}
  .demo-steps button{padding:9px 4px 11px;text-align:center;font-size:0}
  .demo-steps button b{font-size:.86rem;margin:0;color:#9fb6be}
  .demo-steps button[aria-current="step"] b{color:#fff}
}
@media (min-width:761px){.demo-ctl .now{display:none}}

/* ---------------- Stage ---------------- */
.stage{display:grid;grid-template-columns:minmax(0,1.38fr) minmax(0,1fr);gap:14px;align-items:stretch}
.pane{background:#0f1f26;border:1px solid #1d3640;border-radius:14px;padding:14px;min-width:0}
.pane-h{font-size:.78rem;font-weight:700;color:#8ea6b0;margin:0 0 8px;display:flex;justify-content:space-between;gap:10px;align-items:center}
.stage-l{display:contents}
.stage .machine{grid-column:1;grid-row:1}.stage .chat{grid-column:2;grid-row:1}
.stage .trend{grid-column:1;grid-row:2}.stage .rung{grid-column:2;grid-row:2}
.stage svg{display:block;width:100%;height:auto}
.stage svg text{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,Helvetica,Arial,sans-serif}

/* state pill */
.pill{display:inline-flex;align-items:center;gap:7px;font-size:.76rem;font-weight:700;border-radius:99px;padding:4px 11px;background:#12303a;color:#8fe3f2;white-space:nowrap}
.pill::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.pill.warn{background:#3a3110;color:#f8c510}
.pill.bad{background:#3d1717;color:#ff8a80}

/* tag chips */
.tags{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:10px}
.tagchip{background:#0b171c;border:1px solid #1d3640;border-radius:9px;padding:8px 10px;min-width:0}
.tagchip span{display:block;font-size:.68rem;color:#7d98a1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tagchip b{display:block;font-size:1.02rem;color:#e8f4f6;font-weight:650;line-height:1.3;font-variant-numeric:tabular-nums}
.tagchip.warn{border-color:#7a6410}.tagchip.warn b{color:var(--gold)}
.tagchip.bad{border-color:#7a2b2b}.tagchip.bad b{color:#ff8a80}

/* chat */
.chat{display:flex;flex-direction:column;min-height:0}
.chat-body{flex:1 1 auto;height:0;min-height:300px;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;gap:9px;
  -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 34px);mask-image:linear-gradient(to bottom,transparent 0,#000 34px)}
.msg{max-width:92%;border-radius:13px;padding:10px 13px;font-size:.9rem;line-height:1.45;flex:none;animation:msgin .32s cubic-bezier(.16,1,.3,1) both}
@keyframes msgin{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.msg.sys{background:#0b171c;border:1px solid #1d3640;border-left:4px solid var(--accent-2);color:#c9dde2;max-width:100%}
.msg.sys.warn{border-left-color:var(--gold)}
.msg.sys.bad{border-left-color:#ef5350}
.msg.sys b{display:block;color:#fff;font-size:.9rem;margin-bottom:2px}
.msg.sys small{display:block;margin-top:6px;color:#7d98a1;font-size:.76rem}
.msg.user{align-self:flex-end;background:var(--accent);color:#fff;border-bottom-right-radius:4px}
.msg.bot{align-self:flex-start;background:#17323b;color:#e3f1f4;border-bottom-left-radius:4px}
.msg .who{display:block;font-size:.7rem;font-weight:700;opacity:.75;margin-bottom:2px}
.dots{display:inline-flex;gap:4px;padding:4px 0}
.dots i{width:6px;height:6px;border-radius:50%;background:#8fd8f5;animation:dot 1s ease-in-out infinite}
.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}
@keyframes dot{0%,80%,100%{opacity:.25;transform:none}40%{opacity:1;transform:translateY(-3px)}}
.wave{display:inline-flex;gap:3px;align-items:center;height:20px;vertical-align:middle}
.wave i{width:3px;border-radius:2px;background:#fff;height:6px;animation:wave .7s ease-in-out infinite}
.wave i:nth-child(2){animation-delay:.1s}.wave i:nth-child(3){animation-delay:.2s}.wave i:nth-child(4){animation-delay:.3s}
.wave i:nth-child(5){animation-delay:.4s}.wave i:nth-child(6){animation-delay:.15s}.wave i:nth-child(7){animation-delay:.05s}
@keyframes wave{0%,100%{height:5px}50%{height:19px}}
.chat-in{margin-top:10px;display:flex;gap:8px;align-items:center;background:#0b171c;border:1px solid #1d3640;border-radius:99px;padding:8px 8px 8px 14px;font-size:.86rem;color:#6f8a93}
.chat-in span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-in em{font-style:normal;width:30px;height:30px;border-radius:50%;background:#17323b;display:flex;align-items:center;justify-content:center;color:#8fd8f5;flex:none}
.chat-in.live em{background:var(--accent);color:#fff;box-shadow:0 0 0 5px rgba(22,167,190,.22)}

@media (max-width:900px){
  .stage{grid-template-columns:minmax(0,1fr)}
  .stage .machine,.stage .chat,.stage .trend,.stage .rung{grid-column:1;grid-row:auto}
  .stage .machine{order:1}.stage .chat{order:2}.stage .trend{order:3}.stage .rung{order:4}
  .chat-body{height:230px;min-height:0;flex:none}
  .tags{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tags .tagchip:nth-child(n+3){display:none}
}

/* ---------------- Levels ---------------- */
.levels{display:grid;gap:22px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));margin-top:44px;align-items:stretch}
.level{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:30px 26px;display:flex;flex-direction:column}
.level.mid{border-color:var(--accent);box-shadow:0 14px 34px rgba(14,115,134,.12)}
.level h3{font-size:1.28rem;margin-bottom:.2em}
.level .for{font-size:.95rem;margin-bottom:0}
.level .checks{margin-bottom:22px}
.level .btn{margin-top:auto;text-align:center}
.level .price{font-size:.9rem;color:var(--ink);font-weight:650;margin:0 0 6px}
.level .pilotnote{font-size:.86rem;font-weight:700;color:var(--accent);margin:0 0 14px}
.level .plus{font-size:.86rem;font-weight:700;color:var(--accent);margin:16px 0 0}

/* ---------------- Product hub cards ---------------- */
.pcards{display:grid;gap:26px;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));margin-top:44px}
.pcard{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden;text-decoration:none;color:inherit;
  transition:box-shadow .22s ease,transform .22s ease,border-color .22s ease}
a.pcard:hover{box-shadow:0 18px 40px rgba(11,20,24,.12);transform:translateY(-4px);border-color:#b6dbe3}
.pcard-art{background:var(--ink);padding:22px}
.pcard-art svg{display:block;width:100%;height:auto}
.pcard-b{padding:26px 26px 28px;display:flex;flex-direction:column;flex:1}
.pcard-b h3{font-size:1.4rem;margin-bottom:.3em}
.pcard-b .more{margin-top:auto;padding-top:12px;font-weight:650;color:var(--accent);display:inline-flex;gap:7px;align-items:center}
.pcard-art .sweep{animation:sweep 3.2s linear infinite}
@keyframes sweep{from{stroke-dashoffset:60}to{stroke-dashoffset:0}}
.pcard-art .blink{animation:blink 1.6s ease-in-out infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.25}}

/* ---------------- BP Draw demo ---------------- */
.draw-stage{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:14px;align-items:stretch}
@media (max-width:900px){.draw-stage{grid-template-columns:minmax(0,1fr)}.draw-stage .cell{order:1}.draw-stage .pend{order:2}}
.pendant{background:#1a1d20;border-radius:20px;padding:12px;box-shadow:inset 0 0 0 2px #2d3236,0 14px 30px rgba(0,0,0,.35)}
.pscreen{background:#f3f7f8;border-radius:10px;overflow:hidden;color:#0b1418;display:flex;flex-direction:column;aspect-ratio:16/10.6;min-height:300px}
.pbar{background:#0b4f5c;color:#fff;display:flex;align-items:center;gap:12px;padding:9px 14px;font-weight:700;font-size:.98rem}
.pbar img{height:26px;width:auto}
.pbar span{margin-left:auto;font-weight:600;font-size:.76rem;color:#bfe6ee}
.ptiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;padding:12px 12px 6px;flex:1;min-height:0}
.ptile{background:#fff;border:2px solid #cfe0e4;border-radius:12px;padding:6px 4px 7px;font:inherit;font-weight:700;font-size:.82rem;color:#0b1418;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:0;position:relative;transition:border-color .2s ease,transform .2s ease,box-shadow .2s ease,opacity .4s ease}
.ptile svg{width:100%;max-width:92px;height:auto;display:block}
.ptile.on{border-color:#118aa1;box-shadow:0 0 0 4px rgba(17,138,161,.2);transform:translateY(-2px)}
.ptile.usb{opacity:0;transform:scale(.8)}
.ptile.usb.in{opacity:1;transform:none}
.ptile.usb.in.on{transform:translateY(-2px)}
.ptile .badge{position:absolute;top:-8px;right:-4px;background:var(--gold);color:#0b1418;font-size:.62rem;font-weight:800;border-radius:99px;padding:2px 7px}
.pfoot{display:flex;align-items:center;gap:12px;padding:8px 12px 12px}
.pgo{background:#118aa1;color:#fff;border:0;border-radius:12px;font:inherit;font-weight:800;font-size:1.25rem;padding:10px 30px;cursor:pointer;box-shadow:0 5px 0 #0b4f5c;transition:transform .12s ease,box-shadow .12s ease,background .2s ease}
.pgo.down{transform:translateY(4px);box-shadow:0 1px 0 #0b4f5c}
.pgo.busy{background:#7da9b3;box-shadow:0 5px 0 #56808a}
.pstat{font-weight:650;font-size:.88rem;color:#31454c;min-width:0}
.pstat small{display:block;font-weight:500;color:#5b6b72;font-size:.76rem}
.cell-cap{font-size:.8rem;color:#8ea6b0;margin:8px 0 0}
@media (max-width:520px){.ptiles{grid-template-columns:repeat(2,minmax(0,1fr))}.pscreen{aspect-ratio:auto}.ptile svg{max-width:74px}}

/* ---------------- PLC to UR link diagram ---------------- */
.link{background:var(--ink);border-radius:18px;padding:clamp(16px,3vw,26px);color:#b3c8cf}
.link svg{display:block;width:100%;height:auto}
.link svg text{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,Helvetica,Arial,sans-serif}
.link .flow{stroke-dasharray:5 9;animation:flow 1.1s linear infinite}
.link .flow.rev{animation-direction:reverse}
@keyframes flow{from{stroke-dashoffset:14}to{stroke-dashoffset:0}}
.linktags{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px}
.linktags div{background:#0f1f26;border:1px solid #1d3640;border-radius:10px;padding:10px 12px;min-width:0}
.linktags h4{color:#8ea6b0;font-size:.74rem;margin:0 0 6px;font-weight:700;letter-spacing:0}
.linktags p{margin:0;font-size:.8rem;display:flex;justify-content:space-between;gap:8px;color:#9fb6be;line-height:1.7}
.linktags p b{color:#e8f4f6;font-weight:650;white-space:nowrap}
.linktags p b.warn{color:var(--gold)}
@media (max-width:560px){.linktags{grid-template-columns:minmax(0,1fr)}}

/* ---------------- Misc ---------------- */
.kit{list-style:none;padding:0;margin:18px 0 0;display:grid;gap:12px}
.kit li{display:flex;gap:14px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px 18px}
.kit svg{flex:none;color:var(--accent);margin-top:2px}
.kit b{display:block;color:var(--ink)}
.kit span{font-size:.94rem}
.status-note{max-width:820px;margin:0 auto;padding:18px 22px;border:1px solid #f1d77a;border-left:4px solid var(--gold);border-radius:12px;background:#fffbea;color:var(--ink);font-size:.95rem}
.status-note p{margin:0}

@media (prefers-reduced-motion:reduce){
  .msg,.dots i,.wave i,.link .flow,.pcard-art .sweep,.pcard-art .blink{animation:none!important}
}
.draw-stage .pend{display:flex;flex-direction:column}
.draw-stage .pendant{margin:auto 0}

/* ---------------- Long Conversations demo ---------------- */
.stage.convo{grid-template-columns:minmax(0,1fr) minmax(0,1.12fr)}
.stage.convo .trend{grid-column:1;grid-row:1}
.stage.convo .srcs{grid-column:1;grid-row:2}
.stage.convo .chat{grid-column:2;grid-row:1 / span 2}
.stage.convo .chat-body{min-height:440px}
.srcs ul{list-style:none;margin:0;padding:0;display:grid;gap:7px}
.srcs li{display:flex;gap:10px;align-items:center;font-size:.86rem;color:#6f8a93;background:#0b171c;border:1px solid #1d3640;border-radius:9px;padding:8px 11px;transition:color .3s ease,border-color .3s ease,background .3s ease}
.srcs li::before{content:"";flex:none;width:9px;height:9px;border-radius:50%;border:2px solid #33505a;transition:background .3s ease,border-color .3s ease}
.srcs li.on{color:#c9dde2}
.srcs li.on::before{background:#24525e;border-color:#3d7482}
.srcs li.now{color:#fff;border-color:#2b7f90;background:#12303a}
.srcs li.now::before{background:var(--accent-2);border-color:#8fe3f2}
.msg.sys.ok{border-left-color:#4ade80}
.msg.sys .ln{display:flex;gap:10px;font-size:.86rem;line-height:1.5}
.msg.sys .ln em{font-style:normal;flex:none;width:64px;color:#8ea6b0;font-weight:700;font-size:.76rem;padding-top:2px}
.lc-more{display:flex;flex-wrap:wrap;gap:16px 28px;align-items:center;justify-content:space-between}
.lc-more p{margin:0;max-width:640px}
@media (max-width:900px){
  .stage.convo{grid-template-columns:minmax(0,1fr)}
  .stage.convo .trend,.stage.convo .chat,.stage.convo .srcs{grid-column:1;grid-row:auto}
  .stage.convo .trend{order:1}.stage.convo .chat{order:2}.stage.convo .srcs{order:3}
  .stage.convo .chat-body{height:340px;min-height:0;flex:none}
}

/* ---------------- Long Conversations visibility ---------------- */
.newtag{display:inline-flex;align-items:center;gap:10px;margin-top:22px;padding:7px 14px 7px 7px;border-radius:99px;background:rgba(15,31,38,.72);border:1px solid #2b7f90;color:#d8eef2;font-size:.92rem;font-weight:600;text-decoration:none;transition:border-color .2s ease,background .2s ease}
.newtag b{background:var(--gold);color:#0b1418;font-size:.72rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;border-radius:99px;padding:3px 9px}
.newtag:hover{border-color:#5fd3e6;background:rgba(18,48,58,.9);color:#fff}
.demo-tabs{display:inline-flex;flex-wrap:wrap;gap:4px;background:#0f1f26;border:1px solid #1d3640;border-radius:12px;padding:4px;margin:0 0 16px}
.demo-tabs button{background:transparent;border:1px solid transparent;border-radius:9px;color:#9fb6be;font:inherit;font-size:.95rem;font-weight:700;padding:10px 18px;cursor:pointer;display:inline-flex;align-items:center;gap:8px}
.demo-tabs button:hover{color:#fff;background:#132a33}
.demo-tabs button[aria-selected="true"]{background:#12303a;border-color:#2b7f90;color:#fff}
.demo-tabs .up{background:var(--gold);color:#0b1418;font-size:.66rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;border-radius:99px;padding:2px 7px}
.demo-panel[hidden]{display:none}
.lc-panelnote{margin:14px 0 0;font-size:.92rem;color:#b3c8cf}
.lc-panelnote a{color:#5fd3e6;font-weight:700}
.level .lc-add{display:inline-block;font-size:.86rem;font-weight:700;color:var(--accent);margin:0 0 12px;text-decoration:none}
.level .lc-add:hover{text-decoration:underline}
.pcard-b .tagrow{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.pcard-b .tagrow .tag{margin-bottom:0}
.pcard-b .tag.tag2{background:#fff6cc;color:#5c4a00}
.lc-band{margin:28px auto 0;max-width:1092px;display:flex;flex-wrap:wrap;gap:12px 20px;align-items:center;justify-content:space-between;background:#fff;border:1px solid var(--line);border-left:4px solid var(--gold);border-radius:12px;padding:16px 20px}
.lc-band p{margin:0;font-size:.98rem;color:var(--ink)}
.lc-band a{font-weight:700;color:var(--accent);white-space:nowrap;text-decoration:none}
.lc-band a:hover{text-decoration:underline}
@media (max-width:560px){.demo-tabs .up{display:none}.demo-tabs{display:flex}.demo-tabs button{flex:1 1 0;justify-content:center;padding:10px 8px;font-size:.88rem}}
