/*! (c) 2026 3dawg. All rights reserved. Copying, redistribution or reuse of this code is prohibited. */
:root{--bg: #F4F5F7;--surface: #FFFFFF;--surface-2: #F8F9FA;--border: #E5E7EB;--border-hard: #D1D5DB;--text: #111827;--text-2: #4B5563;--text-3: #9CA3AF;--accent: #0066FF;--accent-h: #0052CC;--accent-dim: rgba(0, 102, 255, .08);--success: #10B981;--success-dim: rgba(16, 185, 129, .12);--danger: #EF4444;--danger-dim: rgba(239, 68, 68, .08);--radius-sm: 6px;--radius-md: 10px;--shadow-md: 0 4px 12px rgba(0, 0, 0, .06);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .14);--font: "DM Sans", -apple-system, BlinkMacSystemFont, sans-serif;--mono: "DM Mono", monospace;--r-sm: 6px}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #0F1115;--surface: #171A21;--surface-2: #1E222B;--surface-3: #2A2F3A;--border: #2A2F3A;--border-hard: #3A4150;--text: #F3F4F6;--text-2: #C2C7D0;--text-3: #8B93A1;--accent: #3D8BFF;--accent-h: #2B78EE;--accent-dim: rgba(61, 139, 255, .16);--success: #34D399;--success-dim: rgba(16, 185, 129, .14);--success-text: #34D399;--warn: #FBBF24;--warn-dim: rgba(245, 158, 11, .14);--warn-bg: rgba(245, 158, 11, .12);--warn-border: rgba(245, 158, 11, .35);--warn-text: #FBBF24;--danger: #F87171;--danger-dim: rgba(239, 68, 68, .14);--danger-text: #FCA5A5;--danger-border: rgba(239, 68, 68, .4);--shadow-md: 0 8px 24px rgba(0, 0, 0, .35);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .5);color-scheme:dark}}:root[data-theme=dark]{--bg: #0F1115;--surface: #171A21;--surface-2: #1E222B;--surface-3: #2A2F3A;--border: #2A2F3A;--border-hard: #3A4150;--text: #F3F4F6;--text-2: #C2C7D0;--text-3: #8B93A1;--accent: #3D8BFF;--accent-h: #2B78EE;--accent-dim: rgba(61, 139, 255, .16);--success: #34D399;--success-dim: rgba(16, 185, 129, .14);--success-text: #34D399;--warn: #FBBF24;--warn-dim: rgba(245, 158, 11, .14);--warn-bg: rgba(245, 158, 11, .12);--warn-border: rgba(245, 158, 11, .35);--warn-text: #FBBF24;--danger: #F87171;--danger-dim: rgba(239, 68, 68, .14);--danger-text: #FCA5A5;--danger-border: rgba(239, 68, 68, .4);--shadow-md: 0 8px 24px rgba(0, 0, 0, .35);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .5);color-scheme:dark}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{min-height:100%}body{font-family:var(--font);background:var(--bg);color:var(--text);font-size:13px}[v-cloak]{display:none}button{font-family:inherit}#topbar{position:sticky;top:0;z-index:10;height:52px;display:flex;align-items:center;gap:14px;padding:0 16px;background:var(--surface);border-bottom:1px solid var(--border)}.back-link{display:inline-flex;align-items:center;gap:6px;color:var(--text-2);text-decoration:none;font-weight:500}.back-link:hover{color:var(--accent)}.brand{font-weight:700;font-size:16px;letter-spacing:-.02em}.brand span{color:var(--accent)}.brand em{font-style:normal;font-weight:500;color:var(--text-2);margin-left:6px;font-size:14px}.top-actions{margin-left:auto;display:flex;align-items:center;gap:8px}.user-chip{color:var(--text-2);font-size:12px}#workspace{max-width:1200px;margin:0 auto;padding:20px 16px 48px;display:grid;gap:16px;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);grid-template-areas:"create mine" "result mine" "tester mine";align-items:start}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:18px;display:flex;flex-direction:column;gap:12px;min-width:0}.card.create{grid-area:create}.card.result{grid-area:result}.card.mine{grid-area:mine;position:sticky;top:68px;max-height:calc(100vh - 88px)}.card-head{display:flex;align-items:center;gap:10px}.card-head h2{font-size:15px;font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.field{display:flex;flex-direction:column;gap:5px;flex:1;min-width:0}.field label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-2)}.opt{text-transform:none;letter-spacing:0;font-weight:400;color:var(--text-3)}.row{display:flex;gap:12px}input,textarea{width:100%;font:14px var(--font);color:var(--text);background:var(--surface);border:1px solid var(--border-hard);border-radius:var(--radius-sm);padding:8px 10px}textarea{resize:vertical;line-height:1.4}input:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}.drop{border:1.5px dashed var(--border-hard);border-radius:var(--radius-md);min-height:84px;display:flex;align-items:center;justify-content:center;gap:12px;padding:10px;color:var(--text-3);cursor:pointer;text-align:center;background:var(--surface-2)}.drop.over{border-color:var(--accent);background:var(--accent-dim);color:var(--accent)}.drop.has{justify-content:space-between;cursor:default}.drop img{max-height:110px;max-width:75%;object-fit:contain;border-radius:4px;background:var(--surface, #fff)}.ref-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.btn-primary.small{padding:5px 12px;font-size:12px}.hint{font-size:11px;color:var(--text-3)}.ref-editor{border:1px solid var(--border);border-radius:var(--radius-md);padding:12px;display:flex;flex-direction:column;gap:10px;background:var(--surface-2)}.crop-wrap{display:flex;justify-content:center;background:repeating-conic-gradient(#e5e7eb 0 25%,#fff 0 50%) 0 0 / 14px 14px;border-radius:var(--radius-sm);padding:6px}.crop-stage{position:relative;display:inline-block;overflow:hidden;touch-action:none;cursor:crosshair;user-select:none;line-height:0}.crop-stage img{display:block;max-width:100%;max-height:340px;pointer-events:none}.crop-box{position:absolute;border:2px solid var(--accent);box-shadow:0 0 0 9999px #11182773;cursor:move}.crop-handle{position:absolute;width:14px;height:14px;background:var(--surface, #fff);border:2px solid var(--accent);border-radius:3px}.crop-handle.nw{left:-8px;top:-8px;cursor:nwse-resize}.crop-handle.ne{right:-8px;top:-8px;cursor:nesw-resize}.crop-handle.sw{left:-8px;bottom:-8px;cursor:nesw-resize}.crop-handle.se{right:-8px;bottom:-8px;cursor:nwse-resize}@media (pointer: coarse){.crop-handle{width:22px;height:22px}.crop-handle.nw,.crop-handle.sw{left:-12px}.crop-handle.ne,.crop-handle.se{right:-12px}.crop-handle.nw,.crop-handle.ne{top:-12px}.crop-handle.sw,.crop-handle.se{bottom:-12px}}.adjust{display:flex;flex-direction:column;gap:8px}.adjust-row{display:grid;grid-template-columns:80px 1fr 36px;align-items:center;gap:8px}.adjust-row label{font-size:12px;color:var(--text-2)}.adjust-row input[type=range]{padding:0;border:none;accent-color:var(--accent);box-shadow:none}.adjust-row .val{font:11px var(--mono);color:var(--text-3);text-align:right}.toggles{display:flex;gap:14px;flex-wrap:wrap}.check{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-2);cursor:pointer}.check input{width:auto}.adjust-btns{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.ref-preview{display:flex;flex-direction:column;gap:4px}.ref-preview img{max-width:100%;max-height:140px;object-fit:contain;align-self:flex-start;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface, #fff)}.how{font-size:12px;line-height:1.5;color:var(--text-2);background:var(--accent-dim);border-radius:var(--radius-sm);padding:10px 12px}.actions{display:flex;gap:8px;flex-wrap:wrap}.btn-primary,.btn-secondary,.btn-ghost{display:inline-flex;align-items:center;gap:6px;padding:9px 16px;font-size:13px;font-weight:600;border-radius:var(--radius-sm);cursor:pointer;border:1px solid transparent}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-h)}.btn-secondary{background:var(--surface);color:var(--text);border-color:var(--border-hard);font-weight:500}.btn-secondary:hover:not(:disabled){background:var(--surface-2)}.btn-secondary.small{padding:5px 10px;font-size:12px}.btn-ghost{background:none;color:var(--text-2);font-weight:500;padding:6px 10px}.btn-ghost:hover{color:var(--accent)}.btn-link{background:none;border:none;color:var(--accent);cursor:pointer;font-size:12px}button:disabled{opacity:.55;cursor:default}.pill{font-size:11px;font-weight:600;padding:3px 9px;border-radius:999px;background:var(--surface-2);color:var(--text-2);border:1px solid var(--border);white-space:nowrap}.pill.ok{background:var(--success-dim);color:var(--success-text, #047857);border-color:transparent}.muted{color:var(--text-2);font-size:12px;line-height:1.5}.error-text{color:var(--danger);font-size:12px;background:var(--danger-dim);padding:8px 10px;border-radius:var(--radius-sm)}.progress{border-top:1px solid var(--border);padding-top:10px;display:flex;flex-direction:column;gap:6px}.progress-msg{display:flex;align-items:center;gap:8px;font-weight:500}.spinner{width:14px;height:14px;border-radius:50%;border:2px solid var(--accent-dim);border-top-color:var(--accent);animation:spin .8s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.steps{list-style:none;display:flex;flex-direction:column;gap:3px;max-height:160px;overflow-y:auto;font-size:12px;color:var(--text-2)}.steps li:before{content:"\2713  ";color:var(--success)}.preview-input{font-size:13px}.preview{color:var(--text, #111);word-break:break-word}.preview.big{font-size:56px;line-height:1.15;padding:8px 0}.preview.glyphs{font-size:22px;line-height:1.5;color:var(--text-2)}.result-foot{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:space-between}.lookup summary{cursor:pointer;font-size:12px;color:var(--text-2)}.lookup ul{list-style:none;margin:6px 0;display:flex;flex-direction:column;gap:2px;font-size:12px}.specimen{max-width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);margin-top:6px}.font-list{display:flex;flex-direction:column;gap:6px;overflow-y:auto;min-height:0}.font-row{display:grid;grid-template-columns:1fr auto;grid-template-areas:"meta del" "sample del";gap:2px 8px;align-items:center;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm)}.font-row.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.font-meta{grid-area:meta;display:flex;align-items:center;gap:8px;min-width:0}.font-meta strong{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tag{font-size:10px;color:var(--text-3);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.font-sample{grid-area:sample;font-size:24px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.icon-btn{grid-area:del;width:28px;height:28px;border:none;background:none;color:var(--text-3);border-radius:var(--radius-sm);cursor:pointer}.icon-btn.danger:hover{color:var(--danger);background:var(--danger-dim)}.card.tester{grid-area:tester}.tester-stage{position:relative;height:220px;border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--border);cursor:pointer}.tester-stage canvas{position:absolute;inset:0;width:100%;height:100%}.tester-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.tester-font{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tester-backdrops{display:flex;gap:5px}.swatch{width:20px;height:20px;border-radius:50%;border:1px solid rgba(0,0,0,.2);cursor:pointer;padding:0}.swatch.on{box-shadow:0 0 0 2px var(--accent)}.sub-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-2)}.style-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}.style-chip{display:flex;flex-direction:column;gap:4px;padding:6px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;text-align:left;min-width:0}.style-chip:hover{border-color:var(--accent)}.style-chip img,.style-chip span{width:100%;aspect-ratio:360 / 140;object-fit:contain;background:#e4e6ea;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:22px}.style-chip em{font-style:normal;font-size:11px;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-btns{grid-area:del;display:flex;gap:2px}.row-btns .icon-btn{grid-area:auto;font-size:11px;font-weight:600}.icon-btn:hover{color:var(--accent);background:var(--accent-dim)}#spot-color-popover{position:fixed;z-index:1000;width:260px;background:var(--surface, #FFFFFF);border:1px solid var(--border-hard);border-radius:var(--r-sm);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;overflow:hidden;user-select:none}.popover-tabs{display:flex;border-bottom:1px solid var(--border);background:var(--surface-2)}.popover-tab-btn{flex:1;padding:7px 0;font-size:11px;font-weight:500;color:var(--text-2);text-align:center;border-bottom:2px solid transparent;transition:all .15s}.popover-tab-btn:hover{color:var(--text)}.popover-tab-btn.active{color:var(--accent);background:var(--surface, #FFFFFF);border-bottom-color:var(--accent);font-weight:600}.popover-tab-content{padding:8px;display:flex;flex-direction:column;gap:6px;max-height:280px}.popover-row{display:flex;gap:6px}.popover-select{width:100%;height:26px;font-size:11px;font-weight:500;border:1px solid var(--border);border-radius:var(--r-sm);padding:0 6px;background:var(--surface, #FFFFFF);color:var(--text);outline:none}.popover-select:focus{border-color:var(--accent)}.popover-search-input{width:100%;height:24px;font-size:11px;border:1px solid var(--border);border-radius:var(--r-sm);padding:0 6px;outline:none;background:var(--surface, #FFFFFF);color:var(--text);box-sizing:border-box}.popover-search-input:focus{border-color:var(--accent)}.popover-color-list{display:flex;flex-direction:column;gap:3px;overflow-y:auto;max-height:190px;padding-right:2px}.popover-empty{text-align:center;padding:20px 8px;font-size:11px;color:var(--text-3);display:flex;flex-direction:column;align-items:center;gap:6px}.popover-link-btn{font-size:11px;color:var(--accent);text-decoration:underline;cursor:pointer}.popover-color-item{display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:var(--r-sm);cursor:pointer;border:1px solid transparent;transition:background .1s,border-color .1s}.popover-color-item:hover{background:var(--surface-2)}.popover-color-item.selected{background:#0066ff14;border-color:#0066ff4d}.popover-color-swatch{width:18px;height:18px;border-radius:3px;border:1px solid var(--border-hard);flex-shrink:0}.popover-color-info{display:flex;flex-direction:column;min-width:0;flex:1}.popover-color-name{font-size:11px;font-weight:500;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.popover-color-hex{font-size:9px;font-family:var(--mono);color:var(--text-3)}.popover-tab-content.custom-content{padding:12px 8px;gap:10px}.popover-custom-row{display:flex;align-items:center;gap:8px}.popover-native-color-picker{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:32px;height:32px;border:1px solid var(--border-hard);border-radius:var(--r-sm);padding:0;cursor:pointer;background:none;flex-shrink:0}.popover-native-color-picker::-webkit-color-swatch-wrapper{padding:0}.popover-native-color-picker::-webkit-color-swatch{border:none;border-radius:3px}.popover-native-color-picker::-moz-color-swatch{border:none;border-radius:3px}.popover-hex-text-input{flex:1;height:30px;font-family:var(--mono);font-size:12px;border:1px solid var(--border);border-radius:var(--r-sm);padding:0 8px;color:var(--text);box-sizing:border-box}.popover-hex-text-input:focus{border-color:var(--accent);outline:none}.popover-apply-btn{width:100%;padding:6px 0;font-size:11px;font-weight:600;color:#fff;background:var(--accent);border-radius:var(--r-sm);cursor:pointer}.popover-apply-btn:hover{background:var(--accent-h)}.modal-back{position:fixed;inset:0;background:#11182766;display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}.modal{width:100%;max-width:380px;background:var(--surface);border-radius:var(--radius-md);padding:22px;display:flex;flex-direction:column;gap:10px;box-shadow:var(--shadow-lg);max-height:92vh;overflow-y:auto}.toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%);z-index:60;background:#111827;color:#fff;padding:10px 16px;border-radius:var(--radius-sm);font-size:13px;box-shadow:var(--shadow-lg);max-width:calc(100vw - 32px)}.toast.error{background:var(--danger)}@media (max-width: 860px){#workspace{grid-template-columns:minmax(0,1fr);grid-template-areas:"create" "result" "tester" "mine"}.tester-stage{height:160px}.card.mine{position:static;max-height:none}.hdr-label{display:none}.row{flex-direction:column}.preview.big{font-size:40px}}
