:root{--bg:#fafafa;--fg:#1c1c1c;--panel:#fff;--line:#ddd;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#161616;--fg:#eee;--panel:#202020;--line:#333}}body{background:var(--bg);color:var(--fg);margin:0;font:14px system-ui,sans-serif}.app{--side-w:340px;grid-template-columns:var(--side-w) minmax(0, 1fr);grid-template-rows:minmax(0,1fr) auto;height:100vh;display:grid}.notice{border-top:1px solid var(--line);opacity:.7;background:var(--panel);grid-column:1/-1;padding:6px 16px;font-size:12px}.side{border-right:1px solid var(--line);flex-direction:column;gap:12px;padding:16px;display:flex;overflow:auto}.main{flex-wrap:wrap;align-items:flex-start;gap:16px;padding:16px;display:flex;overflow:auto}.main figure{margin:0}.main figcaption{opacity:.6;margin-bottom:4px}.paper{background:#fff;max-width:46vw;box-shadow:0 1px 8px #0004}.paper svg,.flat{max-width:100%;height:auto;display:block}.pen{background:var(--panel);border:1px solid var(--line);border-radius:6px;grid-template-columns:auto 1fr auto;align-items:center;gap:4px 8px;padding:8px;display:grid}.pen label,.pen .row{display:contents}.pen input[type=number]{width:4.5em}.swatch{border:1px solid var(--line);border-radius:3px;width:18px;height:18px}.compare{transform-origin:0 0;background:#fff;width:100%;position:relative;overflow:hidden}.zoom-view{outline-offset:2px;width:min(calc(100vw - var(--side-w) - 56px), calc((100vh - 150px) * var(--aspect,.7)), 1400px);max-width:100%;position:relative;overflow:hidden;box-shadow:0 1px 8px #0004}.zoom-view.pannable{cursor:grab;touch-action:none}.zoom-view.pannable:active{cursor:grabbing}.compare img{display:block;position:absolute}.compare .plot{position:absolute;inset:0}.compare .plot svg{width:100%;max-width:none;height:100%;position:absolute;inset:0}.compare .divider{pointer-events:none;background:#e33;width:2px;margin-left:-1px;position:absolute;top:0;bottom:0}.paper.compare{max-width:100%}.compare .orig{position:absolute;inset:0}.pen label.draw-toggle{white-space:nowrap;align-items:center;gap:4px;display:inline-flex}.ink-look{margin-bottom:6px;font-size:12px;display:block}.side{min-width:0}.side select,.side input[type=text]{box-sizing:border-box;min-width:0;max-width:100%}.pen{grid-template-columns:auto minmax(0,1fr) auto}.pen select,.pen input[type=number],.pen input[type=text]{box-sizing:border-box;width:100%;min-width:0}.pen input[type=checkbox],.pen input[type=color]{width:auto}.pen label>select,.pen label>input{grid-column:span 2}.pen label>span:empty{display:none}.pen .reg-title{opacity:.7;margin-top:4px;font-size:12px}.compare .origin-dot{width:16px;height:16px;scale:calc(1 / var(--z,1));cursor:grab;touch-action:none;z-index:3;border:2px solid #fff;border-radius:50%;margin:-8px 0 0 -8px;position:absolute;box-shadow:0 0 0 1px #000a}.compare .origin-dot:active{cursor:grabbing}.pen label.file-load{grid-column:1/-1;font-size:12px;display:block}.pen label.file-load input{width:100%;max-width:100%}:root{--error:#c33;--accent:#2a6df4}@media (prefers-color-scheme:dark){:root{--error:#ff7a7a;--accent:#6b9bff}}html{touch-action:manipulation;-webkit-tap-highlight-color:transparent}select,input,textarea,button{color:var(--fg);background-color:var(--panel);font:inherit;touch-action:manipulation}input[type=checkbox],input[type=range],input[type=color]{background-color:#0000}button{border:1px solid var(--line);cursor:pointer;border-radius:4px;padding:4px 10px;transition:background-color .12s,border-color .12s}button:hover:not(:disabled){background-color:color-mix(in srgb, var(--fg) 8%, var(--panel));border-color:color-mix(in srgb, var(--fg) 40%, var(--line))}button:active:not(:disabled){background-color:color-mix(in srgb, var(--fg) 16%, var(--panel))}button:disabled{opacity:.5;cursor:default}select:hover,input:hover:not([type=range]):not([type=checkbox]){border-color:color-mix(in srgb, var(--fg) 40%, var(--line))}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip-link{z-index:10;background:var(--panel);border:2px solid var(--accent);color:var(--fg);border-radius:4px;padding:6px 10px;position:absolute;top:-60px;left:8px}.skip-link:focus{top:8px}.side h1{margin:0;font-size:17px}.pen .panel-title{grid-column:1/-1;margin:0;font-size:14px}.pen .pen-title{margin:0;font-size:14px}.pen .reg-title{opacity:.7;grid-column:1/-1;margin:4px 0 0;font-size:12px;font-weight:600}.pen label,.pen small,.undo-bar,.compare-fig figcaption{font-variant-numeric:tabular-nums}.main:focus{outline:none}.undo-bar{border:1px solid var(--accent);border-radius:6px;flex-wrap:wrap;align-items:center;gap:6px;padding:6px 8px;font-size:13px;display:flex}.compare,.compare .origin-dot{-webkit-user-select:none;user-select:none}.compare .origin-dot{padding:0}.compare .origin-dot:focus-visible{outline:3px solid var(--accent);outline-offset:2px}[hidden]{display:none!important}.tabs{border-bottom:1px solid var(--line);background:var(--panel);gap:0;display:flex}.tab{background:0 0;border:0;border-bottom:3px solid #0000;border-radius:0;flex:1;padding:12px 8px;font-weight:600}.tab.active{border-bottom-color:var(--accent)}.app.narrow{flex-direction:column;height:100dvh;display:flex}.app.narrow .side,.app.narrow .main{border-right:0;flex:1 1 0;min-height:0;overflow:auto}.app.narrow .main{padding:12px}.app.narrow .compare-fig{width:100%}.app.narrow .compare,.app.narrow .paper,.app.narrow .zoom-view{width:100%;max-width:100%}.app.narrow .notice{flex:none}@media (width<=800px){.pen input[type=number],select,input[type=text]{font-size:16px}}.tab.active,.tab.active:hover:not(:disabled){border-bottom-color:var(--accent)}.tab:not(.active):hover:not(:disabled){border-bottom-color:var(--line)}.group{border:1px solid var(--line);background:var(--panel);border-radius:6px;scroll-margin-top:4px}.group-title{align-items:center;margin:0;font-size:14px;display:flex}.group-title button:first-child{flex:1;min-width:0}.group-title .pin{opacity:.6;border-radius:10px;flex:none;width:auto;margin-right:6px;padding:3px 9px;font-size:12px;line-height:1.4}.group-title .pin:hover{opacity:1}.group-title .pin[aria-pressed=true]{opacity:1;background:color-mix(in srgb, var(--accent,#1f5fbf) 18%, transparent);font-weight:600}.side-resize{top:0;bottom:0;left:calc(var(--side-w) - 3px);cursor:col-resize;z-index:5;touch-action:none;width:7px;position:fixed}.side-resize:hover,.side-resize:active{background:color-mix(in srgb, var(--fg) 18%, transparent)}.side-resize:focus-visible{outline-offset:-2px;outline:2px solid #1f5fbf}.group-title button{text-align:left;background:0 0;border:0;border-radius:6px;align-items:center;gap:8px;width:100%;padding:10px 12px;font-weight:600;display:flex}.group-title button:focus-visible{outline-offset:-2px}.chevron{width:1em;transition:transform .12s;display:inline-block}.group-title button[aria-expanded=true] .chevron{transform:rotate(90deg)}.group .pen.group-body{border:0;border-top:1px solid var(--line);background:0 0;border-radius:0;padding:10px 12px 12px}.group .swatch{flex:none}@media (prefers-reduced-motion:reduce){.chevron{transition:none}}.about-link{margin:-6px 0 0;font-size:13px}.about-link a{color:var(--accent)}@media (width<=800px){input[type=file][name=photo]{box-sizing:border-box;border:2px dashed var(--line);background:var(--panel);border-radius:12px;width:100%;padding:10px;font-size:16px}input[type=file][name=photo]::file-selector-button{background:var(--accent);color:#fff;min-height:52px;font:inherit;cursor:pointer;border:0;border-radius:10px;margin-right:14px;padding:12px 22px;font-size:17px;font-weight:600}input[type=file][name=photo]:hover::file-selector-button{filter:brightness(1.08)}}.scrub{border:1px solid var(--line);background:var(--panel);border-radius:4px;align-items:center;gap:2px;padding:0 2px 0 0;display:inline-flex}.scrub:focus-within{border-color:var(--accent,#1f5fbf)}.scrub input{font-variant-numeric:tabular-nums;text-align:right;background:0 0;border:0;width:4.6em;padding:3px 4px}.scrub input:focus-visible{outline:none}.scrub-suffix{opacity:.65;font-size:11px}.scrub-grip{cursor:ew-resize;opacity:.45;-webkit-user-select:none;user-select:none;touch-action:none;padding:2px 4px;font-size:11px}.scrub-grip:hover{opacity:1}.pills{border:1px solid var(--line);background:var(--panel);border-radius:5px;gap:2px;padding:2px;display:inline-flex}.pills .pill{font-variant-numeric:tabular-nums;opacity:.75;background:0 0;border:0;border-radius:3px;padding:3px 9px;font-size:12px}.pills .pill.active{background:color-mix(in srgb, var(--accent,#1f5fbf) 18%, transparent);opacity:1;font-weight:600}.pills .pill:focus-visible,.shape-tile:focus-visible,.dial:focus-visible{outline:2px solid var(--accent,#1f5fbf);outline-offset:1px}.dial{cursor:pointer;touch-action:none}.dial-face{fill:var(--panel);stroke:var(--accent,#1f5fbf);stroke-width:1.5px}.dial-line{stroke:var(--accent,#1f5fbf);stroke-width:2px;stroke-linecap:round}.shape-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;display:grid}.shape-tile{border-radius:5px;flex-direction:column;align-items:center;gap:3px;padding:6px 2px 4px;font-size:11px;display:flex}.shape-tile svg{fill:none;stroke:currentColor;stroke-width:1.5px;opacity:.7;width:28px;height:16px}.shape-tile.active{border-color:var(--accent,#1f5fbf);background:color-mix(in srgb, var(--accent,#1f5fbf) 14%, transparent)}.shape-tile.active svg{opacity:1;stroke:var(--accent,#1f5fbf)}.gallery.pen .row{flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:8px;display:flex}.gallery.pen .row>span:first-child{min-width:4.5em}.gallery.pen .row input[type=range]{flex:8em}.drop-hint{opacity:.7;margin:2px 0 0;font-size:12px}.starters{gap:6px;display:flex}.starter{flex:1;justify-content:center;align-items:center;gap:6px;display:inline-flex}.preset-pick{align-items:center;gap:8px;display:flex}.preset-pick select{flex:1;min-width:0}.intake-msg{opacity:.85;min-height:1.2em;margin:0;font-size:12px}.intake-msg:empty{display:none}.drop-overlay{z-index:50;background:color-mix(in srgb, var(--bg) 82%, transparent);border:3px dashed var(--accent,#1f5fbf);pointer-events:none;justify-content:center;align-items:center;font-size:20px;font-weight:600;display:flex;position:fixed;inset:0}.side{gap:0;padding:0;overflow:hidden}.app.narrow .side{overflow:hidden}.side-head{border-bottom:1px solid var(--line);flex-direction:column;flex:none;gap:8px;padding:12px 14px 10px;display:flex}.brand-row{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.brand-row h1{margin:0;font-size:16px}.brand-row .about-link{margin:0;font-size:13px}.side-scroll{flex-direction:column;flex:auto;gap:8px;min-height:0;padding:10px 14px;display:flex;overflow:auto}.side-foot{border-top:1px solid var(--line);background:var(--panel);flex-direction:column;flex:none;gap:6px;padding:8px 14px;font-size:12px;display:flex}.foot-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.foot-error{color:var(--error,#b00020)}.export-links{opacity:.95;align-items:center;gap:4px;display:inline-flex}.export-links .link,.png-pick button{color:var(--accent,#1f5fbf);background:0 0;border:0;padding:2px 6px;font-weight:500}.export-links .link:hover:not(:disabled){text-decoration:underline}.export-links .link:disabled{color:inherit;opacity:.4;cursor:default}.png-pick{flex-wrap:wrap;gap:6px;display:flex}.png-pick button{border:1px solid var(--line);border-radius:5px;padding:3px 8px}.png-pick small{opacity:.7;font-weight:400}.group-body.rows{border-top:1px solid var(--line);flex-direction:column;gap:9px;padding:10px 12px 12px;display:flex}.group-title .group-name{flex:none}.group-badge{opacity:.7;border:1px solid var(--line);text-overflow:ellipsis;white-space:nowrap;border-radius:10px;max-width:60%;margin-left:auto;padding:1px 8px;font:11px ui-monospace,SFMono-Regular,Menlo,monospace;overflow:hidden}.row{grid-template-columns:6.6em minmax(0,1fr);align-items:center;gap:3px 8px;display:grid}.row-label{opacity:.75;font-size:12px}.row-body{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.row-body select,.row-body input[type=text]:not(.scrub input){min-width:0;max-width:100%}.row-body input[type=range]{flex:7em;min-width:5em}.row-hint{opacity:.65;grid-column:2;font-size:11px;line-height:1.35}.row-note{opacity:.75;font-size:12px;line-height:1.4}.sub-title{border-top:1px dashed var(--line);text-transform:uppercase;letter-spacing:.06em;opacity:.8;margin:6px 0 0;padding-top:8px;font-size:12px}.sub-section{border-top:1px dashed var(--line);flex-direction:column;gap:9px;padding-top:9px;display:flex}.count{opacity:.8;font:12px ui-monospace,SFMono-Regular,Menlo,monospace}.tag{border:1px solid var(--line);opacity:.8;border-radius:8px;padding:0 6px;font-size:11px}.link-btn{color:var(--accent,#1f5fbf);background:0 0;border:0;align-self:flex-start;padding:2px 0}.link-btn:hover:not(:disabled){text-decoration:underline}.link-btn:disabled{opacity:.45}.seed{border:1px solid var(--line);border-radius:4px;padding:2px 6px;font:12px ui-monospace,SFMono-Regular,Menlo,monospace}details.more{border-top:1px dashed var(--line);flex-direction:column;gap:9px;padding-top:8px;display:flex}details.more>summary{cursor:pointer;opacity:.8;margin-bottom:6px;font-size:12px}details.more[open]{gap:9px}details.more>.row{margin-top:9px}.swatches{gap:5px;display:inline-flex}.chip{border:1px solid var(--line);border-radius:50%;width:22px;height:22px;padding:0}.chip.active{outline:2px solid var(--accent,#1f5fbf);outline-offset:1px}.hex{width:6.4em;font:12px ui-monospace,SFMono-Regular,Menlo,monospace}.pen-rack{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.pen-card{border:1px solid var(--line);background:var(--panel);border-radius:6px}.pen-card.drag-over{outline:2px dashed var(--accent,#1f5fbf)}.pen-card.hidden-pen .pen-name,.pen-card.hidden-pen .pen-meta{opacity:.5}.pen-row{align-items:center;gap:6px;padding:5px 8px;display:flex}.drag-handle{cursor:grab;opacity:.55;touch-action:none;background:0 0;border:0;padding:2px 3px}.drag-handle:hover,.drag-handle:focus-visible{opacity:1}.eye{opacity:.85;background:0 0;border:0;padding:2px;display:inline-flex}.eye[aria-pressed=false]{opacity:.45}.pen-swatch{border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:4px;flex:none;width:22px;height:22px;padding:0}.pen-summary{text-align:left;background:0 0;border:0;flex:1;align-items:baseline;gap:8px;min-width:0;padding:3px 2px;display:flex}.pen-name{white-space:nowrap;font-size:12px;font-weight:600}.pen-meta{opacity:.7;text-overflow:ellipsis;white-space:nowrap;font:11px ui-monospace,SFMono-Regular,Menlo,monospace;overflow:hidden}.pen-drawer{border-top:1px solid var(--line);flex-direction:column;gap:9px;padding:9px 10px 10px;display:flex}@media (width<=800px){.side-scroll{padding-bottom:14px}}.pills .pill,.pill{white-space:nowrap}.pen-angle{opacity:.75;white-space:nowrap;flex:none;margin-left:auto;font:11px ui-monospace,SFMono-Regular,Menlo,monospace}.pen-meta{flex:0 auto}.canvas-bar{z-index:3;background:color-mix(in srgb, var(--panel) 88%, transparent);border:1px solid var(--line);border-radius:6px;align-items:center;gap:4px;padding:3px 5px;font-size:12px;display:flex;position:absolute;top:8px;right:8px}.canvas-bar span{text-align:center;font-variant-numeric:tabular-nums;min-width:3.2em}.canvas-bar button{padding:2px 8px}.canvas-bar button[aria-pressed=true]{background:color-mix(in srgb, var(--accent,#1f5fbf) 20%, transparent);font-weight:600}.vignette-dot{background:#fff;border-radius:3px}.compare .orig-view{position:absolute;overflow:hidden}.master-dot{background:#fff;border-color:#111;width:20px;height:20px;margin:-10px 0 0 -10px}.starters-label{opacity:.7;margin:2px 0 -2px;font-size:12px}
