:root{--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--color-bg:#fff;--color-text:#1f2328;--color-text-muted:#59636e;--panel-bg:#f6f8fa;--panel-border:#d1d9e0;--button-bg:#fff;--button-hover:#eef1f4;--accent:#4f46e5;--accent-text:#fff;--brand:#4f46e5;--brand-strong:#4338ca;--brand-soft:#eef2ff;--brand-ink:#fff;--brand-signal:#34d399;--danger:#cf222e;--warning:#9a6700;--canvas-bg:#fff;--canvas-grid:#a3acb6;--component-fill:#fff;--component-stroke:#1f2328;--component-text:#1f2328;--selection:#d97706;--selection-fill:#d977061a;--net-highlight:#d9770638;--wire-low:#2563eb;--wire-high:#16a34a;--wire-unknown:#dc2626;--wire-floating:#8c959f;--wire-idle:#b6bdc4;--wire-bus:#334155;--wire-preview:#d97706;--wire-open-end:#db2777;--group-1:#2563eb38;--group-2:#16a34a3d;--group-3:#d9770642;--group-4:#db277738;--group-5:#7c3aed38;--group-6:#0d94883d;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:var(--font-sans)}:root[data-theme=dark]{--color-bg:#0a0b0d;--color-text:#e6e8eb;--color-text-muted:#9aa1ab;--panel-bg:#16191e;--panel-border:#2a2f37;--button-bg:#1e2228;--button-hover:#2a2f37;--accent:#818cf8;--accent-text:#0d1117;--brand:#6366f1;--brand-strong:#818cf8;--brand-soft:#1e1b4b;--brand-ink:#fff;--brand-signal:#34d399;--danger:#ff6b6b;--warning:#e3b341;--canvas-bg:#000;--canvas-grid:#24282f;--component-fill:#0d0f12;--component-stroke:#d0d7de;--component-text:#d0d7de;--selection:#fbbf24;--selection-fill:#fbbf241f;--net-highlight:#fbbf2438;--wire-low:#3b82f6;--wire-high:#22c55e;--wire-unknown:#ef4444;--wire-floating:#6b7280;--wire-idle:#3f4650;--wire-bus:#cbd5e1;--wire-preview:#fbbf24;--wire-open-end:#f472b6;--group-1:#4c8dff4d;--group-2:#22c55e4d;--group-3:#fbbf244d;--group-4:#f472b64d;--group-5:#a78bfa52;--group-6:#2dd4bf4d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--color-bg);color:var(--color-text);overflow:hidden}button{font:inherit;color:var(--color-text);background:var(--button-bg);border:1px solid var(--panel-border);cursor:pointer;border-radius:6px;padding:4px 10px}button:hover{background:var(--button-hover)}button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.app{grid-template:"toolbar toolbar toolbar"44px"palette canvas properties"1fr"status status status"28px/212px 1fr 232px;height:100%;display:grid}.toolbar{background:var(--panel-bg);border-bottom:1px solid var(--panel-border);grid-area:toolbar;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:16px;padding:0 12px;display:grid}.toolbar h1{margin:0;font-size:15px}.toolbar-group{align-items:center;gap:6px;display:flex}.zoom-level{text-align:center;font-variant-numeric:tabular-nums;min-width:48px;color:var(--color-text-muted);font-size:13px}.palette{background:var(--panel-bg);border-right:1px solid var(--panel-border);grid-area:palette;padding:10px;overflow-y:auto}.palette-section+.palette-section{margin-top:6px}.palette-header{text-transform:uppercase;letter-spacing:.04em;width:100%;color:var(--color-text-muted);background:0 0;border:none;justify-content:space-between;align-items:center;padding:6px 4px;font-size:12px;font-weight:600;display:flex}.palette-header:hover{background:var(--button-hover)}.chevron{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:12px;height:12px;transition:transform .12s}.palette-header[aria-expanded=false] .chevron{transform:rotate(-90deg)}.palette-grid{grid-template-columns:repeat(3,1fr);gap:4px;padding:2px 0 4px;display:grid}.palette-tile{color:var(--color-text-muted);flex-direction:column;align-items:center;gap:2px;padding:4px 2px 3px;font-size:10.5px;line-height:1.2;display:flex}.palette-tile.active{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);color:var(--color-text)}.palette-icon{display:block}.palette-hint{color:var(--color-text-muted);margin-top:14px;font-size:12px;line-height:1.4}.canvas-area{grid-area:canvas;min-width:0;min-height:0;position:relative}.editor-canvas{touch-action:none;width:100%;height:100%;display:block;position:absolute;inset:0}.status-bar{background:var(--panel-bg);border-top:1px solid var(--panel-border);color:var(--color-text-muted);white-space:nowrap;grid-area:status;justify-content:space-between;align-items:center;gap:16px;min-width:0;padding:0 12px;font-size:12px;display:flex}.status-bar>span{text-overflow:ellipsis;overflow:hidden}.status-error{color:var(--danger);text-overflow:ellipsis;overflow:hidden}.status-warning{color:var(--warning)}.status-notice{color:var(--color-text)}button.danger{background:var(--danger);border-color:var(--danger);color:var(--canvas-bg)}.icon-button{background:0 0;border:none;padding:2px 6px;font-size:20px;line-height:1}.menu-bar{gap:2px;display:flex}.menu{position:relative}.menu-button{background:0 0;border:none;padding:5px 10px;font-size:13px}.menu-button.open{background:var(--button-hover)}.menu-dropdown{z-index:20;background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:8px;min-width:232px;padding:4px;position:absolute;top:calc(100% + 4px);left:0;box-shadow:0 8px 24px #00000040}.menu-item{text-align:left;background:0 0;border:none;border-radius:5px;align-items:center;gap:6px;width:100%;padding:6px 8px 6px 4px;font-size:13px;display:flex}.menu-item:hover:not(:disabled),.menu-item:focus-visible{background:var(--accent);color:var(--accent-text);outline:none}.menu-item:disabled{color:var(--color-text-muted);cursor:default;opacity:.7}.menu-check{text-align:center;width:14px}.menu-label{flex:1}.menu-shortcut,.menu-note{color:var(--color-text-muted);font-family:inherit;font-size:11px}.menu-item:hover:not(:disabled) .menu-shortcut,.menu-item:focus-visible .menu-shortcut{color:inherit}.menu-note{font-style:italic}.menu-separator{background:var(--panel-border);height:1px;margin:4px 6px}.modal{border:1px solid var(--panel-border);background:var(--panel-bg);width:min(420px,100vw - 32px);max-height:calc(100vh - 64px);color:var(--color-text);border-radius:10px;padding:0;box-shadow:0 16px 48px #00000059}.modal.wide{width:min(640px,100vw - 32px)}.modal::backdrop{background:#00000073}.modal-content{flex-direction:column;max-height:calc(100vh - 66px);display:flex}.modal-header{justify-content:space-between;align-items:center;padding:12px 12px 8px 18px;display:flex}.modal-header h2{margin:0;font-size:16px}.modal-body{padding:4px 18px 16px;font-size:14px;line-height:1.5;overflow:auto}.modal-body p{margin:0 0 10px}.modal-footer{border-top:1px solid var(--panel-border);justify-content:flex-end;gap:8px;padding:12px 18px;display:flex}.dialog-hint{color:var(--color-text-muted);font-size:12.5px}.dialog-error{color:var(--danger)}.steps{margin:0;padding-left:20px}.steps li+li{margin-top:8px}.field{flex-direction:column;gap:4px;margin-bottom:12px;font-size:13px;display:flex}.field>span:first-child{color:var(--color-text-muted)}.field select,.field input{font:inherit;color:var(--color-text);background:var(--button-bg);border:1px solid var(--panel-border);border-radius:6px;padding:6px 8px}.field input{font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:14px}.field input[aria-invalid=true]{border-color:var(--danger)}.input-with-prefix{align-items:center;gap:6px;display:flex}.input-with-prefix input{flex:1;min-width:0}.prefix{color:var(--color-text-muted);font-family:ui-monospace,Cascadia Code,Consolas,monospace}.field-error{color:var(--danger);font-size:12px}.table-scroll{border:1px solid var(--panel-border);border-radius:6px;max-height:50vh;overflow:auto}.truth-table{border-collapse:collapse;text-align:center;width:100%;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:13px}.truth-table th{background:var(--panel-bg);font-family:var(--font-sans);border-bottom:1px solid var(--panel-border);padding:6px 10px;font-weight:600;position:sticky;top:0}.truth-table td{padding:3px 10px}.truth-table tbody tr:nth-child(2n){background:var(--button-hover)}.truth-table .output-start{border-left:2px solid var(--panel-border)}.truth-table .one{color:var(--wire-high);font-weight:600}.truth-table .unknown{color:var(--wire-unknown)}.shortcut-table{border-collapse:collapse;width:100%}.shortcut-table td{vertical-align:top;padding:5px 0}.shortcut-table td:first-child{width:46%;padding-right:12px}kbd{border:1px solid var(--panel-border);background:var(--button-bg);border-bottom-width:2px;border-radius:4px;padding:1px 6px;font-family:inherit;font-size:12px}.menu-shortcut{background:0 0;border:none;padding:0}.palette-tile{position:relative}.palette-tile:disabled{cursor:default;opacity:.55}.palette-tile:disabled:hover{background:var(--button-bg)}.symbol-icon{fill:none;width:44px;height:34px;stroke:var(--component-stroke);stroke-width:1.5px;stroke-linejoin:round}.symbol-icon text{fill:var(--component-text);stroke:none;font-size:9px;font-weight:600}.properties{background:var(--panel-bg);border-left:1px solid var(--panel-border);grid-area:properties;padding:12px 14px;font-size:13px;overflow-y:auto}.properties h2{margin:0 0 12px;font-size:14px}.panel-muted{color:var(--color-text-muted);font-size:12.5px;line-height:1.45}.panel-actions{gap:6px;margin-top:14px;display:flex}button.danger-outline{color:var(--danger)}.props{grid-template-columns:auto 1fr;gap:6px 10px;margin:0 0 10px;display:grid}.props dt{color:var(--color-text-muted)}.props dd{overflow-wrap:anywhere;margin:0}.mono{font-family:ui-monospace,Cascadia Code,Consolas,monospace}.pin-table{border-collapse:collapse;width:100%}.pin-table td{padding:2px 0}.pin-table td:last-child{text-align:right}.pin-table .one{color:var(--wire-high);font-weight:600}.pin-table .unknown{color:var(--wire-unknown)}.problems{position:relative}.problems-ok{color:var(--color-text-muted)}.problems-button,.status-link{background:0 0;border:none;padding:2px 6px;font-size:12px}.problems-button{color:var(--warning);font-weight:600}.problems-button.has-errors{color:var(--danger)}.status-link{text-overflow:ellipsis;white-space:nowrap;max-width:50vw;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;overflow:hidden}.problems-list{z-index:20;background:var(--panel-bg);border:1px solid var(--panel-border);white-space:normal;border-radius:8px;width:min(520px,90vw);max-height:50vh;margin:0;padding:4px;list-style:none;position:absolute;bottom:calc(100% + 6px);left:0;overflow-y:auto;box-shadow:0 8px 24px #00000040}.problems-list button{text-align:left;background:0 0;border:none;align-items:baseline;gap:8px;width:100%;padding:6px 8px;font-size:12.5px;line-height:1.4;display:flex}.problems-list button:hover{background:var(--button-hover)}.severity{flex-shrink:0;font-size:11px;font-weight:600}.severity.error{color:var(--danger)}.severity.warning{color:var(--warning)}.color-grid{gap:6px;display:grid}.color-row{align-items:center;gap:10px;font-size:13px;display:flex}.color-row input[type=color]{border:1px solid var(--panel-border);background:var(--button-bg);cursor:pointer;border-radius:5px;width:36px;height:26px;padding:0 2px}.color-row span{flex:1}.link-button{color:var(--accent);background:0 0;border:none;padding:0;font-size:12px;text-decoration:underline}.inline-rename{z-index:10;position:absolute;transform:translate(-50%,-50%)}.inline-rename input{width:140px;font:inherit;text-align:center;color:var(--color-text);background:var(--panel-bg);border:1px solid var(--selection);border-radius:5px;outline:none;padding:3px 6px;font-size:13px;box-shadow:0 4px 12px #00000040}.inline-rename input[aria-invalid=true]{border-color:var(--danger)}.inline-rename-error{color:var(--danger);background:var(--panel-bg);white-space:nowrap;border-radius:4px;margin-top:4px;padding:3px 6px;font-size:12px}.field-hint{color:var(--color-text-muted);font-size:11.5px}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}button:disabled{opacity:.55;cursor:default}.test-summary{border-radius:6px;margin:0 0 10px;padding:8px 10px;font-size:13px;font-weight:600}.test-summary.pass{color:var(--wire-high);background:color-mix(in srgb, var(--wire-high) 12%, transparent)}.test-summary.fail{color:var(--danger);background:color-mix(in srgb, var(--danger) 12%, transparent)}.test-table{border-collapse:collapse;text-align:center;width:100%;font-size:13px}.test-table th{background:var(--panel-bg);border-bottom:1px solid var(--panel-border);padding:5px 8px;font-weight:600;position:sticky;top:0}.test-table .group-row th{text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);border-bottom:none;font-size:11px;font-weight:600;top:0}.test-table thead tr:nth-child(2) th{top:24px}.test-table td{border-bottom:1px solid color-mix(in srgb, var(--panel-border) 50%, transparent);padding:3px 6px}.test-table .output-start{border-left:2px solid var(--panel-border)}.test-table .row-number{color:var(--color-text-muted);width:28px;font-size:11.5px}.test-table tr.pass td{background:color-mix(in srgb, var(--wire-high) 7%, transparent)}.test-table tr.fail td{background:color-mix(in srgb, var(--danger) 9%, transparent)}.bit-toggle{width:30px;padding:2px 0;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-weight:600}.bit-toggle.on{color:var(--wire-high);border-color:var(--wire-high)}.test-table input.expected{width:72px;font:inherit;text-align:center;color:var(--color-text);background:var(--button-bg);border:1px solid var(--panel-border);border-radius:5px;padding:3px 4px;font-family:ui-monospace,Cascadia Code,Consolas,monospace}.test-table input.expected.mismatch{border-color:var(--danger);color:var(--danger)}.test-table td.actual{text-align:left;white-space:nowrap}.chip{border-radius:10px;margin:1px 4px 1px 0;padding:1px 7px;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:12px;font-weight:600;display:inline-block}.chip.good{color:var(--wire-high);background:color-mix(in srgb, var(--wire-high) 14%, transparent)}.chip.bad{color:var(--danger);background:color-mix(in srgb, var(--danger) 14%, transparent)}.mismatch-text{color:var(--danger);white-space:normal;font-size:12px}.icon-button.small{color:var(--color-text-muted);font-size:16px}.problem-lines{color:var(--danger);margin:10px 0 0;padding-left:18px;font-size:12.5px}.canvas-area{flex-direction:column;display:flex}.canvas-host{flex:1;min-height:0;position:relative}.circuit-tabs{background:var(--panel-bg);border-bottom:1px solid var(--panel-border);gap:2px;padding:4px 6px 0;display:flex;overflow-x:auto}.circuit-tab{color:var(--color-text-muted);white-space:nowrap;background:0 0;border:1px solid #0000;border-bottom:none;border-radius:6px 6px 0 0;flex:none;padding:4px 12px;font-size:12px}.circuit-tab:hover{background:var(--button-hover);color:var(--color-text)}.circuit-tab.active{border-color:var(--panel-border);background:var(--canvas-bg);color:var(--color-text);margin-bottom:-1px}.circuit-tab.block:before{content:"";border:1.5px solid;border-radius:1.5px;width:7px;height:7px;margin-right:6px;display:inline-block}.circuit-tab.add{color:var(--accent)}.block-icon{fill:none;stroke:var(--component-stroke);stroke-width:1.5px}.tile-name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.block-preview{border:1px solid var(--panel-border);background:var(--canvas-bg);border-radius:6px;width:100%;max-height:220px;margin:4px 0 10px;display:block}.block-preview rect{fill:var(--component-fill);stroke:var(--component-stroke);stroke-width:1.5px}.block-preview circle{fill:var(--component-stroke)}.block-preview text{fill:var(--component-text);font-size:6.5px;font-family:var(--font-sans)}.block-preview text.title{font-size:8.5px;font-weight:700}.chain-table td:first-child{white-space:nowrap;padding-right:8px}.field.checkbox{flex-direction:row;align-items:center;gap:8px}.block-banner{border:1px solid var(--accent);background:var(--panel-bg);max-width:calc(100% - 24px);color:var(--color-text);border-radius:8px;align-items:center;gap:12px;padding:6px 8px 6px 14px;font-size:12.5px;display:flex;position:absolute;top:8px;left:50%;transform:translate(-50%);box-shadow:0 4px 14px #00000026}.block-banner-hint{color:var(--color-text-muted)}.wide-button{width:100%;margin-bottom:8px}.block-banner button{white-space:nowrap}.bit-toggle.pulse{color:var(--accent);border-color:var(--accent)}.rom-contents{resize:vertical;width:100%;font-size:12px}.toolbar-end{align-items:center;gap:10px;display:flex}.toolbar-end>button.active{border-color:var(--accent);color:var(--accent)}.waveform-header{align-items:center;gap:12px;padding:4px 8px 4px 12px;font-size:12px;display:flex}.waveform-title{font-weight:600}.waveform-actions{gap:6px;margin-left:auto;display:flex}.waveform-empty{padding:0 12px}.waveform-name{text-overflow:ellipsis;white-space:nowrap;align-items:center;padding:0 8px;font-size:12px;font-weight:600;display:flex;overflow:hidden}.waveform svg{display:block}.wave path{fill:none;stroke:var(--wire-high);stroke-width:1.6px}.wave.clock path{stroke:var(--accent)}.wave .wave-unknown{stroke:var(--wire-unknown);stroke-width:2px}.wave.bus path{fill:var(--component-fill);stroke:var(--wire-bus);stroke-width:1.2px}.wave.bus .wave-unknown-band path{stroke:var(--wire-unknown)}.wave text{fill:var(--component-text);font-size:11px;font-family:var(--font-sans)}.cycle-line{stroke:var(--canvas-grid);stroke-dasharray:2 3}.symbol-icon text.small{font-size:7px}.clock-bar{border:1px solid var(--panel-border);background:var(--button-bg);border-radius:6px;align-items:center;height:30px;font-size:13px;display:flex;overflow:hidden}.clock-bar button,.clock-bar select,.clock-bar input{height:100%;color:var(--color-text);font:inherit;background:0 0;border:none;border-radius:0}.clock-bar button{align-items:center;gap:6px;padding:0 11px;display:flex}.clock-bar button:hover:not(:disabled),.clock-bar select:hover:not(:disabled){background:var(--button-hover)}.clock-bar.disabled{opacity:.55}.clock-bar :disabled{cursor:default}.clock-run{min-width:78px}.clock-run svg{fill:currentColor;width:11px;height:11px}.clock-bar .clock-run{background:var(--wire-high);color:var(--canvas-bg);font-weight:600}.clock-bar .clock-run.running{background:var(--danger)}.clock-bar .clock-run:hover:not(:disabled){background:var(--wire-high);filter:brightness(1.1)}.clock-bar .clock-run.running:hover:not(:disabled){background:var(--danger)}.clock-divider{background:var(--panel-border);align-self:stretch;width:1px}.clock-bar select{cursor:pointer;padding:0 6px 0 10px}.run-for{height:100%;color:var(--color-text-muted);align-items:center;gap:6px;padding-left:10px;display:flex}.run-for input{font-variant-numeric:tabular-nums;appearance:textfield;width:52px;padding:0 6px}.run-for input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.run-for input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.run-for input::placeholder{color:var(--color-text-muted)}.run-for input:focus-visible{background:var(--button-hover);outline:none}.clock-count{min-width:112px;color:var(--color-text-muted);font-variant-numeric:tabular-nums;white-space:nowrap;padding:0 12px}.toolbar-end>button{height:30px;font-size:13px}.waveform{border-top:1px solid var(--panel-border);background:var(--panel-bg);flex-direction:column;flex:none;display:flex;position:relative}.waveform-resize{cursor:ns-resize;z-index:1;height:8px;position:absolute;top:-4px;left:0;right:0}.waveform-resize:hover{background:var(--accent);opacity:.35}.waveform-body{background:var(--canvas-bg);flex:1;align-items:flex-start;min-height:0;display:flex;overflow:auto}.waveform-names{z-index:1;background:var(--canvas-bg);border-right:1px solid var(--panel-border);flex:none;position:sticky;left:0}.waveform-waves{flex:none}.wave line{stroke-width:1.8px}.wave .high line{stroke:var(--wire-high)}.wave .low line{stroke:var(--wire-low)}.wave .unknown line{stroke:var(--wire-unknown)}.row-line{stroke:var(--panel-border);stroke-width:1px}.waveform-name+.waveform-name{border-top:1px solid var(--panel-border);box-sizing:border-box}.analysis-names{grid-template-columns:1fr 1fr;gap:12px;display:grid}.analysis{grid-template-columns:max-content minmax(0,1fr);align-items:start;gap:16px;display:grid}.analysis-table{max-height:420px;padding-right:4px;overflow:hidden auto}.test-table tr.highlight td{background:var(--selection-fill)}.analysis-result{min-width:0}.analysis-tabs{flex-wrap:wrap;gap:4px;margin-bottom:8px;display:flex}.analysis-tabs button.active{border-color:var(--accent);color:var(--accent)}.analysis-expression{margin:2px 0 4px;font-size:18px;line-height:1.6}.analysis-output{font-weight:600}.expression .term{cursor:default;border-radius:4px;padding:1px 4px}.expression .term.hovered{outline:1px solid var(--color-text-muted)}.expression .term>span{margin:0 1px;display:inline-block}.expression .negated{text-decoration:overline}.expression .plus{color:var(--color-text-muted)}.group-1{background:var(--group-1)}.group-2{background:var(--group-2)}.group-3{background:var(--group-3)}.group-4{background:var(--group-4)}.group-5{background:var(--group-5)}.group-6{background:var(--group-6)}.kmap{border-collapse:collapse;font-variant-numeric:tabular-nums;margin:10px 0 6px}.kmap th{color:var(--color-text-muted);padding:4px 8px;font-size:12px;font-weight:600}.kmap-corner{font-style:italic}.kmap td{border:1px solid var(--panel-border);text-align:center;background:var(--canvas-bg);width:46px;height:40px;position:relative}.kmap td.one .kmap-value{color:var(--color-text);font-weight:700}.kmap-value{color:var(--color-text-muted)}.kmap-groups{justify-content:center;gap:2px;display:flex;position:absolute;bottom:3px;left:0;right:0}.kmap-groups .dot{border:1px solid var(--color-text-muted);border-radius:50%;width:7px;height:7px}.palette-search{border:1px solid var(--panel-border);background:var(--button-bg);width:100%;color:var(--color-text);font:inherit;border-radius:6px;margin:0 0 8px;padding:6px 10px;font-size:13px}.palette-search:focus-visible{outline:2px solid var(--accent);outline-offset:-1px}.menu-pill{border:1px solid var(--panel-border);background:var(--button-bg);border-radius:999px;justify-self:center;align-items:center;gap:2px;padding:3px;display:flex}.menu-pill .menu-button{border-radius:999px;padding:5px 14px}.menu-pill-divider{background:var(--panel-border);width:1px;height:18px;margin:0 4px}.search-button{height:28px;color:var(--color-text-muted);background:0 0;border:none;border-radius:999px;align-items:center;gap:8px;min-width:170px;padding:0 6px 0 12px;font-size:13px;display:flex}.search-button svg{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;width:14px;height:14px}.search-button span{text-align:left;flex:1}kbd{border:1px solid var(--panel-border);background:var(--panel-bg);font:11px var(--font-sans);color:var(--color-text-muted);white-space:nowrap;border-radius:4px;padding:1px 5px}.command-palette{border:1px solid var(--panel-border);background:var(--panel-bg);width:min(560px,100vw - 32px);color:var(--color-text);border-radius:10px;margin:12vh auto auto;padding:0;box-shadow:0 16px 48px #00000059}.command-palette::backdrop{background:#00000059}.command-palette input{border:none;border-bottom:1px solid var(--panel-border);width:100%;color:var(--color-text);font:inherit;background:0 0;outline:none;padding:14px 16px;font-size:15px}.command-palette ul{max-height:50vh;margin:0;padding:6px;list-style:none;overflow-y:auto}.command-palette li{cursor:pointer;border-radius:6px;align-items:center;gap:10px;padding:7px 10px;font-size:13.5px;display:flex}.command-palette li.active{background:var(--button-hover)}.command-label{flex:1}.command-group{text-align:right;min-width:90px;color:var(--color-text-muted);font-size:12px}.command-empty{color:var(--color-text-muted);cursor:default}.brand{color:var(--color-text);justify-self:start;align-items:center;gap:8px;text-decoration:none;display:flex}.brand-logo{flex:none;width:24px;height:24px}.brand h1{letter-spacing:-.01em}a.button-link{border:1px solid var(--panel-border);background:var(--button-bg);color:var(--color-text);border-radius:6px;align-items:center;padding:4px 10px;text-decoration:none;display:inline-flex}a.button-link.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}a.button-link.disabled{opacity:.5;pointer-events:none}.kmap td.active.group-1{background:var(--group-1)}.kmap td.active.group-2{background:var(--group-2)}.kmap td.active.group-3{background:var(--group-3)}.kmap td.active.group-4{background:var(--group-4)}.kmap td.active.group-5{background:var(--group-5)}.kmap td.active.group-6{background:var(--group-6)}.toolbar-end{justify-self:end}.account-signin{border-color:var(--accent);height:30px;color:var(--accent);border-radius:999px;padding:0 14px;font-size:13px;font-weight:600}.account{align-items:center;gap:10px;display:flex;position:relative}.account-status{color:var(--color-text-muted);white-space:nowrap;font-size:12px}.account-status.saved:before{content:"";background:var(--wire-high);border-radius:50%;width:7px;height:7px;margin-right:6px;display:inline-block}.account-status.error{color:var(--danger)}.account-avatar{background:var(--accent);width:32px;height:32px;color:var(--accent-text);border-radius:50%;place-items:center;padding:0;font-weight:700;display:grid;overflow:hidden}.account-avatar img{object-fit:cover;width:100%;height:100%}.account-menu{z-index:50;border:1px solid var(--panel-border);background:var(--panel-bg);border-radius:10px;min-width:220px;padding:6px;display:grid;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 12px 32px #00000040}.account-who{border-bottom:1px solid var(--panel-border);margin-bottom:4px;padding:6px 10px 10px;font-size:13px;display:grid}.account-who span{color:var(--color-text-muted);font-size:12px}.account-menu button{text-align:left;background:0 0;border:none;border-radius:6px;padding:7px 10px;font-size:13px}.account-menu button:hover{background:var(--button-hover)}.circuit-list{max-height:60vh;margin:0;padding:0;list-style:none;overflow-y:auto}.circuit-list li{border-bottom:1px solid var(--panel-border);grid-template-columns:1fr auto auto;align-items:center;gap:12px;padding:8px 4px;display:grid}.circuit-list li.current{background:var(--selection-fill)}.circuit-name{align-items:center;padding:4px 6px;font-weight:600;display:flex}.circuit-badge{background:var(--accent);color:var(--accent-text);border-radius:999px;margin-left:8px;padding:1px 7px;font-size:11px;font-weight:600}.circuit-when{color:var(--color-text-muted);white-space:nowrap;font-size:12px}.circuit-actions{gap:6px;display:flex}.circuit-list input{font:inherit;padding:4px 6px}.menu-pill .menu-button:hover,.menu-pill .menu-button.open{background:var(--brand-soft);color:var(--brand-strong)}.clock-bar button.clock-step:not(:disabled){color:var(--accent);font-weight:600}.toolbar-end .toolbar-group{border:1px solid var(--panel-border);background:var(--button-bg);border-radius:6px;gap:0;height:30px;overflow:hidden}.toolbar-end .toolbar-group button{background:0 0;border:none;border-radius:0;height:100%;padding:0 10px}.toolbar-end .toolbar-group button:hover{background:var(--button-hover)}.toolbar-end .toolbar-group .zoom-level{border-left:1px solid var(--panel-border);border-right:1px solid var(--panel-border);align-self:stretch;place-items:center;display:grid}@media (width<=1500px){.search-button kbd{display:none}.search-button{min-width:0}.run-for span{display:none}}@media (width<=1300px){.search-button span,.toolbar-end .toolbar-group .zoom-level,.clock-count{display:none}.menu-pill .menu-button{padding:5px 10px}}.timing-toggle{margin-left:10px}.test-timing{border:1px solid var(--panel-border);background:var(--canvas-bg);border-radius:8px;max-width:100%;margin:0 0 12px;padding:8px 0;overflow-x:auto}.test-timing svg{display:block}.tt-failed{fill:color-mix(in srgb, var(--danger) 14%, transparent)}.tt-row-number{fill:var(--color-text-muted);font:10px var(--font-sans);text-anchor:middle}.tt-name{fill:var(--color-text);font:600 12px var(--font-sans)}.tt-name.output{fill:var(--accent)}.tt-line{fill:none;stroke-width:2px}.tt-line.high{stroke:var(--wire-high)}.tt-line.low{stroke:var(--wire-low)}.tt-line.clock{stroke:var(--accent)}.tt-line.wrong{stroke:var(--danger);stroke-width:3px}.tt-band path{fill:var(--component-fill);stroke:var(--wire-bus);stroke-width:1.2px}.tt-band text{fill:var(--component-text);font:11px var(--font-sans);text-anchor:middle}.tt-band.wrong path{stroke:var(--danger);stroke-width:2px}.tt-band.wrong text{fill:var(--danger);font-weight:700}@font-face{font-family:Caveat;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/caveat-latin-500-normal-B9SDL8cy.woff2)format("woff2"),url(/assets/caveat-latin-500-normal-Do9veZfZ.woff)format("woff")}.site{--paper:#f4f1e8;--paper-light:#faf8f2;--paper-deep:#e9e4d6;--ink:#1d1c1a;--ink-soft:#5d5950;--ink-faint:#8a8476;--grid-line:#1d1c1a0e;--rule-line:#1d1c1a2e;--pen:#b4421b;--warn:#a8660b;--tape:#e2d3a09e;--font-hand:"Caveat", "Segoe Print", "Bradley Hand", cursive;--field-bg:#fff;--font-serif:"Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;--font-mono:ui-monospace, "Cascadia Mono", "Cascadia Code", "SF Mono", Consolas, monospace;--color-text:var(--ink);--color-text-muted:var(--ink-soft);--panel-bg:var(--paper-light);--panel-border:#cbc4b1;--button-bg:var(--paper-light);--button-hover:var(--paper-deep);--brand:var(--ink);--brand-strong:#000;--brand-ink:var(--paper-light);--brand-signal:#3fbf6f;--accent:var(--pen);--danger:#b42318;--component-fill:var(--paper-light);--component-stroke:var(--ink);--component-text:var(--ink);--wire-high:#1a8a45;--wire-low:#2453c9;--wire-floating:var(--ink-faint);--wire-unknown:#c62f1f;scroll-behavior:smooth;background-color:var(--paper);background-image:linear-gradient(var(--grid-line) 1px, transparent 1px), linear-gradient(90deg, var(--grid-line) 1px, transparent 1px);height:100%;color:var(--ink);background-size:22px 22px;background-attachment:local;font-size:17px;line-height:1.55;overflow:hidden auto}.site .mono{font-family:var(--font-mono)}.site a{color:inherit}.site h1,.site h2,.site h3{color:var(--ink);margin:0}.site h1,.site h2{font-family:var(--font-serif);letter-spacing:-.012em;font-weight:600}.ink-button{border:1.5px solid var(--ink);background:var(--ink);height:38px;font:600 15px var(--font-sans);white-space:nowrap;cursor:pointer;border-radius:3px;align-items:center;gap:10px;padding:0 16px;text-decoration:none;display:inline-flex;color:var(--paper-light)!important}.ink-button:hover{background:var(--brand-strong)}.ink-button.large{height:50px;padding:0 22px;font-size:17px}.ink-button.locked{cursor:default;-webkit-user-select:none;user-select:none;background:0 0;border-style:dashed;color:var(--ink-soft)!important}.text-button{color:var(--ink);font:600 15px var(--font-sans);cursor:pointer;background:0 0;border:none;padding:0}.text-button:hover{text-underline-offset:4px;text-decoration:underline}.site-nav{z-index:10;border-bottom:1.5px solid var(--ink);background:var(--paper);align-items:center;gap:36px;height:64px;padding:0 max(24px,50% - 550px);display:flex;position:sticky;top:0}.site-brand{font:700 18px var(--font-sans);letter-spacing:-.01em;align-items:center;gap:10px;text-decoration:none;display:flex}.site-logo{width:26px;height:26px}.site-links{gap:26px;margin-right:auto;font-size:15px;display:flex}.site-links a{color:var(--ink-soft);text-decoration:none}.site-links a:hover{color:var(--ink);text-underline-offset:4px;text-decoration:underline}.site main{max-width:1100px;margin:0 auto;padding:0 24px}.hero{grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:center;gap:56px;padding:72px 0 88px;display:grid}.hero h1{font-size:clamp(38px,4.6vw,58px);line-height:1.08}.hero-lede{max-width:30em;color:var(--ink-soft);margin:22px 0 30px}.hero-actions{align-items:center;gap:20px;display:flex}.hero-note{color:var(--ink-soft);margin:14px 0 0;font-size:15px}.hero.open .hero-note{color:var(--wire-high);font-weight:600}.hero.open .ink-button{animation:.5s ease-out unlock}@keyframes unlock{0%{opacity:.4;transform:translateY(4px)}to{opacity:1;transform:none}}.padlock{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;flex:none;width:20px;height:20px}.padlock .shackle{transform-origin:17px 11px;transition:transform .4s ease-out}.fig{border:1.5px solid var(--ink);background:var(--paper-light);border-radius:2px;margin:0;padding:22px 22px 16px}.fig svg{width:100%;height:auto;display:block}.fig figcaption{border-top:1px solid var(--rule-line);color:var(--ink-soft);margin-top:14px;padding-top:10px;font-size:14.5px}.fig-no{color:var(--pen);font:italic 600 14.5px var(--font-serif);margin-right:6px}.lp-wire{fill:none;stroke-width:3px;stroke-linejoin:round;transition:stroke .2s}.lp-high{stroke:var(--wire-high)}.lp-low{stroke:var(--wire-low)}.lp-gate{fill:var(--component-fill);stroke:var(--ink);stroke-width:2.2px}.lp-line{fill:none}.lp-gate-name,.demo-pin{fill:var(--ink-soft);font:12px var(--font-mono);text-anchor:middle}.lp-label{fill:var(--ink);font:600 20px var(--font-serif)}.lp-switch{cursor:pointer;outline:none}.lp-switch:hover .bit{stroke-width:3px}.lp-switch:focus-visible .bit{stroke:var(--pen);stroke-width:3px}.bit{fill:var(--paper-light);stroke:var(--ink);stroke-width:2px;transition:fill .15s}.bit.on{fill:var(--wire-high);stroke:var(--wire-high)}.bit-digit{fill:var(--ink);font-family:var(--font-mono);text-anchor:middle;pointer-events:none;font-weight:700}.bit.on+.bit-digit,.bit.unknown+.bit-digit{fill:var(--paper-light)}.bit.unknown{fill:var(--wire-unknown);stroke:var(--wire-unknown)}.lp-unknown{stroke:var(--wire-unknown)}.open-end{fill:var(--wire-unknown)}.junction{fill:var(--ink)}.lp-flow{fill:none;stroke:var(--paper-light);stroke-width:1.4px;stroke-linecap:round;stroke-dasharray:2 26;opacity:.9;pointer-events:none;animation:1.1s linear infinite flow}@keyframes flow{to{stroke-dashoffset:-28px}}.lp-draw{stroke-dasharray:200;animation:.6s ease-out draw-in}@keyframes draw-in{0%{stroke-dashoffset:200px}to{stroke-dashoffset:0}}.defs{width:0;height:0;position:absolute}.pen-text{fill:var(--pen);font:500 27px var(--font-hand)}.pen-line{fill:none;stroke:var(--pen);stroke-width:2px;stroke-linecap:round}.pen-head{fill:none;stroke:var(--pen);stroke-width:1.4px;stroke-linecap:round;stroke-linejoin:round}.pen-circle{stroke-width:2.2px;stroke-dasharray:400;animation:.7s ease-out pen-draw}@keyframes pen-draw{0%{stroke-dashoffset:400px}to{stroke-dashoffset:0}}.pen-underline{-webkit-text-decoration:underline wavy var(--pen);text-decoration:underline wavy var(--pen);text-underline-offset:10px;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;text-decoration-thickness:2px}.pen-aside{color:var(--pen);font:500 21px var(--font-hand);align-self:center;margin-left:8px}.sheet{padding-bottom:96px}.sheet-head{border-top:1.5px solid var(--ink);grid-template-columns:56px 1fr;align-items:baseline;column-gap:8px;margin-bottom:30px;padding-top:18px;scroll-margin-top:80px;display:grid}.sheet-no{color:var(--pen);font-size:15px}.sheet-head h2{font-size:clamp(30px,3.4vw,40px)}.sheet-head p{color:var(--ink-soft);grid-column:2;margin:6px 0 0}.demos{grid-template-columns:1fr 1fr;align-items:start;gap:24px;display:grid}.demo-block{fill:var(--ink);font:600 18px var(--font-serif);text-anchor:middle}.demo-readout{margin:10px 0 0;font-size:18px}.counter-top{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.counter-leds{gap:14px;display:flex}.counter-led{color:var(--ink-soft);justify-items:center;gap:4px;font-size:12px;display:grid}.big-led{border:2px solid var(--ink);background:var(--paper-light);border-radius:3px;width:28px;height:28px;transition:background .15s}.big-led.on{border-color:var(--wire-high);background:var(--wire-high)}.counter-value{text-align:right;min-width:70px;font-size:44px;font-weight:700}.demo-wave{fill:none;stroke:var(--wire-high);stroke-width:2px}.demo-wave.clock{stroke:var(--ink)}.wave-name{text-anchor:start}.demo-buttons{gap:8px;margin-top:10px;display:flex}.demo-buttons button{border:1.5px solid var(--ink);background:var(--paper-light);height:32px;color:var(--ink);font:600 14px var(--font-sans);border-radius:3px;padding:0 14px}.demo-buttons button:hover:not(:disabled){background:var(--paper-deep)}.demo-buttons button.running{border-color:var(--pen);color:var(--pen)}.margin-layout{grid-template-columns:minmax(0,640px) minmax(0,1fr);align-items:start;gap:40px;display:grid}.margin-notes{counter-reset:note;color:var(--pen);font:500 25px/1.25 var(--font-hand);margin:8px 0 0;padding:0;list-style:none}.margin-notes li{counter-increment:note;margin-bottom:22px;padding-left:34px;position:relative}.margin-notes li:before{content:counter(note);border:1.5px solid var(--pen);border-radius:50%;place-items:center;width:24px;height:24px;font-size:18px;line-height:1;display:grid;position:absolute;top:1px;left:0}.problems{border:1px solid var(--rule-line);border-left:3px solid var(--warn);background:var(--paper);margin-top:12px;padding:9px 12px;font-size:13.5px}.problems.ok{border-left-color:var(--wire-high);color:var(--wire-high);font-weight:600}.problem{color:var(--ink);text-align:left;cursor:pointer;background:0 0;border:none;align-items:baseline;gap:8px;padding:0;font-size:13.5px;display:flex}.problem:hover .mono{text-underline-offset:3px;text-decoration:underline}.problem-mark{color:var(--warn);font-size:11px}.spec{border-bottom:1px solid var(--rule-line);margin:0;padding:0;list-style:none}.spec li{border-top:1px solid var(--rule-line);grid-template-columns:56px minmax(0,260px) minmax(0,1fr);align-items:baseline;column-gap:8px;padding:18px 0;display:grid}.spec-no{color:var(--ink-faint);font-size:14px}.spec h3{font:600 18px var(--font-sans)}.spec p{color:var(--ink-soft);margin:0}.plate-tabs{z-index:2;gap:22px;margin-bottom:26px;display:flex;position:relative}.plate-tabs button{color:var(--ink-soft);font:600 15px var(--font-sans);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;padding:0 0 4px}.plate-tabs button:hover{color:var(--ink)}.plate-tabs button.active{border-bottom-color:var(--ink);color:var(--ink)}.plate-tabs .mono{color:var(--pen)}.plate-frame{aspect-ratio:16/9;border:1px solid var(--ink);background:var(--ink);position:relative;transform:rotate(-.4deg)}.plate-frame:before,.plate-frame:after{content:"";z-index:1;background:var(--tape);width:96px;height:26px;position:absolute;top:-13px}.plate-frame:before{left:7%;transform:rotate(-5deg)}.plate-frame:after{right:7%;transform:rotate(4deg)}.plate-frame img{object-fit:contain;width:100%;height:100%;display:block}.plate-frame img[hidden]{display:none}.site-footer{border-top:1.5px solid var(--ink);max-width:1100px;color:var(--ink-soft);gap:28px;margin:0 auto;padding:20px 24px 40px;font-size:14px;display:flex}.site-footer span:last-child{margin-left:auto}.loading{height:100%;color:var(--color-text-muted);place-items:center;display:grid}.site-auth{align-items:center;gap:20px;transition:opacity .2s;display:flex}.site-auth.pending{opacity:0;pointer-events:none}.site-account{position:relative}.site-user{border:1.5px solid var(--ink);background:var(--paper-light);height:38px;color:var(--ink);font:600 14px var(--font-sans);cursor:pointer;border-radius:3px;align-items:center;gap:8px;padding:3px 12px 3px 3px;display:flex}.site-user img,.site-user-initial{object-fit:cover;border-radius:2px;width:28px;height:28px}.site-user-initial{background:var(--ink);color:var(--paper-light);place-items:center;display:grid}.site-account-menu{border:1.5px solid var(--ink);background:var(--paper-light);border-radius:3px;min-width:220px;padding:6px;display:grid;position:absolute;top:calc(100% + 8px);right:0}.site-account-email{border-bottom:1px solid var(--rule-line);color:var(--ink-soft);margin-bottom:4px;padding:6px 10px 10px;font-size:12.5px}.site-account-menu a,.site-account-menu button{color:var(--ink);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:2px;padding:8px 10px;font-size:14px;text-decoration:none}.site-account-menu a:hover,.site-account-menu button:hover{background:var(--paper-deep)}.auth-dialog{border:1.5px solid var(--ink);background:var(--paper-light);width:min(400px,100vw - 32px);color:var(--ink);border-radius:3px;padding:30px 30px 22px;position:relative}.auth-dialog::backdrop{background:#1d1c1a73}.auth-close{width:32px;height:32px;color:var(--ink-soft);background:0 0;border:none;border-radius:2px;padding:0;font-size:20px;position:absolute;top:12px;right:12px}.auth-close:hover{background:var(--paper-deep)}.auth-dialog h2{font:600 27px var(--font-serif);margin:0}.auth-sub{color:var(--ink-soft);margin:6px 0 22px;font-size:14.5px}.auth-google{border:1.5px solid var(--ink);background:var(--paper-light);width:100%;height:44px;color:var(--ink);border-radius:3px;justify-content:center;align-items:center;gap:10px;font-size:15px;font-weight:600;display:flex}.auth-google:hover:not(:disabled){background:var(--paper-deep)}.google-mark{width:18px;height:18px}.auth-or{color:var(--ink-soft);align-items:center;gap:12px;margin:18px 0;font-size:12.5px;display:flex}.auth-or:before,.auth-or:after{content:"";background:var(--rule-line);flex:1;height:1px}.auth-form{gap:12px;display:grid}.auth-form label{gap:5px;font-size:13px;font-weight:600;display:grid}.auth-form input{border:1px solid var(--panel-border);background:var(--field-bg);width:100%;height:42px;color:var(--ink);font:inherit;border-radius:3px;padding:0 12px;font-size:15px;font-weight:400}.auth-form input:focus{outline:2px solid var(--ink);outline-offset:-1px}.auth-password{display:block;position:relative}.auth-password button{height:30px;color:var(--ink-soft);background:0 0;border:none;border-radius:2px;padding:0 10px;font-size:12.5px;position:absolute;top:6px;right:6px}.auth-link{color:var(--ink);font:inherit;text-underline-offset:3px;cursor:pointer;background:0 0;border:none;justify-self:start;padding:0;font-size:13.5px;font-weight:600;text-decoration:underline}.auth-error{color:var(--danger);margin:0;font-size:13.5px}.auth-notice{color:var(--wire-high);margin:0;font-size:13.5px}.auth-submit{border:1.5px solid var(--ink);background:var(--ink);height:46px;color:var(--paper-light);border-radius:3px;margin-top:6px;font-size:15.5px;font-weight:700}.auth-submit:hover:not(:disabled){background:var(--brand-strong)}.auth-switch{text-align:center;color:var(--ink-soft);margin:18px 0 0;font-size:14px}@media (width<=900px){.margin-layout{grid-template-columns:1fr}.hero{grid-template-columns:1fr;gap:36px;padding:44px 0 64px}.demos{grid-template-columns:1fr}.spec li{grid-template-columns:40px 1fr}.spec p{grid-column:2;margin-top:4px}.sheet-head{grid-template-columns:40px 1fr}.site-links,.site-user-name{display:none}.site-nav{justify-content:space-between}}@media (width<=520px){.site-footer{flex-wrap:wrap;gap:10px 20px}.site-footer span:last-child{margin-left:0}.fig{padding:14px 14px 12px}}@media (prefers-reduced-motion:reduce){.site{scroll-behavior:auto}.hero.open .ink-button,.lp-draw,.pen-circle{animation:none}.lp-flow{display:none}}
