@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:optional;src:url(/fonts/ibm-plex-mono-400.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:optional;src:url(/fonts/ibm-plex-mono-500.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:optional;src:url(/fonts/ibm-plex-mono-600.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-display:optional;src:url(/fonts/ibm-plex-sans-400.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-display:optional;src:url(/fonts/ibm-plex-sans-500.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-display:optional;src:url(/fonts/ibm-plex-sans-600.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-display:optional;src:url(/fonts/ibm-plex-sans-700.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Lilita One;font-style:normal;font-weight:400;font-display:optional;src:url(/fonts/lilita-one-400.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper: #171e2c;--paper-deep: #1f293b;--paper-card: #293448;--paper-inset: #121824;--display-body: #141821;--display-off: rgba(128, 140, 160, .13);--grid-minor: rgba(125, 155, 215, .055);--grid-major: rgba(125, 155, 215, .11);--grid-dots: rgba(125, 155, 215, .17);--ink: #e9edf6;--ink-soft: #9aa6be;--ink-faint: #8792ac;--edge: rgba(150, 170, 210, .1);--edge-strong: rgba(150, 170, 210, .19);--gold: #ffd25a;--accent: #8b86ff;--accent-btn: #5747c9;--accent-btn-hover: #6c5ce7;--accent-deep: #6c63ff;--accent-soft: rgba(139, 134, 255, .16);--accent-ghost: rgba(139, 134, 255, .13);--accent-line: rgba(139, 134, 255, .42);--hi: #37d99a;--hi-soft: rgba(55, 217, 154, .15);--hi-glow: rgba(55, 217, 154, .55);--lo: #5b6883;--float: #3bc4f2;--float-soft: rgba(59, 196, 242, .15);--float-glow: rgba(59, 196, 242, .5);--short: #fb6a6a;--short-soft: rgba(251, 106, 106, .16);--short-glow: rgba(251, 106, 106, .55);--osc: #fbbf3b;--osc-soft: rgba(251, 191, 59, .16);--osc-glow: rgba(251, 191, 59, .5);--pin: #8f9bb4;--font-ui: "IBM Plex Sans", "Segoe UI", system-ui, sans-serif;--font-display: "Lilita One", "Arial Rounded MT Bold", var(--font-ui);--font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--shadow-card: 0 1px 2px rgba(0, 0, 0, .3), 0 8px 24px rgba(0, 0, 0, .42);--shadow-pop: 0 4px 12px rgba(0, 0, 0, .45), 0 20px 56px rgba(0, 0, 0, .58);--dur-fast: .12s;--dur: .17s;--dur-slow: .22s;--ease: cubic-bezier(.4, 0, .2, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-spring: cubic-bezier(.34, 1.4, .64, 1)}:root[data-theme=light]{--paper: #e9edf4;--paper-deep: #dde3ed;--paper-card: #f7f9fd;--paper-inset: #d6dde9;--display-body: #dbe1ec;--display-off: rgba(74, 85, 104, .22);--grid-minor: rgba(70, 100, 165, .1);--grid-major: rgba(70, 100, 165, .18);--grid-dots: rgba(70, 100, 165, .24);--ink: #1b2335;--ink-soft: #586079;--ink-faint: #565d74;--edge: rgba(40, 55, 90, .12);--edge-strong: rgba(40, 55, 90, .2);--gold: #8f6700;--accent: #6c5ce7;--accent-btn: #6c5ce7;--accent-btn-hover: #5747c9;--accent-deep: #5747c9;--accent-soft: rgba(108, 92, 231, .12);--accent-ghost: rgba(108, 92, 231, .1);--accent-line: rgba(108, 92, 231, .4);--hi: #0f9d4f;--hi-soft: rgba(15, 157, 79, .13);--hi-glow: rgba(15, 157, 79, .4);--lo: #9aa1b4;--float: #1f8fd6;--float-soft: rgba(31, 143, 214, .13);--float-glow: rgba(31, 143, 214, .4);--short: #e5484d;--short-soft: rgba(229, 72, 77, .12);--short-glow: rgba(229, 72, 77, .45);--osc: #d9870c;--osc-soft: rgba(217, 135, 12, .14);--osc-glow: rgba(217, 135, 12, .4);--pin: #5a6480;--shadow-card: 0 1px 2px rgba(30, 40, 70, .08), 0 8px 24px rgba(30, 40, 70, .1);--shadow-pop: 0 4px 12px rgba(30, 40, 70, .12), 0 20px 56px rgba(30, 40, 70, .18)}*{box-sizing:border-box}body,#toolbar,#palette,#statusbar,#canvas-wrap{transition:background-color var(--dur-slow) var(--ease),border-color var(--dur-slow) var(--ease)}[hidden]{display:none!important}html,body,#app{margin:0;padding:0;height:100%;background:var(--paper-deep);color:var(--ink);font-family:var(--font-ui);font-size:13.5px;overflow:hidden}::selection{background:var(--accent-soft);color:var(--accent-deep)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}*{scrollbar-width:thin;scrollbar-color:var(--edge-strong) transparent}*::-webkit-scrollbar{width:11px;height:11px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:var(--edge-strong);border-radius:7px;border:3px solid transparent;background-clip:padding-box}*::-webkit-scrollbar-thumb:hover{background:var(--ink-faint);background-clip:padding-box}*::-webkit-scrollbar-corner{background:transparent}#app{display:grid;grid-template-columns:236px 1fr;grid-template-rows:56px 1fr 30px;grid-template-areas:"tool tool" "pal canvas" "status status";height:100vh}#toolbar{grid-area:tool;display:flex;align-items:center;gap:7px;padding:0 10px;background:var(--paper-deep);border-bottom:1px solid var(--edge-strong);position:relative;z-index:10;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:var(--edge-strong) transparent}#toolbar>*{flex:0 0 auto}.brand-block{display:flex;align-items:center;gap:7px;user-select:none}.brand-logo{width:26px;height:20px;stroke:var(--accent);stroke-width:2;fill:none;stroke-linejoin:round;stroke-linecap:round}.brand{font-family:var(--font-display);font-size:18px;letter-spacing:.02em;color:var(--ink);line-height:1;padding-top:2px}.brand em{font-style:normal;color:var(--accent)}#circuits-host{display:flex;flex-direction:column;gap:4px;padding:10px 10px 8px;border-bottom:1px solid var(--edge)}.circuits-head{display:flex;align-items:center;justify-content:space-between}.circuits-title{font-family:var(--font-display);font-weight:400;font-size:12px;letter-spacing:.05em;color:var(--accent-deep)}.circuit-name{font-family:var(--font-mono);font-size:13px;font-weight:600;text-align:left;color:var(--ink);background:var(--paper);border:1px dashed var(--edge-strong);border-radius:8px;padding:7px 10px;cursor:pointer;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:border-color var(--dur-fast) var(--ease)}.circuit-name:hover{border-color:var(--accent-line)}.circuit-name:after{content:" ✎";color:var(--ink-faint);font-size:11px}.circuits-list{display:flex;flex-direction:column;gap:2px}.circuits-row{display:flex;align-items:center;gap:8px;border:none;background:transparent;color:var(--ink-soft);font:inherit;font-size:12.5px;text-align:left;padding:5px 8px;border-radius:7px;cursor:pointer;min-width:0}.circuits-row:hover{background:var(--paper);color:var(--ink)}.circuits-row.active{color:var(--ink);background:var(--accent-soft)}.circuits-dot{width:6px;height:6px;border-radius:50%;background:var(--edge-strong);flex:0 0 auto}.circuits-row.active .circuits-dot{background:var(--accent)}.circuits-row-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.circuits-foot{display:flex;gap:6px;margin-top:3px}.circuits-foot-btn{border:1px solid var(--edge);background:transparent;color:var(--ink-soft);font:inherit;font-size:11.5px;padding:3px 9px;border-radius:999px;cursor:pointer}.circuits-foot-btn:hover{color:var(--ink);border-color:var(--accent-line)}.circuits-nudge{border:1px dashed var(--edge-strong);background:transparent;color:var(--ink-soft);font:inherit;font-size:12px;text-align:left;padding:7px 10px;border-radius:8px;cursor:pointer}.circuits-nudge:hover{color:var(--accent);border-color:var(--accent-line)}button{font:inherit;color:var(--ink);cursor:pointer}#toolbar button,.signals-add{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;color:var(--ink-soft);background:transparent;border:1px solid transparent;border-radius:9px;padding:6px 8px;transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}#toolbar button svg{width:16px;height:16px;stroke:currentColor;stroke-width:1.7;fill:none;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}#toolbar button:hover:not(:disabled){background:var(--paper-card);border-color:var(--edge);color:var(--ink)}#toolbar button:active:not(:disabled){background:var(--paper-inset)}#toolbar button:disabled{opacity:.38;cursor:not-allowed}#toolbar kbd{font-family:var(--font-mono);font-size:9.5px;color:var(--ink-faint);border:1px solid var(--edge);border-radius:4px;padding:0 4px;line-height:14px;background:var(--paper-inset)}.btn-group{display:flex;align-items:center;gap:4px}.btn-group+.btn-group{border-left:1px solid var(--edge-strong);padding-left:7px}.icon-btn{padding:6px 8px!important}.btn-group.compact .btn-label,#btn-truth .btn-label,#btn-wave .btn-label,.sim-group .btn-label{display:none}.tool-seg kbd{display:inline-block;font-family:var(--font-mono);font-size:9px;line-height:1;padding:2px 4px;margin-left:3px;border:1px solid var(--edge-strong);border-bottom-width:2px;border-radius:4px;background:var(--paper-inset);color:var(--ink-faint)}.tool-seg .tool-btn.active kbd{color:var(--accent-deep);border-color:var(--accent-line)}#toolbar #file-group,#toolbar #btn-export{display:none}.tool-seg{display:flex;gap:4px;background:var(--paper-inset);border:1px solid var(--edge-strong);border-radius:12px;padding:3px;margin-right:4px}#toolbar .tool-seg .tool-btn{border:1px solid transparent;background:transparent;box-shadow:none;border-radius:9px;padding:5px 9px}#toolbar .tool-seg .tool-btn:hover:not(.active){background:var(--paper-card);transform:none;box-shadow:none}#toolbar .tool-seg .tool-btn.active{background:var(--accent-soft);color:var(--ink);box-shadow:inset 0 0 0 1px var(--accent-line)}#toolbar .tool-seg .tool-btn.active svg{color:var(--accent)}#toolbar .tool-seg .tool-btn.active:hover{background:var(--accent-soft)}#toolbar .tool-seg .tool-btn.active kbd{color:var(--accent);border-color:var(--accent-line);background:var(--accent-ghost)}#toolbar .tool-seg #btn-tool-delete.active{background:var(--short-soft);color:var(--short);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--short) 45%,transparent)}#toolbar .tool-seg #btn-tool-delete.active svg{color:var(--short)}.special-btn{color:var(--accent)!important;border-color:var(--accent-line)!important;background:var(--accent-soft)!important}.special-btn:hover:not(:disabled){background:var(--accent-ghost)!important;border-color:var(--accent)!important;color:var(--accent)!important}#btn-clock .ic-stop,#btn-clock.running .ic-play{display:none}#btn-clock.running .ic-stop{display:inline}#btn-clock.running{background:var(--hi-soft);border-color:color-mix(in srgb,var(--hi) 45%,transparent);color:var(--hi)}#btn-help{font-family:var(--font-mono);font-size:14px;color:var(--ink-soft);padding:5px 12px!important;position:sticky;right:8px;background:var(--paper-deep);box-shadow:-14px 0 14px -6px var(--paper-deep);z-index:2}#btn-help:hover{background:var(--paper-card);color:var(--ink)!important;border-color:var(--edge)}#btn-account{font-family:var(--font-ui);font-size:12.5px;font-weight:600;padding:6px 15px!important;color:#fff!important;background:var(--accent-deep)!important;border-color:transparent!important;white-space:nowrap}#btn-account:hover:not(:disabled){background:var(--accent)!important;color:#fff!important}#btn-account.signed-in{color:var(--ink)!important;background:var(--paper-card)!important;border-color:var(--edge)!important;font-weight:600}#btn-account.signed-in:hover:not(:disabled){background:var(--paper-inset)!important;color:var(--ink)!important}#btn-account.unverified:after{content:"";display:inline-block;width:6px;height:6px;margin-left:6px;border-radius:50%;background:var(--osc);vertical-align:middle}.account-menu{position:fixed;z-index:50;min-width:150px;display:flex;flex-direction:column;background:var(--paper);border:1px solid var(--edge);border-radius:10px;box-shadow:var(--shadow-card);overflow:hidden;transform-origin:top right;opacity:0;transform:translateY(-6px) scale(.96);transition:opacity var(--dur-fast) var(--ease-out),transform var(--dur) var(--ease-spring)}.account-menu.open{opacity:1;transform:translateY(0) scale(1)}.account-menu.closing{opacity:0;transform:translateY(-5px) scale(.97);transition:opacity var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}.account-menu-email{padding:8px 12px;font-size:11px;color:var(--ink-soft);border-bottom:1px solid var(--edge);word-break:break-all}.account-menu-status{padding:6px 12px;font-size:11px;font-weight:600;color:var(--accent);border-bottom:1px solid var(--edge)}.account-menu-item{border:none;background:transparent;text-align:left;padding:9px 12px;font-size:13px;color:var(--ink);cursor:pointer}.account-menu-item:hover{background:var(--paper-deep)}.sim-status{position:absolute;left:14px;bottom:14px;z-index:5;display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:12px;font-weight:600;letter-spacing:.02em;color:var(--ink-soft);padding:8px 14px;border-radius:999px;background:color-mix(in srgb,var(--paper-card) 88%,transparent);backdrop-filter:blur(6px);border:1px solid var(--edge-strong);box-shadow:0 2px 10px #0000002e;white-space:nowrap;pointer-events:auto;cursor:help}.sim-status:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--ink-faint);flex:0 0 auto}.sim-status.running{color:var(--hi);border-color:color-mix(in srgb,var(--hi) 35%,transparent)}.sim-status.running:before{background:var(--hi);box-shadow:0 0 6px color-mix(in srgb,var(--hi) 70%,transparent)}.sim-status.short{color:var(--short);border-color:color-mix(in srgb,var(--short) 45%,transparent)}.sim-status.short:before{background:var(--short);animation:status-blink 1s steps(2,start) infinite}.sim-status.osc{color:var(--osc);border-color:color-mix(in srgb,var(--osc) 40%,transparent)}.sim-status.osc:before{background:var(--osc)}.sim-status.floating{color:var(--float);border-color:color-mix(in srgb,var(--float) 45%,transparent)}.sim-status.floating:before{background:var(--float)}.sim-status.short,.sim-status.osc,.sim-status.floating{cursor:pointer}.sim-status.short:hover,.sim-status.osc:hover,.sim-status.floating:hover{filter:brightness(1.08)}.component.conducting .mos-channel{stroke:var(--accent);stroke-width:2.8;filter:drop-shadow(0 0 3px var(--accent));transition:stroke .1s ease}.net-value-tip{position:fixed;top:0;left:0;z-index:40;min-width:18px;padding:2px 6px;border-radius:6px;font-family:var(--font-mono, monospace);font-weight:700;font-size:12px;line-height:1.3;text-align:center;pointer-events:none;color:var(--paper-deep);background:var(--ink-soft);box-shadow:0 1px 4px #0000004d}.net-value-tip.hi{background:var(--hi, #37d99a);color:#06231a}.net-value-tip.lo{background:var(--lo, #64748b);color:#fff}.net-value-tip.z{background:var(--edge-strong);color:var(--ink-soft)}.net-value-tip.short{background:var(--short);color:#fff}.net-value-tip.osc{background:var(--osc);color:#241a06}@keyframes status-blink{50%{opacity:.55}}.editing-banner{font-size:11.5px;font-weight:700;color:var(--accent-deep);padding:4px 10px;border-radius:99px;background:var(--accent-soft);border:1px dashed var(--accent);white-space:nowrap}.parts-toggle{display:none!important}.toolbar-pin{display:flex;align-items:center;gap:7px}@media(max-width:1420px){#toolbar .btn-group .btn-label{display:none}}@media(max-width:1120px){#toolbar .tool-seg .btn-label{display:none}#toolbar .tool-seg kbd{margin-left:0}#toolbar{overflow-x:auto;scrollbar-width:none}#toolbar::-webkit-scrollbar{display:none}.toolbar-pin{position:sticky;right:0;z-index:2;padding-left:22px;background:linear-gradient(to right,transparent,var(--paper-deep) 18px)}}@media(max-width:768px){#app{grid-template-columns:1fr;grid-template-areas:"tool" "canvas" "status"}.parts-toggle{display:inline-flex!important}#palette{position:fixed;left:0;top:56px;bottom:30px;width:min(290px,84vw);z-index:50;transform:translate(-105%);transition:transform .2s ease;box-shadow:none;border-right:1px solid var(--edge-strong)}body.parts-open #palette{transform:none;box-shadow:var(--shadow-pop)}#toolbar{overflow-x:auto;scrollbar-width:none;gap:8px}#toolbar::-webkit-scrollbar{display:none}#toolbar button{min-height:42px;min-width:40px;justify-content:center}.brand{font-size:18px}.welcome-card{padding:22px 20px 18px}.lb-title{max-width:30vw}}@media(max-width:640px){#statusbar .legend{display:none}}.wc-touch{display:none}@media(max-width:560px){.wc-desk{display:none}.wc-touch{display:inline}.brand-block{display:none}#toolbar{gap:4px;padding:0 6px}#toolbar #btn-learn .btn-label,#toolbar #btn-exercises .btn-label,#toolbar #btn-save-component .btn-label{display:none!important}#toolbar .toolbar-pin #btn-help{display:none}#toolbar .toolbar-pin{padding-left:12px;gap:4px}#toolbar .toolbar-pin .account-btn{padding:5px 9px}#toolbar kbd{display:none}}#palette{grid-area:pal;background:var(--paper-deep);border-right:1px solid var(--edge-strong);padding:10px;overflow-y:auto}.palette-section{font-family:var(--font-mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.16em;color:var(--ink-soft);padding:14px 4px 6px;display:flex;align-items:center;gap:8px}.palette-section:after{content:"";flex:1;height:1px;background:var(--edge-strong)}.palette-subsection{font-family:var(--font-mono);font-size:9.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);padding:8px 4px 3px}.palette-item{display:flex;align-items:center;gap:9px;padding:5px 7px;border-radius:10px;cursor:grab;border:1px solid transparent;user-select:none;-webkit-user-select:none;transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}.palette-item:active{cursor:grabbing}.palette-item.dragging{opacity:.45}.palette-drag-ghost{position:absolute;left:-9999px;top:0;width:56px;height:48px;pointer-events:none}.palette-item:hover{background:var(--paper-card);border-color:var(--edge-strong);transform:translate(2px)}.palette-item.active{background:var(--accent-soft);border-color:var(--accent)}.item-preview{flex-shrink:0;width:38px;height:34px;display:flex;align-items:center;justify-content:center;background:var(--paper);border:1px solid var(--edge);border-radius:8px}.palette-item.active .item-preview{background:var(--paper-card);border-color:var(--accent-line)}.item-preview svg{max-width:32px;max-height:28px}.palette-item .label{flex:1;font-weight:700;font-size:12.5px;letter-spacing:.01em}.palette-item .sub{display:block;font-weight:400;font-size:10.5px;color:var(--ink-soft);letter-spacing:0}.palette-item .kbd{font-family:var(--font-mono);font-size:10px;color:var(--ink-soft);border:1px solid var(--edge-strong);border-bottom-width:2px;border-radius:5px;background:var(--paper-card);padding:1px 5px}.item-actions{display:none;gap:2px}.palette-item:hover .item-actions{display:flex}.item-actions button{background:transparent;border:1px solid transparent;border-radius:6px;padding:3px;color:var(--ink-soft);display:flex}.item-actions button svg{width:13px;height:13px;stroke:currentColor;stroke-width:1.6;fill:none;stroke-linecap:round;stroke-linejoin:round}.item-actions button:hover{background:var(--paper);border-color:var(--edge-strong);color:var(--ink)}.item-actions .act-delete:hover{color:var(--short);border-color:var(--short);background:var(--short-soft)}.palette-empty{font-size:11.5px;color:var(--ink-soft);padding:10px;line-height:1.5;border:1.5px dashed var(--edge-strong);border-radius:10px;margin:4px 2px;background:var(--paper-inset)}.signals-panel{padding:2px 2px 10px;border-bottom:1px solid var(--edge-strong);margin-bottom:2px}.signals-header{display:flex;align-items:center;justify-content:space-between;padding:4px 4px 6px}.signals-title{font-family:var(--font-mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.16em;color:var(--ink-soft)}.signals-add{font-size:11px;font-weight:600;padding:3px 9px!important;color:var(--accent)}.signals-add:hover{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent)}.signals-empty{font-size:11.5px;color:var(--ink-soft);padding:8px 10px;line-height:1.5;border:1.5px dashed var(--edge-strong);border-radius:10px;background:var(--paper-inset)}.signal-row{display:flex;align-items:stretch;gap:3px;margin:4px 0;border-radius:9px;border:1px solid transparent;padding:2px}.signal-row.active{background:var(--accent-soft);border-color:var(--accent)}.signal-row>button{background:var(--paper-card);border:1px solid var(--edge);color:var(--ink);padding:4px 7px;font:inherit;font-size:12px;border-radius:7px}.signal-row>button:hover{border-color:var(--ink-faint)}.signal-row .signal-name{flex:1;text-align:left;font-family:var(--font-mono);font-weight:600}.signal-row .signal-value{font-family:var(--font-mono);font-weight:600;min-width:26px;text-align:center}.signal-row .signal-value.v-1{color:var(--hi);border-color:var(--hi);background:var(--hi-soft)}.signal-row .signal-value.v-0{color:var(--ink-soft)}.signal-row .signal-icon{padding:4px 6px;color:var(--ink-faint);font-size:12px;line-height:1;background:transparent;border-color:transparent}.signal-row .signal-icon:hover{color:var(--ink);background:var(--paper-card);border-color:var(--edge)}.signal-row .signal-del:hover{color:var(--short);border-color:var(--short)}#canvas-wrap{grid-area:canvas;position:relative;overflow:hidden;background:var(--paper)}#canvas-wrap:before{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;opacity:.5;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/><feComponentTransfer><feFuncA type='linear' slope='0.05'/></feComponentTransfer></filter><rect width='180' height='180' filter='url(%23n)'/></svg>")}#canvas{width:100%;height:100%;display:block;cursor:default;position:relative;z-index:2;touch-action:none}#canvas.tool-wire{cursor:crosshair}#canvas.tool-delete{cursor:not-allowed}#canvas.tool-place{cursor:copy}#canvas.tool-delete .component,#canvas.tool-delete .pin-hit{cursor:not-allowed}#canvas.tool-place .component,#canvas.tool-place .pin-hit{cursor:copy}#canvas.tool-wire .component{cursor:crosshair}.grid-minor{stroke:var(--grid-minor);stroke-width:1;fill:none;vector-effect:non-scaling-stroke}.grid-major{stroke:var(--grid-major);stroke-width:1;fill:none;vector-effect:non-scaling-stroke}.grid-dots{fill:var(--grid-dots);stroke:none}.wire{stroke-width:2.6;fill:none;stroke-linecap:round;stroke-linejoin:round}.wire.state-hi{stroke:var(--hi)}.wire.state-lo{stroke:var(--lo)}.wire.state-float{stroke:var(--float);stroke-dasharray:5 4}.wire.state-short{stroke:var(--short);animation:short-blink 1s steps(2,start) infinite}.wire.wire-attn{animation:wire-attn 1.4s ease-out}@keyframes wire-attn{0%,to{filter:none;stroke-width:2.6}20%,60%{filter:drop-shadow(0 0 6px var(--accent)) drop-shadow(0 0 3px var(--accent));stroke-width:5}}.wire.wire-connect{animation:wire-connect .5s ease-out}@keyframes wire-connect{0%{filter:drop-shadow(0 0 7px var(--accent)) drop-shadow(0 0 4px var(--accent));stroke-width:5}to{filter:none;stroke-width:2.6}}.wire.state-osc{stroke:var(--osc);stroke-dasharray:6 5;animation:osc-crawl .6s linear infinite}@keyframes short-blink{50%{opacity:.45}}@keyframes osc-crawl{to{stroke-dashoffset:-11}}.wire.preview{stroke:var(--accent);stroke-dasharray:5 5;opacity:.8}.part-id{font-family:var(--font-mono);font-size:8px;fill:var(--ink-soft);opacity:.75;pointer-events:none;user-select:none}.wire.preview-bad{stroke:var(--short)}.wire.net-highlight{stroke-width:3.2;filter:drop-shadow(0 0 2px var(--accent)) drop-shadow(0 0 7px var(--accent-line))}.wire.selected{stroke:var(--accent);stroke-width:3.5;filter:drop-shadow(0 0 3px var(--accent-ghost))}.wire.erase-target{stroke:var(--short)!important;stroke-dasharray:7 5;opacity:.85;filter:drop-shadow(0 0 4px var(--short-glow))}.pin-dot{fill:var(--pin);stroke:var(--paper-card);stroke-width:.6;transition:r .08s ease}.pin-dot.net-highlight{stroke:var(--accent);stroke-width:2}.pin-dot.pin-hi{fill:var(--hi)}.pin-dot.pin-float{fill:var(--float)}.pin-dot.pin-short{fill:var(--short)}.pin-dot.pin-osc{fill:var(--osc)}.pin-dot.pin-lo{fill:var(--lo)}.pin-dot.pin-hover{fill:var(--accent);stroke:var(--accent-deep);stroke-width:1.4}.snap-ring{fill:none;stroke:var(--accent);stroke-width:1.6;opacity:.9;animation:snap-pulse 1.1s ease-in-out infinite}@keyframes snap-pulse{0%,to{stroke-width:1.6;opacity:.9}50%{stroke-width:2.4;opacity:.55}}.ghost{opacity:.5;pointer-events:none}.ghost .primitive-body,.ghost .custom-body{filter:none}.junction{fill:var(--pin);paint-order:stroke}.junction.j-hi{fill:var(--hi)}.junction.j-lo{fill:var(--lo)}.junction.j-float{fill:var(--float)}.junction.j-short{fill:var(--short)}.junction.j-osc{fill:var(--osc)}.loose-end{fill:var(--paper);stroke:var(--osc, #e8912a);stroke-width:1.8}.pin-hit{fill:transparent;cursor:crosshair}.component{cursor:move;transition:filter .12s ease}.component.hovered{filter:drop-shadow(0 0 4px rgba(139,134,255,.45))}.drag-snap{fill:none;stroke:var(--accent);stroke-width:1.5;stroke-dasharray:5 4;opacity:.55;pointer-events:none}.drag-snap.invalid{stroke:var(--short, #e5484d);stroke-dasharray:none;stroke-width:2;fill:#e5484d1f;opacity:1}#canvas.drop-refused{cursor:not-allowed}.align-guide{stroke:var(--ok, #30a46c);stroke-width:1;stroke-dasharray:2 3;opacity:.7;pointer-events:none}.component.erase-target{filter:drop-shadow(0 0 5px var(--short-glow));opacity:.55}.component.selected .bbox{filter:drop-shadow(0 0 3px rgba(139,134,255,.5))}#canvas.interacting .component,#canvas.interacting .component .bbox,#canvas.interacting .pin-dot,#canvas.interacting .wire{filter:none!important}.clk-live-dot{opacity:0;transition:opacity var(--dur-fast, .14s) var(--ease, ease)}body.clocks-running .clk-live-dot{opacity:1}body.clocks-running #canvas:not(.interacting) .clk-live-dot{animation:clk-live-pulse 1.1s ease-in-out infinite}@keyframes clk-live-pulse{0%,to{opacity:1}50%{opacity:.28}}@media(prefers-reduced-motion:reduce){body.clocks-running #canvas .clk-live-dot{animation:none}}.component.inst-flash{animation:inst-flash .9s ease-out}.component.inst-pulse{animation:inst-pulse .24s ease-out}@keyframes inst-pulse{0%{filter:brightness(1)}35%{filter:brightness(1.4) drop-shadow(0 0 5px rgba(139,134,255,.55))}to{filter:brightness(1)}}@keyframes inst-flash{0%{filter:drop-shadow(0 0 0 rgba(139,134,255,0))}25%{filter:drop-shadow(0 0 7px rgba(139,134,255,.8))}to{filter:drop-shadow(0 0 0 rgba(139,134,255,0))}}.present-halo{fill:color-mix(in srgb,var(--accent) 14%,transparent);stroke:color-mix(in srgb,var(--accent) 55%,transparent);stroke-width:1.5px;animation:present-halo-in .28s var(--ease, ease)}@keyframes present-halo-in{0%{opacity:0}to{opacity:1}}.layer-components .component.tutor-highlight,.layer-wires .wire.tutor-highlight{filter:drop-shadow(0 0 3px var(--accent)) drop-shadow(0 0 7px var(--accent))}svg.tutor-dim .layer-components .component,svg.tutor-dim .layer-wires .wire,svg.tutor-dim .layer-junctions .junction{opacity:.6;transition:opacity .25s var(--ease, ease)}svg.tutor-dim .layer-components .component.tutor-spot,svg.tutor-dim .layer-wires .wire.tutor-spot{opacity:1;filter:drop-shadow(0 0 4px var(--accent))}.component .label{fill:var(--ink);font-size:11px;font-family:var(--font-mono);pointer-events:none;user-select:none}.sublabel,.component .pin-name{fill:var(--ink-soft);font-size:9px;font-family:var(--font-mono);pointer-events:none;user-select:none}.input-handle{cursor:pointer}.hint-dock{position:absolute;left:50%;bottom:16px;transform:translate(-50%);z-index:5;display:flex;flex-direction:column;align-items:center;gap:8px;max-width:min(680px,86%);pointer-events:none}.welcome:not(.gone)~.hint-dock{display:none}#hint-pill{appearance:none;display:flex;align-items:center;gap:8px;max-width:100%;background:var(--paper-card);border:1px solid var(--edge-strong);border-radius:16px;padding:7px 14px 7px 12px;box-shadow:var(--shadow-card);font-size:12.5px;color:var(--ink-soft);cursor:default;pointer-events:auto;transition:border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}#hint-pill>svg:first-child{width:15px;height:15px;stroke:var(--accent);stroke-width:1.6;fill:none;stroke-linecap:round;flex-shrink:0}#hint-pill .hint-chevron{width:13px;height:13px;stroke:var(--ink-soft);stroke-width:1.7;fill:none;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;opacity:0;margin-left:2px;transition:transform var(--dur) var(--ease),opacity var(--dur-fast) var(--ease)}.hint-dock.has-hints #hint-pill{cursor:pointer}.hint-dock.has-hints #hint-pill:hover{border-color:var(--accent-line);background:var(--paper)}.hint-dock.has-hints #hint-pill .hint-chevron{opacity:1}.hint-dock.expanded #hint-pill .hint-chevron{transform:rotate(180deg)}.hint-dock:not(.has-hints) #hint-pill:has(#hint:empty){display:none}#hint b,#hint kbd{color:var(--ink)}#btn-recenter{position:absolute;top:14px;left:50%;z-index:6;display:inline-flex;align-items:center;gap:7px;background:var(--accent-btn);color:#fff;border:1px solid var(--accent-line);border-radius:16px;padding:7px 14px 7px 11px;font-family:inherit;font-size:12.5px;font-weight:600;box-shadow:var(--shadow-card);cursor:pointer;opacity:0;visibility:hidden;pointer-events:none;transform:translate(-50%) translateY(-8px);transition:opacity .16s ease,transform .16s ease,visibility 0s linear .16s}#btn-recenter.show{opacity:1;visibility:visible;pointer-events:auto;transform:translate(-50%) translateY(0);transition:opacity .16s ease,transform .16s ease}#btn-recenter:hover{filter:brightness(1.07)}#btn-recenter:active{transform:translate(-50%) translateY(1px)}#btn-recenter svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;flex-shrink:0}#canvas-wrap:has(.level-bar:not([hidden])) #btn-recenter{top:58px}.welcome{position:absolute;inset:0;z-index:4;display:flex;align-items:center;justify-content:center;pointer-events:none;padding:24px}.welcome.gone{display:none}.welcome-card{position:relative;pointer-events:auto;background:var(--paper-card);border:1.5px solid var(--edge-strong);border-radius:18px;box-shadow:var(--shadow-pop);padding:30px 38px 24px;max-width:460px;text-align:center;animation:welcome-in .45s cubic-bezier(.2,.9,.3,1.2) both;max-height:calc(100% - 24px);overflow-y:auto;overscroll-behavior:contain}.welcome-close{position:absolute;top:12px;right:12px;width:30px;height:30px;display:grid;place-items:center;border:1px solid var(--edge);background:var(--paper);color:var(--ink-soft);border-radius:8px;font-size:14px;cursor:pointer;line-height:1}.welcome-close:hover{background:var(--paper-deep);color:var(--ink)}@keyframes welcome-in{0%{opacity:0;transform:translateY(14px) scale(.97)}}.welcome-mark{width:64px;height:46px;stroke:var(--accent);stroke-width:1.8;fill:none;stroke-linejoin:round;stroke-linecap:round;margin-bottom:2px}.welcome-card h1{font-family:var(--font-display);font-weight:400;font-size:30px;margin:0 0 6px;color:var(--ink);letter-spacing:.01em}.welcome-sub{margin:0 0 18px;color:var(--ink-soft);font-size:13.5px}.welcome-steps{list-style:none;margin:0 0 18px;padding:0;text-align:left;display:flex;flex-direction:column;gap:9px}.welcome-steps li{display:flex;align-items:center;gap:11px;font-size:13px;color:var(--ink-soft)}.welcome-steps b{color:var(--ink)}.step-num{flex-shrink:0;width:22px;height:22px;border-radius:50%;background:var(--accent-soft);color:var(--accent-deep);font-family:var(--font-display);font-size:12px;display:flex;align-items:center;justify-content:center;border:1px solid var(--accent-line)}.welcome-examples{border-top:1px dashed var(--edge-strong);padding-top:14px}.welcome-try{display:block;font-size:11.5px;color:var(--ink-faint);margin-bottom:9px;font-style:italic}.welcome-chips{display:flex;flex-wrap:wrap;gap:7px;justify-content:center}.chip{font:inherit;font-size:12px;font-weight:700;color:var(--accent-deep);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:99px;padding:5px 13px;box-shadow:0 2px 0 var(--accent-line);transition:transform .06s ease,box-shadow .06s ease}.chip:hover{transform:translateY(-1px);box-shadow:0 3px 0 var(--accent-line)}.chip.chip-live{color:#fff;background:var(--accent-btn, var(--accent));border-color:var(--accent-deep);box-shadow:0 2px 0 var(--accent-deep);animation:chip-live-pulse 2s ease-in-out infinite}.chip.chip-live:hover{box-shadow:0 3px 0 var(--accent-deep);animation:none}@keyframes chip-live-pulse{0%,to{box-shadow:0 2px 0 var(--accent-deep)}50%{box-shadow:0 2px 0 var(--accent-deep),0 0 9px var(--accent-line)}}.chip:active{transform:translateY(1px);box-shadow:0 0 0 var(--accent-line)}.welcome-foot{margin:16px 0 0;font-size:11px;color:var(--ink-faint)}.welcome-path{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;margin:14px 0 6px}.wp-stop{font-family:var(--mono, ui-monospace, monospace);font-size:11px;padding:3px 9px;border-radius:999px;border:1px solid var(--edge);color:var(--ink-soft);background:var(--paper-inset)}.wp-cpu{border-color:var(--accent);color:var(--accent);font-weight:700}.wp-arrow{color:var(--ink-faint);font-size:11px}.welcome-free{margin:0 0 12px;font-size:12.5px;color:var(--ink-soft)}.welcome-gold{margin:-6px 0 12px;font-size:12.5px;color:var(--ink-soft)}.welcome-gold b{color:var(--gold, #ffd25a)}.welcome-pricing-link{border:none;background:none;padding:0;font:inherit;color:var(--accent);cursor:pointer}.welcome-pricing-link:hover{text-decoration:underline}.welcome-teachers{margin-top:6px}.welcome-teachers a{color:var(--accent);text-decoration:none}.welcome-teachers a:hover{text-decoration:underline}.welcome kbd,.cheatsheet kbd{font-family:var(--font-mono);font-size:11px;background:var(--paper);border:1px solid var(--edge-strong);border-bottom-width:2px;border-radius:5px;padding:1px 6px;color:var(--ink);white-space:nowrap}#statusbar{grid-area:status;background:var(--paper-deep);border-top:1px solid var(--edge-strong);display:flex;align-items:center;gap:14px;padding:0 12px;font-size:11px;color:var(--ink-soft)}#statusbar #cursor-pos{font-family:var(--font-mono);min-width:64px}#statusbar .counts{font-family:var(--font-mono);letter-spacing:.02em}.status-spacer{flex:1}.legend{display:flex;align-items:center;gap:12px}.legend-chip{display:inline-flex;align-items:center;gap:5px;font-family:var(--font-mono);font-size:10.5px;cursor:help}.legend-chip:before{content:"";width:14px;height:0;border-top:3px solid;border-radius:2px}.lg-hi{color:var(--hi)}.lg-lo{color:var(--lo)}.lg-float{color:var(--float)}.lg-float:before{border-top-style:dashed}.lg-short{color:var(--short)}.lg-osc{color:var(--osc)}.lg-osc:before{border-top-style:dashed}.modal-backdrop{position:fixed;inset:0;background:#06090f9e;backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:100;opacity:0;transition:opacity var(--dur) var(--ease)}.modal-backdrop.open{opacity:1}.modal-dialog{background:var(--paper);border:1.5px solid var(--edge-strong);border-radius:16px;min-width:min(95vw,340px);max-width:95vw;max-height:90vh;display:flex;flex-direction:column;box-shadow:var(--shadow-pop);opacity:0;transform:translateY(10px) scale(.96);transition:opacity var(--dur) var(--ease),transform var(--dur-slow) var(--ease-spring)}.modal-backdrop.open .modal-dialog{opacity:1;transform:translateY(0) scale(1)}.modal-backdrop.modal-closing .modal-dialog{transition:opacity var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px 10px;border-bottom:1px dashed var(--edge-strong)}.modal-title{font-family:var(--font-display);font-size:18px;color:var(--ink);letter-spacing:.01em}.modal-close{border:none;background:transparent;color:var(--ink-faint);font-size:16px;cursor:pointer;padding:3px 8px;border-radius:7px;line-height:1}.modal-close:hover{background:var(--paper-inset);color:var(--ink)}.modal-body{padding:16px 18px;overflow:auto}.dialog-msg{margin:0 0 14px;max-width:420px;font-size:13.5px;line-height:1.5;color:var(--ink)}.dialog-form{display:flex;flex-direction:column}.drafts-empty{display:flex;flex-direction:column;align-items:flex-start;gap:12px;max-width:360px}.drafts-new,.cls-join{margin-bottom:12px}.cls-retry{align-self:flex-start;border:1px solid var(--edge-strong);background:transparent;color:var(--ink-soft);font:inherit;font-size:13px;font-weight:600;padding:5px 14px;border-radius:8px;cursor:pointer}.cls-retry:hover{border-color:var(--accent);color:var(--accent-deep)}.cls-list{display:flex;flex-direction:column;gap:10px;min-width:300px;max-width:440px}.cls-card{border:1px solid var(--line, #2a3142);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:6px}.cls-card-head{font-weight:600;font-size:14px}.cls-asg{text-align:left;background:transparent;border:1px solid var(--line, #2a3142);border-radius:7px;padding:7px 10px;cursor:pointer;color:var(--ink, #e8eef7);font-size:13px}.cls-asg:hover{border-color:var(--accent, #6c8cff)}.cls-muted,.cls-loading{font-size:12.5px;color:var(--ink-soft, #8a93a6)}.cls-status{font-size:13px;font-weight:600;padding:6px 10px;border-radius:7px}.cls-status.ok{background:#57d08a29;color:var(--hi, #57d08a)}.cls-status.no{background:#ff6b6b24;color:var(--danger, #ff6b6b)}.cls-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.drafts-list{display:flex;flex-direction:column;gap:7px;min-width:min(88vw,400px);max-height:54vh;overflow-y:auto;padding:2px}.drafts-loading{padding:14px 4px;font-size:13px;color:var(--ink-faint);text-align:center}.drafts-row{display:flex;align-items:stretch;gap:0;border:1px solid var(--edge);border-radius:11px;background:var(--paper);overflow:hidden;transition:border-color var(--dur-fast) var(--ease)}.drafts-row:hover{border-color:var(--accent-line)}.drafts-row.active{border-color:var(--accent);background:var(--accent-soft)}.drafts-open{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:10px 14px;background:transparent;border:0;cursor:pointer;text-align:left;color:var(--ink)}.drafts-open:hover{background:color-mix(in srgb,var(--accent-soft) 45%,transparent)}.drafts-name{font-size:14px;font-weight:700;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drafts-row.active .drafts-name:after{content:" · on canvas";font-weight:400;font-size:11px;color:var(--accent-deep)}.drafts-meta{font-size:11.5px;font-family:var(--font-mono);color:var(--ink-faint)}.drafts-action{width:40px;display:grid;place-items:center;background:transparent;border:0;border-left:1px solid var(--edge);cursor:pointer;font-size:14px;color:var(--ink-faint);opacity:.5;transition:opacity var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.drafts-row:hover .drafts-action{opacity:1}.drafts-action:hover{background:var(--paper-inset);color:var(--ink)}.drafts-action.danger:hover{color:var(--short)}.dialog-input{font:inherit;font-family:var(--font-mono);font-size:14px;padding:9px 12px;border:1.5px solid var(--edge-strong);border-radius:9px;background:var(--paper-card);color:var(--ink);width:min(360px,78vw)}.dialog-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ghost)}.dialog-error{margin:8px 0 0;font-size:12px;color:var(--short)}.pin-row{display:flex;align-items:center;gap:9px;margin-bottom:8px}.pin-row .dialog-input{flex:1;width:auto}.pin-role{flex-shrink:0;width:30px;text-align:center;font-family:var(--font-mono);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:3px 0;border-radius:5px}.pin-role.role-in{color:var(--accent-deep);background:var(--accent-soft)}.pin-role.role-out{color:var(--hi);background:var(--hi-soft)}.pin-config-columns{display:flex;gap:18px;flex-wrap:wrap}.pin-config-group{flex:1;min-width:240px}.pin-config-heading{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);margin-bottom:8px}.pin-config-list{display:flex;flex-direction:column}.pin-config-empty{margin:0;font-size:12px;color:var(--text-dim)}.pin-config-row.excluded .dialog-input,.pin-config-row.excluded .pin-role{opacity:.45}.pin-moves{display:flex;flex-direction:column;gap:1px;flex-shrink:0}.pin-move{display:flex;align-items:center;justify-content:center;width:22px;height:16px;padding:0;border:1px solid var(--edge-strong);border-radius:5px;background:var(--paper-card);color:var(--ink-soft);cursor:pointer}.pin-move:hover{border-color:var(--accent);color:var(--accent)}.pin-include{display:flex;align-items:center;gap:4px;flex-shrink:0;font-size:11px;color:var(--ink-soft);cursor:pointer;user-select:none}.pin-include input{cursor:pointer}.btn-danger,.btn-primary.btn-danger{background:var(--short);border:1px solid var(--short);color:#fff;box-shadow:0 2px 0 var(--short)}.btn-danger:hover,.btn-primary.btn-danger:hover{transform:translateY(-1px);box-shadow:0 3px 0 var(--short)}.btn-primary.btn-danger:active{transform:translateY(1px);box-shadow:0 0 0 var(--short)}.backup-intro{margin:0 0 14px;max-width:392px;font-size:12.5px;line-height:1.5;color:var(--ink-soft)}.export-choices{display:flex;gap:12px}.export-choice{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;padding:18px 22px 14px;background:var(--paper-card);border:1.5px solid var(--edge-strong);border-radius:12px;box-shadow:0 2px 0 var(--edge-strong);font:inherit;transition:transform .06s ease,box-shadow .06s ease,border-color .1s ease}.export-choice:hover{transform:translateY(-1px);border-color:var(--accent);box-shadow:0 3px 0 var(--accent-line)}.export-choice .fmt{font-family:var(--font-display);font-size:17px;color:var(--accent-deep)}.export-choice .why{font-size:11px;color:var(--ink-soft)}.report-intro{margin:0 0 12px;max-width:392px;font-size:12.5px;line-height:1.5;color:var(--ink-soft)}.whiteboard-fab{position:fixed;right:24px;bottom:118px;width:48px;height:48px;border-radius:50%;border:1.5px solid var(--edge-strong, #3a4a5f);cursor:pointer;display:grid;place-items:center;z-index:60;color:var(--ink);background:var(--paper-card);box-shadow:0 4px 14px #00000047;transition:transform var(--dur) var(--ease-spring),border-color var(--dur) var(--ease)}.whiteboard-fab svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.whiteboard-fab:hover{transform:translateY(-2px) scale(1.04)}.whiteboard-fab.active{border-color:var(--accent);color:var(--accent)}body.tutor-open .whiteboard-fab{right:calc(var(--tutor-w) + 22px)}.whiteboard-panel{position:fixed;right:24px;bottom:174px;z-index:61;display:flex;flex-direction:column;gap:8px;padding:10px;border-radius:14px;border:1px solid var(--edge-strong, #3a4a5f);background:var(--paper-card);box-shadow:0 8px 28px #00000059}body.tutor-open .whiteboard-panel{right:calc(var(--tutor-w) + 22px)}.whiteboard-tools{display:flex;gap:3px}.whiteboard-tools .tool-btn{display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 6px;min-width:50px;background:transparent;border:1px solid transparent;border-radius:10px;color:var(--ink-soft);cursor:pointer;transition:background var(--dur) var(--ease),color var(--dur) var(--ease),border-color var(--dur) var(--ease)}.whiteboard-tools .tool-btn svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.whiteboard-tools .tool-btn .btn-label{font-size:10px;font-weight:600;letter-spacing:.01em}.whiteboard-tools .tool-btn:hover{background:var(--paper-inset);color:var(--ink)}.whiteboard-tools .tool-btn.active{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-line)}.whiteboard-panel .annotation-style-bar{border-left:none;border-top:1px solid var(--edge, #2a3444);padding:8px 2px 2px;margin:0;flex-wrap:wrap}@media(max-width:640px){.whiteboard-panel{right:12px;bottom:168px}.whiteboard-fab{right:16px}}.layer-annotations,.annotation{pointer-events:none}.annotation-select-frame{stroke:var(--accent);stroke-width:1.2;stroke-dasharray:5 4;opacity:.9}.annotation-style-bar{display:inline-flex;align-items:center;gap:4px;padding-left:6px;margin-left:2px;border-left:1px solid var(--edge, #2a3444)}.annotation-swatch{width:18px;height:18px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;box-shadow:0 0 0 1px #00000040 inset}.annotation-swatch.active{border-color:var(--accent);transform:scale(1.12)}.annotation-style-sep{width:1px;height:18px;background:var(--edge, #2a3444);margin:0 2px}.annotation-size{font:inherit;font-size:11px;font-weight:600;padding:3px 8px;border-radius:6px;border:1.5px solid var(--edge-strong, #3a4a5f);background:var(--paper-card);color:var(--ink);cursor:pointer}.annotation-size.thick{border-width:2.5px}.note-editor{position:fixed;z-index:50;min-width:60px;min-height:1.4em;padding:2px 4px;border:1.5px solid var(--accent);border-radius:6px;background:var(--paper-card);color:var(--ink);font-family:var(--font-sans, sans-serif);font-weight:600;line-height:1.25;resize:none;outline:none;box-shadow:0 4px 16px #0000004d}.rom-editor{display:flex;flex-direction:column;gap:12px}.rom-editor-help{margin:0;font-family:var(--font-mono);font-size:11px;line-height:1.5;color:var(--ink-soft);white-space:pre-wrap}.rom-editor-cols{display:flex;gap:14px;align-items:stretch}.rom-editor-code{flex:1 1 auto;min-width:300px;display:flex}.rom-editor-textarea{flex:1 1 auto;min-height:300px;box-sizing:border-box;resize:vertical;font-family:var(--font-mono);font-size:13px;line-height:1.5;color:var(--ink);background:var(--paper-card);border:1.5px solid var(--edge-strong);border-radius:10px;padding:10px 12px;outline:none;transition:border-color .12s ease;tab-size:4}.rom-editor-textarea:focus{border-color:var(--accent)}.rom-editor-out{flex:0 0 auto;width:148px;display:flex;flex-direction:column;gap:10px}.rom-editor-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px}.rom-editor-grid--big{grid-template-columns:1fr;max-height:340px;overflow-y:auto;padding-right:4px}.rom-editor-cell{display:flex;justify-content:space-between;align-items:baseline;font-family:var(--font-mono);font-size:12px;background:var(--paper-card);border:1px solid var(--edge);border-radius:6px;padding:3px 7px}.rom-editor-addr{color:var(--ink-soft);font-size:10px}.rom-editor-val{color:var(--accent-deep);font-weight:700}.rom-editor-errors{font-family:var(--font-mono);font-size:11px;color:var(--short)}.rom-editor-errors ul{margin:0;padding-left:16px}.rom-editor-errors li{margin:2px 0}.rom-editor-actions{display:flex;justify-content:flex-end;gap:8px}.rom-editor-store,.rom-editor-cancel{font:inherit;font-weight:600;padding:8px 16px;border-radius:9px;cursor:pointer;border:1.5px solid var(--edge-strong)}.rom-editor-store{background:var(--accent);color:#fff;border-color:var(--accent)}.rom-editor-store:disabled{opacity:.5;cursor:not-allowed}.rom-editor-cancel{background:var(--paper-card);color:var(--ink)}.report-note{width:100%;min-width:360px;max-width:100%;box-sizing:border-box;resize:vertical;font:inherit;font-size:13px;color:var(--ink);background:var(--paper-card);border:1.5px solid var(--edge-strong);border-radius:10px;padding:10px 12px;outline:none;transition:border-color .12s ease}.report-note:focus{border-color:var(--accent)}.report-actions{display:flex;justify-content:flex-end;margin-top:14px}.report-submit{font-family:var(--font-display);font-size:14px;letter-spacing:.02em;color:#fff;background:var(--accent-btn);border:none;border-radius:10px;padding:9px 18px;box-shadow:0 2px 0 var(--accent-deep);cursor:pointer;transition:transform .06s ease,box-shadow .06s ease,background .12s ease}.report-submit:hover:not(:disabled){transform:translateY(-1px);background:var(--accent-deep)}.report-submit:disabled{opacity:.6;cursor:default}.truth-table{border-collapse:collapse;font-family:var(--font-mono);font-size:12.5px}.truth-table th,.truth-table td{padding:5px 12px;border:1px solid var(--edge-strong);text-align:center;min-width:34px}.truth-table th{background:var(--paper-inset);color:var(--ink);font-weight:600}.truth-table tr:nth-child(2n) td{background:var(--paper-inset)}.truth-table th.input-col{color:var(--accent-deep)}.truth-table th.output-col{color:var(--hi)}:root[data-theme=light] .truth-table th.output-col{color:#07692e}.truth-table td.v-hi{color:var(--hi);font-weight:600;background:var(--hi-soft)}.truth-table td.v-lo{color:var(--ink-soft)}.truth-table td.v-float{color:var(--float);background:var(--float-soft)}.truth-table td.v-short{color:var(--short);font-weight:600;background:var(--short-soft)}.truth-table tr.tt-current td{border-top:1.5px solid var(--accent);border-bottom:1.5px solid var(--accent);font-weight:600}.truth-table tr.tt-current td:first-child{border-left:3px solid var(--accent)}.truth-table tr.tt-current td:last-child{border-right:3px solid var(--accent)}.truth-table tr.tt-clickable{cursor:pointer}.truth-table tr.tt-clickable:hover td{background:var(--accent-ghost)}.truth-table td.v-osc{color:var(--osc);font-weight:600;background:var(--osc-soft)}.truth-play{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px}.truth-play-label{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint)}.truth-toggle{font-family:var(--font-mono);font-size:12.5px;font-weight:700;cursor:pointer;padding:4px 10px;border-radius:999px;color:var(--ink-soft);background:var(--paper-inset);border:1px solid var(--edge-strong);transition:color .12s ease,background .12s ease,border-color .12s ease}.truth-toggle:hover{border-color:var(--accent-line)}.truth-toggle[data-on="1"]{color:#fff;background:var(--accent-btn);border-color:var(--accent-deep)}.truth-table tr.truth-row-active td{background:var(--accent-soft)}.truth-table tr.truth-row-active td.v-hi{background:var(--hi-soft)}.truth-table tr.truth-row-active td:first-child{box-shadow:inset 3px 0 0 var(--accent)}.truth-eqs-head{margin:12px 0 4px;font-family:var(--font-display);font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--accent-deep)}.truth-eqs{display:flex;flex-direction:column;gap:3px}.truth-eq{font-family:var(--font-mono);font-size:14px;color:var(--ink);background:var(--paper-inset);border:1px solid var(--edge);border-radius:7px;padding:6px 10px}.truth-note{margin-top:12px;color:var(--ink-soft);font-size:11.5px}.vhdl-minimize{display:flex;align-items:center;gap:8px;margin:0 0 10px;font-size:13px;color:var(--ink-soft);cursor:pointer}.vhdl-minimize input{width:15px;height:15px;accent-color:var(--accent)}.vhdl-lead{margin:0 0 12px;max-width:60ch;font-size:13px;line-height:1.5;color:var(--ink-soft)}.vhdl-code{margin:0;padding:12px 14px;max-height:56vh;overflow:auto;font-family:var(--font-mono);font-size:12.5px;line-height:1.55;white-space:pre;tab-size:2;color:var(--ink);background:var(--paper-inset, rgba(0, 0, 0, .18));border:1px solid var(--line, #2a3142);border-radius:8px}.vhdl-notes{margin-top:10px;display:flex;flex-direction:column;gap:4px}.vhdl-note{font-size:11.5px;color:var(--ink-soft)}.vhdl-copy{margin-top:14px}.vhdl-examples{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 10px}.vhdl-examples-label{font-size:12px;color:var(--ink-soft);margin-right:2px}.vhdl-example-btn{font-size:12px;font-weight:600;padding:4px 10px;cursor:pointer;color:var(--accent-deep);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:999px;transition:background .12s ease,color .12s ease}.vhdl-example-btn:hover{background:var(--accent-btn);color:#fff}.vhdl-input{display:block;width:100%;min-width:min(90vw,560px);box-sizing:border-box;padding:12px 14px;font-family:var(--font-mono);font-size:12.5px;line-height:1.55;tab-size:2;color:var(--ink);background:var(--paper-inset, rgba(0, 0, 0, .18));border:1px solid var(--line, #2a3142);border-radius:8px;resize:vertical}.vhdl-input:focus{outline:none;border-color:var(--accent)}.vhdl-msg{margin-top:10px;display:flex;flex-direction:column;gap:4px}.vhdl-err{font-size:12.5px;color:var(--danger, #e5484d)}.vhdl-warn{font-size:12px;color:var(--warn, #d9822b)}.vhdl-build-btn{margin-top:14px}.wave-controls{display:flex;align-items:center;gap:16px;margin-bottom:12px;flex-wrap:wrap;font-size:12.5px;color:var(--ink-soft)}.wave-ctl{display:inline-flex;align-items:center;gap:6px}.wave-ctl input[type=number]{width:56px;background:var(--paper-inset);border:1px solid var(--edge-strong);border-radius:7px;color:var(--ink);font:inherit;padding:3px 6px}.wave-summary{color:var(--ink-faint);font-size:11.5px}.wave-plot{overflow-x:auto;overflow-y:hidden;width:min(92vw,960px)}.wave-svg{display:block;font-family:var(--font-mono, monospace)}.wave-cursor{stroke:var(--accent);stroke-width:1.4;pointer-events:none}.wave-cursor-col{fill:var(--accent);opacity:.1;pointer-events:none}.wave-tip{position:absolute;z-index:3;pointer-events:none;background:var(--paper-card);border:1px solid var(--accent-line);border-radius:8px;padding:7px 10px;font-family:var(--font-mono, monospace);font-size:12px;line-height:1.5;box-shadow:0 6px 20px #00000029;max-width:220px}.wave-tip-cyc{font-weight:700;color:var(--accent-deep);margin-bottom:3px}.wave-tip-row{color:var(--ink);white-space:nowrap}.wave-tip-row b{font-weight:600}.wave-tip-row.role-clock b{color:var(--accent-deep)}.wave-tip-row.role-probe b{color:var(--hi)}.wave-label{font-size:11.5px;fill:var(--ink)}.wave-label.role-clock{fill:var(--accent);font-weight:600}.wave-label.role-input{fill:var(--ink-soft)}.wave-label.role-probe{fill:var(--hi);font-weight:600}.wave-grid{stroke:var(--edge);stroke-width:1;stroke-dasharray:2 3}.wave-tick{font-size:9.5px;fill:var(--ink-faint)}.wave-base{stroke:var(--edge);stroke-width:1;opacity:.4}.wave-seg{stroke-width:2;fill:none;stroke-linecap:round}.wave-seg.v-hi{stroke:var(--hi)}.wave-seg.v-lo{stroke:var(--ink-soft)}.wave-seg.v-float{stroke:var(--float);stroke-width:1.5;stroke-dasharray:3 3}.wave-edge{stroke:var(--ink-faint);stroke-width:1.5}.wave-short{fill:var(--short-soft);stroke:var(--short);stroke-width:1}.wave-osc{fill:var(--osc-soft);stroke:var(--osc);stroke-width:1}.wave-fault-ch{font-size:11px;font-weight:700;fill:var(--short)}.wave-osc+.wave-fault-ch{fill:var(--osc)}.symbol-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px;max-width:640px}.symbol-pick{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 6px 6px;border-radius:10px;cursor:pointer;border:1px solid var(--edge-strong);background:var(--paper-card);color:var(--ink-soft);font:inherit}.symbol-pick:hover{border-color:var(--accent);color:var(--ink)}.symbol-pick.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-deep)}.symbol-pick svg{width:96px;height:64px}.symbol-pick-label{font-size:11px;letter-spacing:.04em}.cheatsheet-wrap{max-width:min(92vw,820px)}.cheat-intro{margin:0 0 14px;color:var(--ink-soft);font-size:12px;line-height:1.5}.cheatsheet{column-count:2;column-gap:26px;font-size:12.5px}@media(max-width:620px){.cheatsheet{column-count:1}}.cheatsheet section{break-inside:avoid;display:flex;flex-direction:column;gap:4px;margin-bottom:16px}.cheatsheet h3{margin:0 0 4px;font-family:var(--font-display);font-weight:400;font-size:13px;letter-spacing:.04em;color:var(--accent-deep)}.cheat-row{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:24px}.cheat-row .desc{color:var(--ink-soft)}.cheat-controls{display:inline-flex;align-items:center;gap:4px;flex-shrink:0}.cheat-key{font-family:var(--font-mono);font-size:10.5px;min-width:32px;text-align:center;color:var(--ink);background:var(--paper-inset);border:1px solid var(--edge-strong);border-radius:5px;padding:2px 7px;cursor:pointer;transition:border-color .1s ease,color .1s ease,background .1s ease}.cheat-key:hover{border-color:var(--accent)}.cheat-key.capturing{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.cheat-reset{border:none;background:transparent;color:var(--ink-faint);font-size:12px;cursor:pointer;padding:2px 5px;border-radius:5px;line-height:1}.cheat-reset:hover{color:var(--ink);background:var(--paper-inset)}.cheat-footer{margin-top:8px;display:flex;justify-content:flex-end}.settings{display:flex;flex-direction:column;gap:12px;min-width:min(88vw,520px);max-width:560px}.settings-section{display:flex;flex-direction:column;gap:10px;background:var(--paper);border:1px solid var(--edge);border-radius:12px;padding:13px 15px 14px}.settings-section h3{margin:0;font-family:var(--font-display);font-weight:400;font-size:12.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--accent-deep)}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.settings-toggle{justify-content:flex-start;align-items:flex-start;gap:10px;cursor:pointer}.settings-toggle input{margin-top:2px;flex-shrink:0;width:15px;height:15px;accent-color:var(--accent)}.settings-toggle-text{display:flex;flex-direction:column;gap:2px}.settings-toggle-text small{color:var(--ink-faint);font-size:11px}.settings-seg{display:inline-flex;background:var(--paper-inset);border:1px solid var(--edge-strong);border-radius:9px;padding:2px;gap:2px}.settings-seg button{border:none;background:transparent;color:var(--ink-soft);padding:4px 14px;border-radius:7px;font:inherit;cursor:pointer}.settings-seg button.active{background:var(--accent-btn);color:#fff}.settings-btn-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.settings-btn{background:var(--paper-card);color:var(--ink);border:1px solid var(--edge-strong);border-radius:9px;padding:8px 12px;font:inherit;font-size:12.5px;text-align:left;cursor:pointer;transition:background .12s ease,border-color .12s ease}.settings-btn:hover:not(:disabled){border-color:var(--accent)}.settings-btn:focus-visible{outline:2px solid var(--accent-line);outline-offset:1px}.settings-btn:disabled{opacity:.4;cursor:not-allowed}.settings-btn.danger{color:var(--short);border-color:var(--short-soft);align-self:flex-start}.settings-btn.danger:hover:not(:disabled){background:var(--short-soft);border-color:var(--short)}.settings-note{margin:0;color:var(--ink-soft);font-size:12px}@media(max-width:560px){.settings-btn-row{grid-template-columns:1fr}}#toolbar .learn-btn{color:var(--ink);font-weight:600}#toolbar #btn-exercises.has-daily{position:relative}#toolbar #btn-exercises.has-daily:after{content:"";position:absolute;top:5px;right:5px;width:7px;height:7px;border-radius:50%;background:var(--osc, #f5b942);box-shadow:0 0 0 2px var(--paper-deep)}#toolbar .learn-btn:hover:not(:disabled){background:var(--paper-card);border-color:var(--edge);color:var(--ink)}#toolbar .learn-btn .btn-label{display:inline!important}.level-bar{position:absolute;top:12px;left:50%;transform:translate(-50%);z-index:5;display:flex;align-items:center;gap:8px;max-width:min(720px,92%);background:var(--paper-card);border:1px solid var(--edge-strong);border-radius:13px;padding:6px 8px 6px 7px;box-shadow:var(--shadow-card)}.level-bar[hidden]{display:none}.lb-badge{flex-shrink:0;width:24px;height:24px;border-radius:50%;background:var(--accent-soft);color:var(--accent-deep);border:1px solid var(--accent-line);font-family:var(--font-display);font-size:13px;display:flex;align-items:center;justify-content:center}.lb-title{font-weight:700;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:4px}.lb-btn{font:inherit;font-size:12px;background:var(--paper-card);border:1px solid var(--edge-strong);border-radius:8px;padding:4px 10px;box-shadow:0 2px 0 var(--edge-strong);white-space:nowrap;transition:transform .06s ease,box-shadow .06s ease}.lb-btn:hover{transform:translateY(-1px);box-shadow:0 3px 0 var(--edge-strong)}.lb-btn:active{transform:translateY(1px);box-shadow:0 0 0 var(--edge-strong)}.lb-btn.lb-solve{color:var(--ink-soft);border-style:dashed}.lb-btn.lb-solve:hover{color:var(--ink)}.lb-btn.lb-check{background:var(--accent-btn);border-color:var(--accent-deep);color:#fff;font-weight:700;box-shadow:0 2px 0 var(--accent-deep)}.lb-btn.lb-check:hover{box-shadow:0 3px 0 var(--accent-deep)}.lb-btn.lb-exit{border-color:transparent;box-shadow:none;color:var(--ink-faint);padding:4px 7px}.lb-btn.lb-exit:hover{color:var(--short);background:var(--short-soft);transform:none;box-shadow:none}.modal-dialog--journey{width:min(96vw,720px);height:88vh}.modal-dialog--rom-editor{width:min(96vw,640px)}.modal-dialog--journey .modal-body{background:radial-gradient(130% 42% at 50% 96px,color-mix(in srgb,var(--accent) 12%,transparent),transparent 62%),var(--paper, #11151c)}.journey-screen{display:flex;flex-direction:column;align-items:center}.exercises-screen{width:100%;max-width:760px;margin:0 auto;padding:2px 4px 8px}.exercises-head{text-align:center;margin-bottom:18px}.exercises-title{font-family:var(--font-display);font-size:24px;margin:0 0 4px;color:var(--ink)}.exercises-sub{margin:0;color:var(--ink-soft);font-size:13px}.exercises-course-link{display:inline-block;margin-top:8px;font-size:13px;font-weight:600;color:var(--accent-deep);text-decoration:none}.exercises-course-link:hover{text-decoration:underline}.ex-section{margin-bottom:20px}.ex-cat{font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 10px;padding-bottom:6px;border-bottom:1px solid var(--edge)}.ex-cat-count{float:right;letter-spacing:.04em;color:var(--ink-soft);font-weight:700}.ex-cat-count.complete{color:var(--hi)}.ex-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.ex-card{display:flex;flex-direction:column;gap:6px;text-align:left;padding:14px;border-radius:14px;border:1px solid var(--edge-strong);background:var(--paper-card);cursor:pointer;transition:transform var(--dur-fast) var(--ease-spring),border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}.ex-card:hover{border-color:var(--accent-line);transform:translateY(-2px);box-shadow:var(--shadow-pop)}.ex-card:focus-visible{outline:2px solid var(--accent-line);outline-offset:2px}.ex-card.solved{border-color:color-mix(in srgb,var(--hi) 55%,transparent);background:color-mix(in srgb,var(--hi) 7%,var(--paper-card))}.ex-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.ex-diff{font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:2px 8px;border-radius:999px;border:1px solid transparent}.ex-diff-easy{color:var(--hi);background:color-mix(in srgb,var(--hi) 14%,transparent);border-color:color-mix(in srgb,var(--hi) 40%,transparent)}.ex-diff-medium{color:var(--accent);background:var(--accent-soft);border-color:var(--accent-line)}.ex-diff-hard{color:var(--osc);background:color-mix(in srgb,var(--osc) 14%,transparent);border-color:color-mix(in srgb,var(--osc) 40%,transparent)}.ex-guided{font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:2px 8px;border-radius:999px;cursor:help;color:var(--accent-deep);background:var(--accent-ghost);border:1px solid var(--accent-line)}.ex-solved{font-size:11px;font-weight:700;color:var(--hi)}.ex-card-title{font-family:var(--font-display);font-size:16px;color:var(--ink);line-height:1.15}.ex-card-teaser{font-size:12.5px;color:var(--ink-soft);line-height:1.35}.journey-head{width:100%;display:flex;flex-direction:column;align-items:center;gap:11px;padding:2px 0 18px;margin-bottom:8px;border-bottom:1px solid var(--edge)}.journey-stats{display:flex;gap:9px;flex-wrap:wrap;justify-content:center}.journey-stat{display:flex;align-items:center;gap:8px;padding:7px 13px 7px 9px;border:1px solid var(--edge-strong);border-radius:13px;background:linear-gradient(180deg,color-mix(in srgb,var(--paper-card) 92%,transparent),var(--paper-inset));box-shadow:0 1px 2px #00000047,inset 0 1px #ffffff0a}.journey-stat-i{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;font-size:15px;line-height:1;background:color-mix(in srgb,var(--stat-accent, var(--accent)) 18%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--stat-accent, var(--accent)) 34%,transparent)}.journey-stat.is-progress{--stat-accent: var(--hi, #37d99a)}.journey-stat.is-xp{--stat-accent: var(--gold, #ffd25a)}.journey-stat.is-gold{--stat-accent: var(--gold, #ffd25a);cursor:help}.journey-stat.is-level{--stat-accent: var(--accent, #8b86ff)}.journey-stat.is-streak{--stat-accent: var(--osc, #fbbf3b)}.journey-stat.is-freeze{--stat-accent: var(--accent-line, #7db8ff);cursor:help}.journey-stat.is-best{--stat-accent: var(--gold, #ffd25a);cursor:help}.journey-stat-meta{display:flex;flex-direction:column;line-height:1.05}.journey-stat-v{font-family:var(--font-display);font-size:17px;font-weight:700;letter-spacing:.01em;color:var(--ink, #e8eef7)}.journey-stat.is-xp .journey-stat-v,.journey-stat.is-gold .journey-stat-v{color:var(--gold, #ffd25a)}.brief-gold-unlock{width:100%;margin-top:8px}.journey-stat.is-progress .journey-stat-v{color:var(--hi, #37d99a)}.journey-stat-l{font-size:9.5px;text-transform:uppercase;letter-spacing:.07em;font-weight:700;color:var(--ink-soft, #8a93a6)}.journey-progress{position:relative;width:min(84%,300px);height:9px;border-radius:999px;background:var(--paper-inset);box-shadow:inset 0 1px 3px #0006,inset 0 0 0 1px var(--edge-strong);overflow:hidden}.journey-progress-fill{height:100%;min-width:0;border-radius:999px;background:linear-gradient(90deg,#6ee7b7,var(--hi, #37d99a));box-shadow:0 0 10px color-mix(in srgb,var(--hi, #37d99a) 55%,transparent);transition:width .5s var(--ease-out, ease)}.journey-progress-pct{margin-top:-3px;font-size:10.5px;font-weight:700;letter-spacing:.03em;color:var(--ink-soft, #8a93a6)}.journey-next{display:inline-flex;align-items:center;gap:6px;margin-top:8px;padding:5px 12px;border-radius:999px;background:color-mix(in srgb,var(--hi, #6c63ff) 12%,transparent);border:1px solid color-mix(in srgb,var(--hi, #6c63ff) 28%,transparent);font-size:12px;color:var(--ink, #e7ebf3)}.journey-next strong{font-weight:800}.journey-next-i{font-size:13px;line-height:1}.journey-next-dist{font-weight:700;color:var(--hi, #6c63ff)}.journey-theory{display:inline-flex;align-items:center;gap:6px;padding:5px 13px;font-size:12px;font-weight:600;color:var(--accent, #6c8cff);text-decoration:none;border:1px solid var(--accent-line);border-radius:999px;background:var(--accent-ghost);transition:background var(--dur-fast, .12s) var(--ease, ease),transform var(--dur-fast, .12s)}.journey-theory:hover{background:var(--accent-soft);transform:translateY(-1px)}.journey-share{display:inline-flex;align-items:center;gap:6px;margin-left:8px;padding:5px 13px;font-size:12px;font-weight:600;cursor:pointer;color:var(--accent, #6c8cff);border:1px solid var(--accent-line);border-radius:999px;background:var(--accent-ghost);transition:background var(--dur-fast, .12s) var(--ease, ease),transform var(--dur-fast, .12s)}.journey-share:hover{background:var(--accent-soft);transform:translateY(-1px)}.journey-cal{margin:14px 0 4px}.journey-cal-label{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:6px}.journey-cal-grid{display:grid;grid-template-columns:repeat(30,1fr);gap:3px}.journey-cal-cell{aspect-ratio:1;border-radius:3px;background:var(--paper-inset);border:1px solid var(--edge)}.journey-cal-cell.is-active{background:var(--accent);border-color:var(--accent-deep)}.journey-cal-cell.is-today{outline:2px solid var(--accent-deep);outline-offset:1px}.journey-cal-sub{margin-top:6px;font-size:12px;color:var(--ink-soft)}.journey-milestones{margin-top:4px}.journey-milestones-head{display:flex;align-items:baseline;gap:8px;margin-bottom:8px}.journey-milestones-title{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft)}.journey-milestones-count{font-size:11px;font-weight:700;color:var(--accent)}.journey-milestones-row{display:flex;flex-wrap:wrap;gap:6px}.journey-badges-row{margin-top:6px}.milestone-chip{font-size:11.5px;font-weight:600;padding:4px 10px;border-radius:999px;border:1px solid var(--edge-strong);color:var(--ink-faint);background:var(--paper-inset);opacity:.7;cursor:help}.milestone-chip.earned{color:var(--hi, #37d99a);border-color:color-mix(in srgb,var(--hi, #37d99a) 45%,transparent);background:color-mix(in srgb,var(--hi, #37d99a) 12%,transparent);opacity:1}.journey-review{display:inline-flex;align-items:center;gap:8px;margin-bottom:8px;padding:7px 15px;font-size:12.5px;font-weight:700;color:var(--osc, #d98a1a);text-decoration:none;border:1px solid color-mix(in srgb,var(--osc, #d98a1a) 45%,transparent);border-radius:999px;background:color-mix(in srgb,var(--osc, #d98a1a) 12%,transparent);transition:background var(--dur-fast, .12s) var(--ease, ease),transform var(--dur-fast, .12s)}.journey-review small{font-weight:500;opacity:.8;font-size:11px}.journey-review:hover{background:color-mix(in srgb,var(--osc, #d98a1a) 20%,transparent);transform:translateY(-1px)}.roadmap{position:relative;margin:4px auto 30px}.roadmap-trail{position:absolute;top:0;left:0;z-index:0;pointer-events:none;overflow:visible}.trail-bed{stroke:color-mix(in srgb,var(--edge-strong) 90%,transparent);stroke-width:12;opacity:.5}.trail-track{stroke:color-mix(in srgb,var(--ink-soft, #8a93a6) 42%,transparent);stroke-width:6;stroke-dasharray:.5 15}.trail-done{stroke-width:8}.trail-done-glow{stroke-width:12;opacity:.55}.path-unit-banner{position:absolute;left:50%;transform:translate(-50%);z-index:2;display:inline-flex;align-items:center;gap:9px;white-space:nowrap;padding:6px 15px 6px 7px;border-radius:999px;color:var(--ink, #e8eef7);background:linear-gradient(180deg,color-mix(in srgb,var(--act-accent, var(--accent)) 18%,var(--paper-card)),var(--paper-card));border:1px solid color-mix(in srgb,var(--act-accent, var(--accent)) 50%,transparent);box-shadow:0 2px 8px #00000052,0 0 0 4px color-mix(in srgb,var(--act-accent, var(--accent)) 9%,transparent)}.path-unit-banner .pub-badge{padding:3px 9px;font-family:var(--font-display);font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:#fff;background:var(--act-accent, var(--accent, #6c8cff));border-radius:999px;box-shadow:0 2px 6px color-mix(in srgb,var(--act-accent, var(--accent)) 45%,transparent)}.path-unit-banner .pub-title{font-size:12.5px;font-weight:700;letter-spacing:.01em}.path-node{position:absolute;z-index:1;width:56px;height:56px;display:grid;place-items:center;padding:0;border:0;overflow:visible;border-radius:50%;background:var(--paper-card, #1a2030);color:var(--ink-soft, #8a93a6);font-family:var(--font-display);font-size:20px;font-weight:700;cursor:pointer;box-shadow:0 3px #00000059,0 6px 12px #0000004d;transition:transform var(--dur-fast, .12s) var(--ease-out, ease),box-shadow var(--dur-fast, .12s) var(--ease-out, ease),filter var(--dur-fast, .12s);-webkit-tap-highlight-color:transparent}.path-node:focus-visible{outline:3px solid color-mix(in srgb,var(--act-accent, var(--accent)) 70%,transparent);outline-offset:3px}.path-node:not(.locked):hover{transform:translateY(-2px);filter:brightness(1.05)}.path-node:not(.locked):active{transform:translateY(2px);box-shadow:0 1px #00000059,0 2px 6px #0000004d}.path-node.locked{cursor:not-allowed;color:var(--ink-faint, #5f6c87);background:radial-gradient(circle at 50% 40%,color-mix(in srgb,var(--act-accent) 6%,var(--paper-inset)),var(--paper-inset));box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--act-accent, var(--accent)) 20%,var(--edge-strong)),inset 0 2px 5px #00000073,0 2px 5px #00000038}.path-node:not(.completed):not(.locked):not(.premium-locked):not(.current){color:color-mix(in srgb,var(--act-accent, var(--accent)) 80%,var(--ink));background:radial-gradient(circle at 50% 34%,color-mix(in srgb,var(--act-accent, var(--accent)) 30%,var(--paper-card)),color-mix(in srgb,var(--act-accent, var(--accent)) 12%,var(--paper-card)));box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--act-accent, var(--accent)) 55%,transparent),0 5px color-mix(in srgb,var(--act-accent, var(--accent)) 34%,#000),0 9px 16px #00000059}.path-node.current{color:#fff;background:radial-gradient(circle at 50% 32%,color-mix(in srgb,var(--act-accent, var(--accent)) 82%,#fff),var(--act-accent, var(--accent, #6c8cff)));box-shadow:inset 0 2px 2px #fff6,0 6px color-mix(in srgb,var(--act-accent, var(--accent)) 52%,#000),0 12px 24px color-mix(in srgb,var(--act-accent, var(--accent)) 45%,transparent)}.path-node.current:before{content:"";position:absolute;inset:-5px;border-radius:50%;border:3px solid color-mix(in srgb,var(--act-accent, var(--accent)) 65%,transparent);pointer-events:none;animation:path-pulse 1.9s ease-out infinite}.path-node.completed{color:#06210f;background:radial-gradient(circle at 50% 32%,#7cf0bf,var(--hi, #37d99a));box-shadow:inset 0 2px 2px #ffffff73,0 6px color-mix(in srgb,var(--hi, #37d99a) 50%,#000),0 10px 18px color-mix(in srgb,var(--hi, #37d99a) 34%,transparent)}.path-node.completed .path-glyph{font-size:25px}.path-node.premium-locked{cursor:pointer;color:var(--gold, #ffd25a);background:radial-gradient(circle at 50% 36%,color-mix(in srgb,var(--gold, #ffd25a) 20%,var(--paper-card)),var(--paper-inset));box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--gold, #ffd25a) 62%,transparent),0 4px color-mix(in srgb,var(--gold, #ffd25a) 30%,#000),0 8px 16px #00000059}.path-glyph{display:grid;place-items:center;line-height:1}.path-node-name{position:absolute;top:50%;left:calc(100% + 12px);transform:translateY(-50%);width:max-content;max-width:148px;text-align:left;font-family:var(--font-display);font-weight:400;font-size:13.5px;line-height:1.2;letter-spacing:.01em;color:var(--ink);text-shadow:0 1px 3px var(--paper-deep)}.path-node-name.left{left:auto;right:calc(100% + 12px);text-align:right}.path-node-name.is-locked{color:var(--ink-soft)}.path-node.current .path-node-name{color:var(--act-accent, var(--accent))}@media(prefers-reduced-motion:no-preference){.path-node-name{transition:color .15s ease}}@media(max-width:520px){.path-node-name{max-width:78px;font-size:12px}}.path-glyph svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.5}.path-start-bubble{position:absolute;top:-27px;left:50%;transform:translate(-50%);padding:4px 11px;font-family:var(--font-display);font-size:11px;letter-spacing:.08em;color:#fff;background:var(--act-accent, var(--accent, #6c8cff));border-radius:999px;box-shadow:0 4px 12px color-mix(in srgb,var(--act-accent, var(--accent)) 50%,transparent);pointer-events:none;animation:path-bubble 1.5s ease-in-out infinite}.path-start-bubble:after{content:"";position:absolute;bottom:-4px;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:var(--act-accent, var(--accent, #6c8cff));border-bottom:0}@keyframes path-pulse{0%{transform:scale(.92);opacity:.85}70%{transform:scale(1.4);opacity:0}to{transform:scale(1.4);opacity:0}}@keyframes path-bubble{0%,to{transform:translate(-50%)}50%{transform:translate(-50%,-4px)}}@media(prefers-reduced-motion:reduce){.path-node.current:before{animation:none;opacity:.7}.path-start-bubble{animation:none}.journey-progress-fill{transition:none}}.level-list{display:flex;flex-direction:column;gap:7px;min-width:min(86vw,440px)}.arc-header{font-family:var(--font-display);font-size:13px;letter-spacing:.05em;color:var(--ink-soft);padding:10px 2px 2px;display:flex;align-items:center;gap:10px}.arc-header:after{content:"";flex:1;height:1px;background:var(--edge-strong)}.level-list .arc-header:first-child{padding-top:0}.level-card{display:flex;align-items:center;gap:12px;text-align:left;font:inherit;background:var(--paper-card);border:1.5px solid var(--edge-strong);border-radius:12px;padding:9px 12px;box-shadow:0 2px 0 var(--edge-strong);transition:transform .06s ease,box-shadow .06s ease,border-color .1s ease}.level-card:not(:disabled):hover{transform:translateY(-1px);border-color:var(--accent);box-shadow:0 3px 0 var(--accent-line)}.level-card.done{border-color:color-mix(in srgb,var(--hi) 45%,transparent)}.level-card.current{border-color:var(--accent);background:var(--accent-soft)}.level-card.locked{opacity:.55;cursor:not-allowed;box-shadow:none}.theory-library-link{text-decoration:none;color:inherit;border-color:var(--accent);background:var(--accent-soft)}.theory-library-link .lc-status svg{stroke:var(--accent-deep)}.lc-status{flex-shrink:0;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-size:14px;background:var(--accent-soft);color:var(--accent-deep);border:1px solid var(--accent-line)}.level-card.done .lc-status{background:var(--hi-soft);color:var(--hi);border-color:color-mix(in srgb,var(--hi) 45%,transparent)}.level-card.locked .lc-status{background:var(--paper-inset);border-color:var(--edge-strong)}.lc-status svg{width:13px;height:13px;stroke:var(--ink-faint);stroke-width:1.6;fill:none;stroke-linecap:round;stroke-linejoin:round}.lc-text{display:flex;flex-direction:column;gap:1px;min-width:0}.lc-title{font-weight:700;font-size:13.5px}.lc-teaser{font-size:11.5px;color:var(--ink-soft)}.level-card.done .lc-teaser{color:var(--hi)}.briefing{max-width:470px}.brief-para{margin:0 0 10px;font-size:13.5px;line-height:1.55;color:var(--ink)}.brief-task{display:flex;flex-direction:column;gap:3px;background:var(--accent-soft);border-left:3px solid var(--accent);border-radius:8px;padding:9px 12px;margin:12px 0;font-size:13px;line-height:1.5}.brief-task-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--accent-deep)}.eq{display:block;margin:9px 0;padding:9px 14px;text-align:center;white-space:pre-wrap;font-family:var(--font-mono);font-size:15px;font-weight:600;letter-spacing:.03em;color:var(--ink);background:var(--paper-inset);border:1px solid var(--edge-strong);border-radius:9px}.eq .eq-line{display:block;white-space:pre-wrap}.eq .eq-line+.eq-line{margin-top:5px}.eq .eq-arrow{color:var(--ink-faint);font-weight:500}.eq .eq-num{color:var(--hi)}.eq .eq-var{color:var(--osc)}.eq .eq-op{color:var(--accent)}.eq .eq-note{color:var(--ink-faint);font-weight:500}.brief-task .eq{background:var(--paper-card);border-color:var(--accent-line)}.tok{font-family:var(--font-mono);font-size:.9em;padding:1px 5px;border-radius:5px;background:var(--paper-inset);border:1px solid var(--edge);color:var(--accent-deep)}.hints-list .hint-text{flex:1;min-width:0}.hints-list .hint-text .eq{font-size:13.5px;margin:7px 0;padding:7px 10px}.target-table{margin:10px 0 4px}.brief-note{font-size:11.5px;color:var(--ink-faint);margin:10px 0 0}.brief-learn-link{display:inline-block;margin-top:8px;font-size:11.5px;color:var(--accent-deep);text-decoration:none}.brief-learn-link:hover{color:var(--accent);text-decoration:underline}.brief-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.modal-dialog--brief .modal-body{padding-bottom:0}.modal-dialog--brief .brief-actions{position:sticky;bottom:0;margin-top:16px;padding:12px 0 16px;background:var(--paper);border-top:1px dashed var(--edge-strong)}.btn-primary,.btn-secondary{font:inherit;font-weight:700;border-radius:10px;padding:8px 16px;transition:transform .06s ease,box-shadow .06s ease}.share-card{display:flex;flex-direction:column;gap:14px;align-items:stretch}.share-card-preview{width:100%;height:auto;display:block;border-radius:12px;border:1px solid var(--edge-strong);box-shadow:0 8px 28px #00000047}.share-card-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.btn-primary{background:var(--accent-btn);border:1px solid var(--accent-deep);color:#fff;box-shadow:0 2px 0 var(--accent-deep)}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 3px 0 var(--accent-deep)}.btn-primary:active{transform:translateY(1px);box-shadow:0 0 0 var(--accent-deep)}.btn-secondary{background:var(--paper-card);border:1px solid var(--edge-strong);color:var(--ink);box-shadow:0 2px 0 var(--edge-strong)}.btn-secondary:hover{transform:translateY(-1px);border-color:var(--ink-faint)}.level-result{max-width:470px;text-align:center}.level-result.failure{text-align:left}.result-mark{width:54px;height:54px;margin:2px auto 10px;border-radius:50%;background:var(--hi-soft);color:var(--hi);border:2px solid var(--hi);font-size:28px;line-height:1;display:flex;align-items:center;justify-content:center;animation:pop-in .35s cubic-bezier(.2,.9,.3,1.4) both}.brief-mystery{position:relative;margin:10px 0;padding:10px;border:1px solid var(--edge-strong);border-radius:12px;background:var(--paper-card);text-align:center;color:var(--ink-soft);font-size:12px;overflow-x:auto}.brief-mystery svg{max-width:100%;height:auto}.brief-mystery:hover .diagram-zoom-controls,.brief-mystery .diagram-zoom-controls:focus-within{opacity:1}.diagram-scroll{overflow:hidden;max-width:100%;margin:0 auto;touch-action:pan-y;scrollbar-width:thin;scrollbar-color:var(--edge-strong) transparent}.diagram-scroll svg{max-width:none}.diagram-scroll.zoomed{overflow:auto;overscroll-behavior:contain;touch-action:none;cursor:grab;border:1px solid var(--edge);border-radius:10px}.diagram-scroll.zoomed.grabbing{cursor:grabbing}.result-mark.warn{background:color-mix(in srgb,var(--osc) 16%,transparent);color:var(--osc);border-color:var(--osc)}@keyframes pop-in{0%{opacity:0;transform:scale(.5)}}.result-title{font-family:var(--font-display);font-size:17px;margin:0 0 6px;color:var(--ink)}.result-progress{color:var(--hi, #37d99a);font-size:.82em;font-family:var(--font-ui);font-weight:700}.result-stats{font-size:12.5px;color:var(--ink-soft);margin:0 0 6px}.result-progress{margin:14px auto 4px;max-width:300px}.result-progress-bar{height:8px;border-radius:999px;background:var(--accent-ghost);border:1px solid var(--accent-line);overflow:hidden}.result-progress-fill{height:100%;background:var(--accent);transition:width var(--dur, .4s) var(--ease, ease)}.result-progress-label{display:block;margin-top:5px;font-size:12px;font-weight:600;color:var(--accent-deep)}.result-note{font-size:12px;color:var(--accent-deep);background:var(--accent-soft);border-radius:8px;padding:7px 10px;margin:10px 0 0}.problem-list{margin:4px 0;padding-left:4px;list-style:none;display:flex;flex-direction:column;gap:7px}.problem-list li{font-size:13px;line-height:1.45;background:var(--osc-soft);border-left:3px solid var(--osc);border-radius:7px;padding:8px 11px}.result-table{margin:10px 0 4px}.result-table tr.row-bad td{background:var(--short-soft)}.result-table td.cell-bad{color:var(--short);font-weight:700}.truth-table td.seq-num{color:var(--ink-faint);font-size:11px;border-left:none}.truth-table td.seq-set{font-weight:700;background:var(--accent-soft)}.truth-table td.seq-note{font-family:var(--font-ui);font-style:italic;font-size:11px;color:var(--ink-soft);text-align:left;border-right:none;min-width:90px}.welcome-cta{display:block;width:100%;font:inherit;font-weight:700;font-size:14px;color:#fff;background:var(--accent-btn);border:1px solid var(--accent-deep);border-radius:12px;padding:11px 16px;margin:0 0 16px;box-shadow:0 3px 0 var(--accent-deep);transition:transform .06s ease,box-shadow .06s ease}.welcome-cta:hover{transform:translateY(-1px);box-shadow:0 4px 0 var(--accent-deep)}.welcome-cta:active{transform:translateY(1px);box-shadow:0 0 0 var(--accent-deep)}.welcome-tour{display:block;width:100%;font:inherit;font-size:12.5px;font-weight:600;color:var(--ink-soft);background:transparent;border:1px dashed var(--edge-strong);border-radius:10px;padding:8px 12px;margin:-6px 0 14px;cursor:pointer;transition:color var(--dur) var(--ease),border-color var(--dur) var(--ease),background var(--dur) var(--ease)}.welcome-tour:hover{color:var(--accent-deep);border-color:var(--accent-line);background:var(--accent-soft)}.toast-host{position:fixed;top:66px;right:16px;z-index:200;display:flex;flex-direction:column;gap:8px;align-items:flex-end;pointer-events:none;width:max-content;max-width:min(92vw,470px)}.toast{pointer-events:auto;display:flex;align-items:flex-start;gap:9px;background:var(--paper-card);border:1px solid var(--edge-strong);border-left-width:4px;border-radius:11px;padding:10px 12px;box-shadow:var(--shadow-pop);font-size:13px;line-height:1.42;color:var(--ink);animation:toast-in var(--dur-slow) var(--ease-spring) both}.toast-out{animation:toast-out var(--dur-slow) var(--ease) forwards}@keyframes toast-in{0%{opacity:0;transform:translateY(-10px) scale(.98)}}@keyframes toast-out{to{opacity:0;transform:translateY(-8px) scale(.98)}}.toast-icon{width:17px;height:17px;flex-shrink:0;margin-top:1px;stroke-width:1.7;fill:none;stroke-linecap:round;stroke-linejoin:round}.toast-msg{flex:1}.toast-count{flex-shrink:0;align-self:center;min-width:1.6em;padding:1px 6px;border-radius:8px;background:var(--paper-inset);border:1px solid var(--edge-strong);font-size:11.5px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink-soft);text-align:center}.toast-bump{animation:toast-bump var(--dur) var(--ease-spring)}@keyframes toast-bump{0%{transform:scale(1)}40%{transform:scale(1.035)}to{transform:scale(1)}}.toast-close{flex-shrink:0;background:transparent;border:none;color:var(--ink-soft);font-size:12px;cursor:pointer;padding:0 2px}.toast-close:hover{color:var(--ink)}.toast-action{flex-shrink:0;background:var(--accent-soft);border:1px solid var(--accent-line);color:var(--accent-deep);font:inherit;font-size:12px;font-weight:700;border-radius:7px;padding:3px 10px;cursor:pointer}.toast-action:hover{background:var(--accent-ghost);border-color:var(--accent)}.toast-info{border-left-color:var(--accent)}.toast-info .toast-icon{stroke:var(--accent)}.toast-success{border-left-color:var(--hi)}.toast-success .toast-icon{stroke:var(--hi)}.toast-warn{border-left-color:var(--osc)}.toast-warn .toast-icon{stroke:var(--osc)}.toast-error{border-left-color:var(--short)}.toast-error .toast-icon{stroke:var(--short)}.hints-panel{width:min(360px,86vw);background:var(--paper-card);border:1px solid var(--edge-strong);border-radius:13px;box-shadow:var(--shadow-pop);overflow:hidden;pointer-events:auto;transform-origin:bottom center}.hints-panel[hidden]{display:none}.hint-dock:not(.expanded) .hints-panel{opacity:0;transform:translateY(8px) scaleY(.96);max-height:0;border-width:0;pointer-events:none;transition:opacity var(--dur-fast) var(--ease),transform var(--dur) var(--ease),max-height var(--dur) var(--ease),border-width var(--dur) var(--ease)}.hint-dock.expanded .hints-panel{opacity:1;transform:translateY(0) scaleY(1);max-height:46vh;transition:opacity var(--dur) var(--ease-out),transform var(--dur) var(--ease-spring),max-height var(--dur-slow) var(--ease-out)}.hints-head{display:flex;align-items:center;gap:7px;padding:8px 11px;user-select:none;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--accent);background:var(--accent-soft);border-bottom:1px solid var(--edge)}.hints-head svg{width:14px;height:14px;stroke:var(--accent);stroke-width:1.7;fill:none;stroke-linecap:round;stroke-linejoin:round}.hints-head .hints-count{margin-left:auto;color:var(--ink-soft);font-weight:600;letter-spacing:0;text-transform:none}.hints-hide{display:inline-flex;align-items:center;gap:3px;border:none;background:none;padding:2px 4px;font:inherit;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);cursor:pointer}.hints-hide svg{width:12px;height:12px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}.hints-hide:hover{color:var(--accent-deep)}.hints-list li.past{opacity:.62;cursor:pointer}.hints-list li.past .hint-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hints-list li.past .hint-text>*{display:inline}.hints-list li.past .hint-text .eq{padding:0 4px;margin:0;font-size:12px}.hints-list li.past:hover{opacity:.9}.hints-list{list-style:none;margin:0;padding:9px 11px 11px;display:flex;flex-direction:column;gap:9px;max-height:38vh;overflow-y:auto}.hints-list li{display:flex;gap:8px;font-size:12.5px;line-height:1.45;color:var(--ink)}.hints-list .hint-num{flex-shrink:0;width:18px;height:18px;border-radius:50%;background:var(--accent-soft);border:1px solid var(--accent-line);color:var(--accent);font-family:var(--font-display);font-size:11px;display:flex;align-items:center;justify-content:center}.context-menu{position:fixed;z-index:300;min-width:190px;background:var(--paper-card);border:1px solid var(--edge-strong);border-radius:11px;box-shadow:var(--shadow-pop);padding:5px;display:flex;flex-direction:column;gap:1px;font-size:13px;transform-origin:top left;opacity:0;transform:translateY(-5px) scale(.97);transition:opacity var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.context-menu.open{opacity:1;transform:translateY(0) scale(1)}.context-menu.closing{opacity:0;transform:translateY(-4px) scale(.98);transition:opacity var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}.ctx-item{display:flex;align-items:center;gap:9px;width:100%;background:transparent;border:none;border-radius:7px;padding:7px 9px;text-align:left;cursor:pointer;color:var(--ink);font:inherit}.ctx-item:hover:not(:disabled){background:var(--accent-soft)}.ctx-item:disabled{cursor:default;color:var(--ink-faint)}.ctx-danger:hover:not(:disabled){background:var(--short-soft);color:var(--short)}.ctx-icon{width:15px;height:15px;flex-shrink:0;stroke:currentColor;stroke-width:1.6;fill:none;stroke-linecap:round;stroke-linejoin:round}.ctx-danger .ctx-icon{stroke:var(--short)}.ctx-item:disabled .ctx-icon{stroke:var(--ink-faint)}.ctx-label{flex:1}.ctx-kbd{font-family:var(--font-mono);font-size:10.5px;color:var(--ink-faint)}.ctx-note{font-size:10.5px;color:var(--ink-faint);font-style:italic}.ctx-sep{height:1px;background:var(--edge-strong);margin:4px}#learn-root{height:100vh;display:flex;flex-direction:column;background:var(--paper)}.learn-header{display:flex;align-items:center;gap:12px;padding:0 18px;height:56px;flex-shrink:0;background:var(--paper-deep);border-bottom:1px solid var(--edge-strong)}.learn-brand{display:flex;align-items:center;gap:7px;text-decoration:none;color:var(--ink)}.learn-brand .brand-logo{width:30px;height:22px;stroke:var(--accent);stroke-width:2;fill:none;stroke-linejoin:round;stroke-linecap:round}.learn-brand .brand{font-family:var(--font-display);font-size:21px;letter-spacing:.02em;padding-top:2px}.learn-brand .brand em{font-style:normal;color:var(--accent)}.learn-crumb{font-family:var(--font-mono);font-size:12px;color:var(--ink-soft);border:1px solid var(--edge-strong);border-radius:7px;padding:3px 9px}.learn-spacer{flex:1}.learn-header-links{display:flex;align-items:center;gap:2px;flex-shrink:0;margin-right:4px}.learn-header-links a{text-decoration:none;font-size:12.5px;font-weight:600;white-space:nowrap;color:var(--ink-soft);border:1px solid transparent;border-radius:8px;padding:6px 9px;transition:color .12s ease,border-color .12s ease,background .12s ease}.learn-header-links a:hover{color:var(--ink);border-color:var(--accent-line);background:var(--paper-card)}.learn-header-links a[aria-current=page]{color:var(--accent);border-color:var(--accent-line);background:var(--paper-card)}@media(max-width:1060px){.learn-header-links{display:none}}.learn-lab-link{text-decoration:none;font-weight:700;font-size:13px;color:#fff;background:var(--accent-btn);border:1px solid var(--accent-deep);border-radius:9px;padding:7px 13px;box-shadow:0 2px 0 var(--accent-deep)}.learn-lab-link:hover{background:var(--accent-deep)}[data-theme=dark] .learn-lab-link{color:#fff;background:#5747c9;border-color:transparent;box-shadow:0 2px #00000059}[data-theme=dark] .learn-lab-link:hover{background:#6c5ce7}.learn-theme-toggle{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:34px;height:34px;padding:0;cursor:pointer;color:var(--ink-soft);background:none;border:1px solid var(--edge-strong);border-radius:9px;transition:color .12s ease,border-color .12s ease,background .12s ease}.learn-theme-toggle:hover{color:var(--ink);border-color:var(--accent-line);background:var(--paper-card)}.learn-theme-toggle svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}:root[data-theme=light] .learn-theme-toggle svg path:not(.moon-star){fill:currentColor;stroke-width:.5}.tool-theme-toggle{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:34px;height:34px;padding:0;cursor:pointer;color:var(--ink-soft);background:none;border:1px solid var(--edge-strong);border-radius:9px;transition:color .12s ease,border-color .12s ease,background .12s ease}.tool-theme-toggle:hover{color:var(--ink);border-color:var(--accent-line);background:var(--paper-card)}.tool-theme-toggle svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}:root[data-theme=light] .tool-theme-toggle svg path:not(.moon-star){fill:currentColor;stroke-width:.5}.learn-lab-link,.tool-lab-link{white-space:nowrap;flex-shrink:0}@media(max-width:480px){.learn-crumb,.tool-crumb,.learn-theme-toggle{display:none}.learn-header,.tool-header{padding-left:12px;padding-right:12px}}.learn-nav-toggle,.learn-nav-backdrop{display:none}.learn-layout{flex:1;display:grid;grid-template-columns:244px 1fr;min-height:0}.learn-nav{border-right:1px solid var(--edge-strong);background:var(--paper-deep);overflow-y:auto;padding:14px 10px 40px}.learn-search{position:relative;margin:0 2px 10px}.learn-search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:14px;height:14px;pointer-events:none;color:var(--ink-faint)}.learn-search-icon svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}.learn-search-input{width:100%;box-sizing:border-box;padding:8px 10px 8px 30px;font-family:inherit;font-size:13px;color:var(--ink);background:var(--paper-inset);border:1px solid var(--edge-strong);border-radius:9px;transition:border-color .12s ease,box-shadow .12s ease}.learn-search-input::placeholder{color:var(--ink-faint)}.learn-search-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.learn-search-input::-webkit-search-cancel-button{-webkit-appearance:none}.learn-search-results{display:flex;flex-direction:column;gap:2px;margin:0 2px 6px}.learn-search-item{display:flex;flex-direction:column;gap:2px;text-decoration:none;padding:7px 10px;border-radius:8px;border:1px solid transparent}.learn-search-item:hover,.learn-search-item.active{background:var(--paper-card);border-color:var(--edge-strong)}.learn-search-item.active{border-color:var(--accent-line)}.learn-search-item-title{font-size:13px;font-weight:600;color:var(--ink)}.learn-search-item-group{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--group-accent, var(--accent-deep))}.learn-search-empty{padding:10px 12px;font-size:12.5px;color:var(--ink-soft)}.learn-nav-home{display:block;text-decoration:none;color:var(--ink);font-weight:700;font-size:13px;padding:7px 10px;border-radius:8px}.learn-nav-home:hover{background:var(--paper-card)}.learn-nav-group{display:block;text-decoration:none;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-soft);padding:16px 10px 5px}.learn-nav-group:hover{color:var(--accent-deep)}.learn-nav-item{display:block;position:relative;text-decoration:none;color:var(--ink-soft);font-size:13.5px;padding:6px 22px 6px 10px;border-radius:8px;border-left:2px solid transparent}.learn-nav-item.is-mastered:after,.learn-nav-item.is-started:after{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-size:11px;line-height:1}.learn-nav-item.is-mastered:after{content:"✓";color:var(--hi);font-weight:700}.learn-nav-item.is-started:after{content:"•";color:var(--accent);font-size:15px}.learn-nav-item:hover{background:var(--paper-card);color:var(--ink)}.learn-nav-item.active{background:var(--accent-soft);color:var(--accent-deep);font-weight:700;border-left-color:var(--accent)}.learn-nav-aux{display:flex;flex-wrap:wrap;gap:8px 14px;padding:16px 10px 4px;margin-top:12px;border-top:1px solid var(--edge)}.learn-nav-aux a{text-decoration:none;color:var(--ink-soft);font-size:12.5px}.learn-nav-aux a:hover{color:var(--accent-deep)}.lesson-fault{margin:22px 0;padding:15px 17px 16px;background:var(--osc-soft);border:1px solid var(--osc);border-left-width:3px;border-radius:12px}.fault-tag{display:inline-block;font-size:11px;font-weight:700;line-height:1;text-transform:uppercase;letter-spacing:.1em;color:color-mix(in srgb,var(--osc) 72%,var(--ink));margin-bottom:10px}.fault-signals{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.fault-signal{display:inline-flex;align-items:center;gap:7px;background:var(--paper-card);border:1px solid var(--edge-strong);border-radius:8px;padding:5px 10px}.fault-signal-label{font-family:var(--font-mono);font-size:12.5px;font-weight:700;color:var(--ink)}.fault-signal-value{font-family:var(--font-mono);font-size:13px;font-weight:700;color:var(--ink-soft)}.fault-signal-value.v-hi{color:var(--hi)}.fault-signal-value.v-lo{color:var(--ink-soft)}.fault-signal-value.v-float{color:var(--float)}.fault-signal-value.v-short{color:var(--short)}.fault-where{font-size:13.5px;color:var(--ink-soft);margin-bottom:4px}.fault-reveal{margin-top:8px;font-family:var(--font-ui, inherit);font-weight:700;font-size:12.5px;cursor:pointer;color:var(--ink);background:var(--paper-card);border:1px solid var(--osc);border-radius:8px;padding:6px 13px;box-shadow:0 1px 0 var(--osc);transition:transform .12s ease,box-shadow .12s ease,background .12s ease}.fault-reveal:hover{background:var(--osc);color:#2b1d00;transform:translateY(-1px);box-shadow:0 2px 0 var(--osc)}.fault-reveal:active{transform:translateY(0);box-shadow:none}.fault-explain{margin-top:12px;padding-top:12px;border-top:1px dashed var(--osc);font-size:14.5px;line-height:1.6;color:var(--ink)}.fault-explain-label{display:block;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:color-mix(in srgb,var(--osc) 72%,var(--ink));margin-bottom:5px}.lesson-crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:7px;font-size:12.5px;margin:0 0 12px;color:var(--ink-soft)}.lesson-crumbs a{color:var(--ink-soft);text-decoration:none}.lesson-crumbs a:hover{color:var(--accent-deep)}.lesson-crumbs [aria-current=page]{color:var(--ink)}.crumb-sep{color:var(--ink-faint)}.lesson-nextup{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:30px 0 6px}.glossary-az{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 20px;padding:12px 0;border-top:1px solid var(--edge);border-bottom:1px solid var(--edge);position:sticky;top:0;background:var(--paper);z-index:2}.glossary-az a{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0 6px;font-weight:700;font-size:13px;text-decoration:none;color:var(--accent-deep);background:var(--accent-ghost);border:1px solid var(--accent-line);border-radius:7px}.glossary-az a:hover{background:var(--accent);color:#fff;border-color:transparent}.glossary-letter{scroll-margin-top:56px}.glossary{margin:4px 0 28px}.glossary dt{margin-top:13px;font-weight:600}.glossary dt a{color:var(--accent-deep);text-decoration:none}.glossary dt a:hover{text-decoration:underline}.glossary dd{margin:2px 0 0;color:var(--ink-soft);line-height:1.55}.learn-content{overflow-y:auto;padding:32px 40px 80px}.learn-hero{max-width:760px;margin-bottom:14px}.learn-hero-mark svg{width:64px;height:46px;stroke:var(--accent);stroke-width:1.8;fill:none;stroke-linejoin:round;stroke-linecap:round}.learn-hero-title{font-family:var(--font-display);font-weight:400;font-size:34px;margin:8px 0;color:var(--ink)}.learn-hero-sub{font-size:15px;line-height:1.6;color:var(--ink-soft);margin:0 0 18px}.learn-cta{display:inline-block;text-decoration:none;font-weight:800;font-size:15px;color:#fff;background:var(--accent-btn);border:1px solid var(--accent-deep);border-radius:11px;padding:12px 22px;box-shadow:0 3px 0 var(--accent-deep)}.learn-cta:hover{transform:translateY(-1px);box-shadow:0 4px 0 var(--accent-deep)}.learn-cta-alt{display:inline-block;text-decoration:none;font-weight:700;font-size:13px;color:var(--accent-deep);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:11px;padding:10px 16px;margin-left:10px;box-shadow:0 2px 0 var(--accent-line);transition:transform .12s ease,box-shadow .12s ease,background .12s ease}.learn-cta-alt:hover{transform:translateY(-1px);box-shadow:0 3px 0 var(--accent-line);background:var(--accent-ghost)}@media(max-width:520px){.learn-cta-alt{margin-left:0;margin-top:10px}}.learn-cta-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.learn-cta-row .learn-cta-alt{margin-left:0}.learn-daily-band{display:flex;align-items:center;gap:12px;margin-top:16px;padding:11px 15px;text-decoration:none;background:linear-gradient(120deg,var(--accent-soft),transparent 70%),var(--paper-card);border:1px solid var(--accent-line);border-radius:12px;transition:border-color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}.learn-daily-band:hover{border-color:var(--accent);transform:translateY(-1px)}.learn-daily-tag{flex:0 0 auto;font-family:var(--font-mono);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--accent-deep);background:var(--accent-soft);border-radius:999px;padding:3px 9px}.learn-daily-name{flex:1 1 auto;min-width:0;font-weight:700;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.learn-daily-go{flex:0 0 auto;font-size:13px;color:var(--accent-deep);font-weight:600}@media(max-width:560px){.learn-daily-go{display:none}}.learn-daily-go-mini{display:none;flex:0 0 auto;font-size:13px;font-weight:700;color:var(--accent-deep);white-space:nowrap}@media(max-width:560px){.learn-daily-go-mini{display:inline}}.learn-foot{margin:40px 0 8px;padding-top:22px;border-top:1px solid var(--edge-strong);display:flex;flex-wrap:wrap;align-items:center;gap:10px 20px}.learn-foot-links{display:flex;flex-wrap:wrap;gap:8px 18px}.learn-foot-links a{font-size:13.5px;font-weight:600;color:var(--ink-soft);text-decoration:none}.learn-foot-links a:hover{color:var(--accent-deep);text-decoration:underline}.learn-foot-brand{margin-left:auto;font-size:12.5px;color:var(--ink-faint, var(--ink-soft))}@media(max-width:560px){.learn-foot-brand{margin-left:0}}.learn-cta-review{display:inline-block;font-family:inherit;cursor:pointer;font-weight:700;font-size:13px;color:#a86d0a;background:color-mix(in srgb,#f5b942 14%,transparent);border:1.5px solid #e0a52c;border-radius:11px;padding:9px 15px;transition:transform .12s ease,background .12s ease}.learn-cta-review:hover{transform:translateY(-1px);background:color-mix(in srgb,#f5b942 24%,transparent)}.learn-progress-strip{background:var(--paper-card);border:1.5px solid var(--edge-strong);border-radius:12px;padding:14px 16px;margin:0 0 18px;max-width:520px}.learn-progress-head{display:flex;align-items:baseline;justify-content:space-between}.learn-progress-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-soft)}.learn-progress-pct{font-family:var(--font-display);font-size:22px;color:var(--accent-deep)}.learn-progress-bar{height:8px;border-radius:999px;background:var(--edge-strong);overflow:hidden;margin:8px 0 10px}.learn-progress-fill{height:100%;border-radius:999px;background:var(--accent);transition:width .5s var(--ease, ease)}.learn-progress-stats{display:flex;gap:16px;font-size:12.5px;color:var(--ink-soft);flex-wrap:wrap}.learn-progress-stats b{color:var(--ink);font-weight:800}.learn-progress-streak{margin-left:auto;color:var(--osc, #d98a1a);cursor:help}.learn-progress-streak b{color:var(--osc, #d98a1a)}.lesson-cta-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:34px 0 4px}.lesson-cta-row .learn-cta-alt{margin-left:0}.cheat-summary-wrap{overflow-x:auto;margin:6px 0 8px}.cheat-summary{border-collapse:collapse;width:100%;font-size:14px;line-height:1.5}.cheat-summary th,.cheat-summary td{padding:8px 12px;border:1px solid var(--edge-strong);text-align:left;vertical-align:top}.cheat-summary th{background:var(--paper-inset);color:var(--ink);font-weight:600;font-family:var(--font-display);font-weight:400;font-size:14.5px}.cheat-summary tr:nth-child(2n) td{background:var(--paper-inset)}.cheat-summary td{color:var(--ink-soft)}.cheat-summary .cheat-gate{font-weight:700}.cheat-summary .cheat-gate a{color:var(--accent-deep);text-decoration:none}.cheat-summary .cheat-gate a:hover{text-decoration:underline}.cheat-summary td.cheat-uni-yes{color:var(--hi);font-weight:700}.cheat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;margin:6px 0 8px}.cheat-card{display:flex;flex-direction:column;align-items:flex-start;gap:9px;background:var(--paper-card);border:1.5px solid var(--edge-strong);border-radius:12px;padding:14px 16px;box-shadow:0 2px 0 var(--edge-strong)}.cheat-card-h{margin:0;font-family:var(--font-display);font-weight:400;font-size:20px;line-height:1}.cheat-card-h a{color:var(--ink);text-decoration:none}.cheat-card-h a:hover{color:var(--accent-deep)}.cheat-expr{font-size:13px}.cheat-card .truth-table{font-size:12.5px}.cheat-built{font-size:12.5px;line-height:1.5;color:var(--ink-soft);margin:0}.cheat-link{font-size:12.5px;font-weight:700;color:var(--accent-deep);text-decoration:none;margin-top:auto}.cheat-link:hover{text-decoration:underline}.truth-table td.ff-next{font-weight:700;color:var(--accent-deep);white-space:nowrap}.learn-journey{margin:4px 0 26px}.learn-journey-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);margin-bottom:10px}.learn-journey-sub{font-size:11.5px;color:var(--ink-faint);margin:-4px 0 10px}.learn-journey-track{display:flex;flex-wrap:wrap;gap:8px}.learn-journey-stop{flex:1 1 118px;min-width:108px;display:flex;flex-direction:column;gap:7px;cursor:pointer;text-align:left;padding:9px 12px;border-radius:10px;font:inherit;background:var(--paper-card);border:1px solid var(--edge-strong);border-top:2px solid var(--group-accent, var(--accent));transition:transform .1s var(--ease, ease),border-color .12s ease,box-shadow .12s ease}.learn-journey-stop:hover{transform:translateY(-2px);border-color:var(--group-accent, var(--accent));box-shadow:0 4px 14px #00000024}.journey-stop-name{font-size:12px;font-weight:700;color:var(--ink);line-height:1.2}.journey-stop-bar{height:5px;border-radius:999px;background:var(--edge-strong);overflow:hidden}.journey-stop-fill{display:block;height:100%;background:var(--group-accent, var(--accent));border-radius:999px;transition:width .5s var(--ease, ease)}.journey-stop-frac{font-size:10.5px;font-weight:700;color:var(--ink-soft);font-family:var(--font-mono)}.learn-group{margin-top:34px;scroll-margin-top:8px}.learn-group:first-of-type{margin-top:24px}.learn-group-h{display:flex;align-items:baseline;gap:12px;margin:0 0 14px;padding:2px 0 2px 13px;border-left:3px solid var(--group-accent, var(--accent))}.learn-group-name{font-family:var(--font-display);font-weight:400;font-size:19px;color:var(--ink)}.learn-group-count{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);margin-left:auto}.learn-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}.learn-card{position:relative;display:flex;flex-direction:column;gap:3px;text-decoration:none;background:var(--paper-card);border:1.5px solid var(--edge-strong);border-radius:12px;padding:14px 16px;box-shadow:0 2px 0 var(--edge-strong);overflow:hidden;transition:transform .1s var(--ease, ease),box-shadow .1s ease,border-color .12s ease}.learn-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--group-accent, var(--accent));opacity:0;transition:opacity .12s ease}.learn-card:hover{transform:translateY(-2px);border-color:var(--group-accent, var(--accent));box-shadow:0 6px 18px #00000029}.learn-card:hover:before{opacity:1}.learn-card:focus-visible{outline:2px solid var(--group-accent, var(--accent));outline-offset:2px;transform:translateY(-2px);border-color:var(--group-accent, var(--accent));box-shadow:0 6px 18px #00000029}.learn-card:focus-visible:before{opacity:1}.learn-card-title{font-family:var(--font-display);font-size:17px;color:var(--ink)}.learn-card-sub{font-size:12px;font-weight:700;color:var(--group-accent, var(--accent-deep))}.learn-card-summary{font-size:12.5px;color:var(--ink-soft);line-height:1.45;margin-top:4px}.lesson{max-width:720px}.lesson-shell{display:flex;align-items:flex-start;gap:44px}.lesson-shell .lesson{flex:1 1 auto;min-width:0}.lesson-toc{position:sticky;top:8px;flex:0 0 196px;width:196px;align-self:flex-start;max-height:calc(100vh - 96px);overflow-y:auto;padding-left:16px;border-left:1px solid var(--edge-strong)}.lesson-toc-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:var(--ink-faint);margin-bottom:10px}.lesson-toc-list{display:flex;flex-direction:column;gap:1px}.lesson-toc-list a{font-size:12.5px;line-height:1.35;color:var(--ink-soft);text-decoration:none;padding:5px 10px;border-radius:6px;transition:color .12s ease,background .12s ease}.lesson-toc-list a:hover{color:var(--ink);background:var(--paper-card)}.lesson-toc-list a.active{color:var(--accent-deep);background:var(--accent-soft);font-weight:700}.lesson-h{scroll-margin-top:12px}@media(max-width:1080px){.lesson-toc{display:none}.lesson-shell{display:block}}.lesson-eyebrow{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--accent-deep)}.lesson-title{font-family:var(--font-display);font-weight:400;font-size:38px;margin:6px 0 4px;color:var(--ink)}.lesson-subtitle{font-size:17px;color:var(--ink-soft);margin:0 0 10px}.lesson-meta{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-faint);margin:0 0 18px}.lesson-lede{font-size:18.5px;line-height:1.55;font-weight:500;color:var(--ink);margin:0 0 20px;padding:14px 18px;background:var(--accent-soft);border-left:3px solid var(--accent-deep);border-radius:0 10px 10px 0}.pillar-demo{margin:4px 0 26px}.pillar-demo-frame{width:100%;height:340px;max-width:100%;display:block;border:1px solid var(--edge-strong);border-radius:14px;background:var(--paper-deep)}@media(max-width:560px){.pillar-demo-frame{height:300px}}.pillar-demo-cap{font-size:13.5px;line-height:1.6;color:var(--ink-soft);margin:10px 2px 0}.lesson-build{display:inline-block;text-decoration:none;font-weight:700;font-size:13px;color:var(--accent-deep);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:9px;padding:8px 14px;box-shadow:0 2px 0 var(--accent-line);margin-bottom:22px}.lesson-build:hover{transform:translateY(-1px);box-shadow:0 3px 0 var(--accent-line)}.lesson-endcta{margin:32px 0 8px;padding:20px 22px;text-align:center;background:var(--accent-ghost);border:1px solid var(--accent-line);border-radius:14px}.lesson-endcta-lead{margin:0 0 14px;font-size:16px;line-height:1.5;color:var(--ink);font-weight:600}.lesson-endcta-btn{display:inline-block;text-decoration:none;font-weight:700;font-size:15px;color:#fff;background:var(--accent);border:1px solid var(--accent-deep);border-radius:11px;padding:11px 22px;box-shadow:0 3px 0 var(--accent-deep)}.lesson-endcta-btn:hover{transform:translateY(-1px);box-shadow:0 4px 0 var(--accent-deep)}[data-theme=dark] .lesson-endcta-btn{background:#5747c9;border-color:transparent;box-shadow:0 3px #00000059}[data-theme=dark] .lesson-endcta-btn:hover{background:#6c5ce7}.lesson-prereqs{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 20px}.lesson-prereqs-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint)}.lesson-prereq-chip{text-decoration:none;font-size:12.5px;font-weight:600;line-height:1;color:var(--ink-soft);background:var(--accent-ghost);border:1px solid var(--edge-strong);border-radius:999px;padding:6px 11px;transition:color .12s ease,background .12s ease,border-color .12s ease}.lesson-prereq-chip:hover{color:var(--accent-deep);background:var(--accent-soft);border-color:var(--accent-line)}.lesson-h{font-family:var(--font-display);font-weight:400;font-size:23px;color:var(--ink);margin:30px 0 10px}.lesson-p{font-size:15.5px;line-height:1.65;color:var(--ink);margin:0 0 14px}.lesson-link{color:var(--accent-deep);text-decoration:none;border-bottom:1px solid var(--accent-line);font-weight:600}.lesson-link:hover{border-bottom-color:var(--accent-deep);background:var(--accent-ghost)}.lesson-eq{margin:16px auto;max-width:460px}.lesson-steps{margin:0 0 16px;padding-left:26px;display:flex;flex-direction:column;gap:9px}.lesson-steps li{font-size:15px;line-height:1.6;color:var(--ink)}.lesson-steps ul,ul.lesson-steps{list-style:none;padding-left:4px}ul.lesson-steps li{position:relative;padding-left:20px}ul.lesson-steps li:before{content:"";position:absolute;left:2px;top:9px;width:7px;height:7px;border-radius:2px;background:var(--accent)}.lesson-note{display:flex;gap:10px;align-items:flex-start;border-radius:11px;padding:13px 15px;margin:18px 0;font-size:14.5px;line-height:1.55;background:var(--accent-soft);border-left:3px solid var(--accent);color:var(--ink)}.lesson-note-icon{width:18px;height:18px;flex-shrink:0;margin-top:2px;stroke-width:1.7;fill:none;stroke-linecap:round;stroke-linejoin:round}.note-tip{background:var(--accent-soft);border-left-color:var(--accent)}.note-tip .lesson-note-icon{stroke:var(--accent)}.note-key{background:var(--osc-soft);border-left-color:var(--osc)}.note-key .lesson-note-icon{stroke:var(--osc)}.note-warn{background:var(--short-soft);border-left-color:var(--short)}.note-warn .lesson-note-icon{stroke:var(--short)}.lesson-figure{margin:20px 0;display:flex;flex-direction:column;align-items:center;gap:8px}.lesson-figure figcaption{font-size:13px;color:var(--ink-soft);line-height:1.5;text-align:center;max-width:560px}.lesson-figure .truth-table{font-size:13px}.lesson-vhdl{align-items:stretch}.lesson-code{margin:0;padding:14px 16px;width:100%;overflow-x:auto;font-family:var(--font-mono);font-size:13px;line-height:1.6;white-space:pre;tab-size:2;color:var(--ink);background:var(--paper-inset, rgba(0, 0, 0, .16));border:1px solid var(--line, #2a3142);border-radius:8px;box-sizing:border-box}.diagram-holder{position:relative;background:var(--paper-card);border:1.5px solid var(--edge-strong);border-radius:12px;padding:16px;width:100%;margin:0 auto;display:flex;justify-content:center}.diagram-holder-live{padding:0;border:none;background:transparent;display:block}.diagram-holder-live .diagram-live-frame{border:1.5px solid var(--edge-strong);border-radius:12px;background:var(--paper-card);height:auto}.diagram-svg{height:auto;cursor:grab;touch-action:pan-y;user-select:none;-webkit-user-select:none}.diagram-svg.grabbing{cursor:grabbing}.diagram-part.diagram-input-live{cursor:pointer}.diagram-part.diagram-input-live:hover{filter:brightness(1.18)}.diagram-wire{stroke:var(--ink);stroke-width:2.5;stroke-linecap:round;fill:none}.diagram-junction,.diagram-pin{fill:var(--pin)}.diagram-zoom-controls{position:absolute;right:9px;bottom:9px;z-index:1;display:flex;gap:4px;opacity:.55;transition:opacity .15s ease}.diagram-holder:hover .diagram-zoom-controls,.diagram-zoom-controls:focus-within{opacity:1}.diagram-zoom-btn{width:28px;height:28px;display:grid;place-items:center;font-family:var(--font-ui, inherit);font-size:16px;font-weight:700;line-height:1;cursor:pointer;color:var(--ink-soft);background:var(--paper-card);border:1px solid var(--edge-strong);border-radius:8px;box-shadow:0 1px 2px #00000014;transition:transform .12s ease,background .12s ease,color .12s ease,border-color .12s ease}.diagram-zoom-btn:hover{color:var(--accent-deep);background:var(--accent-soft);border-color:var(--accent-line);transform:translateY(-1px)}.diagram-zoom-btn:active{transform:translateY(0)}.diagram-zoom-hint{position:absolute;inset:0;z-index:2;display:grid;place-items:center;pointer-events:none;opacity:0;transition:opacity .18s ease;font-family:var(--font-ui, inherit);font-weight:700;font-size:14px;color:#fff;background:#0f141eb8;border-radius:12px;backdrop-filter:blur(1px)}.diagram-zoom-hint.show{opacity:1}.diagram-lab-btn{position:absolute;top:9px;right:9px;z-index:1;font-family:var(--font-ui, inherit);font-weight:700;font-size:12px;cursor:pointer;color:var(--accent-deep);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:8px;padding:5px 10px;box-shadow:0 1px 0 var(--accent-line);backdrop-filter:blur(3px);transition:transform .12s ease,box-shadow .12s ease,background .12s ease}.diagram-lab-btn:hover{background:var(--accent-btn);color:#fff;border-color:var(--accent-deep);transform:translateY(-1px);box-shadow:0 2px 0 var(--accent-deep)}.diagram-lab-btn:active{transform:translateY(0);box-shadow:none}.diagram-embed-btn{position:absolute;top:9px;left:9px;z-index:1;font-family:var(--font-ui, inherit);font-weight:600;font-size:12px;cursor:pointer;color:var(--ink-soft);background:var(--paper-card);border:1px solid var(--edge-strong);border-radius:8px;padding:5px 10px}.diagram-embed-btn:hover{color:var(--accent-deep);border-color:var(--accent-line)}.diagram-live-btn{position:absolute;bottom:9px;left:9px;z-index:1;font-family:var(--font-ui, inherit);font-weight:700;font-size:12px;cursor:pointer;color:#fff;background:var(--accent);border:1px solid var(--accent-deep);border-radius:8px;padding:5px 11px;box-shadow:0 2px 0 var(--accent-deep)}[data-theme=dark] .diagram-live-btn{background:#5747c9;border-color:transparent}.diagram-live-btn:hover:not(:disabled){background:var(--accent-deep)}.diagram-live-btn:disabled{opacity:.75;cursor:default;box-shadow:none}.diagram-live-frame{width:100%;height:360px;max-width:100%;display:block;border:0;border-radius:12px;background:transparent}.daily-card{margin:4px 0 18px;padding:15px 17px 16px;background:linear-gradient(135deg,var(--accent-soft),transparent 60%),var(--paper-card);border:1px solid var(--accent-line);border-radius:14px;display:flex;flex-direction:column;gap:6px}.daily-card.done{border-color:var(--hi);background:linear-gradient(135deg,var(--hi-soft),transparent 60%),var(--paper-card)}.daily-tag{align-self:flex-start;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:var(--accent-deep);background:var(--accent-soft);border-radius:999px;padding:3px 10px}.daily-card.done .daily-tag{color:var(--hi);background:var(--hi-soft)}.daily-title{font-family:var(--font-display);font-size:19px;color:var(--ink)}.daily-teaser{margin:0;font-size:13.5px;line-height:1.55;color:var(--ink-soft)}.daily-actions{display:flex;gap:8px;margin-top:6px}.result-daily{margin:2px 0 0;font-size:13px;font-weight:700;color:var(--gold, #ffd25a)}.result-daily-streak{margin:6px 0 2px;font-size:12.5px;line-height:1.4;color:var(--ink-soft);max-width:30ch}.result-optimize{margin:8px auto 2px;padding:8px 12px;font-size:12.5px;line-height:1.45;color:var(--ink);background:var(--hi-soft, rgba(255, 210, 90, .1));border:1px solid var(--hi, #ffd25a);border-radius:10px;max-width:34ch}.result-share{align-self:center}.lesson-exercise{margin:22px 0;padding:15px 17px 16px;background:var(--hi-soft);border:1px solid var(--hi);border-left-width:3px;border-radius:12px}.exercise-tag{display:inline-block;font-size:11px;font-weight:700;line-height:1;text-transform:uppercase;letter-spacing:.1em;color:var(--hi);margin-bottom:9px}.exercise-prompt{font-size:15px;line-height:1.6;color:var(--ink)}.exercise-prompt .eq{margin:12px auto}.exercise-reveal{margin-top:12px;font-family:var(--font-ui, inherit);font-weight:700;font-size:12.5px;cursor:pointer;color:var(--ink);background:var(--paper-card);border:1px solid var(--hi);border-radius:8px;padding:6px 13px;box-shadow:0 1px 0 var(--hi);transition:transform .12s ease,box-shadow .12s ease,background .12s ease}.exercise-reveal:hover{background:var(--hi);color:#06210f;transform:translateY(-1px);box-shadow:0 2px 0 var(--hi)}.exercise-reveal:active{transform:translateY(0);box-shadow:none}.exercise-lab-link{display:inline-block;margin:13px 0 0 10px;font-weight:700;font-size:12.5px;color:var(--accent-deep);text-decoration:none;border-bottom:1.5px solid transparent}.exercise-lab-link:hover{border-bottom-color:var(--accent-deep)}.exercise-reveal.is-open{color:var(--ink-soft)}.exercise-reveal.is-open:hover{color:#06210f}.exercise-answer{margin-top:12px;padding-top:12px;border-top:1px dashed var(--hi);font-size:14.5px;line-height:1.6;color:var(--ink)}.exercise-answer-label{display:block;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--hi);margin-bottom:5px}.exercise-answer .eq{margin:10px auto}.exercise-grade{margin-top:12px;padding-top:10px;border-top:1px dashed var(--hi);display:flex;align-items:center;gap:9px;flex-wrap:wrap}.exercise-grade-q{font-size:13px;font-weight:700;color:var(--ink-soft)}.exercise-grade-btn{font:inherit;font-size:12.5px;font-weight:700;cursor:pointer;border-radius:8px;padding:5px 12px;border:1px solid var(--edge-strong);background:var(--paper-card);color:var(--ink);transition:transform var(--dur-fast, .12s) var(--ease, ease),background var(--dur-fast, .12s) var(--ease, ease),color var(--dur-fast, .12s) var(--ease, ease),border-color var(--dur-fast, .12s) var(--ease, ease)}.exercise-grade-btn.got:hover{background:var(--hi);color:#fff;border-color:var(--hi);transform:translateY(-1px)}.exercise-grade-btn.not:hover{background:var(--paper);color:var(--ink);border-color:var(--ink-soft);transform:translateY(-1px)}.exercise-grade-btn:active{transform:translateY(0)}.exercise-grade-done{font-size:13px;font-weight:600;color:var(--hi)}.review-banner{display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%;text-align:left;font:inherit;cursor:pointer;margin:0 0 22px;padding:14px 18px;border-radius:14px;border:1px solid var(--accent-line);background:var(--accent-soft);transition:transform var(--dur, .17s) var(--ease, ease),box-shadow var(--dur, .17s) var(--ease, ease)}.review-banner:hover{transform:translateY(-1px);box-shadow:0 4px 18px #0000001a}.review-banner-left{display:flex;align-items:center;gap:12px}.review-banner-icon{font-size:20px;line-height:1;color:var(--accent-deep);width:34px;height:34px;display:grid;place-items:center;background:var(--paper-card);border-radius:50%;border:1px solid var(--accent-line)}.review-banner-txt{display:flex;flex-direction:column;gap:1px}.review-banner-txt strong{font-size:15px;color:var(--ink)}.review-banner-sub{font-size:12.5px;color:var(--ink-soft)}.review-banner-cta{font-size:13px;font-weight:700;color:var(--accent-deep);white-space:nowrap}.review-overlay{position:fixed;inset:0;z-index:400;display:grid;place-items:center;padding:16px;background:#0a0e1680;backdrop-filter:blur(2px);animation:review-fade var(--dur, .17s) var(--ease, ease)}@keyframes review-fade{0%{opacity:0}to{opacity:1}}.review-card{width:min(94vw,460px);box-sizing:border-box;background:var(--paper-card);border:1px solid var(--edge-strong);border-radius:16px;padding:18px 20px 20px;box-shadow:0 20px 60px #00000061;animation:review-pop var(--dur-slow, .22s) var(--ease-out, ease)}@keyframes review-pop{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}.review-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}.review-title{font-family:var(--font-display, inherit);font-weight:700;font-size:17px;color:var(--ink)}.review-count{font-size:12.5px;font-weight:700;color:var(--ink-soft);margin-left:auto}.review-close{font:inherit;font-size:15px;line-height:1;cursor:pointer;border:none;background:none;color:var(--ink-soft);padding:4px 6px;border-radius:6px}.review-close:hover{color:var(--ink);background:var(--paper)}.review-progress{height:5px;border-radius:99px;background:var(--edge-strong);overflow:hidden;margin-bottom:14px}.review-progress-bar{height:100%;background:var(--accent);border-radius:99px;transition:width var(--dur, .17s) var(--ease, ease)}.review-source{display:inline-block;font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--accent-deep);text-decoration:none;margin-bottom:8px}.review-source:hover{text-decoration:underline}.review-q{font-size:16px;line-height:1.5;color:var(--ink);margin-bottom:14px}.review-truth{margin:0 0 14px}.review-truth table{margin:0}.review-truth tr.review-truth-asked td{background:var(--accent-ghost)}.review-truth td.review-truth-q{font-weight:800;color:var(--accent-deep)}.review-truth td.review-truth-q.revealed{color:var(--hi)}.review-q .tok,.review-answer .tok{font-family:var(--font-mono, monospace);font-size:.86em;background:var(--paper);border:1px solid var(--edge-strong);border-radius:4px;padding:0 4px}.review-opts{display:flex;flex-wrap:wrap;gap:8px}.review-opt{font:inherit;font-size:15px;font-weight:700;cursor:pointer;min-width:52px;padding:9px 16px;border-radius:10px;border:1px solid var(--edge-strong);background:var(--paper-card);color:var(--ink);font-family:var(--font-mono, monospace);transition:transform var(--dur-fast, .12s) var(--ease, ease),border-color var(--dur-fast, .12s) var(--ease, ease)}.review-opt:not(:disabled):hover{border-color:var(--accent);transform:translateY(-1px)}.review-opt:disabled{cursor:default;opacity:.85}.review-opt.correct{background:var(--hi-soft, #e6f6ea);border-color:var(--hi);color:var(--hi)}.review-opt.wrong{background:#dc46461f;border-color:var(--short);color:var(--short)}.review-feedback{font-size:13.5px;font-weight:600;margin-top:12px}.review-feedback.ok{color:var(--hi)}.review-feedback.no{color:var(--short)}.review-reveal{font:inherit;font-size:13px;font-weight:700;cursor:pointer;padding:8px 16px;border-radius:9px;border:1px solid var(--accent-line);background:var(--accent-soft);color:var(--accent-deep)}.review-reveal:hover{background:var(--accent-btn);color:#fff;border-color:var(--accent-deep)}.review-answer{margin-top:12px;padding-top:12px;border-top:1px dashed var(--edge-strong);font-size:14.5px;line-height:1.6;color:var(--ink)}.review-grade{display:flex;gap:10px;margin-top:14px}.review-grade-btn{font:inherit;font-size:13px;font-weight:700;cursor:pointer;padding:8px 16px;border-radius:9px;border:1px solid var(--edge-strong);background:var(--paper-card);color:var(--ink);flex:1}.review-grade-btn.got:hover{background:var(--hi);color:#06210f;border-color:var(--hi)}.review-grade-btn.not:hover{border-color:var(--ink-soft)}.review-next{display:inline-block;margin-top:16px;font:inherit;font-size:14px;font-weight:700;cursor:pointer;padding:9px 20px;border-radius:10px;color:#fff;background:var(--accent-btn);border:1px solid var(--accent-deep);box-shadow:0 2px 0 var(--accent-deep)}.review-next:hover{transform:translateY(-1px);box-shadow:0 3px 0 var(--accent-deep)}.review-summary{text-align:center;padding:8px 0}.review-summary-big{font-size:17px;font-weight:700;color:var(--ink);margin:6px 0}.review-summary-sub{font-size:13.5px;color:var(--ink-soft);margin:4px 0}.lesson-faq{margin:36px 0 8px;padding-top:22px;border-top:1px solid var(--edge-strong)}.lesson-faq-h{font-family:var(--font-display);font-weight:400;font-size:20px;color:var(--ink);margin:0 0 6px}.faq-q{font-family:var(--font-display);font-weight:400;font-size:16px;color:var(--accent-deep);margin:18px 0 6px;line-height:1.35}.faq-a{font-size:14.5px;line-height:1.65;color:var(--ink-soft);margin:0 0 6px}.faq-a .eq{margin:12px auto}.faq-a strong{color:var(--ink)}.lesson-footer{display:flex;justify-content:space-between;gap:14px;margin-top:40px;padding-top:18px;border-top:1px solid var(--edge-strong)}.lesson-share{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:22px}.lesson-share-label{font-size:14px;color:var(--ink-soft)}.lesson-share-x{font-weight:700;font-size:13.5px;text-decoration:none;color:#fff;background:#1d1d1f;border:1px solid #1d1d1f;border-radius:8px;padding:6px 14px}[data-theme=dark] .lesson-share-x{background:#e9edf6;color:#14181f;border-color:#e9edf6}.lesson-share-x:hover{opacity:.88}.lesson-share-native{font-weight:700;font-size:13.5px;cursor:pointer;color:#fff;background:var(--accent);border:1px solid var(--accent-deep);border-radius:8px;padding:6px 14px;box-shadow:0 2px 0 var(--accent-deep)}[data-theme=dark] .lesson-share-native{background:#5747c9;border-color:transparent;box-shadow:0 2px #00000059}.lesson-share-native:hover{background:var(--accent-deep)}.lesson-prev,.lesson-next{display:flex;flex-direction:column;gap:2px;text-decoration:none;background:var(--paper-card);border:1px solid var(--edge-strong);border-radius:10px;padding:10px 14px;max-width:47%}.lesson-next{text-align:right}.lesson-prev:hover,.lesson-next:hover{border-color:var(--accent)}.lesson-navdir{font-size:11px;color:var(--ink-faint);font-weight:700}.lesson-navtitle{font-weight:700;color:var(--ink)}@media(max-width:760px){.learn-layout{grid-template-columns:1fr}.learn-content{padding:22px 18px 60px}.lesson-title{font-size:30px}.learn-header{position:relative;z-index:70}.learn-nav-toggle{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;margin:0 2px 0 -4px;flex-shrink:0;background:none;border:1px solid var(--edge-strong);border-radius:9px;color:var(--ink);cursor:pointer}.learn-nav-toggle:hover{background:var(--paper-card)}.learn-nav{display:block;position:fixed;top:56px;left:0;bottom:0;z-index:60;width:min(82vw,300px);transform:translate(-100%);transition:transform .24s var(--ease, ease);box-shadow:0 12px 40px #00000057}.learn-nav.open{transform:translate(0)}.learn-nav-backdrop{display:block;position:fixed;inset:0;z-index:55;background:#0000006b;opacity:0;pointer-events:none;transition:opacity .24s ease}.learn-nav-backdrop.show{opacity:1;pointer-events:auto}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.tutor-fab{position:fixed;right:20px;bottom:52px;width:56px;height:56px;border-radius:50%;border:none;cursor:pointer;display:grid;place-items:center;z-index:60;color:#fff;background:radial-gradient(circle at 35% 30%,var(--accent) 0%,var(--accent-deep) 100%);box-shadow:0 0 0 1px var(--accent-line),0 6px 18px #6c63ff73,0 0 24px 4px var(--accent-soft);animation:tutor-glow 3.2s ease-in-out infinite;transition:transform var(--dur) var(--ease-spring),box-shadow var(--dur-slow) var(--ease)}.tutor-fab:hover{transform:translateY(-2px) scale(1.04)}.tutor-fab.active{transform:scale(.96)}.tutor-fab svg{width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;transition:transform .3s cubic-bezier(.34,1.56,.64,1)}.tutor-fab.active svg{transform:rotate(30deg)}@keyframes tutor-glow{0%,to{box-shadow:0 0 0 1px var(--accent-line),0 4px 14px #6c63ff59,0 0 18px 3px #8b86ff66}50%{box-shadow:0 0 0 1px var(--accent-line),0 6px 18px #6c63ff73,0 0 30px 7px #8b86ff9e}}:root{--tutor-w: 430px}.tutor-panel{position:fixed;top:56px;right:0;bottom:30px;width:var(--tutor-w);max-width:calc(100vw - 16px);display:flex;flex-direction:column;background:var(--paper);border-left:1px solid var(--edge-strong);box-shadow:-10px 0 28px #0000002e;z-index:61;overflow:hidden;opacity:0;transform:translate(16px);transition:opacity var(--dur) var(--ease),transform var(--dur-slow) var(--ease)}body.tutor-open #canvas-wrap{margin-right:var(--tutor-w)}body.tutor-open .tutor-fab{right:calc(var(--tutor-w) + 18px)}@media(max-width:1180px){:root{--tutor-w: 380px}}@media(max-width:900px){body.tutor-open #canvas-wrap{margin-right:0}body.tutor-open .tutor-fab{right:18px;opacity:0;pointer-events:none}}@media(max-width:768px){.tutor-panel{top:56px;bottom:0;width:100vw;max-width:100vw;border-left:none}}.tutor-panel.open{opacity:1;transform:none}.tutor-panel[hidden]{display:none}@media(prefers-reduced-motion:reduce){.tutor-fab{animation:none}.tutor-fab svg,.tutor-panel{transition:none}}.tutor-head{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--edge);background:linear-gradient(180deg,var(--accent-soft),var(--paper-deep))}.tutor-title{display:flex;align-items:center;gap:8px;font-family:var(--font-display);font-weight:700;color:var(--ink);margin-right:auto}.tutor-badge{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;color:#fff;background:radial-gradient(circle at 35% 30%,var(--accent),var(--accent-deep));box-shadow:0 0 12px 1px #8b86ff73}.tutor-badge svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.tutor-icon-btn{border:none;background:transparent;color:var(--ink-soft);font-size:15px;cursor:pointer;padding:3px 6px;border-radius:7px}.tutor-icon-btn:hover{background:var(--paper-deep);color:var(--ink)}.tutor-head-tools{display:flex;align-items:center;gap:2px}.tutor-tool-btn{display:grid;place-items:center;padding:4px;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.tutor-tool-btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.tutor-tool-btn[hidden]{display:none}.tutor-tool-btn.active{background:var(--accent-soft);color:var(--accent)}.tutor-acc-chip{border:1px solid var(--edge);background:var(--paper);color:var(--ink-soft);font-size:11px;font-weight:600;cursor:pointer;padding:3px 8px;border-radius:999px;white-space:nowrap}.tutor-acc-chip:hover{background:var(--paper-deep);color:var(--ink)}.tutor-acc-chip.premium{color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft)}.tutor-verify{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--osc-soft);border-bottom:1px solid rgba(251,191,59,.3);font-size:12px;color:color-mix(in srgb,var(--osc) 72%,var(--ink))}.tutor-verify-text{flex:1 1 auto;line-height:1.35}.tutor-verify-btn{flex:none;border:1px solid rgba(251,191,59,.45);background:var(--osc-soft);color:color-mix(in srgb,var(--osc) 72%,var(--ink));font-weight:600;font-size:11px;border-radius:7px;padding:4px 10px;cursor:pointer}.tutor-verify-btn:hover:not(:disabled){background:#fbbf3b42}.tutor-verify-btn:disabled{opacity:.6;cursor:default}.tutor-perm-panel{position:absolute;top:44px;right:12px;z-index:5;display:flex;flex-direction:column;gap:2px;width:246px;max-width:calc(100% - 24px);padding:10px;background:var(--paper);border:1px solid var(--edge);border-radius:12px;box-shadow:var(--shadow-card);transform-origin:top right;opacity:0;transform:translateY(-6px) scale(.96);transition:opacity var(--dur-fast) var(--ease-out),transform var(--dur) var(--ease-spring)}.tutor-perm-panel.open{opacity:1;transform:translateY(0) scale(1)}.tutor-perm-panel.closing{opacity:0;transform:translateY(-5px) scale(.97);transition:opacity var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}.tutor-perm-head{font-family:var(--font-display);font-weight:700;font-size:13px;color:var(--ink)}.tutor-perm-sub{font-size:11px;color:var(--ink-soft);margin-bottom:6px}.tutor-perm-row{display:flex;align-items:flex-start;gap:9px;padding:7px 8px;border-radius:9px;cursor:pointer;transition:background var(--dur-fast) var(--ease)}.tutor-perm-row:hover{background:var(--paper-deep)}.tutor-perm-cb{flex:none;margin-top:1px;width:15px;height:15px;accent-color:var(--accent);cursor:pointer}.tutor-perm-text{display:flex;flex-direction:column;gap:1px;line-height:1.3}.tutor-perm-label{font-size:13px;font-weight:600;color:var(--ink)}.tutor-perm-desc{font-size:11px;color:var(--ink-soft)}.tutor-perm-note{margin-top:6px;padding-top:8px;border-top:1px solid var(--edge);font-size:11px;color:var(--ink-soft);line-height:1.35}.tutor-hist-head{font-family:var(--font-display);font-weight:700;color:var(--ink);margin-bottom:4px}.tutor-hist-row{display:flex;align-items:center;gap:6px}.tutor-hist-open{flex:1 1 auto;text-align:left;border:1px solid var(--edge);background:var(--paper);color:var(--ink);border-radius:8px;padding:8px 10px;font-size:13px;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tutor-hist-open:hover{background:var(--paper-deep)}.tutor-hist-del{border:none;background:transparent;color:var(--ink-soft);cursor:pointer;padding:4px 6px;border-radius:6px}.tutor-hist-del:hover{background:var(--short-soft);color:var(--short)}.auth-form{display:flex;flex-direction:column;gap:10px;min-width:280px}.auth-reason{margin:0;padding:10px 12px;border-radius:10px;background:var(--accent-ghost);border:1px solid var(--accent-line);color:var(--ink);font-size:13.5px;line-height:1.45}.auth-field{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--ink-soft)}.auth-input{border:1px solid var(--edge);border-radius:8px;padding:8px 10px;font-size:14px;color:var(--ink);background:var(--paper)}.auth-input:focus{outline:2px solid var(--accent-line);border-color:var(--accent)}.auth-toggle{border:none;background:transparent;color:var(--accent);cursor:pointer;font-size:12px;padding:2px;align-self:flex-start}.auth-toggle:hover{text-decoration:underline}.pricing{min-width:min(540px,86vw)}.pricing-intro{margin:2px 0 14px;font-size:13.5px;line-height:1.5;color:var(--ink-soft)}.pricing-intro strong{color:var(--accent-deep);font-weight:700}.pricing-features{list-style:none;margin:0 0 16px;padding:14px 16px;display:grid;gap:9px;background:var(--paper-inset);border:1px solid var(--edge);border-radius:12px}.pricing-feat{display:flex;align-items:flex-start;gap:10px;font-size:13px;line-height:1.4;color:var(--ink)}.pricing-check{flex-shrink:0;width:16px;height:16px;margin-top:1px;fill:none;stroke:var(--ok, #30a46c);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.pricing-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:stretch}.pricing-card{position:relative;display:flex;flex-direction:column;gap:6px;padding:18px 16px 16px;border:1.5px solid var(--edge-strong);border-radius:14px;background:var(--paper-card)}.pricing-card.recommended{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),0 8px 24px -12px var(--accent);background:linear-gradient(180deg,var(--accent-soft, rgba(139, 134, 255, .1)) 0%,transparent 62%),var(--paper-card)}.pricing-badge{position:absolute;top:-11px;left:16px;padding:3px 10px;border-radius:999px;background:var(--accent);color:#fff;font-size:11px;font-weight:700;letter-spacing:.01em;white-space:nowrap;box-shadow:0 2px 8px -2px var(--accent)}.pricing-name{font-family:var(--font-display);color:var(--ink);font-size:14px;letter-spacing:.02em;text-transform:uppercase;opacity:.72}.pricing-price{color:var(--ink);margin-top:2px}.pricing-price strong{font-size:27px;font-weight:800;letter-spacing:-.01em}.pricing-price span{color:var(--ink-soft);font-size:13px}.pricing-sub{color:var(--ink-soft);font-size:12px;line-height:1.4;margin:0 0 4px;flex:1 1 auto}.pricing-btn{width:100%;margin-top:4px}.pricing-btn:disabled{opacity:.6;cursor:default}.pricing-btn-alt{background:transparent;color:var(--accent-deep);border:1.5px solid var(--accent-line, var(--edge-strong));border-radius:10px;font-weight:700;padding:9px 16px;cursor:pointer}.pricing-btn-alt:hover:not(:disabled){background:var(--paper-inset)}.pricing-reassure{display:flex;align-items:center;justify-content:center;gap:6px;margin:14px 0 2px;font-size:12px;color:var(--ink-faint)}.pricing-lock{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}@media(max-width:540px){.pricing-grid{grid-template-columns:1fr}.pricing-card.recommended{order:-1}}.pricing-pass{margin:10px 0 0;text-align:center}.linklike{background:none;border:none;padding:0;font:inherit;font-size:12.5px;color:var(--accent);cursor:pointer;text-decoration:underline;text-underline-offset:3px}.linklike:hover{opacity:.85}.level-card.premium-locked{opacity:1;cursor:pointer;box-shadow:0 2px 0 var(--edge-strong)}.level-card.premium-locked .lc-status{background:var(--accent-soft);border-color:var(--accent-line)}.level-card.premium-locked .lc-status svg{stroke:var(--accent-deep)}.tutor-upgrade-btn{margin-top:8px;display:inline-block;background:var(--accent-btn);color:#fff;border:none;border-radius:8px;padding:6px 12px;font:inherit;font-size:12px;font-weight:600;cursor:pointer}.tutor-upgrade-btn:hover{background:var(--accent-deep)}.tutor-log{flex:1 1 auto;overflow-y:auto;padding:16px 16px 14px;display:flex;flex-direction:column;gap:10px}.tutor-msg{font-size:14.5px;line-height:1.62;white-space:pre-wrap;padding:10px 13px;border-radius:12px;max-width:94%}.tutor-you{align-self:flex-end;background:var(--accent-btn);color:#fff;border-bottom-right-radius:3px}.tutor-tutor{align-self:flex-start;background:var(--paper-deep);color:var(--ink);border:1px solid var(--edge);border-bottom-left-radius:3px}.tutor-pending{opacity:.65;font-style:italic}.tutor-error{border-color:var(--short);background:var(--short-soft);color:var(--short)}.tutor-step{align-self:flex-start;display:flex;align-items:center;gap:7px;font-size:12px;color:var(--ink-soft);padding:1px 2px;max-width:92%}.tutor-step-time{color:var(--ink-faint);font-variant-numeric:tabular-nums}.tutor-step-stop{border:1px solid var(--edge-strong);background:transparent;color:var(--ink-soft);font:inherit;font-size:11px;font-weight:600;padding:1px 9px;border-radius:999px;cursor:pointer}.tutor-step-stop:hover{border-color:var(--short);color:var(--short)}.tutor-step:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--edge-strong);flex:0 0 auto}.tutor-step.active{color:var(--accent-deep)}.tutor-step.active:before{background:var(--accent);animation:tutor-step-pulse 1s ease-in-out infinite}@keyframes tutor-step-pulse{0%,to{opacity:.35;transform:scale(.8)}50%{opacity:1;transform:scale(1.25)}}.tutor-md{white-space:normal;max-width:100%}.tutor-md>:first-child{margin-top:0}.tutor-md>:last-child{margin-bottom:0}.tutor-md .md-p{margin:6px 0;line-height:1.5}.tutor-md .md-h{font-family:var(--font-display);color:var(--accent-deep);line-height:1.25;margin:12px 0 5px}.tutor-md h1.md-h{font-size:15px}.tutor-md h2.md-h{font-size:14px}.tutor-md h3.md-h,.tutor-md h4.md-h,.tutor-md h5.md-h,.tutor-md h6.md-h{font-size:13px}.tutor-md .md-list{margin:6px 0;padding-left:18px}.tutor-md .md-list li{margin:2px 0;line-height:1.45}.tutor-md code{font-family:var(--font-mono);font-size:12px;background:var(--paper);border:1px solid var(--edge);border-radius:4px;padding:0 4px}.tutor-md strong{font-weight:700}.tutor-md hr{border:none;border-top:1px solid var(--edge-strong);margin:10px 0}.tutor-md .md-table{border-collapse:collapse;width:100%;margin:8px 0;font-size:12px}.tutor-md .md-table th,.tutor-md .md-table td{border:1px solid var(--edge-strong);padding:4px 7px;text-align:left;vertical-align:top}.tutor-md .md-table th{background:var(--paper);font-weight:700;color:var(--accent-deep)}.tutor-built{align-self:flex-start;font-size:11.5px;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:8px;padding:5px 9px}.tutor-checkpoint{align-self:stretch;display:flex;flex-direction:column;gap:8px;margin:2px 0;padding:10px 11px;border:1px solid var(--accent-line);border-radius:12px;background:var(--accent-soft)}.tutor-cp-q{font-size:13px;line-height:1.4;color:var(--ink)}.tutor-cp-step{font-family:var(--font-mono);font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint)}.tutor-cp-end{align-self:flex-start;border:none;background:none;padding:2px 0;font:inherit;font-size:12px;color:var(--ink-faint);cursor:pointer;text-decoration:underline;text-underline-offset:2px}.tutor-cp-end:hover{color:var(--ink-soft)}.tutor-cp-actions{display:flex;gap:7px;flex-wrap:wrap}.tutor-cp-btn{flex:1 1 auto;cursor:pointer;font-family:var(--font-ui);font-size:12.5px;font-weight:600;color:var(--ink);background:var(--paper-card);border:1px solid var(--edge-strong);border-radius:9px;padding:7px 10px;transition:background var(--dur, .15s) var(--ease, ease),border-color var(--dur, .15s) var(--ease, ease)}.tutor-cp-btn:hover{border-color:var(--accent-line);background:var(--paper-inset)}.tutor-cp-continue{color:#fff;background:var(--accent-btn);border-color:var(--accent-deep)}.tutor-cp-continue:hover{background:var(--accent-deep)}.tutor-cp-ask{display:flex;gap:6px}.tutor-cp-input{flex:1;min-width:0;font-family:var(--font-ui);font-size:12.5px;color:var(--ink);background:var(--paper-card);border:1px solid var(--edge-strong);border-radius:9px;padding:7px 10px}.tutor-cp-input::placeholder{color:var(--ink-faint)}.tutor-cp-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.tutor-cp-send{cursor:pointer;font-family:var(--font-ui);font-size:12.5px;font-weight:600;color:var(--accent-deep);background:var(--paper-card);border:1px solid var(--edge-strong);border-radius:9px;padding:7px 11px}.tutor-cp-send:hover{background:var(--paper-inset)}.tutor-built.tutor-built-warn{color:var(--osc);background:var(--osc-soft);border-color:var(--osc)}.tutor-quick{display:flex;gap:8px;padding:0 12px 8px;flex-wrap:wrap}.tutor-chip{border:1px solid var(--accent-line);background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:5px 12px;font-size:12px;cursor:pointer}.tutor-chip:hover{background:var(--accent-ghost)}.tutor-premium-strip{display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;border:none;border-top:1px solid var(--accent-line);background:var(--accent-soft);color:var(--ink);cursor:pointer;font:inherit;font-size:12.5px;text-align:left;transition:background .15s ease}.tutor-premium-strip:hover{background:var(--accent-ghost)}.tutor-premium-strip .tps-spark{color:var(--accent);font-size:14px;flex:none}.tutor-premium-strip .tps-text{flex:1;min-width:0;color:var(--ink-soft)}.tutor-premium-strip .tps-text b{color:var(--ink);font-weight:600}.tutor-premium-strip .tps-go{flex:none;color:var(--accent);font-weight:600}.tutor-composer{display:flex;gap:8px;padding:10px 12px 12px;border-top:1px solid var(--edge);align-items:flex-end}.tutor-input{flex:1 1 auto;resize:none;font-family:inherit;font-size:14.5px;padding:10px 12px;border:1px solid var(--edge-strong);border-radius:9px;background:var(--paper);color:var(--ink)}.tutor-input:focus{outline:2px solid var(--accent);outline-offset:0}.tutor-send{border:none;background:var(--accent-btn);color:#fff;font-weight:600;border-radius:9px;padding:8px 14px;cursor:pointer}.tutor-send:hover{background:var(--accent-deep)}.tutor-settings{display:flex;flex-direction:column;gap:6px;padding:12px;border-bottom:1px solid var(--edge);background:var(--paper-deep)}.tutor-set-label{font-size:11px;font-weight:600;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.03em}.tutor-set-input{font-family:inherit;font-size:13px;padding:7px 9px;border:1px solid var(--edge-strong);border-radius:8px;background:var(--paper);color:var(--ink)}.tutor-quota{font-size:11px;color:var(--ink-soft);margin:2px 0 0;line-height:1.4}@media(max-width:760px){.tutor-fab{right:14px;bottom:46px}}.tutor-built.tutor-built-verified{color:var(--hi);background:color-mix(in srgb,var(--hi) 14%,transparent);border-color:color-mix(in srgb,var(--hi) 48%,transparent);font-weight:700}.celebrate-overlay{position:fixed;inset:0;z-index:450;pointer-events:none;overflow:hidden}.confetti-piece{position:absolute;top:0;left:0;width:8px;height:8px;border-radius:2px;will-change:transform,opacity}.xp-pop{position:absolute;transform:translate(-50%,-50%);font-family:var(--font-display);font-size:22px;font-weight:700;letter-spacing:.5px;color:var(--hi);text-shadow:0 1px 0 rgba(0,0,0,.35),0 0 14px color-mix(in srgb,var(--hi) 55%,transparent);pointer-events:none;white-space:nowrap;animation:xp-float 1.2s var(--ease-out) forwards}.xp-pop-still{animation:xp-fade .9s var(--ease-out) forwards}@keyframes xp-float{0%{opacity:0;transform:translate(-50%,-40%) scale(.85)}18%{opacity:1;transform:translate(-50%,-55%) scale(1.05)}to{opacity:0;transform:translate(-50%,-150%) scale(1)}}@keyframes xp-fade{0%{opacity:0;transform:translate(-50%,-50%) scale(1)}20%{opacity:1}to{opacity:0;transform:translate(-50%,-50%) scale(1)}}.game-flourish{animation:game-flourish 1.1s var(--ease-out)}@keyframes game-flourish{0%{transform:scale(1);box-shadow:0 0 color-mix(in srgb,var(--hi) 60%,transparent)}30%{transform:scale(1.06);box-shadow:0 0 14px 3px color-mix(in srgb,var(--hi) 50%,transparent)}to{transform:scale(1);box-shadow:0 0 color-mix(in srgb,var(--hi) 0%,transparent)}}.level-result.course-complete .result-hero{font-family:var(--font-display);font-size:clamp(22px,5vw,34px);line-height:1.15;color:var(--accent);margin:6px 0 2px;text-align:center}#toolbar>.toolbar-journey{flex:1 1 auto;min-width:0;display:flex;align-items:center;justify-content:flex-end}.journey-chip{appearance:none;display:inline-flex;align-items:center;gap:7px;height:30px;padding:0 12px 0 7px;border:1px solid var(--edge-strong);border-radius:999px;background:var(--paper);color:var(--ink-soft);cursor:pointer;white-space:nowrap;transition:border-color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}.journey-chip:hover{border-color:var(--accent-line);color:var(--ink)}.journey-chip:active{transform:scale(.98)}.journey-chip:focus-visible{outline:2px solid var(--accent-line);outline-offset:2px}.jc-ring{width:20px;height:20px;flex:0 0 auto}.jc-ring-track{fill:none;stroke:var(--edge-strong);stroke-width:3}.jc-ring-arc{fill:none;stroke:var(--accent);stroke-width:3;stroke-linecap:round;transition:stroke-dashoffset var(--dur-slow) var(--ease)}.journey-chip.complete .jc-ring-arc{stroke:var(--hi)}.jc-pct{font-family:var(--font-mono);font-size:11.5px;font-weight:700;color:var(--ink);letter-spacing:.01em}.jc-xp{display:inline-flex;align-items:center;gap:3px;padding-left:8px;border-left:1px solid var(--edge);font-family:var(--font-mono);font-size:11.5px}.jc-xp-star{color:var(--osc);font-size:12px}.jc-xp-val{font-weight:700;color:var(--ink)}.jc-xp.bump{animation:jc-bump .42s var(--ease-spring)}.jc-flame{display:inline-flex;align-items:center;gap:2px;padding-left:8px;border-left:1px solid var(--edge);font-family:var(--font-mono);font-size:11.5px}.jc-flame-icon{font-size:12px}.jc-flame-val{font-weight:700;color:var(--ink)}.jc-flame.bump{animation:jc-bump .42s var(--ease-spring)}@keyframes jc-bump{0%{transform:scale(1)}35%{transform:scale(1.22)}to{transform:scale(1)}}@media(max-width:1240px){.jc-xp,.jc-flame{display:none}.journey-chip{padding-right:10px}}@media(max-width:1120px){#toolbar>.toolbar-journey{flex:0 0 auto;min-width:max-content;margin-left:auto}}@media(max-width:900px){.jc-pct{display:none}}.present-clear-pill{position:absolute;top:12px;left:50%;transform:translate(-50%);z-index:40;display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border:1px solid var(--accent-line);border-radius:999px;background:var(--paper-card);color:var(--ink-soft);font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;box-shadow:0 4px 14px #00000040;transition:color var(--dur, .15s) var(--ease, ease),border-color var(--dur, .15s) var(--ease, ease)}.present-clear-pill:hover{color:var(--accent-deep);border-color:var(--accent)}#btn-recenter.show~.present-clear-pill{top:58px}.present-clear-pill{transition:top var(--dur, .15s) var(--ease, ease),color var(--dur, .15s) var(--ease, ease),border-color var(--dur, .15s) var(--ease, ease)}.tour-spot{position:fixed;z-index:350;border-radius:10px;box-shadow:0 0 0 9999px #0a0e1673;outline:2px solid var(--accent);outline-offset:3px;pointer-events:none;transition:left var(--dur) var(--ease),top var(--dur) var(--ease),width var(--dur) var(--ease),height var(--dur) var(--ease),opacity var(--dur) var(--ease)}.tour-spot.closing{opacity:0}.tour-bubble{position:fixed;z-index:351;width:min(92vw,340px);box-sizing:border-box;background:var(--paper-card);color:var(--ink);border:1px solid var(--edge-strong);border-radius:14px;padding:15px 17px 13px;box-shadow:0 16px 48px #00000057;animation:tour-in var(--dur-slow) var(--ease-out)}.tour-bubble.closing{opacity:0;transform:translateY(4px);transition:opacity .18s var(--ease),transform .18s var(--ease)}@keyframes tour-in{0%{opacity:0;transform:translateY(6px) scale(.98)}to{opacity:1;transform:none}}.tour-title{font-family:var(--font-display, inherit);font-weight:700;font-size:16px;margin-bottom:6px;color:var(--ink)}.tour-body{font-size:13.5px;line-height:1.6;color:var(--ink)}.tour-body b{color:var(--accent);font-weight:700}.tour-body kbd{font-family:var(--font-mono, monospace);font-size:12px;font-weight:700;background:var(--accent-soft);border:1px solid var(--accent-line);border-bottom-width:2px;border-radius:5px;padding:2px 6px;color:var(--accent-deep);white-space:nowrap}.tour-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:13px}.tour-dots{display:flex;gap:5px}.tour-dot{width:6px;height:6px;border-radius:50%;background:var(--edge-strong);transition:background var(--dur) var(--ease),transform var(--dur) var(--ease)}.tour-dot.on{background:var(--accent);transform:scale(1.3)}.tour-dot.past{background:var(--accent-line)}.tour-actions{display:flex;align-items:center;gap:10px}.tour-skip,.tour-skipstep{font:inherit;font-size:12px;font-weight:600;color:var(--ink-soft);background:none;border:none;cursor:pointer;padding:4px 2px}.tour-skip:hover,.tour-skipstep:hover{color:var(--ink);text-decoration:underline}.tour-wait{font-size:12px;font-weight:600;color:var(--accent-deep)}.tour-next{font:inherit;font-size:13px;font-weight:700;color:#fff;background:var(--accent-btn);border:1px solid var(--accent-deep);border-radius:9px;padding:7px 14px;cursor:pointer;box-shadow:0 2px 0 var(--accent-deep);transition:transform var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}.tour-next:hover{transform:translateY(-1px);box-shadow:0 3px 0 var(--accent-deep)}.tour-choices{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.tour-choice{font:inherit;font-size:12.5px;font-weight:600;color:var(--accent-deep);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:999px;padding:6px 13px;cursor:pointer;transition:transform var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.tour-choice:hover{transform:translateY(-1px);background:var(--accent-ghost);border-color:var(--accent)}.tour-next:active{transform:translateY(1px);box-shadow:none}@media(prefers-reduced-motion:reduce){.tour-spot,.tour-bubble{transition:none;animation:none}}.share-intro{margin:0 0 14px;max-width:420px;font-size:12.5px;line-height:1.5;color:var(--ink-soft)}.share-field{margin-bottom:14px}.share-field:last-child{margin-bottom:0}.share-field h3{margin:0 0 6px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}.share-row{display:flex;gap:8px;align-items:stretch}.share-value{flex:1;min-width:0;padding:8px 10px;background:var(--paper-inset);border:1.5px solid var(--edge-strong);border-radius:9px;color:var(--ink);font-family:var(--font-mono, monospace);font-size:12px;line-height:1.45;resize:none}textarea.share-value{white-space:pre;overflow-x:auto}.share-value:focus{outline:none;border-color:var(--accent)}.share-copy{flex:none;align-self:flex-start;padding:8px 14px;background:var(--accent-btn);border:none;border-radius:9px;color:#fff;font:inherit;font-weight:600;font-size:12.5px;cursor:pointer;transition:filter .1s ease}.share-copy:hover{filter:brightness(1.08)}.embed-body{margin:0;width:100vw;height:100vh;overflow:hidden;background:var(--paper)}html:has(>body.embed-min){background:transparent}.embed-body.embed-min,.embed-min #canvas-wrap.embed-canvas-wrap{background:transparent}.embed-min #canvas-wrap.embed-canvas-wrap:before{display:none}#canvas-wrap.embed-canvas-wrap{position:fixed;inset:0;overflow:hidden;scrollbar-width:thin;scrollbar-color:var(--edge-strong) transparent}#canvas-wrap.embed-canvas-wrap>#canvas{width:100%;height:100%}.embed-zoom-controls.diagram-zoom-controls{position:fixed;top:10px;right:10px;bottom:auto;z-index:3;opacity:.85}.embed-zoom-controls.diagram-zoom-controls:hover,.embed-zoom-controls.diagram-zoom-controls:focus-within{opacity:1}.embed-min .embed-zoom-controls.diagram-zoom-controls{top:auto;bottom:10px}.embed-badge{position:fixed;right:10px;bottom:10px;z-index:3;display:inline-flex;align-items:center;padding:5px 10px;background:color-mix(in srgb,var(--paper-card) 86%,transparent);border:1px solid var(--edge-strong);border-radius:999px;color:var(--accent-deep);font-family:var(--font-display);font-size:11.5px;letter-spacing:.01em;text-decoration:none;backdrop-filter:blur(4px);transition:border-color .12s ease,color .12s ease}.embed-badge:hover{border-color:var(--accent);color:var(--accent)}.embed-edit{position:fixed;left:10px;top:10px;z-index:3;display:inline-flex;align-items:center;padding:5px 10px;background:color-mix(in srgb,var(--paper-card) 86%,transparent);border:1px solid var(--edge-strong);border-radius:999px;color:var(--accent-deep);font-family:var(--font-display);font-size:11.5px;letter-spacing:.01em;text-decoration:none;backdrop-filter:blur(4px);transition:border-color .12s ease,color .12s ease}.embed-edit:hover{border-color:var(--accent);color:var(--accent)}.embed-create{color:var(--accent);font-weight:600;text-decoration:none}.embed-create:hover{text-decoration:underline}.embed-hint{position:fixed;left:10px;bottom:10px;z-index:3;padding:5px 11px;background:var(--accent);color:#fff;border-radius:999px;font-family:var(--font-ui, inherit);font-weight:600;font-size:11.5px;box-shadow:0 2px 8px #00000038;opacity:0;transform:translateY(4px);transition:opacity .4s ease,transform .4s ease;pointer-events:none;animation:embed-hint-pulse 1.8s ease-in-out 3}[data-theme=dark] .embed-hint{background:#5747c9}.embed-hint.show{opacity:1;transform:translateY(0)}.embed-hint.hide{opacity:0;transform:translateY(4px)}@keyframes embed-hint-pulse{0%,to{box-shadow:0 2px 8px #00000038}50%{box-shadow:0 2px 14px color-mix(in srgb,var(--accent) 60%,transparent)}}@media(prefers-reduced-motion:reduce){.embed-hint{animation:none}}.embed-status{position:fixed;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;padding:16px;text-align:center;color:var(--ink-soft);font-size:13px}.learn-card-mastered{align-self:flex-start;font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--hi);background:var(--hi-soft, rgba(60,180,100,.12));border:1px solid var(--hi);border-radius:999px;padding:2px 8px;margin-bottom:6px}.learn-card-started{align-self:flex-start;font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--accent-deep);background:var(--accent-ghost, rgba(120,110,240,.12));border:1px solid var(--accent-line, var(--accent));border-radius:999px;padding:2px 8px;margin-bottom:6px}.step-control{position:fixed;left:50%;bottom:64px;transform:translate(-50%);z-index:20;display:flex;align-items:center;gap:6px;background:var(--paper-card);border:1px solid var(--edge-strong);border-radius:16px;padding:6px 8px;box-shadow:var(--shadow-card);font-size:12.5px;color:var(--ink-soft)}.step-control .step-btn{appearance:none;background:transparent;border:1px solid transparent;border-radius:10px;padding:4px 10px;color:var(--ink-soft);cursor:pointer;font-size:12.5px;transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}.step-control .step-btn:hover:not(:disabled){background:var(--accent-ghost);border-color:var(--accent-line)}.step-control .step-btn:disabled{opacity:.4;cursor:default}.step-control .step-indicator{font-variant-numeric:tabular-nums;min-width:82px;text-align:center;font-weight:600}.step-control .step-play{color:var(--accent);font-weight:600}.step-control .step-done{color:var(--text-dim)}#btn-settle.active{color:var(--accent);background:var(--accent-ghost)}.truth-identity{display:flex;align-items:center;gap:7px;margin-bottom:12px;padding:8px 12px;border-radius:12px;background:var(--accent-ghost);border:1px solid var(--accent-line);color:var(--accent);font-weight:700;font-size:15px}.truth-identity:before{content:"✓";font-weight:800}.wire.bus{stroke-width:4.6}.pin-dot.bus{stroke-width:1.2}.truth-learn-link{display:inline-block;margin:-4px 0 12px;font-size:13px;color:var(--accent);text-decoration:none}.truth-learn-link:hover{text-decoration:underline}.mosfet-lab{max-width:640px;margin:0 auto;--mos-slab: #10182a;--mos-slab-edge: rgba(150, 170, 210, .16);--mos-pad: #3b4c74;--mos-pad-hi: #506699;--mos-wire: #7d89a3;--mos-e: #67e0ff;--mos-ins: #d9c988;--mos-gate: #566080;--mos-lamp: #ffd25a}:root[data-theme=light] .mosfet-lab{--mos-slab: #dbe2ef;--mos-slab-edge: rgba(27, 35, 53, .14);--mos-pad: #55699a;--mos-pad-hi: #6a7fb2;--mos-wire: #66718c;--mos-e: #067fb0;--mos-ins: #c2a53e;--mos-gate: #8593b3;--mos-lamp: #eda50a}.mosfet-svg{width:100%;height:auto;display:block;background:var(--paper-card);border:1px solid var(--edge-strong);border-radius:16px}.mos-pad-label{fill:#fffffff5;font-family:var(--font-ui, system-ui, sans-serif);font-size:13.5px;font-weight:700;letter-spacing:.1em}.mos-tag{fill:var(--ink-faint, #8792ac);font-family:var(--font-ui, system-ui, sans-serif);font-size:12px;font-weight:600;letter-spacing:.04em}.mos-callout{fill:var(--ink, #e9edf6);font-family:var(--font-ui, system-ui, sans-serif);font-size:15px;font-weight:600}.mos-volt{fill:var(--accent-deep, #6c63ff);font-family:var(--font-mono, ui-monospace, monospace);font-size:14.5px;font-weight:700;letter-spacing:.04em}.mos-chip{fill:var(--ink-soft, #9aa6be);font-family:var(--font-ui, system-ui, sans-serif);font-size:13px;font-weight:700;letter-spacing:.07em}.mos-chip.on{fill:var(--hi, #37d99a)}.mos-gauge-tick{fill:var(--ink-faint, #8792ac);font-family:var(--font-mono, ui-monospace, monospace);font-size:11.5px;font-weight:600}.mos-gauge-th{fill:var(--hi, #37d99a);font-family:var(--font-ui, system-ui, sans-serif);font-size:11.5px;font-weight:700}.mos-gauge-cap{fill:var(--ink-soft, #9aa6be);font-family:var(--font-ui, system-ui, sans-serif);font-size:11.5px;font-weight:700;letter-spacing:.08em}.mos-caption{font-size:16.5px;line-height:1.6;color:var(--ink);margin:18px 2px 14px;min-height:4em}.mos-caption b{color:var(--accent-deep);font-weight:700}.mos-nav{display:flex;align-items:center;gap:14px}.mos-dots{display:flex;gap:7px;flex:1;justify-content:center}.mos-dot{width:9px;height:9px;padding:0;border:0;border-radius:5px;background:var(--edge-strong);cursor:pointer;transition:background .25s ease,width .25s ease}.mos-dot:hover{background:var(--ink-faint)}.mos-dot.on{background:var(--accent);width:24px}.mos-btn{font:inherit;font-weight:700;font-size:14.5px;color:#fff;background:var(--accent-btn, #5747c9);border:1px solid transparent;border-radius:10px;padding:9px 16px;cursor:pointer;white-space:nowrap}.mos-btn:hover:not(:disabled){background:var(--accent-btn-hover, #6c5ce7)}.mos-btn.ghost{color:var(--ink-soft);background:transparent;border-color:var(--edge-strong)}.mos-btn.ghost:hover:not(:disabled){background:var(--paper-inset);color:var(--ink)}.mos-btn:disabled{opacity:.3;cursor:default}.mos-playrow{flex:1;display:flex;align-items:center;gap:12px;min-width:0}.mos-playlabel{font-family:var(--font-ui, system-ui, sans-serif);font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);white-space:nowrap}.mos-volt-read{font-family:var(--font-mono, ui-monospace, monospace);font-size:14.5px;font-weight:700;color:var(--accent-deep);min-width:3.4em;text-align:right}.mos-play-slider{appearance:none;-webkit-appearance:none;flex:1;min-width:0;height:30px;background:transparent;cursor:pointer}.mos-play-slider::-webkit-slider-runnable-track{height:8px;border-radius:4px;background:linear-gradient(to right,var(--edge-strong) 0 calc(60% - 1.5px),var(--accent) calc(60% - 1.5px) calc(60% + 1.5px),var(--accent-soft) calc(60% + 1.5px) 100%)}.mos-play-slider::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;margin-top:-7px;border-radius:50%;background:var(--accent);border:3px solid var(--paper-card);box-shadow:0 1px 5px #00000059}.mos-play-slider::-moz-range-track{height:8px;border-radius:4px;background:linear-gradient(to right,var(--edge-strong) 0 calc(60% - 1.5px),var(--accent) calc(60% - 1.5px) calc(60% + 1.5px),var(--accent-soft) calc(60% + 1.5px) 100%)}.mos-play-slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--accent);border:3px solid var(--paper-card);box-shadow:0 1px 5px #00000059}.cpu-lab{max-width:660px;margin:0 auto;--cpu-box: #26324a;--cpu-box-dim: #222b3d;--cpu-mem: #2a3550;--cpu-edge: rgba(125, 155, 215, .28);--cpu-active: #7c74ff;--cpu-active-fill: rgba(124, 116, 255, .16);--cpu-data: #2fd3e6;--cpu-acc: #22c98d}:root[data-theme=light] .cpu-lab{--cpu-box: #e9edf6;--cpu-box-dim: #e2e7f2;--cpu-mem: #e6ebf5;--cpu-edge: rgba(64, 84, 138, .32);--cpu-active: #6a5cf0;--cpu-active-fill: rgba(106, 92, 240, .14);--cpu-data: #38cbe6;--cpu-acc: #0e9c63}.cpu-svg{width:100%;height:auto;display:block;background:var(--paper-card);border:1px solid var(--edge-strong);border-radius:16px}.cpu-label{fill:var(--ink);font-family:var(--font-sans, system-ui, sans-serif);font-size:18px;font-weight:600}.cpu-cap{fill:var(--ink-soft);font-family:var(--font-sans, system-ui, sans-serif);font-size:14px;letter-spacing:.04em;text-transform:uppercase}.cpu-cap.sm{font-size:13px;letter-spacing:.02em;text-transform:none}.cpu-val{fill:var(--ink);font-family:var(--font-mono, ui-monospace, monospace);font-size:19px;font-weight:700}.cpu-val.acc{fill:var(--cpu-acc, #22c98d);font-size:26px}.cpu-addr{fill:var(--ink-faint, #8792ac);font-family:var(--font-mono, ui-monospace, monospace);font-size:15px;font-weight:700}.cpu-instr{fill:var(--ink);font-family:var(--font-mono, ui-monospace, monospace);font-size:18px}.cpu-token{fill:#06232b;font-family:var(--font-mono, ui-monospace, monospace);font-size:15px;font-weight:800}.cpu-phase{fill:var(--accent-deep);font-family:var(--font-display, sans-serif);font-size:19px;letter-spacing:.08em}.cpu-caption{font-size:17px;line-height:1.55;color:var(--ink);margin:20px 2px 16px;min-height:3em}.cpu-caption b{color:var(--accent-deep);font-weight:700}.cpu-caption code{font-family:var(--font-mono, ui-monospace, monospace);font-size:.92em;background:var(--paper-inset);border:1px solid var(--edge);border-radius:5px;padding:1px 5px;color:var(--ink)}.cpu-nav{display:flex;align-items:center;gap:14px}.cpu-dots{display:flex;gap:7px;flex:1;justify-content:center;flex-wrap:wrap}.cpu-dot{width:9px;height:9px;border-radius:50%;background:var(--edge-strong);transition:background .2s ease,transform .2s ease}.cpu-dot.on{background:var(--accent);transform:scale(1.3)}.cpu-btn{font:inherit;font-weight:700;font-size:14.5px;color:#fff;background:var(--accent);border:1px solid var(--accent-deep);border-radius:10px;padding:9px 16px;cursor:pointer;white-space:nowrap}[data-theme=dark] .cpu-btn{background:#5747c9;border-color:transparent}.cpu-btn:hover:not(:disabled){background:var(--accent-deep)}.cpu-btn.ghost{color:var(--ink-soft);background:transparent;border-color:var(--edge-strong)}.cpu-btn.ghost:hover:not(:disabled){background:var(--paper-inset);color:var(--ink)}.cpu-btn:disabled{opacity:.3;cursor:default}.mem-lab{max-width:640px;margin:0 auto;--mem-lamp-off: #3a4356}:root[data-theme=light] .mem-lab{--mem-lamp-off: #d5dbe7}.mem-svg{width:100%;height:auto;display:block;background:var(--paper-card);border:1px solid var(--edge-strong);border-radius:16px}.mem-gate{fill:var(--paper-inset);stroke:var(--edge-strong);stroke-width:1.6px;transition:stroke .25s ease}.mem-gate.on{stroke:var(--accent);stroke-width:2.5px}.mem-gate-label{fill:var(--ink);font-family:var(--font-sans, system-ui, sans-serif);font-size:18px;font-weight:700;letter-spacing:.04em}.mem-node{fill:var(--paper-inset);stroke:var(--edge-strong);stroke-width:1.6px;transition:fill .25s ease,stroke .25s ease}.mem-node.on{fill:var(--accent);stroke:var(--accent)}.mem-bit{fill:var(--ink-soft);font-family:var(--font-mono, ui-monospace, monospace);font-size:17px;font-weight:700;transition:fill .25s ease}.mem-bit.on{fill:#fff}.mem-q{fill:var(--ink-soft);font-family:var(--font-mono, ui-monospace, monospace);font-size:24px;font-weight:800}.mem-cap{fill:var(--ink-soft);font-family:var(--font-sans, system-ui, sans-serif);font-size:15px}.mem-wire{stroke:var(--edge-strong);transition:stroke .25s ease}.mem-wire.on{stroke:#2fd3e6}.mem-fb{stroke:#d98a3d;stroke-dasharray:7 5;opacity:.7;transition:opacity .25s ease,stroke-width .25s ease}.mem-fb.emph{opacity:1;stroke-width:4px}.mem-fb.live{stroke:#f2a154;opacity:1}.mem-fb-label{fill:#c47a2f;font-family:var(--font-sans, system-ui, sans-serif);font-size:15px;font-weight:700;opacity:.6;transition:opacity .25s ease}.mem-fb-label.emph{opacity:1}.mem-caption{font-size:17px;line-height:1.55;color:var(--ink);margin:20px 2px 16px;min-height:3.4em}.mem-caption b{color:var(--accent-deep);font-weight:700}.mem-nav{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.mem-dots{display:flex;gap:7px;flex:1;justify-content:center}.mem-dot{width:9px;height:9px;border-radius:50%;background:var(--edge-strong);transition:background .2s ease,transform .2s ease}.mem-dot.on{background:var(--accent);transform:scale(1.3)}.mem-btn{font:inherit;font-weight:700;font-size:14.5px;color:#fff;background:var(--accent);border:1px solid var(--accent-deep);border-radius:10px;padding:9px 16px;cursor:pointer;white-space:nowrap}[data-theme=dark] .mem-btn{background:#5747c9;border-color:transparent}.mem-btn:hover:not(:disabled){background:var(--accent-deep)}.mem-btn.ghost{color:var(--ink-soft);background:transparent;border-color:var(--edge-strong)}.mem-btn.ghost:hover:not(:disabled){background:var(--paper-inset);color:var(--ink)}.mem-btn.set{background:#22c98d;border-color:#1aa876}.mem-btn.set:hover{background:#1aa876}.mem-btn.reset{background:#e0687a;border-color:#c9556a}.mem-btn.reset:hover{background:#c9556a}.mem-btn:disabled{opacity:.3;cursor:default}.add-lab{max-width:560px;margin:0 auto}.add-svg{width:100%;height:auto;display:block;background:var(--paper-card);border:1px solid var(--edge-strong);border-radius:16px}.add-place{fill:var(--ink-faint, #8792ac);font-family:var(--font-mono, ui-monospace, monospace);font-size:13px}.add-rowlabel{fill:var(--ink-soft);font-family:var(--font-sans, system-ui, sans-serif);font-size:17px;font-weight:700}.add-carry{fill:#d98a3d;font-family:var(--font-mono, ui-monospace, monospace);font-size:15px;font-weight:800}.add-bit{fill:var(--ink);font-family:var(--font-mono, ui-monospace, monospace);font-size:20px;font-weight:700}.add-dec{fill:var(--ink-soft);font-family:var(--font-mono, ui-monospace, monospace);font-size:15px;font-weight:700}.add-dec.sum{fill:#22c98d}.add-cell{fill:var(--paper-inset);stroke:var(--edge-strong);stroke-width:1.6px;transition:fill .2s ease,stroke .2s ease}.add-cell.a.on,.add-cell.b.on{fill:var(--accent);stroke:var(--accent)}.add-cell.sum.on{fill:#22c98d;stroke:#1aa876}.add-cell.blank{fill:transparent;stroke:var(--edge);stroke-dasharray:4 4}.add-cell.active{stroke:#f2a154;stroke-width:3px}.add-cell.on+text{fill:#fff}.add-caption{font-size:17px;line-height:1.55;color:var(--ink);margin:20px 2px 16px;min-height:3.4em}.add-caption b{color:var(--accent-deep);font-weight:700}.add-caption code{font-family:var(--font-mono, ui-monospace, monospace);font-size:.92em;background:var(--paper-inset);border:1px solid var(--edge);border-radius:5px;padding:1px 5px;color:var(--ink)}.add-nav{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.add-dots{display:flex;gap:7px;flex:1;justify-content:center}.add-dot{width:9px;height:9px;border-radius:50%;background:var(--edge-strong);transition:background .2s ease,transform .2s ease}.add-dot.on{background:var(--accent);transform:scale(1.3)}.add-play-hint{font-size:13px;color:var(--ink-soft)}.add-btn{font:inherit;font-weight:700;font-size:14.5px;color:#fff;background:var(--accent);border:1px solid var(--accent-deep);border-radius:10px;padding:9px 16px;cursor:pointer;white-space:nowrap}[data-theme=dark] .add-btn{background:#5747c9;border-color:transparent}.add-btn:hover:not(:disabled){background:var(--accent-deep)}.add-btn.ghost{color:var(--ink-soft);background:transparent;border-color:var(--edge-strong)}.add-btn.ghost:hover:not(:disabled){background:var(--paper-inset);color:var(--ink)}.add-btn:disabled{opacity:.3;cursor:default}.mul-lab{max-width:580px;margin:0 auto}.mul-svg{width:100%;height:auto;display:block;background:var(--paper-card);border:1px solid var(--edge-strong);border-radius:16px}.mul-rowlabel{fill:var(--ink-soft);font-family:var(--font-sans, system-ui, sans-serif);font-size:16px;font-weight:700}.mul-rowlabel.add{fill:#d98a3d}.mul-bit{fill:var(--ink);font-family:var(--font-mono, ui-monospace, monospace);font-size:17px;font-weight:700}.mul-dec{fill:var(--ink-soft);font-family:var(--font-mono, ui-monospace, monospace);font-size:14px;font-weight:700}.mul-dec.sum{fill:#22c98d}.mul-cell{fill:var(--paper-inset);stroke:var(--edge-strong);stroke-width:1.5px;transition:fill .2s ease,stroke .2s ease}.mul-cell.a.on,.mul-cell.b.on{fill:var(--accent);stroke:var(--accent)}.mul-cell.partial.on{fill:#d98a3d;stroke:#c2762c}.mul-cell.product.on{fill:#22c98d;stroke:#1aa876}.mul-cell.blank{fill:transparent;stroke:var(--edge);stroke-dasharray:3 3}.mul-cell.active{stroke:#f2a154;stroke-width:3px}.mul-cell.on+text{fill:#fff}.mul-pointer{fill:#f2a154;transition:opacity .2s ease}.mul-caption{font-size:17px;line-height:1.55;color:var(--ink);margin:20px 2px 16px;min-height:3.4em}.mul-caption b{color:var(--accent-deep);font-weight:700}.mul-caption code{font-family:var(--font-mono, ui-monospace, monospace);font-size:.92em;background:var(--paper-inset);border:1px solid var(--edge);border-radius:5px;padding:1px 5px;color:var(--ink)}.mul-nav{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.mul-dots{display:flex;gap:7px;flex:1;justify-content:center}.mul-dot{width:9px;height:9px;border-radius:50%;background:var(--edge-strong);transition:background .2s ease,transform .2s ease}.mul-dot.on{background:var(--accent);transform:scale(1.3)}.mul-play-hint{font-size:13px;color:var(--ink-soft)}.mul-btn{font:inherit;font-weight:700;font-size:14.5px;color:#fff;background:var(--accent);border:1px solid var(--accent-deep);border-radius:10px;padding:9px 16px;cursor:pointer;white-space:nowrap}[data-theme=dark] .mul-btn{background:#5747c9;border-color:transparent}.mul-btn:hover:not(:disabled){background:var(--accent-deep)}.mul-btn.ghost{color:var(--ink-soft);background:transparent;border-color:var(--edge-strong)}.mul-btn.ghost:hover:not(:disabled){background:var(--paper-inset);color:var(--ink)}.mul-btn:disabled{opacity:.3;cursor:default}@media(max-width:560px){.mul-bit{font-size:23px}.mul-dec{font-size:19px}.mul-rowlabel{font-size:21px}}.bin-lab{max-width:560px;margin:0 auto}.bin-svg{width:100%;height:auto;display:block;background:var(--paper-card);border:1px solid var(--edge-strong);border-radius:16px}.bin-place{fill:var(--ink-faint, #8792ac);font-family:var(--font-mono, ui-monospace, monospace);font-size:13px}.bin-bit{fill:var(--ink);font-family:var(--font-mono, ui-monospace, monospace);font-size:20px;font-weight:700}.bin-cell{fill:var(--paper-inset);stroke:var(--edge-strong);stroke-width:1.6px;transition:fill .18s ease,stroke .18s ease}.bin-cell.on{fill:var(--accent);stroke:var(--accent)}.bin-cell.on+text{fill:#fff}.bin-place.neg{fill:#e0616b;font-weight:700}.bin-cell.onneg{fill:#e0616b;stroke:#cf4d57}.bin-cell.onneg+text{fill:#fff}.bin-cell.flash{fill:#22c98d;stroke:#1aa876}.bin-cell.flash+text{fill:#fff}.bin-sum{fill:var(--ink);font-family:var(--font-mono, ui-monospace, monospace);font-size:18px;font-weight:700}.bin-dec{fill:var(--ink-soft);font-family:var(--font-mono, ui-monospace, monospace);font-size:14px}.bin-caption{font-size:17px;line-height:1.55;color:var(--ink);margin:20px 2px 14px;min-height:3.2em}.bin-caption b{color:var(--accent-deep);font-weight:700}.bin-caption code{font-family:var(--font-mono, ui-monospace, monospace);font-size:.92em;background:var(--paper-inset);border:1px solid var(--edge);border-radius:5px;padding:1px 5px;color:var(--ink)}.bin-controls{display:flex;gap:10px;justify-content:center;margin-bottom:14px}.bin-nav{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.bin-dots{display:flex;gap:7px;flex:1;justify-content:center}.bin-dot{width:9px;height:9px;border-radius:50%;background:var(--edge-strong);transition:background .2s ease,transform .2s ease}.bin-dot.on{background:var(--accent);transform:scale(1.3)}.bin-play-hint{font-size:13px;color:var(--ink-soft)}.bin-btn{font:inherit;font-weight:700;font-size:14.5px;color:#fff;background:var(--accent);border:1px solid var(--accent-deep);border-radius:10px;padding:9px 16px;cursor:pointer;white-space:nowrap}[data-theme=dark] .bin-btn{background:#5747c9;border-color:transparent}.bin-btn:hover:not(:disabled){background:var(--accent-deep)}.bin-btn.accent{min-width:64px}.bin-btn.ghost{color:var(--ink-soft);background:transparent;border-color:var(--edge-strong)}.bin-btn.ghost:hover:not(:disabled){background:var(--paper-inset);color:var(--ink)}.bin-btn:disabled{opacity:.3;cursor:default}@media(max-width:560px){.bin-bit{font-size:24px}.bin-place{font-size:15px}.bin-sum{font-size:21px}.bin-dec{font-size:16px}}.gate-lab{max-width:560px;margin:0 auto}.gate-svg{width:100%;height:auto;display:block;background:var(--paper-card);border:1px solid var(--edge-strong);border-radius:16px}.gate-body{fill:var(--paper-inset);stroke:var(--ink);stroke-width:2.4px;stroke-linejoin:round}.gate-body-line{fill:none;stroke:var(--ink);stroke-width:2.4px}.gate-wire{fill:none;stroke:var(--edge-strong);stroke-width:2.6px;transition:stroke .15s ease}.gate-wire.on{stroke:#22c98d}.gate-in-box{fill:var(--paper-inset);stroke:var(--edge-strong);stroke-width:1.8px;transition:fill .15s ease,stroke .15s ease}.gate-in-box.on{fill:var(--accent);stroke:var(--accent)}.gate-input:hover .gate-in-box{stroke:var(--accent)}.gate-in-t{fill:var(--ink);font-family:var(--font-mono, ui-monospace, monospace);font-size:16px;font-weight:700}.gate-in-box.on+.gate-in-t{fill:#fff}.gate-lamp{fill:var(--paper-inset);stroke:var(--edge-strong);stroke-width:2px;transition:fill .15s ease,stroke .15s ease}.gate-lamp.on{fill:#22c98d;stroke:#1aa876}.gate-lamp-t{fill:var(--ink);font-family:var(--font-mono, ui-monospace, monospace);font-size:15px;font-weight:700}.gate-lamp.on+.gate-lamp-t{fill:#fff}.gate-pinlabel{fill:var(--ink-soft);font-family:var(--font-sans, system-ui, sans-serif);font-size:12px;font-weight:700}.gate-th{fill:var(--ink-soft);font-family:var(--font-mono, ui-monospace, monospace);font-size:13px;font-weight:700}.gate-tline{stroke:var(--edge-strong);stroke-width:1.5px}.gate-td{fill:var(--ink-soft);font-family:var(--font-mono, ui-monospace, monospace);font-size:14px}.gate-td.one{fill:var(--ink);font-weight:700}.gate-td.out{fill:var(--accent-deep);font-weight:700}[data-theme=dark] .gate-td.out{fill:#8b7be8}.gate-trow-cur{fill:var(--accent-ghost)}.gate-caption{font-size:17px;line-height:1.55;color:var(--ink);margin:20px 2px 16px;min-height:3.2em}.gate-caption b{color:var(--accent-deep);font-weight:700}.gate-nav{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.gate-dots{display:flex;gap:7px;flex:1;justify-content:center}.gate-dot{width:9px;height:9px;border-radius:50%;background:var(--edge-strong);transition:background .2s ease,transform .2s ease}.gate-dot.on{background:var(--accent);transform:scale(1.3)}.gate-play-hint{font-size:13px;color:var(--ink-soft)}.gate-btn{font:inherit;font-weight:700;font-size:14.5px;color:#fff;background:var(--accent);border:1px solid var(--accent-deep);border-radius:10px;padding:9px 16px;cursor:pointer;white-space:nowrap}[data-theme=dark] .gate-btn{background:#5747c9;border-color:transparent}.gate-btn:hover:not(:disabled){background:var(--accent-deep)}.gate-btn.ghost{color:var(--ink-soft);background:transparent;border-color:var(--edge-strong)}.gate-btn.ghost:hover:not(:disabled){background:var(--paper-inset);color:var(--ink)}.gate-btn:disabled{opacity:.3;cursor:default}@media(max-width:560px){.gate-in-t{font-size:20px}.gate-lamp-t{font-size:19px}.gate-td{font-size:18px}.gate-th{font-size:16px}.gate-pinlabel{font-size:15px}}.mos-caption{min-height:84px}.gate-caption{min-height:60px}.add-caption{min-height:88px}.mul-caption,.mem-caption,.cpu-caption,.bin-caption{min-height:84px}@media(max-width:600px){.mos-caption{min-height:136px}.gate-caption{min-height:84px}.add-caption{min-height:108px}.mul-caption{min-height:136px}.mem-caption,.cpu-caption{min-height:108px}.bin-caption{min-height:136px}}@media(max-width:440px){.mos-caption{min-height:160px}.gate-caption{min-height:108px}.add-caption,.mul-caption,.mem-caption,.cpu-caption{min-height:136px}.bin-caption{min-height:160px}}.mos-nav>.mos-btn:last-child,.add-nav>.add-btn:last-child,.mul-nav>.mul-btn:last-child,.mem-nav>.mem-btn:last-child{min-width:152px}.cpu-nav>.cpu-btn:last-child{min-width:140px}.jstrip{margin:22px auto 4px;max-width:640px}.jstrip-label{display:block;font-size:11.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-soft);margin:0 0 9px;text-align:center}.jstrip-label b{color:var(--accent-deep);font-weight:700}.jstrip-track{display:flex;align-items:center;gap:19px;overflow-x:auto;padding:3px 4px 9px;justify-content:flex-start;scrollbar-width:thin;-webkit-overflow-scrolling:touch}@media(min-width:680px){.jstrip-track{justify-content:center}}.jstrip-node{flex:0 0 auto;position:relative;display:inline-flex;align-items:center;text-decoration:none;font-size:12.5px;font-weight:600;color:var(--ink-soft);background:var(--paper-inset);border:1px solid var(--edge-strong);border-radius:999px;padding:6px 12px;white-space:nowrap;transition:background .15s ease,color .15s ease,border-color .15s ease}a.jstrip-node:hover{color:var(--ink);border-color:var(--accent-line);background:var(--accent-ghost)}.jstrip-node.current{color:#fff;background:var(--accent);border-color:var(--accent-deep)}[data-theme=dark] .jstrip-node.current{background:#5747c9;border-color:transparent}.jstrip-node:after{content:"→";position:absolute;right:-14px;top:50%;transform:translateY(-50%);color:var(--edge-strong);font-weight:400;font-size:12px;pointer-events:none}.jstrip-track .jstrip-node:last-child:after{content:none}.embed-offer{margin:34px 0 0;padding:15px 18px;border:1px solid var(--edge-strong);border-radius:12px;background:var(--paper-inset)}.embed-offer h2{font-family:var(--font-display, system-ui);font-weight:400;font-size:18px;margin:0 0 3px;color:var(--ink)}.embed-offer p{margin:0 0 8px;font-size:13.5px;color:var(--ink-soft)}.embed-offer code{display:block;font-family:var(--font-mono, ui-monospace, monospace);font-size:12px;line-height:1.5;background:var(--paper-card);border:1px solid var(--edge-strong);border-radius:8px;padding:10px 12px;color:var(--ink);overflow-x:auto;white-space:pre}.journey-hero{width:min(560px,100%);display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;gap:4px 20px;align-items:center;background:var(--paper-card);border:1px solid var(--edge-strong);border-radius:16px;padding:18px 20px 14px;box-shadow:0 4px 18px #1e1e3c0f}.jh-ring{position:relative;width:84px;height:84px;grid-row:1}.jh-ring svg{width:100%;height:100%}.jh-ring-track{fill:none;stroke:var(--edge-strong);stroke-width:7}.jh-ring-arc{fill:none;stroke:var(--hi);stroke-width:7;stroke-linecap:round;transition:stroke-dashoffset .6s ease}.jh-ring-label{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.05;text-align:center}.jh-ring-label strong{font-size:19px;color:var(--ink)}.jh-ring-label small{font-size:9.5px;color:var(--ink-faint)}.jh-col{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:0}.jh-eyebrow{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--accent, #8b7bf6)}.jh-goal{font-size:14px;color:var(--ink);line-height:1.35}.jh-goal strong{font-weight:700}.jh-toward{color:var(--ink-soft)}.jh-continue{margin-top:2px;border:none;cursor:pointer;background:var(--accent-btn);color:#fff;font:inherit;font-weight:700;font-size:13.5px;padding:8px 18px;border-radius:999px;box-shadow:0 2px 10px var(--accent-soft);transition:transform .15s ease,box-shadow .15s ease}.jh-continue:hover{background:var(--accent-btn-hover);transform:translateY(-1px);box-shadow:0 4px 14px var(--accent-soft)}.jh-stats{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:4px 18px;margin-top:8px;padding-top:10px;border-top:1px solid var(--edge);font-size:12.5px;color:var(--ink-soft)}.jh-stat{cursor:help}.journey-shelf{width:min(560px,100%);display:flex;align-items:flex-start;gap:10px;min-width:0}.journey-shelf-label{flex:0 0 auto;padding-top:5px;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-faint)}.journey-shelf-label b{color:var(--ink-soft)}.journey-shelf-row{display:flex;flex-wrap:wrap;gap:6px;padding:2px 0}.shelf-chip{flex:0 0 auto;font-size:11px;font-weight:600;padding:3px 9px;border-radius:999px;border:1px solid var(--edge-strong);color:var(--ink-faint);background:transparent;cursor:help;opacity:.55}.shelf-chip.earned{opacity:1;color:var(--hi);border-color:var(--hi-soft);background:var(--hi-soft)}.journey-links{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.jlink{border:1px solid var(--edge-strong);background:transparent;color:var(--ink-soft);font:inherit;font-size:12.5px;padding:5px 12px;border-radius:999px;cursor:pointer;text-decoration:none;transition:border-color .15s ease,color .15s ease}.jlink:hover{border-color:var(--accent-line);color:var(--ink)}.jlink-due{color:var(--osc);border-color:var(--osc-soft);background:var(--osc-soft)}@media(max-width:480px){.journey-hero{grid-template-columns:1fr;text-align:center}.jh-ring{margin:0 auto}.jh-col{align-items:center}.jh-stats{justify-content:center}}.syn-keyword{color:var(--accent);font-weight:600}.syn-type{color:var(--accent-deep, var(--accent))}.syn-number{color:var(--osc)}.syn-string{color:var(--hi)}.syn-comment{color:var(--ink-soft);font-style:italic;opacity:.85}.syn-operator{color:var(--ink-soft)}
