:root{--bg: #070d1a;--bg-2: #0b1324;--panel: #0f1a2e;--panel-2: #13213a;--border: #1f2e4b;--text: #e2e8f0;--muted: #8ea0bd;--accent: #22d3ee;--on: #22c55e;--warn: #f59e0b;--bad: #ef4444;--radius: 12px;--font: "Segoe UI", "Tahoma", "Noto Sans Arabic", system-ui, sans-serif;--mono: "Cascadia Mono", "Consolas", ui-monospace, monospace;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;background:radial-gradient(1200px 600px at 80% -10%,#0e2a3a 0%,transparent 60%),var(--bg);color:var(--text);font-family:var(--font);font-size:14px;min-height:100%}button,select,input,textarea{font:inherit;color:inherit}code{font-family:var(--mono)}.app{max-width:1600px;margin:0 auto;padding:14px 16px 60px;display:flex;flex-direction:column;gap:12px}.topbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.brand{display:flex;align-items:center;gap:10px;color:var(--accent)}.brand strong{display:block;color:var(--text);font-size:18px}.brand strong span{color:#fbbf24}.brand small{color:var(--muted)}.top-controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.field{display:flex;align-items:center;gap:8px;color:var(--muted)}.field select{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:6px 10px}.btn{display:inline-flex;align-items:center;gap:6px;background:var(--panel-2);border:1px solid var(--border);border-radius:9px;padding:7px 12px;cursor:pointer;transition:border-color .15s,background .15s}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--accent);color:#062030;border-color:var(--accent);font-weight:600}.btn.ghost{background:transparent}.btn.small{padding:4px 9px;font-size:12px}.examples{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px}.ex{flex:0 0 auto;text-align:start;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:9px 14px;cursor:pointer;display:flex;flex-direction:column;gap:2px}.ex small{color:var(--muted)}.ex.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset,0 0 18px #22d3ee26}.toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px}.speed{display:inline-flex;align-items:center;gap:2px;margin-inline-start:6px;color:var(--muted)}.speed span{margin-inline-end:6px}.seg{background:transparent;border:1px solid var(--border);padding:5px 8px;cursor:pointer;border-radius:7px;font-family:var(--mono);font-size:12px}.seg.active{background:var(--accent);color:#062030;border-color:var(--accent)}.status{margin-inline-start:auto;font-family:var(--mono);font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px;background:#3b2a10;color:var(--warn)}.status.run{background:#0d3320;color:var(--on);box-shadow:0 0 12px #22c55e59}.stat{color:var(--muted);font-size:12px}.stat b{color:var(--text);font-family:var(--mono)}.summary{margin:0;color:var(--muted)}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:12px;align-items:start}@media(max-width:1100px){.workspace{grid-template-columns:1fr}}.canvas{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius);padding:12px;overflow:auto;max-height:calc(100vh - 230px);min-height:300px}.ladder{display:inline-flex;flex-direction:column;min-width:100%}.rung{position:relative}.rung-head{display:flex;gap:10px;align-items:baseline;padding:8px 16px 0;border-left:4px solid var(--on);border-right:4px solid #334155}.rung-no{font-family:var(--mono);font-size:11px;color:var(--accent);background:#22d3ee14;border:1px solid rgba(34,211,238,.3);border-radius:6px;padding:1px 6px;white-space:nowrap}.rung-comment{color:var(--muted);font-size:13px}.rung svg{display:block}.pou-title{font-family:var(--mono);font-size:12px;font-weight:600;color:var(--accent);padding:10px 16px 6px;background:#22d3ee0f;border-top:1px solid #334155;border-bottom:1px solid #1c2a44;display:flex;gap:12px;align-items:baseline}.pou-kind{font-family:var(--font);font-weight:400;color:var(--muted)}.rung+.rung .rung-head{border-top:1px dashed #1c2a44}.lbl-name{font-family:var(--mono);font-size:12px;font-weight:600;fill:var(--text)}.lbl-addr,.lbl-addr-inline{font-family:var(--mono);font-size:10.5px;fill:var(--muted)}.lbl-mode{font-family:var(--mono);font-size:13px;font-weight:700}.lbl-box{font-family:var(--mono);font-size:12px;fill:var(--text)}.lbl-box-sm,.lbl-live{font-family:var(--mono);font-size:11px;fill:var(--muted)}.lbl-fbtype{font-family:var(--mono);font-size:12px;font-weight:700;fill:var(--accent)}.el.clickable{cursor:pointer}.el.clickable:hover .lbl-name{fill:var(--accent)}.pressed-halo{fill:#22d3ee1f;stroke:var(--accent);stroke-width:1.5}.ladder-hint{color:var(--muted);font-size:12px;margin:10px 4px 0}.side{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;max-height:calc(100vh - 230px);display:flex;flex-direction:column}.tabs{display:flex;flex-wrap:wrap;border-bottom:1px solid var(--border)}.tab{flex:1 0 auto;display:inline-flex;align-items:center;justify-content:center;gap:5px;background:transparent;border:0;border-bottom:2px solid transparent;padding:9px 6px;cursor:pointer;color:var(--muted);font-size:12.5px}.tab.active{color:var(--text);border-bottom-color:var(--accent)}.panel-body{padding:12px 14px;overflow:auto}.panel-body h3{font-size:13px;color:var(--accent);margin:14px 0 6px}.panel-body h3:first-child{margin-top:0}.hint{color:var(--muted);font-size:12px;margin:0 0 8px}.io-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.io-row{display:flex;align-items:center;gap:10px;background:var(--panel-2);border:1px solid var(--border);border-radius:10px;padding:7px 10px}.io-row.analog{flex-wrap:wrap}.io-name{flex:1;min-width:0;display:flex;flex-wrap:wrap;gap:2px 8px;align-items:baseline}.io-name b{font-family:var(--mono);font-size:12.5px}.io-name code{color:var(--muted);font-size:11px}.io-name small{width:100%;color:var(--muted);font-size:11.5px}.nc{font-style:normal;font-size:10px;font-family:var(--mono);color:var(--warn);border:1px solid var(--warn);border-radius:4px;padding:0 4px}.led{width:12px;height:12px;border-radius:50%;flex:0 0 auto;border:1px solid #334155}.lamp{width:20px;height:20px;border-radius:50%;flex:0 0 auto;border:2px solid;transition:background .08s,box-shadow .08s}.analog-val{font-family:var(--mono);min-width:48px}.switch{position:relative;width:38px;height:22px;flex:0 0 auto}.switch input{opacity:0;width:0;height:0}.switch span{position:absolute;inset:0;background:#1e293b;border:1px solid var(--border);border-radius:999px;cursor:pointer;transition:background .15s}.switch span:after{content:"";position:absolute;top:2px;inset-inline-start:2px;width:16px;height:16px;border-radius:50%;background:#94a3b8;transition:transform .15s}.switch input:checked+span{background:#0d3320;border-color:var(--on)}.switch input:checked+span:after{background:var(--on);transform:translate(16px)}[dir=rtl] .switch input:checked+span:after{transform:translate(-16px)}.press-btn{flex:0 0 auto;background:#1a2740;border:1px solid var(--border);border-bottom-width:3px;border-radius:8px;padding:4px 10px;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:none;font-size:12px}.press-btn.active{border-bottom-width:1px;transform:translateY(2px);border-color:var(--accent);color:var(--accent)}input[type=range]{flex:1;accent-color:var(--accent)}.num{width:72px;background:var(--bg-2);border:1px solid var(--border);border-radius:6px;padding:3px 6px}.tune-hint{margin-top:14px}.tune-card{flex-direction:column;align-items:stretch;gap:6px}.tune-card.flash{animation:rung-flash 1.4s ease-out}.tune-head{display:flex;align-items:center;gap:10px}.fb-type{font-style:normal;font-family:var(--mono);font-size:10px;color:var(--accent);border:1px solid var(--border);border-radius:4px;padding:0 4px}.tune-bar{height:7px;border-radius:4px;background:#1e293b;overflow:hidden}.tune-bar span{display:block;height:100%;border-radius:4px;background:#334155;transition:width .1s linear}.tune-bar span.run{background:var(--warn)}.tune-bar span.done{background:var(--on)}.tune-line{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;font-size:12px;color:var(--muted)}.tune-val{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono)}.tune-val b{color:var(--text);font-weight:600}.tune-val .led{width:10px;height:10px;display:inline-block}.tune-src{display:inline-flex;align-items:center;gap:6px}.tune-src small{color:var(--muted);font-family:var(--mono)}.num-field{display:inline-flex;align-items:center;gap:4px}.num-field small{color:var(--muted)}.num.changed{border-color:var(--warn);color:var(--warn)}.restore{display:inline-flex;align-items:center;gap:3px;background:none;border:1px dashed var(--border);border-radius:6px;padding:1px 6px;font-size:11px;color:var(--muted);cursor:pointer;font-family:var(--mono)}.restore:hover{color:var(--text);border-color:var(--accent)}.force{display:inline-flex;flex:0 0 auto;border:1px solid var(--border);border-radius:7px;overflow:hidden}.force button{background:none;border:none;padding:3px 7px;font-size:11px;color:var(--muted);cursor:pointer}.force button+button{border-inline-start:1px solid var(--border)}.force button.active{background:var(--panel);color:var(--text)}.io-row.forced{border-color:var(--warn)}.io-row.forced .force button.active{background:#f59e0b2e;color:var(--warn)}.io-name small .link{background:none;border:none;padding:0;color:var(--muted);font:inherit;text-align:start;cursor:pointer;text-decoration:underline dotted}.io-name small .link:hover{color:var(--accent)}.tuned-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;background:#f59e0b14;border:1px solid rgba(245,158,11,.4);color:var(--warn);border-radius:10px;padding:7px 10px;margin-bottom:10px;font-size:12.5px}.watch{width:100%;border-collapse:collapse;font-size:12px}.watch td{border-bottom:1px solid var(--border);padding:5px 4px}.watch .val{font-family:var(--mono);color:var(--accent);direction:ltr;text-align:end}.tests-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.score{font-family:var(--mono);font-weight:700;padding:3px 10px;border-radius:999px}.score.ok{background:#0d3320;color:var(--on)}.score.bad{background:#3a1214;color:var(--bad)}.tests{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}.test{border:1px solid var(--border);border-radius:10px;padding:8px 10px;background:var(--panel-2)}.test.ok{border-color:#22c55e73}.test.bad{border-color:#ef444499}.test-title{display:flex;align-items:center;gap:8px}.test.ok .test-title svg{color:var(--on)}.test.bad .test-title svg{color:var(--bad)}.test-title small{margin-inline-start:auto;color:var(--muted)}.test-steps{margin:6px 0 0;padding-inline-start:20px;font-size:12px;color:var(--muted)}.test-steps li{margin:3px 0}.test-steps li.bad{color:var(--bad)}.checks{display:inline-flex;flex-wrap:wrap;gap:4px;margin-inline-start:6px}.checks code{font-size:10.5px;border-radius:4px;padding:0 4px}.checks code.ok{background:#22c55e1f;color:var(--on)}code.bad{background:#ef44441f;color:var(--bad)}.code-head{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:12px;margin-bottom:6px}.code{background:#050a14;border:1px solid var(--border);border-radius:10px;padding:10px;font-family:var(--mono);font-size:12px;line-height:1.5;overflow:auto;max-height:55vh;white-space:pre;text-align:left}.notes{color:var(--muted);font-size:12px;padding-inline-start:18px}.json{width:100%;min-height:220px;background:#050a14;border:1px solid var(--border);border-radius:10px;padding:10px;font-family:var(--mono);font-size:12px;margin-bottom:8px}.err{color:var(--bad)}.diags{font-family:var(--mono);font-size:11.5px;padding-inline-start:16px}.diags .error{color:var(--bad)}.diags .warning{color:var(--warn)}.diags .ok{color:var(--on)}.diag-bar{position:fixed;inset-inline:0;bottom:0;display:flex;gap:14px;align-items:center;overflow-x:auto;white-space:nowrap;background:#070d1aeb;border-top:1px solid var(--border);padding:7px 16px;font-size:12px;color:var(--muted);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.diag-bar .ok{color:var(--on)}.diag-bar .warn{color:var(--warn);font-family:var(--mono)}.diag-bar .bad{color:var(--bad)}.modes{display:flex;gap:8px}.mode{display:inline-flex;align-items:center;gap:8px;background:var(--panel);border:1px solid var(--border);border-radius:999px;padding:8px 16px;cursor:pointer;font-weight:600;color:var(--muted)}.mode small{font-family:var(--mono);font-size:11px;background:#ffffff0f;border-radius:999px;padding:1px 7px}.mode.active{color:#062030;background:var(--accent);border-color:var(--accent)}.mode.bug.active{background:#f97316;border-color:#f97316;color:#1c0d02}.ex.lesson.active{border-color:#f97316;box-shadow:0 0 0 1px #f97316 inset,0 0 18px #f973162e}.solved{display:inline-flex;align-items:center;gap:3px;margin-inline-start:8px;color:var(--on)}.lesson-card{background:linear-gradient(180deg,rgba(249,115,22,.07),transparent 70%),var(--panel);border:1px solid rgba(249,115,22,.35);border-radius:var(--radius);padding:12px 14px;display:flex;flex-direction:column;gap:8px;align-items:flex-start}.lesson-top{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.badge{font-size:12px;font-weight:700;border-radius:999px;padding:3px 10px}.badge.bug{background:#ef444426;color:#fca5a5;border:1px solid rgba(239,68,68,.5)}.badge.trying{background:#22d3ee1f;color:var(--accent);border:1px solid rgba(34,211,238,.45)}.origin{color:var(--muted)}.symptom{display:flex;gap:8px;align-items:flex-start;color:#fde68a;font-size:14px}.symptom svg{flex:0 0 auto;color:var(--warn);margin-top:2px}.hint-box{display:flex;gap:6px;align-items:flex-start;margin:0;color:#bae6fd;background:#22d3ee12;border:1px dashed rgba(34,211,238,.4);border-radius:8px;padding:7px 10px}.verdict{display:flex;gap:10px;align-items:flex-start;border-radius:10px;padding:10px 12px;margin-bottom:12px}.verdict p{margin:4px 0}.verdict.ok{background:#22c55e1a;border:1px solid rgba(34,197,94,.5);color:#bbf7d0}.verdict.ok>svg{color:var(--on);flex:0 0 auto}.verdict.bad{background:#ef444414;border:1px solid rgba(239,68,68,.45);color:#fecaca}.verdict.bad>svg{color:var(--bad);flex:0 0 auto}.verdict code{display:inline-block;margin-top:4px;font-size:11.5px;padding:1px 6px;border-radius:5px}.rule{color:var(--text)}.fixes{list-style:none;padding:0;margin:0 0 10px;display:flex;flex-direction:column;gap:8px}.fix{display:flex;align-items:center;gap:10px;background:var(--panel-2);border:1px solid var(--border);border-radius:10px;padding:8px 10px}.fix.active{border-color:var(--accent)}.fix-letter{font-family:var(--mono);font-weight:700;color:var(--accent);width:24px;height:24px;display:grid;place-items:center;border:1px solid rgba(34,211,238,.4);border-radius:6px;flex:0 0 auto}.fix-label{flex:1}.mode.academy.active{background:#a78bfa;border-color:#a78bfa;color:#1a1033}.academy{display:flex;flex-direction:column;gap:18px}.academy-intro{font-size:13px;margin:0}.academy-stats{display:flex;gap:8px;flex-wrap:wrap}.pill{font-size:11.5px;font-weight:700;border-radius:999px;padding:2px 9px;border:1px solid}.pill.ready{color:var(--on);border-color:#22c55e80;background:#22c55e1a}.pill.partial{color:var(--warn);border-color:#f59e0b80;background:#f59e0b1a}.pill.planned{color:var(--muted);border-color:var(--border);background:transparent}.track>header{display:flex;gap:12px;align-items:flex-start;margin-bottom:10px}.track h2{margin:0;font-size:17px}.track header p{margin:2px 0 0;color:var(--muted)}.track-id{font-family:var(--mono);font-weight:800;font-size:18px;color:#a78bfa;border:1px solid rgba(167,139,250,.5);background:#a78bfa14;border-radius:10px;width:38px;height:38px;display:grid;place-items:center;flex:0 0 auto}.modules{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}.module{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px;display:flex;flex-direction:column;gap:6px}.module.ready{border-color:#22c55e59}.module.planned{opacity:.72}.module-head{display:flex;align-items:center;gap:8px}.module-head small{color:var(--muted)}.module-id{font-family:var(--mono);font-weight:700;color:var(--accent)}.module h3{margin:0;font-size:14px}.objectives{margin:0;padding-inline-start:18px;color:var(--muted);font-size:12.5px}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:center;gap:4px;font-size:12px;border-radius:999px;padding:3px 9px;border:1px solid var(--border);background:var(--panel-2)}.chip.brand{font-family:var(--mono);font-size:11px;color:var(--muted)}.chip.link{cursor:pointer;color:var(--accent);border-color:#22d3ee66}.chip.link.bug{color:#fdba74;border-color:#f9731673}.chip.link.bug.done{color:var(--on);border-color:#22c55e80}.chip.link:hover{background:#22d3ee14}.lift-stage{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap;margin:0 0 12px;padding:12px;border:1px solid rgba(167,139,250,.4);border-radius:var(--radius);background:var(--panel)}.lift-shaft{flex:0 0 auto;touch-action:none}.lift-shaft .shaft{fill:#0a1222;stroke:var(--border)}.lift-shaft .landing{stroke:#334155;stroke-width:2}.lift-shaft .floor-no{fill:var(--muted);font:700 13px var(--mono)}.lift-shaft .level-led{fill:#1e293b;stroke:#334155}.lift-shaft .level-led.on{fill:var(--on);filter:drop-shadow(0 0 4px var(--on))}.lift-shaft .limit.ok{fill:#334155}.lift-shaft .limit.tripped{fill:var(--bad)}.lift-shaft .car-body{fill:#fef3c7;stroke:#94a3b8;stroke-width:2}.lift-shaft .car.alarm .car-body{stroke:var(--bad)}.lift-shaft .door{fill:#64748b;stroke:#475569}.lift-shaft .hall-btn{cursor:pointer}.lift-shaft .hall-btn circle{fill:#1e293b;stroke:#475569;stroke-width:2}.lift-shaft .hall-btn path{fill:none;stroke:var(--muted);stroke-width:2}.lift-shaft .hall-btn.lit circle{stroke:var(--accent);filter:drop-shadow(0 0 5px var(--accent))}.lift-shaft .hall-btn.lit path{stroke:var(--accent)}.lift-side{flex:1 1 200px;display:flex;flex-direction:column;gap:10px;min-width:0}.lift-display{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;padding:4px 14px;border-radius:8px;background:#000;color:#f97316;font:800 28px var(--mono);min-width:84px;justify-content:center}.lift-arrow{display:inline-flex;width:22px}.lift-car-panel{display:grid;grid-template-columns:repeat(3,42px);gap:8px}.car-btn{width:42px;height:42px;border-radius:50%;border:2px solid #475569;background:#1e293b;font:700 15px var(--mono);cursor:pointer;display:grid;place-items:center;touch-action:none}.car-btn.lit{border-color:var(--accent);color:var(--accent);box-shadow:0 0 10px #22d3ee80}.lift-fault{max-width:260px}.lift-events{border:1px solid var(--bad);border-radius:8px;padding:8px 10px;color:#fca5a5}.lift-events b{display:flex;align-items:center;gap:6px}.lift-events ul{margin:6px 0 0;padding-inline-start:18px}.io-row.plant{border-color:#a78bfa66}.motor-icon{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-family:var(--mono);font-weight:800;font-size:12px;border:2px solid #475569;color:#94a3b8;flex:0 0 auto}.motor-icon.on{border-color:var(--on);color:var(--on);box-shadow:0 0 12px #22c55e80;animation:spin 1.2s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.valve-bar{width:44px;height:10px;border-radius:5px;background:#1e293b;border:1px solid var(--border);overflow:hidden;flex:0 0 auto}.valve-bar span{display:block;height:100%;background:var(--accent)}.fault-select{background:var(--bg-2);border:1px solid var(--border);border-radius:7px;padding:4px 6px;font-size:12px}.fault-select.active{border-color:var(--bad);color:#fca5a5}.io-row.auto{opacity:.85}.auto-badge{font-style:normal;font-size:10px;font-family:var(--mono);color:#c4b5fd;border:1px solid rgba(167,139,250,.6);border-radius:4px;padding:0 4px}.import-report{background:var(--panel);border:1px solid rgba(167,139,250,.4);border-radius:var(--radius);padding:10px 14px;display:flex;flex-direction:column;gap:8px}.ir-head{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}.ir-head code{color:var(--muted);font-size:12px}.ir-stats{display:flex;gap:16px;flex-wrap:wrap;color:var(--muted);font-size:13px}.ir-stats b{color:var(--text);font-family:var(--mono)}.ir-pct b{color:var(--on)}.ir-bar{height:8px;border-radius:4px;background:#3a1214;overflow:hidden}.ir-bar span{display:block;height:100%;background:var(--on)}.import-report details summary{cursor:pointer;color:var(--muted);font-size:12.5px}.import-report ul{margin:6px 0 0;padding-inline-start:18px;font-size:12px;color:var(--muted)}.canvas-wrap{display:flex;flex-direction:column;gap:8px;min-width:0}.pou-nav select{min-width:260px}.search{width:100%;background:var(--bg-2);border:1px solid var(--border);border-radius:8px;padding:6px 10px;margin-bottom:8px}.btn.disabled{opacity:.5;pointer-events:none}.glossary{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:14px;display:flex;flex-direction:column;gap:10px}.glossary>header{display:flex;align-items:center;gap:8px;color:#a78bfa}.glossary>header h2{margin:0;font-size:17px;color:var(--text)}.glossary>header small{color:var(--muted)}.chip.active-chip{background:#22d3ee26;border-color:var(--accent)}.terms{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px}.term{background:var(--panel-2);border:1px solid var(--border);border-radius:10px;padding:8px 10px}.term-head{display:flex;gap:8px;align-items:baseline;justify-content:space-between}.term-head code{color:var(--accent);font-size:11.5px}.term-en{color:var(--muted);font-size:12px;text-align:start}.term-alt{color:#c4b5fd;font-size:11.5px}.term p{margin:4px 0 0;font-size:12.5px;color:var(--text);opacity:.9}.formats{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px;margin-bottom:8px}.fmt{text-align:start;background:var(--panel-2);border:1px solid var(--border);border-radius:9px;padding:6px 9px;cursor:pointer;display:flex;flex-direction:column;gap:1px}.fmt small{color:var(--muted);font-size:11.5px}.fmt.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.fmt-status{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:6px}.pill.bad{color:var(--bad);border-color:#ef444480;background:#ef44441a}.pill svg{vertical-align:-2px}.code-actions{display:inline-flex;gap:6px}.engine-head{display:flex;align-items:center;gap:6px;margin:18px 0 4px;font-size:14px}.engine-checks{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}.engine-check{border:1px solid var(--border);border-radius:10px;padding:6px 10px;background:var(--panel-2)}.engine-check.ok .test-title svg{color:var(--on)}.engine-check.bad{border-color:#ef444499}.engine-check.bad .test-title svg{color:var(--bad)}.engine-check.warn{border-color:#f59e0b99}.engine-check.warn .test-title svg{color:#f59e0b}.engine-check.info .test-title svg{color:var(--accent)}.engine-detail{margin:4px 0 0;font-size:12px;color:var(--muted);white-space:pre-line}.explain{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.explain li{border:1px solid var(--border);border-radius:10px;padding:6px 10px;background:var(--panel-2)}.explain-head{display:flex;align-items:center;gap:6px;width:100%;background:none;border:0;padding:0;color:var(--text);font:inherit;font-size:12.5px;cursor:pointer;text-align:start}.explain-head span{color:var(--muted)}.explain p{margin:4px 0 0;font-size:13px;line-height:1.7}.rung.flash{animation:rung-flash 1.4s ease-out}@keyframes rung-flash{0%{box-shadow:0 0 0 3px var(--accent)}to{box-shadow:0 0 0 0 transparent}}.mode.gen-mode.active{background:#f472b6;border-color:#f472b6;color:#2a0a1c}.gen{display:flex;flex-direction:column;gap:16px;max-width:1100px}.gen-head{display:flex;gap:12px;align-items:flex-start;color:#f472b6}.gen-head>div{flex:1}.gen-head h2{margin:0 0 4px;font-size:17px;color:var(--text)}.gen-step{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:10px}.gen-step h3{margin:0;font-size:14px;color:var(--accent)}.gen-goal{width:100%;min-height:110px;background:#050a14;border:1px solid var(--border);border-radius:10px;padding:10px;font:inherit;font-size:14px;line-height:1.7}.gen-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.gen-row .hint{margin:0}.gen-stepper{display:flex;gap:6px;list-style:none;margin:0;padding:0;flex-wrap:wrap}.gen-stepper li{flex:1;min-width:140px}.gen-stepper button{width:100%;display:flex;align-items:center;gap:8px;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:8px 10px;font-size:13px;cursor:pointer;color:var(--muted)}.gen-stepper .n{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;border:1px solid var(--border);font-weight:700;flex:none}.gen-stepper .current button{border-color:#f472b6;color:var(--text);font-weight:600}.gen-stepper .current .n{background:#f472b6;border-color:#f472b6;color:#1a0612}.gen-stepper .done button{color:var(--on)}.gen-stepper .done .n{border-color:var(--on)}.gen-step.locked{opacity:.6;border-style:dashed}.gen-step.locked h3{color:var(--muted)}.gen-step.locked .hint{display:flex;gap:6px;align-items:flex-start;margin:0}.gen-step.locked .hint svg{flex:none;margin-top:3px}.gen-step.locked .btn{align-self:flex-start}.relay{display:flex;flex-direction:column;gap:12px;border-inline-start:3px solid #f472b6;margin:0;padding-inline-start:40px;font-size:13px;list-style:none;counter-reset:relay}.relay>li{display:flex;flex-direction:column;gap:6px;position:relative;counter-increment:relay}.relay>li:before{content:counter(relay);position:absolute;inset-inline-start:-30px;top:4px;width:20px;height:20px;border-radius:50%;border:1px solid #f472b6;color:#f472b6;font-size:12px;font-weight:700;display:grid;place-items:center}.relay a.btn{color:inherit;text-decoration:none}.relay-prompt-box summary{cursor:pointer;color:var(--muted);font-size:12px}.json.relay-prompt{min-height:90px;max-height:140px;color:var(--muted);margin:6px 0 0}.relay .json{min-height:120px}.relay .json.slip{border-color:var(--warn)}.relay>li>.btn{align-self:flex-start}.gen-api{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin:6px 0 0;font-size:12.5px;color:var(--muted)}.gen-api.on{color:var(--on)}.gen-api-bad{color:var(--warn)}.gen-api code{font-family:var(--mono);color:var(--text)}.gen-busy{display:flex;gap:8px;align-items:center;color:#f472b6;font-size:13px}.spin{animation:spin 1s linear infinite}.gen-warn{display:flex;gap:8px;align-items:flex-start;color:var(--warn);background:#f59e0b14;border:1px solid rgba(245,158,11,.4);border-radius:8px;padding:8px 10px;font-size:13px;line-height:1.6}.gen-warn svg{flex:none;margin-top:3px}.gen-problems{color:var(--warn);font-size:12.5px}.gen-problems ul{font-family:var(--mono);font-size:11.5px;margin:4px 0 0;padding-inline-start:18px}.brief h4{margin:10px 0 4px;font-size:13px;color:var(--muted)}.brief h4:first-child{margin-top:0;font-size:15px;color:var(--text)}.brief p,.brief ol,.brief ul{margin:0;font-size:13px;line-height:1.7}.brief-io{border-collapse:collapse;font-size:12.5px}.brief-io td{border-bottom:1px solid var(--border);padding:4px 10px 4px 0;vertical-align:top}.brief-io code{font-family:var(--mono);color:var(--accent)}.brief-ac{list-style:none;padding:0}.brief-ac b{font-family:var(--mono);color:var(--on);margin-inline-end:6px}.brief-q{display:flex;flex-direction:column;gap:4px;margin-bottom:8px;font-size:13px}.brief-q input{background:#050a14;border:1px solid var(--border);border-radius:8px;padding:6px 9px;font:inherit}.gen-round{border:1px solid var(--border);border-radius:10px;padding:8px 12px;font-size:13px}.gen-round summary{cursor:pointer;display:flex;gap:6px;align-items:center}.gen-round.ok{border-color:#22c55e80}.gen-round.ok summary{color:var(--on)}.gen-round.bad summary,div.gen-round.bad{color:var(--warn)}.gen-round[open]>:not(summary){margin-top:8px}.gen-findings{margin:0;padding-inline-start:18px;font-size:12.5px;line-height:1.7}.gen-findings .error b{color:var(--bad)}.gen-fail{font-family:var(--mono);font-size:11.5px;background:#050a14;border-radius:8px;padding:8px;overflow:auto;max-height:220px;white-space:pre-wrap}.gen-done{display:flex;gap:10px;align-items:center;color:var(--on);font-weight:600}.mode.editor-mode.active{background:#a3e635;border-color:#a3e635;color:#1a2605}.editor{display:flex;flex-direction:column;gap:10px}.ed-top{display:flex;flex-wrap:wrap;align-items:center;gap:8px;color:#a3e635}.ed-top select,.ed-form select,.ed-form input,.ed-form textarea,.ed-newtag input,.ed-newtag select,.ed-tags input,.ed-tags select{background:var(--bg-2);border:1px solid var(--border);border-radius:7px;padding:4px 7px;font:inherit;font-size:12.5px;color:var(--text);max-width:100%}.ed-name{font-family:var(--mono);font-size:14px!important;font-weight:600;width:14ch;background:var(--bg-2);border:1px solid var(--border);border-radius:7px;padding:4px 8px;color:var(--text)}.ed-sep{flex:1}.btn.danger,.pal.danger:not(:disabled):hover{border-color:var(--bad, #ef4444);color:var(--bad, #ef4444)}.ed-palette{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px;position:sticky;top:0;z-index:2}.ed-hint{flex-basis:100%;color:var(--muted);font-size:12px}.ed-side{display:inline-flex;border:1px solid var(--border);border-radius:7px;overflow:hidden}.ed-side button{background:none;border:0;padding:4px 10px;font-size:12px;color:var(--muted);cursor:pointer}.ed-side button.active{background:#a3e635;color:#1a2605;font-weight:600}.ed-side button:disabled{opacity:.4;cursor:not-allowed}.ed-group{display:inline-flex;align-items:center;gap:4px}.ed-group-label{font-size:11px;color:var(--muted);margin-inline-end:2px}.pal{display:inline-flex;align-items:center;gap:4px;background:var(--bg-2);border:1px solid var(--border);border-radius:7px;padding:4px 8px;font-family:var(--mono);font-size:12px;color:var(--text);cursor:pointer;min-width:40px;justify-content:center}.pal:hover:not(:disabled){border-color:#a3e635;color:#a3e635}.pal:disabled{opacity:.35;cursor:not-allowed}.ed-body{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:12px;align-items:start}@media(max-width:1100px){.ed-body{grid-template-columns:1fr}}.ed-canvas{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius);padding:12px;overflow:auto;max-height:calc(100vh - 260px);min-height:320px}.ed-side-panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;max-height:calc(100vh - 260px);display:flex;flex-direction:column}.edit-el{cursor:pointer}.edit-hit{fill:transparent;stroke:transparent;stroke-width:1.5}.edit-el:hover .edit-hit{stroke:#a3e635;stroke-dasharray:4 3}.edit-el.selected .edit-hit{fill:#a3e6351a;stroke:#a3e635;stroke-dasharray:none;stroke-width:2}.rung-head.editable{cursor:pointer}.rung-head.editable:hover .rung-no{color:#a3e635}.rung.rung-selected{outline:2px solid rgba(163,230,53,.55);outline-offset:-2px;border-radius:6px}.ed-form{display:flex;flex-direction:column;gap:10px;font-size:13px}.ed-form label{display:flex;flex-direction:column;gap:4px}.ed-form label>span{color:var(--muted);font-size:12px}.ed-form textarea{min-height:70px;resize:vertical}.ed-form h3 small{font-family:var(--mono);color:var(--muted);margin-inline-start:6px}.ed-operand{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.ed-newtag{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.ed-newtag input{width:12ch;font-family:var(--mono)}.ed-error{color:var(--warn);font-size:12px;margin:0}.ed-tags{border-collapse:collapse;width:100%;font-size:12px}.ed-tags th{text-align:start;color:var(--muted);font-weight:500;padding:4px}.ed-tags td{padding:3px 4px;border-top:1px solid var(--border);vertical-align:middle}.ed-tags input{width:100%;min-width:7ch}.ed-tags td:first-child input{font-family:var(--mono)}.ed-tags input.bad{border-color:var(--warn)}.ed-count{font-size:10.5px;border-radius:999px;padding:0 6px;background:var(--border);color:var(--text)}.ed-count.bad{background:var(--bad, #ef4444);color:#fff}.ed-diags{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:12px}.ed-diags li.ok{color:var(--on)}.ed-diags button{width:100%;text-align:start;background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:6px 8px;color:var(--text);cursor:pointer;line-height:1.5}.ed-diags li.error b{color:var(--bad, #ef4444)}.ed-diags li.warning b{color:var(--warn)}.mode.labs-mode.active{background:#38bdf8;border-color:#38bdf8;color:#04202e}.labs{display:flex;flex-direction:column;gap:14px;max-width:1200px}.labs-head{color:#38bdf8}.labs-body{display:grid;grid-template-columns:280px minmax(0,1fr);gap:16px;align-items:start}@media(max-width:900px){.labs-body{grid-template-columns:1fr}}.labs-list{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:8px}.labs-list h3{font-size:12px;color:var(--muted);margin:10px 8px 4px}.labs-list ul{list-style:none;margin:0;padding:0}.labs-list button{width:100%;display:flex;justify-content:space-between;align-items:center;gap:8px;background:none;border:0;border-radius:8px;padding:7px 10px;color:var(--text);cursor:pointer;text-align:start;font-size:13.5px}.labs-list button:hover{background:var(--panel-2)}.labs-list button.active{background:#38bdf826;color:#38bdf8}.labs-list .ok{color:var(--on);flex:none}.lab-detail{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:16px 18px;display:flex;flex-direction:column;gap:10px}.lab-detail h2{margin:0;font-size:19px}.lab-detail h3{margin:8px 0 0;font-size:13px;color:var(--accent)}.lab-meta{display:flex;flex-wrap:wrap;gap:6px}.lab-chip{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;border:1px solid var(--border);border-radius:999px;padding:1px 9px;color:var(--muted)}.lab-goal{margin:0;line-height:1.8;font-size:14px;white-space:pre-line}.lab-test{background:var(--panel-2);border:1px solid var(--border);border-radius:9px;padding:8px 12px;font-size:13px}.lab-test ol{margin:4px 0 0;padding-inline-start:20px;line-height:1.8}.lab-detail>.btn.primary{align-self:flex-start}.lab-bar{background:var(--panel);border:1px solid #38bdf8;border-radius:12px;padding:10px 14px;display:flex;flex-direction:column;gap:8px}.lab-bar header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;color:#38bdf8}.lab-bar header b{color:var(--text);font-size:15px}.lab-bar header .btn.primary{margin-inline-start:auto}.lab-task p{margin:0;line-height:1.8;font-size:13.5px}.lab-hints{display:flex;flex-direction:column;gap:6px;margin-top:8px}.lab-hints p{color:var(--warn)}.lab-hints .btn{align-self:flex-start}.lab-grade{border-radius:10px;padding:10px 12px;border:1px solid var(--border);font-size:13px}.lab-grade.pass{border-color:var(--on);background:#22c55e12}.lab-grade.fail{border-color:var(--warn);background:#f59e0b0f}.lab-grade h4{margin:10px 0 4px;font-size:12.5px;color:var(--muted);display:flex;align-items:center;gap:5px}.lab-verdict{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.lab-grade.pass .lab-verdict{color:var(--on)}.lab-grade.fail .lab-verdict{color:var(--warn)}.lab-score{font-family:var(--mono);font-weight:700;font-size:15px}.lab-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px}.lab-list li{display:flex;align-items:baseline;gap:6px}.lab-list li.ok{color:var(--on)}.lab-list li.bad,.lab-list.bad li{color:var(--warn)}.lab-tutor{display:flex;flex-direction:column;gap:8px}.lab-tutor>.btn{align-self:flex-start}.lab-tutor-hint{border:1px solid rgba(56,189,248,.45);background:#38bdf812;border-radius:10px;padding:8px 12px;display:flex;flex-direction:column;gap:6px}.lab-tutor-hint p{margin:0;line-height:1.8;font-size:13.5px}.lab-tutor-hint .lab-chip{align-self:flex-start;color:#38bdf8;border-color:#38bdf880}.share{display:flex;flex-direction:column;gap:12px;max-width:1200px}.share-head{color:#38bdf8}.ed-link{font-family:var(--mono);font-size:11px;width:22ch;background:var(--bg-2);border:1px solid var(--border);border-radius:7px;padding:3px 6px;color:var(--text)}.pou-title.editable{cursor:pointer}.pou-title.editable:hover .pou-name{color:#a3e635}.mode.ref-mode.active{border-color:#a78bfa;color:#a78bfa}.ref-head{color:#a78bfa}.timing{background:var(--bg-2);border:1px solid var(--border);border-radius:10px;padding:6px;touch-action:none;cursor:col-resize}.timing svg{display:block;width:100%;height:auto;-webkit-user-select:none;user-select:none}.tm-grid{stroke:var(--border);stroke-width:1}.tm-tick{fill:var(--muted);font-size:10px;font-family:var(--mono)}.tm-name{fill:var(--text);font-size:11.5px;font-family:var(--mono)}.tm-value{fill:var(--accent);font-size:11px;font-family:var(--mono)}.tm-bool{fill:none;stroke:var(--on);stroke-width:2}.tm-num{fill:none;stroke:var(--warn);stroke-width:1.6}.tm-cursor{stroke:var(--accent);stroke-width:1.5;stroke-dasharray:4 3}.ref-scrub{display:flex;align-items:center;gap:10px;font-size:13px}.ref-scrub input{flex:1;min-width:0}.ref-ladder{overflow-x:auto;border:1px solid var(--border);border-radius:10px}.ref-note{border-inline-start:3px solid var(--warn);padding-inline-start:10px}.ref-actions{display:flex;flex-wrap:wrap;gap:8px}.ref-names td:first-child{color:var(--muted);width:120px}.catalog{display:flex;flex-direction:column;gap:8px}.cat-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.cat-levels{display:inline-flex;gap:2px;flex-wrap:wrap}.cat-levels small{color:var(--muted);margin-inline-start:3px}.cat-bar select{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:5px 8px}.cat-search{display:inline-flex;align-items:center;gap:6px;background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:3px 8px;color:var(--muted);flex:1 1 160px;max-width:280px}.cat-search input{background:none;border:0;outline:none;min-width:0;flex:1;color:var(--text)}.cat-count{color:var(--muted);font-size:12px}.cat-nav{display:inline-flex;gap:4px;margin-inline-start:auto}.cat-list{display:flex;flex-wrap:wrap;gap:8px;max-height:148px;overflow-y:auto;padding:2px}.ex-problem{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:8px 14px}.ex-problem summary{cursor:pointer;color:var(--accent);font-weight:600}.ex-problem p{margin:6px 0 2px;line-height:1.8;white-space:pre-line}.lab-task>p{white-space:pre-line}.review h4{display:flex;align-items:center;gap:6px;margin:12px 0 6px;font-size:13.5px}.rv-clean{color:var(--on);display:flex;align-items:center;gap:6px}.rv-engine{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.rv-engine li{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:12.5px;background:var(--panel-2);border-radius:8px;padding:6px 8px}.rv-engine li.error svg{color:var(--bad)}.rv-engine li.warning svg{color:var(--warn)}.rv-engine li span{flex:1 1 200px;min-width:0;overflow-wrap:anywhere}.rv-relay{display:flex;flex-direction:column;gap:6px}.rv-relay textarea{width:100%;background:var(--bg-2);border:1px solid var(--border);border-radius:8px;padding:6px 8px;font-size:12px}.rv-summary{line-height:1.8}.rv-finding{border:1px solid var(--border);border-inline-start:3px solid var(--muted);border-radius:10px;padding:8px 10px;margin-bottom:8px;background:var(--panel-2)}.rv-finding.error{border-inline-start-color:var(--bad)}.rv-finding.warning{border-inline-start-color:var(--warn)}.rv-finding header{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.rv-finding p{margin:6px 0;line-height:1.7}.rv-fix{border-top:1px dashed var(--border);margin-top:6px;padding-top:6px;display:flex;flex-direction:column;gap:4px;align-items:flex-start}.rv-fix.fixes small{color:var(--on)}.rv-fix.safe small{color:var(--accent)}.rv-rejected{color:var(--muted)}.rv-problems{font-size:12px;color:var(--muted)}.welcome{background:linear-gradient(135deg,#22d3ee1f,#a78bfa1a),var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;display:flex;flex-direction:column;gap:8px}.welcome header{display:flex;justify-content:space-between;align-items:center;gap:8px}.welcome h2{margin:0;font-size:18px}.welcome p{margin:0;line-height:1.8}.welcome-steps{list-style:none;margin:4px 0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px}.welcome-steps button{width:100%;height:100%;text-align:start;display:flex;flex-direction:column;gap:4px;background:var(--panel-2);border:1px solid var(--border);border-radius:10px;padding:10px 12px;cursor:pointer}.welcome-steps button:hover{border-color:var(--accent)}.welcome-steps svg{color:var(--accent)}.welcome-steps small{color:var(--muted);line-height:1.6}.modes{overflow-x:auto;scrollbar-width:thin}.mode{flex-shrink:0}.cat-list .ex{flex:0 1 auto;max-width:100%;min-width:0}.cat-list .ex b{overflow-wrap:anywhere}.labs-list button span{min-width:0;overflow-wrap:anywhere}@media(max-width:600px){.labs-list{max-height:240px;overflow-y:auto}}@media(max-width:900px){.labs-body{grid-template-columns:minmax(0,1fr)}}.lab-detail pre.code{overflow-x:auto;max-width:100%}.boot-notice{margin:20vh auto 0;max-width:40rem;padding:0 16px;text-align:center;color:var(--muted, #94a3b8);font-size:1rem}.report-backdrop{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:16px;background:#020610b8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.report-box{width:min(520px,100%);max-height:calc(100vh - 32px);overflow:auto;padding:18px 20px;border-radius:var(--radius);background:var(--panel);border:1px solid var(--border);box-shadow:0 24px 60px #00000080}.report-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.report-head h2{margin:0;font-size:1.1rem}.report-about,.report-note{color:var(--muted);font-size:.85rem;margin:10px 0}.report-about b{color:var(--text)}.report-kinds{border:0;padding:0;margin:8px 0 12px;display:grid;gap:6px}.report-kinds label{display:flex;align-items:center;gap:8px;cursor:pointer}.report-box textarea,.report-contact input{width:100%;padding:10px 12px;border-radius:10px;background:var(--bg-2);border:1px solid var(--border)}.report-box textarea{resize:vertical;min-height:110px}.report-contact{display:grid;gap:4px;margin-top:10px;font-size:.85rem;color:var(--muted)}.report-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}.report-ok{margin:16px 0;color:var(--on)}.report-err{margin:8px 0 0;color:var(--bad);font-size:.88rem}@media(max-width:700px){.report-label{display:none}}.cert-result{display:flex;align-items:center;gap:6px;margin:8px 0 0;padding:8px 10px;border-radius:8px;font-size:13px}.cert-result.ok{background:#22c55e1f;color:#86efac}.cert-result.bad{background:#fbbf241a;color:#fcd34d}.practice{display:flex;flex-direction:column;gap:14px}.practice-head h2{margin:0 0 4px}.practice-filters{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.practice-timed{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:13px}.practice-score{margin-inline-start:auto;color:var(--muted);font-size:13px}.practice-card{background:var(--panel, #0f1729);border:1px solid rgba(148,163,184,.18);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:10px}.practice-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.practice-summary{margin:0;color:var(--muted)}.practice-diagram{max-height:420px;overflow:auto}.practice-card h3{margin:6px 0 0;font-size:15px}.practice-steps{margin:0;padding-inline-start:22px;display:grid;gap:3px;font-size:14px}.practice-options{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.practice-option{display:flex;gap:10px;align-items:center;text-align:start;padding:10px 12px;border-radius:10px;border:1px solid rgba(148,163,184,.25);background:#0f172999;color:inherit;cursor:pointer;font:inherit}.practice-option:hover:not(:disabled){border-color:var(--accent, #22d3ee)}.practice-option b{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:#94a3b826;flex:none}.practice-option.right{border-color:#22c55e;background:#22c55e1f}.practice-option.wrong{border-color:#f87171;background:#f871711a}.practice-option:disabled{cursor:default}.practice-clock{display:inline-flex;align-items:center;gap:4px;margin-inline-start:auto;font-variant-numeric:tabular-nums;color:#fbbf24}.practice-clock.low{color:#f87171}.practice-trace{border-collapse:collapse;font-size:13px;width:max-content}.practice-trace th,.practice-trace td{padding:4px 10px;border-bottom:1px solid rgba(148,163,184,.15);text-align:center}.practice-trace td.on{color:#22c55e;font-weight:600}.practice-trace td.off{color:var(--muted)}.exam-start{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 14px;border-radius:12px;border:1px solid rgba(251,191,36,.35);background:#fbbf240f}.exam-start>div{flex:1;min-width:220px}.exam-start p{margin:2px 0 0}.exam-card{border-color:#fbbf2459}.courses{display:flex;flex-direction:column;gap:14px;margin-bottom:22px}.courses-head{display:flex;gap:10px;align-items:flex-start}.courses-head h2{margin:0}.programs{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.program{display:flex;flex-direction:column;gap:4px;padding:12px;border-radius:12px;border:1px solid rgba(251,191,36,.3);background:#fbbf240d}.program small{color:var(--muted)}.program-count{font-size:12px;color:#fbbf24}.tier-title{margin:6px 0 0;font-size:15px;color:var(--muted)}.course-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.course{display:flex;flex-direction:column;gap:6px;padding:14px;border-radius:12px;border:1px solid rgba(148,163,184,.18);background:var(--panel, #0f1729)}.course.planned{opacity:.7}.course h3{margin:0;font-size:15px}.course-head{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.course-summary{margin:0;color:var(--muted);font-size:13px}.course-counts{display:flex;flex-wrap:wrap;gap:10px;font-size:12.5px;color:var(--muted)}.course-counts span{display:inline-flex;align-items:center;gap:4px}.pill.tier1{background:#22c55e26;color:#86efac}.pill.tier2{background:#22d3ee1f;color:#67e8f9}.pill.tier3{background:#94a3b826;color:#cbd5e1}.course-body h4{margin:8px 0 4px;font-size:13px;color:var(--muted)}.course-body ul{margin:0;padding:0;list-style:none;display:grid;gap:3px}.course-body .link{background:none;border:none;color:inherit;padding:2px 0;cursor:pointer;text-align:start;font:inherit;font-size:13px;display:inline-flex;gap:6px;align-items:center}.course-body .link:hover{color:var(--accent, #22d3ee)}.practice-statement{margin:0;font-size:15px;line-height:1.7}.calc-reply{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.calc-reply input{width:160px;padding:8px 10px;border-radius:8px;border:1px solid rgba(148,163,184,.3);background:#0f172999;color:inherit;font:inherit;font-variant-numeric:tabular-nums}.reading{max-width:760px;display:flex;flex-direction:column;gap:10px;line-height:1.75;font-size:15.5px}.reading-head{display:flex;gap:10px;align-items:flex-start}.reading-head h2{margin:0}.reading-head small{color:var(--muted)}.reading h3{margin:12px 0 0;font-size:17px}.reading p{margin:0}.reading ul{margin:0;padding-inline-start:22px;display:grid;gap:4px}.reading code{background:#94a3b826;padding:1px 5px;border-radius:4px;font-size:.92em}.reading-further{margin-top:10px;padding-top:10px;border-top:1px solid rgba(148,163,184,.2);font-size:14px;color:var(--muted)}.share-panel{display:flex;flex-direction:column;gap:6px;margin:10px 0 4px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--panel-2)}.share-title{display:inline-flex;align-items:center;gap:6px;font-weight:600;font-size:13px}.share-channels{display:flex;flex-wrap:wrap;gap:6px}.share-channels a.btn{text-decoration:none}.ai-progress{display:flex;align-items:center;gap:14px;margin:10px 0;padding:10px 14px;border:1px solid var(--border);border-radius:12px;background:var(--panel-2)}.ai-progress-body{flex:1;display:flex;flex-direction:column;gap:6px;min-width:0}.ai-progress-label{font-weight:600}.ai-progress-bar{position:relative;height:6px;border-radius:3px;overflow:hidden;background:color-mix(in srgb,#22c55e 15%,transparent)}.ai-progress-bar span{position:absolute;inset:0 auto 0 0;width:35%;border-radius:3px;background:linear-gradient(90deg,#22c55e,#fbbf24);animation:ai-bar 1.6s ease-in-out infinite}@keyframes ai-bar{0%{left:-35%}to{left:100%}}.am .am-ct,.am .am-cap,.am .am-f2,.am .am-f3,.am .am-coil,.am .am-lamp,.am .am-rr{animation-duration:2.4s;animation-iteration-count:infinite}.am .am-ct{animation-name:am-ct}.am .am-cl{animation-name:am-ct,am-pl}.am .am-cr{animation-name:am-ct,am-pr}.am .am-cap{animation-name:am-cap}.am .am-f2{animation-name:am-f2}.am .am-f3{animation-name:am-f3}.am .am-coil{animation-name:am-coil}.am .am-lamp{animation-name:am-lamp}.am .am-rr{animation-name:am-rr}@keyframes am-ct{0%,16%{stroke:#33415c}19%,80%{stroke:#22c55e}83%,to{stroke:#33415c}}@keyframes am-pl{0%,16%{transform:translate(0)}19%,80%{transform:translate(1.6px)}83%,to{transform:translate(0)}}@keyframes am-pr{0%,16%{transform:translate(0)}19%,80%{transform:translate(-1.6px)}83%,to{transform:translate(0)}}@keyframes am-cap{0%,16%{opacity:0}19%,80%{opacity:.2}83%,to{opacity:0}}@keyframes am-f2{0%,19%{stroke-dashoffset:1;opacity:1}31%,80%{stroke-dashoffset:0;opacity:1}83%,to{stroke-dashoffset:0;opacity:0}}@keyframes am-f3{0%,33%{stroke-dashoffset:1;opacity:1}38%,80%{stroke-dashoffset:0;opacity:1}83%,to{stroke-dashoffset:0;opacity:0}}@keyframes am-coil{0%,31%{stroke:#33415c}33%,80%{stroke:#fbbf24}83%,to{stroke:#33415c}}@keyframes am-lamp{0%,31%{opacity:0}34%{opacity:.95}42%,80%{opacity:.85}83%,to{opacity:0}}@keyframes am-rr{0%,37%{stroke:#33415c}39%,80%{stroke:#22c55e}83%,to{stroke:#33415c}}@media(prefers-reduced-motion:reduce){.am *,.ai-progress-bar span{animation:none!important}.am .am-ct,.am .am-rr{stroke:#22c55e}.am .am-coil{stroke:#fbbf24}.am .am-lamp{opacity:.85}.am .am-f2,.am .am-f3{stroke-dashoffset:0}.ai-progress-bar span{width:100%;left:0}}.view-switch{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 8px}.view-switch .chip,.gen-lang .chip{cursor:pointer;font-size:13px;padding:4px 12px}.view-switch .chip.active,.gen-lang .chip.active{border-color:var(--accent);color:var(--accent);background:#22d3ee1a}.gen-lang{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 0}.gen-lang input{position:absolute;opacity:0;pointer-events:none}.gen-lang .chip:has(input:disabled){cursor:default;opacity:.7}.gen-lang .hint{flex-basis:100%}.fbd-net{border-bottom:1px dashed var(--border);padding:8px 0 10px}.fbd-head{display:flex;gap:8px;align-items:baseline;font-size:12px;color:var(--muted);margin-bottom:4px}.fbd-pou-name{margin:10px 0 4px;color:var(--accent)}.fbd svg{display:block;overflow:visible}.fbd-label{font:600 12px var(--mono)}.fbd-var.press{cursor:pointer}.fbd-box{fill:var(--panel);stroke-width:1.5}.fbd-box.gate{fill:#13213a}.fbd-op{font:800 13px var(--mono);fill:var(--text)}.fbd-title{font:700 11px var(--mono);fill:var(--accent)}.fbd-pin{font:10px var(--mono);fill:var(--muted)}.fbd-target{font:700 12px var(--mono)}.fbd-sub{font:10px var(--mono);fill:var(--muted)}.st-view .st-bar{display:flex;gap:8px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-bottom:8px}.st-code{margin:0;font:13px/1.55 var(--mono);white-space:pre;overflow:auto}.st-line{display:flex;gap:12px}.st-no{color:#475569;min-width:2.5em;text-align:right;-webkit-user-select:none;user-select:none;flex:0 0 auto}.st-kw{color:#c084fc;font-weight:700}.st-type{color:#38bdf8}.st-lit{color:#fbbf24}.st-comment{color:#64748b;font-style:italic}.st-var{color:var(--text)}.st-var.on{font-weight:700;text-shadow:0 0 8px rgba(34,197,94,.45)}.st-val{font-size:10px;color:#fbbf24;margin-inline-start:2px}.st-edit{width:100%;min-height:420px;background:#0a1222;color:var(--text);border:1px solid var(--border);border-radius:8px;padding:10px;font:13px/1.5 var(--mono);resize:vertical;tab-size:4}.st-errors{border:1px solid var(--bad);border-radius:8px;padding:8px 10px;margin-bottom:8px;color:#fca5a5}.st-errors ul{margin:6px 0 0;padding-inline-start:18px}.gen-target{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 12px}.gen-target .hint{flex-basis:100%}.st-ok{color:var(--on);font-size:13px}.app.embed .topbar,.app.embed .modes,.app.embed .catalog,.app.embed .welcome,.app.embed .share-panel,.app.embed .ex-problem,.app.embed .summary,.app.embed .side,.app.embed .diag-bar{display:none!important}.app.embed .workspace{grid-template-columns:1fr}.app.embed .canvas{max-height:420px}.embed-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:6px 4px 10px}.embed-bar a{color:var(--accent);text-decoration:none;font-size:13px}.tank-svg{flex:0 0 auto}.tank-shell{fill:#0a1222;stroke:#64748b;stroke-width:2}.tank-liquid{fill:#38bdf88c}.tank-liquid.alarm{fill:#ef44448c}.tank-pct{font:800 18px var(--mono);fill:var(--text)}.tank-tick{stroke:#94a3b8}.tank-switch{font:10px var(--mono);fill:var(--muted)}.tank-stage .pipe path{fill:none;stroke:#334155;stroke-width:5;stroke-linejoin:round}.tank-stage .pipe.on path{stroke:#38bdf8}.tank-stage .pipe text{font:9px var(--mono);fill:var(--muted)}.tank-display{font-size:22px}.tank-display small{font-size:11px;color:var(--muted)}.gen-head-actions{display:flex;gap:6px;align-items:flex-start;flex-wrap:wrap}.my-progs{border:1px solid var(--border);border-radius:10px;padding:12px 14px;margin:10px 0 14px;background:var(--panel)}.my-progs>header{display:flex;gap:10px;align-items:flex-start}.my-progs>header>div{flex:1}.my-progs h3{margin:0 0 2px;font-size:15px}.my-progs-list{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:8px}.my-progs-list>li{display:flex;gap:10px;justify-content:space-between;align-items:center;flex-wrap:wrap;border:1px solid var(--border);border-radius:8px;padding:8px 10px}.my-progs-list>li.current{border-color:var(--accent)}.my-progs-main{display:grid;gap:4px;min-width:0;flex:1 1 260px}.my-progs-main b{overflow-wrap:anywhere}.my-progs-meta{display:flex;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--muted)}.my-progs-actions{display:flex;gap:6px;flex-wrap:wrap}.my-progs-verdict{display:inline-flex;gap:4px;align-items:center;font-size:12px}.my-progs-verdict.ok{color:var(--on)}.my-progs-verdict.bad{color:var(--bad)}.my-progs-verdict.unchecked{color:var(--muted)}.my-progs-rename{display:flex;gap:6px;flex-wrap:wrap}.my-progs-rename input{flex:1 1 200px;min-width:0}.my-progs-problem{color:var(--bad)}.gen-saved{display:flex;gap:6px;align-items:center;font-size:13px;color:var(--muted)}button.linklike{background:none;border:0;padding:0;color:var(--accent);text-decoration:underline;cursor:pointer;font:inherit}.btn.active{border-color:var(--accent);color:var(--accent)}.assess-page{max-width:980px;margin:0 auto;padding:24px 16px 40px;min-height:100vh}.assess-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:28px;max-width:680px;margin:6vh auto 0}.assess-card.done{border-color:#22c55e80}.assess-card h1{margin:4px 0 6px;font-size:26px}.assess-brand{margin:0;font:800 12px var(--mono);letter-spacing:.12em;color:var(--accent);text-transform:uppercase}.assess-org{color:var(--muted);margin:0 0 14px}.assess-facts{display:flex;gap:18px;flex-wrap:wrap;margin:12px 0;color:var(--muted)}.assess-facts span{display:inline-flex;gap:6px;align-items:center}.assess-rules{line-height:1.7;padding-inline-start:20px}.assess-consent{display:flex;gap:10px;align-items:flex-start;margin:16px 0;padding:12px;border:1px solid var(--border);border-radius:8px;background:var(--bg-2)}.assess-consent input{margin-top:4px}.btn.big{padding:10px 18px;font-size:15px}.assess-page.running{-webkit-user-select:none;user-select:none}.assess-bar{position:sticky;top:0;z-index:2;display:flex;gap:14px;align-items:center;padding:10px 0;background:var(--bg)}.assess-progress{flex:1;height:6px;border-radius:3px;background:var(--panel-2);overflow:hidden}.assess-progress span{display:block;height:100%;background:var(--accent)}.assess-clock{display:inline-flex;gap:6px;align-items:center;font:700 15px var(--mono)}.assess-clock.low{color:var(--bad)}.assess-item-clock{position:relative;height:22px;border-radius:6px;background:var(--panel-2);overflow:hidden;margin-bottom:12px}.assess-item-clock>span{display:block;height:100%;background:#22d3ee59;transition:width .25s linear}.assess-item-clock>span.low{background:#ef444473}.assess-item-clock em{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:4px;font:700 12px var(--mono);font-style:normal}.assess-item{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.assess-skill{margin:0 0 8px;color:var(--accent);font-size:12px;font-weight:700}.assess-listing{max-height:360px;overflow:auto;background:var(--bg-2);border-radius:8px;padding:10px}.assess-io{border-collapse:collapse;margin:10px 0;font-size:13px}.assess-io th,.assess-io td{border-bottom:1px solid var(--border);padding:4px 10px;text-align:start}.assess-symptom{padding:10px 12px;border-inline-start:3px solid #f59e0b;background:#f59e0b14;border-radius:6px}.practice-option.chosen{border-color:var(--accent);background:#22d3ee1f}.assess-foot{color:var(--muted);font-size:12px;text-align:center}.employer{max-width:1100px}.employer-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.employer-head h2{margin:4px 0}.employer-credits{font-size:13px;padding:6px 12px}.employer-hero{background:linear-gradient(135deg,#22d3ee1f,#a78bfa1a);border:1px solid var(--border);border-radius:var(--radius);padding:20px 24px;margin-bottom:14px}.employer-hero ul{line-height:1.8}.employer-templates{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}.employer-template{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:14px;display:flex;flex-direction:column;gap:8px}.employer-template.active{border-color:var(--accent)}.employer-template h4,.employer-assessment h4{margin:0;display:flex;gap:6px;align-items:center}.employer-template p{margin:0}.employer-skills{display:flex;flex-wrap:wrap;gap:4px}.employer-form{display:flex;flex-direction:column;gap:8px}.employer-form.row{flex-direction:row;flex-wrap:wrap;align-items:flex-end}.employer-assessment{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:14px;margin-bottom:12px}.employer-assessment header{margin-bottom:10px}.employer-link{margin-top:8px;display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px;border:1px dashed var(--accent);border-radius:8px}.employer-link code{word-break:break-all}.employer-table{width:100%;border-collapse:collapse;margin-top:10px;font-size:13px}.employer-table th,.employer-table td{text-align:start;padding:6px 8px;border-bottom:1px solid var(--border)}.employer-table td small{display:block;color:var(--muted)}.chip.status-completed{color:var(--on)}.chip.status-started{color:var(--accent)}.chip.status-expired,.chip.status-revoked{color:var(--bad)}.band{font-weight:700}.band-strong{color:#22c55e}.band-competent{color:#38bdf8}.band-developing{color:#f59e0b}.band-below{color:#ef4444}.employer-note{margin-top:16px}.report-wrap{max-width:820px;margin:0 auto}.report-sheet{background:#fff;color:#0f172a;border-radius:10px;padding:32px 36px;margin-top:12px}.report-sheet .hint{color:#475569}.report-sheet h3{margin:20px 0 8px;border-bottom:1px solid #e2e8f0;padding-bottom:4px}.report-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;border-bottom:3px solid #0e7490;padding-bottom:12px}.report-head h2{margin:4px 0}.report-score{text-align:center;min-width:140px}.report-score b{display:block;font:800 40px var(--mono)}.report-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px 20px;margin:16px 0}.report-facts dt{font-size:12px;color:#64748b}.report-facts dd{margin:2px 0 0;font-weight:600}.assess-card .report-facts dt{color:var(--muted)}.report-skill{display:grid;grid-template-columns:minmax(160px,1.2fr) 2fr 56px;gap:10px;align-items:center;margin:6px 0}.report-bar{height:10px;border-radius:5px;background:#e2e8f0;overflow:hidden}.report-bar span{display:block;height:100%}.report-bar span.band-strong{background:#22c55e}.report-bar span.band-competent{background:#38bdf8}.report-bar span.band-developing{background:#f59e0b}.report-bar span.band-below{background:#ef4444}.report-signals{margin:0;padding-inline-start:20px}.report-foot{display:flex;gap:16px;align-items:center;margin-top:22px;border-top:1px solid #e2e8f0;padding-top:14px}.report-foot p{margin:2px 0}@media print{body{background:#fff!important}.no-print,.topbar,.modes,.diag-bar{display:none!important}.report-sheet{padding:0;margin:0}}@media(max-width:640px){.report-skill{grid-template-columns:1fr 56px}.report-bar{grid-column:1 / -1;order:3}.assess-card{padding:18px}}.conveyor-svg{flex:1 1 320px;min-width:0}.conveyor-svg .belt{fill:#334155}.conveyor-svg .belt.running{fill:#475569;stroke:var(--on);stroke-dasharray:6 6}.conveyor-svg .roller{fill:#1e293b;stroke:#64748b;stroke-width:2}.conveyor-svg .beam{stroke:#475569;stroke-width:1.5;stroke-dasharray:3 3}.conveyor-svg .beam.on{stroke:#f43f5e;stroke-dasharray:none}.conveyor-svg .box{fill:#d6a36a;stroke:#8a5a2b}.conveyor-svg .box.bad{fill:#f87171;stroke:#991b1b}.conveyor-svg .pusher{fill:#64748b}.conveyor-svg .pusher.on{fill:var(--accent)}.conveyor-counts{display:flex;gap:14px;flex-wrap:wrap}.assess-code{min-height:300px;-webkit-user-select:text;user-select:text}.report-code{background:#f1f5f9;color:#0f172a;border-radius:6px;padding:10px;font:12px/1.5 var(--mono);white-space:pre-wrap;max-height:420px;overflow:auto}@media print{.report-code{max-height:none;overflow:visible}}
