*{margin:0;padding:0;box-sizing:border-box}:root{--bg: #f7f5f1;--surface: #ffffff;--text: #080605;--text-muted: #6d7175;--border: #f4f0e8;--primary: #080605;--primary-hover-bg: #e3dbd2;--primary-hover-border: #e3dbd2;--danger: #d72c0d;--slot-bg: #faf8f5;--font-serif: "IvarText-Regular", Georgia, "Times New Roman", serif;--font-heading: "IvarSoft-Regular", Georgia, serif;--font-sans: "MaisonNeue-Bold", "Helvetica Neue", Arial, sans-serif}body{font-family:var(--font-serif);background:var(--bg);color:var(--text);line-height:1.5}.login-screen{display:flex;align-items:center;justify-content:center;min-height:100vh}.login-card{background:var(--surface);border:1px solid var(--border);padding:40px;width:360px}.login-card h1{font-family:var(--font-heading);font-size:22px;font-weight:400;margin-bottom:24px;text-align:center}.login-card p{color:var(--text-muted);margin-bottom:1.5rem;font-size:14px}.login-card input{width:100%;padding:10px 12px;border:1px solid var(--border);font-family:var(--font-serif);font-size:14px;margin-bottom:16px}.login-card input:focus{outline:none;border-color:var(--text)}.login-card button{width:100%;padding:13px 20px;background:var(--primary);color:#fff;border:1px solid var(--primary);font-family:var(--font-sans);font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:1px;cursor:pointer;transition:all .2s}.login-card button:hover{background:var(--primary-hover-bg);border-color:var(--primary-hover-border);color:var(--text)}.login-error{color:var(--danger);font-size:13px;margin-bottom:.5rem}.app-layout{display:flex;height:100vh}.canvas-area{flex:1;display:flex;flex-direction:column;padding:1rem;overflow:hidden}.sidebar{width:380px;min-width:380px;background:var(--surface);border-left:1px solid var(--border);display:flex;flex-direction:column;overflow-y:auto}.sidebar-header{padding:1rem 1.25rem;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.sidebar-header h2{font-family:var(--font-heading);font-size:18px;font-weight:400}.sidebar-body{padding:1rem 1.25rem;flex:1;overflow-y:auto}.toolbar{display:flex;gap:.5rem;margin-bottom:.75rem;align-items:center;flex-wrap:wrap}.toolbar-spacer{flex:1}.btn{display:inline-flex;align-items:center;gap:.4rem;padding:10px 20px;border:1px solid var(--primary);font-family:var(--font-sans);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:1px;cursor:pointer;background:var(--surface);color:var(--text);white-space:nowrap;transition:all .2s}.btn:hover{background:var(--border)}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary:hover{background:var(--primary-hover-bg);border-color:var(--primary-hover-border);color:var(--text)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-danger{color:var(--danger);border-color:transparent;background:none;padding:4px 8px;font-size:11px}.btn-danger:hover{background:#fef2f2}.btn-sm{padding:6px 14px;font-size:11px}.btn:disabled{opacity:.5;cursor:not-allowed}.canvas-container{flex:1;position:relative;background:var(--border);overflow:hidden;display:flex;align-items:center;justify-content:center}.canvas-container canvas{max-width:100%;max-height:100%;object-fit:contain}.canvas-container.eyedropper-active{cursor:crosshair}.uploader{border:2px dashed var(--border);padding:3rem;text-align:center;cursor:pointer;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;transition:border-color .2s}.uploader:hover,.uploader.drag-over{border-color:var(--text)}.uploader h3{font-family:var(--font-heading);font-size:18px;font-weight:400;margin-bottom:.5rem}.uploader p{color:var(--text-muted);font-size:14px}.mapping-row{background:var(--slot-bg);border:1px solid var(--border);padding:.75rem;margin-bottom:.75rem}.mapping-row-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.color-swatch{width:28px;height:28px;border:1px solid rgba(0,0,0,.15);flex-shrink:0}.mapping-arrow{color:var(--text-muted);font-size:1.1rem}.mapping-controls{display:flex;flex-direction:column;gap:.5rem;margin-top:.5rem}.slider-row{display:flex;align-items:center;gap:.5rem;font-size:13px}.slider-row label{width:100px;color:var(--text-muted);flex-shrink:0;font-family:var(--font-sans);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;margin-bottom:0}.slider-row input[type=range]{flex:1;accent-color:var(--primary)}.slider-row .slider-value{width:36px;text-align:right;font-variant-numeric:tabular-nums;font-family:SF Mono,Consolas,monospace;font-size:12px}.yarn-picker{display:flex;flex-direction:column;gap:.4rem}.yarn-picker select{padding:8px 10px;border:1px solid var(--border);font-family:var(--font-serif);font-size:14px;background:#fff;color:var(--text)}.yarn-picker select:focus{outline:none;border-color:var(--text)}.yarn-picker .color-option{display:flex;align-items:center;gap:.4rem}.mask-toggle{display:flex;align-items:center;gap:.4rem;font-size:13px;color:var(--text-muted)}.mask-toggle input[type=checkbox]{accent-color:var(--primary)}.status-bar{padding:.5rem 1rem;font-size:14px;color:var(--text-muted);background:var(--surface);border-top:1px solid var(--border);font-family:var(--font-serif);font-style:italic}.toast{position:fixed;bottom:1.5rem;right:1.5rem;background:var(--text);color:#fff;padding:.75rem 1.25rem;font-size:14px;font-family:var(--font-serif);z-index:1000;animation:fadeIn .2s}.toast.error{background:var(--danger)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.view-toggle{display:flex;border:1px solid var(--border);overflow:hidden}.view-toggle button{padding:8px 16px;border:none;background:var(--surface);font-family:var(--font-sans);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1px;cursor:pointer;color:var(--text-muted);transition:all .2s}.view-toggle button:hover{color:var(--text)}.view-toggle button.active{background:var(--primary);color:#fff}.eyedropper-preview{position:absolute;pointer-events:none;display:flex;align-items:center;gap:6px;background:#000c;color:#fff;padding:4px 8px;font-size:12px;font-family:SF Mono,Consolas,monospace;white-space:nowrap;z-index:10}.eyedropper-preview__swatch{width:32px;height:32px;border:1px solid rgba(255,255,255,.4);flex-shrink:0}.eyedropper-preview__label{line-height:1}.empty-state{text-align:center;padding:2rem 1rem;color:var(--text-muted);font-size:14px;font-family:var(--font-serif);font-style:italic}
