/* 合作流程与报价页 · 沿用媒体报道页的配色和排版 */
:root{color-scheme:dark;--bg:#080b0d;--panel:#101416;--panel2:#15191b;--active:#232729;--line:#323638;--text:#f4f4f4;--soft:#d6dadb;--muted:#9b9fa2;--quiet:#71777a;--accent:#5279ff;--accent-soft:#8ea6ff;--gutter:clamp(20px,4.4vw,64px)}
*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--bg)}
body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC","Noto Sans CJK SC","Source Han Sans SC","Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:400;-webkit-font-smoothing:antialiased;line-height:1.75}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;cursor:pointer}
a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid #7895ff;outline-offset:5px}
h1,h2,h3,h4,p,figure,dl,dd,ol,ul{margin:0}
ol,ul{padding:0;list-style:none}
::selection{background:#d4d9dc;color:#0c1012}
.skip-link{position:absolute;z-index:200;left:20px;top:-80px;padding:10px 18px;border-radius:999px;background:var(--text);color:var(--bg)}
.skip-link:focus{top:100px}
.container{max-width:1280px;padding:0 var(--gutter);margin:auto}
.eyebrow{font-size:11px;color:var(--muted);letter-spacing:.18em;font-weight:500}

/* 首屏 */
.hero{text-align:center;padding:72px 0 54px}
.hero h1{font-size:clamp(40px,5.8vw,80px);font-weight:500;letter-spacing:-.05em;line-height:1.16;margin:22px 0 26px}
.hero h1 span{display:block}
.hero p{font-size:16px;line-height:1.9;color:#b6bdc0;margin:0 auto;max-width:680px}
.hero-meta{display:flex;justify-content:center;flex-wrap:wrap;gap:8px 20px;font-size:12px;color:var(--quiet);margin-top:28px}
.hero-meta span+span{border-left:1px solid var(--line);padding-left:20px}
.hero-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:12px;margin-top:34px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:46px;padding:10px 22px;border:1px solid #3f4548;border-radius:999px;font-size:14px;background:transparent;transition:background .2s,border-color .2s}
.btn:hover{background:var(--active)}
.btn.primary{background:var(--text);color:var(--bg);border-color:var(--text)}
.btn.primary:hover{background:#dfe3e6}

.jump-wrap{display:flex;justify-content:center;margin:0 0 72px}
.jump-nav{display:flex;padding:6px;gap:4px;border:1px solid #3e4447;border-radius:999px;max-width:100%;overflow-x:auto;scrollbar-width:none}
.jump-nav::-webkit-scrollbar{display:none}
.jump-nav a{padding:10px 20px;font-size:13px;white-space:nowrap;border-radius:999px;color:#adb5b9}
.jump-nav a:hover{background:#1c2225;color:var(--text)}

/* 一页看懂 */
.digest{border:1px solid var(--line);border-radius:20px;background:var(--panel);padding:34px clamp(20px,3.4vw,44px);margin-bottom:24px}
.digest h2{font-size:22px;font-weight:500;letter-spacing:-.02em;margin-bottom:6px}
.digest>p{color:var(--muted);font-size:14px}
.digest dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 40px;margin-top:22px}
.digest dl div{display:grid;grid-template-columns:96px 1fr;gap:16px;padding:14px 0;border-top:1px solid var(--line)}
.digest dt{font-size:13px;color:var(--muted)}
.digest dd{font-size:14.5px;color:var(--soft);line-height:1.75}

/* 分节 */
.feature{padding:72px 0 80px;border-top:1px solid var(--line);scroll-margin-top:100px}
.feature-label{display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:12px;color:var(--muted);letter-spacing:.08em;margin-bottom:30px}
.feature-label .index{color:var(--accent-soft);margin-right:14px}
.feature-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px 7%;align-items:end;margin-bottom:44px}
.feature-head h2{font-size:clamp(30px,3.2vw,46px);font-weight:500;letter-spacing:-.04em;line-height:1.28}
.feature-head p{font-size:15.5px;line-height:1.9;color:#b6bdc0}
.sub{font-size:19px;font-weight:500;letter-spacing:-.01em;margin:52px 0 18px}
.sub small{display:block;font-size:13px;font-weight:400;color:var(--muted);margin-top:6px;letter-spacing:0}
.note{font-size:13.5px;color:var(--muted);line-height:1.85;margin-top:16px}
.note strong{color:var(--soft);font-weight:500}

/* 卡片 */
.cards{display:grid;gap:14px}
.cards.c3{grid-template-columns:repeat(3,minmax(0,1fr))}
.cards.c2{grid-template-columns:repeat(2,minmax(0,1fr))}
.cards.c5{grid-template-columns:repeat(5,minmax(0,1fr))}
.card{position:relative;border:1px solid var(--line);border-radius:18px;background:var(--panel);padding:26px 24px 24px;display:flex;flex-direction:column;gap:12px}
.card h3{font-size:18px;font-weight:500;letter-spacing:-.01em;line-height:1.45}
.card p{font-size:14px;line-height:1.8;color:#b6bdc0}
.card .tag{align-self:flex-start;font-size:11px;letter-spacing:.06em;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:3px 10px}
.card .tag.on{color:#dfe6ff;border-color:#3d55b8;background:#141d3a}
.card ul{display:grid;gap:7px;margin-top:2px}
.card li{position:relative;padding-left:16px;font-size:13.5px;line-height:1.7;color:#b6bdc0}
.card li::before{content:"";position:absolute;left:2px;top:.72em;width:5px;height:5px;border-radius:50%;background:#4b5357}
.card .k{font-size:12px;color:var(--quiet);margin-top:4px}
.card.is-default{border-color:#3d55b8;background:linear-gradient(180deg,#121a33 0%,var(--panel) 62%)}

/* 流程 */
.steps{display:grid;gap:0;border-top:1px solid var(--line);counter-reset:step}
.step{display:grid;grid-template-columns:120px minmax(0,1.1fr) minmax(0,1fr) minmax(0,1fr);gap:24px;padding:26px 0;border-bottom:1px solid var(--line)}
.step-no{font-size:12px;color:var(--accent-soft);letter-spacing:.1em;padding-top:4px}
.step h3{font-size:19px;font-weight:500;line-height:1.45}
.step h3+p{font-size:13.5px;color:var(--muted);margin-top:8px;line-height:1.75}
.step dl div+div{margin-top:0}
.step dt{font-size:11.5px;color:var(--quiet);letter-spacing:.06em;margin-bottom:6px}
.step dd{font-size:14px;line-height:1.8;color:#c3c9cc}
.timeline{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:22px}
.timeline .card h3{font-size:16px}
.timeline .card strong{font-size:26px;font-weight:500;letter-spacing:-.03em;color:var(--text)}

.checklist{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 32px;border-top:1px solid var(--line)}
.checklist li{display:grid;grid-template-columns:28px 1fr;gap:8px;padding:16px 0;border-bottom:1px solid var(--line);font-size:14.5px;color:var(--soft)}
.checklist li span{color:var(--accent-soft);font-size:12px;padding-top:3px}
.checklist li small{display:block;color:var(--muted);font-size:13px;margin-top:3px}

/* 表格 */
.table-wrap{border:1px solid var(--line);border-radius:18px;overflow:hidden;background:var(--panel)}
.table-scroll{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:14px}
th,td{padding:15px 18px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line);line-height:1.7}
thead th{font-size:12px;font-weight:500;color:var(--muted);letter-spacing:.04em;background:var(--panel2)}
tbody tr:last-child td,tbody tr:last-child th{border-bottom:0}
tbody th{font-weight:500;color:var(--text);white-space:nowrap}
td{color:#c3c9cc}
td .pill{display:inline-block;font-size:12.5px;padding:3px 11px;border-radius:999px;border:1px solid var(--line);color:var(--soft);white-space:nowrap}
td .pill.up{border-color:#3d55b8;color:#dfe6ff;background:#141d3a}

/* 两列清单 */
.split{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.list-card{border:1px solid var(--line);border-radius:18px;background:var(--panel);padding:26px 26px 22px}
.list-card h3{font-size:17px;font-weight:500;margin-bottom:12px}
.list-card li{position:relative;padding:11px 0 11px 22px;border-top:1px solid #23282a;font-size:14px;line-height:1.75;color:#c3c9cc}
.list-card li:first-child{border-top:0}
.list-card li::before{content:"";position:absolute;left:2px;top:1.32em;width:8px;height:1px;background:var(--accent-soft)}
.list-card li b{color:var(--text);font-weight:500}
.list-card.minus li::before{background:#6f777b}

/* 阶段条 */
.stage-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:4px 0 8px}
.stage-bar span{font-size:13px;padding:7px 14px;border:1px solid var(--line);border-radius:999px;color:var(--soft);background:var(--panel)}
.stage-bar i{width:14px;height:1px;background:#4b5357}

/* 案例 */
.case-intro{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:36px;align-items:center;border:1px solid var(--line);border-radius:20px;background:var(--panel);padding:16px 36px 16px 16px;margin-bottom:18px}
.case-intro img{width:100%;height:auto;border-radius:12px;display:block}
.case-intro .btn{margin-top:22px}
.case-facts div{display:grid;grid-template-columns:56px 1fr;gap:14px;padding:11px 0;border-top:1px solid var(--line)}
.case-facts div:first-child{border-top:0}
.case-facts dt{font-size:12.5px;color:var(--muted)}
.case-facts dd{font-size:14.5px;color:var(--soft);line-height:1.7}
.case-stages{display:grid;gap:14px}
.case-stage{display:grid;grid-template-columns:72px minmax(0,1fr);gap:8px;border:1px solid var(--line);border-radius:18px;background:var(--panel);padding:28px 28px 28px 22px}
.cs-no{font-size:13px;color:var(--accent-soft);letter-spacing:.1em;padding-top:5px}
.cs-body h3{font-size:20px;font-weight:500;letter-spacing:-.01em;margin-bottom:12px}
.cs-text{font-size:15px;line-height:1.95;color:#bfc5c8;max-width:880px}
.cs-text p+p,.cs-text p+ul{margin-top:10px}
.cs-text ul{display:grid;gap:8px}
.cs-text li{position:relative;padding-left:18px}
.cs-text li::before{content:"";position:absolute;left:2px;top:.85em;width:8px;height:1px;background:var(--accent-soft)}
.cs-text b{color:var(--text);font-weight:500}
.cs-figs{display:grid;gap:12px;margin-top:20px}
.cs-figs.n1{grid-template-columns:minmax(0,1fr)}
.cs-figs.n2{grid-template-columns:repeat(2,minmax(0,1fr))}
.cs-figs.n3{grid-template-columns:repeat(3,minmax(0,1fr))}
.cs-figs figure{margin:0}
.cs-figs img{width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;border-radius:10px;background:#0c0f11;display:block}
.cs-figs figure:first-child img[alt*="三视图"]{object-fit:contain;background:#f2f2f0}
.cs-figs figcaption{font-size:12.5px;color:var(--muted);margin-top:8px;line-height:1.6}
.case-ex{border:1px solid var(--line);border-radius:18px;background:var(--panel);padding:28px clamp(18px,2.6vw,32px);margin-top:14px}
.case-ex .ex-head{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}
.case-ex .tag{align-self:flex-start;font-size:11px;letter-spacing:.06em;color:#dfe6ff;border:1px solid #3d55b8;background:#141d3a;border-radius:999px;padding:3px 10px}
.case-ex h4{font-size:20px;font-weight:500;letter-spacing:-.01em;margin:0}
.case-ex>p{font-size:15px;line-height:1.95;color:#bfc5c8;max-width:900px;margin-bottom:18px}
.case-ex .table-wrap{background:var(--panel2)}
.case-ex .cs-figs{margin:0 0 4px}

/* 常见问题 */
.faq-tools{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin-bottom:26px}
.faq-tools .chips{display:flex;flex-wrap:wrap;gap:8px}
.faq-tools .chips a{font-size:13px;padding:7px 14px;border:1px solid var(--line);border-radius:999px;color:#adb5b9}
.faq-tools .chips a:hover{background:#1c2225;color:var(--text)}
.faq-toggle{font-size:13px;padding:7px 16px;border:1px solid #3f4548;border-radius:999px;background:none}
.faq-toggle:hover{background:var(--active)}
.faq-group{scroll-margin-top:100px}
.faq-group+.faq-group{margin-top:46px}
.faq-group h3{font-size:13px;font-weight:500;color:var(--muted);letter-spacing:.08em;margin-bottom:10px}
.faq-group h3 span{color:var(--accent-soft);margin-right:12px}
.qa{border-top:1px solid var(--line)}
.faq-group .qa:last-child{border-bottom:1px solid var(--line)}
.qa summary{list-style:none;display:grid;grid-template-columns:1fr 28px;gap:16px;align-items:center;padding:20px 0;cursor:pointer;font-size:17px;line-height:1.55}
.qa summary::-webkit-details-marker{display:none}
.qa summary::after{content:"";width:28px;height:28px;border:1px solid #3f4548;border-radius:50%;background:linear-gradient(var(--soft),var(--soft)) center/10px 1px no-repeat,linear-gradient(var(--soft),var(--soft)) center/1px 10px no-repeat;transition:transform .2s}
.qa[open] summary::after{background:linear-gradient(var(--soft),var(--soft)) center/10px 1px no-repeat}
.qa summary:hover{color:#fff}
.qa .a{padding:0 44px 24px 0;font-size:15px;line-height:1.95;color:#bfc5c8;max-width:900px}
.qa .a p+p,.qa .a p+ul,.qa .a ul+p{margin-top:10px}
.qa .a ul{display:grid;gap:6px}
.qa .a li{position:relative;padding-left:16px}
.qa .a li::before{content:"";position:absolute;left:2px;top:.85em;width:5px;height:5px;border-radius:50%;background:#4b5357}
.qa .a b{color:var(--text);font-weight:500}
.qa .a a{color:var(--accent-soft);border-bottom:1px solid #34437a}

/* 收尾 */
.closing{border:1px solid var(--line);border-radius:22px;background:radial-gradient(ellipse at 50% 0%,#18224a 0%,var(--panel) 62%);padding:56px clamp(20px,4vw,56px);text-align:center;margin:8px 0 88px}
.closing h2{font-size:clamp(28px,3vw,40px);font-weight:500;letter-spacing:-.04em;line-height:1.3}
.closing p{color:#b6bdc0;font-size:15px;line-height:1.9;max-width:640px;margin:16px auto 0}
.closing .hero-actions{margin-top:28px}
.updated{font-size:12px;color:var(--quiet);text-align:center;margin:-60px 0 70px}

@media(max-width:1100px){
  .cards.c5{grid-template-columns:repeat(3,minmax(0,1fr))}
  .step{grid-template-columns:90px minmax(0,1fr) minmax(0,1fr);}
  .step .step-main{grid-column:2 / 4}
  .step dl:first-of-type{grid-column:2}
}
@media(max-width:860px){
  .feature-head{grid-template-columns:1fr}
  .cards.c3,.cards.c2,.split,.timeline{grid-template-columns:1fr}
  .cards.c5{grid-template-columns:repeat(2,minmax(0,1fr))}
  .digest dl{grid-template-columns:1fr}
  .checklist{grid-template-columns:1fr}
  .step{grid-template-columns:1fr;gap:12px}
  .step .step-main,.step dl:first-of-type{grid-column:auto}
  .case-intro{grid-template-columns:1fr;padding:14px 14px 24px}
  .case-intro>div{padding:0 8px}
  .case-stage{grid-template-columns:1fr;padding:22px 20px}
  .cs-figs.n3{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:600px){
  .cs-figs.n2,.cs-figs.n3{grid-template-columns:1fr}
}
@media(max-width:600px){
  .hero{padding:44px 0 40px}
  .hero-meta span+span{border-left:0;padding-left:0}
  .jump-wrap{margin-bottom:48px;justify-content:flex-start}
  .cards.c5{grid-template-columns:1fr}
  .digest dl div{grid-template-columns:1fr;gap:4px}
  .feature{padding:52px 0 60px}
  .qa summary{font-size:16px}
  .qa .a{padding-right:0}
  th,td{padding:12px 14px}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.qa summary::after{transition:none}}
@media(max-width:600px){.hero p br{display:none}}
/* v1.17 手机上页内跳转按钮换行显示，不再藏在右边要横着滑 */
@media(max-width:860px){.jump-nav{flex-wrap:wrap;justify-content:center;overflow:visible;border-radius:22px}.jump-nav a{padding:9px 14px}}
/* v1.17 手机上表格收紧单元格，较宽的表格上方提示可以左右滑动（提示由 site-shell.js 按需显示） */
@media(max-width:600px){th,td{padding:11px 10px;font-size:13px}td .pill{font-size:12px;padding:3px 8px}}
.table-swipe-hint{margin:0 0 8px;font-size:12px;color:var(--muted)}
/* UI 界面设计宽卡片（官网 v1.44） */
.ui-wide{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:28px;align-items:center;margin-top:14px}
.ui-wide-text{display:flex;flex-direction:column;gap:12px}
.ui-wide-text .tag{align-self:flex-start}
.ui-wide-more{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;color:var(--accent-soft);text-decoration:underline;text-underline-offset:3px}
.ui-wide-more .ri{width:16px;height:16px}
.ui-wide-fig{display:block;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#0b0e10;transition:border-color .2s}
.ui-wide-fig:hover{border-color:var(--accent)}
.ui-wide-fig img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover}
.ui-wide-fig span{display:block;padding:10px 14px;font-size:13px;color:var(--muted)}
@media(max-width:900px){.ui-wide{grid-template-columns:1fr}}
/* guide-entry:start 合作页“AI 视频指南”一节（官网指南页/合作页入口.py 写入，不要手改） */
.g-entry .list-card li a{color:inherit;transition:color .2s}
.g-entry .list-card li a:hover{color:var(--accent-soft)}
.g-entry-go,.faq-more a{display:inline-flex;align-items:center;gap:4px;color:var(--accent-soft)}
.g-entry-go{margin-top:22px;font-size:15px}
.g-entry-go:hover,.faq-more a:hover{color:var(--text)}
.g-entry-go .ri,.faq-more .ri{width:15px;height:15px;flex:none}
.qa .a p.faq-more{margin-top:4px;font-size:14px}
.g-entry .g-wide{margin-bottom:14px}
.g-entry .g-wide ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:48px}
.g-entry .g-wide li:nth-child(2){border-top:0}
@media(max-width:1000px){.g-entry .cards.c3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.g-entry .cards.c3,.g-entry .cards.c2{grid-template-columns:1fr}.g-entry .g-wide ul{grid-template-columns:1fr}.g-entry .g-wide li:nth-child(2){border-top:1px solid #23282a}}
/* guide-entry:end */

/* ===== 解决方案页追加样式（官网解决方案页/style_extra.css，build.py 拼在合作页 style.css 后面） ===== */
.hero p+p{margin-top:10px}
.inline-link{color:var(--accent-soft);text-decoration:underline;text-underline-offset:3px}
.ind-no{display:block;font-size:12px;letter-spacing:.14em;color:var(--accent-soft);font-variant-numeric:tabular-nums;margin-bottom:10px}
.btn .ri{width:18px;height:18px;flex:none}
.ri{width:1em;height:1em;flex:none}
.thumb{aspect-ratio:16/9;background:#05070a;border-radius:12px;overflow:hidden;display:flex;align-items:center;justify-content:center;margin:0}
.thumb img{width:100%;height:100%;object-fit:contain;display:block}

/* 标签 */
.sol-tag{display:inline-flex;align-items:center;flex:none;font-style:normal;font-size:10.5px;font-weight:600;letter-spacing:.06em;line-height:1;padding:4px 6px;border-radius:4px}
.sol-tag.hot{color:#ff9b6a;background:rgba(255,120,60,.14)}
.sol-tag.new{color:#9fb4ff;background:rgba(82,121,255,.2)}

/* 方案卡 */
.sol-grid{display:grid;gap:12px}
.sol-grid.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.sol-grid.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.sol-card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--line);border-radius:14px;background:var(--panel);padding:18px 18px 14px;transition:border-color .2s,background .2s}
.sol-card:hover{border-color:var(--accent);background:#121829}
.sol-title{display:flex;align-items:flex-start;gap:8px;font-size:16px;font-weight:500;line-height:1.45;color:var(--text)}
.sol-title>span{min-width:0}
.sol-title .sol-tag{margin-top:3px}
.sol-sub{font-size:13.5px;line-height:1.7;color:#9aa1a8}
.sol-foot{display:flex;align-items:center;justify-content:space-between;margin-top:auto;padding-top:8px;font-size:12px;color:var(--quiet)}
.sol-foot .ri{color:var(--accent-soft);opacity:0;transition:opacity .2s}
.sol-card:hover .sol-foot .ri{opacity:1}

/* 目录页首屏和搜索 */
.sol-hero{padding-bottom:40px}
.sol-search{max-width:760px;margin:34px auto 0}
.sol-search-box{display:flex;align-items:center;gap:12px;height:56px;padding:0 20px;border:1px solid #3f4548;border-radius:999px;background:#0d1114;transition:border-color .2s}
.sol-search-box:focus-within{border-color:var(--accent)}
.sol-search-box .ri{width:20px;height:20px;color:var(--muted)}
.sol-search-box input{flex:1;min-width:0;height:100%;border:0;background:none;color:var(--text);font:inherit;font-size:16px;outline:none}
.sol-search-box input::placeholder{color:#6f767a}
.sol-hot{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px 10px;margin-top:16px;font-size:13px}
.sol-hot span{color:var(--quiet)}
.sol-hot a{color:#c3c9cc;padding:4px 12px;border:1px solid #2c3134;border-radius:999px;transition:border-color .2s,color .2s}
.sol-hot a:hover{border-color:var(--accent);color:var(--text)}
.sol-count{margin-top:14px;font-size:13px;color:var(--accent-soft)}
.is-searching .sol-featured{display:none}

/* 目录页分类 */
.sol-layout{display:grid;grid-template-columns:232px minmax(0,1fr);gap:36px;align-items:start}
.sol-side{position:sticky;top:112px;max-height:calc(100vh - 132px);overflow:auto;scrollbar-width:thin}
.sol-side-group{font-size:12px;color:var(--quiet);letter-spacing:.1em;margin:18px 0 6px 12px}
.sol-side-group:first-child{margin-top:0}
.sol-side a{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;font-size:14px;color:#b6bdc0;transition:background .2s,color .2s}
.sol-side a .ri{width:16px;height:16px;color:var(--muted)}
.sol-side a small{margin-left:auto;font-size:12px;color:var(--quiet);font-variant-numeric:tabular-nums}
.sol-side a:hover{background:#13181b;color:var(--text)}
.sol-side a.is-active{background:#141d3a;color:#fff}
.sol-side a.is-active .ri{color:var(--accent-soft)}
.sol-cats{display:grid;gap:44px;min-width:0}
.sol-cat{scroll-margin-top:110px}
.sol-cat h3{display:flex;align-items:center;flex-wrap:wrap;gap:10px;font-size:21px;font-weight:500;letter-spacing:-.02em;margin-bottom:16px}
.sol-cat h3 .ri{width:22px;height:22px;color:var(--accent-soft)}
.sol-cat h3 small{font-size:12.5px;font-weight:400;color:var(--quiet);letter-spacing:0}
.sol-empty{border:1px dashed #3f4548;border-radius:16px;padding:32px;text-align:center}
.sol-empty h3{font-size:18px;font-weight:500}
.sol-empty p{font-size:14px;color:var(--muted);margin-top:8px}
[hidden]{display:none!important}

/* 方案页 */
.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding-top:28px;font-size:13px;color:var(--quiet)}
.crumbs a{color:var(--muted)}
.crumbs a:hover{color:var(--text)}
.crumbs [aria-current]{color:var(--soft)}
.sol-page-hero{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);gap:48px;align-items:center;text-align:left;padding:36px 0 56px}
.sol-page-hero h1{font-size:clamp(30px,3.6vw,48px);line-height:1.24;letter-spacing:-.04em;margin:18px 0 22px;text-wrap:balance}
.sol-page-hero h1 span{display:block;text-wrap:balance;word-break:keep-all;overflow-wrap:anywhere}
.sol-page-hero h1 span+span{color:#c9d3ff}
.sol-page-hero p{margin:0;max-width:none;font-size:15.5px}
.sol-page-hero .hero-actions{justify-content:flex-start;margin-top:28px}
.sol-kicker{display:flex;align-items:center;gap:10px}
.sol-kicker a{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--accent-soft);border:1px solid #33416e;border-radius:999px;padding:5px 12px 5px 10px}
.sol-kicker a .ri{width:16px;height:16px}
.sol-for{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:22px}
.sol-for span{font-size:12px;color:var(--quiet);letter-spacing:.08em;margin-right:4px}
.sol-for em{font-style:normal;font-size:13px;color:#dfe3e6;padding:5px 12px;border:1px solid #2f3437;border-radius:999px;background:#0e1215}
.sol-hero-fig{display:block;position:relative;border:1px solid var(--line);border-radius:18px;background:var(--panel);padding:12px;transition:border-color .2s}
a.sol-hero-fig:hover{border-color:var(--accent)}
.sol-hero-cap{display:flex;align-items:center;gap:8px;padding:12px 6px 4px;font-size:14px;color:#dfe3e6}
.sol-hero-cap small{font-size:11px;color:var(--accent-soft);border:1px solid #33416e;border-radius:999px;padding:2px 8px;flex:none}
.sol-hero-cap .ri{margin-left:auto;color:var(--accent-soft)}
.sol-hero-fig.is-empty{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;gap:10px;aspect-ratio:16/10;padding:32px;background:radial-gradient(ellipse at 85% 10%,#1b2a5c 0%,var(--panel) 62%);border-color:#33416e}
.sol-hero-fig .ri.big{width:52px;height:52px;color:var(--accent-soft);margin-bottom:auto}
.sol-hero-fig.is-empty strong{font-size:24px;font-weight:500;letter-spacing:-.02em}
.sol-hero-fig.is-empty span{font-size:14px;color:#b6bdc0;line-height:1.8}
.pain .tag{color:var(--accent-soft)}
.sol-benefits{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.benefit{display:flex;gap:16px;border:1px solid var(--line);border-radius:18px;background:var(--panel);padding:24px}
.benefit>.ri{width:24px;height:24px;color:#fff;background:var(--accent);border-radius:50%;padding:4px;flex:none}
.benefit h3{font-size:18px;font-weight:500}
.benefit p{font-size:14px;line-height:1.8;color:#b6bdc0;margin-top:6px}
.sol-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;counter-reset:s}
.sol-steps>li{position:relative;border:1px solid var(--line);border-radius:18px;background:var(--panel);padding:22px 20px}
.sol-steps h3{font-size:17px;font-weight:500;line-height:1.45}
.sol-steps p{font-size:14px;line-height:1.8;color:#b6bdc0;margin-top:8px}
.sol-cases{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.dh-case{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:18px;background:var(--panel);padding:14px;transition:border-color .2s;min-width:0}
.dh-case:hover{border-color:var(--accent)}
.dh-case-body{padding:16px 6px 4px;display:flex;flex-direction:column;flex:1;min-width:0}
.dh-case .tag i{font-style:normal;margin:0 6px;opacity:.6}
.dh-case .tag{align-self:flex-start;font-size:12px;color:var(--accent-soft);border:1px solid #33416e;border-radius:999px;padding:3px 10px}
.dh-case h3{font-size:17px;font-weight:500;letter-spacing:-.01em;line-height:1.45;margin-top:12px}
.dh-case p{font-size:14px;line-height:1.85;color:#c7cdd0;margin-top:8px}
.dh-case .more{display:inline-flex;align-items:center;gap:6px;margin-top:auto;padding-top:14px;font-size:14px;color:var(--accent-soft)}
.sol-nocase{border:1px dashed #3f4548;border-radius:18px;padding:30px clamp(20px,3vw,36px)}
.sol-nocase h3{font-size:19px;font-weight:500}
.sol-private{border:1px solid var(--line);border-radius:18px;background:var(--panel);padding:26px clamp(20px,3vw,36px);margin-bottom:14px}
.sol-private .tag{display:inline-block;font-size:12px;color:var(--accent-soft);border:1px solid #33416e;border-radius:999px;padding:3px 10px}
.sol-private h3{font-size:19px;font-weight:500;margin-top:12px}
.sol-private p{font-size:14.5px;line-height:1.9;color:#c7cdd0;margin-top:10px;max-width:72em}
.sol-nocase p{font-size:14.5px;line-height:1.9;color:#b6bdc0;margin-top:10px}
.check-list li::before{content:"";position:absolute;left:2px;top:1.22em;width:9px;height:5px;border-left:1.5px solid var(--accent-soft);border-bottom:1.5px solid var(--accent-soft);transform:rotate(-45deg);background:none}
.list-card .note{margin-top:14px}
.sol-faq{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.sol-faq>div{border:1px solid var(--line);border-radius:18px;background:var(--panel);padding:24px}
.sol-faq dt{font-size:17px;font-weight:500;line-height:1.5}
.sol-faq dd{font-size:14.5px;line-height:1.85;color:#b6bdc0;margin-top:10px}

/* 收尾 */
.closing{display:grid;grid-template-columns:minmax(0,1fr) 200px;gap:40px;align-items:center;text-align:left;border:1px solid #33416e;border-radius:22px;background:radial-gradient(ellipse at 15% 0%,#16224a 0%,var(--panel) 62%);padding:44px clamp(20px,4vw,56px);margin:8px 0 28px}
.closing .hero-actions{justify-content:flex-start}
.closing p{margin:12px 0 0;max-width:none;text-align:left}
.closing-qr{background:#fff;border-radius:16px;padding:12px;text-align:center;margin:0}
.closing-qr img{width:100%;height:auto;border-radius:8px;display:block}
.closing-qr figcaption{font-size:13px;color:#333;margin-top:6px}

@media(max-width:1180px){.sol-grid.g4{grid-template-columns:repeat(3,minmax(0,1fr))}.sol-steps{grid-template-columns:repeat(2,minmax(0,1fr))}.sol-cases{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:1000px){.sol-layout{grid-template-columns:1fr}.sol-side{position:static;max-height:none;overflow:visible}.sol-side-inner{display:flex;flex-wrap:wrap;gap:6px}.sol-side-group{width:100%;margin:10px 0 2px}.sol-side a{border:1px solid #2c3134;padding:6px 12px}.sol-side a small{margin-left:4px}
  .sol-grid.g3,.sol-grid.g4{grid-template-columns:repeat(2,minmax(0,1fr))}.sol-page-hero{grid-template-columns:1fr;gap:28px}.sol-benefits,.sol-faq{grid-template-columns:1fr}}
@media(max-width:640px){.sol-grid.g3,.sol-grid.g4,.sol-steps,.sol-cases{grid-template-columns:1fr}.closing{grid-template-columns:1fr;gap:24px}.closing-qr{max-width:200px}
  .sol-search-box{height:50px;padding:0 16px}.sol-search-box input{font-size:15px}.benefit{padding:20px 18px}.sol-hero-fig.is-empty{padding:24px}}
.sol-cat h3 small i{font-style:normal;margin:0 6px}

/* UI 界面设计方案（v2.2） */
.ui-shot{background:#0b0e10}
.ui-shot img{object-fit:cover}
.ui-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.ui-chips span{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:#dfe5ff;padding:6px 12px;border:1px solid #33416e;border-radius:999px;background:rgba(82,121,255,.1)}
.ui-chips .ri{width:15px;height:15px;color:var(--accent-soft)}
.ui-proof>.ri{width:26px;height:26px;color:var(--accent-soft)}
.ui-proof h3{font-size:18px;font-weight:500}
.ui-proof p{font-size:14px;line-height:1.85;color:#b6bdc0}
.ui-price{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:14px;border:1px solid #33416e;border-radius:18px;padding:24px 26px;background:radial-gradient(ellipse at 0% 0%,rgba(82,121,255,.16) 0%,var(--panel) 60%)}
.ui-price strong{font-size:20px;font-weight:500;letter-spacing:-.01em}
.ui-price p{font-size:14px;line-height:1.85;color:#b6bdc0;margin-top:6px;max-width:760px}
.ui-price .btn{flex:none}
.ui-concept{margin:0;border:1px solid var(--line);border-radius:18px;background:var(--panel);padding:14px;display:grid;grid-template-columns:minmax(0,2.1fr) minmax(0,1fr);gap:24px;align-items:center}
.ui-concept figcaption{padding:6px 10px 6px 0}
.ui-concept .tag{display:inline-block;font-size:12px;color:var(--accent-soft);border:1px solid #33416e;border-radius:999px;padding:3px 10px}
.ui-concept h3{font-size:22px;font-weight:500;letter-spacing:-.01em;margin-top:14px}
.ui-concept p{font-size:14.5px;line-height:1.9;color:#c7cdd0;margin-top:10px}
.sol-cases.ui-real{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:14px}
@media(max-width:1000px){.ui-concept{grid-template-columns:1fr;gap:6px}.ui-concept figcaption{padding:10px 6px 6px}.ui-price{flex-direction:column;align-items:flex-start}}
@media(max-width:640px){.sol-cases.ui-real{grid-template-columns:1fr}.ui-price{padding:20px 18px}.ui-price strong{font-size:18px}}

/* UI 界面预览画廊（v2.3，App Store 式：手机竖图、电脑横图） */
.ui-gallery{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;padding:18px 2px 12px;margin-top:4px;scrollbar-width:thin}
.ui-gallery:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:12px}
.ui-gal-item{flex:none;margin:0;scroll-snap-align:start;display:flex;flex-direction:column;gap:12px}
.ui-gal-item.is-phone{width:clamp(200px,19vw,250px)}
.ui-gal-item.is-pc{width:clamp(300px,42vw,560px)}
.ui-gal-img{margin:0;border:1px solid var(--line);border-radius:16px;overflow:hidden;background:#0b0e10}
.ui-gal-img img{display:block;width:100%;height:auto}
.ui-gal-item figcaption{display:flex;flex-direction:column;gap:4px;padding:0 4px}
.ui-gal-item strong{font-size:15px;font-weight:500;color:var(--text)}
.ui-gal-item span{font-size:13px;line-height:1.75;color:#b6bdc0}
.ui-gal-hint{font-size:12px;color:var(--quiet);margin-top:2px}
@media(max-width:640px){.ui-gal-item.is-phone{width:62vw}.ui-gal-item.is-pc{width:84vw}}

/* 截图组统一图高（v2.3 补）：宽屏下手机图和电脑图一样高，图下标题对齐；窄屏仍按设备定宽 */
@media(min-width:641px){.ui-gal-item.is-phone,.ui-gal-item.is-pc{width:min-content}.ui-gal-img img{height:clamp(320px,30vw,440px);width:auto;max-width:none}}
/* v2.14 起 代码原理动画卡片（原理演示.py / 原理演示.js）；v2.15 改成通用调色：f-* 填充、s-* 描边、t-* 画面里的符号、k-* 图例色块 */
.pdemo{display:flex;flex-direction:column;gap:12px;padding:18px 18px 20px;margin:0}
.sol-hero-fig.pdemo{display:flex;flex-direction:column;gap:12px;padding:18px 18px 20px;margin:0;border-color:#33416e}
.pd-head{display:flex;align-items:center;gap:12px}
.pd-head>div{flex:1;min-width:0}
.pd-head small{display:block;font-size:12px;color:var(--accent-soft);letter-spacing:.02em}
.pd-head strong{display:block;font-size:17px;font-weight:500;letter-spacing:-.01em;margin-top:2px}
.pd-play{flex:none;width:34px;height:34px;border-radius:50%;border:1px solid var(--line);background:transparent;color:#e8ecef;display:grid;place-items:center;cursor:pointer;transition:border-color .2s}
.pd-play:hover{border-color:var(--accent)}
.pd-play svg{width:15px;height:15px;fill:currentColor}
.pdemo.is-paused .pd-i-pause,.pdemo:not(.is-paused) .pd-i-play{display:none}
.pd-svg{display:block;width:100%;height:auto;background:#0e1316;border:1px solid var(--line);border-radius:12px}
.pdemo .f-blue{fill:#4f86ff}.pdemo .f-red{fill:#ff5d55}.pdemo .f-amber{fill:#f2b84b}.pdemo .f-green{fill:#3ecf8e}.pdemo .f-violet{fill:#9d7bff}
.pdemo .f-mute{fill:#8a9499}.pdemo .f-well{fill:#161d22}.pdemo .f-wall{fill:#3a4247}.pdemo .f-fg{fill:#e8ecef}.pdemo .f-glass{fill:#2c4f86}
.pdemo .s-blue{stroke:#4f86ff}.pdemo .s-red{stroke:#ff5d55}.pdemo .s-amber{stroke:#f2b84b}.pdemo .s-green{stroke:#3ecf8e}.pdemo .s-violet{stroke:#9d7bff}
.pdemo .s-mute{stroke:#6b7579}.pdemo .s-fg{stroke:#e8ecef}.pdemo .s-edge{stroke:#6b7579}
.pdemo .t-sym,.pdemo .t-lab{fill:#c7cdd0;font-size:14px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.pdemo .t-on{fill:#ffffff;font-size:15px;font-weight:700;font-family:Inter,system-ui,sans-serif}
.pdemo .t-blue{fill:#7aa4ff;font-size:13px;font-weight:700}.pdemo .t-red{fill:#ff8a84;font-size:15px;font-weight:700}
.pd-key i.k-blue{background:#4f86ff}.pd-key i.k-red{background:#ff5d55}.pd-key i.k-amber{background:#f2b84b}.pd-key i.k-green{background:#3ecf8e}
.pd-key i.k-violet{background:#9d7bff}.pd-key i.k-mute{background:#8a9499}.pd-key i.k-fg{background:#e8ecef}.pd-key i.k-glass{background:#2c4f86;border:1px solid #4f86ff}
.pa-for{display:flex;gap:10px;font-size:13px;line-height:1.7;color:#9aa3a7;border-top:1px solid var(--line);padding-top:12px;margin-top:auto}
.pa-for span{flex:none;color:var(--accent-soft)}
.pd-legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:12.5px;color:#b6bdc0}
.pd-key{display:inline-flex;align-items:center;gap:6px}
.pd-key i{width:10px;height:10px;border-radius:3px}
.pd-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.pd-step{display:flex;align-items:center;gap:8px;min-width:0;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:transparent;color:#b6bdc0;font:inherit;font-size:13px;line-height:1.35;text-align:left;cursor:pointer;transition:border-color .2s,color .2s}
.pd-step:hover{border-color:#4a5a8a}
.pd-step b{flex:none;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:11.5px;font-weight:500;border:1px solid currentColor}
.pd-step[aria-pressed="true"]{border-color:var(--accent);color:#f4f6f8;background:#141c33}
.pd-cap{font-size:14px;line-height:1.8;color:#c7cdd0;min-height:3.6em}
.pdemo .pd-cap[hidden]{display:none}
@media (max-width:520px){.pd-step{flex-direction:column;align-items:flex-start;gap:5px;padding:8px;font-size:12px;white-space:nowrap}.pd-step span{overflow:hidden;text-overflow:ellipsis;max-width:100%}}

/* ===== 更多服务分级标签（官网解决方案页/行业服务.py） ===== */
.svc-root{scroll-margin-top:96px}
.svc-bar{margin:0 0 56px}
.svc-bar-lead{text-align:center;font-size:13px;letter-spacing:.08em;color:var(--quiet);margin-bottom:14px}
.svc-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.svc-tabs [role=tab]{display:flex;align-items:center;gap:12px;min-width:0;text-align:left;font:inherit;color:#b6bdc0;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px 16px;cursor:pointer;transition:border-color .2s,background .2s,color .2s}
.svc-tabs [role=tab] .ri{width:22px;height:22px;flex:none;color:var(--muted)}
.svc-tabs [role=tab] span{display:flex;flex-direction:column;gap:3px;min-width:0}
.svc-tabs [role=tab] strong{font-size:15px;font-weight:500;color:var(--text)}
.svc-tabs [role=tab] small{font-size:12px;color:var(--quiet);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.svc-tabs [role=tab]:hover{border-color:#3f4a6e}
.svc-tabs [role=tab][aria-selected=true]{border-color:var(--accent);background:#121a33}
.svc-tabs [role=tab][aria-selected=true] .ri{color:var(--accent-soft)}
.svc-tabs [role=tab]:focus-visible{outline:2px solid var(--accent-soft);outline-offset:2px}
.svc-intro{display:flex;gap:18px;align-items:flex-start;max-width:920px;margin:0 auto 64px}
.svc-intro-ico{width:44px;height:44px;flex:none;padding:10px;border-radius:12px;background:#141d3a;color:var(--accent-soft)}
.svc-kicker{font-size:12.5px;letter-spacing:.1em;color:var(--accent-soft);margin-bottom:8px}
.svc-intro h2{font-size:clamp(24px,2.6vw,34px);line-height:1.3;letter-spacing:-.03em;font-weight:500;text-wrap:balance}
.svc-intro p:last-child{margin-top:14px;font-size:15.5px;line-height:1.85;color:var(--muted)}
.svc-sim,.svc-real{display:inline-flex;align-items:center;font-size:11px;letter-spacing:.06em;color:#ffc58a;border:1px solid rgba(255,170,90,.4);border-radius:999px;padding:2px 9px;margin-right:6px}
.svc-real{color:#8fe3b5;border-color:rgba(90,210,150,.4)}
.svc-case{display:grid;gap:28px;padding:28px;margin-bottom:16px}
.svc-case.has-fig{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:center}
.svc-case h3{font-size:22px;font-weight:500;margin:12px 0 6px}
.svc-client{font-size:13.5px;color:var(--accent-soft);margin-bottom:12px}
.svc-case-text p:last-child{font-size:15px;line-height:1.85;color:var(--muted)}
.svc-case-fig{display:block;border:1px solid var(--line);border-radius:14px;background:#0b0f12;padding:10px;font:inherit;color:inherit;text-align:left;cursor:pointer;transition:border-color .2s}
.svc-case-fig:hover{border-color:var(--accent)}
.svc-ba{padding:8px 24px}
.svc-ba-row{display:grid;grid-template-columns:minmax(0,1fr) 28px minmax(0,1fr);gap:16px;align-items:center;padding:16px 0;border-top:1px solid var(--line)}
.svc-ba-row:first-child{border-top:0}
.svc-ba-h{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:60px;font-size:12.5px;letter-spacing:.08em;color:var(--quiet)}
.svc-ba-h span+span{color:var(--accent-soft)}
.svc-ba-row p{font-size:14.5px;line-height:1.7;color:var(--muted)}
.svc-ba-row p:last-child{color:var(--text)}
.svc-ba-arrow{width:20px;height:20px;color:var(--accent-soft)}
.svc-showcase{padding:14px;margin-bottom:16px}
.svc-showcase figcaption{padding:18px 8px 6px}
.svc-showcase h3{display:inline;font-size:19px;font-weight:500}
.svc-showcase p{margin-top:8px;font-size:14.5px;line-height:1.8;color:var(--muted)}
.svc-agent .svc-agent-ico{width:26px;height:26px;color:var(--accent-soft);margin-bottom:12px}
.svc-who{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--accent-soft);margin:6px 0 10px}
.svc-who .ri{width:14px;height:14px}
.svc-howrun{margin-top:14px;padding-top:14px;border-top:1px dashed #30363a}
.svc-howrun strong{display:block;font-size:12px;font-weight:500;letter-spacing:.08em;color:var(--quiet);margin-bottom:6px}
.svc-howrun p{font-size:13.5px;line-height:1.75}
.svc-chat{max-width:760px;margin:0 auto;padding:0;overflow:hidden}
.svc-chat-head{display:flex;align-items:center;gap:10px;padding:14px 20px;border-bottom:1px solid var(--line);background:#0e1316}
.svc-chat-head .ri{width:20px;height:20px;color:var(--accent-soft)}
.svc-chat-head span{margin-left:auto;font-size:12px;color:var(--quiet)}
.svc-msg{display:flex;flex-direction:column;gap:4px;padding:10px 20px;max-width:86%}
.svc-msg:nth-child(2){padding-top:20px}
.svc-msg:last-child{padding-bottom:22px}
.svc-msg.user{margin-left:auto;align-items:flex-end}
.svc-msg-who{font-size:11.5px;color:var(--quiet)}
.svc-msg p{font-size:14.5px;line-height:1.75;padding:10px 14px;border-radius:14px;background:#161c20;color:#dfe3e6}
.svc-msg.user p{background:#1c2a55;color:#eef1ff;border-bottom-right-radius:4px}
.svc-msg.agent p{border-bottom-left-radius:4px}
.svc-compare{padding:6px 24px}
.svc-cmp-row{display:grid;grid-template-columns:120px minmax(0,1fr) minmax(0,1fr);gap:20px;padding:14px 0;border-top:1px solid var(--line);font-size:14.5px;line-height:1.7;color:var(--muted)}
.svc-cmp-row:first-child{border-top:0}
.svc-cmp-row span:first-child{color:var(--quiet);font-size:13px}
.svc-cmp-row span:last-child{color:var(--text)}
.svc-cmp-h{font-size:12.5px;letter-spacing:.08em}
.svc-cmp-h span:last-child{color:var(--accent-soft)}
.svc-pages{margin-top:16px;padding:22px 24px}
.svc-pages h3{font-size:15px;font-weight:500}
.svc-pages .sol-for{margin-top:12px}
.svc-own{display:grid;gap:28px;padding:24px;align-items:center}
.svc-own:has(.svc-own-fig){grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.svc-own-fig{display:block}
.svc-own h3{font-size:20px;font-weight:500;margin:12px 0 10px}
.svc-own p{font-size:14.5px;line-height:1.85;color:var(--muted)}
.svc-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:20px}
.svc-stats div{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:#0e1215}
.svc-stats dt{font-size:20px;font-weight:600;color:var(--text);font-variant-numeric:tabular-nums}
.svc-stats dd{margin:4px 0 0;font-size:12px;color:var(--quiet)}
.svc-sub{font-size:18px;font-weight:500;margin:36px 0 16px}
.svc-links{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin:28px 0 0;font-size:13px}
.svc-links span{color:var(--quiet);margin-right:4px}
.svc-links a{color:#c3c9cc;padding:5px 12px;border:1px solid #2c3134;border-radius:999px;transition:border-color .2s,color .2s}
.svc-links a:hover{border-color:var(--accent);color:var(--text)}
.svc-panel>.ui-chips{margin-top:28px}
.svc-cta{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;margin:40px 0 80px;padding:24px 28px}
.svc-cta p{font-size:15px;color:var(--text);max-width:560px}
.svc-cta .hero-actions{margin:0}
.svc-app{display:flex;gap:28px;align-items:flex-start;padding:36px 0 32px}
.svc-app-ico{flex:none;width:112px;height:112px;border-radius:26px;display:flex;align-items:center;justify-content:center;background:linear-gradient(145deg,#2c4bd8,#14204f);border:1px solid #3a4f9a;box-shadow:0 12px 30px rgba(20,40,120,.35)}
.svc-app-ico .ri{width:52px;height:52px;color:#eef1ff}
.svc-app h1{word-break:keep-all;overflow-wrap:anywhere;font-size:clamp(26px,3vw,40px);line-height:1.25;letter-spacing:-.03em;margin:10px 0 8px;text-wrap:balance}
.svc-app-sub{font-size:17px;color:#c9d3ff}
.svc-app .svc-client{margin:10px 0 0}
.svc-app-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.svc-app-chips span{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#dfe3e6;padding:5px 12px;border:1px solid #2f3437;border-radius:999px;background:#0e1215}
.svc-app-chips .ri{width:15px;height:15px;color:var(--accent-soft)}
.svc-app .hero-actions{justify-content:flex-start;margin-top:22px}
.svc-gallery{--gh:clamp(260px,30vw,420px);display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;padding:4px 2px 14px;margin-bottom:64px;scrollbar-width:thin}
.svc-gallery>figure{flex:0 0 auto;width:min(calc(var(--gh) * 1.6),86vw);scroll-snap-align:start;margin:0}
.svc-gallery>figure.is-phone{width:calc(var(--gh) * .5)}
.svc-gallery .thumb{width:100%;height:var(--gh);aspect-ratio:auto;border:1px solid var(--line);border-radius:16px}
.svc-gallery .thumb img{object-fit:cover}
.svc-gallery figcaption{padding:12px 4px 0}
.svc-gallery figcaption strong{display:block;font-size:15px;font-weight:500;color:var(--text)}
.svc-gallery figcaption span{display:block;margin-top:4px;font-size:13.5px;line-height:1.7;color:var(--muted)}
.svc-showhead{margin-bottom:16px}
.svc-showhead h3{display:inline;font-size:19px;font-weight:500}
.svc-showhead p{margin-top:8px;font-size:14.5px;line-height:1.8;color:var(--muted);max-width:860px}
.svc-concept .svc-gallery{margin-bottom:24px}
.svc-gallery.is-empty{display:block;padding:40px;text-align:center;color:var(--muted)}
.svc-about{padding:26px 28px}
.svc-about p{font-size:15.5px;line-height:1.9;color:var(--muted)}
.svc-about h3{font-size:15px;font-weight:500;margin:18px 0 6px}
.svc-info{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;padding:0;overflow:hidden}
.svc-info div{padding:18px 22px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.svc-info div:nth-child(3n){border-right:0}
.svc-info div:nth-last-child(-n+3){border-bottom:0}
.svc-info dt{font-size:12px;color:var(--quiet);letter-spacing:.06em}
.svc-info dd{margin:6px 0 0;font-size:14.5px;line-height:1.6;color:var(--text)}
.svc-casegrid .thumb{aspect-ratio:16/10}
.svc-cardmeta{display:flex;align-items:flex-start;gap:4px;font-size:12.5px;line-height:1.6;color:var(--quiet);margin-bottom:8px}
.svc-cardmeta .svc-sim{flex:none;margin-top:1px}
.svc-noshot{display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 80% 10%,#1b2a5c 0%,#0b0f12 65%)}
.svc-noshot .ri{width:48px;height:48px;color:#5f74c9}
.svc-shotgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.svc-shotcard{display:block;padding:12px;transition:border-color .2s}
.svc-shotcard:hover{border-color:var(--accent)}
.svc-shotcard .thumb{aspect-ratio:16/10}
.svc-shotcard>span{display:block;padding:12px 4px 2px;font-size:14px;color:#dfe3e6}
.svc-shotcard small{display:block;font-size:12px;color:var(--accent-soft);margin-bottom:4px}
@media(max-width:700px){.svc-app{flex-direction:column;gap:16px;padding-top:24px}.svc-app-ico{width:76px;height:76px;border-radius:18px}.svc-app-ico .ri{width:36px;height:36px}
 .svc-info{grid-template-columns:1fr 1fr}.svc-info div:nth-child(3n){border-right:1px solid var(--line)}.svc-info div:nth-child(2n){border-right:0}.svc-info div:nth-last-child(-n+3){border-bottom:1px solid var(--line)}.svc-info div:nth-last-child(-n+2){border-bottom:0}
 .svc-shotgrid{grid-template-columns:1fr}.svc-gallery{--gh:clamp(200px,52vw,300px)}.svc-about{padding:20px}}
@media(max-width:1100px){.svc-tabs{grid-template-columns:repeat(3,minmax(0,1fr))}.svc-case.has-fig,.svc-own:has(.svc-own-fig){grid-template-columns:1fr}}
@media(max-width:700px){
 .svc-bar{margin-bottom:40px}
 .svc-tabs{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
 .svc-tabs [role=tab]{padding:12px;gap:10px}
 .svc-tabs [role=tab]:first-child{grid-column:1/-1}
 .svc-tabs [role=tab] small{white-space:normal}
 .svc-intro{flex-direction:column;gap:12px;margin-bottom:44px}
 .svc-case{padding:20px}
 .svc-ba{padding:4px 16px}
 .svc-ba-row{grid-template-columns:1fr;gap:6px}
 .svc-ba-h{display:none}
 .svc-ba-arrow{transform:rotate(90deg)}
 .svc-cmp-row{grid-template-columns:1fr 1fr;gap:6px 14px}
 .svc-cmp-row span:first-child{grid-column:1/-1}
 .svc-compare{padding:4px 16px}
 .svc-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
 .svc-msg{max-width:94%;padding:8px 14px}
 .svc-cta{padding:20px;margin-bottom:56px}
}

/* ===== 实验室二级页 lab/custom/（官网解决方案页/实验室定制页.py） ===== */
.lab-grid3{grid-template-columns:repeat(3,minmax(0,1fr))}
.lab-shots{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:0 0 20px}
.lab-shot{margin:0;padding:0;overflow:hidden}
.lab-shot img{display:block;width:100%;height:auto;aspect-ratio:16/10;object-fit:cover}
.lab-shot figcaption{padding:12px 16px;font-size:14px;color:var(--muted)}
.lab-agent{margin:20px 0 0;align-items:start}
.lab-weblist ul{list-style:none;margin:0;padding:0;display:grid;gap:0}
.lab-weblist li{display:grid;grid-template-columns:minmax(0,15em) minmax(0,1fr);gap:16px;padding:14px 0;border-top:1px solid var(--line)}
.lab-weblist li:first-child{border-top:0}
.lab-weblist strong{font-weight:500;color:var(--text)}
.lab-weblist span{color:var(--muted)}
@media (max-width:1000px){.lab-grid3,.lab-shots{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.lab-grid3,.lab-shots{grid-template-columns:1fr}.lab-weblist li{grid-template-columns:1fr;gap:4px}}

/* ===== 一级栏目 原理动画 principles/（官网解决方案页/原理动画页.py） ===== */
.pa-kicker{display:inline-flex;align-items:center;gap:8px}
.pa-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.pa-card{min-width:0}
.pa-card .pd-head strong{font-size:16.5px;line-height:1.45}
.pa-card .pd-cap{min-height:5.4em}
.pa-clients{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.pa-clients .card h3{margin-top:10px}
.pa-who{font-size:14px;line-height:1.8;color:#c7cdd0;margin-top:8px}
.pa-use{font-size:13.5px;line-height:1.8;color:#9aa3a7;margin-top:8px}
.pa-use span{color:var(--accent-soft);margin-right:8px}
.pa-rel{display:flex;flex-direction:column}
.pa-labs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.pa-lab{display:flex;flex-direction:column}
.pa-lab p{font-size:14px;line-height:1.75;color:#b6bdc0;margin-top:6px}
.pa-lab-n{font-size:12.5px;color:#7d8a92;margin-top:10px}
.pa-lab .more{display:inline-flex;align-items:center;gap:6px;margin-top:auto;padding-top:12px;font-size:14px;color:var(--accent-soft)}
.pa-rel .more{display:inline-flex;align-items:center;gap:6px;margin-top:auto;padding-top:12px;font-size:14px;color:var(--accent-soft)}
@media (max-width:1100px){.pa-clients,.pa-labs{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:860px){.pa-grid,.pa-clients,.pa-labs{grid-template-columns:1fr}.pa-card .pd-cap{min-height:0}}

/* ===== 原理动画分类页的原理实验室（官网解决方案页/原理实验室页.py） ===== */
.pa-hero{display:block;padding-bottom:28px}
.pa-kicker i{font-style:normal;opacity:.5}
.pa-hero h1{max-width:20em}.pa-hero>p{max-width:48em}
.lab{border:1px solid var(--line);border-radius:22px;background:linear-gradient(180deg,#0e151a,#0a0f12);padding:22px;margin:8px 0 56px}
.lab-head{display:flex;justify-content:space-between;align-items:flex-end;gap:18px;padding-bottom:16px;border-bottom:1px solid var(--line)}
.lab-brand{display:flex;gap:14px;align-items:center}
.lab-logo{width:44px;height:44px;border-radius:12px;border:1px solid #2c3a48;display:grid;place-items:center;color:var(--accent-soft);background:#111b24}
.lab-logo .ri{width:22px;height:22px}
.lab-code{display:block;font:600 11px/1 Inter,system-ui,sans-serif;letter-spacing:.2em;color:var(--accent-soft)}
.lab-head h2{font-size:22px;font-weight:500;letter-spacing:-.01em;margin-top:7px;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px}
.lab-head h2 span{font-size:14px;color:#9aa3a7;font-weight:400}
.lab-spec{font-size:12.5px;line-height:1.7;color:#8a9499;text-align:right;max-width:24em}
.lab-tabs{display:grid;margin-top:16px;border:1px solid var(--line);border-radius:14px;overflow:hidden}
.lab-tab{display:flex;gap:12px;align-items:center;padding:13px 16px;background:transparent;border:0;border-right:1px solid var(--line);color:#b6bdc0;text-align:left;cursor:pointer;font:inherit;transition:background .2s}
.lab-tab:last-child{border-right:0}
.lab-tab:hover{background:#111a20}
.lab-tab b{font:500 15px Inter,system-ui,sans-serif;color:#5f6b72}
.lab-tab>span>span{display:block;font-size:14px;color:#e8ecef}
.lab-tab small{display:block;font-size:12px;color:#7d8a92;margin-top:2px}
.lab-tab[aria-selected="true"]{background:linear-gradient(180deg,#15243a,#0f1a2a);box-shadow:inset 0 -2px 0 var(--accent)}
.lab-tab[aria-selected="true"] b{color:var(--accent-soft)}
.lab-body{display:grid;grid-template-columns:minmax(0,1fr) 296px;gap:18px;margin-top:18px}
.lab-main{min-width:0;display:flex;flex-direction:column;gap:14px}
.lab-stage{border:1px solid var(--line);border-radius:16px;background:#0b1114;overflow:hidden}
.lab-stage-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:16px 18px 8px}
.lab-exp{display:block;font:600 11px/1 Inter,system-ui,sans-serif;letter-spacing:.18em;color:#5f6b72}
.lab-stage-head h3{font-size:19px;font-weight:500;margin-top:8px}
.lab-chips{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.lab-chip{font-size:12.5px;padding:5px 11px;border:1px solid #2c3a48;border-radius:999px;color:#c7cdd0;white-space:nowrap}
.lab-chip-state .is-ok{color:#3ecf8e}.lab-chip-state .is-bad{color:#ff6b5b}.lab-chip-state .is-info{color:#8ea6ff}.lab-chip-state .is-warn{color:#f2b84b}
.lab-chip-state.is-none{display:none}
.lab-legend{display:flex;flex-wrap:wrap;gap:6px 16px;padding:0 18px 10px;font-size:12.5px;color:#9aa3a7}
.lab-legend span{display:inline-flex;align-items:center;gap:6px}
.lab-legend i{width:10px;height:10px;border-radius:3px}
.lab-legend .k-blue{background:#4f86ff}.lab-legend .k-red{background:#ff5d55}.lab-legend .k-amber{background:#f2b84b}.lab-legend .k-green{background:#3ecf8e}
.lab-legend .k-violet{background:#9d7bff}.lab-legend .k-mute{background:#7d8a92}.lab-legend .k-fg{background:#141a1e;border:1px solid #c7cdd0}.lab-legend .k-glass{background:#8d989e}
.lab-view{position:relative}.lab-vin{position:relative}
.lab-svg{display:block;width:100%;height:auto}
.lab-call{position:absolute;transform:translate(10px,-50%);font-size:12.5px;line-height:1.4;padding:4px 10px;border-radius:8px;background:rgba(9,14,18,.86);border:1px solid #3a4a5a;color:#eef2f4;white-space:nowrap;pointer-events:none;backdrop-filter:blur(4px)}
.lab-call.to-left{transform:translate(calc(-100% - 10px),-50%)}
.lab-leader{stroke:#cfd8dc;stroke-width:1;fill:none;opacity:.8}.lab-leader-dot{fill:#ffffff}
.lab-charts{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px}
.lab-chart{margin:0;border:1px solid var(--line);border-radius:14px;background:#0b1114;padding:13px 14px 10px}
.lab-chart figcaption{font-size:13.5px;color:#e8ecef;margin-bottom:6px}
.lab-cwrap{position:relative}
.lab-cwrap svg{display:block;width:100%;height:auto}
.lab-cl{position:absolute;font-size:11.5px;line-height:1.3;color:#e0e6ea;white-space:nowrap;pointer-events:none;padding:2px 6px;border-radius:5px;background:rgba(9,14,18,.75)}
.lab-ax{display:flex;justify-content:space-between;gap:10px;font-size:11.5px;color:#7d8a92;margin-top:2px}
.lab-grid{stroke:#1b252b;stroke-width:1;fill:none}.lab-axis{stroke:#46525b;stroke-width:1.2;fill:none}
.lab-tick{fill:#7d8a92;font-size:11px;font-family:Inter,system-ui,sans-serif}
.lab-timeline{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:14px;padding:12px 16px;background:#0b1114}
.lab-play{flex:none;width:40px;height:40px;border-radius:50%;border:0;background:var(--accent);color:#fff;display:grid;place-items:center;cursor:pointer}
.lab-play svg{width:16px;height:16px;fill:currentColor}
.lab:not(.is-paused) .lab-i-play,.lab.is-paused .lab-i-pause{display:none}
.lab-again{flex:none;display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;border-radius:9px;border:1px solid var(--line);background:transparent;color:#c7cdd0;font:inherit;font-size:13px;cursor:pointer}
.lab-again svg{width:14px;height:14px;fill:currentColor}
.lab-track{flex:1;min-width:0}
.lab-scrub{width:100%;accent-color:var(--accent);margin:0}
.lab-marks{display:flex;gap:6px;margin-top:6px}
.lab-mark{min-width:0;display:flex;gap:6px;align-items:center;padding:4px 0;background:transparent;border:0;border-top:2px solid #26323a;color:#7d8a92;font:inherit;font-size:12px;text-align:left;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lab-mark b{font:500 11px Inter,system-ui,sans-serif}
.lab-mark.is-on{border-top-color:var(--accent);color:#e8ecef}
.lab-pctw{flex:none;font:500 13px Inter,system-ui,sans-serif;color:#9aa3a7}.lab-pct{font-size:20px;color:#e8ecef;margin-right:2px}
.lab-note{display:flex;gap:14px;align-items:flex-start;padding:14px 16px;border-radius:14px;border:1px solid var(--line);background:#0b1114}
.lab-note-i{flex:none;width:34px;height:34px;border-radius:50%;border:1px solid #2c3a48;display:grid;place-items:center;color:var(--accent-soft)}
.lab-note-i svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2}
.lab-note small{display:block;font-size:12px;color:#7d8a92;margin-bottom:3px}
.lab-note p{font-size:14px;line-height:1.8;color:#d6dde1}
.lab-panel{align-self:start;position:sticky;top:84px;border:1px solid var(--line);border-radius:16px;background:#0b1114;padding:16px;display:flex;flex-direction:column;gap:16px}
.lab-ph{display:flex;justify-content:space-between;align-items:center;gap:8px}
.lab-ph h4{font-size:14.5px;font-weight:500;color:#e8ecef}
.lab-reset{height:28px;padding:0 10px;border-radius:8px;border:1px solid var(--line);background:transparent;color:#b6bdc0;font:inherit;font-size:12.5px;cursor:pointer}
.lab-row{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:13.5px;color:#c7cdd0}
.lab-row b{font:600 15px Inter,system-ui,sans-serif;color:#e8ecef}
.lab-range input{width:100%;accent-color:var(--accent);margin:8px 0 2px}
.lab-range small,.lab-choice small{display:block;font-size:12px;line-height:1.6;color:#7d8a92}
.lab-seg{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:3px;border:1px solid var(--line);border-radius:10px;margin:8px 0 4px}
.lab-seg button{height:30px;border:0;border-radius:7px;background:transparent;color:#9aa3a7;font:inherit;font-size:13px;cursor:pointer}
.lab-seg button[aria-pressed="true"]{background:#16304f;color:#e8ecef}
.lab-switches{display:flex;flex-direction:column;gap:9px;padding-top:12px;border-top:1px solid var(--line)}
.lab-switch{display:flex;justify-content:space-between;align-items:center;font-size:13.5px;color:#c7cdd0;cursor:pointer}
.lab-switch input{position:absolute;opacity:0;width:1px;height:1px}
.lab-switch i{position:relative;width:34px;height:19px;border-radius:999px;background:#26323a;transition:background .2s}
.lab-switch i::after{content:"";position:absolute;left:2px;top:2px;width:15px;height:15px;border-radius:50%;background:#c7cdd0;transition:transform .2s}
.lab-switch input:checked+i{background:var(--accent)}.lab-switch input:checked+i::after{transform:translateX(15px);background:#fff}
.lab-switch input:focus-visible+i{outline:2px solid var(--accent);outline-offset:2px}
.lab-reads{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.lab-read{padding:10px 11px;border-radius:10px;background:#101820;border:1px solid #1d2830}
.lab-read small{display:block;font-size:11.5px;color:#7d8a92}
.lab-read b{font:600 19px Inter,system-ui,sans-serif;color:#eef2f4;font-variant-numeric:tabular-nums}
.lab-read em{font-style:normal;font-size:11.5px;color:#7d8a92;margin-left:4px}
.lab-formula summary{font-size:13px;color:#9aa3a7;cursor:pointer}
.lab-formula p{font-size:12.5px;line-height:1.75;color:#9aa3a7;margin-top:8px}
@media (max-width:1180px){.lab-body{grid-template-columns:1fr}.lab-panel{position:static;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.lab-panel>.lab-ph:first-child,.lab-reads,.lab-formula{grid-column:1/-1}.lab-reads{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:760px){.lab{padding:14px;border-radius:16px}.lab-head{flex-direction:column;align-items:flex-start}.lab-spec{text-align:left}
 .lab-tabs{display:flex;overflow-x:auto;scrollbar-width:none}.lab-tab{flex:none}.lab-charts{grid-template-columns:1fr}
 .lab-panel{grid-template-columns:1fr}.lab-reads{grid-template-columns:1fr 1fr}.lab-timeline{flex-wrap:wrap}.lab-track{flex-basis:100%;order:3}
 .lab-view{overflow-x:auto;scrollbar-width:thin}.lab-vin{width:720px}.lab-call{font-size:11.5px;padding:3px 8px}.lab-mark{font-size:11px}}

/* 污水处理 AAO 实验室的画面颜色（类名都以 ww- 开头）。生成时拼进 solutions/style.css，浅色由 官网主题/build_theme.py 自动换。
   灰 = 有机物 COD；琥珀 = 氨氮；紫 = 硝态氮 / 总氮；红 = 磷；蓝 = 水和空气；绿 = 达标；褐灰 = 活性污泥。 */
.ww-sky0{stop-color:#0f1c28}.ww-sky1{stop-color:#162736}
.ww-soil0{stop-color:#1a1f1d}.ww-soil1{stop-color:#101412}.ww-soilmark{stroke:#262d29;stroke-width:1.4;stroke-linecap:round}
.ww-con0{stop-color:#6e7980}.ww-con1{stop-color:#4b555c}.ww-wall{stroke:#20282d;stroke-width:1}.ww-inner{fill:#0a1218}
.ww-water0{stop-color:#1d4466}.ww-water1{stop-color:#0f2638}.ww-wat{stroke:none}
.ww-tint{fill:#7d7a6e;opacity:0}.ww-tint.is-cod{fill:#8a7f68}.ww-tint.is-p{fill:#ff5d55}.ww-tint.is-no{fill:#9d7bff}.ww-tint.is-nh{fill:#f2b84b}
.ww-baffle{fill:#5c676e}.ww-screen{stroke:#a7b0b5;stroke-width:1.4}
.ww-blanket{fill:#5a4a36;opacity:.85}.ww-well{stroke:#a7b0b5;stroke-width:1.6;fill:none}.ww-scraper{stroke:#c7cdd0;stroke-width:2;stroke-linecap:round;fill:none}
.ww-weir{stroke:#c7cdd0;stroke-width:2;fill:none}
.ww-diff{fill:#a7b0b5}.ww-airpipe{stroke:#7d8a92;stroke-width:2.4;fill:none}
.ww-shaft{stroke:#7d8a92;stroke-width:2}.ww-motor{fill:#5f6b72}.ww-prop{fill:#c7cdd0}
.ww-pipe{stroke:#2e3a42;stroke-width:9;fill:none;stroke-linejoin:round;stroke-linecap:round}
.ww-pipew{fill:none;stroke-linejoin:round;stroke-linecap:round}.ww-pipew.is-ir{stroke:#9d7bff;opacity:.75}.ww-pipew.is-ras{stroke:#7a6448;stroke-width:4}
.ww-flow{stroke:#e6f1ff;stroke-width:2;fill:none;stroke-linecap:round}
.ww-pump{fill:#5f6b72;stroke:#20282d;stroke-width:1}.ww-pumpi{fill:#c7cdd0}
.ww-small{fill:#9aa3a7;font-size:11.5px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.ww-tank{fill:#c7cdd0;font-size:12px;font-weight:700;font-family:Inter,system-ui,sans-serif;letter-spacing:.06em}
.ww-ripple{stroke:#6aa6ff;stroke-width:1.2;opacity:.5;fill:none}
.ww-floc{fill:#8a7254;opacity:.8}.ww-flocc{fill:#8a7254}
.ww-dot{fill:#9aa3a7}.ww-dot.is-cod{fill:#b7ad96}.ww-dot.is-po{fill:#ff6b5b}.ww-dot.is-no{fill:#b39bff}.ww-dot.is-nh{fill:#f2b84b}
.ww-bubble{fill:#cfe6ff;fill-opacity:.25;stroke:#cfe6ff;stroke-width:.8}
.ww-n2{fill:#e8ecef;opacity:.8}
.ww-panel{fill:#0b1114;fill-opacity:.85;stroke:#2c3a48;stroke-width:1}
.ww-ptxt{fill:#c7cdd0;font-size:11px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.ww-pval{fill:#e8ecef;font-size:11px;font-weight:600;font-family:Inter,system-ui,sans-serif;font-variant-numeric:tabular-nums}
.ww-pbar{fill:#1b252b}.ww-pfill{fill:#3ecf8e}.ww-pfill.is-bad{fill:#ff5d55}.ww-plim{stroke:#e8ecef;stroke-width:1.2;opacity:.7}
.ww-ileader{stroke:#9aa3a7;stroke-width:1;stroke-dasharray:3 4;fill:none}
.ww-ibg{fill:#0d151b}.ww-irim{fill:none;stroke:#46525b;stroke-width:1.6}.ww-irim.is-on{stroke:#6aa6ff;stroke-width:2.2}
.ww-cell{fill:#5a4a36;stroke:#a68a64;stroke-width:1.4}.ww-cell2{fill:#3a3a52;stroke:#8f84c8;stroke-width:1.4}.ww-cell3{fill:#4a4128;stroke:#c9a44e;stroke-width:1.4}
.ww-polyp{fill:#ff6b5b}.ww-pha{fill:#e8ecef}
.ww-m-p{fill:#ff6b5b}.ww-m-cod{fill:#b7ad96}.ww-m-no{fill:#b39bff}.ww-m-n2{fill:#e8ecef}.ww-m-nh{fill:#f2b84b}
.ww-o2{fill:#cfe6ff;fill-opacity:.25;stroke:#cfe6ff;stroke-width:.8}
/* 曲线 */
.ww-bar{fill:#7d8a92}.ww-bar.is-cod{fill:#8a7f68}.ww-bar.is-nh{fill:#f2b84b}.ww-bar.is-tn{fill:#9d7bff}.ww-bar.is-p{fill:#ff5d55}.ww-bar.is-ok{fill:#3ecf8e;fill-opacity:.85}.ww-bar.is-bad{fill:#ff5d55;fill-opacity:.85}
.ww-ctext{fill:#e8ecef;font-size:11.5px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.ww-c-lim{stroke:#3ecf8e;stroke-width:1.2;stroke-dasharray:4 4;fill:none}
.ww-c-hl{fill:#6aa6ff;fill-opacity:.07}
.ww-c-red{stroke:#ff5d55;stroke-width:2.6;fill:none;stroke-linejoin:round}.ww-c-violet{stroke:#9d7bff;stroke-width:2.4;fill:none;stroke-linejoin:round}
.ww-c-amber{stroke:#f2b84b;stroke-width:2.6;fill:none;stroke-linejoin:round}.ww-c-fg{stroke:#e8ecef;stroke-width:2.4;fill:none;stroke-linejoin:round}
.ww-c-mute2{stroke:#b7ad96;stroke-width:2.4;fill:none;stroke-linejoin:round}.ww-c-dash{stroke:#7d8a92;stroke-width:1.8;stroke-dasharray:5 4;fill:none}
.ww-c-pt{fill:#e8ecef;stroke:#0b1114;stroke-width:1.5}
.ww-c-cur{stroke:#9aa3a7;stroke-width:1;stroke-dasharray:3 4;fill:none}.ww-c-dot{fill:#ffffff;stroke:#0b1114;stroke-width:2.5}

/* 抗体偶联药物（ADC）实验室的画面颜色（类名都以 adc- 开头）。生成时拼进 solutions/style.css，浅色由 官网主题/build_theme.py 自动换。
   颜色含义：浅灰 = 抗体；绿 = 靶点和抗体上的结合位点；紫 = 连接子；琥珀 = 载荷；红 = 靶点阳性肿瘤细胞、溶酶体（酸性）、血里的游离载荷；蓝 = 正常细胞、内体；暖灰 = 靶点阴性肿瘤细胞。 */
.adc-bg0{stop-color:#11202a}.adc-bg1{stop-color:#0a1014}
.adc-mote{fill:#3a4c57}
.adc-txt{fill:#8d989e;font-size:12px;font-family:Inter,system-ui,sans-serif}
.adc-lab{fill:#c7cdd0;font-size:14px;font-weight:600;font-family:Inter,system-ui,sans-serif;letter-spacing:.04em}
.adc-big{fill:#f2b84b;font-size:24px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:4px;paint-order:stroke}
.adc-sum{fill:#f2b84b;font-size:15px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.adc-dlab{fill:#7d8a92;font-size:11.5px;font-weight:600;font-family:Inter,system-ui,sans-serif}.adc-dlab.is-hi{fill:#f2b84b}
.adc-atom{fill:#0b1114;font-size:11px;font-weight:700;font-family:Inter,system-ui,sans-serif}
.adc-ph{fill:#e8ecef;font-size:12.5px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.adc-sbar{stroke:#9aa3a7;fill:none}
/* 抗体 */
.adc-hc0{stop-color:#c9d2d7}.adc-hc1{stop-color:#76838a}
.adc-lc0{stop-color:#eef3f5}.adc-lc1{stop-color:#a9b5bb}
.adc-dom{stroke:#141c21;stroke-width:1.1}
.adc-dline{stroke:#3c474e;stroke-width:1;fill:none;stroke-linecap:round;opacity:.55}
.adc-hinge{stroke:#98a4aa;fill:none;stroke-linecap:round;stroke-linejoin:round}
.adc-ss{stroke:#e8ecef;fill:none;stroke-dasharray:2 2}
.adc-gly{stroke:#5f6b72;fill:none;stroke-linecap:round}.adc-glyd{fill:#7d8a92}
.adc-cdr{stroke:#3ecf8e;fill:none;stroke-linecap:round}
.adc-ab{stroke:#dfe6ea;fill:none;stroke-linecap:round;stroke-linejoin:round}
.adc-lnk{stroke:#9d7bff;fill:none;stroke-linecap:round;stroke-linejoin:round}
.adc-pay{fill:#f2b84b}
.adc-payg{fill:#f2b84b;opacity:.75}.adc-payb{fill:#f2b84b;stroke:#8a5a12;stroke-width:1}.adc-payi{fill:none;stroke:#8a5a12;stroke-width:1}
.adc-panel{stroke:#1f2c34;stroke-width:1}.adc-pn0{stop-color:#121d24}.adc-pn1{stop-color:#0c1418}
.adc-bond{stroke:#7d8a92;fill:none;stroke-linecap:round}
.adc-snode{fill:#c7cdd0;stroke:#0b1114;stroke-width:1}
.adc-lnode{fill:#2a2150;stroke:#9d7bff;stroke-width:1.8}
.adc-cut{stroke:#ff5d55;stroke-dasharray:4 4;fill:none}
/* 血管和组织 */
.adc-fib{stroke:#1a2830;fill:none}
.adc-lum0{stop-color:#2b151b}.adc-lum1{stop-color:#190c10}
.adc-endo{fill:#3a2a30;stroke:#56434a;stroke-width:1}.adc-endo-n{fill:#4d3940}
.adc-rbc{fill:#6a2f39}.adc-rbc-in{fill:#4f212a}
.adc-leak{stroke:#c7cdd0;fill:none;stroke-linecap:round;stroke-linejoin:round}
.adc-bm{stroke:#3a4a54;fill:none;stroke-dasharray:5 6}
.adc-tum0{stop-color:#3d1d22}.adc-tum1{stop-color:#1d1014}.adc-tum{stroke:#ff6b5b;stroke-width:1.6}
.adc-tum-n{fill:#2c151a;stroke:#9a4148;stroke-width:1.2}
.adc-nor0{stop-color:#192d4d}.adc-nor1{stop-color:#0e1727}.adc-nor{stroke:#4f86ff;stroke-width:1.6}
.adc-nor-n{fill:#13203a;stroke:#3d63b8;stroke-width:1.2}
.adc-neg0{stop-color:#2c2628}.adc-neg1{stop-color:#161214}.adc-neg{stroke:#9a8a8f;stroke-width:1.5}
.adc-neg-n{fill:#231d20;stroke:#665a5f;stroke-width:1.2}
.adc-nucl{fill:#5a2f36}
.adc-rec{stroke:#3ecf8e;fill:none;stroke-linecap:round}.adc-reck{fill:#3ecf8e}
.adc-capw{fill:none;stroke:#3a2a30}
/* 细胞内部 */
.adc-cy0{stop-color:#21161a}.adc-cy1{stop-color:#130e10}
.adc-memb{fill:#4a3238}
.adc-memh{fill:none;stroke:#d8959a;stroke-width:4.4;stroke-linecap:round;stroke-dasharray:0 6.2}
.adc-mt{stroke:#7d8a92;stroke-width:2.4;fill:none;stroke-dasharray:5 1.6;opacity:.5}
.adc-mito{fill:#1d2529;stroke:#56646c;stroke-width:1.4}.adc-cris{stroke:#3d4a52;fill:none;stroke-width:1.3;stroke-linejoin:round}
.adc-golgi{stroke:#3e4b52;fill:none;stroke-linecap:round}
.adc-cent{fill:#9aa3a7}
.adc-nuc{fill:#1a1215;stroke:#6b4f56;stroke-width:2}
.adc-pore{fill:none;stroke:#8a6b72;stroke-width:2;stroke-dasharray:1.5 9}
.adc-chrom{fill:#2c2024}.adc-nucl2{fill:#321f24;stroke:#4f353b}
.adc-comp{fill-opacity:.22;stroke-width:2.2}
.adc-enz{fill:#c7cdd0}
.adc-snip{stroke:#ff5d55;fill:none}
.adc-amino{fill:#a9b5bb;opacity:.8}
.adc-vesi{fill:#1b2630;stroke:#8d989e;stroke-width:1.4}
.adc-coat{fill:none;stroke:#b6bdc0;stroke-dasharray:2.4 3.2}
.adc-pdot{fill:#f2b84b}
.adc-ptail{stroke:#9d7bff;stroke-width:2.2;stroke-linecap:round;fill:none}
.adc-ha0{stop-color:#f2b84b;stop-opacity:.42}.adc-ha1{stop-color:#f2b84b;stop-opacity:0}
.adc-mt2{stroke:#9aa3a7;stroke-width:1.2;fill:none;stroke-linecap:round;opacity:.5}
/* 曲线 */
.adc-c-ref{stroke:#5f6b72;fill:none;stroke-dasharray:4 4}
.adc-c-cur{stroke:#9aa3a7;fill:none;stroke-dasharray:3 4}
.adc-c-fill{fill:#f2b84b;fill-opacity:.12}
.adc-c-red{stroke:#ff6b5b;fill:none;stroke-linejoin:round}.adc-c-blue{stroke:#5f96ff;fill:none;stroke-linejoin:round}
.adc-c-amber{stroke:#f2b84b;fill:none;stroke-linejoin:round}.adc-c-mute{stroke:#9a8a8f;fill:none;stroke-linejoin:round}
.adc-c-fg{stroke:#dfe6ea;fill:none;stroke-linejoin:round}.adc-c-dash{stroke-dasharray:6 5}
.adc-c-mark{fill:#ff6b5b;stroke:#0b1114;stroke-width:2}
.adc-c-dot{fill:#ffffff;stroke:#ff6b5b;stroke-width:3}.adc-c-dota{stroke:#f2b84b}.adc-c-dotm{stroke:#9a8a8f}.adc-c-dotb{stroke:#5f96ff}.adc-c-dotf{stroke:#9aa3a7}.adc-c-dotr{stroke:#ff6b5b}
.adc-c-pk{fill:#c7cdd0;font-size:11px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.adc-mt-b{opacity:.32;stroke-width:1.8}
.adc-er{stroke:#3a2c31;stroke-width:5;fill:none;stroke-linecap:round;stroke-linejoin:round}
.adc-ribo{stroke:#8a6b72;stroke-width:2.6;fill:none;stroke-linecap:round;stroke-dasharray:0 7}
.adc-mito-in{fill:#161d21}
.adc-mt2n{opacity:.28}
.adc-tum-f{fill:#d07078}.adc-neg-f{fill:#b3a6aa}.adc-nor-f{fill:#7da2f0}
.adc-massab{fill:#5f6b72}

/* 储能电池包防热失控实验室的画面颜色（类名都以 bt- 开头）。生成时拼进 solutions/style.css，浅色由 官网主题/build_theme.py 自动换。
   温度场用连续色带（蓝 = 凉、琥珀 = 偏热、红 = 很热、深红加红色光晕 = 失控，越热越深）；蓝 = 冷却液；琥珀 = 汇流排；红 = 热流和火；灰 = 排出的气体；浅灰 = 隔热垫；绿 = 剩余容量。 */
.bt-wall0{stop-color:#121a20}.bt-wall1{stop-color:#0a1014}.bt-rib{stroke:#151e25;stroke-width:1}
.bt-ceil{fill:#1a232a}.bt-tray{stroke:#2c3842;stroke-width:1.2;fill:none}
.bt-det{fill:#3a4650;stroke:#5f6b72;stroke-width:1}.bt-led{fill:#46525b}.bt-led.is-on{fill:#ff5d55}.bt-ledglow{fill:#ff5d55;opacity:0}
.bt-rack{fill:#222c33}.bt-hole{fill:#0d1317}
.bt-rail{fill:#2a343b}.bt-dimcell{fill:#161f25;stroke:#222c33;stroke-width:1}.bt-dimterm{fill:#2a343b}.bt-dimbus{fill:#3a3427}
.bt-pipe{stroke:#2e3a42;stroke-width:12;fill:none;stroke-linecap:round;stroke-linejoin:round}
.bt-pipew{stroke:#3f7cf5;stroke-width:6;fill:none;stroke-linecap:round;stroke-linejoin:round}
.bt-flow{stroke:#e6f1ff;stroke-width:2.2;fill:none;stroke-linecap:round}
.bt-ptext{fill:#8fc4ff;font-size:12px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.bt-plate0{stop-color:#8d989e}.bt-plate1{stop-color:#5c676e}.bt-plateedge{stroke:#20282d;stroke-width:1}
.bt-seg{stroke:none}.bt-tim{fill:#c7cdd0;opacity:.35}
.bt-steel0{stop-color:#7d8a92}.bt-steel1{stop-color:#4b555c}.bt-endplate{stroke:#20282d;stroke-width:1}
.bt-strap{stroke:#5f6b72;stroke-width:2;fill:none;opacity:.5}
.bt-pad{fill:#dfe6ea;opacity:.8}.bt-pad.is-film{fill:#7d8a92;opacity:.6}
.bt-can{fill:#2a343b}.bt-sub{stroke:none}.bt-sub.is-plain{fill:#5c676e}
.bt-cellline{fill:none;stroke:#0b1114;stroke-width:1.4}.bt-cap{fill:#3a4650}
.bt-term{fill:#a7b0b5;stroke:#20282d;stroke-width:.8}
.bt-vent{fill:#20282d;stroke:#7d8a92;stroke-width:1}.bt-vent.is-open{fill:#ff5d55;stroke:#ffd27a}
.bt-ctext{fill:#ffffff;font-size:12.5px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.bt-no{fill:#9aa3a7;font-size:11px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.bt-gauge{fill:#0b1114;fill-opacity:.55;stroke:#e8ecef;stroke-width:1.2;opacity:0}
.bt-gfill{fill:#3ecf8e;opacity:0}.bt-gfill.is-low{fill:#f2b84b}
.bt-coolarrow{stroke:#5fa8ff;stroke-linecap:round;stroke-linejoin:round}
.bt-hotglow{fill:#ff3b2f}.bt-cellline.is-hot{stroke:#ff6b3d;stroke-width:2.2}
.bt-bus{fill:#f2b84b;stroke:#8a6420;stroke-width:.8}
.bt-cable{stroke:#c98a1e;stroke-width:2.4;fill:none;stroke-linecap:round;stroke-linejoin:round}
.bt-harness{stroke:#7d8a92;stroke-width:1;fill:none}.bt-ntc{fill:#c7cdd0}
.bt-duct{stroke:#9aa3a7;stroke-width:1.6;fill:none;stroke-linejoin:round;stroke-linecap:round}.bt-ductin{fill:#9aa3a7;fill-opacity:.07}
.bt-lid{stroke:#5f6b72;stroke-width:2;stroke-dasharray:10 6;fill:none}
.bt-heat{stroke:#ff5d55;stroke-linecap:round;stroke-linejoin:round}
.bt-fire{fill:#ff6b3d}
.bt-gas{fill:#9aa3a7}.bt-spark{fill:#ffd27a}
.bt-info{fill:#e8ecef;font-size:20px;font-weight:600;font-family:Inter,system-ui,sans-serif;font-variant-numeric:tabular-nums}
.bt-infos{fill:#9aa3a7;font-size:12px;font-weight:500;font-family:Inter,system-ui,sans-serif}
/* 曲线 */
.bt-c-red{stroke:#ff5d55;stroke-width:2.6;fill:none;stroke-linejoin:round}.bt-c-red-thin{stroke:#ff5d55;stroke-width:1.4;fill:none;opacity:.6}
.bt-c-blue{stroke:#5fa8ff;stroke-width:2.6;fill:none;stroke-linejoin:round}.bt-c-amber{stroke:#f2b84b;stroke-width:2.4;fill:none;stroke-linejoin:round}
.bt-c-violet{stroke:#9d7bff;stroke-width:2;fill:none;stroke-linejoin:round}.bt-c-green{stroke:#3ecf8e;stroke-width:2.8;fill:none;stroke-linejoin:round}
.bt-c-mute{stroke:#7d8a92;stroke-width:2;stroke-dasharray:5 4;fill:none}.bt-c-thin{stroke:#5fa8ff;stroke-width:1.2;fill:none;opacity:.55}
.bt-c-lim{stroke:#f2b84b;stroke-width:1.2;stroke-dasharray:4 4;fill:none}.bt-c-ton{stroke:#ff6b5b;stroke-width:1.2;stroke-dasharray:4 4;fill:none}
.bt-c-eol{stroke:#ff6b5b;stroke-width:1.2;stroke-dasharray:4 4;fill:none}
.bt-c-mark{fill:#ff6b5b;stroke:#0b1114;stroke-width:2}
.bt-c-cur{stroke:#9aa3a7;stroke-width:1;stroke-dasharray:3 4;fill:none}.bt-c-dot{fill:#ffffff;stroke:#0b1114;stroke-width:2.5}
.bt-bar{stroke:none}.bt-bar-green{fill:#3ecf8e;fill-opacity:.85}.bt-bar-mute{fill:#7d8a92;fill-opacity:.6}
.bt-c-cool{stroke:#8fc4ff;stroke-width:2;fill:none}.bt-c-cooldot{fill:#8fc4ff}
.bt-ctext2{fill:#e8ecef;font-size:11px;font-weight:600;font-family:Inter,system-ui,sans-serif}

/* 黑洞和引力透镜实验室的画面颜色（类名都以 bh- 开头）。生成时拼进 solutions/style.css，浅色由 官网主题/build_theme.py 自动换。 */
.bh-sky0{stop-color:#0d1420}.bh-sky1{stop-color:#05080c}
.bh-neb0{fill:#3a2a6a;fill-opacity:.32}.bh-neb1{fill:#1f3a66;fill-opacity:.3}
.bh-star{fill:#c7d2dc;fill-opacity:.55}.bh-star2{fill:#ffffff}
.bh-gc{fill:none;stroke:#4f86ff;stroke-width:1.2}.bh-gr{fill:none;stroke:#5d7fb8;stroke-width:.9}
.bh-throat{fill:#000000}.bh-throatrim{fill:none;stroke:#f2b84b;stroke-width:2;stroke-opacity:.7}
.bh-path1{fill:none;stroke:#f2b84b;stroke-width:2.4;stroke-linecap:round}.bh-path1g{fill:none;stroke:#f2b84b;stroke-width:6;stroke-opacity:.5;stroke-linecap:round}
.bh-pulse{fill:#ffd48a}.bh-pulsec{fill:#ffffff}
.bh-clock{fill:#0b1114;stroke:#c7d2dc;stroke-width:1.4}.bh-hand{stroke:#f2b84b;stroke-width:2;stroke-linecap:round;fill:none}
.bh-capband{fill:#ff5d55;fill-opacity:.07}.bh-bc{stroke:#ff5d55;stroke-width:1;stroke-dasharray:4 5;stroke-opacity:.7;fill:none}
.bh-ray{fill:none;stroke:#c7d2dc;stroke-width:1.2;stroke-linecap:round}.bh-ray-cap{stroke:#ff7a70}
.bh-loop{fill:none;stroke:#9d7bff;stroke-width:2;stroke-linecap:round}
.bh-hiray{fill:none;stroke:#f2b84b;stroke-width:2.8;stroke-linecap:round}.bh-higlow{fill:none;stroke:#f2b84b;stroke-width:8;stroke-opacity:.45;stroke-linecap:round}
.bh-straight{fill:none;stroke:#f2b84b;stroke-width:1.2;stroke-dasharray:5 5;stroke-opacity:.7}
.bh-angarc{fill:none;stroke:#ffd27a;stroke-width:1.4}
.bh-dimt{fill:#ffd27a;font-size:13px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#05080c;stroke-width:3px;paint-order:stroke}
.bh-dim{fill:none;stroke:#ffd27a;stroke-width:1.2}
.bh-ps{fill:none;stroke:#9d7bff;stroke-width:1.4;stroke-dasharray:4 4}
.bh-rim0{stop-color:#000000;stop-opacity:1}.bh-rim1{stop-color:#f2b84b;stop-opacity:.35}.bh-rim2{stop-color:#f2b84b;stop-opacity:0}
.bh-hor{fill:#000000;stroke:#ffd27a;stroke-width:1;stroke-opacity:.6}
.bh-ringguide{fill:none;stroke:#e8ecef;stroke-width:1;stroke-dasharray:3 6;stroke-opacity:.6}
.bh-ghost{fill:none;stroke:#c7d2dc;stroke-width:1.2;stroke-dasharray:4 4}
.bh-lstar{fill:#dbe5ee}.bh-gbulge{fill:#ffe3b0}.bh-garm{fill:#a9c6ff}
.bh-lensdot{fill:#000000;stroke:#8a959c;stroke-width:1}
.bh-jet0{stop-color:#9d7bff;stop-opacity:.75}.bh-jet1{stop-color:#9d7bff;stop-opacity:0}
.bh-jetp{stroke:none}.bh-jetcore{stroke:#e2d8ff;stroke-width:2.4;stroke-linecap:round;fill:none}
.bh-knot{fill:#f0eaff}
.bh-cell{stroke-width:.7;stroke-linejoin:round}
.bh-shadow{fill:#000000}.bh-pring{fill:none;stroke:#ffe3b0;stroke-width:2}.bh-pring2{fill:none;stroke:#f2b84b;stroke-width:1;stroke-opacity:.35}
.bh-spot{fill:#fff2d8}
.bh-c-ref{stroke:#5f6b72}.bh-c-ref2{stroke:#c7cdd0}.bh-c-mute{stroke:#7d8a92}.bh-c-main{stroke:#5fa8ff}.bh-c-amber{stroke:#f2b84b}.bh-c-red{stroke:#ff6b5b}.bh-c-violet{stroke:#9d7bff}
.bh-c-dot{fill:#ffffff;stroke:#5fa8ff;stroke-width:3}.bh-c-dot2{fill:#ffffff;stroke:#f2b84b;stroke-width:3}.bh-c-dot3{fill:#ffffff;stroke:#9d7bff;stroke-width:3}

/* 冠脉支架实验室的画面颜色（类名都以 cs- 开头）。生成时拼进 solutions/style.css，浅色由 官网主题/build_theme.py 自动换。
   颜色含义：琥珀 = 支架；蓝 = 球囊、血流慢；红 = 高速射流、贴壁不良间隙、FFR 不达标；绿 = 达标；紫 = 缺血心肌；浅灰 = 导丝；暗灰 = 斑块。 */
.cs-bg0{stop-color:#121a20}.cs-bg1{stop-color:#0a1013}
.cs-txt{fill:#8d989e;font-size:12px;font-family:Inter,system-ui,sans-serif}
.cs-lab{fill:#c7cdd0;font-size:13px;font-weight:600;font-family:Inter,system-ui,sans-serif;letter-spacing:.06em}
.cs-sbar{stroke:#9aa3a7;fill:none;stroke-width:1.5}
.cs-panel{stroke:#1f2c34;stroke-width:1}.cs-pn0{stop-color:#121d24}.cs-pn1{stop-color:#0c1418}
.cs-fat{fill:#1f2622;opacity:.8}
.cs-myo{fill:#5a2a33}.cs-myof{stroke:#000;stroke-opacity:.25;stroke-width:1.2;fill:none}
.cs-adv{fill:#3a2a2f;stroke:#4a3640;stroke-width:1}
.cs-med{fill:#6a3a44}
.cs-bl0{stop-color:#4a1820}.cs-bl1{stop-color:#2e0f15}.cs-lumen{stroke:none}
.cs-plq{fill:#6e6a5c;stroke:#8d8775;stroke-width:1}
.cs-lipid{fill:#3a3322;stroke:#5a4e30;stroke-width:1}
.cs-calc{fill:#e8ecef;opacity:.85}
.cs-gap{fill:#ff5d55;fill-opacity:.6;stroke:#ff8a7a;stroke-width:1.2}
.cs-vor{fill:#9fc0ff}
.cs-wire{stroke:#e8ecef;stroke-width:1.6;fill:none;stroke-linecap:round}
.cs-wtip{stroke:#e8ecef;stroke-width:2.6;fill:none;stroke-linecap:round}
.cs-shaft{stroke:#7d8a92;stroke-width:5;fill:none;stroke-linecap:round;opacity:.8}
.cs-ba0{stop-color:#7fa8ff}.cs-ba1{stop-color:#3a64d0}.cs-ball{fill-opacity:.5;stroke:#8fb3ff;stroke-width:1.4}
.cs-mark{stroke:#e8ecef;stroke-width:3;fill:none}
.cs-stent{stroke:#f2b84b;stroke-width:2;fill:none;stroke-linejoin:round;stroke-linecap:round}
.cs-stentg{stroke:#f2b84b;stroke-width:4;fill:none}
.cs-stentb{stroke:#a07830;stroke-width:1.2;fill:none;stroke-linejoin:round}
.cs-sensor{fill:#f2f5f7}.cs-sensorg{fill:#9fc0ff}
.cs-slice{stroke:#9aa3a7;stroke-width:1.2;stroke-dasharray:4 4;fill:none}
.cs-zoom{stroke:#5f6b72;stroke-width:1;stroke-dasharray:3 4;fill:none}
.cs-ht0{stop-color:#7a3440}.cs-ht1{stop-color:#3a171d}
.cs-heartl{stroke:#9a4f5a;stroke-width:1.4}
.cs-aorta{stroke:#7a3440;stroke-width:14;fill:none;stroke-linecap:round}.cs-pa{stroke:#3d4f78;stroke-width:12;fill:none;stroke-linecap:round}
.cs-terr{fill-opacity:.85;stroke:none}
.cs-cor{stroke:#e0838c;stroke-width:2.6;fill:none;stroke-linecap:round}
.cs-lesr{fill:none;stroke:#f2f5f7;stroke-width:2}
.cs-octbg{fill:#080d10;stroke:#1f2c34}
.cs-oadv{fill:#3a2a2f}.cs-omed{fill:#6a3a44}
.cs-olum{fill:#3a141b}
.cs-oball{fill:#4f86ff;fill-opacity:.35;stroke:#8fb3ff;stroke-width:1.2}
.cs-ostrut{stroke:#f2b84b;stroke-width:3;stroke-linecap:round;fill:none}
.cs-oshadow{stroke:#05080a;stroke-width:4;fill:none;opacity:.8}
.cs-owire{fill:#e8ecef}.cs-ocath{fill:#0b1114;stroke:#c7cdd0;stroke-width:1.5}
.cs-mgrid{stroke:#1b252b;stroke-width:1;fill:none}
.cs-tpa{stroke:#e8ecef;stroke-width:1.8;fill:none}.cs-tpd{stroke:#5f96ff;stroke-width:1.8;fill:none}
.cs-mk{fill:#7d8a92;font-size:12px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.cs-mvpa{fill:#e8ecef;font-size:20px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.cs-mvpd{fill:#5f96ff;font-size:20px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.cs-mvr{fill:#e8ecef;font-size:30px;font-weight:600;font-family:Inter,system-ui,sans-serif}.cs-mvr.is-bad{fill:#ff6b5b}.cs-mvr.is-ok{fill:#3ecf8e}
.cs-mvd{fill:#f2b84b;font-size:20px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.cs-mvs{fill:#c7cdd0;font-size:14px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.cs-gtrack{stroke:#26323a;stroke-width:9;fill:none;stroke-linecap:round}.cs-gred{stroke:#ff5d55;stroke-opacity:.55;stroke-width:9;fill:none}
.cs-gfill{stroke:#4f86ff;stroke-width:9;fill:none;stroke-linecap:round}
.cs-gtick{stroke:#7d8a92;stroke-width:1.4}.cs-gnum{fill:#8d989e;font-size:11px;font-family:Inter,system-ui,sans-serif}
.cs-needle{stroke:#f2f5f7;stroke-width:2.4;stroke-linecap:round}.cs-gcap{fill:#f2f5f7}
.cs-gval{fill:#e8ecef;font-size:18px;font-weight:600;font-family:Inter,system-ui,sans-serif}
/* 曲线 */
.cs-c-ref{stroke:#5f6b72;stroke-dasharray:4 4;fill:none;stroke-width:1.3}
.cs-c-thr{stroke:#ff6b5b;stroke-dasharray:4 4;fill:none;stroke-width:1.3}
.cs-c-cur{stroke:#9aa3a7;stroke-dasharray:3 4;fill:none}
.cs-c-band{fill:none}
.cs-c-red{stroke:#ff6b5b;fill:none;stroke-linejoin:round}.cs-c-blue{stroke:#5f96ff;fill:none;stroke-linejoin:round}
.cs-c-amber{stroke:#f2b84b;fill:none;stroke-linejoin:round}.cs-c-green{stroke:#3ecf8e;fill:none;stroke-linejoin:round}
.cs-c-mute{stroke:#7d8a92;fill:none;stroke-linejoin:round}.cs-c-dash{stroke-dasharray:6 5}
.cs-c-dot{fill:#ffffff;stroke-width:3}.cs-c-dotr{stroke:#ff6b5b}.cs-c-dotb{stroke:#5f96ff}.cs-c-dota{stroke:#f2b84b}.cs-c-dotg{stroke:#3ecf8e}.cs-c-dotm{stroke:#7d8a92}
.cs-part{stroke-width:2.2;stroke-linecap:round;fill:none}
.cs-jet{fill:#ff5d55}

/* 固定床催化反应器实验室的画面颜色（类名都以 fb- 开头）。生成时拼进 solutions/style.css，浅色由 官网主题/build_theme.py 自动换。
   温度色带按比熔盐高多少度：蓝 = 比熔盐凉，灰 = 和熔盐一样，琥珀 → 红 → 深红 = 越来越热；蓝点 = 原料 A，绿点 = 产物 P；熔盐 = 灰蓝；紫 = 积碳；绿条 = 催化剂活性。 */
.fb-bg0{stop-color:#0e151a}.fb-bg1{stop-color:#0a0f12}.fb-grid{stroke:#121a20;stroke-width:1}
.fb-pipe{stroke:#2e3a42;stroke-width:10;fill:none;stroke-linecap:round;stroke-linejoin:round}
.fb-pipew{stroke:#9aa7ae;stroke-width:5;fill:none;stroke-linecap:round;stroke-linejoin:round}
.fb-pipe2{stroke:#4b555c;stroke-width:5;fill:none;stroke-linecap:round}
.fb-flow{stroke:#e6f1ff;stroke-width:2;fill:none;stroke-linecap:round}
.fb-shell0{stop-color:#5c676e}.fb-shell1{stop-color:#8d989e}.fb-edge{stroke:#20282d;stroke-width:1}
.fb-gas{stroke:none}.fb-ptube{stroke:#20282d;stroke-width:1;fill:none;opacity:.6}
.fb-salt0{stop-color:#24384a}.fb-salt1{stop-color:#1a2b3a}.fb-saltdot{fill:#6aa6ff;opacity:.55}
.fb-tube{fill:#5c676e}.fb-tubein{stroke:none}.fb-sheet{stroke:#8d989e;stroke-width:3;fill:none}
.fb-hitube{fill:none;stroke:#f2b84b;stroke-width:1.6}
.fb-saltpipe{stroke:#4f86ff;stroke-width:5;fill:none;stroke-linecap:round;stroke-linejoin:round;opacity:.6}
.fb-coil{stroke:#20282d;stroke-width:1.6;fill:none}.fb-pump{fill:#5c676e;stroke:#20282d;stroke-width:1}.fb-pumpi{fill:#c7cdd0}
.fb-cone{fill:#f2b84b;fill-opacity:.05}.fb-coneline{stroke:#f2b84b;stroke-width:1;stroke-dasharray:3 4;fill:none;opacity:.7}
.fb-saltflow{stroke:#6aa6ff;stroke-width:1.6;fill:none;stroke-linecap:round;opacity:.7}
.fb-wall{fill:#8d989e}.fb-tubebg{fill:#0b1114}
.fb-hsglow{fill:#ff4d4d}
.fb-pellet{stroke:#0b1114;stroke-width:1}
.fb-mol{fill:#6aa6ff;stroke:#0b1114;stroke-width:.8}.fb-mol.is-p{fill:#3ecf8e}.fb-mol.is-air{fill:#c7cdd0}
.fb-tc{stroke:#e8ecef;stroke-width:1;opacity:.45;fill:none}.fb-tcdot{fill:#e8ecef;opacity:.6}
.fb-hsmark{fill:#ff6b5b}
.fb-hstext{fill:#ffd27a;font-size:13px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.fb-front{fill:#ff4d4d}
.fb-probe{stroke:#ffffff;stroke-width:1.4;stroke-dasharray:3 3;fill:none}
.fb-act{fill:#3ecf8e}.fb-actedge{fill:none;stroke:#46525b;stroke-width:1}
.fb-tick{stroke:#5f6b72;stroke-width:1;fill:none}.fb-bracket{stroke:#9aa3a7;stroke-width:1.2;fill:none}
.fb-small{fill:#9aa3a7;font-size:11.5px;font-weight:500;font-family:Inter,system-ui,sans-serif}
.fb-big{fill:#e8ecef;font-size:20px;font-weight:600;font-family:Inter,system-ui,sans-serif;font-variant-numeric:tabular-nums}
.fb-dim{fill:#070b0e;opacity:0}
.fb-lensbg{fill:#070b0e}.fb-lensin{fill:#0d151b}.fb-film{fill:#4f86ff;fill-opacity:.06;stroke:#6aa6ff;stroke-width:1;stroke-dasharray:4 5}
.fb-ring{stroke:none}
.fb-pore{stroke:#070b0e;stroke-width:7;fill:none;stroke-linecap:round;stroke-linejoin:round}
.fb-site{fill:#46525b}.fb-site.is-on{fill:#f2b84b}
.fb-pelletedge{fill:none;stroke:#c7cdd0;stroke-width:2}
.fb-molA{fill:#4f86ff;stroke:#0b1114;stroke-width:1.2}.fb-molO{fill:#c7cdd0;stroke:#0b1114;stroke-width:1.2}.fb-molP{fill:#3ecf8e;stroke:#0b1114;stroke-width:1.2}
.fb-moltext{fill:#0b1114;font-size:8.5px;font-weight:700;font-family:Inter,system-ui,sans-serif}
.fb-flash{fill:#ffd27a}
.fb-lensrim{fill:none;stroke:#f2b84b;stroke-width:2}
.fb-lenstext{fill:#e8ecef;font-size:13px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
/* 曲线 */
.fb-a-red{fill:#ff5d55;fill-opacity:.12}.fb-a-violet{fill:#9d7bff;fill-opacity:.35}
.fb-c-ref{stroke:#5f6b72;stroke-width:1.2;stroke-dasharray:4 4;fill:none}
.fb-c-red{stroke:#ff5d55;stroke-width:2.6;fill:none;stroke-linejoin:round}.fb-c-amber{stroke:#f2b84b;stroke-width:2.6;fill:none;stroke-linejoin:round}
.fb-c-green{stroke:#3ecf8e;stroke-width:2.6;fill:none;stroke-linejoin:round}.fb-c-blue{stroke:#5fa8ff;stroke-width:2.4;fill:none;stroke-linejoin:round}
.fb-c-violet{stroke:#9d7bff;stroke-width:2.4;fill:none;stroke-linejoin:round}.fb-c-fg{stroke:#e8ecef;stroke-width:2.4;fill:none;stroke-linejoin:round}
.fb-c-mute{stroke:#7d8a92;stroke-width:1.8;stroke-dasharray:5 4;fill:none}
.fb-c-mark{fill:#ff6b5b;stroke:#0b1114;stroke-width:2}
.fb-c-cur{stroke:#9aa3a7;stroke-width:1;stroke-dasharray:3 4;fill:none}.fb-c-dot{fill:#ffffff;stroke:#0b1114;stroke-width:2.5}

/* 心脏跳一次实验室的画面颜色（类名都以 hb- 开头）。生成时拼进 solutions/style.css，浅色由 官网主题/build_theme.py 自动换。
   颜色含义：红 = 含氧的动脉血、左室压；蓝 = 缺氧的静脉血、左房压；琥珀 = 电信号（传导系统和除极）；绿 = 心电图；浅灰 = 瓣膜、主动脉压；紫 = 左房容积。 */
.hb-bg0{stop-color:#141c22}.hb-bg1{stop-color:#0a0f12}
.hb-grid{stroke:#141e24;stroke-width:1;fill:none}
.hb-txt{fill:#8d989e;font-size:12px;font-family:Inter,system-ui,sans-serif}
.hb-lab{fill:#c7cdd0;font-size:13px;font-weight:600;font-family:Inter,system-ui,sans-serif;letter-spacing:.08em}
.hb-sbar{stroke:#9aa3a7;fill:none;stroke-width:1.5}
.hb-panel{stroke:#1f2c34;stroke-width:1}.hb-pn0{stop-color:#121d24}.hb-pn1{stop-color:#0c1418}
.hb-my0{stop-color:#8a4450}.hb-my1{stop-color:#4a2028}.hb-myo{stroke:#a65a66;stroke-width:1.6}
.hb-awall{fill:#7a3a46;stroke:#a65a66;stroke-width:1.4}
.hb-ar0{stop-color:#c8323e}.hb-ar1{stop-color:#8a1d28}
.hb-ve0{stop-color:#3d5fb8}.hb-ve1{stop-color:#253c7e}
.hb-cav{stroke:#1a0c10;stroke-width:1;stroke-opacity:.5}
.hb-vart{stroke:#8a3a46;stroke-width:36;fill:none;stroke-linecap:round;stroke-linejoin:round}.hb-vartin{stroke:#b02c38;stroke-width:27;fill:none;stroke-linecap:round;stroke-linejoin:round}
.hb-vven{stroke:#3a3f66;stroke-width:33;fill:none;stroke-linecap:round;stroke-linejoin:round}.hb-vvenin{stroke:#33509e;stroke-width:25;fill:none;stroke-linecap:round;stroke-linejoin:round}
.hb-pa{fill:#ffb3b8}.hb-pv{fill:#b3c8ff}
.hb-valve{stroke:#eef3f5;stroke-width:4;fill:none;stroke-linecap:round}
.hb-jet{stroke:#ffffff;stroke-width:10;stroke-linecap:round;opacity:.8}
.hb-cond{stroke:#f2b84b;stroke-width:1.6;fill:none;stroke-dasharray:3 3;stroke-linecap:round;opacity:.65}
.hb-condg{stroke:#f2b84b;stroke-width:5;fill:none;stroke-linecap:round}
.hb-node{fill:#f2b84b;stroke:#0b1114;stroke-width:1}
.hb-spark{fill:#fff2c8}
.hb-depol{fill:#f2b84b}
.hb-depola{fill:none;stroke:#f2b84b;stroke-width:9}
.hb-mgrid{stroke:#1b252b;stroke-width:1;fill:none}
.hb-ecg{stroke:#3ecf8e;stroke-width:2;fill:none;stroke-linejoin:round}.hb-ecgdot{fill:#c8ffe4}
.hb-abp{stroke:#ff6b5b;stroke-width:2;fill:none}.hb-abpdot{fill:#ffd0cc}
.hb-erase{fill:#0e171d}
.hb-mk{fill:#7d8a92;font-size:12px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.hb-mvg{fill:#3ecf8e;font-size:26px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.hb-mvr{fill:#ff6b5b;font-size:22px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.hb-mvw{fill:#e8ecef;font-size:18px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.hb-vring{fill:#2a1a1f;stroke:#7a5a62;stroke-width:3}
.hb-vholea{fill:#b02c38}.hb-vholev{fill:#33509e}
.hb-vleaf{fill:#dfe6ea;fill-opacity:.85;stroke:#0b1114;stroke-width:1}
.hb-vlab{fill:#c7cdd0;font-size:13px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.hb-pcg{stroke:#c7cdd0;stroke-width:1.4;fill:none}
.hb-cur{stroke:#9aa3a7;stroke-dasharray:3 3;fill:none}
.hb-snd{fill:#7d8a92;font-size:13px;font-weight:600;font-family:Inter,system-ui,sans-serif}.hb-snd.is-on{fill:#f2b84b}
/* 曲线 */
.hb-c-band{fill:#ffffff;fill-opacity:.04}
.hb-c-cur{stroke:#9aa3a7;stroke-dasharray:3 4;fill:none}
.hb-c-red{stroke:#ff6b5b;fill:none;stroke-linejoin:round}.hb-c-blue{stroke:#5f96ff;fill:none;stroke-linejoin:round}
.hb-c-green{stroke:#3ecf8e;fill:none;stroke-linejoin:round}.hb-c-amber{stroke:#f2b84b;fill:none;stroke-linejoin:round}
.hb-c-violet{stroke:#9d7bff;fill:none;stroke-linejoin:round}.hb-c-fg{stroke:#dfe6ea;fill:none;stroke-linejoin:round}
.hb-c-mute{stroke:#7d8a92;fill:none}.hb-c-dash{stroke-dasharray:6 5}
.hb-c-loopfill{fill:#ff5d55;fill-opacity:.1}
.hb-c-trail{stroke:#ffd0cc;fill:none;stroke-linecap:round;opacity:.5}
.hb-c-dot{fill:#ffffff;stroke-width:3}.hb-c-dotr{stroke:#ff6b5b}.hb-c-dotg{stroke:#3ecf8e}.hb-c-dota{stroke:#f2b84b}.hb-c-dotm{stroke:#9d7bff}
.hb-c-val{fill:#e8ecef;font-size:12px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.hb-c-dotf{stroke:#dfe6ea}

/* 开普勒三定律实验室的画面颜色（类名都以 kp- 开头）。生成时拼进 solutions/style.css，浅色由 官网主题/build_theme.py 自动换。 */
.kp-sky0{stop-color:#0f1824}.kp-sky1{stop-color:#070b10}
.kp-milky{fill:none;stroke:#2a3a52;stroke-width:90;stroke-opacity:.35}
.kp-star{fill:#c7d2dc;fill-opacity:.55}.kp-star2{fill:#ffffff}
.kp-sun0{stop-color:#fff3d0;stop-opacity:.95}.kp-sun1{stop-color:#f2b84b;stop-opacity:.45}.kp-sun2{stop-color:#f2b84b;stop-opacity:0}
.kp-suncore{fill:#fff1c9}.kp-sunrim{fill:none;stroke:#f2b84b;stroke-width:4;stroke-opacity:.8}
.kp-pl0{stop-color:#bfe0ff}.kp-pl1{stop-color:#2f6fe0}.kp-plrim{stroke:#0b1114;stroke-width:1}.kp-plhalo{fill:#4f86ff;fill-opacity:.45}
.kp-orbit-bg{fill:none;stroke:#3a4a5a;stroke-width:1;stroke-dasharray:2 5}
.kp-orbit{fill:none;stroke:#c7d2dc;stroke-width:1.8;stroke-linecap:round}
.kp-axis{fill:none;stroke:#3a4a5a;stroke-width:1;stroke-dasharray:4 5}
.kp-ref{fill:none;stroke:#4f86ff;stroke-width:1;stroke-dasharray:2 6;stroke-opacity:.7}
.kp-sec0{fill:#4f86ff;fill-opacity:.16;stroke:#4f86ff;stroke-opacity:.5;stroke-width:1}.kp-sec1{fill:#9d7bff;fill-opacity:.16;stroke:#9d7bff;stroke-opacity:.5;stroke-width:1}
.kp-hi0{fill:#ff5d55;fill-opacity:.42;stroke:#ff5d55;stroke-width:1.4}.kp-hi1{fill:#4f86ff;fill-opacity:.42;stroke:#4f86ff;stroke-width:1.4}
.kp-val{fill:#e8ecef;font-size:12px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#070b10;stroke-width:3px;paint-order:stroke}
.kp-tick{fill:#8fb2ff;font-size:11px;font-family:Inter,system-ui,sans-serif;stroke:#070b10;stroke-width:3px;paint-order:stroke}
.kp-dim{fill:none;stroke:#ffd27a;stroke-width:1.2}
.kp-dimt{fill:#ffd27a;font-size:12.5px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#070b10;stroke-width:3px;paint-order:stroke}
.kp-str1{stroke:#f2b84b;stroke-width:1.6;stroke-dasharray:5 4}.kp-str2{stroke:#9aa3a7;stroke-width:1.6;stroke-dasharray:5 4}
.kp-cmark{fill:none;stroke:#9aa3a7;stroke-width:1.2}.kp-focus{fill:none;stroke:#c7d2dc;stroke-width:1.4}.kp-pin{fill:#e8ecef;stroke:#070b10;stroke-width:1.5}
.kp-ghost{fill:#8fb2ff}
.kp-trail{fill:none;stroke:#4f86ff;stroke-width:3;stroke-linecap:round;stroke-opacity:.55}
.kp-apsis{stroke:#e8ecef;stroke-width:1.6}
.kp-vel{fill:none;stroke:#5fa8ff;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.kp-grav{fill:none;stroke:#ff5d55;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.kp-tang{fill:none;stroke:#f2b84b;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.kp-vt{fill:#8fc0ff;font-size:12px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#070b10;stroke-width:3px;paint-order:stroke}
.kp-morb{fill:none;stroke-width:1.3;stroke-opacity:.7}
.kp-c0{stroke:#9aa3a7}.kp-c1{stroke:#f2b84b}.kp-c2{stroke:#4f86ff}.kp-c3{stroke:#ff5d55}.kp-c4{stroke:#3ecf8e;stroke-width:2;stroke-dasharray:6 4}
.kp-mp{stroke:#070b10;stroke-width:1.2}.kp-f0{fill:#9aa3a7}.kp-f1{fill:#f2b84b}.kp-f2{fill:#4f86ff}.kp-f3{fill:#ff5d55}.kp-f4{fill:#3ecf8e}
.kp-sym{font-size:14px;font-family:system-ui,sans-serif;stroke:#070b10;stroke-width:3px;paint-order:stroke}
.kp-csym{font-size:12px;font-family:system-ui,sans-serif}
.kp-t0{fill:#c7cdd0}.kp-t1{fill:#f2b84b}.kp-t2{fill:#8fb2ff}.kp-t3{fill:#ff8a80}.kp-t4{fill:#3ecf8e}
.kp-bar{fill-opacity:.8}
.kp-cval{fill:#e0e6ea;font-size:11px;font-family:Inter,system-ui,sans-serif}
.kp-c-amber{stroke:#f2b84b}.kp-c-mute{stroke:#7d8a92}.kp-c-fg{stroke:#e8ecef}.kp-c-main{stroke:#5fa8ff}.kp-c-ref{stroke:#5f6b72}.kp-c-ref2{stroke:#c7cdd0}
.kp-c-dot{fill:#ffffff;stroke:#5fa8ff;stroke-width:3}.kp-c-dot2{fill:#ffffff;stroke:#f2b84b;stroke-width:3}.kp-c-dot3{fill:#ffffff;stroke:#7d8a92;stroke-width:3}

/* 芯片光刻到刻蚀实验室的画面颜色（类名都以 lt- 开头）v1.0（2026-10-24）。生成时拼进 solutions/style.css，浅色由 官网主题/build_theme.py 自动换。
   紫 = 紫外/极紫外光和曝光区；琥珀 = 光刻胶（第 5 步是铜）；玻璃灰 = SiO₂ 介质和光学玻璃；蓝 = 等离子体和离子、显影液；红 = 热、残胶和失败；绿 = 线宽测量。 */
.lt-bg0{stop-color:#0d171d}.lt-bg1{stop-color:#091014}
.lt-panel{fill:#0b1318;stroke:#1d2a32;stroke-width:1}
.lt-gdot{fill:#1f2d36}
.lt-si0{stop-color:#3c4a54}.lt-si1{stop-color:#28333a}.lt-latdot{fill:#55636c}
.lt-stop{fill:#5c6a73}
.lt-ox0{stop-color:#a9b6bd}.lt-ox1{stop-color:#7f8d95}.lt-oxedge{stroke:#cfd8dc;stroke-width:1;opacity:.6}
.lt-void{fill:#0b1318}
.lt-pr0{stop-color:#f2c063}.lt-pr1{stop-color:#d6952a}
.lt-predge{stroke:#2a1f0c;stroke-width:1;stroke-linejoin:round;opacity:.55}
.lt-cu0{stop-color:#f6c46a}.lt-cu1{stop-color:#c7842a}.lt-cuedge{stroke:#ffe1a6;stroke-width:1}
.lt-barrier{stroke:#dfe5e8;stroke-width:1.6;stroke-linejoin:round}
.lt-dev0{stop-color:#4f86ff;stop-opacity:.10}.lt-dev1{stop-color:#4f86ff;stop-opacity:.42}
.lt-bad{fill:#ff5d55}
.lt-lit{stop-color:#9d7bff}
.lt-aer{stroke:#b9a2ff;stroke-linejoin:round}.lt-aerbase{stroke:#5a4a8f;stroke-width:1;stroke-dasharray:3 4}
.lt-ion{stroke:#8fb4ff;stroke-width:1.6;stroke-linecap:round}.lt-ion.lt-ion2{stroke:#cfe0ff}
.lt-pad{fill:#3a434a}.lt-padline{stroke:#59656d;stroke-width:3}.lt-slurry{fill:#cfd8dc}
.lt-dim{stroke:#ffd27a;stroke-width:1.3;stroke-linecap:round}
.lt-dimt{fill:#ffd27a;font-size:12.5px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.lt-cdim{stroke:#3ecf8e;stroke-width:1.5;stroke-linecap:round}
.lt-cdt{fill:#3ecf8e;font-size:12.5px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.lt-scale{stroke:#c7cdd0;stroke-width:1.4}.lt-scalet{fill:#c7cdd0;font-size:11px;font-family:Inter,system-ui,sans-serif}
.lt-head{fill:#e8ecef;font-size:13px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#0b1318;stroke-width:3px;paint-order:stroke}
.lt-head2{fill:#b9a2ff;font-size:12px;font-family:Inter,system-ui,sans-serif;stroke:#0b1318;stroke-width:3px;paint-order:stroke}
.lt-layer{fill:#e8ecef;font-size:11.5px;font-weight:600;font-family:Inter,system-ui,sans-serif;opacity:.85;stroke:#0b1318;stroke-width:2.5px;paint-order:stroke}
.lt-tt{fill:#9aa6ad;font-size:11.5px;font-family:Inter,system-ui,sans-serif}
.lt-edge{stroke:#1a2227;stroke-width:1}
.lt-met0{stop-color:#7d8a92}.lt-met1{stop-color:#3f4a51}
.lt-gl0{stop-color:#c9d6dc;stop-opacity:.75}.lt-gl1{stop-color:#7f9aa8;stop-opacity:.45}.lt-lensE{stroke:#d6e2e7;stroke-width:.8;stroke-opacity:.6}
.lt-hot0{stop-color:#ff5d55;stop-opacity:.9}.lt-hot1{stop-color:#ff5d55;stop-opacity:0}
.lt-pl0{stop-color:#8fb4ff;stop-opacity:.95}.lt-pl1{stop-color:#4f86ff;stop-opacity:.55}.lt-pl2{stop-color:#4f86ff;stop-opacity:0}
.lt-ashpl{opacity:.8}
.lt-fl0{stop-color:#e6dcff}.lt-fl1{stop-color:#9d7bff;stop-opacity:0}
.lt-cup{fill:#121b21;stroke:#4b565e;stroke-width:1.6;stroke-linejoin:round}.lt-cupE{stroke:#6e7980;stroke-width:1.6}
.lt-fin{stroke:#2a343a;stroke-width:1.2}
.lt-chuck{fill:#a7b0b5}
.lt-arm{stroke:#5d6970;stroke-width:6;stroke-linecap:round}
.lt-nozzle{fill:#a7b0b5}
.lt-stream{stroke:#f2b84b;stroke-width:3;stroke-linecap:round}.lt-stream.lt-devstream{stroke:#6f9bff}
.lt-wside{fill:#2b3439}.lt-wtop{fill:#55616a;stroke:#8e999f;stroke-width:1}.lt-wtop.lt-wcoat{fill:#8a6a35}
.lt-film{fill:#f2b84b}.lt-film.lt-devfilm{fill:#4f86ff}
.lt-streak{stroke:#ffe0a0;stroke-width:1.4;stroke-linecap:round}
.lt-drop{fill:#f2b84b}
.lt-rot{stroke:#c7cdd0;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.lt-wisp{stroke:#8e999f;stroke-width:1.4;stroke-linecap:round}
.lt-rail{fill:#2a343a}
.lt-waferS{fill:#55616a}.lt-prS{fill:#f2b84b}
.lt-spot{fill:#c8b6ff}
.lt-scanA{stroke:#9aa6ad;stroke-width:1.3;stroke-linecap:round}
.lt-box{fill:#18232a;stroke:#4b565e;stroke-width:1.2}.lt-boxt{fill:#c9b6ff;font-size:11.5px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.lt-beam{stroke:#9d7bff;stroke-width:7;stroke-opacity:.28;stroke-linejoin:round}
.lt-beamF{stroke:#d9ccff;stroke-width:1.8;stroke-dasharray:6 12;stroke-linecap:round;stroke-linejoin:round}
.lt-beamA{fill:#9d7bff;fill-opacity:.22}
.lt-ray{stroke:#b9a2ff;stroke-width:1;stroke-opacity:.8;stroke-linejoin:round}
.lt-mirror{stroke:#c9d1d6;stroke-width:3;stroke-linecap:round}
.lt-chrome{fill:#20282d}
.lt-barrel{fill:#141d23;stroke:#4b565e;stroke-width:1.4}
.lt-water{fill:#4f86ff;fill-opacity:.28;stroke:#6f9bff;stroke-width:1}
.lt-vac{stroke:#33414a;stroke-width:1.2;stroke-dasharray:5 5}
.lt-emirror{stroke:#dfe5e8;stroke-width:4;stroke-linecap:round}.lt-mback{stroke:#4b565e;stroke-width:6;stroke-linecap:round}
.lt-emask{fill:#c9d1d6}
.lt-collector{stroke:#dfe5e8;stroke-width:4;stroke-linecap:round}
.lt-tin{fill:#a7b0b5}
.lt-co2{stroke:#ff5d55;stroke-width:2.4;stroke-linecap:round}
.lt-semF{fill:#10181d;stroke:#2c3a44;stroke-width:1.2}
.lt-semBg{fill:#22282c}
.lt-semLine{fill:#7a858b}
.lt-semEdge{stroke:#e8ecef;stroke-width:2.2;stroke-linejoin:round;opacity:.85}
.lt-grn0{fill:#ffffff;opacity:.10}.lt-grn1{fill:#000000;opacity:.25}
.lt-scan{stroke:#e8ecef;stroke-width:1;opacity:.35}
.lt-semt{fill:#e8ecef;font-size:12px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.lt-semBar{stroke:#e8ecef;stroke-width:2}
.lt-chamber{fill:#10181d;stroke:#6e7980;stroke-width:2;stroke-linejoin:round}
.lt-coil{fill:#1a2227;stroke:#8a6a35;stroke-width:2}.lt-coil.is-on{stroke:#f2b84b}
.lt-wire{stroke:#6e7980;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.lt-gas{stroke:#9aa6ad;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.lt-tank{stroke:#8e999f;stroke-width:2;stroke-linejoin:round}
.lt-elec{fill:#4f86ff;fill-opacity:.13}
.lt-cuion{fill:#f2b84b}
.lt-padT{fill:#39434a;stroke:#59656d;stroke-width:1}
.lt-groove{stroke:#4f5b63;stroke-width:1.4}
.lt-headT{fill:#8e999f;stroke:#c7cdd0;stroke-width:1.4}
.lt-waferEdge{stroke:#55616a;stroke-width:3}
.lt-slurryD{fill:#dfe5e8}
.lt-zoom{stroke:#c7cdd0;stroke-width:1.2}.lt-zoomL{stroke:#c7cdd0;stroke-width:1;stroke-dasharray:3 5;opacity:.45}
.lt-c-ref{stroke:#5f6b72;stroke-width:1.2;stroke-dasharray:4 4}
.lt-c-mute{stroke:#7d8a92;stroke-width:2}
.lt-c-main{stroke:#5fa8ff;stroke-width:2.8;stroke-linejoin:round}
.lt-c-amber{stroke:#f2b84b;stroke-width:2.8;stroke-linejoin:round}
.lt-c-violet{stroke:#b9a2ff;stroke-width:2.8;stroke-linejoin:round}
.lt-c-band{fill:#3ecf8e;fill-opacity:.16}
.lt-c-mark{fill:#ff6b5b;stroke:#0b1114;stroke-width:2}
.lt-c-dot{fill:#ffffff;stroke:#5fa8ff;stroke-width:3}
.lt-c-dot2{fill:#ffffff;stroke:#f2b84b;stroke-width:3}
.lt-b-chrome{fill:#7d8a92;fill-opacity:.12}
.lt-b-keep{fill:#f2b84b}
.lt-b-fill{fill:#9d7bff;fill-opacity:.18}
.lt-b-ghost{stroke:#9d7bff;stroke-width:1.2;stroke-dasharray:3 4;stroke-opacity:.6}
.lt-b-img{stroke:#b9a2ff;stroke-width:2.6;stroke-linejoin:round}
.lt-b-thr{stroke:#ff6b5b;stroke-width:1.4;stroke-dasharray:5 4}
.lt-barrel2{fill-opacity:.55}
.lt-c-band2{fill:#7d8a92;fill-opacity:.12}
.lt-ebeam{stroke:#e8ecef;stroke-width:1.4;opacity:.8}.lt-ebdot{fill:#ffffff}
.lt-ebt{fill:#e8ecef;font-size:12px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.lt-flow{stroke:#fff3d6;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.lt-solv{fill:#9aa6ad}

/* 5G 大规模天线实验室的画面颜色（类名都以 mm- 开头）v1.0（2026-10-24）。生成时拼进 solutions/style.css，浅色由 官网主题/build_theme.py 自动换。
   地面热力图蓝→绿 = 信号弱→强；琥珀 = 波束（能量）；紫 = 上行导频和阵元相位；红 = 邻区干扰、信号差的用户；绿圈 = 信号好的用户。 */
.mm-gr0{stop-color:#0c151b}.mm-gr1{stop-color:#091015}
.mm-lane{stroke:#c7cdd0;stroke-width:1;stroke-dasharray:8 10;opacity:.22}
.mm-roof{fill:#121a20;fill-opacity:.82;stroke:#2a3740;stroke-width:1}
.mm-roof2{stroke:#1f2b33;stroke-width:1}
.mm-ac{fill:#2c3942}
.mm-ring{stroke:#c7cdd0;stroke-width:1;stroke-dasharray:3 6;opacity:.35}
.mm-ringt{fill:#9aa6ad;font-size:11px;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.mm-info{fill:#7d8a92;font-size:11px;font-family:Inter,system-ui,sans-serif}
.mm-lobe{fill:#f2b84b;fill-opacity:.10}
.mm-lobeE{stroke:#f2b84b;stroke-width:1.2;stroke-linejoin:round;opacity:.8}
.mm-wide{fill:#f2b84b;fill-opacity:.12;stroke:#f2b84b;stroke-width:1.2;stroke-opacity:.7}
.mm-serve{stroke:#f2b84b;stroke-width:2.4;stroke-linecap:round;stroke-dasharray:2 5}
.mm-nbwave{stroke:#ff5d55;stroke-width:2;stroke-linecap:round}
.mm-pilot{stroke:#b9a2ff;stroke-width:1.6;stroke-dasharray:4 6;stroke-linecap:round}
.mm-trail{stroke:#c7cdd0;stroke-width:1.4;stroke-dasharray:2 5;opacity:.6}
.mm-ringU{stroke:#7d8a92;stroke-width:2}.mm-ringU.is-ok{stroke:#3ecf8e}.mm-ringU.is-bad{stroke:#ff5d55}.mm-ringU.is-idle{stroke:#5f6b72;stroke-dasharray:3 3}
.mm-phone{fill:#dce3e7;stroke:#0b1114;stroke-width:1}.mm-screen{fill:#1d2a33}
.mm-car{fill:#dce3e7;stroke:#0b1114;stroke-width:1}.mm-glass{fill:#1d2a33}
.mm-uid{fill:#e8ecef;font-size:10.5px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.mm-tower{fill:#1a242b;stroke:#8e999f;stroke-width:1.4}.mm-tower.mm-nbt{stroke:#ff6b5b}
.mm-towerL{stroke:#5d6970;stroke-width:1.2}
.mm-met0{stop-color:#a7b0b5}.mm-met1{stop-color:#5d6970}.mm-edge{stroke:#20282d;stroke-width:1}
.mm-el{fill:#f2b84b}
.mm-bst{fill:#c7cdd0;font-size:11.5px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.mm-inset{fill:#0b1318;fill-opacity:.92;stroke:#2c3a44;stroke-width:1}
.mm-elc{fill:#141d23;stroke:#4b565e;stroke-width:1}
.mm-needle{stroke:#b9a2ff;stroke-width:2;stroke-linecap:round}
.mm-c-ref{stroke:#5f6b72;stroke-width:1.2;stroke-dasharray:4 4}
.mm-c-faint{stroke:#7d8a92;stroke-width:1;opacity:.35}
.mm-c-mute{stroke:#7d8a92;stroke-width:2}
.mm-c-main{stroke:#5fa8ff;stroke-width:2.8;stroke-linejoin:round}
.mm-c-amber{stroke:#f2b84b;stroke-width:2.6;stroke-linejoin:round}
.mm-c-mark{fill:#ff6b5b;stroke:#0b1114;stroke-width:1.5}.mm-c-mark.is-ok{fill:#3ecf8e}
.mm-c-dot{fill:#ffffff;stroke:#5fa8ff;stroke-width:3}
.mm-bar{fill:#7d8a92}.mm-bar.is-ok{fill:#3ecf8e}.mm-bar.is-bad{fill:#ff5d55}.mm-bar.is-idle{fill:#2a343a}.mm-bar.is-wait{fill:#4f86ff;fill-opacity:.6}
.mm-b-bad{stroke:#ff6b5b;stroke-width:1.3;stroke-dasharray:5 4}
.mm-b-full{stroke:#3ecf8e;stroke-width:1.3;stroke-dasharray:5 4}
.mm-bar.is-idle2{fill:#5f6b72}

/* 行星齿轮减速器（专利附图风）实验室的画面颜色（类名都以 gr- 开头）v1.0（2026-10-24）。生成时拼进 solutions/style.css，浅色由 官网主题/build_theme.py 自动换。
   琥珀 = 太阳轮和输入轴（10、50）；蓝 = 行星轮（20）；灰 = 齿圈和壳体（30、70）；紫 = 行星架和输出轴（40、60）；绿 = 权利要求正在对应的部件。 */
.gr-bg0{stop-color:#0e161b}.gr-bg1{stop-color:#0a1014}
.gr-gridl{stroke:#141e24;stroke-width:1}
.gr-frame{stroke:#26323a;stroke-width:1}.gr-divider{stroke:#26323a;stroke-width:1;stroke-dasharray:2 5}
.gr-fig{fill:#9aa6ad;font-size:13px;font-weight:700;font-family:Inter,system-ui,sans-serif;letter-spacing:.08em}
.gr-small{fill:#7d8a92;font-size:11px;font-family:Inter,system-ui,sans-serif}
.gr-center{stroke:#5f6b72;stroke-width:1;stroke-dasharray:16 4 3 4}
.gr-su0{stop-color:#ffd27a}.gr-su1{stop-color:#d6952a}
.gr-pl0{stop-color:#8fb4ff}.gr-pl1{stop-color:#3f6fe0}
.gr-ri0{stop-color:#b9c3c9}.gr-ri1{stop-color:#6e7980}
.gr-ca0{stop-color:#b9a2ff;stop-opacity:.75}.gr-ca1{stop-color:#6d4fd6;stop-opacity:.75}
.gr-sun,.gr-planet,.gr-ring{stroke:#0b1114;stroke-width:.8;stroke-linejoin:round}
.gr-carrier{stroke:#d9ccff;stroke-width:1;stroke-opacity:.5}
.gr-sun.is-fixed,.gr-ring.is-fixed,.gr-carrier.is-fixed{opacity:.45}
.gr-bolt{fill:#20282d;stroke:#8e999f;stroke-width:.8}
.gr-pin{fill:#20282d;stroke:#d9ccff;stroke-width:1.4}
.gr-key{fill:#20282d}
.gr-mark{stroke:#0b1114;stroke-width:1.6;stroke-linecap:round;opacity:.55}
.gr-hl{stroke:#3ecf8e;stroke-width:5}
.gr-varr{stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}.gr-vS{stroke:#ffd27a}.gr-vC{stroke:#d9ccff}.gr-vR{stroke:#c7cdd0}
.gr-fixed{stroke:#c7cdd0;stroke-width:0}
.gr-rot{stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.gr-rotIn{stroke:#ffd27a}.gr-rotOut{stroke:#b9a2ff}
.gr-hatchl{stroke:#0b1114;stroke-width:1.1;opacity:.55}
.gr-housing{fill:#4b555c;stroke:#8e999f;stroke-width:1}
.gr-sring{fill:#9aa6ad;stroke:#0b1114;stroke-width:1}.gr-sring.is-fixed{fill:#6e7980}
.gr-ssun{fill:#f2b84b;stroke:#0b1114;stroke-width:1}
.gr-spla{fill:#6f9bff;stroke:#0b1114;stroke-width:1}
.gr-scar{fill:#9d7bff;stroke:#0b1114;stroke-width:1}
.gr-spin{fill:#c9b6ff;stroke:#0b1114;stroke-width:.8}
.gr-sshaft{stroke:#0b1114;stroke-width:1}.gr-sin{fill:#d6952a}.gr-sout{fill:#7d5fe0}
.gr-brg{stroke:#c7cdd0;stroke-width:1}
.gr-ground{stroke:#c7cdd0;stroke-width:1.6;stroke-linecap:round}
.gr-io{fill:#e8ecef;font-size:12px;font-weight:700;font-family:Inter,system-ui,sans-serif;letter-spacing:.06em;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.gr-rpm{fill:#c7cdd0;font-size:11.5px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.gr-numl{stroke:#c7cdd0;stroke-width:1}
.gr-num{fill:#e8ecef;font-size:13px;font-weight:700;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.gr-numg.is-hl .gr-num{fill:#3ecf8e}.gr-numg.is-hl .gr-numl{stroke:#3ecf8e}
.gr-c-main{stroke:#5fa8ff;stroke-width:2.4}
.gr-c-ok{fill:#3ecf8e;stroke:#0b1114;stroke-width:1}.gr-c-warn{fill:#f2b84b;stroke:#0b1114;stroke-width:1}.gr-c-bad{fill:#ff5d55;stroke:#0b1114;stroke-width:1}
.gr-c-dot{fill:none;stroke:#ffffff;stroke-width:2.5}
.gr-c-ref{stroke:#5f6b72;stroke-width:1.2}
.gr-c-sun{stroke:#f2b84b;stroke-width:2.8;stroke-linecap:round}
.gr-c-pla{stroke:#6f9bff;stroke-width:2.8;stroke-linecap:round}
.gr-c-car{stroke:#b9a2ff;stroke-width:2.8;stroke-linecap:round}
.gr-c-ring{stroke:#9aa6ad;stroke-width:1.6;stroke-dasharray:5 4}
.gr-c-pt{fill:#e8ecef;stroke:#0b1114;stroke-width:1.2}
.gr-c-band{fill:#3ecf8e;fill-opacity:.14}
.gr-c-head{fill:#c7cdd0;font-size:15px;font-weight:700;font-family:Inter,system-ui,sans-serif}
.gr-c-row{fill:#9aa6ad;font-size:15px;font-weight:600;font-family:Inter,system-ui,sans-serif}.gr-c-row.is-on{fill:#3ecf8e}
.gr-c-cell{fill:#26323a;stroke:#5f6b72;stroke-width:1}.gr-c-cell.is-done{fill:#3ecf8e;fill-opacity:.4;stroke:#3ecf8e}.gr-c-cell.is-on{fill:#3ecf8e;stroke:#c8f5df;stroke-width:1.5}
.gr-b-sun{fill:#f2b84b}.gr-b-pla{fill:#6f9bff}.gr-b-car{fill:#9d7bff}.gr-b-ring{fill:#9aa6ad}
.gr-b-val{fill:#e8ecef;font-size:12px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.gr-planet.is-bad{stroke:#ff5d55;stroke-width:2}

/* 植物工厂实验室的画面颜色（类名都以 pf- 开头）。生成时拼进 solutions/style.css，浅色由 官网主题/build_theme.py 自动换。 */
.pf-room0{stop-color:#0c1318}.pf-room1{stop-color:#121c22}.pf-wall{stroke:#16222a;stroke-width:1}.pf-floor{fill:#0a0f12}
.pf-post{fill:#56626a}.pf-shelf{fill:#3a454c}.pf-ledbar{fill:#2a3238;stroke:#5d6a72;stroke-width:1}
.pf-d-red{fill:#ff5d55}.pf-d-blue{fill:#4f86ff}.pf-d-white{fill:#ffe2a8}
.pf-coneR0{stop-color:#ff5d55;stop-opacity:.4}.pf-coneR1{stop-color:#ff5d55;stop-opacity:.04}
.pf-coneB0{stop-color:#4f86ff;stop-opacity:.42}.pf-coneB1{stop-color:#4f86ff;stop-opacity:.04}
.pf-coneW0{stop-color:#f7d79a;stop-opacity:.42}.pf-coneW1{stop-color:#f7d79a;stop-opacity:.04}
.pf-trough{fill:#26323a;stroke:#46525b;stroke-width:1}.pf-waterline{stroke:#4f86ff;stroke-width:1.4;stroke-opacity:.7}
.pf-lett{fill:#5cb878}.pf-lett2{fill:#3f9a62}.pf-lett3{fill:#8fd6a0}.pf-lett3b{fill:#7fcf93}
.pf-co2{fill:#9d7bff;stroke:#0b1114;stroke-width:.8}.pf-h2o{fill:#4f86ff}.pf-o2{fill:#3ecf8e}.pf-sugar{fill:#f2b84b}
.pf-val{fill:#e8ecef;font-size:12px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.pf-big{fill:#e8ecef;font-size:17px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.pf-small{fill:#8a959c;font-size:10.5px;font-family:Inter,system-ui,sans-serif}
.pf-box{fill:#0f171c;stroke:#3a4a5a;stroke-width:1.2}.pf-tube{fill:#0f171c;stroke:#56626a;stroke-width:1.2}.pf-axis{stroke:#56626a;stroke-width:1;fill:none}
.pf-zoom{stroke:#8a959c;stroke-width:1;stroke-dasharray:3 4;fill:none}.pf-zoomc{fill:none;stroke:#e8ecef;stroke-width:1.4}
.pf-panel{stroke:#3a4a5a;stroke-width:1.2}.pf-pbg0{stop-color:#101a21}.pf-pbg1{stop-color:#0c1318}
.pf-air{fill:#18242b}
.pf-epi{fill:#b9c4c9;fill-opacity:.85;stroke:#56626a;stroke-width:.8}.pf-cuticle{stroke:#e8ecef;stroke-width:1.6;fill:none}
.pf-pal0{stop-color:#7d8a92}.pf-pal1{stop-color:#5d6a72}
.pf-cell{stroke:#a7b0b5;stroke-width:.9;fill-opacity:.55}.pf-cell2{fill:#5d6a72;fill-opacity:.5;stroke:#a7b0b5;stroke-width:.9}
.pf-chl{fill:#3ecf8e;stroke:#1f6b49;stroke-width:.7}
.pf-lit{fill:#3ecf8e}
.pf-sheath{fill:#4b555c;stroke:#a7b0b5;stroke-width:.9}.pf-vein{fill:#2c363c;stroke:#7d8a92;stroke-width:.9}.pf-xylem{fill:#16202a;stroke:#7d8a92;stroke-width:.8}.pf-phloem{fill:#f2b84b;fill-opacity:.55}
.pf-guard{fill:#3ecf8e;fill-opacity:.75;stroke:#1f6b49;stroke-width:.9}
.pf-dim{stroke:#8a959c;stroke-width:1;fill:none}
.pf-ph{stroke-width:2.6;stroke-linecap:round;fill:none}.pf-ph-r{stroke:#ff5d55}.pf-ph-b{stroke:#4f86ff}.pf-ph-g{stroke:#3ecf8e}.pf-ph-w{stroke:#f7d79a}
.pf-flash{fill:#ffffff}.pf-fl-r{fill:#ff8a80}.pf-fl-b{fill:#8fb2ff}.pf-fl-g{fill:#8fe0b8}.pf-fl-w{fill:#ffe2a8}
.pf-tag{font-size:12px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.pf-tag-co2{fill:#b9a3ff}.pf-tag-h2o{fill:#8fb2ff}.pf-tag-o2{fill:#3ecf8e}
.pf-water0{stop-color:#163a55}.pf-water1{stop-color:#0a1823}.pf-raft{fill:#c7cdd0}
.pf-root{stroke:#e3e0d0;stroke-width:1.4;stroke-linecap:round;stroke-opacity:.8}.pf-rib{stroke:#d6f2df;stroke-width:1;stroke-opacity:.6;stroke-linecap:round}
.pf-c-ref{stroke:#5f6b72}.pf-c-ref2{stroke:#c7cdd0}.pf-c-mute{stroke:#7d8a92}.pf-c-main{stroke:#5fa8ff}.pf-c-amber{stroke:#f2b84b}.pf-c-red{stroke:#ff6b5b}.pf-c-blue{stroke:#5f9bff}
.pf-c-green{stroke:#3ecf8e}.pf-c-teal{stroke:#9d7bff}.pf-c-violet{stroke:#9d7bff}.pf-c-edge{stroke:#e8ecef}
.pf-c-zone0{fill:#7d8a92;fill-opacity:.1}.pf-c-zone1{fill:#3ecf8e;fill-opacity:.1}.pf-c-zone2{fill:#3ecf8e;fill-opacity:.16}
.pf-c-greenband{fill:#3ecf8e;fill-opacity:.1}
.pf-c-fblue{fill:#4f86ff;fill-opacity:.55}.pf-c-fred{fill:#ff5d55;fill-opacity:.55}.pf-c-fwhite{fill:#f2b84b;fill-opacity:.45}
.pf-c-mark{fill:#ff6b5b;stroke:#0b1114;stroke-width:2}.pf-c-mark2{fill:#3ecf8e;stroke:#0b1114;stroke-width:2}.pf-c-markm{fill:#7d8a92;stroke:#0b1114;stroke-width:2}
.pf-c-dot{fill:#ffffff;stroke:#5fa8ff;stroke-width:3}

/* 预应力混凝土箱梁实验室的画面颜色（类名都以 pg- 开头）。生成时拼进 solutions/style.css，浅色由 官网主题/build_theme.py 自动换。 */
.pg-sky0{stop-color:#0f1c28}.pg-sky1{stop-color:#1a2d3b}.pg-hill0{fill:#16242e}.pg-hill1{fill:#111c24}
.pg-wat0{stop-color:#10283a}.pg-wat1{stop-color:#08141c}.pg-ripple{stroke:#2a4a63;stroke-width:1.4;fill:none}
.pg-pier{fill:#4b555c}.pg-wetline{fill:#2a3944}.pg-fw{stroke:#7d8a92;fill:none}
.pg-con0{stop-color:#a7b0b5}.pg-con1{stop-color:#6e7980}.pg-edge{stroke:#20282d}
.pg-pave{fill:#22292d}.pg-rail{stroke:#8e999f}.pg-ref{stroke:#9aa3a7;stroke-dasharray:4 5;stroke-width:1}
.pg-dim{stroke:#ffd27a;stroke-width:1.4}.pg-dimt{fill:#ffd27a;font-size:12.5px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.pg-tendon{stroke:#f2b84b;stroke-linecap:round}.pg-anchor{fill:#c98a1e}
.pg-crack{stroke:#12181c;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.pg-jack{fill:#3d6fd8}.pg-jack2{fill:#a7b0b5}.pg-jackline{stroke:#a9c6ff;stroke-width:1}
.pg-pull{stroke:#f2b84b;stroke-linecap:round;stroke-linejoin:round}
.pg-truck{fill:#dce3e7}.pg-truck2{fill:#4f86ff}.pg-glass{fill:#0e1a24}.pg-wheel{fill:#161c20}
.pg-load{stroke:#ffd27a;stroke-linecap:round;stroke-linejoin:round}.pg-bearing{fill:#c9d1d6}
.pg-c-ref{stroke:#5f6b72}.pg-c-mute{stroke:#7d8a92}.pg-c-main{stroke:#5fa8ff}.pg-c-amber{stroke:#f2b84b}
.pg-c-mark{fill:#ff6b5b;stroke:#0b1114;stroke-width:2}.pg-c-dot{fill:#ffffff;stroke:#5fa8ff;stroke-width:3}.pg-c-cur{stroke:#5fa8ff;stroke-dasharray:3 4}
.pg-b-violet{fill:#9d7bff;fill-opacity:.55}.pg-b-blue{fill:#4f86ff;fill-opacity:.55}.pg-b-green{fill:#3ecf8e;fill-opacity:.55}.pg-b-amber{fill:#f2b84b;fill-opacity:.6}
.pg-sec{fill:#7c878e;stroke:#2a3238;stroke-width:1}.pg-duct{fill:#2a3238;stroke:#c98a1e;stroke-width:1.4}.pg-duct.is-on{fill:#f2b84b}.pg-duct.is-off{opacity:.25}
.pg-ft{stroke:#ff6b5b;stroke-dasharray:3 4;stroke-width:1.2}.pg-b-comp{fill:#4f86ff;fill-opacity:.55}.pg-b-tens{fill:#ff5d55;fill-opacity:.6}
.pg-b-edge{stroke:#e8ecef;stroke-width:1.6}.pg-na{stroke:#e8ecef;stroke-dasharray:2 4;stroke-width:1}.pg-val{fill:#e8ecef;font-size:12px;font-weight:600;font-family:Inter,system-ui,sans-serif}

/* 抽水蓄能电站实验室的画面颜色（类名都以 ps- 开头）。生成时拼进 solutions/style.css，浅色由 官网主题/build_theme.py 自动换。
   蓝 = 水；琥珀 = 发电送出的电、城市灯光；绿 = 抽水吃进的低谷电；红 = 高峰缺口；紫 = 低谷弃电、损耗。 */
.ps-skyn0{stop-color:#070d16}.ps-skyn1{stop-color:#101d29}.ps-skyd0{stop-color:#1b3854}.ps-skyd1{stop-color:#3a5d78}
.ps-star{fill:#dfe8ff}.ps-sun{fill:#f2b84b}.ps-sunhalo{fill:#f2b84b;opacity:.35}.ps-moon{fill:#dfe6ee}.ps-moonsh{fill:#0b1622}
.ps-far0{fill:#121d27}.ps-far1{fill:#0f1820}
.ps-rock0{stop-color:#1c2830}.ps-rock1{stop-color:#0f171c}.ps-rockedge{stroke:none}.ps-strata{stroke:#2a3a45;stroke-width:1.2;stroke-dasharray:26 7}
.ps-surf{stroke:#4a5a64;stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}
.ps-wat0{stop-color:#2a6aa8}.ps-wat1{stop-color:#0f2c48}.ps-water{stroke:none}.ps-wline{stroke:#8fc4ff;stroke-width:1.6;stroke-linecap:round}
.ps-ripple{stroke:#6aa6ff;stroke-width:1.2;opacity:.6;stroke-linecap:round}
.ps-con0{stop-color:#97a2a8}.ps-con1{stop-color:#5c676e}.ps-dam{stroke:#20282d;stroke-width:1}
.ps-gauge{stroke:#7d8a92;stroke-width:1.2}
.ps-tunnel{stroke:#2e3a42;stroke-width:12;stroke-linecap:round;stroke-linejoin:round}
.ps-pipe{stroke:#2f6fd0;stroke-width:6.5;stroke-linecap:round;stroke-linejoin:round}
.ps-flow{stroke:#cfe6ff;stroke-width:2.6;stroke-linecap:round}
.ps-shaft{fill:#2e3a42}.ps-shaftw{fill:#2f6fd0}.ps-intake{fill:#6e7980}
.ps-cavern{fill:#0a1014;stroke:#46525b;stroke-width:1.2}.ps-crane{stroke:#4b555c;stroke-width:1}
.ps-trafo{fill:#7d8a92}.ps-cable{stroke:#6e7980;stroke-width:1.6}
.ps-gen{fill:#a7b0b5}.ps-genband{fill:#5f6b72}.ps-genband.is-gen{fill:#f2b84b}.ps-genband.is-pump{fill:#3ecf8e}
.ps-genglow{fill:#f2b84b}.ps-genglow.is-pump{fill:#3ecf8e}
.ps-unit{fill:#6e7980;stroke:#20282d;stroke-width:1}.ps-minirun{fill:#dce3e7}.ps-shaftline{stroke:#a7b0b5;stroke-width:2}
.ps-small{fill:#c7cdd0;font-size:11px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.ps-yard{fill:#5f6b72}.ps-pylon{stroke:#5f6b72;stroke-width:1;fill:none;stroke-linecap:round}
.ps-wire{stroke:#46525b;stroke-width:1}
.ps-lflow{stroke-width:2.4;stroke-linecap:round}.ps-lflow.is-gen{stroke:#f2b84b}.ps-lflow.is-pump{stroke:#3ecf8e}
.ps-lglow{stroke-width:6}.ps-lglow.is-gen{stroke:#f2b84b}.ps-lglow.is-pump{stroke:#3ecf8e}
.ps-cityfar{fill:#121b22}.ps-bld{fill:#1b252d}.ps-bldtop{fill:#2c3a48}.ps-win{fill:#26323a}.ps-win.is-on{fill:#ffd27a}
.ps-wt{stroke:#c7cdd0;stroke-width:1.3;stroke-linecap:round}.ps-wtb{fill:#dce3e7}.ps-wthub{fill:#dce3e7}
.ps-wtlamp{fill:#ff5d55;opacity:0}.ps-wtlamp.is-off{opacity:1}
.ps-ref{stroke:#9aa3a7;stroke-dasharray:3 5;stroke-width:1}.ps-dim{stroke:#ffd27a;stroke-width:1.4}
.ps-dimt{fill:#ffd27a;font-size:12.5px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.ps-clock{fill:#e8ecef;font-size:24px;font-weight:600;font-family:Inter,system-ui,sans-serif;font-variant-numeric:tabular-nums;letter-spacing:.02em}
.ps-clocks{fill:#9aa3a7;font-size:12px;font-weight:500;font-family:Inter,system-ui,sans-serif}
.ps-dimall{fill:#070b0e;opacity:0}
.ps-cone{fill:#8fb4ff;fill-opacity:.07}.ps-coneline{stroke:#8fb4ff;stroke-width:1;stroke-dasharray:3 4;opacity:.7}
.ps-lensbg{fill:#070b0e}.ps-lensin{fill:#0d151b}
.ps-casew{fill:#2f6fd0;fill-opacity:.38}.ps-distw{fill:#2f6fd0;fill-opacity:.16}
.ps-case{stroke:#c7cdd0;stroke-width:2.4;stroke-linejoin:round}
.ps-stay{stroke:#46525b;stroke-width:2.6;stroke-linecap:round}.ps-vane{stroke:#dce3e7;stroke-width:2.8;stroke-linecap:round}
.ps-runbg{fill:#101a22;stroke:#3a4a5a;stroke-width:1}
.ps-blade{stroke:#dce3e7;stroke-width:3.4;stroke-linecap:round;stroke-linejoin:round}
.ps-hub{fill:#a7b0b5}.ps-hubx{stroke:#0d151b;stroke-width:1.6;stroke-linecap:round}
.ps-drop{fill:#8fc4ff}
.ps-lensrim{fill:none;stroke:#8fb4ff;stroke-width:2}
.ps-rotarc{stroke-width:3.2;stroke-linecap:round;stroke-linejoin:round}.ps-rotarc.is-gen{stroke:#f2b84b}.ps-rotarc.is-pump{stroke:#3ecf8e}
.ps-rpm{fill:#e8ecef;font-size:13px;font-weight:600;font-family:Inter,system-ui,sans-serif}
/* 曲线 */
.ps-band-amber{fill:#f2b84b;fill-opacity:.08}.ps-band-green{fill:#3ecf8e;fill-opacity:.08}
.ps-c-ref{stroke:#5f6b72;stroke-width:1;stroke-dasharray:4 4}
.ps-c-fg{stroke:#e8ecef;stroke-width:2.6;stroke-linejoin:round;stroke-linecap:round}
.ps-c-amber{stroke:#f2b84b;stroke-width:2.6;stroke-linejoin:round}
.ps-c-mute{stroke:#7d8a92;stroke-width:1.8;stroke-dasharray:5 4}
.ps-c-ceil{stroke:#ff6b5b;stroke-width:1.2;stroke-dasharray:4 4}.ps-c-floor{stroke:#b39bff;stroke-width:1.2;stroke-dasharray:4 4}
.ps-a-red{fill:#ff5d55;fill-opacity:.5}.ps-a-violet{fill:#9d7bff;fill-opacity:.5}.ps-a-amber{fill:#f2b84b;fill-opacity:.55}.ps-a-green{fill:#3ecf8e;fill-opacity:.5}
.ps-a-blue{fill:#4f86ff;fill-opacity:.16}.ps-c-blue{stroke:#5fa8ff;stroke-width:2.8;stroke-linejoin:round;stroke-linecap:round}.ps-c-blue-dim{stroke:#5fa8ff;stroke-width:1.2;opacity:.45}
.ps-c-cap{stroke:#8fb4ff;stroke-width:1.2;stroke-dasharray:5 4}
.ps-c-brk{stroke:#9aa3a7;stroke-width:1.4}.ps-c-brk2{stroke:#e8ecef;stroke-width:1.4}
.ps-c-cur{stroke:#9aa3a7;stroke-width:1;stroke-dasharray:3 4}.ps-c-dot{fill:#ffffff;stroke:#0b1114;stroke-width:2.5}
.ps-ctext{fill:#e8ecef;font-size:11.5px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.ps-ctext-mute{fill:#9aa3a7}.ps-ctext-red{fill:#ff6b5b}.ps-ctext-violet{fill:#b9a2ff}
.ps-bar-green{fill:#3ecf8e;fill-opacity:.85}.ps-bar-violet{fill:#9d7bff;fill-opacity:.8}.ps-bar-amber{fill:#f2b84b;fill-opacity:.9}
.ps-eta{fill:#f2b84b;font-size:18px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.ps-soil{stroke:#22332f;stroke-width:9;stroke-linejoin:round;opacity:.8}.ps-joint{stroke:#2a3944;stroke-width:1;stroke-linecap:round}
.ps-tree{fill:#1f322d}

/* 海绵城市实验室的画面颜色（类名都以 sc- 开头）。生成时拼进 solutions/style.css，浅色由 官网主题/build_theme.py 自动换。
   蓝 = 雨水和积水；绿 = 海绵设施（绿地、雨水花园、绿色屋顶）和达标；紫 = 调蓄池；红 = 内涝和传统做法的洪峰；灰 = 外排和传统硬化面。 */
.sc-sky0{stop-color:#0c141c}.sc-sky1{stop-color:#1a2733}
.sc-cloud{fill:#222e38;opacity:.9}.sc-cloud2{fill:#1b2630;opacity:.9}
.sc-far{fill:#16212a}
.sc-soil0{stop-color:#2a2620}.sc-soil1{stop-color:#15130f}.sc-pebble{fill:#3a3429;opacity:.7}
.sc-bld0{stop-color:#3a4650}.sc-bld1{stop-color:#2a343b}.sc-bldedge{stroke:#20282d;stroke-width:1}.sc-win{fill:#1a2229}
.sc-roof{fill:#5f6b72}.sc-greenroof{fill:#2f7d55}.sc-plant{stroke:#3ecf8e;stroke-width:1.4;fill:none;stroke-linecap:round}
.sc-downpipe{stroke:#7d8a92;stroke-width:3;fill:none;stroke-linejoin:round;stroke-linecap:round}
.sc-concrete{fill:#7d8a92}.sc-lawn{fill:#3b5a46}
.sc-pervious{fill:#8a7a62}.sc-joint{stroke:#3a3429;stroke-width:1}.sc-gravel{fill:#4a4438;stroke:#5c5444;stroke-width:.6;stroke-dasharray:2 3}
.sc-sunkbg{fill:#24382c}.sc-mulch{fill:#5a4a36}.sc-gsoil{fill:#3a3024}.sc-perfpipe{stroke:#a7b0b5;stroke-width:3;stroke-dasharray:4 2;fill:none}
.sc-reed{fill:#3ecf8e;fill-opacity:.85;stroke:none}
.sc-overflow{fill:#7d8a92}
.sc-pool{fill:#4f86ff;fill-opacity:.6}
.sc-wet{fill:#4f86ff;fill-opacity:.18}
.sc-tank{fill:#151d24;stroke:#9d7bff;stroke-width:1.6}.sc-module{stroke:#3a3a52;stroke-width:1}.sc-tankw{fill:#9d7bff;fill-opacity:.45}
.sc-pump{fill:#5f6b72;stroke:#20282d;stroke-width:1}
.sc-pipe2{stroke:#5f6b72;stroke-width:4;fill:none;stroke-linecap:round;stroke-linejoin:round}
.sc-asphalt{fill:#2a2f33}.sc-curb{fill:#a7b0b5}.sc-lane{stroke:#e8ecef;stroke-width:1.4;opacity:.5}
.sc-car{fill:#c7cdd0}.sc-glass{fill:#1a2229}.sc-wheel{fill:#101418}
.sc-inlet{fill:#46525b;stroke:#20282d;stroke-width:1}
.sc-sewer{fill:#0b1114}.sc-sewerw{fill:#4f86ff;fill-opacity:.75}.sc-sewerrim{fill:none;stroke:#a7b0b5;stroke-width:3}
.sc-small{fill:#9aa3a7;font-size:11.5px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.sc-pond{fill:url(#sc-water);fill-opacity:.82}.sc-water0{stop-color:#5f9dff}.sc-water1{stop-color:#2552a8}
.sc-pondline{stroke:#cfe6ff;stroke-width:1.4;stroke-dasharray:14 8;fill:none}
.sc-depth{fill:#cfe6ff;font-size:13px;font-weight:700;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.sc-drop{fill:#8fc4ff}
.sc-runoff{stroke:#8fc4ff;stroke-width:1.8;fill:none;stroke-dasharray:5 4;stroke-linecap:round}
.sc-infil{stroke:#4f86ff;stroke-width:2;fill:none;stroke-dasharray:4 3;stroke-linecap:round}
.sc-rain{stroke:#9cc4ef;stroke-width:1.1;stroke-linecap:round}
.sc-divider{stroke:#e8ecef;stroke-width:2;stroke-dasharray:6 5;fill:none}
.sc-clock{fill:#e8ecef;font-size:22px;font-weight:600;font-family:Inter,system-ui,sans-serif;font-variant-numeric:tabular-nums}
/* 曲线 */
.sc-c-rain{stroke:#6aa6ff;stroke-width:4;opacity:.45;fill:none}
.sc-a-blue{fill:#4f86ff;fill-opacity:.5}.sc-a-green{fill:#3ecf8e;fill-opacity:.5}.sc-a-violet{fill:#9d7bff;fill-opacity:.5}.sc-a-mute{fill:#7d8a92;fill-opacity:.45}.sc-a-red{fill:#ff5d55;fill-opacity:.15}
.sc-c-cap{stroke:#f2b84b;stroke-width:1.2;stroke-dasharray:4 4;fill:none}
.sc-c-lim{stroke:#ff6b5b;stroke-width:1.2;stroke-dasharray:4 4;fill:none}.sc-c-target{stroke:#3ecf8e;stroke-width:1.2;stroke-dasharray:4 4;fill:none}
.sc-c-red{stroke:#ff5d55;stroke-width:2.6;fill:none;stroke-linejoin:round}.sc-c-green{stroke:#3ecf8e;stroke-width:2.8;fill:none;stroke-linejoin:round}
.sc-c-blue{stroke:#5fa8ff;stroke-width:2.6;fill:none;stroke-linejoin:round}.sc-c-violet{stroke:#9d7bff;stroke-width:2.6;fill:none;stroke-linejoin:round}
.sc-c-mute{stroke:#7d8a92;stroke-width:2;stroke-dasharray:5 4;fill:none}.sc-c-dash{stroke:#9aa3a7;stroke-width:1.6;stroke-dasharray:3 3;fill:none}
.sc-c-brk{stroke:#e8ecef;stroke-width:1.2;fill:none}
.sc-ctext{fill:#e8ecef;font-size:12px;font-weight:700;font-family:Inter,system-ui,sans-serif}
.sc-c-cur{stroke:#9aa3a7;stroke-width:1;stroke-dasharray:3 4;fill:none}.sc-c-dot{fill:#ffffff;stroke:#0b1114;stroke-width:2.5}

/* 扫描隧道显微镜实验室的画面颜色（类名都以 stm- 开头）。生成时拼进 solutions/style.css，浅色由 官网主题/build_theme.py 自动换。
   颜色含义：琥珀 = 隧穿电子、隧穿电流、针尖高度轨迹、高度色标；蓝 = 填满电子的能级；紫 = 真空势垒；绿 = 波函数；浅灰 = 钨针尖；暗灰 = 碳原子。 */
.stm-bg0{stop-color:#121b22}.stm-bg1{stop-color:#090e11}
.stm-grid{stroke:#121b21;stroke-width:1;fill:none}
.stm-txt{fill:#8d989e;font-size:12px;font-family:Inter,system-ui,sans-serif}
.stm-txt2{fill:#c7cdd0;font-size:13px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.stm-lab{fill:#c7cdd0;font-size:14px;font-weight:600;font-family:Inter,system-ui,sans-serif;letter-spacing:.06em}
.stm-panel{stroke:#1f2c34;stroke-width:1}.stm-pn0{stop-color:#121d24}.stm-pn1{stop-color:#0c1418}
.stm-sbar{stroke:#9aa3a7;fill:none;stroke-width:1.5}
.stm-dim{stroke:#ffd27a;stroke-width:1.4;fill:none}
.stm-dimt{fill:#ffd27a;font-size:12.5px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
/* 能量图 */
.stm-se0{stop-color:#3f6fd8}.stm-se1{stop-color:#162a5a}.stm-sea{fill-opacity:.75}
.stm-barrier{fill:#9d7bff;fill-opacity:.16;stroke:#9d7bff;stroke-width:1.6}
.stm-vac{stroke:#9d7bff;stroke-dasharray:5 5;fill:none;stroke-width:1.2}
.stm-ef{stroke:#e8ecef;stroke-width:1.6;fill:none}
.stm-wave{stroke:#3ecf8e;stroke-width:2.6;fill:none;stroke-linecap:round}
.stm-waveg{stroke:#3ecf8e;stroke-width:6;fill:none}
.stm-mag{fill:#3ecf8e;font-size:13px;font-weight:700;font-family:Inter,system-ui,sans-serif}
.stm-el{fill:#ffe3a3}.stm-elg{fill:#f2b84b}
/* 仪器 */
.stm-wire{stroke:#5f6b72;stroke-width:1.8;fill:none;stroke-linejoin:round}
.stm-pz0{stop-color:#d9c9a8}.stm-pz1{stop-color:#8a7a5c}.stm-pzt{stroke:#0b1114;stroke-width:1}
.stm-elec{fill:#c7cdd0;fill-opacity:.55}
.stm-holder{fill:#7d8a92}
.stm-me0{stop-color:#6e7a82}.stm-me1{stop-color:#d8dfe3}.stm-wtip{stroke:#2a3338;stroke-width:1}
.stm-sample{fill:#2a3035;stroke:#4a555c}.stm-layer{stroke:#3d474e;stroke-width:1}
.stm-stage{fill:#3a454c}
.stm-box{fill:#101920;stroke:#5f96ff;stroke-width:1.4}.stm-boxt{fill:#e8ecef;font-size:13px;font-weight:600;font-family:Inter,system-ui,sans-serif}
.stm-amp{fill:#101920;stroke:#5f96ff;stroke-width:1.4}
.stm-src{fill:#101920;stroke:#f2b84b;stroke-width:1.4}
.stm-sig{fill:#f2b84b}
.stm-zoombg{fill:#0a1013}.stm-zoomring{fill:none;stroke:#5f6b72;stroke-width:1.6}.stm-zoomln{stroke:#5f6b72;stroke-width:1;stroke-dasharray:3 4;fill:none}
.stm-at0{stop-color:#8d989e}.stm-at1{stop-color:#2a3338}.stm-atomc{stroke:#0b1114;stroke-width:1}.stm-atomb{opacity:.45}
.stm-ta0{stop-color:#e8eef1}.stm-ta1{stop-color:#6e7a82}.stm-tipc{stroke:#0b1114;stroke-width:1}
.stm-bm0{stop-color:#fff1c2}.stm-bm1{stop-color:#f2b84b}.stm-beam{opacity:.8}
/* 一行扫描 */
.stm-truel{stroke:#7d8a92;stroke-width:1.4;stroke-dasharray:4 5;fill:none}
.stm-trace{stroke:#f2b84b;stroke-width:2.4;fill:none;stroke-linejoin:round}.stm-traceg{stroke:#f2b84b;stroke-width:6;fill:none;opacity:.35}
.stm-vacm{fill:none;stroke:#9aa3a7;stroke-width:1.4;stroke-dasharray:3 4}
/* 成像 */
.stm-imgframe{fill:#05080a;stroke:#2a3640}
.stm-raster{stroke:#7fb0ff;stroke-width:1;fill:none}
.stm-rtip{fill:#ffffff}.stm-rtipg{fill:#7fb0ff}
.stm-defring{fill:none;stroke:#7fb0ff;stroke-width:2}
.stm-linemark{stroke:#7fb0ff;stroke-width:1.2;stroke-dasharray:4 4;fill:none}
.stm-prof{stroke:#f2b84b;stroke-width:1.8;fill:none}
.stm-bond{stroke:#5f6b72;stroke-width:3;fill:none}
.stm-catoma{fill:#f2b84b;stroke:#0b1114;stroke-width:1}.stm-catomb{fill:#6e7a82;stroke:#0b1114;stroke-width:1}
/* 曲线 */
.stm-c-band{fill:#9d7bff;fill-opacity:.12}
.stm-c-ref{stroke:#5f6b72;stroke-dasharray:4 4;fill:none;stroke-width:1.3}
.stm-c-cur{stroke:#9aa3a7;stroke-dasharray:3 4;fill:none}
.stm-c-step{stroke:#ffd27a;stroke-width:1.4;fill:none;stroke-dasharray:3 3}
.stm-c-amber{stroke:#f2b84b;fill:none;stroke-linejoin:round}.stm-c-green{stroke:#3ecf8e;fill:none;stroke-linejoin:round}
.stm-c-red{stroke:#ff6b5b;fill:none}.stm-c-mute{stroke:#7d8a92;fill:none}.stm-c-dash{stroke-dasharray:6 5}
.stm-c-dot{fill:#ffffff;stroke-width:3}.stm-c-dota{stroke:#f2b84b}.stm-c-dotg{stroke:#3ecf8e}
.stm-iso{stroke:#5f96ff;stroke-width:1.4;fill:none;opacity:.45}

/* 涡扇发动机实验室的画面颜色（类名都以 tf- 开头）v1.0（2026-10-24）。生成时拼进 solutions/style.css，浅色由 官网主题/build_theme.py 自动换。
   气流和流道按总温着色：蓝 = 冷、琥珀到红 = 热；琥珀 = 高压转子和燃油；紫 = 低压转子；蓝箭头 = 外涵喷流；红 = 内涵热喷流和推力。 */
.tf-bg0{stop-color:#0e1820}.tf-bg1{stop-color:#091015}
.tf-gridl{stroke:#16222a;stroke-width:1}
.tf-axis{stroke:#5f6b72;stroke-width:1;stroke-dasharray:14 4 2 4;opacity:.7}
.tf-met0{stop-color:#8e999f}.tf-met1{stop-color:#4b555c}
.tf-sk0{stop-color:#c7cfd4}.tf-sk1{stop-color:#8e999f}.tf-sk2{stop-color:#4b555c}
.tf-co0{stop-color:#a7b0b5}.tf-co1{stop-color:#5d6970}
.tf-edge{stroke:#1a2227;stroke-width:1}
.tf-skinE{stroke:#2a343a;stroke-width:1}
.tf-panel{stroke:#3f4a51;stroke-width:1}
.tf-lip{stroke:#2a343a;stroke-width:1.2}
.tf-gas{fill-opacity:.82}.tf-gas.is-off{fill:#18232a;fill-opacity:1}
.tf-casing{stroke:#2a343a;stroke-width:1}
.tf-shaft{fill:#6e7980}.tf-shaft.is-hp{fill:#f2b84b}.tf-shaft.is-lp{fill:#9d7bff}
.tf-liner{stroke:#dfe5e8;stroke-width:1.6;stroke-linecap:round}
.tf-injector{fill:#c7cdd0}
.tf-fl0{stop-color:#fff1c4}.tf-fl1{stop-color:#ff8a4c;stop-opacity:.8}.tf-fl2{stop-color:#ff5d55;stop-opacity:0}
.tf-fuel{fill:#f2b84b}
.tf-cool{stroke:#8fb4ff;stroke-width:1.4;stroke-linecap:round}
.tf-blade{stroke:#c7cdd0;stroke-width:2.6;stroke-linecap:round}.tf-blade.is-stator{stroke:#6e7980;stroke-width:2}
.tf-blade.is-hp{stroke:#f2b84b}.tf-blade.is-lp{stroke:#b9a2ff}.tf-ogv{stroke:#6e7980;stroke-width:2}
.tf-fan{fill:#c7cfd4;stroke:#2a343a;stroke-width:.8}.tf-fan.is-lp{fill:#b9a2ff}
.tf-diamond{fill:#fff1c4;opacity:.5}
.tf-hiB{stroke:#8fb4ff;stroke-width:2.4;stroke-dasharray:6 6;stroke-linecap:round;stroke-linejoin:round}
.tf-hiC{stroke:#f2b84b;stroke-width:2.4;stroke-dasharray:6 6;stroke-linecap:round}
.tf-val{fill:#e8ecef;font-size:12px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.tf-bigt{fill:#ffffff;font-size:15px;font-weight:700;font-family:Inter,system-ui,sans-serif;text-anchor:middle}
.tf-eq{fill:#c7cdd0;font-size:12px;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.tf-arr{stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}.tf-arr0{stroke:#c7cdd0}.tf-arrB{stroke:#6fa0ff}.tf-arrC{stroke:#ff6b5b}
.tf-arrF{fill:#ff5d55;stroke:#ffd0c8;stroke-width:1}
.tf-inflow{stroke:#6fa0ff;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.tf-c-ref{stroke:#ff6b5b;stroke-width:1.3;stroke-dasharray:5 4}
.tf-c-band{fill:#ff5d55;fill-opacity:.08}
.tf-c-mute{stroke:#7d8a92;stroke-width:2}
.tf-c-fill{fill:#f2b84b;fill-opacity:.12}
.tf-c-main{stroke:#5fa8ff;stroke-width:2.8;stroke-linejoin:round}
.tf-c-red{stroke:#ff6b5b;stroke-width:2.6;stroke-linejoin:round}
.tf-c-blue{stroke:#5fa8ff;stroke-width:2.6;stroke-linejoin:round}
.tf-c-pt{fill:#e8ecef;stroke:#0b1114;stroke-width:1.2}
.tf-c-dot{fill:#ffffff;stroke:#5fa8ff;stroke-width:3}
.tf-c-dotR{fill:#ffffff;stroke:#ff6b5b;stroke-width:3}.tf-c-dotB{fill:#ffffff;stroke:#5fa8ff;stroke-width:3}
.tf-ptick{fill:#5fa8ff}
.tf-sttick{stroke:#c7cdd0;stroke-width:1.2}
.tf-st{fill:#c7cdd0;font-size:11px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.tf-gas.tf-gasB{fill-opacity:.42}
.tf-disk{fill:#4e5960;fill-opacity:.55;stroke:#2a343a;stroke-width:.6}
.tf-gas.tf-gasB{fill-opacity:.42}
.tf-disk{fill:#4e5960;fill-opacity:.55;stroke:#2a343a;stroke-width:.6}

/* 台风实验室的画面颜色（类名都以 ty- 开头）。生成时拼进 solutions/style.css，浅色由 官网主题/build_theme.py 自动换。 */
.ty-sky0{stop-color:#0a131b}.ty-sky1{stop-color:#101d28}.ty-sky2{stop-color:#172936}
.ty-sea0{stop-color:#163a55}.ty-sea1{stop-color:#07111a}.ty-map0{stop-color:#0e2232}.ty-map1{stop-color:#0a1823}
.ty-cl0{stop-color:#e4e9ec}.ty-cl1{stop-color:#a6b0b7}.ty-cl2{stop-color:#58646c}
.ty-can0{stop-color:#d3dade}.ty-can1{stop-color:#8d989f}
.ty-cloud{stroke:#0b1114;stroke-opacity:.35;stroke-width:.8}
.ty-heat{fill:#f2b84b}
.ty-warm0{stop-color:#ff5d55;stop-opacity:.85}.ty-warm1{stop-color:#ff5d55;stop-opacity:0}
.ty-rain{stroke:#9cb8cf;stroke-width:1.3;stroke-linecap:round;stroke-dasharray:6 9}
.ty-flow{fill:none;stroke-width:2.4;stroke-linecap:round;stroke-dasharray:8 9}
.ty-head{fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.ty-f-in{stroke:#4f86ff}.ty-f-up{stroke:#f2b84b}.ty-f-out{stroke:#9d7bff}.ty-f-sink{stroke:#ff5d55}
.ty-vapor{fill:#cfe0ee}
.ty-surf{stroke:#7fa6c4;stroke-width:1.4;fill:none}
.ty-foam{stroke:#eef4f7;stroke-width:1.7;stroke-dasharray:3 12;fill:none;stroke-linecap:round}
.ty-iso{stroke:#e8ecef;stroke-width:1.1;stroke-dasharray:4 4;fill:none}
.ty-bed{fill:#151c21}
.ty-land0{stop-color:#2b343a}.ty-land1{stop-color:#141a1e}.ty-ground{stroke:#5d6a72;stroke-width:1}
.ty-bldg{fill:#3c474e}.ty-win{stroke:#f2b84b;stroke-width:1.6;stroke-dasharray:2 4;stroke-opacity:.7}
.ty-trunk{stroke:#56626a;stroke-width:2;stroke-linecap:round}.ty-crown{fill:#34413f}
.ty-wall{fill:#a7b0b5}.ty-flood{fill:#4f86ff;fill-opacity:.55}
.ty-ref{stroke:#9aa3a7;stroke-dasharray:4 5;stroke-width:1}
.ty-dim{stroke:#ffd27a;stroke-width:1.4}
.ty-dimt{fill:#ffd27a;font-size:13px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.ty-val{fill:#e8ecef;font-size:12px;font-weight:600;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.ty-tick{fill:#8a959c;font-size:11px;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.ty-tropo{stroke:#3a4b5a;stroke-dasharray:2 6;stroke-width:1}.ty-axis{stroke:#56626a;stroke-width:1;fill:none}
.ty-probe{fill:#ffffff}.ty-pdot{fill:#ffffff;stroke:#0b1114;stroke-width:2}
.ty-scale{stroke:#8a959c;stroke-width:1.2}
.ty-grat{stroke:#1b2c3a;stroke-width:1;fill:none}
.ty-gratt{fill:#7d8a92;font-size:10.5px;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.ty-landm{fill:#1f282d;fill-opacity:.94}.ty-coast{stroke:#8a959c;stroke-width:1.2;fill:none}
.ty-arm{fill:#e3e9ec;fill-opacity:.8}
.ty-cdo0{stop-color:#eef2f4;stop-opacity:.95}.ty-cdo1{stop-color:#eef2f4;stop-opacity:0}
.ty-eye{fill:#0b1114;stroke:#c7cdd0;stroke-width:1}
.ty-isom{fill:none;stroke:#e8ecef;stroke-width:1;stroke-dasharray:3 4}
.ty-isot{fill:#c7cdd0;font-size:10.5px;font-family:Inter,system-ui,sans-serif;stroke:#0b1114;stroke-width:3px;paint-order:stroke}
.ty-ring{fill:none;stroke:#ffffff;stroke-width:1.6}.ty-ring.r1{stroke-dasharray:7 4}.ty-ring.r2{stroke-dasharray:2 4}
.ty-track{stroke:#e8ecef;stroke-width:1.4;stroke-dasharray:3 5;fill:none}.ty-trackdot{fill:#e8ecef;stroke:#0b1114;stroke-width:1.5}
.ty-move{stroke:#e8ecef;stroke-width:2.4;fill:none;stroke-linecap:round;stroke-linejoin:round}
.ty-transect{stroke:#e8ecef;stroke-width:1;stroke-dasharray:2 4;stroke-opacity:.6}
.ty-stream{stroke:#f4f7f9;stroke-width:1.6;stroke-linecap:round}
.ty-inhalo{fill:#0b1114;fill-opacity:.7}.ty-inbg{fill:#0f2536}.ty-inring{fill:none;stroke:#4a5a68;stroke-width:1.3}
.ty-inarrow{stroke:#4f86ff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ty-insec{stroke:#ffd27a;stroke-width:1.2;stroke-dasharray:4 3;fill:none}
.ty-quad{fill:#ff5d55;fill-opacity:.42}.ty-inland{fill:#2b343a}.ty-incoast{stroke:#9aa3a7;stroke-width:1.1}
.ty-c-ref{stroke:#5f6b72}.ty-c-ref2{stroke:#c7cdd0}.ty-c-mute{stroke:#7d8a92}.ty-c-main{stroke:#5fa8ff}.ty-c-amber{stroke:#f2b84b}.ty-c-red{stroke:#ff6b5b}
.ty-c-amberdash{stroke:#f2b84b;stroke-dasharray:4 4}.ty-c-edge{stroke:#e8ecef}
.ty-c-shade{fill:#7d8a92;fill-opacity:.13}
.ty-c-mark{fill:#ff6b5b;stroke:#0b1114;stroke-width:2}.ty-c-dot{fill:#ffffff;stroke:#5fa8ff;stroke-width:3}
.ty-c-rainfill{fill:#4f86ff;fill-opacity:.22}.ty-c-warmfill{fill:#ff5d55;fill-opacity:.3}
.ty-c-baro{fill:#4f86ff;fill-opacity:.55}.ty-c-wind{fill:#f2b84b;fill-opacity:.6}
.ty-c-wall{stroke:#ff6b5b;stroke-dasharray:3 4}
.ty-agrid{stroke:#1a2733;stroke-width:1;stroke-dasharray:1 5}
.ty-isle{fill:#1f282d;stroke:#8a959c;stroke-width:1}

/* ===== 节日营销：2027 宣传节点日历（节日日历.py） ===== */
.cal-node,.cal-box,.cal-rule-notes{border:1px solid var(--line);border-radius:16px;background:var(--panel)}
.cal-hero .hero-meta{justify-content:flex-start;margin-top:22px}
.cal-next{display:flex;flex-direction:column;gap:12px;padding:26px;border:1px solid var(--line);border-radius:18px;background:var(--panel);color:var(--text)}
.cal-next:hover{border-color:var(--accent)}
.cal-next-k{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--accent-soft)}
.cal-next-k .ri{width:18px;height:18px}
.cal-next>strong{font-size:30px;font-weight:500;letter-spacing:-.02em;line-height:1.2}
.cal-next-d{font-size:14px;color:var(--muted)}
.cal-next-dls{display:grid;gap:8px;margin-top:4px}
.cal-next-go{display:flex;align-items:center;gap:6px;margin-top:6px;font-size:13px;color:var(--accent-soft)}
.cal-next-go .ri{width:16px;height:16px}
.cal-dls{display:flex;flex-wrap:wrap;gap:8px}
.cal-dl{display:flex;align-items:center;gap:8px;min-width:0;padding:8px 12px;border:1px solid var(--line);border-radius:10px;font-size:12.5px;color:var(--muted);line-height:1.4}
.cal-dl .ri{width:15px;height:15px;color:var(--accent-soft);flex:none}
.cal-dl strong{margin-left:auto;padding-left:6px;font-size:13.5px;font-weight:500;color:var(--text);white-space:nowrap;font-variant-numeric:tabular-nums}
.cal-dl.is-golive{background:rgba(82,121,255,.08)}
.cal-dl.is-past{opacity:.45}
.cal-dl.is-past strong{text-decoration:line-through}
.cal-next .cal-dl{font-size:13.5px}
.cal-rules .ri{width:26px;height:26px;color:var(--accent-soft);margin-bottom:6px}
.cal-rule-n{font-size:22px;font-weight:500;color:var(--text);letter-spacing:-.01em}
.cal-rule-notes{margin-top:14px;padding:20px 24px;display:grid;gap:8px;font-size:14px;line-height:1.8;color:var(--muted)}
.cal-filter{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:26px}
.cal-filter button{padding:7px 16px;border:1px solid var(--line);border-radius:999px;background:none;color:var(--muted);font:inherit;font-size:13.5px;cursor:pointer;transition:border-color .2s,color .2s,background .2s}
.cal-filter button:hover{border-color:var(--accent);color:var(--text)}
.cal-filter button[aria-pressed="true"]{border-color:var(--accent);background:rgba(82,121,255,.16);color:var(--text)}
.cal-only-big{display:inline-flex;align-items:center;gap:6px;margin-left:8px;font-size:13.5px;color:var(--muted);cursor:pointer}
.cal-only-big input{accent-color:var(--accent)}
.cal-count{margin-left:auto;font-size:13px;color:var(--quiet);font-variant-numeric:tabular-nums}
.cal-months{display:grid;gap:40px}
.cal-month h3{display:flex;align-items:baseline;gap:12px;font-size:22px;font-weight:500;letter-spacing:-.02em;margin-bottom:14px;scroll-margin-top:110px}
.cal-month h3 small{font-size:12.5px;font-weight:400;color:var(--quiet)}
.cal-list{display:grid;gap:12px}
.cal-node{display:grid;grid-template-columns:88px minmax(0,1fr);gap:22px;padding:22px 24px;scroll-margin-top:120px}
.cal-node.is-big{border-color:rgba(82,121,255,.45)}
.cal-node:target{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.cal-date{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;align-self:start;padding:14px 0;border-radius:12px;background:rgba(255,255,255,.03);border:1px solid var(--line)}
.cal-date strong{font-size:24px;font-weight:500;line-height:1;font-variant-numeric:tabular-nums;color:var(--text)}
.cal-date strong small{font-size:16px;color:var(--quiet);margin:0 1px}
.cal-date span{font-size:12px;color:var(--quiet)}
.cal-node.is-big .cal-date{background:rgba(82,121,255,.12);border-color:rgba(82,121,255,.4)}
.cal-body{display:grid;gap:10px;min-width:0}
.cal-title{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px}
.cal-title h4{font-size:19px;font-weight:500;letter-spacing:-.01em;color:var(--text)}
.cal-scale{font-style:normal;font-size:11px;letter-spacing:.06em;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:2px 9px}
.cal-node.is-big .cal-scale{color:#dfe6ff;border-color:#3d55b8;background:#141d3a}
.cal-status{font-size:12px;color:var(--accent-soft);padding:2px 10px;border-radius:999px;background:rgba(82,121,255,.12)}
.cal-status.is-soon{color:#ffb38a;background:rgba(255,120,60,.14)}
.cal-status.is-done{color:var(--quiet);background:rgba(255,255,255,.05)}
.cal-meta{font-size:13px;color:var(--quiet)}
.cal-meta i{margin:0 6px;font-style:normal}
.cal-note{font-size:14.5px;line-height:1.75;color:#c3c9cc}
.cal-links{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;font-size:13px}
.cal-links span{color:var(--quiet);margin-right:2px}
.cal-links a{padding:3px 11px;border:1px solid var(--line);border-radius:999px;color:#c3c9cc;transition:border-color .2s,color .2s}
.cal-links a:hover{border-color:var(--accent);color:var(--text)}
.cal-links.is-case a{border-style:dashed}
.cal-terms-note{display:grid;gap:6px;margin-bottom:18px;font-size:14px;line-height:1.8;color:var(--muted)}
.cal-table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:14px}
.cal-table{width:100%;border-collapse:collapse;font-size:14px;min-width:620px}
.cal-table th,.cal-table td{padding:11px 16px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}
.cal-table thead th{font-size:12.5px;font-weight:500;color:var(--quiet);background:rgba(255,255,255,.02)}
.cal-table tbody th{font-weight:500;color:var(--text)}
.cal-table td{color:var(--muted);font-variant-numeric:tabular-nums}
.cal-table td.is-dl{color:var(--text)}
.cal-table td.is-past{opacity:.45;text-decoration:line-through}
.cal-table tbody tr:last-child th,.cal-table tbody tr:last-child td{border-bottom:0}
.cal-box{margin:-24px 0 56px;padding:22px 24px;display:grid;gap:12px}
.cal-box-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px}
.cal-box h2{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:500;letter-spacing:-.01em}
.cal-box h2 .ri{width:20px;height:20px;color:var(--accent-soft)}
.cal-box-head .inline-link{font-size:13.5px}
.cal-box-note{font-size:13.5px;line-height:1.8;color:var(--muted)}
.cal-row{display:grid;grid-template-columns:minmax(150px,200px) minmax(0,1fr) auto;align-items:center;gap:10px 16px;padding-top:12px;border-top:1px solid var(--line)}
.cal-row-name{display:grid;gap:2px}
.cal-row-name strong{font-size:15px;font-weight:500;color:var(--text)}
.cal-row-name span{font-size:12.5px;color:var(--quiet)}
.cal-row-name:hover strong{color:var(--accent-soft)}
.cal-row .cal-dl{padding:6px 10px}
@media (max-width:900px){
  .cal-row{grid-template-columns:1fr}
  .cal-row .cal-status{justify-self:start}
}
@media (max-width:640px){
  .cal-node{grid-template-columns:1fr;gap:12px;padding:18px}
  .cal-date{flex-direction:row;justify-content:flex-start;gap:10px;padding:8px 12px;align-self:stretch}
  .cal-date strong{font-size:20px}
  .cal-dl{flex:1 1 100%}
  .cal-count{margin-left:0;flex-basis:100%}
  .cal-only-big{margin-left:0}
  .cal-next{padding:20px}
  .cal-next>strong{font-size:24px}
  .cal-box{padding:18px;margin-top:-12px}
}

/* 解决方案大类页（分类页.py v1.0） */
.cat-hero .sol-hero-fig{padding:12px}
.cat-hero.has-video{grid-template-columns:minmax(0,.86fr) minmax(0,1.14fr);gap:40px}
.cat-hero.has-video h1{font-size:clamp(28px,3.2vw,44px)}
@media (max-width:980px){.cat-hero.has-video{grid-template-columns:1fr}}
.cat-video video{display:block;width:100%;aspect-ratio:16/9;border-radius:10px;background:#000;object-fit:contain}
.cat-chapters{display:flex;flex-wrap:wrap;gap:8px;padding:12px 6px 4px}
.cat-chapters button{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:12.5px;color:#cfd6ff;background:transparent;border:1px solid #33416e;border-radius:999px;padding:4px 11px;cursor:pointer;transition:border-color .2s,color .2s}
.cat-chapters button:hover,.cat-chapters button.is-on{border-color:var(--accent);color:#fff}
.cat-chapters time{font-family:Inter,system-ui,sans-serif;font-variant-numeric:tabular-nums;color:var(--accent-soft)}
.cat-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}
.cat-meta span{font-size:13px;color:#cfd6ff;border:1px solid #33416e;border-radius:999px;padding:4px 12px}
.cat-others{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.cat-other{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:14px;background:var(--panel);padding:14px 16px;transition:border-color .2s;min-width:0}
.cat-other:hover{border-color:var(--accent)}
.cat-other .ri{width:22px;height:22px;color:var(--accent-soft);flex:none}
.cat-other span{flex:1;min-width:0;font-size:15px;color:var(--text)}
.cat-other small{font-size:12px;color:var(--quiet);flex:none}
.cat-groupname{margin:26px 0 12px;font-size:13px;color:var(--quiet);letter-spacing:.04em}
.cat-groupname:first-child{margin-top:0}
.sol-cat h3 .cat-go{margin-left:auto;display:inline-flex;align-items:center;gap:4px;font-size:13px;font-weight:400;color:var(--accent-soft);white-space:nowrap}
.sol-cat h3 .cat-go:hover{color:#fff}
.sol-cat h3 .cat-go .ri{width:15px;height:15px}
@media (max-width:1080px){.cat-others{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:760px){.cat-others{grid-template-columns:repeat(2,minmax(0,1fr))}.cat-other{padding:12px}.cat-other span{font-size:14px}}

/* 目录页“按地区找”“选之前先看”（地区指南入口.py v1.0） */
.sol-areas{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.sol-area{border:1px solid var(--line);border-radius:14px;background:var(--panel);padding:18px 18px 16px;min-width:0}
.sol-area h3{display:flex;align-items:baseline;gap:8px;font-size:17px;font-weight:500;margin-bottom:12px}
.sol-area h3 small{font-size:12px;font-weight:400;color:var(--quiet)}
.sol-area>p{font-size:13px;color:var(--muted);line-height:1.7;margin:-4px 0 12px}
.sol-chips{display:flex;flex-wrap:wrap;gap:8px}
.sol-chips a{font-size:13.5px;color:var(--soft);border:1px solid #2c3134;border-radius:999px;padding:4px 12px;transition:border-color .2s,color .2s}
.sol-chips a:hover{border-color:var(--accent);color:#fff}
.sol-area-go{display:inline-flex;align-items:center;gap:4px;margin-top:18px;font-size:14px;color:var(--accent-soft)}
.sol-area-go:hover{color:#fff}
.sol-area-go .ri{width:15px;height:15px}
.sol-guide{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.sol-guide a{display:block;font-size:14px;color:var(--soft);line-height:1.6;padding:5px 0}
.sol-guide a:hover{color:var(--accent-soft)}
@media(max-width:1000px){.sol-areas{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.sol-areas{grid-template-columns:1fr}}
