:root{--accent: #f0503c}[data-theme=dark]{--bg: #111214;--panel: #1a1b1e;--brd: #2c2d31;--ink: #e7e7e4;--muted: #7c7d81;--grid-line: #1c1d20;--faint: #2a2b2f}[data-theme=light]{--bg: #f3f3f1;--panel: #ffffff;--brd: #e4e4df;--ink: #17171a;--muted: #8b8b86;--grid-line: #e6e6e2;--faint: #dcdcd7}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Space Grotesk,IBM Plex Sans,system-ui,sans-serif;background:#e9e7e2;color:var(--ink)}button{font-family:inherit;cursor:pointer}.mono{font-family:IBM Plex Mono,monospace}.app-frame{position:relative;width:100%;height:100vh;height:100dvh;background:var(--bg);color:var(--ink);overflow:hidden}.projects-topbar{height:64px;padding:0 34px;border-bottom:1px solid var(--brd);display:flex;align-items:center;justify-content:space-between}.wordmark{font-weight:700;font-size:16px}.btn-primary{display:inline-flex;align-items:center;gap:8px;background:var(--accent);color:#fff;border:none;border-radius:10px;padding:9px 15px;font-weight:600;font-size:13px}.projects-screen{height:100%;display:flex;flex-direction:column}.projects-body{flex:1;min-height:0;overflow:auto;padding:30px 34px 34px}.projects-header-row{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:18px}.projects-header-row h1{font-size:20px;font-weight:700;letter-spacing:-.01em;margin:0}.projects-count{font-size:12.5px;color:var(--muted)}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px}.new-project-tile{height:186px;border:2px dashed var(--brd);background:transparent;border-radius:16px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--ink)}.new-project-tile .icon-square{width:46px;height:46px;border-radius:13px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:22px;line-height:1}.new-project-tile .label{font-weight:600;font-size:13.5px}.project-card{height:186px;border:1px solid var(--brd);background:var(--panel);border-radius:16px;overflow:hidden;display:flex;flex-direction:column;text-align:left;padding:0}.project-card-preview{flex:1;display:flex;align-items:center;justify-content:center;color:var(--ink);background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:26px 26px}.project-card-footer{padding:12px 15px;border-top:1px solid var(--brd);display:flex;align-items:center;justify-content:space-between}.project-card-name{font-weight:600;font-size:13.5px;color:var(--ink)}.project-card-meta{font-size:11.5px;color:var(--muted)}.project-card-count{font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--muted)}.editor-root{position:relative;height:100%;width:100%;overflow:hidden;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.editor-grid-bg{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:40px 40px;pointer-events:none}.editor-topbar{position:absolute;top:0;left:0;right:0;height:56px;padding:0 22px;display:flex;align-items:center;gap:10px;z-index:20}.chrome-btn{border:1px solid var(--brd);background:var(--panel);color:var(--ink);border-radius:9px;padding:7px 11px;font-weight:600;font-size:12px;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.chrome-btn.square{width:34px;height:34px;padding:0;justify-content:center}.editor-title{display:flex;align-items:baseline;gap:6px;margin-right:auto;min-width:0}.editor-title .title-main{font-weight:700;font-size:14px;color:var(--ink);flex-shrink:0}.editor-title .title-file{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:340px}.save-wrap{position:relative}.chrome-btn.dirty{border-color:var(--accent);color:var(--accent)}.unsaved-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);margin-left:2px}.saved-toast{position:absolute;top:calc(100% + 6px);left:0;background:var(--accent);color:#fff;font-weight:600;font-size:11px;padding:5px 10px;border-radius:999px;white-space:nowrap}.theme-segmented{display:inline-flex;padding:3px;background:var(--panel);border:1px solid var(--brd);border-radius:999px;gap:2px}.theme-segmented button{border:none;background:transparent;color:var(--muted);font-weight:600;font-size:12px;padding:6px 12px;border-radius:999px}.theme-segmented button.active{background:var(--ink);color:var(--bg)}.btn-accent-pill{background:var(--accent);color:#fff;border:none;border-radius:9px;padding:8px 14px;font-weight:600;font-size:12px}.glyph-stage{position:absolute;top:0;right:0;bottom:0;left:0;touch-action:none}.trace-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.artboard-rect{fill:none;stroke:var(--brd)}.reference-letter-svg{font-family:Pacifico,cursive;fill:var(--faint);-webkit-user-select:none;user-select:none}.trace-node.close-target{stroke-dasharray:3 2}.trace-node.selected{filter:drop-shadow(0 0 3px var(--accent))}.trace-node:hover{fill-opacity:.7}.handle-line{stroke:var(--muted)}.handle-knob{fill:var(--bg);stroke:var(--accent)}.handle-knob:hover{fill:var(--accent)}.corner-pill-row{position:absolute;left:50%;top:66px;transform:translate(-50%);white-space:nowrap;z-index:16}.corner-pill-joined{background:var(--panel);border:1px solid var(--brd);color:var(--muted);border-radius:22px;padding:7px 16px;font-size:12px}.corner-pill-open{display:inline-flex;align-items:center;gap:6px;background:var(--accent);color:#fff;border:none;border-radius:22px;padding:7px 16px;font-size:12px;font-weight:600;box-shadow:0 8px 22px -8px var(--accent)}@keyframes pulse{0%,to{opacity:.18}50%{opacity:.85}}.pulse-ring{animation:pulse 1.4s ease-in-out infinite}.floating-panel{position:absolute;background:var(--panel);border:1px solid var(--brd);border-radius:14px;box-shadow:0 12px 32px -12px #0009;z-index:15}.panel-grip{cursor:grab;text-align:center;color:var(--muted);font-size:12px;padding:6px 0 2px;letter-spacing:2px;-webkit-user-select:none;user-select:none}.floating-panel.docked .panel-grip{cursor:default;opacity:.4}.tool-dock{width:60px;padding-bottom:8px}.tool-dock .tool-btn{width:48px;margin:2px auto;display:flex;flex-direction:column;align-items:center;gap:4px;padding:7px 0;border:1px solid transparent;border-radius:9px;background:transparent;color:var(--muted);font-size:8px}.tool-dock .tool-btn.active{background:var(--bg);border:1px solid var(--accent);color:var(--accent)}.tool-dock .tool-divider{height:1px;background:var(--brd);margin:6px 8px}.tool-btn-wrap{position:relative}.tool-options-caret{position:absolute;right:4px;bottom:4px;width:14px;height:14px;padding:0;border:none;border-radius:4px;background:transparent;color:var(--muted);display:flex;align-items:center;justify-content:center}.tool-options-caret:hover{color:var(--accent)}.popover-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;z-index:24}.smooth-popover{position:absolute;z-index:25;width:190px;background:var(--panel);border:1px solid var(--brd);border-radius:12px;padding:12px;box-shadow:0 16px 40px -16px #0009}.smooth-popover-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.smooth-popover-label{font-size:12px;font-weight:600;color:var(--ink)}.smooth-popover-val{font-size:11px;color:var(--accent)}.smooth-popover input[type=range]{width:100%;accent-color:var(--accent)}.smooth-popover-hint{margin-top:8px;font-size:10.5px;line-height:1.4;color:var(--muted)}.zoom-panel{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:999px}.zoom-panel button{width:22px;height:22px;border-radius:999px;border:1px solid var(--brd);background:var(--bg);color:var(--ink);display:flex;align-items:center;justify-content:center;font-size:14px;line-height:1}.zoom-readout{font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--ink);min-width:40px;text-align:center}.zoom-divider{width:1px;height:18px;background:var(--brd)}.zoom-panel button.zoom-recenter{color:var(--muted)}.zoom-panel button.zoom-recenter:hover{color:var(--accent);border-color:var(--accent)}.glyph-strip{display:flex;align-items:center;gap:8px;padding:10px 12px}.glyph-cell{width:44px;height:52px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-family:Pacifico,cursive;font-size:20px;background:transparent}.glyph-cell.traced{border:1px solid var(--brd);color:var(--ink)}.glyph-cell.active{border:2px solid var(--accent)}.glyph-cell.untraced{border:1px dashed var(--brd);color:var(--muted)}.glyph-cell.add-cell{border:1px dashed var(--brd);color:var(--muted);font-family:Space Grotesk,sans-serif;font-size:10px;flex-direction:column;gap:2px}.glyph-cell-wrap{position:relative;line-height:0}.glyph-cell-wrap.is-hidden .glyph-cell{opacity:.4}.glyph-hide-toggle{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;border:1px solid var(--brd);background:var(--panel);color:var(--muted);display:flex;align-items:center;justify-content:center;padding:0;opacity:0;transition:opacity .12s}.glyph-cell-wrap:hover .glyph-hide-toggle,.glyph-cell-wrap.active .glyph-hide-toggle,.glyph-cell-wrap.is-hidden .glyph-hide-toggle{opacity:1}.glyph-hide-toggle:hover{color:var(--accent);border-color:var(--accent)}.glyph-hidden-chip{display:inline-flex;align-items:center;gap:4px;height:52px;padding:0 10px;border-radius:8px;border:1px dashed var(--brd);background:transparent;color:var(--muted);font-family:IBM Plex Mono,monospace;font-size:11px}.glyph-hidden-chip.active{border-style:solid;border-color:var(--accent);color:var(--accent)}.live-preview{background:var(--ink);color:var(--bg);padding:10px 16px 14px;min-width:140px;max-width:220px}.live-preview .panel-grip{color:var(--bg);opacity:.5}.live-preview-label{font-family:IBM Plex Mono,monospace;font-size:9px;letter-spacing:.1em;opacity:.55;margin-bottom:4px}.live-preview-word{font-family:Pacifico,cursive;font-size:28px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.overlay-scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:30}.overlay-card{background:var(--panel);border-radius:16px;padding:18px;color:var(--ink)}.overlay-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.overlay-card-header h2{font-size:15px;margin:0}.overlay-close{background:transparent;border:none;color:var(--muted);font-size:18px;line-height:1}.add-glyph-popover{width:360px;box-shadow:0 24px 60px -20px #000000b3;border-radius:16px}.letter-grid{display:grid;grid-template-columns:repeat(9,1fr);gap:6px}.letter-grid button{aspect-ratio:1;border:1px solid var(--brd);background:var(--bg);color:var(--ink);font-weight:600;font-size:12px;border-radius:6px}.popover-helper{margin-top:12px;font-size:11.5px;color:var(--muted)}.settings-modal{width:420px;border-radius:18px;box-shadow:0 30px 70px -24px #000000bf}.upgrade-modal{width:380px;border-radius:18px;box-shadow:0 30px 70px -24px #000000bf}.upgrade-copy{font-size:13px;line-height:1.55;color:var(--ink);margin:0 0 18px}.upgrade-actions{display:flex;gap:10px}.upgrade-actions .ghost-btn-full{flex:1}.upgrade-cta{flex:1;justify-content:center}.export-modal{width:400px;border-radius:18px;box-shadow:0 30px 70px -24px #000000bf}.export-copy{font-size:13px;line-height:1.6;color:var(--ink);margin:0 0 12px}.export-mail{color:var(--accent);font-weight:600;text-decoration:none}.export-mail:hover{text-decoration:underline}.export-actions{display:flex;gap:10px;margin-top:6px}.export-actions .ghost-btn-full{flex:1}.export-cta{flex:1;display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.confirm-modal{width:380px;border-radius:18px;box-shadow:0 30px 70px -24px #000000bf}.confirm-message{font-size:13px;line-height:1.55;color:var(--ink);margin:0 0 16px}.confirm-dontask{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--muted);margin-bottom:18px;cursor:pointer}.confirm-dontask input{accent-color:var(--accent)}.confirm-actions{display:flex;gap:10px}.confirm-actions .ghost-btn-full{flex:1}.confirm-cta{flex:1;justify-content:center}.ghost-btn-full.danger{border-color:#e5484d;color:#e5484d}.ghost-btn-full.danger:hover{background:#e5484d1a}.btn-primary.danger,.confirm-cta.danger{background:#e5484d}.settings-section{margin-bottom:18px}.settings-section-label{font-weight:600;font-size:11px;letter-spacing:.05em;color:var(--muted);margin-bottom:8px;text-transform:uppercase}.settings-note{margin:10px 2px 0;font-size:11.5px;line-height:1.5;color:var(--muted)}.settings-note strong{color:var(--ink);font-weight:600}.accent-swatches{display:flex;gap:10px}.accent-swatch{width:30px;height:30px;border-radius:50%;border:none;padding:0;position:relative}.accent-swatch.selected{box-shadow:0 0 0 2px var(--panel),0 0 0 4px var(--ink)}.toggle-row{display:flex;gap:10px}.toggle-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--brd);background:var(--bg);color:var(--ink);border-radius:9px;padding:9px;font-size:12.5px}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--muted)}.status-dot.on{background:var(--accent)}.segmented-full{display:flex;border:1px solid var(--brd);border-radius:9px;overflow:hidden}.segmented-full button{flex:1;border:none;background:var(--bg);color:var(--muted);padding:9px;font-size:12.5px;font-weight:600}.segmented-full button.active{background:var(--ink);color:var(--bg)}.ghost-btn-full{width:100%;border:1px solid var(--brd);background:transparent;color:var(--ink);border-radius:9px;padding:10px;font-size:12.5px;font-weight:600}.upload-screen{height:100%;display:flex;flex-direction:column;background:var(--bg);color:var(--ink)}.upload-body{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 40px 40px;overflow:auto}.upload-heading{font-size:20px;font-weight:700;letter-spacing:-.01em;margin:0 0 6px}.upload-sub{font-size:13px;color:var(--muted);margin:0 0 22px;text-align:center}.upload-dropzone{width:100%;max-width:480px;height:200px;border:2px dashed var(--brd);border-radius:16px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:border-color .15s,background .15s;overflow:hidden}.upload-dropzone:hover,.upload-dropzone.dragging{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,transparent)}.upload-dropzone.has-image{border-style:solid;border-color:var(--brd)}.upload-dropzone-inner{display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:none}.upload-icon-wrap{color:var(--muted);margin-bottom:4px}.upload-drop-label{font-weight:600;font-size:14px}.upload-drop-sub{font-size:12px;color:var(--muted)}.upload-preview-img{width:100%;height:100%;object-fit:contain;padding:12px}.upload-reselect{margin-top:8px;background:transparent;border:none;color:var(--accent);font-size:12px;font-weight:600;cursor:pointer;align-self:center}.upload-name-row{margin-top:20px;width:100%;max-width:480px;display:flex;flex-direction:column;gap:6px}.upload-name-label{font-size:11.5px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.upload-name-input{width:100%;background:var(--panel);border:1px solid var(--brd);border-radius:10px;padding:10px 14px;font-size:14px;font-family:inherit;color:var(--ink);outline:none}.upload-name-input:focus{border-color:var(--accent)}.upload-start-btn{margin-top:20px;width:100%;max-width:480px;justify-content:center;padding:12px;font-size:14px;border-radius:12px}.upload-start-btn:disabled{opacity:.4;cursor:not-allowed}@media (max-width: 760px){.projects-topbar{padding:0 16px;height:56px}.projects-body{padding:20px 16px 24px}.upload-body{padding:20px 18px 32px}.editor-topbar{height:52px;padding:0 10px;gap:6px}.editor-title{display:none}.editor-topbar>.chrome-btn:first-child{margin-right:auto}.theme-segmented{display:none}.chrome-btn,.btn-accent-pill{padding:7px 9px;font-size:11px;white-space:nowrap}.tool-dock{left:8px!important;top:60px!important;width:52px}.zoom-panel{left:8px!important;top:auto!important;bottom:120px!important}.glyph-strip-panel{left:8px!important;right:8px;top:auto!important;bottom:8px!important;overflow-x:auto}.glyph-strip{min-width:max-content}.live-preview{left:auto!important;right:8px;top:60px!important;max-width:44vw}.overlay-card,.settings-modal,.add-glyph-popover{max-width:92vw}}
