/* Equipment wireframes extend the reference's mint glass edges into recognizable energy assets. */
.hero{background:radial-gradient(ellipse at 73% 49%,#0b2223 0%,#060d10 37%,#030709 76%)}
.equipment-scene{--equipment-glow:.65;position:absolute;inset:0;z-index:0;overflow:hidden}.equipment-svg,.equipment-videos{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.equipment-videos{z-index:1}.equipment-svg{z-index:2;overflow:visible}.equipment-video{position:absolute;left:0;top:0;width:720px;height:360px;transform-origin:0 0;overflow:hidden;mix-blend-mode:screen;transition:opacity .4s}.equipment-video video{display:block;width:100%;height:100%;object-fit:cover;opacity:.28;filter:saturate(.4) contrast(1.15) brightness(.85)}.is-wire-only .equipment-videos{opacity:0}.equipment-videos{transition:opacity .3s}.equipment-svg path,.equipment-svg circle{vector-effect:non-scaling-stroke}.equipment-line{fill:none;stroke:#adf4e9;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.04;opacity:.86}.equipment-line.detail{stroke:#7fd5cb;stroke-width:.70;opacity:.63}.equipment-line.fine{stroke:#85bfb9;stroke-width:.55;opacity:.50}.equipment-line.base{stroke:#63b9af;stroke-width:.72;opacity:.48}.equipment-line.route{stroke:#adfff2;stroke-width:1.05;opacity:.90}.equipment-glow{fill:none;stroke:#6eeee0;stroke-width:3.5;filter:url(#equipment-halo);opacity:var(--equipment-glow)}.equipment-fills path{fill:#2d8f86;opacity:.025;stroke:none}.equipment-fills .glass-top{fill:#9cf6e7;opacity:.06}.equipment-fills .glass-side{fill:#2f9d94;opacity:.04}.equipment-model{transition:opacity .45s}.equipment-model.is-dim{opacity:.10}.energy-route-base{fill:none;stroke:#6ebab1;stroke-width:.85;opacity:.30;stroke-linejoin:round}.energy-current{fill:none;stroke:#c0fff2;stroke-width:1.8;stroke-dasharray:6 70;stroke-linecap:round;filter:drop-shadow(0 0 4px #83ffe0);animation:equipment-current 5s linear infinite}.energy-node{fill:#cefff6;stroke:#8befda;stroke-width:5;stroke-opacity:.12}.equipment-label{fill:#bafff1;font-family:var(--sans);pointer-events:none}.label-bracket{fill:none;stroke:#79d9c7;stroke-width:.8;opacity:.8}.label-code{font-size:8px;letter-spacing:2px;opacity:.7}.label-title{font-size:13px;font-weight:500;letter-spacing:2px}.label-subtitle{font-size:7px;letter-spacing:1.65px;opacity:.55}.is-paused .energy-current{animation-play-state:paused}@keyframes equipment-current{to{stroke-dashoffset:-304}}
.shade{background:linear-gradient(90deg,rgba(3,7,9,.96),rgba(3,7,9,.78) 22%,rgba(3,7,9,.35) 36%,transparent 50%);z-index:3}.grid{opacity:.30;z-index:3}.copy{z-index:4}.lead{max-width:32vw}.equipment-controls{position:absolute;right:4vw;bottom:4.6vh;z-index:6;display:flex;flex-direction:column;gap:13px;align-items:flex-end;font-family:var(--sans);font-size:9px;letter-spacing:.06em}.equipment-focus{display:flex;gap:4px;padding:4px;background:#061211d9;border:1px solid #a1ffed30;backdrop-filter:blur(10px)}.equipment-controls button{font:inherit;color:#a3c8c1;background:transparent;border:0;cursor:pointer;padding:9px 12px;letter-spacing:.08em}.equipment-focus button[aria-pressed="true"]{background:#a8ffdf17;color:#d8fff1}.equipment-controls button:hover{color:#e1fff8}.equipment-controls button:focus-visible,.equipment-controls input:focus-visible{outline:1px solid #a1ffe3;outline-offset:3px}.equipment-options{display:flex;gap:10px;align-items:center}.equipment-options button{font-size:8px;padding:4px 0}.equipment-options button[aria-pressed="true"]{color:#caffec}.equipment-options label{display:flex;gap:6px;align-items:center;color:#85b0a6;font-size:8px}.equipment-options input{width:58px;height:10px;accent-color:#a8f5d4}.equipment-options output{display:inline-block;width:27px;font-variant-numeric:tabular-nums}.equipment-note{position:absolute;right:4vw;bottom:2vh;color:#64867f;font-size:7px;letter-spacing:.16em;z-index:5}.equipment-brand{position:absolute;z-index:5;top:6vh;left:7.77vw;display:flex;align-items:center;gap:12px;font-size:11px;letter-spacing:.22em;text-decoration:none;color:#e6f6f0}.equipment-brand img{width:29px;height:28px}.equipment-focus [data-equipment-focus="overview"]{color:#d0eee3}
@media(min-width:901px){.nav{top:5.8vh;left:auto;right:8.4vw;font-size:.86vw;line-height:1.5}.menu{top:5.8vh;left:auto;right:3.8vw}.nav .lang{display:none}.title{font-size:3.05vw}.vision{font-size:1.78vw}.copy{width:38vw}.lead{font-size:clamp(10px,.78vw,15px)}.bottom .no1{font-size:4.8vw}}
@media(max-width:900px){html,body{height:auto;min-height:100%;overflow-x:hidden;overflow-y:auto}.hero{min-height:990px}.equipment-brand{left:22px;top:26px;font-size:10px}.equipment-brand img{width:23px;height:25px}.nav{display:flex;gap:11px;left:auto;right:22px;top:32px;font-size:9px;line-height:1.4}.nav li:nth-child(2),.nav li:nth-child(4),.nav .lang,.menu{display:none}.copy{left:22px;top:111px;width:calc(100% - 44px)}.kicker{font-size:8px;color:#8bc9ba}.title{font-size:clamp(25px,7.7vw,45px);margin-top:13px}.vision{font-size:clamp(14px,4.4vw,26px);margin-top:8px}.lead{font-size:10px;margin-top:19px;max-width:100%;line-height:1.8;letter-spacing:.06em}.shade{background:linear-gradient(#03070966,transparent 29%,transparent 90%,#03070999)}.equipment-controls{right:22px;left:22px;bottom:109px;align-items:stretch;font-size:9px}.equipment-focus{justify-content:space-between}.equipment-focus button{flex:1;padding:10px 4px}.equipment-options{justify-content:space-between;gap:10px}.equipment-note{display:none}.bottom{left:22px;right:22px;bottom:25px;gap:15px;justify-content:space-between}.bottom h2{font-size:12px}.bottom p{font-size:8px;margin-top:8px}.bottom .no1{font-size:45px}.equipment-label .label-title{font-size:11px}.equipment-label .label-subtitle{font-size:6px}.equipment-label .label-code{font-size:7px}}
@media(prefers-reduced-motion:reduce){.equipment-video,.equipment-videos,.equipment-model{transition:none}}

@media(min-width:901px) and (max-height:639px){html,body{height:auto;min-height:100%;overflow-x:hidden;overflow-y:auto}}
/* The integrated yard uses a finer mesh weight so fencing doesn't obscure equipment. */
.equipment-line.mesh{stroke:#81c9c2;stroke-width:.40;opacity:.40}.connection-caption{fill:#99c8bc;font-family:var(--sans);font-size:7px;letter-spacing:1.3px}.equipment-options{flex-wrap:wrap}.equipment-options #equipment-theme{color:#d4fff0}.equipment-model.is-dim{opacity:.07}
.hero[data-theme="technical"]{background:#f8faf9;color:#242d2a}.hero[data-theme="technical"] .equipment-videos{display:none}.hero[data-theme="technical"] .equipment-glow{display:none}.hero[data-theme="technical"] .equipment-line{stroke:#293432;stroke-width:.8;opacity:1}.hero[data-theme="technical"] .equipment-line.detail{stroke:#37413e;stroke-width:.57;opacity:.95}.hero[data-theme="technical"] .equipment-line.fine{stroke:#68736e;stroke-width:.43;opacity:.80}.hero[data-theme="technical"] .equipment-line.mesh{stroke:#52605b;stroke-width:.43;opacity:.79}.hero[data-theme="technical"] .equipment-line.base{stroke:#707b75;stroke-width:.55;opacity:.80}.hero[data-theme="technical"] .equipment-line.route{stroke:#be855a;stroke-width:.7;opacity:.9}.hero[data-theme="technical"] .equipment-fills path{fill:#e4ebe7;opacity:.06}.hero[data-theme="technical"] .equipment-fills .glass-top{fill:#dce5df;opacity:.13}.hero[data-theme="technical"] .equipment-model image{filter:brightness(.18)}.hero[data-theme="technical"] .energy-current{stroke:#ae774f;filter:none;stroke-width:1.1}.hero[data-theme="technical"] .connection-caption{fill:#49584f}.hero[data-theme="technical"] .equipment-label{fill:#253e32}.hero[data-theme="technical"] .label-bracket{stroke:#779d85}.hero[data-theme="technical"] .shade,.hero[data-theme="technical"] .grid{display:none}.hero[data-theme="technical"] .copy p,.hero[data-theme="technical"] .copy h1,.hero[data-theme="technical"] .bottom p,.hero[data-theme="technical"] .bottom h2,.hero[data-theme="technical"] .nav,.hero[data-theme="technical"] .menu,.hero[data-theme="technical"] .equipment-brand{color:#2a3530}.hero[data-theme="technical"] .equipment-brand img{filter:brightness(.30)}.hero[data-theme="technical"] .vision{color:#67766d}.hero[data-theme="technical"] .equipment-focus{background:#f6faf8e8;border-color:#adbeb3}.hero[data-theme="technical"] .equipment-controls button,.hero[data-theme="technical"] .equipment-options label{color:#4f6658}.hero[data-theme="technical"] .equipment-focus button[aria-pressed="true"]{background:#dce9e1;color:#1b3d29}.hero[data-theme="technical"] .equipment-options #equipment-theme{color:#2c6546}.hero[data-theme="technical"] .equipment-controls input{accent-color:#619c79}.hero[data-theme="technical"] .equipment-note{color:#7b8d81}.hero[data-theme="technical"] #equipment-footage,.hero[data-theme="technical"] .equipment-options label{opacity:.35;pointer-events:none}
.hero[data-theme="technical"] .nav a{color:#2a3530}
@media(min-width:901px) and (max-height:639px){.equipment-controls{position:fixed;bottom:24px}.equipment-note{display:none}}

/* ══ BLUEPRINT 主題（martifer.pt 那種「單色平塗底 ＋ 同色系線稿」）══════
   由 power-the-future.html 的「品牌線稿」按鈕切換，或網址加 ?theme=blueprint。
   線稿用的隱線消除跟 technical 共用（見 js/energy-wireframe.js 的 lines 判斷）。 */
/* BLUEPRINT — flat brand field, one-colour line art, black/white text ramp.
   Field #0a713f = hsl(151 84% 24%): the hue of brand #12a15b, held saturated and dropped to the
   value that plays martifer's #be0016 role. Relative luminance 0.1223 (martifer #be0016 = 0.1101).
   MONOCHROME: every stroke, fill and accent below is hue ~151, value only. The only non-hue
   colours anywhere are pure white and pure black, used for the three-step text ramp. */
.hero[data-theme="blueprint"]{background:#0a713f;color:#000}

/* nothing may sit on top of the flat field */
.hero[data-theme="blueprint"] .equipment-videos,
.hero[data-theme="blueprint"] .equipment-glow,
.hero[data-theme="blueprint"] .shade,
.hero[data-theme="blueprint"] .grid{display:none}

/* LINE RAMP — hsl(151 · 7% / 11% / 15% / 17.5% / 20%), stroke weight and opacity reinforcing.
   Measured contrast of each composited stroke against the field:
   2.80 : 2.22 : 1.68 : 1.42 : 1.24 — monotonic, no two steps within flattening distance. */
.hero[data-theme="blueprint"] .equipment-line{stroke:#032112;stroke-width:.95;opacity:1}
.hero[data-theme="blueprint"] .equipment-line.detail{stroke:#05331d;stroke-width:.68;opacity:.95}
.hero[data-theme="blueprint"] .equipment-line.base{stroke:#084427;stroke-width:.58;opacity:.85}
.hero[data-theme="blueprint"] .equipment-line.fine{stroke:#0b4e2e;stroke-width:.45;opacity:.75}
.hero[data-theme="blueprint"] .equipment-line.mesh{stroke:#0f5734;stroke-width:.38;opacity:.62}

/* the one accent run: the same hue lifted to a light tint, never a second colour */
.hero[data-theme="blueprint"] .equipment-line.route{stroke:#47d18f;stroke-width:.9;opacity:.95}
.hero[data-theme="blueprint"] .energy-current{stroke:#8eebbe;stroke-width:1.2;filter:none;opacity:.95}

/* faces stay almost flat so the field reads as one plane */
.hero[data-theme="blueprint"] .equipment-fills path{fill:#032112;opacity:.06}
.hero[data-theme="blueprint"] .equipment-fills .glass-top{fill:#0f5734;opacity:.11}

/* photo insets are folded into the field hue so they never break the flat plane */
.hero[data-theme="blueprint"] .equipment-model image{filter:grayscale(1) sepia(1) hue-rotate(108deg) saturate(2.6) brightness(.46) contrast(.95);opacity:.5}

/* svg annotation belongs to the drawing, so it sits on the dark end of the ramp */
.hero[data-theme="blueprint"] .equipment-label{fill:#032112;fill-opacity:.88}
.hero[data-theme="blueprint"] .connection-caption{fill:#05331d;fill-opacity:.7}
.hero[data-theme="blueprint"] .label-bracket{stroke:#05331d;stroke-opacity:.55}

/* TEXT RAMP — one size, one weight, three steps and nothing between them:
   static = pure black (3.45:1) · active = pure white (6.09:1) · inactive = black 40% (1.85:1) */
.hero[data-theme="blueprint"] .copy .kicker{color:#000;text-transform:uppercase;letter-spacing:.28em}
.hero[data-theme="blueprint"] .copy h1{color:#fff}                    /* active  -> white */
.hero[data-theme="blueprint"] .copy .vision{color:#000}               /* static  -> black */
.hero[data-theme="blueprint"] .copy .lead{color:rgba(0,0,0,.4)}       /* inactive-> black 40% */
.hero[data-theme="blueprint"] .bottom h2{color:#000}
.hero[data-theme="blueprint"] .bottom p{color:rgba(0,0,0,.4)}
.hero[data-theme="blueprint"] .bottom .no1{color:rgba(0,0,0,.4)}

/* chrome stays on the white register so nothing operable falls into the muted step */
.hero[data-theme="blueprint"] .nav a,
.hero[data-theme="blueprint"] .menu,
.hero[data-theme="blueprint"] .equipment-brand{color:rgba(255,255,255,.85)}
.hero[data-theme="blueprint"] .nav a:hover,
.hero[data-theme="blueprint"] .menu:hover{color:#fff}
.hero[data-theme="blueprint"] .equipment-brand img{filter:brightness(0) invert(1);opacity:.9}

/* the thin right-edge label: white 60%, 11px, 2px tracking */
.hero[data-theme="blueprint"] .equipment-note{color:rgba(255,255,255,.6);font-size:11px;letter-spacing:2px;text-transform:uppercase}

/* controls */
.hero[data-theme="blueprint"] .equipment-focus{background:rgba(3,33,18,.45);border-color:rgba(255,255,255,.24)}
.hero[data-theme="blueprint"] .equipment-focus button[aria-pressed="true"]{background:#fff;color:#0a713f}
.hero[data-theme="blueprint"] .equipment-themes{border-color:rgba(255,255,255,.24)}
.hero[data-theme="blueprint"] .equipment-themes button[aria-pressed="true"]{background:#fff;color:#0a713f}
.hero[data-theme="blueprint"] .equipment-controls button,
.hero[data-theme="blueprint"] .equipment-options label{color:rgba(255,255,255,.75)}
.hero[data-theme="blueprint"] .equipment-controls button:hover{color:#fff}
.hero[data-theme="blueprint"] .equipment-controls button:focus-visible,
.hero[data-theme="blueprint"] .equipment-controls input:focus-visible{outline:1px solid #fff;outline-offset:3px}
.hero[data-theme="blueprint"] .equipment-controls input{accent-color:#032112}

/* footage and the per-layer sliders are meaningless on a flat field */
.hero[data-theme="blueprint"] #equipment-footage,
.hero[data-theme="blueprint"] .equipment-options label{opacity:.35;pointer-events:none}
