@font-face{font-family:Inter;src:url(./inter-latin-8kRkwJBP.woff2) format("woff2");font-weight:400 600;font-display:swap}@font-face{font-family:Lora;src:url(./lora-latin-600-CPIsLsBw.woff2) format("woff2");font-weight:600;font-display:swap}@font-face{font-family:Geist Mono;src:url(./geist-mono-latin-pyAoGB9p.woff2) format("woff2");font-weight:400 500;font-display:swap}:root{color-scheme:light;--bg: #fafaf9;--surface: #ffffff;--surface-2: #f5f5f4;--border: #e7e5e4;--border-strong: #d6d3d1;--text: #1c1917;--text-2: #44403c;--muted: #57534e;--faint: #78716c;--brand: #3d6652;--brand-hover: #315243;--brand-text: #315243;--cow: url(./eink-qemu-cow-light-CJktuzCi.svg);--brand-tint: #f0f5f3;--brand-tint-border: #d6e5de;--meter: #4a7a62;--invert-bg: #1c1917;--invert-fg: #fafaf9;--stage: #f5f5f4;--dots: #d6d3d1;--console-bg: #f5f5f4;--console-fg: #292524;--console-border: #e7e5e4;--status-bg: #3d6652;--status-fg: #ffffff;--status-dim: #d6e5de;--switch-off: #d6d3d1;--knob-off: #ffffff;--danger: #b42318;--bezel: #f5f4ef;--screen-filter: none;--device-shadow: 0 0 0 1px rgba(0,0,0,.06), 0 20px 40px -16px rgba(0,0,0,.15), 0 50px 80px -30px rgba(0,0,0,.18);--sans: "Inter", ui-sans-serif, system-ui, sans-serif;--serif: "Lora", ui-serif, Georgia, serif;--mono: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg: #0c0a09;--surface: #1c1917;--surface-2: #292524;--border: #292524;--border-strong: #44403c;--text: #f5f5f4;--text-2: #d6d3d1;--muted: #a8a29e;--faint: #a8a29e;--brand: #4a7a62;--brand-hover: #3d6652;--brand-text: #8fb9a6;--cow: url(./eink-qemu-cow-dark-CTTQZtee.svg);--brand-tint: #1a2c24;--brand-tint-border: #253e33;--meter: #69917d;--invert-bg: #f5f5f4;--invert-fg: #1c1917;--stage: #12100e;--dots: #2a2623;--console-bg: #0c0a09;--console-fg: #e7e5e4;--console-border: #292524;--status-bg: #253e33;--status-fg: #f0f5f3;--status-dim: #b3cfc2;--switch-off: #44403c;--knob-off: #a8a29e;--danger: #f97066;--bezel: #d9d6ce;--screen-filter: brightness(.92);--device-shadow: 0 0 0 1px rgba(255,255,255,.04), 0 24px 50px -16px rgba(0,0,0,.7), 0 60px 90px -30px rgba(0,0,0,.6)}}:root[data-theme=dark]{color-scheme:dark;--bg: #0c0a09;--surface: #1c1917;--surface-2: #292524;--border: #292524;--border-strong: #44403c;--text: #f5f5f4;--text-2: #d6d3d1;--muted: #a8a29e;--faint: #a8a29e;--brand: #4a7a62;--brand-hover: #3d6652;--brand-text: #8fb9a6;--cow: url(./eink-qemu-cow-dark-CTTQZtee.svg);--brand-tint: #1a2c24;--brand-tint-border: #253e33;--meter: #69917d;--invert-bg: #f5f5f4;--invert-fg: #1c1917;--stage: #12100e;--dots: #2a2623;--console-bg: #0c0a09;--console-fg: #e7e5e4;--console-border: #292524;--status-bg: #253e33;--status-fg: #f0f5f3;--status-dim: #b3cfc2;--switch-off: #44403c;--knob-off: #a8a29e;--danger: #f97066;--bezel: #d9d6ce;--screen-filter: brightness(.92);--device-shadow: 0 0 0 1px rgba(255,255,255,.04), 0 24px 50px -16px rgba(0,0,0,.7), 0 60px 90px -30px rgba(0,0,0,.6)}*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 var(--sans);font-feature-settings:"cv02","cv03","cv04","cv11";-webkit-font-smoothing:antialiased}h1,h2,p{margin:0}a{color:var(--brand-text)}code{font-family:var(--mono);font-size:.92em}.sprite{position:absolute;width:0;height:0;overflow:hidden}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.icon{width:15px;height:15px;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.icon.small{width:11px;height:11px;stroke:none}.icon.icon-fill{width:16px;height:16px;fill:currentColor;stroke:none}:focus-visible{outline:2px solid var(--brand-text);outline-offset:2px}button,.button{font:inherit;font-weight:500;color:var(--text);display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:7px 12px;border:1px solid var(--border-strong);border-radius:8px;background:var(--surface);cursor:pointer;touch-action:manipulation;white-space:nowrap}button:hover:enabled,.button:hover{background:var(--surface-2)}button:disabled{cursor:default;opacity:.45}button.primary{background:var(--brand);border-color:transparent;color:#fff;font-weight:600}button.primary:hover:enabled{background:var(--brand-hover)}button.invert{background:var(--invert-bg);border-color:transparent;color:var(--invert-fg);font-weight:600}button.invert:hover:enabled{background:var(--invert-bg);opacity:.88}button.tint{background:var(--brand-tint);border-color:var(--brand-tint-border);color:var(--brand-text)}button.tint:hover:enabled{background:var(--brand-tint);border-color:var(--meter)}.icon-button{width:34px;height:34px;padding:0;display:inline-grid;place-items:center;flex:none;border:1px solid var(--border);border-radius:8px;background:transparent;color:var(--muted);cursor:pointer}a.icon-button{text-decoration:none}a.icon-button:hover{background:var(--surface-2);color:var(--text)}.divider{width:1px;align-self:stretch;background:var(--border)}.app{display:grid;height:100vh;height:100dvh;--sd-min: 260px;--sd-max: 300px;--output-min: 320px;grid-template-columns:minmax(var(--sd-min),var(--sd-max)) fit-content(calc(100% - var(--sd-max) - var(--output-min))) minmax(var(--output-min),1fr);grid-template-rows:auto minmax(0,1fr) auto;grid-template-areas:"top top top" "sd stage output" "status status status"}.app.live #start,.app:not(.live) #stop{display:none}.topbar{grid-area:top;display:flex;align-items:center;gap:10px 16px;padding:10px 16px;background:var(--surface);border-bottom:1px solid var(--border)}.brandbar{display:contents}.brand{font:600 19px/1 var(--serif);letter-spacing:-.01em;white-space:nowrap}.brand{display:inline-flex}.brand-button{display:inline-flex;align-items:center;gap:8px;margin:-4px -6px;padding:4px 6px;border:0;border-radius:8px;background:none;color:inherit;font:inherit;letter-spacing:inherit;cursor:default}.brand-button:hover:enabled{background:none}.about{position:relative;display:inline-flex}.about-tip{left:0;right:auto}.about-tip:before{content:"";position:absolute;left:0;right:0;top:-12px;height:12px}.about:hover .about-tip,.about:has(:focus-visible) .about-tip,.about:has(.brand-button[aria-expanded=true]) .about-tip{visibility:visible;opacity:1}.about-tip a{color:var(--brand-text)}.about-link{display:inline-flex;align-items:center;gap:6px;font-weight:500;text-decoration:none}.about-link:hover{text-decoration:underline}.brand-name span{color:var(--brand-text)}.brand .brand-mark{width:34px;height:24px;flex:none;background:var(--cow) center / contain no-repeat}#github,#theme{order:2}.controls{order:1;flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px}.spacer{flex:1}.file-chip{display:inline-flex;align-items:center;gap:8px;min-width:0;max-width:100%;padding:6px 10px;border:1px solid var(--border-strong);border-radius:8px;background:var(--surface);color:var(--text-2);cursor:pointer}.file-chip:hover{background:var(--surface-2)}.file-chip.firmware-drop{outline:2px dashed var(--meter);outline-offset:2px;background:var(--brand-tint)}.file-chip-text{display:flex;flex-direction:column;min-width:0}#flash-name{font:12px/1.4 var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#flash-name.empty{font:500 13px/1.4 var(--sans)}.brand-icon{color:var(--brand-text)}.chevron{width:12px;height:12px;color:var(--faint)}.run{display:flex;gap:8px}.option{position:relative;display:inline-flex;align-items:center;gap:2px}.info{width:26px;height:26px;padding:0;border:0;border-radius:50%;background:none;color:var(--faint)}.info:hover,.info[aria-expanded=true]{background:var(--surface-2);color:var(--text)}.info .icon{width:16px;height:16px}.tip{position:absolute;top:calc(100% + 10px);right:0;z-index:20;width:min(320px,calc(100vw - 32px));display:flex;flex-direction:column;gap:8px;padding:12px 14px;border:1px solid var(--border-strong);border-radius:10px;background:var(--surface);color:var(--text-2);box-shadow:0 12px 32px -8px #0c0a0940;font-size:12.5px;line-height:1.5;text-align:left;white-space:normal;visibility:hidden;opacity:0;transition:opacity .12s,visibility .12s}.tip strong{color:var(--text);font-size:13px}.tip b{color:var(--text);font-weight:600}.tip .fine{color:var(--faint);font-size:12px}.option:has(.info:hover) .tip,.option:has(.info:focus-visible) .tip,.info[aria-expanded=true]+.tip{visibility:visible;opacity:1}.sd{grid-area:sd;min-height:0;display:flex;flex-direction:column;background:var(--surface);border-right:1px solid var(--border)}.sd.drop{outline:2px dashed var(--meter);outline-offset:-6px;background:var(--brand-tint)}.sd-head{display:flex;flex-direction:column;gap:9px;padding:14px 16px 12px;border-bottom:1px solid var(--border)}.sd-title{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:2px 10px}.sd h2{font:600 16px/1.3 var(--serif);white-space:nowrap}#sd-info{font-size:12px;color:var(--faint)}.meter{height:4px;border-radius:4px;background:var(--surface-2);overflow:hidden}#sd-meter{display:block;height:100%;width:0;background:var(--meter);border-radius:4px;transition:width .3s}#sd-save{font-size:12px;color:var(--brand-text)}#sd-info.error,#sd-save.error,#sd-error{color:var(--danger)}.sd-tools{display:flex;gap:4px;padding:10px 12px 4px}.sd-tools .tint{flex:1;padding:6px 8px;font-size:13px}#sd-path{display:flex;flex-wrap:wrap;align-items:center;gap:2px;padding:4px 12px;min-height:32px;font-size:12.5px;color:var(--faint)}#sd-path button{padding:2px 5px;border:0;background:none;color:var(--muted);font-weight:500;border-radius:5px}#sd-path button[aria-current]{color:var(--text);font-weight:600}#sd-path button:disabled{opacity:1}#sd-path span{padding:0 1px}.sd-scroll{flex:1;min-height:120px;overflow:auto;padding:0 8px}#sd-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed}#sd-table td{padding:5px 6px;vertical-align:middle}#sd-table tr:hover td{background:var(--surface-2)}#sd-table td:first-child{border-radius:7px 0 0 7px}#sd-table td.size,#sd-table td.ops{border-radius:0 7px 7px 0}.col-size{width:64px}.col-ops{width:0}#sd-table td.size{text-align:right;font:11.5px var(--mono);color:var(--faint);white-space:nowrap}#sd-table tr{position:relative}#sd-table td.ops{position:absolute;top:0;right:0;bottom:0;display:flex;align-items:center;gap:2px;padding:0 4px;background:var(--surface-2);opacity:0;pointer-events:none}#sd-table tr:hover td.ops,#sd-table tr:focus-within td.ops{opacity:1;pointer-events:auto}.entry{display:flex;align-items:center;gap:9px;min-width:0}.entry span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.entry .icon{color:var(--faint)}#sd-table .dir{padding:2px 0;border:0;background:none;font-weight:500;color:var(--text);text-align:left;max-width:100%;justify-content:flex-start}#sd-table .dir .icon{color:var(--meter)}#sd-table .dir:hover:enabled{background:none;text-decoration:underline}#sd-table td.ops button{width:26px;height:26px;padding:0;border:0;background:none;color:var(--muted)}#sd-table td.ops button:hover:enabled{background:var(--border);color:var(--text)}#sd-table tr.empty td{color:var(--faint);font-style:italic;padding:10px 8px}#sd-table tr.empty:hover td{background:none}#sd-error{font-size:12.5px;padding:6px 16px 0}#sd-error:empty{display:none}.drop-hint{margin:8px 12px 12px;padding:12px 14px;border:1.5px dashed var(--border-strong);border-radius:10px;font-size:12px;color:var(--faint);text-align:center;background:var(--bg)}.sd.busy .sd-scroll{opacity:.6}.stage{grid-area:stage;position:relative;min-width:0;min-height:0;display:flex;flex-direction:column;background-color:var(--stage);background-image:radial-gradient(var(--dots) 1px,transparent 1.5px);background-size:14px 14px}.stage.firmware-drop{outline:2px dashed var(--meter);outline-offset:-8px;background-color:var(--brand-tint)}.stage.firmware-drop:after{content:"Drop firmware to start";position:absolute;left:50%;bottom:28px;transform:translate(-50%);padding:8px 16px;border-radius:999px;background:var(--brand);color:#fff;font-weight:600;font-size:13px;pointer-events:none;white-space:nowrap}.stage-bar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:10px 14px}.pill{display:inline-flex;align-items:center;gap:8px;padding:4px 12px;border:1px solid var(--border);border-radius:999px;background:var(--surface);font-size:12px;color:var(--muted)}.pill:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--border-strong)}.app.live .pill:before{background:var(--meter)}.zoom{display:flex;align-items:center;gap:2px;padding:2px;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.zoom button{width:28px;height:26px;padding:0;border:0;background:none;color:var(--muted)}.zoom .divider{margin:4px 2px}.zoom select{height:26px;padding:0 4px;border:0;border-radius:6px;background:transparent;font:12px var(--mono);color:var(--text-2);cursor:pointer;text-align:center}.zoom select:hover:enabled{background:var(--surface-2)}.zoom select:disabled{opacity:.45;cursor:default}.device{flex:1;min-height:0;overflow:auto;display:flex;padding:4px 24px 20px}.bezel{margin:auto;padding:10px 10px 12px;border-radius:10px;background:var(--bezel);box-shadow:var(--device-shadow)}#screen{overflow:hidden;background:#f5f4ef;color:#1a1a1a}#screen:not(:has(iframe)){width:min(380px,calc(100vw - 72px));aspect-ratio:528 / 792;display:flex;align-items:center;justify-content:center;padding:28px;text-align:center;font-size:14px}#screen iframe{border:0;display:block;transform-origin:top left;filter:var(--screen-filter)}.intro{display:flex;flex-direction:column;align-items:center;gap:14px}.intro h2{font:600 20px/1.3 var(--serif)}.intro p{font-size:13.5px;color:#44403c}.intro a{color:#315243}.intro .button{background:#3d6652;border-color:transparent;color:#fff;font-weight:600}.intro .button:hover{background:#315243}.intro .fine{font-size:12px;color:#57534e}#keys{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;padding:0 16px 16px}#keys:empty{display:none}#keys button{flex-direction:column;gap:3px;min-width:56px;padding:6px 10px;touch-action:none;box-shadow:0 1px 2px #0c0a090d}#keys button:after{content:attr(data-kbd);font:10.5px/1.4 var(--mono);color:var(--faint);padding:0 5px;border:1px solid var(--border);border-radius:4px;background:var(--bg)}#keys button:active,#keys button.held{background:var(--brand-tint);border-color:var(--meter)}#keys:is([data-machine=x3],[data-machine=x4]) button:is(:nth-child(3),:nth-child(5),:nth-child(7)),#keys[data-machine=x4pro] button:is(:nth-child(2),:nth-child(4)){margin-left:12px}.output{grid-area:output;min-height:0;display:flex;flex-direction:column;background:var(--surface);border-left:1px solid var(--border)}.output-head{display:flex;align-items:center;gap:8px;padding:10px 12px}.output h2{font-size:14px;font-weight:600;white-space:nowrap}.output h2 span{margin-left:4px;font-weight:400;font-size:12px;color:var(--faint)}.filter{flex:1;min-width:0;display:flex;align-items:center;gap:6px;padding:5px 9px;border:1px solid var(--border);border-radius:7px;color:var(--faint);background:var(--bg)}.filter:focus-within{border-color:var(--meter)}.filter input{flex:1;min-width:0;border:0;outline:0;background:transparent;color:var(--text);font:inherit;font-size:13px}.output .icon-button{width:31px;height:31px}#console{flex:1;min-height:0;margin:0 12px 12px;padding:12px 14px;overflow:auto;border:1px solid var(--console-border);border-radius:10px;background:var(--console-bg);color:var(--console-fg);font:12px/1.7 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere}.statusbar{grid-area:status;display:flex;align-items:center;gap:8px 16px;padding:6px 16px;background:var(--status-bg);color:var(--status-fg);font-size:12px}.statusbar .dot{width:7px;height:7px;border-radius:50%;background:var(--status-dim);flex:none}#status{flex:1;min-width:0;font-weight:500}.key-hint{color:var(--status-dim);white-space:nowrap}.tabs{display:none}@media(max-width:1180px){.app{--sd-min: 240px;--output-min: 280px}.key-hint{display:none}}@media(max-width:960px){.app{display:flex;flex-direction:column;height:auto;min-height:100vh}.topbar{display:contents}.brandbar{order:0;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 6px 6px 16px;background:var(--surface);border-bottom:1px solid var(--border)}#github,#theme{width:44px;height:44px;border:0}#github{margin-left:auto}.statusbar{order:1;padding:8px 16px;font-size:12.5px}.stage{order:2;border-bottom:1px solid var(--border)}.device{overflow:auto hidden;padding:4px 8px 16px}.bezel{padding:6px 6px 8px;border-radius:8px}.controls{order:3;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:16px;background:var(--surface);border-bottom:1px solid var(--border)}.spacer,.controls>.divider{display:none}.run{grid-column:1 / -1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.run button{min-height:48px;border-radius:10px}.tabs{order:4;display:flex;gap:4px;margin:14px 16px 0;padding:3px;border:1px solid var(--border);border-radius:10px;background:var(--surface-2)}.tabs button{flex:1;height:40px;border:0;border-radius:8px;background:transparent;color:var(--muted)}.tabs button[aria-selected=true]{background:var(--surface);color:var(--text);font-weight:600;box-shadow:0 1px 2px #0c0a0914,0 0 0 1px var(--border)}.sd,.output{order:5;margin:12px 16px 16px;border:1px solid var(--border);border-radius:14px;overflow:hidden}.app[data-tab=sd] .output,.app[data-tab=console] .sd{display:none}.sd-scroll{flex:none;overflow:visible}#sd-table td{padding:9px 6px}#console{flex:none;height:420px}#keys{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:0 16px 18px}#keys button{min-height:48px;border-radius:10px;margin-left:0!important}#keys button:after{display:none}#keys:is([data-machine=x3],[data-machine=x4]) button:nth-child(7){grid-column:span 2}}@media(hover:none){.col-ops{width:124px}#sd-table td.ops{position:static;display:table-cell;padding:0 2px;white-space:nowrap;opacity:1;pointer-events:auto;background:none;text-align:right}#sd-table td.ops button{width:40px;height:40px}}:root{--heap-used: #4a7a62;--heap-free: #e7e5e4;--heap-meta: #a8a29e;--heap-fresh: #d97706;--heap-freed: #0284c7;--heap-corrupt: #b42318;--heap-other: #8c857f;--heap-site-0: #4a7a62;--heap-site-1: #3f5fbf;--heap-site-2: #7c4dcc;--heap-site-3: #0e8a8a;--heap-site-4: #6f7d1c;--heap-site-5: #b03c8c;--heap-site-6: #8a5a2b;--heap-site-7: #4f6b80;--heap-site-8: #93702a}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--heap-used: #69917d;--heap-free: #292524;--heap-meta: #57534e;--heap-fresh: #f59e0b;--heap-freed: #38bdf8;--heap-corrupt: #f97066;--heap-other: #6f6964;--heap-site-0: #69917d;--heap-site-1: #7b93e6;--heap-site-2: #a78bfa;--heap-site-3: #3fb8b8;--heap-site-4: #a9b84a;--heap-site-5: #e07ac0;--heap-site-6: #c4935f;--heap-site-7: #8aa6bd;--heap-site-8: #d1a64b}}:root[data-theme=dark]{--heap-used: #69917d;--heap-free: #292524;--heap-meta: #57534e;--heap-fresh: #f59e0b;--heap-freed: #38bdf8;--heap-corrupt: #f97066;--heap-other: #6f6964;--heap-site-0: #69917d;--heap-site-1: #7b93e6;--heap-site-2: #a78bfa;--heap-site-3: #3fb8b8;--heap-site-4: #a9b84a;--heap-site-5: #e07ac0;--heap-site-6: #c4935f;--heap-site-7: #8aa6bd;--heap-site-8: #d1a64b}.heap-message{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:16px;border:1px dashed var(--border-strong);border-radius:10px;color:var(--text-2)}.heap-message strong{font:600 15px/1.35 var(--serif);color:var(--text)}.heap-message p{font-size:13px;overflow-wrap:anywhere;user-select:text;-webkit-user-select:text}.heap-message p:empty{display:none}.num{font-variant-numeric:tabular-nums}.heap-card{padding:4px 10px 10px;border:1px solid var(--border);border-radius:10px;background:var(--bg)}.heap-head{display:flex;align-items:baseline;gap:8px;width:100%;min-width:0;padding:4px 0 6px;justify-content:flex-start;border:0;border-radius:0;background:none;font-size:12px;font-weight:400;color:var(--faint);text-align:left}.heap-head:hover:enabled{background:none;color:var(--text-2)}.heap-chevron{width:12px;height:12px;align-self:center;transition:transform .15s}.heap-card.folded .heap-chevron{transform:rotate(-90deg)}.heap-name{color:var(--text);font-size:13px;font-weight:600}.heap-role{overflow:hidden;text-overflow:ellipsis}.heap-addr{margin-left:auto;font:11px var(--mono)}.heap-used{color:var(--text-2)}.heap-used b{font-weight:600}.heap-stats{display:flex;flex-wrap:wrap;gap:0 12px;margin:-2px 0 8px 20px;color:var(--text-2);font-size:11.5px}.heap-stats span span{color:var(--faint)}.heap-stats b{font-weight:600}.heap-stats .bad{color:var(--danger)}.heap-map{display:flex;gap:0}.heap-gutter{position:relative;width:44px;flex:none;color:var(--faint);font:10px/8px var(--mono)}.heap-gutter span{position:absolute;right:6px}.heap-map canvas{display:block;border-radius:2px;cursor:pointer}.heap-card.folded .heap-stats,.heap-card.folded .heap-gutter{display:none}.heap-card.folded .heap-map canvas{border-radius:3px}.sw{display:inline-block;width:9px;height:9px;margin-right:5px;border-radius:2px;vertical-align:-1px}.sw.used{background:var(--heap-used)}.sw.free{background:var(--heap-free);box-shadow:inset 0 0 0 1px var(--border-strong)}.sw.fresh{background:var(--heap-fresh)}.sw.freed{background:var(--heap-freed)}.sw.meta{background:var(--heap-meta)}.sw.corrupt{background:var(--heap-corrupt)}.heap-tip{position:fixed;z-index:40;min-width:190px;max-width:min(380px,calc(100vw - 16px));padding:8px 10px;pointer-events:none;border:1px solid var(--border-strong);border-radius:8px;background:var(--surface);box-shadow:0 12px 32px -8px #0c0a0940;font-size:12px}.heap-tip div{display:flex;justify-content:space-between;gap:14px}.heap-tip span{flex:none;color:var(--faint)}.heap-tip b{min-width:0;font-weight:500;text-align:right;overflow-wrap:anywhere}.heap-tip div.wide{flex-direction:column;gap:0;margin-top:3px}.heap-tip .wide b{text-align:left;font:500 11.5px/1.4 var(--mono);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}.heap-tip .hint{margin-top:5px;color:var(--faint);font-size:11px}.heap-detail{margin-top:10px;padding:10px 12px;border:1px solid var(--border-strong);border-radius:8px;background:var(--surface);font-size:12px;user-select:text;-webkit-user-select:text}.hd-head{display:flex;align-items:center;gap:8px;min-width:0}.hd-head .sw{flex:none;margin:0}.hd-head strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600}.hd-state{flex:none;color:var(--faint)}.hd-state.bad{color:var(--danger)}.hd-close{width:26px;height:26px;margin-left:auto}.hd-facts{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:2px 12px;margin:8px 0 0}.hd-facts dt{color:var(--faint)}.hd-facts dd{margin:0;font:11.5px/1.5 var(--mono);overflow-wrap:anywhere}.hd-label{display:block;margin-bottom:2px;color:var(--faint);font-size:11px}.heap-detail code{font:11.5px/1.45 var(--mono);overflow-wrap:anywhere}.hd-by{margin-top:10px}.hd-by code{display:block;color:var(--text);font-weight:600}.hd-loc{display:block;color:var(--faint);font:11px/1.45 var(--mono);overflow-wrap:anywhere}.hd-loc b{color:var(--text-2);font-weight:500}.hd-stack{margin-top:10px}.hd-stack-head{display:flex;align-items:center;justify-content:space-between}.hd-copy{padding:2px 9px;border-radius:6px;font-size:11px}.hd-stack ol{display:flex;flex-direction:column;gap:5px;margin:4px 0 0;padding-left:24px}.hd-stack li::marker{color:var(--faint);font:10.5px var(--mono)}.hd-stack li code{display:block;color:var(--text-2)}.hd-stack li.site code{color:var(--text);font-weight:600}.hd-stack li.lib code,.hd-stack li.alloc code{color:var(--faint)}.hd-inl{margin-top:2px;padding-left:10px}.hd-inl>span{color:var(--faint);font-size:11px}.hd-inl code{display:inline!important}.hd-stack summary{margin-top:4px;color:var(--faint);font-size:11.5px;cursor:pointer}.hd-note{margin-top:8px;color:var(--faint)}button.link{padding:0;border:0;background:none;color:var(--brand-text);font:inherit;font-weight:500;text-decoration:underline;text-underline-offset:2px}button.link:hover:enabled{background:none}@media(min-width:961px){html,body{height:100%;overflow:hidden}}[hidden]{display:none!important}body{user-select:none;-webkit-user-select:none}#console,.filter input,.intro,#screen:not(:has(canvas,iframe)){user-select:text;-webkit-user-select:text}.app{--sd-min: var(--sd-w, 300px);--sd-max: var(--sd-w, 300px);--output-min: var(--output-w, 380px)}.gutter{position:absolute;top:0;bottom:0;width:9px;z-index:5;cursor:col-resize;touch-action:none}.gutter[data-side=sd]{left:-5px}.gutter[data-side=output]{right:-5px}.gutter:after{content:"";position:absolute;top:0;bottom:0;left:4px;width:1px;background:transparent;transition:background .12s}.gutter:hover:after,.gutter.active:after{background:var(--meter)}.app.resizing{cursor:col-resize}.app.resizing *{pointer-events:none}html[data-platform=macos] .topbar{height:64px;padding-left:100px}button.file-chip{padding:6px 10px;font-weight:500;color:var(--text-2);justify-content:flex-start}button.file-chip:hover:enabled{background:var(--surface-2)}.intro button.button{background:#3d6652;border-color:transparent;color:#fff;font-weight:600}.intro button.button:hover:enabled{background:#315243}#screen canvas{display:block;image-rendering:pixelated;filter:var(--screen-filter)}.bezel:not(:has(canvas,iframe)){width:min(400px,100%);min-width:0;flex-shrink:0}#screen:not(:has(canvas,iframe)){width:100%;aspect-ratio:528 / 792;display:flex;align-items:center;justify-content:center;padding:28px;text-align:center;font-size:14px;overflow-wrap:anywhere}#screen:not(:has(canvas,iframe)){overflow:visible}.sd-file{display:flex;align-items:center;gap:4px;min-width:0}#sd-save{flex:1;min-width:0;display:flex;white-space:nowrap}#sd-save .sd-dir{min-width:1.5em;overflow:hidden;text-overflow:ellipsis}#sd-save .sd-name{flex:none;max-width:100%;overflow:hidden;text-overflow:ellipsis}#sd-save.note{white-space:normal}#sd-save.note .sd-name{white-space:normal;overflow:visible}#sd-reveal{width:24px;height:24px;margin:-4px -4px -4px 0;border-color:transparent}#sd-reveal .icon{width:14px;height:14px}.card-choice{position:relative;display:inline-flex}.menu{position:absolute;top:calc(100% + 6px);left:0;z-index:30;min-width:190px;display:flex;flex-direction:column;gap:2px;padding:4px;border:1px solid var(--border-strong);border-radius:10px;background:var(--surface);box-shadow:0 12px 32px -8px #0c0a0940}.menu[hidden]{display:none}.menu button{justify-content:flex-start;border:0;background:none;padding:7px 10px;font-weight:500;color:var(--text-2)}.menu button:hover:enabled,.menu button:focus-visible{background:var(--surface-2);color:var(--text)}.menu .icon{color:var(--faint)}dialog.ask{width:min(400px,calc(100vw - 32px));padding:18px 18px 16px;border:1px solid var(--border-strong);border-radius:12px;background:var(--surface);color:var(--text);box-shadow:0 24px 60px -16px #0c0a0973}dialog.ask::backdrop{background:#0c0a0959}dialog.ask form{display:flex;flex-direction:column;gap:12px}dialog.ask strong{font:600 16px/1.35 var(--serif)}dialog.ask p{color:var(--text-2);font-size:13px;white-space:pre-line;overflow-wrap:anywhere}dialog.ask input{font:inherit;color:var(--text);background:var(--bg);padding:7px 10px;border:1px solid var(--border-strong);border-radius:8px;outline:0;user-select:text;-webkit-user-select:text}dialog.ask input:focus{border-color:var(--meter)}.ask-choices{display:flex;flex-direction:column;gap:2px}.ask-choices label{display:flex;align-items:flex-start;gap:10px;padding:7px 8px;border-radius:8px;cursor:pointer}.ask-choices label:hover:not(:has(:disabled)){background:var(--surface-2)}.ask-choices label:has(:checked){background:var(--brand-tint)}.ask-choices label:has(:disabled){opacity:.5;cursor:default}dialog.ask .ask-choices input{margin:3px 0 0;padding:0;accent-color:var(--brand)}.ask-choices span{display:flex;flex-direction:column}.ask-choices b{font-weight:500}.ask-choices small{color:var(--faint);font-size:12px}.ask-buttons{display:flex;justify-content:flex-end;gap:8px;margin-top:2px}button.danger{background:var(--danger);border-color:transparent;color:#fff;font-weight:600}button.danger:hover:enabled{background:var(--danger);opacity:.9}#screen:not(:has(canvas,iframe)):not(:has(.intro)){color:#44403c}.zoom select{-webkit-appearance:none;appearance:none;padding:0 18px 0 8px;background-image:linear-gradient(45deg,transparent 50%,var(--faint) 50%),linear-gradient(135deg,var(--faint) 50%,transparent 50%);background-repeat:no-repeat;background-size:4px 4px,4px 4px;background-position:calc(100% - 11px) 52%,calc(100% - 7px) 52%}.pane-tabs{display:inline-flex;flex:none;gap:2px;padding:2px;border:1px solid var(--border);border-radius:8px;background:var(--surface-2)}.pane-tabs button{height:25px;padding:0 10px;border:0;border-radius:6px;background:transparent;color:var(--muted);font-size:13px}.pane-tabs button:hover:enabled{background:transparent;color:var(--text)}.pane-tabs button[aria-selected=true]{background:var(--surface);color:var(--text);font-weight:600;box-shadow:0 1px 2px #0c0a0914,0 0 0 1px var(--border)}.output[data-pane=console] .heap-tool,.output[data-pane=heap] .console-tool,.output [hidden]{display:none!important}.output-head .file-chip{flex:1;min-width:0;height:31px;padding:0 10px;font-size:13px;font-weight:500}.output-head .file-chip .icon{color:var(--faint)}#heap-elf-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#heap-pause[aria-pressed=true]{color:var(--brand-text);background:var(--brand-tint);border-color:var(--brand-tint-border)}#heap{flex:1;min-height:0;display:flex;flex-direction:column;gap:10px;margin:0 12px 12px;overflow:auto}#heap:focus-visible{outline-offset:-2px}.heap-live{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--faint)}.heap-dot{width:7px;height:7px;flex:none;border-radius:50%;background:var(--meter);box-shadow:0 0 0 3px var(--brand-tint)}.heap-live.paused .heap-dot{background:var(--faint);box-shadow:none}.heap-note{margin-top:-4px;color:var(--faint);font-size:12px}.heap-note:empty{display:none}.heap-bar{display:flex;align-items:center;gap:6px 10px;flex-wrap:wrap}.heap-summary{flex:1 1 220px;min-width:0;display:flex;flex-wrap:wrap;gap:2px 12px;color:var(--faint);font-size:12px}.heap-summary b{color:var(--text);font-weight:600}.heap-summary .bad,.heap-summary .bad b{color:var(--danger)}.heap-bar .zoom select{width:92px}#heap-list{display:flex;flex-direction:column;gap:8px}.heap-legend{display:flex;flex-wrap:wrap;gap:4px 12px;color:var(--faint);font-size:11.5px}.heap-sites{display:contents}.heap-sites span{color:var(--text-2)}.heap-sites b{color:var(--faint);font-weight:500}.heap-trend{padding:8px 10px 6px;border:1px solid var(--border);border-radius:10px;background:var(--bg)}.heap-trend-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 12px;margin-bottom:4px;color:var(--faint);font-size:11.5px}.heap-trend-head strong{color:var(--text);font-size:12.5px;font-weight:600}.heap-trend-span{margin-left:auto}.heap-trend .line{display:inline-block;width:12px;margin-right:5px;border-top:2px solid var(--heap-used);vertical-align:middle}.heap-trend .line.largest{border-top:1.5px dashed var(--heap-fresh)}.heap-trend .line.low{border-top:1.5px dotted var(--faint)}#heap-trend-canvas{display:block;width:100%;height:84px;cursor:crosshair}.heap-site-name{display:inline-block;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}:root{--warn: #b54708;--warn-tint: #fffaeb;--warn-border: #fedf89}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--warn: #fdb022;--warn-tint: #2b1d06;--warn-border: #4e3609}}:root[data-theme=dark]{--warn: #fdb022;--warn-tint: #2b1d06;--warn-border: #4e3609}.setup{position:relative;min-width:0;display:flex}button.setup-chip{padding:4px 10px 4px 5px;gap:10px;max-width:380px;text-align:left}.setup-chip[aria-expanded=true]{background:var(--surface-2);border-color:var(--faint)}.setup-chip .file-chip-text{line-height:1.3}.setup-chip #flash-name{font-size:12.5px;line-height:1.3;color:var(--text)}.setup-chip #flash-name.empty{font-size:13px;color:var(--text-2)}.setup-chip .chevron{transition:transform .12s}.setup-chip[aria-expanded=true] .chevron{transform:rotate(180deg)}.setup-mark{width:30px;height:30px;flex:none;display:grid;place-items:center;border-radius:6px;background:var(--brand-tint);color:var(--brand-text)}.setup-mark.large{width:38px;height:38px;border-radius:8px}.setup-mark.large .icon{width:18px;height:18px}.setup-meta{display:flex;align-items:center;gap:6px;font-size:11.5px;font-weight:500;color:var(--faint);white-space:nowrap}.setup-meta[hidden]{display:none}.setup-meta .ok,.setup-meta .warn{display:inline-flex;align-items:center;gap:3px}.setup-meta .ok{color:var(--brand-text)}.setup-meta .warn{color:var(--warn)}.setup-meta .icon,.setup-tag .icon{width:11px;height:11px}.setup-card{position:absolute;top:calc(100% + 8px);left:0;z-index:30;width:460px;display:flex;flex-direction:column;gap:16px;padding:16px;border:1px solid var(--border-strong);border-radius:12px;background:var(--surface);color:var(--text);box-shadow:0 18px 40px -12px #0c0a0947,0 2px 6px #0c0a090f}.setup-card:focus{outline:none}.setup-card[hidden],.setup-card [hidden]{display:none!important}.setup-file{display:flex;gap:12px;align-items:flex-start}.setup-file-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.setup-name{font:500 13.5px/1.4 var(--mono);overflow-wrap:anywhere}.setup-folder{font:12px/1.4 var(--mono);color:var(--faint);overflow-wrap:anywhere;user-select:text;-webkit-user-select:text}.setup-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:5px}.setup-tags:empty{display:none}.setup-tag{display:inline-flex;align-items:center;gap:4px;padding:0 7px;border-radius:999px;white-space:nowrap;font-size:11.5px;font-weight:500;line-height:18px;background:var(--brand-tint);color:var(--brand-text);border:1px solid var(--brand-tint-border)}.setup-tag.grey{background:var(--surface-2);color:var(--muted);border-color:var(--border)}.setup-tag.warn{background:var(--warn-tint);color:var(--warn);border-color:var(--warn-border)}.setup-tag .mono{font-family:var(--mono);font-weight:400}.setup-section{display:flex;flex-direction:column;gap:8px}.setup-section h3{margin:0;font-size:11.5px;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--faint)}.setup-line{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px}.setup-note{font-size:12px;font-weight:400;color:var(--faint)}p.setup-note{line-height:1.45}.segmented{display:inline-flex;gap:2px;padding:2px;border:1px solid var(--border);border-radius:8px;background:var(--surface-2)}.segmented button{padding:4px 12px;border:0;border-radius:6px;background:transparent;color:var(--text-2);gap:6px}.segmented button:hover:enabled{background:var(--border)}.segmented button[aria-checked=true]{background:var(--surface);color:var(--text);box-shadow:0 1px 2px #0c0a091f,0 0 0 1px var(--border)}.segmented button[aria-checked=true]:disabled{opacity:1}.setup-elf{display:flex;align-items:center;gap:10px;min-height:40px;padding:4px 4px 4px 12px;border:1px solid var(--border);border-radius:8px}.setup-elf>.icon{color:var(--muted)}.setup-elf-name{flex:none;max-width:45%;font:12.5px/1.4 var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.setup-elf .setup-tag{min-width:0;overflow:hidden;text-overflow:ellipsis;display:inline-block}.setup-elf .setup-tag .icon{vertical-align:-1px;margin-right:3px}.setup-elf-name.empty{font:13px/1.4 var(--sans);color:var(--faint)}.setup-elf .spacer,.setup-recent-item .spacer{flex:1}button.small{padding:4px 10px;font-size:13px}button.quiet{border-color:transparent;background:transparent}.icon-button.small{width:28px;height:28px;border-color:transparent}.setup-panel{padding-top:12px;border-top:1px solid var(--border)}.setup-panel summary{display:flex;align-items:center;gap:8px;font-weight:500;list-style:none;cursor:pointer}.setup-panel summary::-webkit-details-marker{display:none}.setup-panel summary .chevron{transform:rotate(-90deg);transition:transform .12s}.setup-panel[open] summary .chevron{transform:none}#setup-panel-value{margin-left:auto}.setup-panel .segmented{margin-top:10px}.setup-recent{gap:2px;padding-top:12px;border-top:1px solid var(--border)}.setup-recent h3{margin-bottom:4px}.setup-recent-item{width:100%;justify-content:flex-start;gap:10px;padding:6px 8px;border:0;border-radius:7px;background:none;font-weight:400}.setup-recent-item .mono{min-width:0;overflow:hidden;text-overflow:ellipsis;font:12.5px/1.4 var(--mono)}.setup-recent-item.current{background:var(--surface-2)}.setup-recent-item.current:disabled{opacity:1}.setup-recent-item.current .icon{color:var(--brand-text)}.toggles{display:flex;gap:6px}button.toggle{width:34px;height:34px;padding:0;border-color:var(--border);background:var(--surface);color:var(--faint)}button.toggle[aria-pressed=true]{background:var(--brand-tint);border-color:var(--brand-tint-border);color:var(--brand-text)}button.toggle[aria-pressed=true]:hover:enabled{background:var(--brand-tint);border-color:var(--meter)}.option:has(.toggle:hover) .tip,.option:has(.toggle:focus-visible) .tip{visibility:visible;opacity:1}.option:has(.toggle:hover) .tip{transition-delay:.35s}.option.dismissed .tip,.about.dismissed .about-tip{visibility:hidden!important;opacity:0!important}.tip-state{font-weight:500;color:var(--faint)}.heap-live.past .heap-dot{background:var(--warn);box-shadow:0 0 0 3px var(--warn-tint)}.heap-live.past #heap-state{color:var(--text-2);font-weight:500}#heap-golive{margin-left:auto;padding:2px 10px;font-size:12px;gap:5px}#heap-golive .icon.small{width:9px;height:9px}.heap-note[hidden]{display:none}#heap-trend-canvas{cursor:ew-resize;touch-action:none}#heap-trend-canvas:focus-visible{outline:2px solid var(--brand-text);outline-offset:2px;border-radius:4px}@media(max-width:960px){.gutter{display:none}.setup{grid-column:1 / -1}button.setup-chip{width:100%;max-width:none;min-height:48px}.setup-card{width:min(460px,calc(100vw - 32px))}.toggles{grid-column:1 / -1;justify-content:space-between;gap:8px}.toggles{position:relative}.toggles .option{flex:1;min-height:0;padding:0;border:0;position:static}.toggles .option .tip{left:0;right:0;width:auto}button.toggle{width:100%;height:44px;border-radius:10px}.tabs [role=tab]{font:inherit}.output-head{flex-wrap:wrap}}.sd-card-note{margin:0;padding:0 16px 10px;font-size:12px;color:var(--muted);line-height:1.5}#sd-notice{padding-top:10px;overflow-wrap:anywhere}.sd-tools{flex-wrap:wrap}.sd-upload-actions{display:flex;flex:1 0 100%;gap:4px}.card-recent{display:flex;flex-direction:column;border-top:1px solid var(--border);margin-top:4px;padding-top:4px}.card-recent button{max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-recent[hidden]{display:none}
