:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;-webkit-text-size-adjust:100%;--desk:#e7e1d5;--tray:#fffdf8;--tray-hover:#f3eee4;--tray-edge:#3c2d1e24;--ink:#1f1b16;--muted:#7a7064;--accent:#e4572e;--accent-soft:#fbe3d9;--shadow:0 1px 0 #fffc inset, 0 10px 30px -10px #3c281459, 0 2px 6px #3c28141f;--spring:cubic-bezier(.34, 1.56, .64, 1);--ease-out:cubic-bezier(.2, .8, .2, 1);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang TC,Microsoft JhengHei,sans-serif}:lang(zh-Hans){font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}:lang(ja){font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Hiragino Sans,Yu Gothic,sans-serif}:lang(ko){font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Apple SD Gothic Neo,Malgun Gothic,sans-serif}*{box-sizing:border-box}html,body,#app{overscroll-behavior:none;width:100%;height:100%;margin:0;padding:0;overflow:hidden}body{background:var(--desk);color:var(--ink)}.intro{max-width:34rem;margin:0 auto;padding:15vh 24px 0;font-family:system-ui,sans-serif;line-height:1.5}button{font:inherit;color:inherit;-webkit-tap-highlight-color:transparent;transition:transform .18s var(--spring), background-color .12s}button:active:not(:disabled){transform:scale(.9)}button:focus-visible,input:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;width:100dvw;height:100dvh;position:fixed;inset:0;overflow:hidden}.stage{background:var(--desk) radial-gradient(#3c2d1e1a 1px, transparent 1.2px) 0 0 / 18px 18px;touch-action:none;position:absolute;inset:0;overflow:hidden}.paper{transform-origin:0 0;will-change:transform;background:#fff;position:absolute;top:0;left:0;overflow:hidden;box-shadow:0 12px 40px -12px #3c281459}.paper-canvas{width:100%;height:100%;display:block;position:absolute;top:0;left:0}.paper.wiping{animation:wipe .36s var(--ease-out)}.symmetry-guide{pointer-events:none;border-left:1.5px dashed #e4572e99;position:absolute;top:0;bottom:0;left:50%}.symmetry-guide.horizontal{border-top:1.5px dashed #e4572e99;border-left:0;inset:50% 0 auto}.symmetry-guide.diagonal{border-top:1.5px dashed #e4572e99;border-left:0;width:400%;top:50%;bottom:auto;left:50%;transform:translate(-50%)rotate(45deg)}.symmetry-guide.diagonal.back{transform:translate(-50%)rotate(-45deg)}.brush-cursor{z-index:12;pointer-events:none;will-change:transform, width, height;border-radius:50%;position:fixed;top:0;left:0;box-shadow:0 0 0 1px #fff,0 0 0 2px #1f1b16cc}.stage.cursor-none{cursor:none}.stage.pan-ready{cursor:grab}.stage.tool-fill{cursor:crosshair}.app.drawing .toolbar-group,.app.drawing .panel{opacity:.25;pointer-events:none;transition:opacity .2s var(--ease-out) .15s}.toolbar{top:calc(8px + env(safe-area-inset-top));left:calc(8px + env(safe-area-inset-left));right:calc(8px + env(safe-area-inset-right));z-index:10;pointer-events:none;flex-wrap:wrap;justify-content:space-between;row-gap:8px;display:flex;position:fixed}.toolbar-group:last-child{margin-left:auto}@media (width>=720px){.toolbar{grid-template-columns:1fr auto 1fr;align-items:start;display:grid}.toolbar-group:first-child{justify-self:start}.toolbar-group:last-child{justify-self:end}}.toolbar-group{border:1px solid var(--tray-edge);background:var(--tray);box-shadow:var(--shadow);pointer-events:auto;animation:toolbar-in .42s var(--ease-out) backwards;transition:opacity .16s var(--ease-out);border-radius:16px;gap:2px;padding:4px;display:flex}.icon-button{width:44px;height:44px;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:12px;justify-content:center;align-items:center;padding:0;display:flex}.icon-button:hover:not(:disabled){background:var(--tray-hover)}.icon-button:disabled{opacity:.32;cursor:default}.icon-button svg{display:block}.icon-rock,.export-icon{display:flex}.icon-rock.play.undo{animation:rock-left .32s var(--spring)}.icon-rock.play.redo{animation:rock-right .32s var(--spring)}.export-icon.pop{animation:pop-check .26s var(--spring)}.icon-button.done,.icon-button.done:hover:not(:disabled){background:var(--accent-soft)}.icon-button.symmetry-on,.icon-button.symmetry-on:hover:not(:disabled){background:var(--accent-soft);color:var(--accent)}.symmetry-button{position:relative}.symmetry-badge{width:14px;height:14px;color:var(--ink);background:#fff;border-radius:50%;justify-content:center;align-items:center;font-size:10px;line-height:1;display:flex;position:absolute;bottom:-2px;right:-2px;box-shadow:0 1px 2px #3c281440}.photo-line-button{background:var(--accent);color:#fff;white-space:nowrap;cursor:pointer;height:44px;transition:background-color .16s var(--ease-out), transform .16s var(--spring);border:0;border-radius:12px;align-items:center;gap:7px;margin-right:4px;padding:0 10px 0 9px;font-size:14px;font-weight:600;display:flex;position:relative}.photo-line-button:hover{background:#d14b25}.photo-line-button:active{transform:scale(.96)}.photo-line-button svg{display:block}.photo-line-button.is-new{animation:photo-line-glow 2.4s var(--ease-out) .6s infinite}.ai-tag{height:16px;color:var(--accent);letter-spacing:.04em;background:#fff;border-radius:6px;align-items:center;padding:0 5px;font-size:10px;font-weight:700;line-height:1;display:inline-flex}@keyframes photo-line-glow{0%{box-shadow:0 0 #e4572e8c}70%,to{box-shadow:0 0 0 10px #e4572e00}}@media (width<=430px){.toolbar-group{padding:3px}.toolbar .icon-button,.toolbar .photo-line-button{width:40px}}@media (width<=719px){.photo-line-button{justify-content:center;width:44px;margin-right:0;padding:0}.photo-line-label{display:none}.photo-line-button .ai-tag{height:14px;padding:0 4px;font-size:9px;position:absolute;top:-5px;right:-5px;box-shadow:0 1px 3px #3c28144d}}@media (prefers-reduced-motion:reduce){.photo-line-button.is-new{animation:none}}.popover{z-index:20;border:1px solid var(--tray-edge);background:var(--tray);max-height:calc(100dvh - 140px);box-shadow:var(--shadow);animation:menu-in .22s var(--ease-out);border-radius:18px;outline:none;flex-direction:column;display:flex;position:fixed;overflow-y:auto}.popover-list{flex-direction:column;gap:2px;display:flex}.popover-row{width:100%;min-height:42px;color:var(--ink);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:10px;justify-content:space-between;align-items:center;gap:10px;padding:0 10px;font-size:14px;text-decoration:none;display:flex}.popover-row:hover:not(:disabled){background:var(--tray-hover)}.popover-row:disabled{opacity:.45;cursor:default}.popover-row svg{flex:none}.popover-row-text{flex-direction:column;flex:auto;min-width:0;display:flex}.popover-row-text small{color:var(--muted);font-size:11px}.legal-links{color:var(--muted);text-align:center;margin:6px 0 2px;font-size:12px}.legal-links a{color:inherit}.toggle{width:34px;height:20px;transition:background-color .16s var(--ease-out);background:#e3dbcd;border-radius:999px;flex:none;position:relative}.toggle:after{content:"";width:16px;height:16px;transition:transform .2s var(--spring);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #3c28144d}.popover-row[aria-pressed=true] .toggle{background:var(--accent)}.popover-row[aria-pressed=true] .toggle:after{transform:translate(14px)}.popover-select{border:1px solid var(--tray-edge);background:var(--tray);max-width:50%;height:30px;color:var(--ink);font:inherit;border-radius:8px;flex:none;padding:0 6px;font-size:13px}.clear-row{color:var(--accent);margin-top:4px}.clear-row.confirming,.clear-row.confirming:hover:not(:disabled){background:var(--accent);color:#fff}.paper-colours{gap:6px;display:flex}.paper-colour{border:1px solid var(--tray-edge);height:34px;color:var(--ink);cursor:pointer;background:0 0;border-radius:10px;flex:1 1 0;justify-content:center;align-items:center;gap:6px;font-size:13px;display:flex}.paper-colour[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:600}.paper-colour-dot{border:1px solid var(--tray-edge);border-radius:50%;width:16px;height:16px}.pattern-choices{grid-template-columns:1fr 1fr;gap:8px;display:grid}.pattern-choice{border:1px solid var(--tray-edge);color:var(--ink);cursor:pointer;transition:transform .16s var(--spring), background-color .12s;background:0 0;border-radius:14px;flex-direction:column;align-items:center;gap:4px;padding:10px 6px 8px;font-size:13px;font-weight:600;display:flex}.pattern-choice:hover{background:var(--tray-hover)}.pattern-choice:active{transform:scale(.96)}.menu-hint{color:var(--muted);align-items:center;gap:6px;margin:0;font-size:12px;line-height:1.4;display:flex}.menu-hint svg{flex:none;width:16px;height:16px}.menu-section{flex-direction:column;gap:8px;padding:12px 14px;display:flex}.menu-section+.menu-section{border-top:1px solid var(--tray-edge)}.menu-heading{color:var(--muted);letter-spacing:.02em;margin:0;font-size:12px;font-weight:600}.menu-chips{flex-wrap:wrap;gap:6px;display:flex}.menu-chip{border:1px solid var(--tray-edge);height:30px;color:var(--ink);cursor:pointer;background:0 0;border-radius:999px;padding:0 10px;font-size:13px}.menu-chip.selected{background:var(--accent-soft);color:var(--accent);border-color:#0000;font-weight:600}.menu-paper-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.menu-segment{border:1px solid var(--tray-edge);border-radius:10px;padding:2px;display:flex}.menu-segment-button{min-width:44px;height:28px;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:8px;padding:0 10px;font-size:13px}.menu-segment-button.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.menu-segment-button:disabled{opacity:.4;cursor:default}.menu-muted{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.menu-action{border:1px solid var(--tray-edge);background:var(--tray-hover);width:100%;min-height:40px;color:var(--ink);cursor:pointer;border-radius:12px;padding:8px 12px;font-size:14px;line-height:1.3}.menu-action.confirming{background:var(--accent);color:#fff;border-color:#0000}@media (prefers-reduced-motion:reduce){.popover{animation:none}}.timelapse{z-index:30;padding:calc(24px + env(safe-area-inset-top)) calc(24px + env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) calc(24px + env(safe-area-inset-left));background:var(--desk) radial-gradient(#3c2d1e1a 1px, transparent 1.2px) 0 0 / 18px 18px;animation:timelapse-fade .2s var(--ease-out);touch-action:none;flex-direction:column;justify-content:center;align-items:center;gap:20px;display:flex;position:fixed;inset:0}.timelapse-stage{flex-direction:column;align-items:center;gap:12px;max-width:100%;display:flex}.timelapse-frame{max-width:calc(100vw - 140px);max-height:calc(100vh - 140px);animation:timelapse-pop .32s var(--spring);background:#fff;display:flex;position:relative;box-shadow:0 12px 40px -12px #3c281459}.timelapse-end-chip{background:var(--tray);color:var(--ink);white-space:nowrap;pointer-events:none;animation:timelapse-fade .2s var(--ease-out);border-radius:999px;padding:6px 14px;font-size:14px;line-height:1.2;position:absolute;bottom:12px;left:50%;transform:translate(-50%);box-shadow:0 2px 10px #3c281433}.timelapse-canvas{width:auto;max-width:calc(100vw - 140px);height:auto;max-height:calc(100vh - 140px);display:block}.timelapse-progress{background:#3c2d1e24;border-radius:2px;width:100%;height:4px;overflow:hidden}.timelapse-meter{align-items:center;gap:10px;width:100%;display:flex}.timelapse-meter .timelapse-progress{flex:auto;width:auto}.timelapse-time{color:var(--muted);font-variant-numeric:tabular-nums;flex:none;font-size:12px}.timelapse-progress-fill{background:var(--accent);border-radius:2px;height:100%;transition:width 80ms linear}.timelapse-actions{border:1px solid var(--tray-edge);background:var(--tray);box-shadow:var(--shadow);animation:timelapse-pop .32s var(--spring) 40ms backwards;border-radius:16px;gap:2px;padding:4px;display:flex}.timelapse-action{height:40px;color:var(--ink);white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:12px;padding:0 16px;font-size:14px}.timelapse-action:hover:not(:disabled){background:var(--tray-hover)}.timelapse-action:disabled{opacity:.5;cursor:default}.timelapse-action.primary{background:var(--accent);color:#fff}.timelapse-action.primary:hover:not(:disabled){background:#d14b25}.timelapse-action.confirming,.timelapse-action.confirming:hover:not(:disabled){background:var(--accent);color:#fff}@keyframes timelapse-fade{0%{opacity:0}to{opacity:1}}@keyframes timelapse-pop{0%{transform:scale(.96)}to{transform:scale(1)}}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.line-art{z-index:30;padding:calc(16px + env(safe-area-inset-top)) calc(16px + env(safe-area-inset-right)) calc(20px + env(safe-area-inset-bottom)) calc(16px + env(safe-area-inset-left));background:var(--desk) radial-gradient(#3c2d1e1a 1px, transparent 1.2px) 0 0 / 18px 18px;animation:timelapse-fade .2s var(--ease-out);flex-direction:column;align-items:center;gap:14px;display:flex;position:fixed;inset:0;overflow-y:auto}.line-art>*{width:min(560px,100%)}.line-art.dragging:after{content:"";border:3px dashed var(--accent);pointer-events:none;border-radius:24px;position:fixed;inset:10px}.line-art-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.line-art-title{align-items:center;gap:8px;margin:4px 0 2px;font-size:22px;line-height:1.2;display:flex}.line-art-title .ai-tag{background:var(--accent);color:#fff}.line-art-sub{color:var(--muted);margin:0;font-size:13px;line-height:1.4}.line-art-close{border:1px solid var(--tray-edge);background:var(--tray);width:40px;height:40px;color:var(--ink);cursor:pointer;border-radius:50%;flex:0 0 40px;font-size:24px;line-height:1}.line-art-drop{background:var(--tray);min-height:260px;max-height:420px;box-shadow:var(--shadow);color:var(--accent);cursor:pointer;animation:timelapse-pop .32s var(--spring);transition:background-color .16s var(--ease-out);border:2px dashed #e4572e80;border-radius:24px;flex-direction:column;flex:auto;justify-content:center;align-items:center;gap:10px;display:flex}.line-art-drop:hover{background:#fff7f2}.line-art-drop-label{background:var(--accent);color:#fff;border-radius:999px;padding:10px 22px;font-size:16px;font-weight:600}.line-art-drop-hint{color:var(--muted);font-size:13px}.line-art-stage{flex-direction:column;align-items:center;gap:10px;display:flex}.line-art-frame{max-width:100%;animation:timelapse-pop .32s var(--spring);border-radius:6px;display:grid;position:relative;overflow:hidden;box-shadow:0 12px 40px -12px #3c281459}.line-art-frame>canvas{grid-area:1/1;width:auto;max-width:100%;height:auto;max-height:min(52dvh,520px);display:block}.line-art-photo{transition:opacity .3s var(--ease-out), filter .3s var(--ease-out)}.line-art-photo.scanning{filter:grayscale(.7)brightness(1.08);opacity:.55}.line-art-photo.hidden{visibility:hidden}.line-art-preview{animation:timelapse-fade .4s var(--ease-out);cursor:grab;touch-action:none}.line-art-frame.comparing .line-art-preview{visibility:hidden}.line-art-hold{color:var(--muted);text-align:center;margin:0;font-size:12px}.line-art-scan{pointer-events:none;background:linear-gradient(#0000 0%,#e4572e00 40%,#e4572e59 50%,#e4572e00 60%,#0000 100%) 0 0/100% 220%;animation:1.6s ease-in-out infinite line-art-scan;position:absolute;inset:0}@keyframes line-art-scan{0%{background-position:0 100%}to{background-position:0 0}}.line-art-status{width:min(260px,100%);color:var(--ink);font-variant-numeric:tabular-nums;flex-direction:column;align-items:center;gap:6px;font-size:14px;display:flex}.line-art-bar{background:#3c2d1e24;border-radius:2px;width:100%;height:4px;overflow:hidden}.line-art-bar-fill{background:var(--accent);height:100%;transition:width .12s linear}.line-art-error{background:var(--accent-soft);color:#a3361a;border-radius:12px;margin:0;padding:10px 14px;font-size:14px}.line-art-controls{border:1px solid var(--tray-edge);background:var(--tray);box-shadow:var(--shadow);border-radius:18px;flex-direction:column;gap:10px;padding:12px 14px;display:flex}.line-art-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.line-art-row .menu-segment{flex-wrap:wrap;justify-content:flex-end}@media (width<=520px){.line-art-style-row{flex-direction:column;align-items:stretch;gap:6px}.line-art-style-row .menu-segment{grid-template-columns:repeat(3,1fr);display:grid}}.line-art-style-hint{color:var(--muted);text-align:right;margin:-4px 0 0;font-size:11px}.line-art-label{color:var(--muted);white-space:nowrap;font-size:13px}.line-art-hint{color:var(--muted);white-space:normal;opacity:.85;margin-top:2px;font-size:11px;display:block}.line-art-row .line-art-label:has(.line-art-hint){color:var(--ink);white-space:normal}.line-art-switch{width:20px;height:20px;accent-color:var(--accent);flex:none}.line-art-slider{max-width:260px;accent-color:var(--accent);flex:auto}.line-art-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.line-art-actions .primary{font-weight:600}.line-art-note{color:var(--muted);text-align:right;margin:0;font-size:12px}@media (prefers-reduced-motion:reduce){.line-art-scan{animation:none}}.placer{z-index:24;touch-action:none;position:absolute;inset:0}.placer-box{box-sizing:border-box;border:2px dashed var(--accent);cursor:move;touch-action:none;background:#ffffff26;position:absolute}.placer-box canvas{pointer-events:none;width:100%;height:100%;display:block}.placer-handle{background:var(--accent);cursor:nwse-resize;touch-action:none;border:2px solid #fff;border-radius:50%;width:24px;height:24px;position:absolute;bottom:-12px;right:-12px;box-shadow:0 2px 8px #3c281459}.placer-pill{z-index:36;background:var(--tray);box-shadow:var(--shadow);white-space:nowrap;touch-action:none;border-radius:999px;gap:6px;padding:4px;display:flex;position:fixed;left:50%;transform:translate(-50%)}.placer-pill .primary{font-weight:600}.text-panel{left:calc(12px + env(safe-area-inset-left));right:calc(12px + env(safe-area-inset-right));z-index:36;border:1px solid var(--tray-edge);background:var(--tray);width:auto;max-width:820px;box-shadow:var(--shadow);border-radius:18px;flex-direction:column;gap:8px;margin-inline:auto;padding:10px;display:flex;position:fixed}.text-input{border:1px solid var(--tray-edge);width:100%;min-height:58px;color:var(--ink);font:inherit;resize:none;background:#fffdf8;border-radius:12px;padding:8px 10px;font-size:16px;line-height:1.35}.text-input:focus{outline:2px solid var(--accent);outline-offset:1px}.text-panel-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.text-border{color:var(--ink);align-items:center;gap:6px;font-size:13px;display:flex}.panel{left:calc(12px + env(safe-area-inset-left));right:calc(12px + env(safe-area-inset-right));bottom:calc(12px + env(safe-area-inset-bottom));z-index:10;border:1px solid var(--tray-edge);background:var(--tray);box-shadow:var(--shadow);touch-action:manipulation;animation:panel-in .42s var(--ease-out) 80ms backwards;transition:opacity .16s var(--ease-out);border-radius:22px;flex-direction:column;gap:10px;padding:12px 14px;display:flex;position:fixed}@media (width>=900px){.panel{width:min(820px,100vw - 24px);animation-name:panel-in-desktop;left:50%;right:auto;transform:translate(-50%)}}.color-bar{align-items:center;gap:10px;min-width:0;padding:0 2px;display:flex}.current-color{width:40px;height:40px;box-shadow:0 0 0 3px var(--tray), 0 0 0 4.5px var(--ink);cursor:pointer;background:0 0;border:0;border-radius:50%;flex:0 0 40px;padding:0;position:relative}.current-badge{width:14px;height:14px;color:var(--ink);background:#fff;border-radius:50%;justify-content:center;align-items:center;font-size:10px;line-height:1;display:flex;position:absolute;bottom:-2px;right:-2px;box-shadow:0 1px 2px #3c281440}.color-divider{background:var(--tray-edge);flex:0 0 1px;width:1px;height:26px}.swatches{overscroll-behavior-x:contain;scrollbar-width:none;touch-action:pan-x;flex:auto;align-items:center;gap:6px;min-width:0;margin:-10px 0;padding:14px 10px;display:flex;overflow:auto hidden;-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 10px calc(100% - 10px),#0000 100%);mask-image:linear-gradient(90deg,#0000 0,#000 10px calc(100% - 10px),#0000 100%)}.swatches::-webkit-scrollbar{display:none}.swatch{border:1px solid var(--tray-edge);cursor:pointer;background:0 0;border-radius:50%;flex:0 0 30px;width:30px;height:30px;padding:0;position:relative}.swatch.light{border-color:#d9d0c1}.swatch.selected{box-shadow:0 0 0 2px var(--tray), 0 0 0 3.5px var(--ink);animation:pop .26s var(--spring);border-color:#0000;transform:scale(1.12)}.swatch.selected:after{content:"";opacity:0;pointer-events:none;animation:swatch-ring .38s var(--ease-out);border:2px solid;border-radius:50%;position:absolute;inset:0}.swatch.recent{flex-basis:26px;width:26px;height:26px}.divider{background:var(--tray-edge);flex:0 0 1px;width:1px;height:22px;margin:0 2px}.color-input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.brush-bar{flex-direction:column;gap:10px;display:flex}.brush-line{align-items:center;gap:4px;display:flex}.settings-button{margin-right:4px;position:relative}.settings-button:after{content:"";background:var(--tray-edge);width:1px;position:absolute;top:12px;bottom:12px;right:-5px}.settings-button.open{background:var(--accent-soft);color:var(--accent)}.settings-button:disabled{opacity:.4;cursor:default}.settings-button .size-dot-box{height:24px}.brush-row{scroll-snap-type:x proximity;scrollbar-width:none;flex:auto;gap:4px;min-width:0;padding:6px 12px 2px;display:flex;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 12px calc(100% - 12px),#0000 100%);mask-image:linear-gradient(90deg,#0000 0,#000 12px calc(100% - 12px),#0000 100%)}.brush-row::-webkit-scrollbar{display:none}.brush-button{scroll-snap-align:center;min-width:0;height:58px;color:var(--ink);cursor:pointer;transition:transform .26s var(--spring), background-color .12s;background:0 0;border:0;border-radius:14px;flex-direction:column;flex:0 0 54px;justify-content:center;align-items:center;gap:2px;padding:4px 2px 2px;display:flex}.brush-button:hover{background:var(--tray-hover)}.brush-preview{width:44px;height:24px;display:block}.brush-icon{width:44px;height:24px;color:var(--ink);justify-content:center;align-items:center;display:flex}.brush-button.selected .brush-icon{color:var(--accent)}.brush-label{text-align:center;overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;width:100%;max-height:2.2em;font-size:10px;line-height:1.1;display:-webkit-box;overflow:hidden}.brush-button.selected{background:var(--accent-soft);transform:translateY(-4px);box-shadow:0 6px 14px -6px #e4572e73}.brush-button.selected .brush-label{color:var(--accent);font-weight:600}.brush-button.selected .brush-preview{animation:preview-draw .32s var(--ease-out)}.slider-row{grid-template-columns:1fr 1fr;gap:6px 20px;padding:0 2px;display:grid}.slider{min-width:0;color:var(--ink);align-items:center;gap:6px;font-size:12px;display:flex}.slider-label{white-space:nowrap;flex:none}.slider input[type=range]{appearance:none;cursor:pointer;background:0 0;flex:1 1 0;min-width:0;height:28px;margin:0}.slider input[type=range]:disabled{opacity:.4;cursor:default}.slider input[type=range]::-webkit-slider-runnable-track{background:#e3dbcd;border-radius:2px;height:4px}.slider input[type=range]::-webkit-slider-thumb{border:1.5px solid var(--ink);appearance:none;background:#fff;border-radius:50%;width:20px;height:20px;margin-top:-8px;box-shadow:0 2px 4px #3c281440}.slider input[type=range]::-moz-range-track{background:#e3dbcd;border-radius:2px;height:4px}.slider input[type=range]::-moz-range-thumb{border:1.5px solid var(--ink);background:#fff;border-radius:50%;width:20px;height:20px;box-shadow:0 2px 4px #3c281440}.slider.opacity input[type=range]::-webkit-slider-runnable-track{background-image:linear-gradient(to right, transparent, var(--slider-color)), repeating-conic-gradient(#d8cfc0 0% 25%, #fffdf8 0% 50%);background-size:auto,6px 6px}.slider.opacity input[type=range]::-moz-range-track{background-image:linear-gradient(to right, transparent, var(--slider-color)), repeating-conic-gradient(#d8cfc0 0% 25%, #fffdf8 0% 50%);background-size:auto,6px 6px}.slider-value{text-align:right;min-width:2.4em;color:var(--muted);font-variant-numeric:tabular-nums;flex:none}.outline-row{align-items:center}.outline-colour{min-width:0;color:var(--ink);align-items:center;gap:8px;font-size:12px;display:flex}.outline-current{border:2px solid var(--tray-edge);cursor:pointer;border-radius:50%;width:28px;height:28px;padding:0}.outline-quick{border:1px solid var(--tray-edge);cursor:pointer;border-radius:50%;width:22px;height:22px;padding:0}.outline-quick.dark{background:#1f1b16}.outline-quick.light{background:#fff}.size-dot-box{flex:0 0 28px;place-items:center;width:28px;height:28px;display:grid}.size-dot{min-width:2px;min-height:2px;transition:width .12s var(--ease-out), height .12s var(--ease-out);border-radius:50%;display:block}.toast{top:calc(66px + env(safe-area-inset-top));z-index:40;color:#fff;white-space:nowrap;pointer-events:none;max-width:calc(100vw - 32px);animation:toast-in .22s var(--spring);background:#1f1b16eb;border-radius:12px;padding:8px 14px;font-size:13px;line-height:1.4;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0003}.install-hint{top:calc(66px + env(safe-area-inset-top));z-index:35;color:#fff;white-space:normal;pointer-events:auto;width:max-content;max-width:min(420px,100vw - 24px);animation:toast-in .22s var(--spring);background:#1f1b16eb;border-radius:14px;align-items:center;gap:10px;padding:8px 8px 8px 12px;font-size:13px;line-height:1.4;display:flex;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0003}.install-hint-icon{border-radius:6px;flex:none;width:20px;height:20px}.install-hint-text{flex:auto;min-width:0}.install-hint-button{background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:999px;flex:none;min-height:36px;padding:0 12px;font-size:13px;font-weight:600}.install-hint-close{color:#fff;cursor:pointer;background:0 0;border:0;border-radius:999px;flex:none;width:36px;height:36px;font-size:18px;line-height:1}.loupe{z-index:25;width:64px;height:64px;box-shadow:0 0 0 4px #fff, 0 0 0 5px var(--ink), var(--shadow);pointer-events:none;transition:opacity .2s var(--ease-out);animation:loupe-pop .26s var(--spring);border-radius:50%;position:fixed}.loupe.leaving{opacity:0}@keyframes pop{0%{transform:scale(1)}40%{transform:scale(1.28)}to{transform:scale(1.12)}}@keyframes swatch-ring{0%{opacity:.6;transform:scale(1)}to{opacity:0;transform:scale(1.8)}}@keyframes preview-draw{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@keyframes rock-left{0%{transform:rotate(0)}40%{transform:rotate(-40deg)}to{transform:rotate(0)}}@keyframes rock-right{0%{transform:rotate(0)}40%{transform:rotate(40deg)}to{transform:rotate(0)}}@keyframes pop-check{0%{transform:scale(1)}40%{transform:scale(1.28)}to{transform:scale(1)}}@keyframes loupe-pop{0%{transform:scale(1)}40%{transform:scale(1.28)}to{transform:scale(1)}}@keyframes menu-in{0%{opacity:0;transform:translateY(-6px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,-12px)}to{opacity:1;transform:translate(-50%)}}@keyframes wipe{0%{opacity:1;scale:1}30%{opacity:.4;scale:.985}to{opacity:1;scale:1}}@keyframes toolbar-in{0%{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}@keyframes panel-in{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes panel-in-desktop{0%{opacity:0;transform:translate(-50%,24px)}to{opacity:1;transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}
