:root{--ink:#15336b;--blue:#164bc4;--accent:#164bc4;--paper:#fafcfb;--panel:#fff;--muted:#6f81a0;--line:#a8b7ce;--faint:#e6ebf2;--wash:#edf3ff;--green:#087e7f;--warn:#b3552d;--fault:#c64f4a;--shadow:0 8px 24px #16356b12;color-scheme:light;font-family:Inter,"Noto Sans SC","PingFang SC","Microsoft YaHei",Arial,sans-serif;font-size:14px}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink)}button,input,a{-webkit-tap-highlight-color:transparent}button,input{font:inherit}button,a{touch-action:manipulation}button{color:inherit;background:none;border:1px solid transparent;cursor:pointer}button:hover{background:var(--wash)}button:focus-visible,a:focus-visible,input:focus-visible,svg a:focus-visible{outline:3px solid #ecad33;outline-offset:3px}button:disabled{opacity:.35;cursor:default}a{color:var(--blue);text-underline-offset:4px}button{transition:background .15s,color .15s,border-color .15s}.topbar{height:88px;display:flex;align-items:center;gap:23px;padding:15px 20px;border-bottom:1px solid var(--line);background:var(--panel)}.brand{display:flex;gap:12px;align-items:center;color:var(--ink);text-decoration:none;min-width:285px}.brand svg{width:42px;height:48px;fill:none;stroke:var(--blue);stroke-width:2}.brand b{font:700 19px/1.4 "Courier New",monospace;letter-spacing:1px;white-space:nowrap}.brand em{color:var(--blue);font-style:italic}.brand small{display:block;font-size:12px;color:var(--muted);letter-spacing:2px;margin-top:3px}.now{border-left:1px solid var(--line);padding-left:22px;min-width:190px}.now small{display:flex;gap:20px;color:var(--muted);font-size:12px;margin-bottom:8px}.now strong{font-size:17px;font-weight:600}.now span{font-family:monospace}.parts{display:flex;flex:1;gap:10px;justify-content:center}.parts button{font-size:12px;display:flex;align-items:center;gap:7px;padding:7px 6px;white-space:nowrap}.parts span{font:600 14px monospace;display:grid;place-items:center;border:1px solid var(--line);width:27px;height:27px}.parts .active span{background:var(--accent);border-color:var(--accent);color:#fff}.parts .active{color:var(--accent)}.progress{min-width:145px;border-left:1px solid var(--line);padding-left:18px}.progress>div:first-child{display:flex;align-items:center;justify-content:space-between;gap:14px}.progress small{font-size:12px;color:var(--muted)}.progress strong{font:600 15px monospace}.progress-track{height:6px;background:var(--faint);margin-top:12px}.progress-track span{display:block;height:100%;background:var(--accent);transition:width .4s}.icon-button{min-width:33px;min-height:33px;font-size:21px;display:inline-grid;place-items:center;border:1px solid var(--line);line-height:1}.mobile{display:none}.workspace{padding:14px;display:grid;gap:12px;grid-template-columns:258px minmax(360px,1fr) 310px;grid-template-rows:minmax(440px,1fr) 250px;height:calc(100dvh - 88px);min-height:775px;max-width:1920px;margin:auto}.panel{border:1px solid var(--line);background:var(--panel);min-width:0}.panel-head{height:52px;border-bottom:1px solid var(--faint);display:flex;align-items:center;justify-content:space-between;padding:0 16px}.panel-head h2,.flow h2{margin:0;font-size:16px;letter-spacing:1px;font-weight:650}.panel-head h2 span{font:13px monospace;color:var(--muted);margin-left:8px}.text-button{font-size:13px;color:var(--blue);padding:6px}.sidebar{grid-row:1 / 3;display:flex;flex-direction:column;overflow:hidden}.search-wrap{display:flex;align-items:center;gap:8px;margin:12px 12px 10px;padding:8px 10px;background:var(--paper);border:1px solid var(--faint)}.search-wrap>span{font-size:24px;line-height:18px;color:var(--muted)}.search-wrap input{width:100%;border:0;background:none;color:var(--ink);outline:none;font-size:14px;min-width:0}.search-wrap input::placeholder{color:var(--muted)}kbd{border:1px solid var(--line);color:var(--muted);font:12px monospace;padding:0 4px}.filter-row{display:flex;margin:0 12px 11px;border:1px solid var(--line)}.filter-row button{flex:1;padding:8px 0;font-size:12px;border-right:1px solid var(--faint);white-space:nowrap}.filter-row .selected{background:var(--blue);color:#fff}.topic-list{overflow:auto;padding:0 12px 20px;scrollbar-width:thin;scrollbar-color:var(--line) transparent;flex:1}.topic-group{padding:17px 2px 9px;display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--muted);letter-spacing:1px}.topic-group b{font-weight:500;color:var(--ink)}.topic{width:100%;text-align:left;display:flex;align-items:center;gap:11px;min-height:57px;border-bottom:1px solid var(--faint);padding:9px 9px}.topic>.topic-dot{width:10px;height:10px;border:1.5px solid var(--line);border-radius:50%;flex:none}.topic.done .topic-dot{background:var(--accent);border-color:var(--accent);box-shadow:inset 0 0 0 2px var(--panel)}.topic.active{border:1px solid var(--accent);background:color-mix(in srgb,var(--accent) 5%,var(--panel));color:var(--accent)}.topic span:nth-child(2){min-width:0;flex:1}.topic strong{display:block;font-size:14px;font-weight:600;line-height:1.4}.topic small{display:block;font:10px/1.6 monospace;color:var(--muted);letter-spacing:.3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topic .chev{font-size:20px}.topic-steps{padding:10px 5px 10px 24px;position:relative}.topic-steps:before{content:"";position:absolute;left:31px;top:22px;bottom:24px;border-left:1px dashed var(--line)}.topic-step{display:flex;align-items:center;gap:10px;width:100%;padding:6px 0;text-align:left;font-size:12px;color:var(--muted);position:relative}.topic-step span{width:17px;height:17px;background:var(--panel);border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;font:10px monospace}.topic-step.active{color:var(--accent)}.topic-step.active span{background:var(--accent);color:white;border-color:var(--accent)}.sidebar-foot{border-top:1px solid var(--faint);font-size:11px;color:var(--muted);padding:10px;display:flex;align-items:center;gap:6px}.sidebar-foot button{margin-left:auto;font-size:17px}.live-dot{width:6px;height:6px;background:var(--green);border-radius:50%}.canvas{display:flex;flex-direction:column;overflow:hidden;position:relative;background-color:var(--panel);background-image:linear-gradient(30deg,transparent 49.5%,color-mix(in srgb,var(--line) 13%,transparent) 50%,transparent 50.5%),linear-gradient(150deg,transparent 49.5%,color-mix(in srgb,var(--line) 13%,transparent) 50%,transparent 50.5%);background-size:36px 62px}.canvas-toolbar{height:52px;flex:none;display:flex;align-items:center;justify-content:space-between;padding:0 14px;gap:10px}.view-tabs{display:flex;border:1px solid var(--line);background:var(--panel)}.view-tabs button{font-size:12px;padding:7px 10px;white-space:nowrap}.view-tabs [aria-selected=true]{background:var(--blue);color:#fff}.model-label{font-size:11px;color:var(--muted);white-space:nowrap}.lesson-view{display:flex;flex-direction:column;flex:1;min-height:0}.scene-heading{padding:14px 24px 10px;display:flex;align-items:center;justify-content:space-between}.eyebrow{font:11px/1.5 monospace;letter-spacing:1.4px;color:var(--accent)}h1{font-size:26px;line-height:1.25;letter-spacing:.7px;margin:8px 0 0;font-weight:600}.scene-index{font:56px/.9 monospace;letter-spacing:-4px;color:color-mix(in srgb,var(--accent) 16%,var(--panel))}.scenario-row{display:flex;align-items:center;gap:6px;margin:3px 24px 0;font-size:11px;flex-wrap:wrap}.scenario-row>span{color:var(--muted);margin-right:4px}.scenario-row button{border:1px solid var(--line);padding:5px 9px;background:var(--panel);font-size:12px}.scenario-row button.selected{color:var(--accent);border-color:var(--accent);background:color-mix(in srgb,var(--accent) 5%,var(--panel))}.scenario-row button:last-child.selected{color:var(--fault);border-color:var(--fault);background:color-mix(in srgb,var(--fault) 5%,var(--panel))}.diagram{flex:1;min-height:220px;display:flex;justify-content:center;align-items:center;padding:0 12px;overflow:hidden}.diagram svg{width:100%;height:100%;max-height:420px;overflow:visible}.scene-caption{display:flex;gap:12px;margin:0 18px 16px;padding:14px 12px;border:1px solid var(--faint);background:var(--panel);box-shadow:0 2px 5px #15336b06}.step-chip{width:28px;height:28px;flex:none;display:grid;place-items:center;color:#fff;background:var(--accent);font:14px monospace}.scene-caption strong{font-size:14px;line-height:1.5}.scene-caption p{font-size:12px;color:var(--muted);line-height:1.75;margin:5px 0 0;min-height:40px}.inspector{display:flex;flex-direction:column;min-height:0;overflow:hidden}.inspector .panel-head{flex:none}.inspector .panel-head>span{background:var(--wash);color:var(--accent);font:12px monospace;padding:3px 7px}.detail-tabs{display:flex;padding:0 15px;border-bottom:1px solid var(--faint);flex:none}.detail-tabs button{font-size:13px;flex:1;padding:12px 4px;border-bottom:2px solid transparent}.detail-tabs [aria-selected=true]{border-bottom-color:var(--accent);color:var(--accent)}.detail-content{flex:1;min-height:0;padding:19px 19px 22px;overflow:auto;scrollbar-width:thin;scrollbar-color:var(--line) transparent;font-size:13px;line-height:1.85}.detail-content h3{margin:0 0 6px;font:600 16px/1.4 monospace;letter-spacing:.4px;color:var(--accent)}.detail-content p{margin:0 0 19px}.detail-section{border-top:1px solid var(--faint);padding-top:14px;margin-top:14px}.detail-section h4{font-size:12px;letter-spacing:1px;color:var(--muted);font-weight:500;margin:0 0 7px}.principle{padding-left:12px;border-left:2px solid var(--accent)}.warning{color:var(--warn)}.related{display:flex;gap:6px;flex-wrap:wrap}.related button{font-size:12px;color:var(--blue);border:1px solid var(--faint);padding:5px 7px}.snapshot{background:var(--paper);border:1px solid var(--faint);margin-bottom:18px;padding:12px;line-height:1.7}.snapshot span{display:block;color:var(--muted);font:11px monospace;margin-bottom:7px;letter-spacing:1px}.snapshot strong{font:13px/1.65 monospace;color:var(--accent)}.code-lines{font:12px/2.2 monospace;overflow-x:auto;white-space:pre;tab-size:2;background:var(--paper);border:1px solid var(--faint);padding:10px 0}.code-line{padding:4px 11px;min-width:max-content}.code-line span{color:var(--muted);margin-right:15px;font-size:11px}.code-line.active{background:var(--wash);color:var(--accent);border-left:2px solid var(--accent);padding-left:9px}.source-card{display:block;text-decoration:none;border:1px solid var(--faint);padding:12px;margin:10px 0;color:var(--ink)}.source-card:hover{border-color:var(--blue);background:var(--wash)}.source-card strong{font-size:13px;line-height:1.5;display:block;color:var(--blue)}.source-card span{display:block;font-size:12px;color:var(--muted);margin-top:6px}.source-note{font-size:12px;color:var(--muted)}.flow{grid-column:2/4;display:flex;flex-direction:column;overflow:hidden}.flow-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:52px;padding:8px 14px;border-bottom:1px solid var(--line)}.flow h2{white-space:nowrap}.flow h2 span{font:12px monospace;color:var(--muted);letter-spacing:0;margin-left:10px}.controls{display:flex;gap:5px;align-items:center}.controls button{border:1px solid var(--line);height:32px;font-size:12px;min-width:34px;padding:0 10px}.controls .icon-button{font-size:22px;padding:0}.controls .play-button{background:var(--blue);border-color:var(--blue);color:#fff;min-width:85px}.control-separator{height:18px;border-left:1px solid var(--line);margin:0 3px}.trace-scroll{overflow:auto;flex:1;padding:0 12px}table{width:100%;border-collapse:collapse;text-align:left;white-space:nowrap}th{color:var(--muted);font-size:10px;letter-spacing:1px;font-weight:500;padding:8px 9px;border-bottom:1px solid var(--faint);position:sticky;top:0;background:var(--panel)}td{font-size:12px;padding:8px 9px;border-bottom:1px solid var(--faint)}tbody tr{cursor:pointer;color:var(--muted);outline-offset:-2px}tbody tr:hover{background:var(--paper)}tbody tr.current{background:color-mix(in srgb,var(--accent) 6%,var(--panel));color:var(--ink)}tbody tr.done{color:var(--ink)}.row-no{font:11px monospace;display:inline-grid;place-items:center;width:20px;height:20px;border:1px solid var(--line);border-radius:50%}.current .row-no{background:var(--accent);border-color:var(--accent);color:#fff}.signal{font:11px monospace;letter-spacing:.3px}.route{font-size:11px}.flow-foot{border-top:1px solid var(--faint);display:flex;justify-content:space-between;align-items:center;padding:5px 13px;gap:10px;font-size:11px;color:var(--muted);min-height:33px}.flow-foot button{font-size:11px;padding:3px 5px}.empty{padding:28px 5px;color:var(--muted);line-height:1.8;font-size:13px}.diagram .edge{stroke:var(--line);opacity:.5;fill:none;stroke-width:1.4;stroke-dasharray:5 5}.diagram .edge.active{stroke:var(--accent);stroke-width:2;stroke-dasharray:none;opacity:1}.diagram .edge.fault{stroke:var(--fault)}.device{fill:var(--panel);stroke:var(--accent);stroke-width:1.6}.device.side{fill:color-mix(in srgb,var(--accent) 10%,var(--panel))}.device.top{fill:color-mix(in srgb,var(--accent) 5%,var(--panel))}.node-label{font-size:15px;font-weight:550;fill:var(--ink)}.node-meta{font:11px monospace;fill:var(--muted)}.node-halo{fill:color-mix(in srgb,var(--accent) 6%,var(--panel));stroke:color-mix(in srgb,var(--accent) 20%,var(--panel));stroke-width:1}.node-pulse{animation:breathe 2s ease-in-out infinite;transform-box:fill-box;transform-origin:center}.edge-tag{fill:var(--panel);stroke:var(--line)}.edge-text{fill:var(--accent);font:11px monospace;letter-spacing:.3px}.fault-text{fill:var(--fault)}.step-wave{fill:var(--accent)}@keyframes breathe{50%{opacity:.3}}#map-view{flex:1;min-height:0;display:flex;flex-direction:column;background:var(--panel)}[hidden]{display:none!important}.map-heading{padding:18px 22px 10px}.map-heading h1{font-size:22px}.map-heading p{font-size:12px;color:var(--muted);line-height:1.7}.map-scroll{overflow:auto;flex:1}.map-scroll svg{width:100%;min-width:510px;display:block}.map-node{cursor:pointer}.map-node rect{fill:var(--panel);stroke:var(--line)}.map-node:hover rect,.map-node:focus rect{stroke:var(--accent);stroke-width:2;fill:var(--wash)}.map-node text{fill:var(--ink);font-size:12px}.map-node .map-num{fill:var(--muted);font:10px monospace}.map-node.selected rect{stroke:var(--accent);stroke-width:2;fill:var(--wash)}.map-node.completed .map-num{fill:var(--green)}.map-legend{padding:11px 16px;border-top:1px solid var(--faint);font-size:10px;color:var(--muted);display:flex;gap:18px}#toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%,20px);background:var(--ink);color:var(--panel);padding:11px 20px;font-size:13px;opacity:0;pointer-events:none;transition:.2s;z-index:40;box-shadow:var(--shadow)}#toast.show{opacity:1;transform:translate(-50%,0)}dialog{width:min(520px,calc(100% - 30px));background:var(--panel);color:var(--ink);border:1px solid var(--line);padding:32px;box-shadow:var(--shadow);line-height:1.8;font-size:14px}dialog::backdrop{background:#10244980;backdrop-filter:blur(3px)}dialog h2{font-size:24px;font-weight:600}dialog p{margin:16px 0}#close-about{position:absolute;right:12px;top:12px}.outline-button{border:1px solid var(--line);padding:9px 12px;font-size:12px}.skip{position:fixed;top:-60px;left:10px;z-index:99;background:var(--panel);padding:12px}.skip:focus{top:10px}body.dark{--ink:#d8e4fc;--blue:#82adff;--accent:#82adff;--paper:#101a2a;--panel:#142137;--muted:#92a4c4;--line:#415674;--faint:#263955;--wash:#1d3458;--green:#65c6b8;--warn:#edb181;--fault:#f28d88;color-scheme:dark}body.dark .play-button,body.dark .view-tabs [aria-selected=true],body.dark .filter-row .selected{color:#0e203a}body.dark .brand svg{stroke:#82adff}body.dark .parts .active span{color:#0e203a}.no-motion *{animation:none!important;transition:none!important}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}@media(min-width:1600px){.workspace{grid-template-columns:285px minmax(420px,1fr) 455px}.topbar{gap:35px}.diagram{padding:0 35px}.scene-caption p{font-size:14px}.detail-content{font-size:14px}.topic strong{font-size:15px}td{font-size:13px}.scene-heading{padding-top:22px}}@media(max-width:1190px){.topbar{gap:16px;padding:12px 15px}.brand{min-width:245px}.brand b{font-size:16px}.brand svg{width:35px}.parts{gap:2px}.parts button{font-size:0;gap:0;padding:5px}.parts span{font-size:14px}.now{min-width:175px;padding-left:17px}.workspace{grid-template-columns:232px minmax(330px,1fr) 270px;gap:10px;padding:10px}.scene-heading{padding:10px 18px}.scene-heading h1{font-size:23px}.scenario-row{margin-left:18px;margin-right:18px}.detail-content{padding:16px;font-size:12px}.topic strong{font-size:13px}.progress{min-width:130px;padding-left:12px}}@media(max-width:990px){.workspace{grid-template-columns:215px minmax(0,1fr);grid-template-rows:560px auto 250px;height:auto;min-height:0}.sidebar{grid-row:1/4;max-height:1100px;position:sticky;top:10px}.canvas{grid-column:2}.inspector{grid-column:2;min-height:300px;max-height:430px}.flow{grid-column:2;grid-row:3}.now{display:none}.parts{justify-content:flex-end}.parts button{font-size:12px;gap:5px}.progress{display:none}.flow-toolbar{flex-wrap:wrap}.flow h2{font-size:14px}.flow-foot>span{max-width:65%;font-size:10px}.detail-content{font-size:14px}.topic-list{max-height:1000px}}@media(max-width:700px){.topbar{height:74px;padding:10px 12px;gap:10px}.brand{min-width:0;flex:1;gap:8px}.brand b{font-size:14px;letter-spacing:.3px}.brand small{font-size:10px;letter-spacing:.6px}.brand svg{width:28px;height:35px}.parts{display:none}.mobile{display:inline-grid}.workspace{display:flex;flex-direction:column;padding:10px;gap:10px}.sidebar{display:none;position:fixed;left:10px;top:84px;bottom:10px;width:min(310px,calc(100% - 45px));z-index:30;max-height:none;box-shadow:var(--shadow)}.sidebar.open{display:flex}.canvas{min-height:570px;height:570px;flex:none;order:0}.inspector{min-height:320px;max-height:550px;order:2}.flow{height:280px;flex:none;order:1}.scene-heading h1{font-size:24px}.scene-index{font-size:48px}.diagram{padding:0 8px}.scene-caption{margin:0 12px 13px;padding:12px 10px}.scene-caption p{font-size:13px}.model-label{font-size:10px}.flow-toolbar{gap:8px;padding:10px}.flow h2{font-size:14px}.controls{gap:4px}.controls button{padding:0 8px;font-size:11px}.controls .play-button{min-width:68px}.controls .icon-button{font-size:20px}.controls .control-separator{display:none}.flow-foot>span{font-size:10px}.trace-scroll{padding:0 7px}.topic strong{font-size:15px}.topic-step{font-size:13px}.topic small{font-size:11px}.topic-group{font-size:13px}#shade{position:fixed;inset:74px 0 0;background:#0b203b66;z-index:25;backdrop-filter:blur(2px)}.detail-content{font-size:14px;line-height:1.9;padding:18px}.detail-tabs button{font-size:14px}.map-heading{padding:15px}.map-heading h1{font-size:22px}.scene-caption p{min-height:60px}.map-legend{flex-wrap:wrap;gap:5px;font-size:11px}.now{display:none}.filter-row button{font-size:13px}#search{font-size:16px}}@media(max-width:375px){.brand b{font-size:12px}.flow-toolbar{flex-direction:column;align-items:flex-start}.flow{height:310px}.scene-heading h1{font-size:22px}.scenario-row button{font-size:11px}.scene-caption p{font-size:12px}}
/* Keep the teaching content readable at ordinary laptop sizes. */
.ui-icon,.map-check{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.ui-icon{display:inline-block;width:16px;height:16px;flex:none;vertical-align:-3px;pointer-events:none}
.icon-button>.ui-icon{width:19px;height:19px}.search-wrap>.ui-icon{color:var(--muted);width:18px;height:18px}
.view-tabs button,.controls button,.scenario-row button,#complete{display:inline-flex;align-items:center;justify-content:center;gap:6px}
.controls .icon-button{display:inline-grid}.topic .chev{display:flex;align-items:center}.topic .chev .ui-icon{width:16px;height:16px}
.sidebar-foot button{display:grid;place-items:center;min-width:28px;min-height:28px}.sidebar-foot .ui-icon{width:17px;height:17px}
.map-check{color:var(--green);pointer-events:none}
.source-card strong{display:flex;align-items:flex-start;justify-content:space-between;gap:6px}.source-card strong>.ui-icon{margin-top:3px}
.scene-caption p,.detail-content,.detail-content p,.topic-step,.scenario-row button,.detail-tabs button,.related button,.source-card strong,.source-card span,.source-note{font-size:14px}
.topic strong{font-size:14px}.topic small{font-size:11px}.scene-caption strong{font-size:15px}.scene-caption p{line-height:1.8}.scenario-row>span{font-size:13px}.detail-section h4{font-size:13px}.detail-content{line-height:1.9}.view-tabs button,.controls button{font-size:13px}.flow-foot{font-size:12px}.flow-foot button{font-size:12px}td{font-size:13px}.signal,.route{font-size:12px}.workspace{grid-template-rows:minmax(440px,1fr) 280px}.trace-scroll th{font-size:11px}.flow-toolbar{min-height:50px}.node-label{font-size:17px}.node-meta{font-size:12px}.edge-text{font-size:12px}
@media(max-width:990px){.workspace{grid-template-rows:590px auto 280px}}
@media(max-width:700px){.scene-caption p{font-size:14px}.canvas{height:610px;min-height:610px}.flow{height:300px}.scene-heading h1{font-size:24px}.diagram{min-height:200px}.scene-caption p{min-height:70px}.filter-row button,.view-tabs button{font-size:13px}.model-label{display:none}.flow-toolbar{flex-direction:column;align-items:flex-start}.controls{align-self:flex-end}.sidebar-foot{font-size:12px}.scene-caption{margin:0 10px 12px}.flow-foot>span{font-size:11px}.source-card strong,.source-card span,.source-note{font-size:14px}.map-scroll svg{min-width:620px}}
@media(max-width:700px){.node-label{font-size:26px}.node-meta{display:none}.edge-text{font-size:16px}.scene-index{font-size:44px}.controls button{font-size:13px}}
#step-signal{display:none}@media(max-width:700px){.edge-tag,.edge-text{display:none}#step-signal{display:block;color:var(--accent);font:12px/1.7 monospace;margin-top:3px}.scene-caption p{margin-top:4px}}
@media(min-width:991px){.workspace{grid-template-rows:minmax(440px,1fr) 250px}.trace-scroll td{padding:5px 9px}.trace-scroll th{padding:6px 9px}.node-label{font-size:22px}.node-meta{font-size:13px}.edge-text{font-size:14px}}
/* Semantic diagrams: logical entities, typed relations, no implied hardware. */
.diagram-key{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:10px 24px 0;font-size:12px;color:var(--muted)}#relation-kind{color:var(--accent);font-size:13px}.logical-card{fill:var(--panel);stroke:var(--line);stroke-width:1.5}.node-current .logical-card{stroke:var(--accent);stroke-width:2;fill:color-mix(in srgb,var(--accent) 4%,var(--panel))}.logical-label{font-size:22px;fill:var(--ink);font-weight:550}.node-number{fill:var(--muted);font:14px monospace}.semantic-edge{fill:none;stroke:var(--accent);stroke-width:2}.semantic-edge.logical{stroke-dasharray:6 4}.semantic-edge.rejected{stroke:var(--fault)}.diagram-state{color:var(--accent);font-size:13px;line-height:1.6;margin-top:5px}.scene-caption p{min-height:0}.map-node.related-node rect{stroke:var(--accent);fill:color-mix(in srgb,var(--accent) 4%,var(--panel))}.map-scroll svg{min-width:650px}.map-legend{font-size:12px}.diagram{padding:8px 12px;min-height:210px}.diagram svg{max-height:none}.scene-heading{padding-top:8px;padding-bottom:8px}.scene-caption{margin-bottom:12px;padding:10px}.scene-caption p{font-size:14px}.diagram-key span:last-child{font-size:11px}.map-heading p{font-size:13px}
@media(max-width:700px){.logical-label{font-size:26px}.node-number{font-size:20px}.diagram-key{margin-left:18px;margin-right:18px}.diagram-key span:last-child{font-size:11px}.canvas{height:660px;min-height:660px}.diagram-state{font-size:14px}.diagram{padding:0 5px}.map-scroll svg{min-width:680px}.map-legend{font-size:12px}}

.source-kind{display:block;font-size:10px;letter-spacing:.04em;color:var(--muted);margin-bottom:7px}
/* IsoKit owns the mechanism SVG; the course state and relation semantics stay in app.js. */
.diagram .systems-iso{width:100%;height:100%;min-height:0;display:block;padding:0;border:0;border-radius:0;background:transparent;--ik-panel:var(--panel);--ik-top:var(--panel);--ik-front:color-mix(in srgb,var(--ink) 4%,var(--panel));--ik-side:color-mix(in srgb,var(--ink) 9%,var(--panel));--ik-line:var(--line);--ik-detail:color-mix(in srgb,var(--ink) 24%,var(--panel));--ik-live:var(--accent);--ik-ink:var(--muted);--ik-ink-hi:var(--ink);--ik-glow:var(--accent);--ik-weight-edge:1.25;--ik-weight-crease:.8;--ik-weight-fine:.7}
.systems-iso>svg{width:100%;height:100%;display:block;overflow:visible}.systems-iso .iso-shadow{fill:var(--ink);opacity:.045}.systems-iso .iso-base{--ik-top:color-mix(in srgb,var(--ink) 3%,var(--panel));--ik-front:color-mix(in srgb,var(--ink) 6%,var(--panel));--ik-line:var(--faint)}.systems-iso .node-current{--ik-line:var(--accent);--ik-detail:color-mix(in srgb,var(--accent) 45%,var(--panel));--ik-top:color-mix(in srgb,var(--accent) 5%,var(--panel));--ik-front:color-mix(in srgb,var(--accent) 12%,var(--panel));--ik-side:color-mix(in srgb,var(--accent) 18%,var(--panel))}.systems-iso .node-current .iso-base{--ik-line:color-mix(in srgb,var(--accent) 35%,var(--panel));--ik-top:color-mix(in srgb,var(--accent) 4%,var(--panel))}.systems-iso .iso-symbol{fill:none;stroke:var(--ik-line);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.systems-iso .iso-symbol-core{fill:var(--ik-detail);stroke:none}.systems-iso .iso-idle-dot{fill:var(--line)}.systems-iso .iso-node-label{font-size:27px;font-weight:550;fill:var(--ink);pointer-events:none}.systems-iso .node-current .iso-node-label{fill:var(--accent);font-weight:650}.systems-iso .iso-node-number{font:16px monospace;fill:var(--muted)}.systems-iso .iso-port{stroke:var(--accent);fill:none;stroke-width:1.5}.systems-iso .iso-local-mark circle:first-child{fill:var(--panel);stroke:var(--accent);stroke-width:1.5}.systems-iso .iso-local-mark circle:last-child{fill:var(--accent);stroke:none}.systems-iso .iso-wire-underlay{fill:none;stroke:var(--panel);stroke-width:7;stroke-linejoin:round}.systems-iso .semantic-edge{stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.systems-iso .iso-travel-dot{fill:var(--accent);stroke:var(--panel);stroke-width:2.5;pointer-events:none;filter:drop-shadow(0 0 3px color-mix(in srgb,var(--accent) 35%,transparent))}.systems-iso .iso-label-bounds{pointer-events:none}.dark .systems-iso .iso-shadow{opacity:.18}
@media(max-width:700px){.systems-iso .iso-node-label{font-size:28px}.systems-iso .iso-node-number{font-size:20px}.diagram{min-height:235px}.canvas{height:690px;min-height:690px}}
