:root,[data-theme=light]{--canvas-bg:#f5f0e8;--dot-color:rgba(0,0,0,.13);--dot-hover-color:#111;--anchor-color:#b1dc31;--segment-color:#111;--preview-color:#888;--eraser-highlight:#ff2d55;--toolbar-bg:#111;--toolbar-text:#f5f0e8;--accent:#c8f542;--accent-hover:#d4ff57;--border:2.5px solid #111;--shadow:3px 3px 0 #111;--gallery-bg:#111;--gallery-text:#f5f0e8;--gallery-text-secondary:#888;--gallery-border:hsla(0,0%,100%,.06);--gallery-card-bg:#f5f0e8;--gallery-card-border:rgba(0,0,0,.06);--gallery-btn-border:hsla(0,0%,100%,.15);--gallery-btn-border-hover:hsla(0,0%,100%,.3);--gallery-empty:rgba(0,0,0,.15);--gallery-dots-bg:rgba(0,0,0,.06);--gallery-dots-color:rgba(0,0,0,.35);--gallery-input-border:hsla(0,0%,100%,.2);--gallery-close:hsla(0,0%,100%,.4);--gallery-close-hover:#fff;--gallery-thumbnail-stroke:#111;--gallery-active-border:hsla(0,0%,100%,.3);--help-bg:#111;--help-text:#f5f0e8;--help-text-secondary:#ccc;--help-section-title:#666;--help-gesture:#666;--help-separator:#333;--help-close:#444;--help-divider:#1e1e1e;--help-footer:#444;--help-kbd-bg:#1a1a1a;--help-kbd-border:#2a2a2a;--help-kbd-text:#999}[data-theme=dark]{--canvas-bg:#171717;--dot-color:#262626;--dot-hover-color:#a9a9a9;--anchor-color:#b1dc31;--segment-color:#c1bebb;--preview-color:#666;--eraser-highlight:#ff2d55;--toolbar-bg:#111;--toolbar-text:#f5f0e8;--accent:#c8f542;--accent-hover:#d4ff57;--border:2.5px solid #333;--shadow:3px 3px 0 #000;--gallery-bg:#1a1a1a;--gallery-text:#f5f0e8;--gallery-text-secondary:#666;--gallery-border:hsla(0,0%,100%,.06);--gallery-card-bg:#262626;--gallery-card-border:hsla(0,0%,100%,.05);--gallery-btn-border:hsla(0,0%,100%,.15);--gallery-btn-border-hover:hsla(0,0%,100%,.3);--gallery-empty:hsla(0,0%,100%,.15);--gallery-dots-bg:rgba(0,0,0,.5);--gallery-dots-color:hsla(0,0%,100%,.4);--gallery-input-border:hsla(0,0%,100%,.2);--gallery-close:hsla(0,0%,100%,.3);--gallery-close-hover:hsla(0,0%,100%,.8);--gallery-thumbnail-stroke:#c1bebb;--gallery-active-border:hsla(0,0%,100%,.2);--help-bg:#1a1a1a;--help-text:#f5f0e8;--help-text-secondary:#bbb;--help-section-title:#777;--help-gesture:#777;--help-separator:#444;--help-close:#555;--help-divider:#2a2a2a;--help-footer:#555;--help-kbd-bg:#262626;--help-kbd-border:#333;--help-kbd-text:#aaa}*{margin:0;padding:0;box-sizing:border-box}body,html{height:100%;overflow:hidden;background:var(--canvas-bg);font-family:IBM Plex Sans,sans-serif;color:#111;cursor:crosshair}@keyframes onboarding-draw-line{0%,10%{stroke-dashoffset:120}50%{stroke-dashoffset:0}80%,to{stroke-dashoffset:0}}@keyframes onboarding-draw-arc{0%,10%{stroke-dashoffset:190}55%{stroke-dashoffset:0}80%,to{stroke-dashoffset:0}}@keyframes onboarding-pulse{0%,to{r:6;opacity:.3}50%{r:10;opacity:0}}@keyframes onboarding-erase-highlight{0%,30%{opacity:0}40%,55%{opacity:.45}60%,to{opacity:0}}@keyframes onboarding-erase-line{0%,55%{opacity:1}60%,90%{opacity:0}95%,to{opacity:1}}@keyframes onboarding-mirror-draw{0%,10%{stroke-dashoffset:120}55%{stroke-dashoffset:0}80%,to{stroke-dashoffset:0}}.onboarding-line-anim{animation:onboarding-draw-line 2.5s ease-in-out infinite}.onboarding-arc-anim{animation:onboarding-draw-arc 3s ease-in-out infinite}.onboarding-pulse{animation:onboarding-pulse 2s ease-in-out infinite}.onboarding-erase-highlight{opacity:0;animation:onboarding-erase-highlight 3s ease-in-out infinite}.onboarding-erase-line{animation:onboarding-erase-line 3s ease-in-out infinite}.onboarding-mirror-left-anim,.onboarding-mirror-right-anim{animation:onboarding-mirror-draw 3s ease-in-out infinite}@keyframes replay-draw{to{stroke-dashoffset:0}}@keyframes replay-dot-pop{to{opacity:1}}svg#canvas{position:fixed;inset:0;width:100vw;height:100dvh;background:var(--canvas-bg);touch-action:none}.preview-march{animation:march .4s linear infinite}@keyframes march{to{stroke-dashoffset:-18}}.toolbar{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);z-index:100;background:var(--toolbar-bg);border:var(--border);border-radius:14px;padding:5px 0;-webkit-user-select:none;-moz-user-select:none;user-select:none;touch-action:manipulation;cursor:-webkit-grab;cursor:grab;max-width:calc(100vw - 32px)}.toolbar-dragging{cursor:-webkit-grabbing;cursor:grabbing}.toolbar-scroll{display:flex;align-items:center;gap:2px;padding:0 6px}.toolbar-fade{display:none}@media only screen and (max-width:767px){.toolbar-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.toolbar-scroll::-webkit-scrollbar{display:none}.toolbar-fade{display:block;position:absolute;top:0;bottom:0;width:12px;pointer-events:none;z-index:2;opacity:0;transition:opacity .15s}.toolbar-fade.visible{opacity:1}.toolbar-fade-left{left:0;background:linear-gradient(to right,var(--toolbar-bg),transparent);border-radius:14px 0 0 14px}.toolbar-fade-right{right:0;background:linear-gradient(to left,var(--toolbar-bg),transparent);border-radius:0 14px 14px 0}}.tool-btn{flex-shrink:0;width:34px;height:34px;border:2.5px solid transparent;background:transparent;border-radius:10px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--toolbar-text);transition:all .1s}.tool-btn:hover{background:hsla(0,0%,100%,.08)}.tool-btn.active{background:var(--accent);color:#111;border-color:#111;box-shadow:1px 1px 0 rgba(0,0,0,.3)}.toolbar-sep{flex-shrink:0;width:2px;height:22px;background:hsla(0,0%,100%,.12);margin:0 4px;border-radius:1px}.stroke-control{flex-shrink:0;gap:0;margin:0 2px}.stroke-btn,.stroke-control{display:flex;align-items:center}.stroke-btn{width:28px;height:28px;border:none;background:transparent;color:var(--toolbar-text);cursor:pointer;justify-content:center;border-radius:6px;font-size:14px;font-family:IBM Plex Sans,sans-serif;font-weight:500;transition:background .1s}.stroke-btn:hover{background:hsla(0,0%,100%,.1)}.stroke-value{font-family:IBM Plex Sans,sans-serif;font-size:14px;font-weight:500;min-width:22px;text-align:center;line-height:1}.stroke-value,.undo-btn{color:var(--toolbar-text)}.undo-btn{flex-shrink:0;width:38px;height:38px;border:2.5px solid transparent;background:transparent;border-radius:10px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .1s}.undo-btn:hover{background:hsla(0,0%,100%,.08)}.undo-btn:active{background:var(--accent);color:#111}.confirm-modal-cancel,.confirm-modal-confirm{flex:1 1;padding:10px 20px;border-radius:12px;font-family:IBM Plex Sans,sans-serif;font-size:14px;cursor:pointer;transition:all .1s}.confirm-modal-cancel{background:transparent;border:1px solid #333;color:#888}.confirm-modal-cancel:hover{border-color:#555}.confirm-modal-confirm{background:var(--accent);border:none;color:#111;font-weight:500}.confirm-modal-confirm:hover{background:var(--accent-hover)}.help-dialog-card{scrollbar-width:none}.help-dialog-card::-webkit-scrollbar{display:none}.help-kbd{display:inline-block;font-family:IBM Plex Sans,sans-serif;font-size:10px;font-weight:500;color:var(--help-kbd-text);background:var(--help-kbd-bg);border:1px solid var(--help-kbd-border);border-radius:5px;padding:2px 6px;line-height:1.4;min-width:20px;text-align:center}