@import"https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&display=swap";*{margin:0;padding:0;box-sizing:border-box}:root{--bg: #2a2d35;--surface: #2e3139;--raised: #33363f;--accent: #00e5c0;--accent-dim: #00b89a;--accent-glow: rgba(0, 229, 192, .15);--accent-glow-strong: rgba(0, 229, 192, .3);--text: #c0c4cc;--text-dim: #8a8e96;--text-muted: #5c5f66;--shadow-dark: rgba(0, 0, 0, .45);--shadow-darker: rgba(0, 0, 0, .6);--shadow-light: rgba(255, 255, 255, .05);--shadow-light-strong: rgba(255, 255, 255, .08);--error: #e05555;--success: #55c878;--r: 16px;--r-sm: 10px;--r-xs: 6px;--neu-raised: 6px 6px 14px var(--shadow-dark), -6px -6px 14px var(--shadow-light);--neu-raised-sm: 3px 3px 8px var(--shadow-dark), -3px -3px 8px var(--shadow-light);--neu-pressed: inset 4px 4px 10px var(--shadow-dark), inset -4px -4px 10px var(--shadow-light);--neu-pressed-sm: inset 2px 2px 6px var(--shadow-dark), inset -2px -2px 6px var(--shadow-light);--neu-well: inset 3px 3px 8px var(--shadow-darker), inset -3px -3px 8px var(--shadow-light-strong)}html,body,#root{height:100%;overflow:hidden;font-family:Outfit,sans-serif;background:var(--bg);background-image:var(--tex-surface);color:var(--text);font-size:12px;font-weight:400;user-select:none;-webkit-font-smoothing:antialiased}.app{display:flex;height:100vh;max-height:100vh;overflow:hidden}.sidebar{width:clamp(220px,22vw,290px);max-height:100vh;background:var(--bg);background-image:var(--tex-surface);overflow:hidden;display:flex;flex-direction:column;flex-shrink:0}.sidebar-inner{flex:1;min-height:0;display:flex;flex-direction:column;padding:10px;gap:10px}.sidebar-tabs{display:flex;gap:4px;flex-shrink:0;padding:4px;background:var(--surface);background-image:var(--tex-widget);border-radius:var(--r-sm);box-shadow:var(--neu-pressed-sm)}.sidebar-tab{flex:1;padding:7px 4px;background:transparent;border:none;color:var(--text-dim);font-family:Outfit,sans-serif;font-size:10px;font-weight:600;letter-spacing:1px;text-transform:uppercase;cursor:pointer;border-radius:var(--r-xs);transition:color .15s,box-shadow .15s,background .15s}.sidebar-tab:hover{color:var(--text)}.sidebar-tab.active{color:var(--accent);background:var(--bg);background-image:var(--tex-surface);box-shadow:var(--neu-raised-sm)}.sidebar-tab-body{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:10px;padding-right:2px}.sidebar-tab-body::-webkit-scrollbar{width:4px}.sidebar-tab-body::-webkit-scrollbar-track{background:transparent}.sidebar-tab-body::-webkit-scrollbar-thumb{background:var(--raised);border-radius:4px;box-shadow:var(--neu-raised-sm)}.tab-content{display:flex;flex-direction:column;gap:10px}.sidebar-tab-body.has-tabs .tab-content{display:none}.sidebar-tab-body.has-tabs .tab-content.active{display:flex}.sidebar-tab-body.measuring .tab-content{display:flex!important}.sidebar-logo{flex-shrink:0;padding:8px 4px 2px}.sidebar-logo img{display:block;width:100%;height:auto;opacity:.95}.sidebar-buttons-row{display:flex;gap:6px;margin-top:10px}.sidebar-buttons-row .btn{flex:1}.export-views{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin-bottom:12px}.export-view{display:flex;flex-direction:column;align-items:center;gap:4px;font-size:10px;font-weight:500;letter-spacing:.5px;text-transform:uppercase;color:var(--text-dim);cursor:pointer;padding:4px 2px;border-radius:var(--r-xs);transition:color .15s}.export-view:hover{color:var(--text)}.export-view:has(input:checked){color:var(--accent)}.export-view input[type=checkbox]{appearance:none;width:16px;height:16px;border-radius:4px;background:var(--bg);background-image:var(--tex-surface);box-shadow:var(--neu-well);cursor:pointer;position:relative;margin:0}.export-view input[type=checkbox]:checked{background:var(--accent);box-shadow:var(--neu-raised-sm),0 0 6px var(--accent-glow)}.export-view input[type=checkbox]:checked:after{content:"✓";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#1a1c22;font-size:11px;font-weight:700;line-height:1}.export-controls{display:flex;gap:8px;align-items:stretch}.export-controls .export-format{flex:0 0 auto;padding:8px 24px 8px 10px;background:var(--bg);background-image:var(--tex-surface);border:none;border-radius:var(--r-sm);color:var(--text);font-family:Outfit,sans-serif;font-size:11px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;outline:none;cursor:pointer;box-shadow:var(--neu-well);appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--text-dim) 50%),linear-gradient(135deg,var(--text-dim) 50%,transparent 50%),var(--tex-surface);background-position:calc(100% - 12px) calc(50% - 1px),calc(100% - 7px) calc(50% - 1px),0 0;background-size:5px 5px,5px 5px,auto;background-repeat:no-repeat}.export-controls .export-format:focus{box-shadow:var(--neu-well),0 0 0 1px var(--accent-dim),0 0 6px var(--accent-glow)}.export-controls .export-btn{flex:1}.main{flex:1;display:flex;flex-direction:column;min-width:0;max-height:100vh;overflow:hidden;background:var(--bg);background-image:var(--tex-surface);padding:10px;gap:8px}.view-tabs{display:flex;gap:4px;flex-shrink:0;padding:4px;background:var(--surface);background-image:var(--tex-widget);border-radius:var(--r-sm);box-shadow:var(--neu-pressed-sm)}.view-tab{flex:1;padding:8px 4px;background:transparent;border:none;color:var(--text-dim);font-family:Outfit,sans-serif;font-size:10px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;cursor:pointer;border-radius:var(--r-xs);transition:color .15s,box-shadow .15s,background .15s}.view-tab:hover{color:var(--text)}.view-tab.active{color:var(--accent);background:var(--bg);background-image:var(--tex-surface);box-shadow:var(--neu-raised-sm)}.view-grid-narrow{grid-template-columns:1fr;grid-template-rows:1fr}.view-grid-cell.narrow-active{grid-column:1 / -1;grid-row:1 / -1}.view-error{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;gap:6px}.view-error-label{font-size:10px;letter-spacing:2px;color:var(--text-muted)}.view-error-msg{font-size:11px;color:var(--error)}.app-narrow .sidebar{width:clamp(190px,28vw,240px)}.view-grid-wrap{flex:1;position:relative;border-radius:var(--r);overflow:hidden;box-shadow:var(--neu-pressed);background:var(--bg);background-image:var(--tex-surface)}.view-grid{width:100%;height:100%;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:3px;overflow:hidden;background:#00000040}.view-grid-cell{position:relative;overflow:hidden;background:#1a1c22;padding:20px}.view-grid-cell.hidden{display:none}.view-grid-cell.expanded{grid-column:1 / -1;grid-row:1 / -1}.view-grid-label{position:absolute;top:8px;left:12px;font-size:9px;font-weight:500;letter-spacing:2px;color:var(--text-muted);z-index:1;pointer-events:none;text-transform:uppercase}.view-grid-toggle{position:absolute;top:4px;right:8px;z-index:2;background:none;border:none;color:var(--text-muted);font-size:18px;cursor:pointer;padding:4px 6px;line-height:1;border-radius:var(--r-xs);opacity:0;transition:opacity .2s,color .2s}.view-grid-cell:hover .view-grid-toggle{opacity:1}.view-grid-toggle:hover{color:var(--accent)}.view-grid-cell.expanded .view-grid-toggle{opacity:1}.sidebar-widget{background:var(--surface);background-image:var(--tex-widget);border-radius:var(--r);padding:14px;box-shadow:var(--neu-raised);border:none}.widget-color-picker{padding:16px}.widget-color-picker .color-picker-custom{gap:8px}.widget-color-picker .color-slots{margin-top:12px}input[type=text],input[type=number]{width:100%;padding:10px 12px;background:var(--bg);background-image:var(--tex-surface);border:none;border-radius:var(--r-sm);color:var(--text);font-family:Outfit,sans-serif;font-size:12px;outline:none;box-shadow:var(--neu-well);transition:box-shadow .2s}input[type=text]:focus,input[type=number]:focus{box-shadow:var(--neu-well),0 0 0 1px var(--accent-dim),0 0 6px var(--accent-glow)}input[type=text]::placeholder{color:var(--text-muted)}input.name-conflict{color:var(--error)}input.name-conflict:focus{box-shadow:var(--neu-well),0 0 0 1px var(--error),0 0 6px #e0555533}input[type=range]{-webkit-appearance:none;width:100%;height:8px;background:var(--bg);background-image:var(--tex-surface);border-radius:6px;outline:none;margin:10px 0;box-shadow:var(--neu-well)}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;background-image:var(--tex-knob);background-size:cover;border:none;border-radius:50%;cursor:pointer;box-shadow:3px 3px 8px var(--shadow-dark),-3px -3px 8px var(--shadow-light),0 0 0 1px #00000026;transition:transform .15s,box-shadow .15s}input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.1);box-shadow:3px 3px 8px var(--shadow-dark),-3px -3px 8px var(--shadow-light),0 0 8px var(--accent-glow)}button.btn{width:100%;padding:10px 12px;background:var(--accent);color:#1a1c22;border:none;border-radius:var(--r-sm);cursor:pointer;font-family:Outfit,sans-serif;font-size:11px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;transition:all .2s;box-shadow:4px 4px 10px var(--shadow-dark),-4px -4px 10px var(--shadow-light),0 0 12px var(--accent-glow)}button.btn:hover{background:#1affd4;box-shadow:4px 4px 10px var(--shadow-dark),-4px -4px 10px var(--shadow-light),0 0 20px var(--accent-glow-strong)}button.btn:active{background:var(--accent-dim);box-shadow:var(--neu-pressed-sm),0 0 8px var(--accent-glow)}button.btn:disabled{background:var(--raised);color:var(--text-muted);cursor:default;box-shadow:var(--neu-raised-sm)}button.btn:disabled:hover{background:var(--raised);box-shadow:var(--neu-raised-sm)}button.btn-secondary{background:var(--surface);background-image:var(--tex-widget);color:var(--text-dim);box-shadow:var(--neu-raised-sm)}button.btn-secondary:hover{color:var(--text);box-shadow:var(--neu-raised-sm),0 0 8px var(--accent-glow)}.sidebar-widget{padding:12px}@media(max-height:720px){.sidebar-widget{padding:10px}.sidebar-inner{gap:8px;padding:8px}.sidebar-tab-body{gap:8px}}@media(max-height:560px){.sidebar-widget{padding:8px}.sidebar-inner{gap:6px;padding:6px}.sidebar-tab-body{gap:6px}.sidebar-logo{padding:4px 2px 0}}.pattern-grid{display:flex;flex-direction:column;gap:6px}.pattern-card{position:relative;border-radius:var(--r-xs);cursor:pointer;transition:box-shadow .15s,border-color .15s;border:1.5px solid transparent;background:var(--surface);overflow:hidden}.pattern-card:hover{border-color:var(--text-muted)}.pattern-card.active{border-color:var(--accent-dim);box-shadow:0 0 8px var(--accent-glow)}.pattern-card-thumb-wrap{width:100%;display:flex;align-items:center;justify-content:center;background:var(--bg)}.pattern-card-thumb{display:block;width:100%;height:auto;object-fit:contain}.pattern-card .delete-btn{position:absolute;top:3px;right:3px;opacity:0;background:#0009;border:none;color:var(--text-dim);cursor:pointer;font-size:11px;line-height:1;padding:2px 5px;border-radius:var(--r-xs);transition:opacity .15s,color .15s}.pattern-card .delete-btn:hover{color:var(--error)}.pattern-card:hover .delete-btn{opacity:1}.config-row{display:flex;align-items:center;justify-content:space-between;gap:6px}.config-row label{font-size:9px;color:var(--text-dim);white-space:nowrap;letter-spacing:1px;font-weight:500;text-transform:uppercase}.config-row .value{font-weight:700;font-size:13px;min-width:20px;text-align:right;color:var(--accent);font-variant-numeric:tabular-nums}.color-slots{display:flex;gap:8px;margin-top:12px}.color-slot-fill{flex:1;height:32px;border-radius:var(--r-sm);cursor:pointer;border:none;transition:all .2s;box-shadow:var(--neu-raised-sm)}.color-slot-fill:hover{box-shadow:var(--neu-raised-sm),0 0 8px var(--accent-glow)}.color-slot-fill.active{box-shadow:var(--neu-pressed-sm),0 0 0 1.5px var(--accent-dim),0 0 10px var(--accent-glow)}.color-picker-custom{display:flex;flex-direction:column;gap:8px}.hsl-slider{display:flex;flex-direction:column}.hsl-slider-track{position:relative;height:36px;border-radius:18px;cursor:pointer;border:none;overflow:visible;background:var(--bg);background-image:var(--tex-surface);box-shadow:var(--neu-well)}.hsl-slider-gradient{position:absolute;inset:5px;border-radius:13px;box-shadow:inset 1px 1px 3px #0003}.hsl-slider-noise,.hsl-slider-inset-shadow{display:none}.hsl-slider-thumb{position:absolute;top:50%;width:30px;height:30px;transform:translate(-50%,-50%);pointer-events:none;z-index:2;transition:transform .15s}.mag-color{position:absolute;inset:4px;border-radius:50%;box-shadow:2px 2px 6px var(--shadow-dark),-2px -2px 6px var(--shadow-light),inset 0 0 0 2px #0003}.mag-glass{position:absolute;inset:0;border-radius:50%;background-image:var(--tex-knob);background-size:cover;opacity:0}.mag-bezel{position:absolute;inset:0;border-radius:50%;box-shadow:3px 3px 8px var(--shadow-dark),-3px -3px 8px var(--shadow-light),0 0 0 1px #00000026;background:var(--surface);background-image:var(--tex-widget)}.hsl-slider-thumb .mag-bezel{background:var(--raised);background-image:var(--tex-widget);box-shadow:4px 4px 10px var(--shadow-dark),-4px -4px 10px var(--shadow-light);-webkit-mask:radial-gradient(circle,transparent 38%,black 40%);mask:radial-gradient(circle,transparent 38%,black 40%)}.hsl-slider-thumb .mag-color{inset:22%;box-shadow:inset 2px 2px 4px #00000040,inset -1px -1px 3px #ffffff0f}.hsl-slider-thumb .mag-glass{display:none}.hsl-slider-track:hover .hsl-slider-thumb{transform:translate(-50%,-50%) scale(1.08)}.hsl-slider-track:active .hsl-slider-thumb .mag-bezel{box-shadow:4px 4px 10px var(--shadow-dark),-4px -4px 10px var(--shadow-light),0 0 12px var(--accent-glow)}.palette{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;align-items:center}.palette-swatch{width:100%;aspect-ratio:1;border-radius:var(--r-xs);border:none;cursor:pointer;transition:transform .15s,box-shadow .15s;box-shadow:var(--neu-raised-sm)}.palette-swatch:hover{transform:scale(1.12);box-shadow:var(--neu-raised-sm),0 0 8px var(--accent-glow)}.palette-add-btn{width:100%;aspect-ratio:1;border-radius:var(--r-xs);border:none;background:var(--bg);background-image:var(--tex-surface);color:var(--text-muted);font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:all .2s;box-shadow:var(--neu-pressed-sm)}.palette-add-btn:hover{color:var(--accent);box-shadow:var(--neu-pressed-sm),0 0 8px var(--accent-glow)}.string-info{font-size:10px;color:var(--text-dim);padding:0 0 8px}.total-strings{font-size:10px;color:var(--text-muted);text-align:center;padding:6px 0 0}.braid-colors-list{display:flex;flex-direction:column;gap:5px;align-items:center}.braid-color-row{display:grid;grid-template-columns:16px 24px 1fr;align-items:center;gap:5px;width:100%}.silk-icon{font-size:11px;flex-shrink:0;text-align:center;line-height:16px;height:16px}.silk-icon.match{color:var(--success)}.silk-icon.no-match{color:var(--error)}.braid-color-swatch{width:24px;height:24px;border-radius:var(--r-xs);border:none;flex-shrink:0;cursor:pointer;transition:transform .12s,box-shadow .12s;box-shadow:var(--neu-raised-sm)}.braid-color-swatch:hover{transform:scale(1.12);box-shadow:var(--neu-raised-sm),0 0 8px var(--accent-glow)}.silk-info{grid-column:3;font-size:10px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.silk-pid{color:var(--text-muted);margin-left:3px}.silk-closest-group{grid-column:3;display:flex;align-items:center;gap:3px;overflow:hidden}.silk-arrow{font-size:11px;color:var(--text-muted);line-height:16px;flex-shrink:0}.silk-closest-swatch{width:22px;height:22px;min-width:22px;border-radius:var(--r-xs);border:none;cursor:pointer;flex-shrink:0;transition:transform .12s,box-shadow .12s;box-shadow:var(--neu-raised-sm)}.silk-closest-swatch:hover{transform:scale(1.12);box-shadow:var(--neu-raised-sm),0 0 8px var(--accent-glow)}.supplies-mismatch{font-size:10px;font-weight:600;color:var(--error);letter-spacing:1px;text-transform:uppercase;padding:4px 0}.supplies-list{display:flex;flex-direction:column;gap:5px}.supplies-row{display:grid;grid-template-columns:24px 24px 1fr auto;align-items:center;gap:4px}.supplies-swatch{width:24px;height:24px;border-radius:var(--r-xs);border:none;box-shadow:var(--neu-raised-sm)}.supplies-count{font-size:10px;font-weight:700;color:var(--accent);font-variant-numeric:tabular-nums}.supplies-name{font-size:10px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.supplies-pid{font-size:9px;color:var(--text-muted);white-space:nowrap}
