html{font-size:16px}body{margin:0;min-width:320px;min-height:100vh}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #f5f3f0;--surface: #ffffff;--text: #1a1a1a;--text-secondary: #6b6b6b;--border: #e0ddd8;--accent: #2a2a2a;--accent-hover: #444;--radius: 8px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .06);--shadow-md: 0 4px 12px rgba(0, 0, 0, .08);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .1);--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "SF Mono", "Fira Code", "Fira Mono", monospace}body{font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.5;-webkit-font-smoothing:antialiased}.app{max-width:720px;margin:0 auto;padding:40px 24px 80px}.app-header{text-align:center;margin-bottom:48px}.app-header h1{font-size:2rem;font-weight:700;letter-spacing:-.03em;color:var(--text)}.app-subtitle{margin-top:8px;font-size:.95rem;color:var(--text-secondary)}.tab-bar{display:flex;gap:0;margin-bottom:32px;border-bottom:2px solid var(--border)}.tab-btn{padding:10px 24px;border:none;background:none;color:var(--text-secondary);font-size:.9rem;font-weight:600;font-family:var(--font);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s;display:flex;align-items:center;gap:8px}.tab-btn:hover{color:var(--text)}.tab-btn.active{color:var(--text);border-bottom-color:var(--accent)}.tab-badge{font-size:.68rem;font-weight:700;background:var(--accent);color:#fff;padding:1px 6px;border-radius:10px;line-height:1.4}.tab-content{position:relative}.tab-panel-active{display:block}.tab-panel-hidden{position:absolute;top:0;left:0;right:0;visibility:hidden;pointer-events:none;height:0;overflow:hidden}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.section-header h2,.palette-section h2{font-size:1.1rem;font-weight:600;color:var(--text);letter-spacing:-.01em}.empty-state{padding:40px 24px;text-align:center;background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius)}.empty-state-text{font-size:.9rem;color:var(--text-secondary);margin-bottom:20px;line-height:1.5;max-width:420px;margin-left:auto;margin-right:auto}.empty-state-actions{display:flex;gap:12px;justify-content:center;margin-bottom:20px}.csv-inline{display:flex;gap:8px;max-width:440px;margin:0 auto}.csv-inline .csv-input{flex:1;font-size:.78rem;min-height:40px}.csv-inline .btn-import{min-height:40px;padding:8px 16px;font-size:.8rem}.csv-details{margin-bottom:24px}.csv-summary{font-size:.82rem;font-weight:500;color:var(--text-secondary);cursor:pointer;padding:8px 0}.csv-summary:hover{color:var(--text)}.csv-section{margin-top:12px;margin-bottom:0}.palette-hint{font-size:.82rem;color:var(--text-secondary);margin-bottom:16px}.csv-hint{font-size:.82rem;color:var(--text-secondary);margin-bottom:10px}.csv-row{display:flex;gap:10px;align-items:flex-start}.csv-input{flex:1;padding:10px 12px;font-family:var(--font-mono);font-size:.8rem;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);outline:none;resize:vertical;min-height:60px;transition:border-color .2s;line-height:1.5}.csv-input:focus{border-color:var(--accent)}.csv-input::placeholder{color:var(--text-secondary);opacity:.6}.btn-import{padding:10px 20px;background:var(--accent);color:#fff;border:none;border-radius:6px;font-size:.85rem;font-weight:600;cursor:pointer;transition:background .15s;flex-shrink:0;align-self:stretch;min-height:60px}.btn-import:hover{background:var(--accent-hover)}.csv-error{margin-top:8px;font-size:.78rem;color:#b44}.locked-colors-section{margin-bottom:32px}.color-inputs-grid{display:flex;flex-direction:column;gap:12px}.color-input-card{display:flex;align-items:center;gap:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm);transition:box-shadow .2s ease}.color-input-card:hover{box-shadow:var(--shadow-md)}.color-input-swatch{width:80px;min-height:72px;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:background-color .3s ease;align-self:stretch}.color-input-label{font-family:var(--font-mono);font-size:.65rem;font-weight:500;text-shadow:0 1px 2px rgba(0,0,0,.15);text-align:center;line-height:1.2}.color-input-controls{flex:1;min-width:0;padding:10px 12px;display:flex;flex-direction:column;gap:4px}.color-input-row{display:flex;gap:8px;align-items:center}.color-text-input{flex:1;min-width:0;padding:7px 10px;font-family:var(--font-mono);font-size:.8rem;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);outline:none;transition:border-color .2s}.color-text-input:focus{border-color:var(--accent)}.color-text-input.invalid{border-color:#d44}.color-native-picker{width:34px;height:34px;padding:0;border:1px solid var(--border);border-radius:6px;cursor:pointer;background:none;flex-shrink:0}.color-native-picker::-webkit-color-swatch-wrapper{padding:2px}.color-native-picker::-webkit-color-swatch{border:none;border-radius:4px}.color-lab-value{font-family:var(--font-mono);font-size:.72rem;color:var(--text-secondary)}.color-input-actions{display:flex;flex-direction:column;gap:4px;padding:8px 12px;flex-shrink:0}.btn-icon{width:32px;height:32px;border:1px solid var(--border);border-radius:6px;background:var(--surface);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:.9rem;transition:background .15s,border-color .15s}.btn-icon:hover{background:var(--bg);border-color:var(--accent)}.btn-icon.locked{background:#f0ece6;border-color:#c4b89c}.btn-remove{font-size:1.2rem;color:var(--text-secondary)}.btn-remove:hover{color:#c44;border-color:#c44}.section-header-actions{display:flex;gap:8px;align-items:center}.btn-clear{padding:6px 14px;border:1px solid var(--border);border-radius:6px;background:none;color:var(--text-secondary);font-size:.82rem;font-weight:500;cursor:pointer;transition:all .15s}.btn-clear:hover:not(:disabled){border-color:#c44;color:#c44;background:#fdf5f5}.btn-clear:disabled{opacity:.4;cursor:default}.btn-add{padding:8px 16px;border:1px dashed var(--border);border-radius:6px;background:none;color:var(--text-secondary);font-size:.85rem;font-weight:500;cursor:pointer;transition:all .15s}.btn-add:hover{border-color:var(--accent);color:var(--text);background:var(--surface)}.btn-generate{padding:10px 28px;background:var(--accent);color:#fff;border:none;border-radius:6px;font-size:.9rem;font-weight:600;cursor:pointer;transition:background .15s;letter-spacing:.01em}.btn-generate:hover{background:var(--accent-hover)}.btn-generate:active{transform:scale(.98)}.controls-bar{display:flex;align-items:flex-end;gap:24px;padding:20px 24px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);margin-bottom:32px;flex-wrap:wrap}.control-group{display:flex;flex-direction:column;gap:6px}.control-label{font-size:.78rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.control-select{padding:8px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);font-size:.85rem;font-family:var(--font);outline:none;cursor:pointer;min-width:180px}.control-select:focus{border-color:var(--accent)}.control-slider{width:160px;accent-color:var(--accent)}.palette-section{margin-top:8px}.palette-section h2{margin-bottom:16px}.swatch-strip{display:flex;flex-direction:column;gap:0;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-lg)}.swatch-strip-empty{padding:48px 24px;text-align:center;color:var(--text-secondary);background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius)}.swatch-card{display:flex;flex-direction:row;min-height:0}.swatch-color{flex:1;height:64px;position:relative;display:flex;align-items:center;justify-content:flex-end;padding:0 16px;transition:background-color .3s ease}.swatch-lock-badge{font-size:.75rem;opacity:.8}.swatch-info{width:200px;flex-shrink:0;background:var(--surface);padding:10px 16px;display:flex;flex-direction:column;justify-content:center;gap:2px;border-left:1px solid var(--border)}.swatch-hex{font-family:var(--font-mono);font-size:.78rem;font-weight:600;color:var(--text)}.swatch-lab{font-family:var(--font-mono);font-size:.68rem;color:var(--text-secondary)}.suggestion-card{margin-bottom:24px;border-radius:var(--radius);transition:box-shadow .2s}.suggestion-pinned{position:relative}.suggestion-pinned .swatch-strip{box-shadow:0 0 0 2px var(--accent),var(--shadow-lg)}.suggestion-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.suggestion-label{font-size:.82rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;display:flex;align-items:center;gap:8px}.pinned-badge{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--accent);background:#eae6df;padding:2px 7px;border-radius:4px}.suggestion-actions{display:flex;gap:6px;align-items:center}.btn-pin{display:flex;align-items:center;gap:4px;padding:4px 10px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text-secondary);font-size:.78rem;font-weight:500;cursor:pointer;transition:all .15s}.btn-pin:hover{border-color:var(--accent);color:var(--text)}.btn-pin.active{background:#eae6df;border-color:var(--accent);color:var(--accent)}.btn-pin-text{font-size:.75rem}.btn-dismiss{width:28px;height:28px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text-secondary);font-size:1.1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.btn-dismiss:hover{border-color:#c44;color:#c44;background:#fdf5f5}.room-selector-section{margin-bottom:24px}.room-selector-row{display:flex;gap:20px;flex-wrap:wrap}.harmony-score-bar{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:20px}.harmony-score-label{font-size:.78rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.harmony-score-track{flex:1;height:8px;background:var(--border);border-radius:4px;overflow:hidden}.harmony-score-fill{height:100%;border-radius:4px;background:var(--accent);transition:width .3s ease}.harmony-score-value{font-size:1.1rem;font-weight:700;color:var(--text);min-width:50px;text-align:right;display:flex;align-items:baseline;gap:4px}.harmony-score-text{font-size:.68rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase}.room-items-section{margin-bottom:32px}.room-items-list{display:flex;flex-direction:column;gap:4px;margin-bottom:16px}.room-item-row{display:flex;align-items:center;flex-wrap:wrap;gap:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:box-shadow .2s,border-color .2s}.room-item-row:hover{box-shadow:var(--shadow-sm)}.room-item-clash{border-color:#d4a}.room-item-swatch{width:120px;min-height:48px;flex-shrink:0;display:flex;align-items:center;justify-content:center;align-self:stretch;transition:background-color .3s ease;position:relative}.room-item-swatch-label{font-family:var(--font-mono);font-size:.62rem;font-weight:500;text-shadow:0 1px 2px rgba(0,0,0,.15)}.room-item-swatch-empty{color:var(--text-secondary);font-size:.65rem;font-family:var(--font);opacity:.6}.room-item-row:hover .room-item-swatch-empty{opacity:1}.room-item-name{flex:1;min-width:0;padding:4px 10px;font-size:.82rem;font-weight:500;border:1px solid transparent;border-radius:4px;background:none;color:var(--text);outline:none;font-family:var(--font);transition:border-color .15s}.room-item-name:focus{border-color:var(--border);background:var(--bg)}.weight-badge{width:24px;height:24px;border-radius:4px;border:1px solid var(--border);background:var(--bg);color:var(--text-secondary);font-size:.65rem;font-weight:700;font-family:var(--font);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s}.weight-badge:hover{border-color:var(--accent);color:var(--text)}.weight-large{background:#edecea}.weight-medium{background:#e6e2db}.weight-small{background:#dbd5cc}.tendency-select{padding:2px 6px;font-size:.62rem;font-family:var(--font);border:1px solid var(--border);border-radius:4px;background:var(--bg);color:var(--text-secondary);outline:none;cursor:pointer;flex-shrink:0}.tendency-select:hover{border-color:var(--accent)}.room-item-fit{font-size:.68rem;font-weight:600;letter-spacing:.04em;padding:2px 6px;border-radius:4px;white-space:nowrap;flex-shrink:0;min-width:28px;text-align:center;margin-right:4px}.fit-good{color:#3a7a3a;background:#e8f5e8}.fit-neutral{color:var(--text-secondary);background:var(--bg)}.fit-hurt{color:#a44;background:#fde8e8}.btn-pick-color{padding:4px 10px;border:1px solid var(--border);border-radius:4px;background:var(--surface);color:var(--text-secondary);font-size:.68rem;font-weight:500;font-family:var(--font);cursor:pointer;flex-shrink:0;transition:all .15s;margin-right:4px}.room-item-remove{width:28px;height:28px;padding:0;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-right:6px}.btn-pick-color:hover,.btn-pick-color.active{border-color:var(--accent);color:var(--text)}.palette-strip{width:100%;display:flex;align-items:center;gap:4px;padding:8px 10px;background:var(--bg);border-top:1px solid var(--border);flex-wrap:wrap}.palette-strip-swatch{width:32px;height:32px;border-radius:4px;border:2px solid transparent;cursor:pointer;transition:transform .1s,border-color .15s;flex-shrink:0}.palette-strip-swatch:hover{transform:scale(1.15);border-color:var(--accent)}.palette-strip-swatch.selected{border-color:var(--text);box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--text)}.palette-strip-unassign{width:32px;height:32px;border-radius:4px;border:1px dashed var(--border);background:var(--surface);color:var(--text-secondary);font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s}.palette-strip-unassign:hover{border-color:#a44;color:#a44}.palette-strip-browse{padding:4px 10px;border:1px solid var(--border);border-radius:4px;background:var(--surface);color:var(--text-secondary);font-size:.68rem;font-weight:500;font-family:var(--font);cursor:pointer;white-space:nowrap;flex-shrink:0;margin-left:auto;transition:all .15s}.palette-strip-hex{width:60px;padding:4px 6px;border:1px solid var(--border);border-radius:4px;background:var(--surface);color:var(--text);font-size:.68rem;font-family:var(--font-mono);outline:none;flex-shrink:0}.palette-strip-hex:focus{border-color:var(--accent)}.palette-strip-browse:hover{border-color:var(--accent);color:var(--text)}.item-catalog{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;margin-bottom:12px;display:flex;flex-direction:column;gap:10px}.item-catalog-group{display:flex;flex-direction:column;gap:4px}.item-catalog-label{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary)}.item-catalog-items{display:flex;flex-wrap:wrap;gap:4px}.item-catalog-btn{padding:4px 10px;border:1px solid var(--border);border-radius:4px;background:var(--bg);color:var(--text);font-size:.72rem;font-family:var(--font);cursor:pointer;transition:all .12s}.item-catalog-btn:hover{border-color:var(--accent);background:var(--surface)}.item-catalog-custom{border-style:dashed;color:var(--text-secondary)}.item-catalog-custom:hover{color:var(--text)}.swatch-picker-overlay{position:fixed;inset:0;background:#0000004d;display:flex;align-items:center;justify-content:center;z-index:100}.swatch-picker{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:20px;min-width:360px;max-width:520px;max-height:80vh;overflow-y:auto}.swatch-picker-header{display:flex;align-items:center;gap:8px;margin-bottom:16px}.swatch-picker-title{font-size:.95rem;font-weight:600;color:var(--text);flex:1}.swatch-picker-unassign{padding:4px 10px;border:1px solid var(--border);border-radius:4px;background:none;color:var(--text-secondary);font-size:.72rem;font-family:var(--font);cursor:pointer;transition:all .15s}.swatch-picker-unassign:hover{border-color:#c44;color:#c44}.swatch-picker-close{width:28px;height:28px;border:1px solid var(--border);border-radius:4px;background:none;color:var(--text-secondary);font-size:1.1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.swatch-picker-close:hover{border-color:var(--accent);color:var(--text)}.swatch-picker-tier{margin-bottom:14px}.swatch-picker-tier-label{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px;display:block}.tier-great .swatch-picker-tier-label{color:#3a7a3a}.tier-ok .swatch-picker-tier-label{color:var(--text-secondary)}.tier-avoid .swatch-picker-tier-label{color:#a44}.swatch-picker-tier-count{font-weight:400;margin-left:4px;opacity:.6}.swatch-picker-grid{display:flex;flex-wrap:wrap;gap:4px}.swatch-picker-item{width:38px;height:32px;border:2px solid transparent;border-radius:4px;cursor:pointer;display:flex;align-items:flex-start;justify-content:flex-end;transition:all .12s;padding:3px;position:relative}.swatch-picker-item:hover{border-color:var(--accent);transform:scale(1.12);z-index:1}.swatch-picker-item.selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.swatch-picker-item.in-palette{border-color:var(--border)}.swatch-palette-dot{width:5px;height:5px;border-radius:50%;opacity:.7}.room-item-remove{margin-right:6px;flex-shrink:0}.autofill-controls{display:flex;gap:10px;align-items:stretch}.autofill-algo{min-width:200px}.btn-autofill{flex:1;padding:10px 20px;font-size:.9rem}.btn-autofill:disabled{opacity:.5;cursor:default}@media(max-width:640px){.app{padding:24px 16px 60px}.app-header h1{font-size:1.6rem}.controls-bar{flex-direction:column;align-items:stretch;gap:16px}.control-slider{width:100%}.control-select{min-width:unset;width:100%}.swatch-info{width:140px}.color-input-swatch{width:60px}.room-selector-row{flex-direction:column}.room-item-color-select{min-width:90px}}
