:root{--font-main: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--stone-50: #fafaf9;--stone-100: #f5f5f4;--stone-200: #e7e5e4;--stone-300: #d6d3d1;--stone-400: #a8a29e;--stone-500: #78716c;--stone-600: #57534e;--stone-700: #44403c;--stone-800: #292524;--stone-900: #1c1917;--indigo-50: #eef2ff;--indigo-100: #e0e7ff;--indigo-400: #818cf8;--indigo-500: #6366f1;--indigo-600: #4f46e5;--red-50: #fef2f2;--red-500: #ef4444;--red-600: #dc2626;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .07), 0 2px 4px -2px rgba(0, 0, 0, .05);--shadow-lg: 0 10px 25px -5px rgba(0, 0, 0, .08), 0 8px 10px -6px rgba(0, 0, 0, .04);--shadow-canvas: 0 20px 50px rgba(0, 0, 0, .15);--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-normal: .25s cubic-bezier(.4, 0, .2, 1);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 18px;--radius-full: 9999px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;overflow:hidden}body{font-family:var(--font-main);background:var(--stone-100);color:var(--stone-800);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app-container{display:flex;flex-direction:column;height:100vh}.app-header{display:flex;justify-content:space-between;align-items:center;padding:14px 24px;background:#fff;border-bottom:1px solid var(--stone-200);box-shadow:var(--shadow-sm);z-index:10;flex-shrink:0}.header-left{display:flex;align-items:center;gap:10px}.header-left svg{width:24px;height:24px;color:var(--indigo-500)}.header-title{font-size:18px;font-weight:700;letter-spacing:-.02em}.header-badge{font-size:11px;font-weight:500;color:#fff;background:linear-gradient(135deg,var(--indigo-500),#a855f7);padding:2px 8px;border-radius:var(--radius-full);margin-left:8px;letter-spacing:.03em}.btn-reset{display:flex;align-items:center;gap:6px;padding:7px 14px;border:1px solid var(--stone-200);border-radius:var(--radius-md);background:var(--stone-50);color:var(--stone-600);font-size:13px;font-weight:500;cursor:pointer;transition:all var(--transition-fast);font-family:var(--font-main)}.btn-reset:hover{background:var(--red-50);color:var(--red-600);border-color:var(--red-500)}.btn-reset svg{width:15px;height:15px}.main-area{flex:1;display:flex;overflow:hidden}.sidebar{width:300px;background:#fff;border-right:1px solid var(--stone-200);padding:20px;display:flex;flex-direction:column;gap:20px;overflow-y:auto;flex-shrink:0}.sidebar::-webkit-scrollbar{width:4px}.sidebar::-webkit-scrollbar-track{background:transparent}.sidebar::-webkit-scrollbar-thumb{background:var(--stone-300);border-radius:10px}.section-header{display:flex;align-items:center;gap:8px;margin-bottom:12px}.section-header svg{width:16px;height:16px;color:var(--indigo-500)}.section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--stone-400)}.color-picker-area{display:flex;align-items:center;gap:12px;margin-bottom:12px}.color-picker-input{-webkit-appearance:none;appearance:none;width:48px;height:48px;border:2px solid var(--stone-200);border-radius:var(--radius-md);cursor:pointer;padding:2px;background:#fff;transition:border-color var(--transition-fast)}.color-picker-input:hover{border-color:var(--indigo-400)}.color-picker-input::-webkit-color-swatch-wrapper{padding:0}.color-picker-input::-webkit-color-swatch{border:none;border-radius:6px}.color-hex{font-size:13px;font-weight:700;color:var(--stone-500);font-variant-numeric:tabular-nums;font-family:Courier New,monospace}.preset-palette{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}.preset-swatch{width:100%;aspect-ratio:1;border-radius:var(--radius-sm);border:2px solid transparent;cursor:pointer;transition:all var(--transition-fast);box-shadow:inset 0 2px 4px #00000026}.preset-swatch:hover{transform:scale(1.15);box-shadow:0 2px 8px #0003}.preset-swatch.active{border-color:#fff;outline:2px solid var(--indigo-500);outline-offset:1px;transform:scale(1.1)}.texture-controls{margin-bottom:12px}.texture-upload-btn{display:flex;align-items:center;justify-content:center;gap:6px;padding:10px 14px;border:1.5px dashed var(--stone-300);border-radius:var(--radius-md);background:#fff;color:var(--stone-500);font-size:12px;font-weight:500;cursor:pointer;transition:all var(--transition-fast);font-family:var(--font-main);width:100%}.texture-upload-btn:hover{border-color:var(--indigo-400);color:var(--indigo-600);background:var(--indigo-50)}.texture-preview{margin-top:8px;border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--stone-200)}.texture-preview img{width:100%;height:60px;object-fit:cover}.card-section{background:var(--stone-50);padding:16px;border-radius:var(--radius-lg);border:1px solid var(--stone-100)}.slider-group{display:flex;flex-direction:column;gap:14px}.slider-row{display:flex;flex-direction:column}.slider-label-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.slider-label{font-size:11px;font-weight:500;color:var(--stone-500)}.slider-value{font-size:11px;font-weight:700;color:var(--indigo-600);font-variant-numeric:tabular-nums}input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--stone-200);border-radius:2px;outline:none;cursor:pointer}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;background:var(--indigo-500);border-radius:50%;border:2px solid white;box-shadow:0 1px 4px #00000026;cursor:pointer;transition:transform var(--transition-fast)}input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.25)}input[type=range]::-moz-range-thumb{width:14px;height:14px;background:var(--indigo-500);border-radius:50%;border:2px solid white;box-shadow:0 1px 4px #00000026;cursor:pointer}.toggle-row{display:flex;justify-content:space-between;align-items:center;padding-top:16px;border-top:1px solid var(--stone-100);cursor:pointer}.toggle-label{font-size:13px;font-weight:500;color:var(--stone-600)}.toggle-track{width:40px;height:22px;border-radius:var(--radius-full);position:relative;transition:background var(--transition-fast);flex-shrink:0}.toggle-track.on{background:var(--indigo-500)}.toggle-track.off{background:var(--stone-300)}.toggle-thumb{position:absolute;top:3px;width:16px;height:16px;background:#fff;border-radius:50%;transition:left var(--transition-fast);box-shadow:0 1px 3px #00000026}.toggle-track.on .toggle-thumb{left:21px}.toggle-track.off .toggle-thumb{left:3px}.canvas-area{flex:1;background:var(--stone-200);position:relative;display:flex;align-items:center;justify-content:center;overflow:auto;padding:48px}.canvas-frame{background:#fff;box-shadow:var(--shadow-canvas);position:relative;overflow:hidden;border-radius:3px;outline:8px solid white;outline-offset:0}.canvas-overlay{position:absolute;inset:0;pointer-events:none;opacity:0}canvas{display:block;cursor:none;position:absolute;top:0;left:0;z-index:1}.cursor-canvas{display:block;position:absolute;top:0;left:0;z-index:2;cursor:none;pointer-events:auto}.canvas-frame{position:relative}.status-bar{position:absolute;bottom:24px;right:24px;background:#ffffffeb;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);padding:10px 16px;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);border:1px solid var(--stone-200);display:flex;gap:20px;font-size:10px}.status-item{display:flex;flex-direction:column;gap:2px}.status-label{color:var(--stone-400);text-transform:uppercase;letter-spacing:.06em;font-weight:500}.status-value{font-weight:700;color:var(--stone-800)}.loading-overlay{position:fixed;inset:0;background:#fffffff2;backdrop-filter:blur(20px);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:100;gap:16px}.loading-spinner{width:40px;height:40px;border:3px solid var(--stone-200);border-top-color:var(--indigo-500);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{font-size:14px;font-weight:500;color:var(--stone-500)}.loading-sub{font-size:11px;color:var(--stone-400);margin-top:-8px}.error-overlay{position:fixed;inset:0;background:#fffffff2;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:100;gap:12px;padding:40px}.error-title{font-size:18px;font-weight:700;color:var(--red-600)}.error-message{font-size:13px;color:var(--stone-500);text-align:center;max-width:500px;line-height:1.6}
