:root{
  --bg:#f4f6fa;--panel:#ffffff;--panel-2:#eef2f7;--line:#d4dbe6;--line-soft:#e6ebf2;
  --text:#3c4a5a;--strong:#16202c;--muted:#76839a;
  --accent:#2563eb;--accent-2:#1e40af;--hot:#ea580c;--fire:#d97706;
  --metal:#dbe3ee;--metal-2:#eef3f9;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --sans:ui-sans-serif,system-ui,-apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;-webkit-text-size-adjust:100%}
body{
  background:var(--bg);color:var(--text);font-family:var(--sans);
  font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;
  background-image:radial-gradient(ellipse 900px 520px at 18% 0%,#ffffff 0%,transparent 62%);
  overflow-x:hidden;
}
.shell{max-width:1560px;margin:0 auto;padding:22px 24px 60px;
  padding-left:max(24px,env(safe-area-inset-left));
  padding-right:max(24px,env(safe-area-inset-right));}

.topbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  padding:10px 16px;margin-bottom:20px;
  background:var(--panel);border:1px solid var(--line-soft);border-radius:12px;font-size:13px;}
.topbar .brand{display:flex;align-items:center;gap:8px;color:var(--strong);font-weight:600;text-decoration:none;}
.topbar .brand .dot{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 10px var(--accent);flex:none;}
.topbar .brand span{color:var(--accent)}
.topbar .divider{color:#aeb9c9}
.topbar .back{color:var(--text);text-decoration:none;font-weight:500}
.topbar .back:hover{color:var(--strong)}
.topbar .spacer{flex:1}

/* Breadcrumb: topbar 面包屑导航（取代原「← Back to XXX」返回链接） */
.topbar .breadcrumb{min-width:0;overflow:hidden;font-size:12.5px;line-height:1.4;color:var(--muted);}
.breadcrumb ol{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:0;list-style:none;}
.breadcrumb li{display:inline-flex;align-items:center;min-width:0;max-width:100%;}
.breadcrumb li::after{content:'\203A';margin:0 7px;color:#aeb9c9;font-size:12px;flex:none;}
.breadcrumb li:last-child::after{content:none;margin:0;}
.breadcrumb a,.breadcrumb li span{display:inline-block;max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-decoration:none;}
.breadcrumb a{color:var(--accent);font-weight:500;}
.breadcrumb a:hover{color:var(--accent-2);text-decoration:underline;}
.breadcrumb li span{color:var(--muted);font-weight:500;}

.lang-dropdown{position:relative}
.lang-dropdown summary{
  list-style:none;cursor:pointer;
  display:inline-flex;align-items:center;gap:6px;
  padding:6px 12px;
  background:var(--panel-2);border:1px solid var(--line);border-radius:9px;
  color:var(--text);font-size:12px;font-weight:600;
}
.lang-dropdown summary::-webkit-details-marker{display:none}
.lang-dropdown summary::after{content:'\25BE';font-size:10px;color:var(--muted);margin-left:2px}
.lang-menu{
  position:absolute;right:0;top:calc(100% + 6px);
  min-width:150px;padding:4px;
  background:var(--panel);border:1px solid var(--line);border-radius:10px;
  box-shadow:0 12px 32px -8px rgba(22,32,44,.18);
  z-index:200;
}
.lang-menu a{
  display:block;padding:8px 12px;border-radius:7px;
  color:var(--text);text-decoration:none;font-size:12.5px;font-weight:500;
}
.lang-menu a:hover{background:var(--panel-2);color:var(--strong)}
.lang-menu a[aria-current="true"]{background:#e8f0fe;color:var(--accent-2);font-weight:700}

.layout{display:grid;grid-template-columns:minmax(0,1fr) 370px;gap:26px;align-items:start;}
/* Narrow screens: single column. Uses display:contents so the existing
   stage/side wrappers dissolve into one ordered column (DOM & JS untouched);
   the stage's card look is re-applied to .scroll below. Desktop is unaffected. */
@media (max-width:1160px){
  .layout{display:flex;flex-direction:column;gap:18px;align-items:stretch}
  .stage,.side{display:contents}
  .stage-head{order:1}
  .scroll{order:2;background:linear-gradient(180deg,#ffffff,#f7f9fc);
    border:1px solid var(--line-soft);border-radius:12px;padding:6px 0;overflow:hidden}
  .energy-chain{order:3}
  .stage-bar{order:5}
  .side-block{order:6}
  .side-block{margin-bottom:0}
}

.stage{background:linear-gradient(180deg,#ffffff 0%,#f7f9fc 100%);
  border:1px solid var(--line-soft);border-radius:14px;padding:6px;overflow:hidden;
  box-shadow:0 0 0 1px rgba(22,32,44,.04),0 24px 60px -30px rgba(22,32,44,.18),inset 0 1px 0 #ffffff;}
.stage-head{padding:18px 18px 12px;border-bottom:1px solid var(--line-soft)}
.stage-head h1{margin:0 0 8px;font-size:24px;font-weight:600;color:var(--strong);letter-spacing:.01em;line-height:1.25;}
.stage-head .lede{margin:0;font-size:13.5px;color:var(--muted);line-height:1.7;}
.stage-head .lede em{color:var(--accent-2);font-style:normal}

.scroll{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}
#scene{display:block;width:100%;height:auto;transition:min-width .25s ease}
.stage[data-view="zoom"] #scene{min-width:1000px}
.stage[data-view="fit"] #scene{min-width:0}
@media (max-width:768px){
  /* default view is "fit" (whole diagram); tapping Zoom magnifies to 1:1 so
     the labels stay crisp and the stage pans horizontally. */
  .stage[data-view="zoom"] #scene{min-width:1200px}
}
.scroll::-webkit-scrollbar{height:6px}
.scroll::-webkit-scrollbar-thumb{background:#c3ccd9;border-radius:3px}

.energy-chain{
  display:flex;align-items:center;gap:4px;flex-wrap:wrap;
  padding:12px 16px;margin:0 6px;
  border-top:1px solid var(--line-soft);
  font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;
  transition:background .3s;
}
.energy-chain .ec-title{flex-basis:100%;margin-bottom:2px;color:var(--muted);font-size:9.5px;letter-spacing:.14em;}
.ec-step{display:flex;align-items:center;gap:6px;padding:6px 10px;border-radius:7px;
  background:var(--panel-2);border:1px solid var(--line);color:var(--muted);font-size:10px;font-weight:600;
  transition:all .3s;white-space:nowrap;}
.ec-step .ec-dot{width:7px;height:7px;border-radius:50%;background:#9aa6b8;flex:none;transition:background .3s, box-shadow .3s;}
.ec-arrow{color:#9aa6b8;font-size:12px;flex:none;transition:color .3s;}
.energy-chain.is-active .ec-step{background:#fff7ed;border-color:#f59e0b;color:#b45309;}
.energy-chain.is-active .ec-step .ec-dot{background:#ea580c;box-shadow:0 0 8px #ea580c;}
.energy-chain.is-active .ec-arrow{color:#ea580c;}
@media (max-width:768px){
  .energy-chain{padding:10px 12px;font-size:9px;}
  .ec-step{padding:5px 8px;font-size:9px;}
  .ec-arrow{display:none}
}

.stage-bar{display:flex;align-items:center;justify-content:flex-end;gap:10px;
  padding:10px 14px 8px;border-top:1px solid var(--line-soft);
  font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;}
.stage-bar .hint{margin-right:auto;color:#9aa6b8;font-size:10px;letter-spacing:.06em;text-transform:none;font-family:var(--sans);}

.view-toggle{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;overflow:hidden;background:var(--panel-2);}
.view-toggle button{border:0;border-radius:0;padding:7px 12px;background:transparent;color:var(--muted);font-size:10.5px;letter-spacing:.1em;}
.view-toggle button + button{border-left:1px solid var(--line)}
.view-toggle button[aria-pressed="true"]{background:#e8f0fe;color:var(--accent-2)}

button{font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;
  border-radius:999px;padding:7px 16px;border:1px solid var(--line);
  background:#ffffff;color:var(--text);
  transition:background .18s,border-color .18s,color .18s,transform .12s;
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;}
button:hover{background:#eef2f7;border-color:#c3ccd9;color:var(--strong)}
button:active{transform:scale(.97)}
button:focus-visible{outline:1px solid var(--accent);outline-offset:3px}

/* ============ 外壳态（shell state: glass） ============ */
.shell-layer{transition:opacity .35s ease}
.stage[data-shell="glass"] .shell-layer{opacity:.15;pointer-events:none}

/* 机器类目 SVG 外观（材质/配色/管道/动画）见 assets/machines/style.css */

.side{position:sticky;top:22px}
@media (max-width:1160px){.side{position:static}}

.side-block{background:var(--panel);border:1px solid var(--line-soft);border-radius:12px;padding:16px 18px;margin-bottom:16px;}
.side-block h2{margin:0 0 8px;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);font-weight:500;}
.side-block p{margin:0 0 8px;font-size:13.5px;line-height:1.75;color:var(--text)}
.side-block p:last-child{margin-bottom:0}
.side-block p em{color:var(--fire);font-style:normal}
.side-block .chain-inline{
  display:flex;align-items:center;gap:5px;flex-wrap:wrap;
  margin-top:8px;padding-top:10px;border-top:1px dashed var(--line);
  font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--muted);
}
.side-block .chain-inline .ci{padding:3px 7px;border-radius:5px;background:var(--panel-2);border:1px solid var(--line);}
.side-block .chain-inline .ci.hot{color:#b45309;border-color:#f59e0b;background:#fff7ed;}

.tabs-section{margin-top:34px}
.tabs-section > h2{margin:0 0 14px;font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--strong);font-weight:500;}
.tabs{display:flex;flex-wrap:wrap;gap:2px;border-bottom:1px solid var(--line-soft);margin-bottom:0;}
.tab-btn{border:0;border-radius:0;padding:11px 18px;background:transparent;color:var(--muted);
  font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  border-bottom:2px solid transparent;margin-bottom:-1px;}
.tab-btn:hover{color:var(--strong);background:transparent;border-color:transparent;border-bottom-color:#c3ccd9}
.tab-btn.is-active{color:var(--accent-2);border-bottom-color:var(--accent)}
.tab-panel{padding:20px 4px 4px;display:none}
.tab-panel.is-active{display:block}
.tab-panel h3{margin:0 0 10px;font-size:15px;font-weight:600;color:var(--strong);}
.tab-panel h3 + p{margin-top:0}
.tab-panel p{margin:0 0 12px;font-size:13.5px;line-height:1.8;color:var(--text)}
.tab-panel ul{margin:0 0 12px;padding-left:20px;font-size:13.5px;line-height:1.8;color:var(--text);}

.comp-list{display:flex;flex-direction:column;gap:2px}
.comp-row{display:flex;align-items:center;gap:14px;padding:11px 14px;border-radius:9px;border:1px solid transparent;background:transparent;cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s;}
.comp-row:hover{background:#f4f7fb;border-color:var(--line-soft);box-shadow:inset 2px 0 0 var(--accent)}
.comp-row .comp-no{font-family:var(--mono);font-size:11px;color:var(--muted);flex:none;width:24px;}
.comp-row .comp-name{color:var(--strong);font-weight:500;font-size:14px;flex:none;min-width:150px;}
.comp-row .comp-sub{color:var(--muted);font-size:12.5px;flex:1;}

.faq-item{border-bottom:1px solid var(--line-soft);padding:14px 0;}
.faq-item:last-child{border-bottom:0}
.faq-item h4{margin:0 0 6px;font-size:14px;font-weight:600;color:var(--strong);}
.faq-item p{margin:0;font-size:13.5px;line-height:1.75;color:var(--text)}

.misconceptions{margin-top:34px}
.misconceptions > h2{margin:0 0 14px;font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--strong);font-weight:500;}
.mis-list{display:flex;flex-direction:column;gap:10px}
.mis-item{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:14px 16px;border-radius:10px;background:var(--panel);border:1px solid var(--line-soft);}
@media (max-width:640px){.mis-item{grid-template-columns:1fr}}
.mis-wrong,.mis-right{font-size:13px;line-height:1.7}
.mis-wrong strong{color:#dc2626;font-weight:600}
.mis-right strong{color:#059669;font-weight:600}
.mis-wrong span,.mis-right span{color:var(--text)}
.mis-wrong::before{content:'❌ ';color:#dc2626}
.mis-right::before{content:'✅ ';color:#059669}

.related-section{margin-top:34px}
.related-section > h2{margin:0 0 14px;font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--strong);font-weight:500;}
.related-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;}
.related-card{display:block;padding:16px 18px;background:var(--panel);border:1px solid var(--line-soft);border-radius:11px;text-decoration:none;transition:border-color .15s,background .15s;}
.related-card:hover{border-color:var(--accent);background:#f7faff}
.related-card .rc-tag{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin-bottom:5px;}
.related-card .rc-title{font-size:14px;font-weight:600;color:var(--strong);line-height:1.4;}
.related-card .rc-desc{margin-top:4px;font-size:12.5px;color:var(--muted);line-height:1.6;}

.disclaimer{margin-top:34px;padding:14px 18px;background:#ffffff;border:1px solid var(--line-soft);border-left:3px solid #d97706;border-radius:9px;font-size:12.5px;line-height:1.75;color:var(--muted);}
.disclaimer strong{color:#b45309;font-weight:500}

.ad-slot{min-height:15px;margin-top:32px;margin-bottom:8px;border:1px dashed var(--line-soft);border-radius:10px;}
@media (min-width:768px){.ad-slot{min-height:90px}}

footer{margin-top:24px;padding-top:22px;border-top:1px solid var(--line-soft);color:var(--muted);font-size:13px;text-align:center;line-height:1.9;}
footer p{margin:0}
footer a{color:var(--accent);text-decoration:none}
footer a:hover{text-decoration:underline}

.part{transition:opacity .32s ease;cursor:pointer}
.stage.has-focus .part{opacity:.2}
.stage.has-focus .part.is-active{opacity:1}

/* 机器类目 SVG 外观（零件材质/配色）见 assets/machines/style.css */

.tag{fill:#475569;font-family:var(--mono);font-size:13px;letter-spacing:.02em;transition:fill .3s;pointer-events:none}
.part.is-active .tag{fill:var(--accent-2)}
.tag-sm{font-size:10.5px;fill:#64748b}
.part.is-active .tag-sm{fill:var(--accent)}

/* 机器类目 SVG 动画与管道流动见 assets/machines/style.css */

@media (max-width:768px){
  .shell{padding:14px 12px 42px}
  .topbar{padding:9px 12px;margin-bottom:14px;font-size:12px}
  .topbar .brand{font-size:13px}
  .topbar .breadcrumb{font-size:11.5px}
  .stage{border-radius:10px;padding:4px 0}
  .stage-head{padding:15px 15px 10px}
  .stage-head h1{font-size:19px}
  .stage-head .lede{font-size:13px}
  .stage-bar{padding:9px 12px 7px;font-size:10px}
  .stage-bar .hint{display:none}
  .side-block{padding:14px 15px}
  .side-block p{font-size:13px}
  .tabs-section{margin-top:26px}
  .tab-btn{padding:10px 13px;font-size:10px}
  .tab-panel{padding:16px 2px 2px}
  .comp-row{flex-wrap:wrap;gap:8px}
  .comp-row .comp-name{min-width:0}
  .comp-row .comp-sub{flex-basis:100%;order:3}
  .mis-item{padding:12px 14px}
  .related-grid{grid-template-columns:1fr}
  footer{font-size:12px}
}
@media (max-width:480px){
  .shell{padding:12px 10px 36px}
  .stage-head h1{font-size:17.5px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}
}

/* ============ Index / landing pages ============ */
.idx-hero{padding:26px 0 6px}
.idx-hero h1{margin:0 0 10px;font-size:26px;font-weight:600;color:var(--strong);letter-spacing:.01em;line-height:1.25}
.idx-hero p{margin:0;font-size:14px;color:var(--muted);line-height:1.75;max-width:780px}
.idx-hero p em{color:var(--accent-2);font-style:normal}
.idx-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;margin:24px 0 8px}
.idx-card{display:block;padding:18px 20px;background:var(--panel);border:1px solid var(--line-soft);border-radius:12px;text-decoration:none;transition:border-color .15s,background .15s}
.idx-card:hover{border-color:var(--accent);background:#f7faff}
.idx-card .ic-tag{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin-bottom:6px}
.idx-card .ic-title{font-size:15px;font-weight:600;color:var(--strong);line-height:1.4}
.idx-card .ic-desc{margin-top:5px;font-size:12.5px;color:var(--muted);line-height:1.6}
@media (max-width:640px){.idx-hero h1{font-size:21px}.idx-grid{grid-template-columns:1fr}}
.idx-grid--media{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}
.idx-card.has-media{padding:0;overflow:hidden;display:flex;flex-direction:column}
.idx-card.has-media .ic-media{display:block;aspect-ratio:16/9;background:linear-gradient(160deg,#eef4ff 0%,#dfe9f7 100%);border-bottom:1px solid var(--line-soft);overflow:hidden}
.idx-card.has-media .ic-media svg{display:block;width:100%;height:100%}
.idx-card.has-media .ic-body{padding:14px 16px 16px;display:flex;flex-direction:column}
