:root{--navy:#10253f;--blue:#2563eb;--blue-soft:#eaf2ff;--green:#16a36a;--green-soft:#e9f8f1;--red:#dc3545;--red-soft:#fff0f1;--amber:#f59e0b;--ink:#172033;--muted:#667085;--line:#dce4ee;--background:#f3f6fa;--shadow:0 8px 24px rgba(29,48,76,.08)}
*{box-sizing:border-box}html{min-width:320px;background:var(--background)}body{margin:0;min-height:100vh;color:var(--ink);background:radial-gradient(circle at 86% 0%,rgba(37,99,235,.08),transparent 24rem),var(--background);font-family:"Microsoft YaHei","PingFang SC",Arial,sans-serif;font-size:16px;line-height:1.6}button,input{font:inherit}button{-webkit-tap-highlight-color:transparent}.app-shell{width:min(1600px,100%);min-height:100vh;margin:0 auto}
.site-header{min-height:118px;display:flex;align-items:center;gap:18px;padding:24px clamp(22px,4vw,56px);color:#fff;background:linear-gradient(110deg,rgba(255,255,255,.05),transparent 42%),var(--navy);border-bottom:4px solid #2f75d8}.brand-mark{width:56px;height:56px;flex:0 0 auto;display:grid;place-items:center;background:#2c6fca;border:1px solid rgba(255,255,255,.28);border-radius:15px;box-shadow:0 8px 18px rgba(0,0,0,.16)}.brand-mark svg{width:31px;fill:#fff}.brand-copy h1,.brand-copy p,.experiment-heading h2,.experiment-heading p,.panel h3{margin:0}.brand-copy h1{font-size:clamp(24px,2.3vw,34px);line-height:1.25;letter-spacing:.04em}.brand-copy>p:last-child{margin-top:4px;color:#c7d6e8;font-size:15px}.eyebrow,.panel-kicker{color:#82b7ff;font-size:12px;font-weight:800;letter-spacing:.16em;text-transform:uppercase}.stage-badge{min-width:150px;margin-left:auto;padding:10px 16px;color:#d9e7f7;text-align:center;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);border-radius:12px;font-size:13px}.stage-badge span{display:block;color:#fff;font-size:15px;font-weight:800}
.page-layout{display:grid;grid-template-columns:252px minmax(0,1fr);min-height:calc(100vh - 122px)}.experiment-sidebar{padding:28px 18px;background:#fff;border-right:1px solid var(--line)}.sidebar-heading{display:flex;align-items:center;justify-content:space-between;padding:0 10px 13px;color:var(--navy);font-weight:800}.sidebar-heading small{color:var(--muted);font-weight:500}.experiment-nav{display:grid;gap:8px}.nav-button{width:100%;min-height:56px;display:grid;grid-template-columns:36px 1fr 18px;align-items:center;gap:8px;padding:8px 10px;color:#435069;text-align:left;background:transparent;border:1px solid transparent;border-radius:11px;cursor:pointer;transition:.2s ease}.nav-button:hover{color:var(--blue);background:#f5f8fc;border-color:#e2e9f2}.nav-button.active{color:#fff;background:linear-gradient(135deg,#2563b9,#1f4f8e);box-shadow:0 7px 16px rgba(31,79,142,.24)}.nav-number{width:32px;height:32px;display:grid;place-items:center;color:var(--blue);background:var(--blue-soft);border-radius:9px;font-size:13px;font-weight:800}.nav-button.active .nav-number{color:#fff;background:rgba(255,255,255,.18)}.nav-label{font-size:14px;font-weight:700;line-height:1.3}.nav-arrow{font-size:19px;opacity:.55}.safety-note{display:flex;gap:9px;margin:26px 4px 0;padding:13px;color:#5f4b25;background:#fff8e8;border:1px solid #f7dfab;border-radius:11px;font-size:12px;line-height:1.55}.safety-note p{margin:0}.safety-icon{width:22px;height:22px;flex:0 0 auto;display:grid;place-items:center;color:#fff;background:var(--amber);border-radius:50%;font-weight:900}.experiment-main{min-width:0;padding:28px clamp(20px,3vw,42px) 44px}.experiment-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:20px}.experiment-heading .eyebrow{color:var(--blue)}.experiment-heading h2{margin-top:3px;color:var(--navy);font-size:clamp(23px,2.2vw,32px);line-height:1.3}.experiment-heading>div>p:last-child{margin-top:4px;color:var(--muted)}.progress-chip{flex:0 0 auto;padding:7px 12px;color:#52627a;background:#fff;border:1px solid var(--line);border-radius:999px;font-size:13px}.experiment-layout{display:grid;grid-template-columns:minmax(590px,1.65fr) minmax(300px,.75fr);align-items:start;gap:20px}.information-column{display:grid;gap:16px}.panel{background:#fff;border:1px solid #e0e7f0;border-radius:15px;box-shadow:var(--shadow)}.operation-panel{min-width:0;padding:22px}.data-panel,.explanation-panel{padding:19px}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.panel-heading.compact{margin-bottom:13px}.panel-kicker{display:block;color:#75839a;font-size:9px;line-height:1.2}.panel-heading h3{color:var(--navy);font-size:18px}.live-indicator{display:flex;align-items:center;gap:7px;color:var(--green);font-size:12px;font-weight:700}.live-indicator i{width:8px;height:8px;background:var(--green);border-radius:50%;box-shadow:0 0 0 4px rgba(22,163,106,.12)}
.experiment-canvas{min-height:420px;display:grid;place-items:center;overflow:hidden;background:linear-gradient(rgba(23,58,94,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(23,58,94,.025) 1px,transparent 1px),#f9fbfd;background-size:24px 24px;border:1px solid #e2e8f0;border-radius:12px}.circuit-svg{display:block;width:100%;max-height:430px;min-height:350px}.circuit-svg text{font-family:"Microsoft YaHei","PingFang SC",Arial,sans-serif;user-select:none}.svg-wire{fill:none;stroke:#42526a;stroke-width:7;stroke-linecap:round;stroke-linejoin:round}.svg-wire.live{stroke:var(--blue)}.svg-wire.danger{stroke:var(--red);filter:drop-shadow(0 0 5px rgba(220,53,69,.55));animation:dangerPulse .8s ease-in-out infinite alternate}.svg-component{fill:#fff;stroke:#334155;stroke-width:4}.svg-node{fill:#26364d}.svg-label{fill:#41516a;font-size:16px;font-weight:700;text-anchor:middle}.svg-small-label{fill:#667085;font-size:13px;text-anchor:middle}.svg-status-label{fill:var(--blue);font-size:15px;font-weight:800;text-anchor:middle}.battery-plate{stroke:#26364d;stroke-width:7;stroke-linecap:round}.switch-arm{stroke:var(--red);stroke-width:7;stroke-linecap:round;transition:.25s ease}.switch-arm.closed{stroke:var(--green)}.bulb-glass{fill:#e5eaf0;stroke:#46566e;stroke-width:4;transition:.25s ease}.bulb-glass.lit{fill:#ffe36a;stroke:#d39710;filter:drop-shadow(0 0 17px rgba(250,190,20,.9))}.bulb-filament{fill:none;stroke:#795526;stroke-width:3}.current-arrow{fill:none;stroke:#1670e6;stroke-width:4;stroke-linecap:round;stroke-dasharray:8 8;marker-end:url(#arrowHead);animation:currentMove .7s linear infinite}.current-arrow.hidden{display:none}.break-mark{stroke:var(--red);stroke-width:6;stroke-linecap:round}.meter-face{fill:#fff;stroke:#29415f;stroke-width:5}.meter-scale{fill:none;stroke:#8090a6;stroke-width:3}.meter-needle{stroke:var(--red);stroke-width:4;stroke-linecap:round;transition:transform .25s ease}.meter-terminal-positive{fill:#e94c4c}.meter-terminal-negative{fill:#26364d}.rheostat-coil{fill:none;stroke:#a8641a;stroke-width:5;stroke-linecap:round}.rheostat-slider{fill:var(--blue);stroke:#164895;stroke-width:3;transition:transform .08s linear}.terminal{fill:#fff;stroke:#293b53;stroke-width:4}.terminal.used{fill:#8dc0ff;stroke:var(--blue)}@keyframes currentMove{to{stroke-dashoffset:-16}}@keyframes dangerPulse{to{opacity:.55}}
.experiment-controls{margin-top:18px}.control-block+.control-block{margin-top:14px}.control-label{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px;color:#3b4960;font-size:14px;font-weight:800}.control-label output{color:var(--blue);font-size:16px}.button-row{display:flex;flex-wrap:wrap;gap:9px}.action-button,.option-button{min-height:42px;padding:9px 17px;color:#344359;background:#fff;border:1px solid #cbd5e1;border-radius:9px;font-weight:700;cursor:pointer;transition:.18s ease}.action-button:hover,.option-button:hover{color:var(--blue);border-color:#6ea4ee;background:#f5f9ff}.action-button.primary,.option-button.active{color:#fff;background:var(--blue);border-color:var(--blue);box-shadow:0 4px 11px rgba(37,99,235,.2)}.action-button.success{color:#fff;background:var(--green);border-color:var(--green)}.action-button.danger,.option-button.danger.active{color:#fff;background:var(--red);border-color:var(--red)}.action-button:focus-visible,.option-button:focus-visible,.nav-button:focus-visible,input:focus-visible{outline:3px solid rgba(37,99,235,.3);outline-offset:2px}.range-control{width:100%;accent-color:var(--blue);cursor:pointer}.range-scale{display:flex;justify-content:space-between;color:#7b8799;font-size:12px}
.data-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.data-item{min-width:0;padding:12px;background:#f7f9fc;border:1px solid #e6ebf2;border-radius:10px}.data-item.wide{grid-column:1/-1}.data-label{display:block;color:#748096;font-size:12px}.data-value{display:block;overflow-wrap:anywhere;color:var(--navy);font-size:19px;font-weight:800;line-height:1.35}.data-value.good{color:var(--green)}.data-value.bad{color:var(--red)}.data-value.info{color:var(--blue)}.explanation-panel p{margin:0 0 10px;color:#4d5b70;font-size:14px}.explanation-panel p:last-child{margin-bottom:0}.knowledge-formula{margin:10px 0;padding:10px 12px;color:#154f9c;text-align:center;background:var(--blue-soft);border-radius:9px;font-size:17px;font-weight:800}.knowledge-list{margin:6px 0 0;padding-left:20px;color:#4d5b70;font-size:14px}.feedback-panel{min-height:92px;display:flex;align-items:flex-start;gap:12px;padding:16px 17px;color:#174b86;background:var(--blue-soft);border-color:#bed6f7;box-shadow:none}.feedback-panel.success{color:#146245;background:var(--green-soft);border-color:#b9e6d3}.feedback-panel.danger{color:#9e2632;background:var(--red-soft);border-color:#f1bcc2}.feedback-symbol{width:25px;height:25px;flex:0 0 auto;display:grid;place-items:center;color:#fff;background:var(--blue);border-radius:50%;font-weight:900}.feedback-symbol::before{content:"i"}.feedback-panel.success .feedback-symbol{background:var(--green)}.feedback-panel.success .feedback-symbol::before{content:"✓"}.feedback-panel.danger .feedback-symbol{background:var(--red)}.feedback-panel.danger .feedback-symbol::before{content:"!"}.feedback-panel h3{font-size:15px}.feedback-panel p{margin:3px 0 0;font-size:13px;line-height:1.55}.canvas-caption{margin:-3px 0 12px;color:#6b778a;text-align:center;font-size:13px}
@media(max-width:1180px){.experiment-layout{grid-template-columns:minmax(0,1fr)}.information-column{grid-template-columns:repeat(2,minmax(0,1fr))}.feedback-panel{grid-column:1/-1}}
@media(max-width:820px){.site-header{min-height:100px;padding:18px 20px}.brand-mark{width:48px;height:48px}.brand-copy>p:last-child,.stage-badge{display:none}.page-layout{display:block}.experiment-sidebar{padding:13px 16px;border-right:0;border-bottom:1px solid var(--line)}.sidebar-heading,.safety-note{display:none}.experiment-nav{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;scrollbar-width:thin}.nav-button{min-width:148px;min-height:47px;grid-template-columns:30px 1fr;background:#f7f9fc;border-color:#e2e8f0}.nav-number{width:28px;height:28px}.nav-arrow{display:none}.experiment-main{padding:22px 16px 36px}.experiment-canvas{min-height:330px}.circuit-svg{min-height:310px}}
@media(max-width:600px){.brand-copy h1{font-size:21px}.brand-copy .eyebrow{font-size:10px}.experiment-heading{align-items:flex-start}.progress-chip{display:none}.operation-panel,.data-panel,.explanation-panel{padding:15px}.information-column{grid-template-columns:1fr}.feedback-panel{grid-column:auto}.experiment-canvas{min-height:280px}.circuit-svg{min-height:265px}.button-row>button{flex:1 1 42%}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
/* 第二阶段：双视图、数据表格与坐标图 */
.stage2-workspace{width:100%;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(270px,.65fr);gap:14px;align-items:stretch;padding:14px}
.stage2-diagram,.stage2-chart-panel{min-width:0;display:grid;place-items:center;background:#fff;border:1px solid #e1e8f1;border-radius:10px;overflow:hidden}
.stage2-workspace>.stage2-diagram:only-child{grid-column:1/-1}
.stage2-circuit{min-height:300px;max-height:350px}
.stage2-chart-panel{padding:8px;background:#fbfcfe}
.data-chart{width:100%;max-height:270px}
.chart-axis{stroke:#52627a;stroke-width:2}
.chart-label{fill:#52627a;font-size:13px;font-weight:700}
.chart-point{fill:#2563eb;stroke:#fff;stroke-width:2}
.chart-empty{fill:#98a2b3;font-size:13px;text-anchor:middle}
.stage2-workspace>.canvas-caption{grid-column:1/-1;margin:0}
.record-actions{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin:16px 0 12px}
.record-actions span{margin-left:auto;color:#667085;font-size:13px}
.action-button:disabled,.option-button:disabled{cursor:not-allowed;opacity:.45;box-shadow:none}
.record-table-wrap{max-height:245px;overflow:auto;border:1px solid #dce4ee;border-radius:10px}
.record-table{width:100%;border-collapse:collapse;text-align:center;font-size:14px}
.record-table th{position:sticky;top:0;padding:9px 10px;color:#fff;background:#315f95}
.record-table td{padding:8px 10px;border-top:1px solid #e5eaf1}
.record-table tbody tr:nth-child(even){background:#f7f9fc}
.empty-records{margin-top:12px;padding:17px;color:#7b8799;text-align:center;background:#f7f9fc;border:1px dashed #cbd5e1;border-radius:10px}
.target-voltage{margin-top:12px;padding:11px 14px;color:#9e2632;background:#fff0f1;border:1px solid #f1bcc2;border-radius:9px}
.target-voltage.ready{color:#146245;background:#e9f8f1;border-color:#b9e6d3}
.reasoning-steps{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:7px;margin:12px 0;padding:12px;background:#f1f6fd;border-radius:10px}
.reasoning-steps span{padding:6px 9px;color:#174f91;background:#fff;border:1px solid #c9dcf4;border-radius:7px;font-weight:800}
.reasoning-steps b{color:#2563eb}
.fault-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.fault-choices .option-button{width:100%}
.submit-diagnosis{width:100%;margin-top:12px}
.experiment-sidebar{max-height:calc(100vh - 122px);position:sticky;top:0;overflow-y:auto}
.experiment-nav{padding-bottom:4px}
@media(max-width:1320px){
  .stage2-workspace{grid-template-columns:1fr}
  .stage2-chart-panel{min-height:250px}
}
@media(max-width:820px){
  .experiment-sidebar{position:static;max-height:none;overflow:visible}
  .stage2-workspace{display:block;padding:10px}
  .stage2-chart-panel{margin-top:10px}
  .stage2-circuit{min-height:280px}
}
@media(max-width:600px){
  .fault-choices{grid-template-columns:1fr}
  .record-table{font-size:12px}
  .record-table th,.record-table td{padding:7px 5px}
  .reasoning-steps{font-size:12px}
}
/* 第三阶段：电功率、电能、电热模块 */
.stage3-visual-card{width:100%;min-height:300px;display:grid;align-content:center;gap:14px;padding:24px;background:#fff}
.stage3-meter{width:min(360px,100%);margin:auto;padding:20px;text-align:center;background:#eef4fb;border:4px solid #315f95;border-radius:12px;box-shadow:inset 0 0 0 2px #fff}
.meter-title{color:#315f95;font-weight:800;letter-spacing:.08em}.meter-digits{margin:14px auto 6px;padding:10px 16px;color:#101828;background:#101828;border-radius:8px;font-family:Consolas,"Courier New",monospace;font-size:34px;font-weight:800;letter-spacing:.08em;text-shadow:0 0 8px rgba(255,255,255,.35);background:linear-gradient(#26364d,#111827);color:#f8fafc}.meter-unit{color:#52627a;font-weight:800}.meter-disc{width:82px;height:82px;margin:14px auto 0;border-radius:50%;background:conic-gradient(from calc(var(--spin)*360deg),#2563eb,#e5eaf0,#2563eb);border:7px solid #fff;box-shadow:0 0 0 1px #cbd5e1}
.stage3-unit-note{padding:10px 12px;text-align:center;color:#174f91;background:#eaf2ff;border-radius:9px;font-weight:800}.appliance-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.appliance-card{min-width:0;padding:12px;background:#f7f9fc;border:1px solid #e1e8f1;border-radius:10px}.appliance-card.active{background:#eef7ff;border-color:#9dc5f5}.appliance-card .option-button{width:100%;margin-bottom:10px}.usage-board{align-content:start}.usage-row{display:grid;grid-template-columns:90px minmax(0,1fr) 96px;align-items:center;gap:10px;color:#52627a;font-size:13px}.usage-row i{height:14px;display:block;background:linear-gradient(90deg,#2563eb,#16a36a);border-radius:999px}.usage-row b{text-align:right;color:#172033}.training-card{min-height:280px;align-content:start}.training-card h3{margin:0;color:#10253f}.training-card p{margin:0;color:#344359;font-size:18px;font-weight:800}.training-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.training-result{padding:12px;border-radius:10px;font-weight:800}.training-result.good{color:#146245;background:#e9f8f1;border:1px solid #b9e6d3}.training-result.bad{color:#9e2632;background:#fff0f1;border:1px solid #f1bcc2}
@media(max-width:760px){.appliance-grid,.training-choices{grid-template-columns:1fr}.usage-row{grid-template-columns:78px minmax(0,1fr);gap:8px}.usage-row b{grid-column:1/-1;text-align:left}.meter-digits{font-size:26px}}

/* 第四阶段：生活用电、电与磁 */
.stage4-svg .stage4-wire{fill:none;stroke:#42526a;stroke-width:7;stroke-linecap:round;stroke-linejoin:round}.stage4-svg .live-line{stroke:#d22f3a}.stage4-svg .neutral-line{stroke:#2563eb}.stage4-svg .earth-line{stroke:#16a36a}.stage4-svg .danger-line{stroke:#dc3545;filter:drop-shadow(0 0 5px rgba(220,53,69,.45))}.stage4-live-text{fill:#b4232e;font-size:14px;font-weight:800}.stage4-neutral-text{fill:#1d5fbf;font-size:14px;font-weight:800}.stage4-earth-text{fill:#12805a;font-size:14px;font-weight:800}.stage4-pill-text{font-size:14px;font-weight:800;text-anchor:middle}.stage4-pill-text.good{fill:#16a36a}.stage4-pill-text.bad{fill:#dc3545}.socket-body,.metal-case{fill:#fff;stroke:#334155;stroke-width:4}.danger-spark{fill:none;stroke:#dc3545;stroke-width:4;stroke-dasharray:8 7}.earth-current{fill:none;stroke:#16a36a;stroke-width:5;stroke-linecap:round;marker-end:url(#arrowHead)}.danger-current{fill:none;stroke:#dc3545;stroke-width:5;stroke-linecap:round;marker-end:url(#arrowHead)}.breaker-off{fill:#fff0f1;stroke:#dc3545}.stage4-visual-card{width:100%;min-height:300px;display:grid;align-content:start;gap:14px;padding:22px;background:#fff}.safety-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.safety-card{min-height:56px;padding:10px 12px;text-align:left;background:#f7f9fc;border:1px solid #dce4ee;border-radius:10px;font-weight:800;color:#344359;cursor:pointer}.safety-card span{display:inline-grid;place-items:center;width:24px;height:24px;margin-right:8px;border-radius:50%;background:#eaf2ff;color:#2563eb}.safety-card.active{outline:3px solid rgba(37,99,235,.22);border-color:#2563eb}.safety-card.safe.active{background:#e9f8f1}.safety-card.danger.active{background:#fff0f1}.safety-question{padding:14px;background:#f7f9fc;border:1px solid #e1e8f1;border-radius:10px}.safety-question h3{margin:0 0 4px;color:#10253f}.safety-question p{margin:0 0 10px;color:#52627a}.magnet-body{fill:#e8edf5;stroke:#334155;stroke-width:3}.magnet-n{fill:#e84d5b}.magnet-s{fill:#2f74d0}.magnet-label{fill:#fff;font-size:22px;font-weight:900;text-anchor:middle}.field-lines path{fill:none;stroke:#7b8799;stroke-width:2;marker-end:url(#magArrow)}.compass circle{fill:#fff;stroke:#334155;stroke-width:3}.compass line{stroke:#dc3545;stroke-width:4;stroke-linecap:round;marker-end:url(#magArrow)}.force-arrow,.field-arrow{fill:none;stroke:#2563eb;stroke-width:5;stroke-linecap:round;marker-end:url(#arrowHead)}.force-arrow.repel{stroke:#dc3545}.force-arrow.attract{stroke:#16a36a}.coil-line{fill:none;stroke:#a8641a;stroke-width:5;stroke-linecap:round}.core-soft{fill:#eef4fb;stroke:#9db2ca;stroke-width:4}.iron-core{fill:#cbd5e1;stroke:#334155;stroke-width:4}.pin-dot{fill:#64748b}.relay-arm{stroke:#dc3545;stroke-width:7;stroke-linecap:round;transition:.2s}.relay-arm.closed{stroke:#16a36a}.motor-coil{fill:rgba(37,99,235,.08);stroke:#2563eb;stroke-width:4}.motor-rotor.spin{animation:motorSpin 1.3s linear infinite}.motor-rotor.spin.reverse{animation-direction:reverse}.conductor-bar{stroke:#f59e0b;stroke-width:9;stroke-linecap:round}@keyframes motorSpin{to{transform:rotate(360deg)}}@media(max-width:700px){.safety-grid{grid-template-columns:1fr}.stage4-visual-card{padding:14px}}

/* 第四阶段：生活用电、电与磁 */
.stage4-svg .stage4-wire{fill:none;stroke:#42526a;stroke-width:7;stroke-linecap:round;stroke-linejoin:round}.stage4-svg .live-line{stroke:#d22f3a}.stage4-svg .neutral-line{stroke:#2563eb}.stage4-svg .earth-line{stroke:#16a36a}.stage4-svg .danger-line{stroke:#dc3545;filter:drop-shadow(0 0 5px rgba(220,53,69,.45))}.stage4-live-text{fill:#b4232e;font-size:14px;font-weight:800}.stage4-neutral-text{fill:#1d5fbf;font-size:14px;font-weight:800}.stage4-earth-text{fill:#12805a;font-size:14px;font-weight:800}.stage4-pill-text{font-size:14px;font-weight:800;text-anchor:middle}.stage4-pill-text.good{fill:#16a36a}.stage4-pill-text.bad{fill:#dc3545}.socket-body,.metal-case{fill:#fff;stroke:#334155;stroke-width:4}.danger-spark{fill:none;stroke:#dc3545;stroke-width:4;stroke-dasharray:8 7}.earth-current{fill:none;stroke:#16a36a;stroke-width:5;stroke-linecap:round;marker-end:url(#arrowHead)}.danger-current{fill:none;stroke:#dc3545;stroke-width:5;stroke-linecap:round;marker-end:url(#arrowHead)}.breaker-off{fill:#fff0f1;stroke:#dc3545}.stage4-visual-card{width:100%;min-height:300px;display:grid;align-content:start;gap:14px;padding:22px;background:#fff}.safety-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.safety-card{min-height:56px;padding:10px 12px;text-align:left;background:#f7f9fc;border:1px solid #dce4ee;border-radius:10px;font-weight:800;color:#344359;cursor:pointer}.safety-card span{display:inline-grid;place-items:center;width:24px;height:24px;margin-right:8px;border-radius:50%;background:#eaf2ff;color:#2563eb}.safety-card.active{outline:3px solid rgba(37,99,235,.22);border-color:#2563eb}.safety-card.safe.active{background:#e9f8f1}.safety-card.danger.active{background:#fff0f1}.safety-question{padding:14px;background:#f7f9fc;border:1px solid #e1e8f1;border-radius:10px}.safety-question h3{margin:0 0 4px;color:#10253f}.safety-question p{margin:0 0 10px;color:#52627a}.magnet-body{fill:#e8edf5;stroke:#334155;stroke-width:3}.magnet-n{fill:#e84d5b}.magnet-s{fill:#2f74d0}.magnet-label{fill:#fff;font-size:22px;font-weight:900;text-anchor:middle}.field-lines path{fill:none;stroke:#7b8799;stroke-width:2;marker-end:url(#magArrow)}.compass circle{fill:#fff;stroke:#334155;stroke-width:3}.compass line{stroke:#dc3545;stroke-width:4;stroke-linecap:round;marker-end:url(#magArrow)}.force-arrow,.field-arrow{fill:none;stroke:#2563eb;stroke-width:5;stroke-linecap:round;marker-end:url(#arrowHead)}.force-arrow.repel{stroke:#dc3545}.force-arrow.attract{stroke:#16a36a}.coil-line{fill:none;stroke:#a8641a;stroke-width:5;stroke-linecap:round}.core-soft{fill:#eef4fb;stroke:#9db2ca;stroke-width:4}.iron-core{fill:#cbd5e1;stroke:#334155;stroke-width:4}.pin-dot{fill:#64748b}.relay-arm{stroke:#dc3545;stroke-width:7;stroke-linecap:round;transition:.2s}.relay-arm.closed{stroke:#16a36a}.motor-coil{fill:rgba(37,99,235,.08);stroke:#2563eb;stroke-width:4}.motor-rotor.spin{animation:motorSpin 1.3s linear infinite}.motor-rotor.spin.reverse{animation-direction:reverse}.conductor-bar{stroke:#f59e0b;stroke-width:9;stroke-linecap:round}@keyframes motorSpin{to{transform:rotate(360deg)}}@media(max-width:700px){.safety-grid{grid-template-columns:1fr}.stage4-visual-card{padding:14px}}

/* iPad classroom layout optimization */
.app-shell{width:min(1180px,100%);min-height:100vh;margin:0 auto}.site-header{min-height:70px;padding:16px 24px;border-bottom:3px solid #2f75d8}.brand-mark,.brand-copy .eyebrow,.brand-copy p,.stage-badge{display:none!important}.brand-copy.compact-brand h1,.brand-copy h1{font-size:28px;line-height:1.1;letter-spacing:.02em}.page-layout{grid-template-columns:226px minmax(0,1fr);min-height:calc(100vh - 73px)}.experiment-sidebar{padding:18px 12px;max-height:calc(100vh - 73px)}.sidebar-heading{padding:0 8px 10px}.experiment-main{padding:18px 18px 28px}.experiment-heading{display:none!important}.experiment-layout{grid-template-columns:minmax(0,1.45fr) minmax(276px,.68fr);gap:16px}.operation-panel{padding:18px}.panel{border-radius:12px}.experiment-canvas{min-height:390px}.circuit-svg{min-height:330px;max-height:390px}.information-column{gap:14px}.data-panel,.explanation-panel{padding:16px}.data-grid{gap:8px}.data-item{padding:10px}.data-value{font-size:18px}.panel-heading{margin-bottom:14px}.panel-heading.compact{margin-bottom:10px}.experiment-nav{gap:9px}.nav-stage{display:grid;gap:7px}.nav-stage-toggle{width:100%;min-height:50px;display:grid;grid-template-columns:1fr auto 18px;align-items:center;gap:8px;padding:10px 11px;color:#334359;text-align:left;background:#f7f9fc;border:1px solid #dce4ee;border-radius:10px;font-weight:800;cursor:pointer}.nav-stage-toggle small{color:#667085;font-size:12px;font-weight:700}.nav-stage-toggle i{font-style:normal;font-size:20px;transition:.18s ease}.nav-stage.open .nav-stage-toggle i{transform:rotate(90deg)}.nav-stage.has-active>.nav-stage-toggle{color:#fff;background:#173b68;border-color:#173b68}.nav-stage.has-active>.nav-stage-toggle small{color:#c7d6e8}.nav-stage-list{display:grid;gap:6px;padding:0 0 3px 8px}.nav-stage-list .nav-button{min-height:42px;grid-template-columns:30px 1fr;padding:6px 9px;border-radius:9px}.nav-stage-list .nav-number{width:26px;height:26px;font-size:12px}.nav-stage-list .nav-label{font-size:13px}.nav-stage-list .nav-arrow{display:none}.safety-note{display:none}.stage2-workspace{padding:10px;gap:10px}.stage2-circuit{min-height:290px;max-height:335px}.stage3-visual-card,.stage4-visual-card{min-height:280px;padding:18px}
@media(max-width:900px){.app-shell{width:100%}.page-layout{grid-template-columns:214px minmax(0,1fr)}.experiment-layout{grid-template-columns:1fr}.information-column{grid-template-columns:repeat(2,minmax(0,1fr))}.feedback-panel{grid-column:1/-1}.experiment-main{padding:14px}.site-header{min-height:62px;padding:13px 18px}.brand-copy h1{font-size:24px}.experiment-sidebar{max-height:calc(100vh - 62px);padding:14px 10px}.experiment-canvas{min-height:340px}}
@media(max-width:760px){.page-layout{display:block}.experiment-sidebar{position:static;max-height:none;border-right:0;border-bottom:1px solid var(--line)}.experiment-nav{display:grid;overflow:visible}.nav-button{min-width:0}.experiment-main{padding:14px}.information-column{grid-template-columns:1fr}.site-header{justify-content:center}.brand-copy h1{text-align:center}.stage2-workspace{display:block}.stage2-chart-panel{margin-top:10px}}
/* Keep grouped sidebar on iPad portrait widths */
@media(max-width:900px){.sidebar-heading{display:flex}.experiment-nav{display:grid;overflow:visible;padding-bottom:4px}.nav-stage-list .nav-button{min-width:0;background:#fff}.nav-stage-toggle{min-height:48px}.safety-note{display:none!important}}
/* iPad portrait keeps left grouped navigation */
@media(max-width:900px) and (min-width:761px){.page-layout{display:grid!important;grid-template-columns:214px minmax(0,1fr)!important}.experiment-sidebar{border-right:1px solid var(--line)!important;border-bottom:0!important}.experiment-main{min-width:0}.experiment-layout{grid-template-columns:1fr!important}.information-column{grid-template-columns:repeat(2,minmax(0,1fr))}.feedback-panel{grid-column:1/-1}}
/* Navigation accordion behavior fixes */
.nav-stage.open>.nav-stage-toggle{color:#fff;background:#173b68;border-color:#173b68}.nav-stage.open>.nav-stage-toggle small{color:#c7d6e8}

/* Smooth accordion transition for stage navigation */
.nav-stage-list{max-height:0;opacity:0;overflow:hidden;padding-top:0!important;padding-bottom:0!important;transform:translateY(-4px);transition:max-height .28s ease,opacity .22s ease,transform .24s ease,padding .24s ease;will-change:max-height,opacity,transform}.nav-stage.open>.nav-stage-list{max-height:760px;opacity:1;padding-bottom:3px!important;transform:translateY(0)}.nav-stage:not(.open)>.nav-stage-list{pointer-events:none}.nav-stage.open>.nav-stage-toggle{color:#fff;background:#173b68;border-color:#173b68}.nav-stage.open>.nav-stage-toggle small{color:#c7d6e8}
/* Circuit refinement: open switch gap and broken-wire animation */
.switch-gap-mask{stroke:#f9fbfd;stroke-width:14;stroke-linecap:round}.broken-wire-piece{stroke:#42526a;stroke-width:7;stroke-linecap:round;animation:wireLift .6s ease-out both}.short-wire-piece{stroke:#dc3545;stroke-width:7;stroke-linecap:round;filter:drop-shadow(0 0 5px rgba(220,53,69,.45));animation:wireLiftShort .55s ease-out both}@keyframes wireLift{0%{transform:translateY(0);opacity:1}100%{transform:translateY(-32px);opacity:1}}@keyframes wireLiftShort{0%{transform:translateY(0);opacity:.65}100%{transform:translateY(-24px);opacity:1}}

/* More realistic ammeter for the current-meter experiment */
.ammeter-realistic{min-height:420px;max-height:460px}.ammeter-body{fill:#e8edf4;stroke:#23364f;stroke-width:5;filter:drop-shadow(0 10px 18px rgba(15,35,60,.18))}.ammeter-body.danger{stroke:#dc3545;fill:#fff0f1}.ammeter-window{fill:#fbfdff;stroke:#95a6ba;stroke-width:3}.ammeter-arc{fill:none;stroke:#25364d;stroke-width:3}.ammeter-tick{stroke:#26364d;stroke-width:1.6}.ammeter-tick.major{stroke-width:3}.ammeter-scale-label{fill:#23364f;font-size:14px;font-weight:800;text-anchor:middle;dominant-baseline:middle}.ammeter-scale-label.small{fill:#667085;font-size:11px}.ammeter-brand{fill:#42526a;font-size:13px;font-weight:800;letter-spacing:.12em;text-anchor:middle}.ammeter-mark{fill:#10253f;font-size:34px;font-weight:900;text-anchor:middle}.ammeter-range-label{fill:#52627a;font-size:12px;font-weight:800;text-anchor:middle}.ammeter-reading{fill:#2563eb;font-size:24px;font-weight:900;text-anchor:middle}.needle-hub{fill:#26364d}.terminal-black{fill:#172033;stroke:#0b1220;stroke-width:3}.terminal-red{fill:#dc3545;stroke:#9e2632;stroke-width:3}.terminal-text{fill:#fff;font-size:11px;font-weight:900;text-anchor:middle;dominant-baseline:middle}.connection-circuit .svg-wire{stroke-width:6}.mini-meter{fill:#fff;stroke-width:4}.mini-meter.good{stroke:#16a36a}.mini-meter.bad{stroke:#dc3545}.mini-meter-text{fill:#10253f;font-size:24px;font-weight:900;text-anchor:middle}.diagram-title{font-size:16px;font-weight:900;text-anchor:middle}.diagram-title.good{fill:#16a36a}.diagram-title.bad{fill:#dc3545}
/* Short-circuit mode: keep the removed bulb visible above the main path */
.removed-bulb{animation:bulbRemovedLift .58s ease-out both}.removed-bulb .bulb-glass{fill:#eef2f7;stroke:#94a3b8;filter:drop-shadow(0 7px 10px rgba(15,35,60,.16))}@keyframes bulbRemovedLift{0%{transform:translateY(0);opacity:.35}100%{transform:translateY(-70px);opacity:1}}
/* ================================================================
   实验 01 专属样式 · 课堂电路搭建与测量放大镜（不影响其他实验）
   ================================================================ */
.experiment-main.is-simple-lab .experiment-layout{grid-template-columns:minmax(0,1fr) 236px;gap:15px;align-items:start}
.experiment-main.is-simple-lab .information-column{display:block}
.experiment-main.is-simple-lab .information-column .explanation-panel,
.experiment-main.is-simple-lab .information-column .feedback-panel{display:none!important}
.experiment-main.is-simple-lab .operation-panel{padding:16px}
.experiment-main.is-simple-lab .operation-panel .panel-heading{margin-bottom:12px}
.experiment-main.is-simple-lab .experiment-canvas{display:block;min-height:0;overflow:hidden;background:#f6f9fd;border-color:#dce7f5}
.experiment-main.is-simple-lab .data-panel{padding:17px}
.experiment-main.is-simple-lab .data-panel .panel-heading{margin-bottom:14px}
.experiment-main.is-simple-lab .data-grid{display:block}
.simple-workspace{width:100%;background:linear-gradient(160deg,#fafcfe,#eff6fd)}
.simple-workspace-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:11px 16px 0}
.simple-stage-mark{color:#31679c;background:#e6f1fe;padding:4px 10px;border-radius:7px;font-size:11px;font-weight:900;letter-spacing:.08em}
.simple-wire-progress{font-size:12px;color:#72849a;font-weight:650}
.simple-wire-progress b{color:#1d69c0}
.simple-board-svg{display:block;width:100%;height:auto;min-height:360px;user-select:none;touch-action:pan-y}
.simple-board-svg text{font-family:"Microsoft YaHei","PingFang SC",Arial,sans-serif;pointer-events:none}
.simple-board-heading{fill:#244567;font-size:20px;font-weight:900}
.simple-board-sub{fill:#7d90a9;font-size:13px;font-weight:500}
.simple-board-surface{fill:#fff;stroke:#e2ebf5;stroke-width:1.5;filter:drop-shadow(0 3px 8px rgba(41,89,139,.035))}
.simple-wire-guide{fill:none;stroke:#cad7e6;stroke-width:5;stroke-dasharray:7 13;stroke-linecap:round;stroke-linejoin:round;opacity:.74}
.simple-cable{fill:none;stroke:#4a617a;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;transition:stroke .22s ease}
.simple-cable.energized{stroke:#237deb;filter:drop-shadow(0 0 3px rgba(35,125,235,.18))}
.simple-current-particles{filter:drop-shadow(0 0 4px #8dccff);pointer-events:none}
.simple-device{pointer-events:none}
.simple-pole{font-weight:900;font-size:18px}
.simple-pole.plus{fill:#e4674d}.simple-pole.minus{fill:#315e9a}
.simple-component-name{fill:#304e70;font-size:16px;font-weight:850;text-anchor:middle}
.simple-spec{fill:#8597a8;font-size:12px;text-anchor:middle}
.simple-small-caption{fill:#7488a1;font-size:13px;text-anchor:middle}
.simple-switch{cursor:pointer;outline:none}
.simple-switch-hit{fill:rgba(232,241,250,.52);stroke:rgba(175,199,225,.45);stroke-width:1;transition:fill .2s}
.simple-switch:hover .simple-switch-hit,.simple-switch:focus-visible .simple-switch-hit{fill:#e7f2ff;stroke:#72a9ed;stroke-width:2.5}
.simple-switch-lever{transition:stroke .18s ease}
.simple-port{cursor:crosshair;outline:none;touch-action:none}
.simple-port-hit{fill:rgba(60,142,227,.001)}
.simple-port-core{fill:#fff;stroke:#5b7895;stroke-width:3}
.simple-port-center{fill:#9baec3}
.simple-port.wired .simple-port-core{fill:#c7e8ff;stroke:#2678dc}
.simple-port.selected .simple-port-core,.simple-port:hover .simple-port-core,.simple-port:focus-visible .simple-port-core{fill:#ecf7ff;stroke:#ef8b2d;stroke-width:4;filter:drop-shadow(0 0 5px rgba(245,158,11,.45))}
.simple-port.selected .simple-port-hit{stroke:#f3a044;stroke-width:2;stroke-dasharray:4 4}
.simple-bulb-glass{fill:#f0f4f9;stroke:#617b95;stroke-width:4;transition:fill .24s ease,filter .24s ease}
.simple-lamp.is-lit .simple-bulb-glass{fill:#ffe97f;stroke:#d7a436;filter:drop-shadow(0 0 calc(4px + var(--lamp-intensity,1) * 12px) rgba(255,195,40,.65))}
.simple-lamp-halo{animation:bulbBreathe 2.4s ease-in-out infinite alternate;pointer-events:none}
@keyframes bulbBreathe{to{opacity:.62}}
.simple-wire-preview{fill:none;stroke:#ec9834;stroke-width:5;stroke-dasharray:8 7;stroke-linecap:round;pointer-events:none}
.simple-lens{cursor:grab;touch-action:none;outline:none}
.simple-lens:active{cursor:grabbing}
.simple-lens-hit{pointer-events:all}
.simple-lens-card{pointer-events:none}
.simple-drag-label{font-size:12px;fill:#3d76b1;font-weight:900;pointer-events:none;paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round}
.simple-controls{display:grid;gap:13px}
.simple-actions{display:flex;flex-wrap:wrap;align-items:center;gap:9px}
.simple-actions .action-button{font-size:14px;min-height:42px;padding:8px 15px}
.simple-actions .action-button:disabled{opacity:.48;cursor:not-allowed;box-shadow:none}
.simple-actions .action-button.primary{background:#2471d5;border-color:#2471d5}
.simple-control-bottom{display:flex;flex-wrap:wrap;gap:10px 22px;align-items:center;justify-content:space-between;padding-top:10px;border-top:1px solid #e8eef5}
.simple-voltage-control{display:flex;gap:13px;align-items:center;flex:1;max-width:410px;min-width:240px;color:#435b74;font-size:13px;font-weight:800}
.simple-voltage-control label{white-space:nowrap}
.simple-voltage-control input{flex:1;min-width:60px;cursor:pointer;accent-color:#297be0}
.simple-voltage-control output{min-width:49px;text-align:right;color:#246fd1;font-size:15px}
.simple-model-note{color:#8191a5;font-size:12px;line-height:1.45}
.simple-operation-hint{display:flex;align-items:center;gap:8px;color:#57718c;background:#f1f6fc;border:1px solid #e5edf8;border-radius:9px;padding:10px 13px;font-size:13px;min-height:42px}
.simple-hint-dot{width:7px;height:7px;flex:0 0 auto;border-radius:50%;background:#2890ed}
.simple-measurement-display{display:grid;gap:11px}
.simple-reading{background:#f7fafd;border:1px solid #e8eff7;border-radius:11px;padding:12px 12px 11px}
.simple-reading>div{font-size:12px;font-weight:700;color:#788ca3;margin-bottom:2px}
.simple-reading strong{display:block;font-size:29px;line-height:1.25;letter-spacing:-.04em;color:#205996;white-space:nowrap;font-variant-numeric:tabular-nums}
.simple-reading strong small{font-size:15px;font-weight:700;letter-spacing:0}
.simple-reading:nth-child(2) strong{color:#0b9474}
.simple-state-chip{display:flex;align-items:center;gap:9px;border-radius:9px;padding:11px;background:#f3f6fa;border:1px solid #e7ebf1;font-size:12px;font-weight:850;color:#63748a;line-height:1.5}
.simple-state-chip>span{width:9px;height:9px;border-radius:50%;background:#96a7b9;flex:0 0 auto}
.simple-state-chip.active{background:#eaf8f1;color:#12865c;border-color:#caebd8}
.simple-state-chip.active>span{background:#18aa76;box-shadow:0 0 0 4px #cff1e1}
.simple-data-help{font-size:12px;color:#8393a7;margin:0;line-height:1.7}
@media(max-width:1100px){
 .experiment-main.is-simple-lab .experiment-layout{grid-template-columns:minmax(0,1fr)}
 .experiment-main.is-simple-lab .information-column{display:block}
 .experiment-main.is-simple-lab .data-grid{display:block}
 .simple-measurement-display{grid-template-columns:repeat(4,minmax(0,1fr))}
 .simple-state-chip,.simple-data-help{grid-column:1/-1}
 .simple-reading strong{font-size:23px}
}
@media(max-width:760px){
 .experiment-main.is-simple-lab .operation-panel{padding:11px}
 .simple-workspace-header{padding:10px 10px 0}
 .simple-board-svg{min-height:230px}
 .simple-board-heading{font-size:17px}
 .simple-measurement-display{grid-template-columns:repeat(2,minmax(0,1fr))}
 .simple-actions .action-button{flex:1 1 calc(50% - 6px)}
 .simple-voltage-control{min-width:0;width:100%}
 .simple-state-chip,.simple-data-help{grid-column:1/-1}
}
@media(prefers-reduced-motion:reduce){.simple-lamp-halo{animation:none}.simple-current-particles{display:none}}

/* 课堂投屏：充分利用电脑屏幕宽度，使电路图尽可能大 */
.app-shell:has(.is-simple-lab){width:min(1600px,100%)}
@media (min-width:1150px) and (max-width:1400px){.experiment-main.is-simple-lab .experiment-layout{grid-template-columns:minmax(0,1fr) 220px}}
/* 放大镜仅在镜框边缘/手柄拦截拖动，中央仍能点击被观察的元件 */
.simple-lens-hit{pointer-events:none!important}
.simple-lens>circle{pointer-events:stroke}
.simple-lens-handle{pointer-events:visiblePainted;cursor:grab}
.simple-lens>path{pointer-events:none}

/* =========================================================
  实验 02 · 通路 / 断路 / 短路（仅在 #statesBoard 存在时启用）
   ========================================================= */
.experiment-main:has(#statesBoard) .experiment-layout{grid-template-columns:minmax(0,1fr) 236px;gap:15px;align-items:start}
.experiment-main:has(#statesBoard) .information-column{display:block}
.experiment-main:has(#statesBoard) .explanation-panel,
.experiment-main:has(#statesBoard) .feedback-panel{display:none!important}
.experiment-main:has(#statesBoard) .operation-panel{padding:16px}
.experiment-main:has(#statesBoard) .operation-panel .panel-heading{margin-bottom:12px}
.experiment-main:has(#statesBoard) .experiment-canvas{display:block;min-height:0;overflow:hidden;background:#f4f8fd;border-color:#dce7f5}
.experiment-main:has(#statesBoard) .data-panel{padding:17px}
.experiment-main:has(#statesBoard) .data-panel .panel-heading{margin-bottom:14px}
.experiment-main:has(#statesBoard) .data-grid{display:block}
.s2-workspace{width:100%;min-width:0;background:linear-gradient(145deg,#fbfdff,#edf5fd)}
.s2-workspace-bar{padding:11px 15px 0;display:flex;align-items:center;justify-content:space-between;color:#7185a0;font-size:12px;font-weight:750;gap:9px}
.s2-workspace-bar b{color:#246fca}
.s2-number{padding:4px 10px;border-radius:7px;background:#e5f1ff;color:#2c669f;font-size:11px;font-weight:900}
.s2-board{width:100%;height:auto;display:block;min-height:340px;touch-action:pan-y;user-select:none}
.s2-board text{font-family:"Microsoft YaHei","PingFang SC",Arial,sans-serif;pointer-events:none}
.s2-title{fill:#244568;font-size:20px;font-weight:900}
.s2-subtitle{fill:#7d90a9;font-size:13px}
.s2-surface{fill:#fff;stroke:#e0ebf5;stroke-width:1.6;filter:drop-shadow(0 3px 7px rgba(38,81,139,.035))}
.s2-wire-guide{fill:none;stroke:#c9d6e4;stroke-width:5;stroke-dasharray:7 13;stroke-linejoin:round;stroke-linecap:round;opacity:.75}
.s2-wire{fill:none;stroke:#516b83;stroke-width:8;stroke-linejoin:round;stroke-linecap:round;transition:stroke .2s}
.s2-wire.active{stroke:#287fdf;filter:drop-shadow(0 0 3px rgba(42,132,231,.16))}
.s2-port{cursor:crosshair;touch-action:none;outline:none}
.s2-port-target{fill:rgba(20,110,210,.001)}
.s2-port-ring{fill:#fff;stroke:#6a86a2;stroke-width:3.2}
.s2-port.connected .s2-port-ring{fill:#d2ebff;stroke:#2f81db}
.s2-port.selected .s2-port-ring,.s2-port:hover .s2-port-ring,.s2-port:focus-visible .s2-port-ring{fill:#fff7e6;stroke:#ef9231;stroke-width:4.3}
.s2-device-label{fill:#334f70;font-size:16px;font-weight:850}
.s2-small-label{fill:#8a9caf;font-size:12px}
.s2-supply-title{fill:#71859d;font-size:11px;font-weight:750}
.s2-supply-value{fill:#1d3c60;font-size:19px;font-weight:900}
.s2-voltage-button{cursor:pointer;outline:none}
.s2-voltage-button rect{fill:#fff;stroke:#aec6df;stroke-width:1.5}
.s2-voltage-button path{fill:none;stroke:#2b70b7;stroke-width:2.6;stroke-linecap:round;pointer-events:none}
.s2-voltage-button:hover rect,.s2-voltage-button:focus-visible rect{fill:#e9f5ff;stroke:#2179d5;stroke-width:2.4}
.s2-switch,.s2-break-control,.s2-jumper-hit{cursor:pointer;outline:none}
.s2-switch-target{fill:rgba(236,244,253,.5);stroke:#d9e6f3;stroke-width:1.5}
.s2-switch:hover .s2-switch-target,.s2-switch:focus-visible .s2-switch-target{fill:#e9f5ff;stroke:#69a4e6;stroke-width:2.5}
.s2-switch-caption{fill:#546c86;font-size:13px;font-weight:800}
.s2-break-label{fill:#6786a1;font-size:12px;font-weight:750}
.s2-break-control:hover rect,.s2-break-control:focus-visible rect{fill:rgba(227,241,255,.6)}
.s2-jumper-guide{fill:none;stroke:#efd6d3;stroke-width:5;stroke-dasharray:8 11;stroke-linejoin:round;stroke-linecap:round;opacity:.65}
.s2-jumper-live{fill:none;stroke:#e9554e;stroke-width:8;stroke-linejoin:round;stroke-linecap:round;filter:drop-shadow(0 0 4px rgba(233,85,78,.22))}
.s2-jumper-hit:hover .s2-jumper-guide,.s2-jumper-hit:focus-visible .s2-jumper-guide{stroke:#ee867a;opacity:1}
.s2-short-label{fill:#ce4b46;font-size:12px;font-weight:850}
.s2-lamp-glass{fill:#f2f6fa;stroke:#778b9e;stroke-width:4;transition:fill .2s}
.s2-lamp.lit .s2-lamp-glass{fill:#ffeb82;stroke:#daa73e;filter:drop-shadow(0 0 13px rgba(255,201,56,.6))}
.s2-halo{animation:s2GlowPulse 2.3s ease-in-out infinite alternate}
@keyframes s2GlowPulse{to{opacity:.65}}
.s2-particles{pointer-events:none;filter:drop-shadow(0 0 3px #8ccfff)}
.s2-lens{cursor:grab;touch-action:none}
.s2-lens:active{cursor:grabbing}
.s2-lens .s2-lens-ring{pointer-events:all;cursor:grab}
.s2-lens-handle{pointer-events:visiblePainted}
.s2-lens-card{pointer-events:none}
.s2-drag-label{fill:#306fae;font-weight:850;font-size:12px;paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round}
.s2-controls{display:grid;gap:12px}
.s2-mode-row,.s2-action-row{display:flex;align-items:center;flex-wrap:wrap;gap:9px}
.s2-control-title{color:#4c6681;font-size:13px;font-weight:900;margin-right:4px}
.s2-action-row{padding-top:10px;border-top:1px solid #e8edf5}
.s2-action-row .action-button{min-height:40px;padding:7px 13px;font-size:13px}
.s2-action-row .action-button:disabled{opacity:.45;cursor:not-allowed}
.s2-danger-active{color:#fff!important;background:#d9534d!important;border-color:#d9534d!important;box-shadow:0 3px 9px rgba(217,83,77,.2)}
.s2-voltage-row{display:flex;align-items:center;gap:13px;padding-top:10px;border-top:1px solid #e8edf5;font-size:13px;font-weight:800;color:#405c79}
.s2-voltage-row>label{white-space:nowrap}
.s2-voltage-row input{max-width:440px;min-width:80px;flex:1;accent-color:#287ce0;cursor:pointer}
.s2-voltage-row output{font-size:15px;min-width:57px;text-align:right;color:#236cc1}
.s2-voltage-row small{font-weight:600;color:#8a9aab;white-space:nowrap}
.s2-hint{display:flex;gap:8px;align-items:center;min-height:42px;margin:0;padding:10px 12px;background:#f0f6fc;border:1px solid #e3edf8;border-radius:9px;color:#516e89;font-size:12px;line-height:1.5}
.s2-hint-dot{flex:0 0 auto;height:7px;width:7px;border-radius:50%;background:#287fe0}
.s2-data{display:grid;gap:11px}
.s2-reading{background:#f8fafd;border:1px solid #e6edf5;border-radius:11px;padding:11px 12px}
.s2-reading span{display:block;color:#788ca3;font-size:12px;font-weight:800}
.s2-reading strong{display:block;color:#215e9e;font-size:27px;line-height:1.4;letter-spacing:-.025em;font-weight:900;font-variant-numeric:tabular-nums;white-space:nowrap}
.s2-reading strong small{font-size:14px;letter-spacing:0}
.s2-reading:nth-child(2) strong{color:#0c9974}
.s2-reading .s2-text-state{font-size:20px}
.s2-reading.s2-warning{background:#fff4f1;border-color:#f6ccc5}
.s2-reading.s2-warning strong{color:#c74d46}
.s2-status{display:flex;align-items:center;gap:8px;padding:10px;border:1px solid #e2e8f1;background:#f3f6fa;border-radius:9px;color:#687b92;font-size:12px;font-weight:900}
.s2-status i{display:block;height:9px;width:9px;flex:0 0 auto;border-radius:50%;background:#9aa9b9}
.s2-status.good{background:#e8f8f0;border-color:#c7ecd9;color:#168661}
.s2-status.good i{background:#1ba776}
.s2-status.danger{background:#ffefed;border-color:#f4c3bc;color:#c7483e}
.s2-status.danger i{background:#db554a}
.s2-data-tip{margin:0;font-size:12px;color:#8293a8;line-height:1.65}
.s2-danger-help{margin:0;font-size:12px;color:#ab4b42;line-height:1.6;padding:10px;border-radius:8px;border:1px solid #f4d2cc;background:#fff8f6}
@media(max-width:1140px){
 .experiment-main:has(#statesBoard) .experiment-layout{grid-template-columns:minmax(0,1fr)}
 .experiment-main:has(#statesBoard) .information-column{display:block}
 .experiment-main:has(#statesBoard) .s2-data{grid-template-columns:repeat(4,minmax(0,1fr))}
 .s2-status,.s2-data-tip,.s2-danger-help{grid-column:1/-1}
 .s2-reading strong{font-size:22px}
}
@media(max-width:760px){
 .experiment-main:has(#statesBoard) .operation-panel{padding:10px}
 .s2-board{min-height:230px}
 .s2-workspace-bar{padding:10px 10px 0}
 .s2-title{font-size:18px}
 .experiment-main:has(#statesBoard) .s2-data{grid-template-columns:repeat(2,minmax(0,1fr))}
 .s2-action-row .action-button{flex:1 1 calc(50% - 6px)}
 .s2-voltage-row{flex-wrap:wrap}
 .s2-voltage-row input{flex:1 1 50%}
}
@media(prefers-reduced-motion:reduce){.s2-halo{animation:none}.s2-particles{display:none}}

/* 宽屏课堂投影：第二实验使用更多水平空间 */
.app-shell:has(#statesBoard){width:min(1640px,100%)}
@media (min-width:1150px) and (max-width:1400px){.experiment-main:has(#statesBoard) .experiment-layout{grid-template-columns:minmax(0,1fr) 220px}}

.s2-overvoltage{margin:0;font-size:12px;color:#a96324;line-height:1.6;padding:10px;border:1px solid #f3ddaf;background:#fff9ee;border-radius:8px}
@media(max-width:1140px){.s2-overvoltage{grid-column:1/-1}}
