@font-face{font-family:JetBrains Mono;font-weight:400;src:url(/assets/JetBrainsMono-Regular-Dh36KTnx.ttf)format("truetype");font-display:swap}@font-face{font-family:JetBrains Mono;font-weight:500;src:url(/assets/JetBrainsMono-Medium-pYQm08-g.ttf)format("truetype");font-display:swap}@font-face{font-family:JetBrains Mono;font-weight:700;src:url(/assets/JetBrainsMono-Bold-DirYFTCx.ttf)format("truetype");font-display:swap}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--window:#0a0a09;--panel:#10100f;--raised:#181816;--border:#262522;--text:#ecebe4;--muted:#8d8b82;--faint:#3b3a36;--accent:#d4ff3a;--accent-text:#0a0a09;--canvas:#060606;--warn:#ffb02e;color:var(--text);font-family:JetBrains Mono,IBM Plex Mono,ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:11px}*{box-sizing:border-box}body{background:var(--window);color:var(--text);margin:0;overflow:hidden}button,input{font:inherit;color:inherit}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.app{grid-template:"top panel""stage panel"1fr/1fr minmax(372px,372px);height:100vh;display:grid}.topbar{background:var(--window);border-bottom:1px solid var(--border);grid-area:top;align-items:center;gap:2px;min-height:38px;padding:6px 10px 6px 14px;display:flex}.brand{letter-spacing:3px;white-space:nowrap;margin-right:18px;font-size:12px;font-weight:700}.menus{gap:2px;display:flex}.grow{flex:1}.source{white-space:pre;margin-right:12px}.tool{color:var(--muted);letter-spacing:1px;cursor:pointer;background:0 0;border:1px solid #0000;padding:4px 8px}.tool:hover,.tool.on{color:var(--text);border-color:var(--border)}.tool:disabled{color:var(--faint);cursor:default}.icon{color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;padding:0 8px;font-size:18px;line-height:24px}.icon:hover:not(:disabled){color:var(--accent)}.icon:disabled{color:var(--faint);cursor:default}.dice{margin-left:8px}.menu{position:relative}.popup{z-index:10;background:var(--panel);border:1px solid var(--border);flex-direction:column;min-width:240px;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);left:0}.popup button{text-align:left;cursor:pointer;background:0 0;border:0;justify-content:space-between;gap:24px;padding:6px 24px 6px 12px;display:flex}.popup button:hover:not(:disabled){background:var(--accent);color:var(--accent-text)}.popup button:disabled{color:var(--faint);cursor:default}.popup .keys{color:var(--muted)}.popup button:hover:not(:disabled) .keys{color:inherit}.popup .sep{background:var(--border);height:1px;margin:4px 8px}.stage{background:var(--canvas);grid-area:stage;place-items:center;min-height:0;display:grid;overflow:auto}.picture{display:block}.panel{background:var(--panel);border-left:1px solid var(--border);flex-direction:column;grid-area:panel;min-height:0;display:flex}.tabbar{background:var(--window);border-bottom:1px solid var(--border);padding:2px 0}.dial{height:46px;position:relative}.dial canvas{cursor:pointer;outline:none;width:100%;height:46px;display:block}.dial-corner{width:26px;height:26px;position:absolute;top:10px;right:6px}.corner{color:var(--faint);cursor:pointer;background:0 0;border:0;width:26px;height:26px;padding:0;font-size:15px}.corner:hover:not(:disabled){color:var(--accent)}.page{flex-direction:column;flex:1;gap:4px;min-height:0;padding:6px 16px 18px;display:flex;overflow-y:auto}.page::-webkit-scrollbar{width:8px}.page::-webkit-scrollbar-thumb{background:var(--border)}.page::-webkit-scrollbar-thumb:hover{background:var(--muted)}.gap10{flex:none;height:10px}.gap6{flex:none;height:6px}.heading{color:var(--muted);letter-spacing:2px;margin:0;padding:10px 0 2px 3px;font-size:10px;font-weight:700}.hint{color:var(--muted);white-space:pre-wrap;margin:0;font-size:10px}.warning,.error{color:var(--warn)}.slider{cursor:ew-resize;touch-action:none;outline:none;flex:none;width:100%;min-width:120px;height:44px;display:block}.chips{gap:4px;padding:2px 0;display:grid}.chip{background:var(--raised);border:1px solid var(--border);color:var(--muted);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;border-radius:0;padding:6px 4px;overflow:hidden}.chip:hover{color:var(--text);border-color:var(--muted)}.chip.on{background:var(--accent);color:var(--accent-text);border-color:var(--accent);font-weight:700}.chip.tall{white-space:pre-line;line-height:1.35}.chip:disabled{color:var(--faint);border-color:var(--border);cursor:default}.gallery{padding:2px 0}.gallery.scroll{padding-right:4px;overflow:hidden auto}.gallery.scroll::-webkit-scrollbar{width:6px}.gallery.scroll::-webkit-scrollbar-thumb{background:var(--border)}.tiles{gap:4px;display:grid}.tile{background:var(--raised);border:1px solid var(--border);color:var(--muted);letter-spacing:0;cursor:pointer;white-space:nowrap;border-radius:0;flex-direction:column;align-items:center;gap:4px;min-width:0;padding:3px 1px 5px;font-size:9px;font-weight:700;display:flex;overflow:hidden}.tile:hover{color:var(--text);border-color:var(--muted)}.tile.on{color:var(--accent-text);background:var(--accent);border-color:var(--accent)}.tile-img{display:block}.tile .plus{color:var(--muted);justify-content:center;align-items:center;font-size:28px;font-weight:400;display:flex}.popup.locks{left:auto;right:0}.popup .section{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;padding:6px 12px 4px;font-size:11px}.popup.floating{z-index:20;position:fixed;top:auto}.toast{cursor:pointer}.line{background:var(--raised);border:1px solid var(--border);border-radius:0;outline:none;padding:5px 8px}.line:hover{border-color:var(--muted)}.line:focus{border-color:var(--accent)}.line::selection{background:var(--accent);color:var(--accent-text)}.collapse{color:var(--muted);letter-spacing:2px;cursor:pointer;background:0 0;border:0;width:100%;padding:10px 0 4px;font-size:10px;font-weight:700}.collapse:hover{color:var(--text)}.section-body{flex-direction:column;gap:4px;padding:2px 0 8px;display:flex}.footer{background:var(--window);border-top:1px solid var(--border);flex-direction:column;gap:6px;min-height:56px;padding:10px 14px 12px;display:flex}.status{white-space:pre;letter-spacing:.5px}.tonepad{cursor:crosshair;touch-action:none;outline:none;width:100%;min-width:180px;height:196px;display:block}.tonepad:focus-visible{outline:1px solid var(--accent)}.histogram{width:100%;height:64px;display:block}.check{color:var(--muted);cursor:pointer;align-items:center;gap:8px;padding:3px 0;display:flex}.check:hover{color:var(--text)}.check input{appearance:none;border:1px solid var(--muted);cursor:pointer;background:0 0;width:13px;height:13px;margin:0}.check input:checked{background:var(--accent);border-color:var(--accent)}.check input:focus-visible{outline:1px solid var(--accent)}.button{background:var(--raised);border:1px solid var(--border);letter-spacing:1px;cursor:pointer;border-radius:0;padding:6px 10px}.button:hover{border-color:var(--text)}.button:active{background:var(--panel)}.button:disabled{color:var(--faint);border-color:var(--border);cursor:default}.backdrop{z-index:50;background:#0000008c;place-items:center;display:grid;position:fixed;inset:0}.dialog{background:var(--window);border:1px solid var(--border);flex-direction:column;gap:6px;width:460px;max-width:calc(100vw - 32px);padding:18px 22px;display:flex}.dialog .summary{color:var(--muted);margin-top:8px}.dialog .export-error{white-space:pre-line}.dialog-buttons{justify-content:flex-end;align-items:center;gap:6px;margin-top:6px;display:flex}.dialog-buttons .primary{flex:none}.dialog-buttons .button{padding:8px 10px}.dialog button:focus:not(:focus-visible){outline:none}.dialog.guide{width:560px}.dialog.guide,.dialog.about{max-height:calc(100dvh - 32px);padding:0 0 16px}.help-body{-webkit-user-select:text;user-select:text;overscroll-behavior:contain;min-height:0;padding:18px 22px 4px;line-height:1.45;overflow-y:auto}.help-body h2{letter-spacing:3px;margin:0 0 8px;font-size:18px;font-weight:700}.help-body h3{font-size:inherit;letter-spacing:2px;margin:14px 0 6px;font-weight:700}.help-body p{margin:0 0 10px}.help-body .muted{color:var(--muted)}.help-body .muted b{color:var(--text);font-weight:600}.help-body ol,.help-body ul{margin:0;padding:0;list-style:none}.help-body .steps li{gap:14px;padding-bottom:14px;display:flex}.help-body .num{color:var(--accent);flex:none;font-size:20px;font-weight:700;line-height:1.1}.help-body .step-title{letter-spacing:1px}.help-body .tips li{margin-bottom:6px;padding-left:14px;position:relative}.help-body .tips li:before{content:"·";position:absolute;left:2px}.help-body .fonts li{margin-bottom:8px}.dialog.guide .dialog-buttons,.dialog.about .dialog-buttons{padding:0 16px}.swatches{gap:4px;padding:2px 0;display:grid}.swatch{border:1px solid var(--border);cursor:pointer;border-radius:0;min-width:0;height:34px;padding:0;font-size:13px;font-weight:700;position:relative}.swatch-text{position:relative;top:-2px}.swatch-bar{height:2px;position:absolute;bottom:4px;left:4px;right:4px}.swatch:hover{border-color:var(--text)}.swatch.on,.gswatch.on{outline:2px solid var(--accent);outline-offset:-2px;border-color:var(--accent)}.gswatch{border:1px solid var(--border);cursor:pointer;border-radius:0;min-width:0;height:26px;padding:0}.gswatch:hover{border-color:var(--text)}.colour-button{box-sizing:border-box;background:var(--raised);border:1px solid var(--border);cursor:pointer;letter-spacing:1px;align-items:center;gap:8px;height:30px;padding:0 4px;display:flex;position:relative}.colour-button:hover{border-color:var(--text)}.colour-button:focus-within{border-color:var(--accent)}.colour-chip{border:1px solid var(--faint);box-sizing:border-box;flex:none;width:20px;height:20px}.colour-button input{opacity:0;cursor:pointer;border:0;width:100%;height:100%;padding:0;position:absolute;bottom:0;left:0}.choose{background:var(--raised);color:var(--text);border:1px solid var(--border);font:inherit;appearance:none;cursor:pointer;border-radius:0;padding:5px 8px}.choose:hover{border-color:var(--muted)}.choose:focus{border-color:var(--accent);outline:none}.choose option{background:var(--raised);color:var(--text)}.gap8{flex:none;height:8px}.switch{background:var(--raised);border:1px solid var(--border);text-align:left;color:var(--muted);letter-spacing:2px;cursor:pointer;white-space:pre;border-radius:0;padding:8px 10px;font-weight:700}.switch.on{color:var(--accent);border-color:var(--accent)}.switch:hover{border-color:var(--text)}.transport{gap:4px;display:flex}.primary{background:var(--accent);color:var(--accent-text);border:1px solid var(--accent);letter-spacing:3px;cursor:pointer;white-space:pre;border-radius:0;flex:1;padding:10px 12px;font-size:12px;font-weight:700}.primary:hover:not(:disabled){background:var(--text);border-color:var(--text);color:var(--window)}.primary:disabled{background:var(--faint);border-color:var(--faint);color:var(--panel);cursor:default}.die{background:var(--raised);border:1px solid var(--border);width:52px;color:var(--text);cursor:pointer;border-radius:0;flex:none;padding:0;font-size:22px}.die:hover{border-color:var(--accent);color:var(--accent)}.stage-wrap{grid-area:stage;min-height:0;display:grid;position:relative}.stage-wrap>.stage{grid-area:auto}.strip{cursor:pointer;width:100%;height:34px;display:block;position:absolute;bottom:0;left:0;right:0}.row{align-items:center;gap:8px;padding:2px 0;display:flex}.row-label{min-width:84px;color:var(--muted)}.row .choose{flex:1;min-width:0}.curve{cursor:crosshair;touch-action:none;width:100%;height:150px;display:block}.stage.comparing{cursor:col-resize}.picture-frame{position:relative}.picture-frame>.original{width:100%;height:100%;display:block;position:absolute;inset:0}.divider{background:var(--accent);pointer-events:none;width:2px;margin-left:-1px;position:absolute;top:0;bottom:0}.divider .tag{background:var(--window);height:18px;color:var(--text);letter-spacing:1.5px;white-space:nowrap;padding:0 6px;font-size:10px;font-weight:700;line-height:18px;position:absolute;top:10px}.divider .tag.left{right:9px}.divider .tag.right{left:9px}.viewer{z-index:100;touch-action:none;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;cursor:zoom-in;outline:none;position:fixed;inset:0;overflow:hidden}.viewer-bg{background:#000;position:absolute;inset:0}.viewer-pic{transform-origin:0 0;will-change:transform;position:absolute;top:0;left:0}.viewer-canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.viewer.anim .viewer-pic{transition:transform .28s cubic-bezier(.2,.8,.2,1)}.viewer.anim .viewer-bg{transition:opacity .28s ease-out}.viewer-badge{z-index:2;top:calc(14px + env(safe-area-inset-top));position:absolute}.viewer-bar{z-index:3;padding:max(8px, env(safe-area-inset-top)) max(8px, env(safe-area-inset-right)) 8px max(8px, env(safe-area-inset-left));background:linear-gradient(#0000008c,#0000);justify-content:space-between;align-items:center;transition:opacity .18s ease-out;display:flex;position:absolute;top:0;left:0;right:0}.viewer:not(.chrome) .viewer-bar{opacity:0;pointer-events:none}.viewer-button{color:#fff;min-width:44px;min-height:44px;font:inherit;letter-spacing:1.5px;cursor:pointer;background:0 0;border:1px solid #0000;padding:0 12px;font-size:15px;font-weight:700}.viewer-button:hover,.viewer-button:focus-visible{border-color:#ffffff80}.viewer-button.save{font-size:12px}.viewer-toast{z-index:3;left:50%;bottom:calc(16px + env(safe-area-inset-bottom));color:#fff;background:#000000bf;max-width:calc(100vw - 32px);padding:8px 12px;font-size:12px;position:absolute;transform:translate(-50%)}.viewer-probe{visibility:hidden;pointer-events:none;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);position:absolute}@media (prefers-reduced-motion:reduce){.viewer.anim .viewer-pic,.viewer.anim .viewer-bg{transition-duration:1ms}}.hold-tip{z-index:50;background:var(--panel);max-width:min(320px,100vw - 16px);color:var(--text);border:1px solid var(--accent);white-space:pre-wrap;pointer-events:none;padding:8px 10px;font-size:12px;line-height:1.45;position:fixed}@media (pointer:coarse){:root{-webkit-tap-highlight-color:transparent;font-size:13px}button,.chip,.tile,.swatch,.switch,.check{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.tool,.icon,.button,.switch,.choose,.line,.colour-button{min-height:44px}.icon,.tool{min-width:44px}.chip{padding:10px 4px;min-height:44px!important}.swatch,.gswatch{height:44px}.check{min-height:44px}.check input{width:20px;height:20px}.collapse{text-align:left;min-height:44px;padding:14px 0 8px}.popup button{align-items:center;min-height:44px}.corner{width:44px;height:44px;font-size:20px}.dial-corner{width:44px;height:44px;top:1px;right:2px}.die{width:56px}.primary{min-height:48px}.slider{touch-action:pan-y}.chip:hover:not(.on),.tile:hover:not(.on){color:var(--muted);border-color:var(--border)}.page{overscroll-behavior:contain}}.app.phone{height:100dvh;padding-bottom:env(safe-area-inset-bottom);grid-template:"top""stage"1fr"panel"/100%}.app.phone .topbar{padding:4px 4px 4px 12px;padding-top:max(4px, env(safe-area-inset-top));gap:0;min-height:52px}.app.phone .brand{margin-right:8px;font-size:13px}.app.phone .stage{touch-action:none;overscroll-behavior:contain}.app.phone .stage-wrap{min-height:0}.app.phone .panel{border-left:0;border-top:1px solid var(--border);height:var(--sheet-h,auto);max-height:calc(100dvh - 120px);transition:height .22s cubic-bezier(.2,.8,.2,1)}.app.phone .panel.dragging{transition:none}.app.phone .panel>.grab{order:0}.app.phone .panel>.page{order:1;padding:4px 14px 12px}.app.phone .panel>.tabbar{border-bottom:0;border-top:1px solid var(--border);order:2}.app.phone .panel>.footer{order:3;gap:2px;min-height:0;padding:4px 12px 6px}.app.phone .panel.peek>.page{display:none}.app.phone .footer .status{text-overflow:ellipsis;font-size:10px;overflow:hidden}.grab{background:var(--panel);cursor:grab;touch-action:none;border:0;flex:none;justify-content:center;align-items:center;width:100%;height:44px;padding:0;display:flex}.grab:before{content:"";background:var(--faint);width:40px;height:4px}.grab:active:before{background:var(--accent)}.app.phone .popup.phone-menu{z-index:30;min-width:0;max-height:calc(100dvh - 72px);position:fixed;inset:56px 8px auto;overflow-y:auto}.app.phone .popup.locks{top:auto;left:8px;right:8px;bottom:calc(110px + env(safe-area-inset-bottom));position:fixed}.app.phone .popup.floating{right:8px;left:8px!important}.app.phone .open-photo{color:var(--text);border-color:var(--border);letter-spacing:1px}.hold-badge{background:var(--window);color:var(--text);letter-spacing:1.5px;pointer-events:none;padding:4px 8px;font-size:10px;font-weight:700;position:absolute;top:10px;left:50%;transform:translate(-50%)}.app.phone.landscape{padding-bottom:0;padding-left:env(safe-area-inset-left);grid-template:"top panel""stage panel"1fr/minmax(0,1fr) auto}.app.phone.landscape .topbar{min-height:44px;padding:0 2px 0 10px;padding-top:env(safe-area-inset-top)}.app.phone.landscape .brand{letter-spacing:2px;margin-right:6px;font-size:11px}.app.phone.landscape .panel{height:auto;min-height:0;max-height:none;width:calc(min(360px, 42vw) + env(safe-area-inset-right));padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);border-top:0;border-left:1px solid var(--border);grid-template:"grab tabbar""grab page"minmax(0,1fr)"grab footer"/44px minmax(0,1fr);transition:width .22s cubic-bezier(.2,.8,.2,1);display:grid}.app.phone.landscape .panel>.grab{cursor:pointer;border-right:1px solid var(--border);grid-area:grab;width:44px;height:auto}.app.phone.landscape .grab:before{width:4px;height:40px}.app.phone.landscape .panel>.tabbar{border-top:0;border-bottom:1px solid var(--border);grid-area:tabbar;min-width:0}.app.phone.landscape .dial{padding-right:46px}.app.phone.landscape .panel>.page{grid-area:page;padding:4px 12px 12px}.app.phone.landscape .panel>.footer{grid-area:footer}.app.phone.landscape .panel.peek{width:calc(44px + env(safe-area-inset-right))}.app.phone.landscape .panel.peek>:not(.grab){display:none}.app.phone.landscape .popup.phone-menu{width:min(420px,100vw - 16px);max-height:calc(100dvh - 56px);top:48px;left:auto;right:8px}.app.phone.landscape .popup.locks{width:min(360px,100vw - 16px);max-height:calc(100dvh - 60px);inset:52px 8px auto auto;overflow-y:auto}
