.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000c;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-lg);animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);max-width:600px;width:100%;max-height:80vh;overflow-y:auto;position:relative;animation:slideUp .3s ease}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal-close{position:absolute;top:var(--space-md);right:var(--space-md);width:32px;height:32px;background:var(--bg-tertiary);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);color:var(--text-muted);font-size:1.2rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:var(--transition-fast)}.modal-close:hover{background:var(--bg-elevated);color:var(--text-primary)}.modal-header{padding:var(--space-lg);border-bottom:1px solid var(--border-subtle)}.modal-header h2{font-size:1.25rem;font-weight:600;color:var(--text-primary);margin:0}.modal-body{padding:var(--space-lg)}.info-section{margin-bottom:var(--space-lg)}.info-section:last-child{margin-bottom:0}.info-section h3{font-size:.9rem;font-weight:600;color:var(--text-primary);margin-bottom:var(--space-sm)}.info-section p{font-size:.85rem;color:var(--text-secondary);line-height:1.6;margin:0}.info-section strong{color:var(--text-primary)}.tech-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-sm)}.tech-item{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm);background:var(--bg-primary);border-radius:var(--radius-sm)}.tech-icon{font-size:1.2rem}.tech-item div{display:flex;flex-direction:column}.tech-item strong{font-size:.8rem;color:var(--text-primary)}.tech-item span:last-child{font-size:.7rem;color:var(--text-muted)}.feature-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--space-xs)}.feature-list li{font-size:.8rem;color:var(--text-secondary);padding:var(--space-xs) 0}.modal-footer{padding:var(--space-md) var(--space-lg);border-top:1px solid var(--border-subtle);text-align:center}.modal-footer p{font-size:.75rem;color:var(--text-muted);margin:0}.author-link{color:var(--accent-primary);text-decoration:none;font-weight:600;transition:var(--transition-fast)}.author-link:hover{color:var(--accent-secondary);text-decoration:underline}@media (max-width: 600px){.tech-grid{grid-template-columns:1fr}}.header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-sm) var(--space-lg);background:var(--bg-secondary);border-bottom:1px solid var(--border-subtle);gap:var(--space-md);flex-wrap:wrap}.header-brand{display:flex;align-items:center}.logo{display:flex;align-items:center;gap:var(--space-sm)}.logo-icon{width:36px;height:36px;flex-shrink:0}.logo-svg{width:100%;height:100%;filter:drop-shadow(0 2px 8px rgba(232,93,76,.3))}.logo-text{display:flex;flex-direction:column;line-height:1.2}.logo-text h1{font-size:1.1rem;font-weight:600;letter-spacing:-.02em;margin:0;color:var(--text-primary)}.logo-highlight{color:var(--accent-primary)}.logo-tagline{font-size:.6rem;color:var(--text-muted);letter-spacing:.02em}.header-stats{display:flex;align-items:center;gap:var(--space-md);background:var(--bg-primary);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-md);border:1px solid var(--border-subtle)}.stat{display:flex;align-items:baseline;gap:var(--space-xs)}.stat-value{font-family:var(--font-mono);font-size:.9rem;font-weight:600;color:var(--accent-secondary)}.stat-label{font-size:.6rem;color:var(--text-muted);text-transform:uppercase}.stat-divider{width:1px;height:16px;background:var(--border-subtle)}.header-actions{display:flex;gap:var(--space-sm)}.header-btn{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);background:var(--bg-primary);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);color:var(--text-secondary);font-family:var(--font-sans);font-size:.75rem;font-weight:500;text-decoration:none;cursor:pointer;transition:var(--transition-fast)}.header-btn:hover{background:var(--bg-tertiary);color:var(--text-primary);border-color:var(--border-accent)}.header-btn.docs-btn{background:linear-gradient(135deg,#e85d4c26,#fbbf241a);border-color:#e85d4c4d;color:var(--accent-primary)}.header-btn.docs-btn:hover{background:linear-gradient(135deg,#e85d4c40,#fbbf2426);border-color:var(--accent-primary)}.header-btn span:first-child{font-size:.9rem}@media (max-width: 900px){.header{padding:var(--space-sm) var(--space-md);gap:var(--space-sm)}.header-stats{gap:var(--space-sm);padding:var(--space-xs) var(--space-sm)}.stat-value{font-size:.8rem}.stat-label{font-size:.55rem}}@media (max-width: 768px){.header{justify-content:center;gap:var(--space-sm);padding:var(--space-sm)}.header-stats{order:3;width:100%;justify-content:center;flex-wrap:wrap}.logo-tagline{display:none}.header-btn span:last-child{display:none}.logo-icon{width:32px;height:32px}.logo-text h1{font-size:1rem}}@media (max-width: 640px){.header{padding:var(--space-xs) var(--space-sm)}.header-brand{flex:1}.header-actions{gap:var(--space-xs)}.header-btn{padding:var(--space-xs)}.header-stats{gap:var(--space-xs);padding:var(--space-xs)}.stat{gap:2px}.stat-value{font-size:.75rem}.stat-label{font-size:.5rem}.stat-divider{height:12px}}@media (max-width: 480px){.header{flex-direction:row;flex-wrap:wrap;justify-content:space-between}.header-brand{flex:initial}.logo-icon{width:28px;height:28px}.logo-text h1{font-size:.9rem}.header-stats{order:3;justify-content:space-around;padding:var(--space-xs) var(--space-sm);margin-top:var(--space-xs)}}@media (max-width: 360px){.header-stats{flex-direction:row;gap:var(--space-sm)}.stat-divider{display:none}.stat{flex-direction:column;align-items:center;gap:0}.stat-value{font-size:.7rem}.stat-label{font-size:.45rem}}.scene-toolbar{display:flex;align-items:center;justify-content:space-between;padding:var(--space-sm) var(--space-md);background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);margin-bottom:var(--space-md);gap:var(--space-md);flex-wrap:wrap}.toolbar-section{display:flex;align-items:center;gap:var(--space-md)}.toolbar-label{font-size:.7rem;font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}.preset-buttons{display:flex;gap:4px;background:var(--bg-primary);padding:4px;border-radius:var(--radius-md);flex-wrap:wrap}.preset-btn{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-muted);font-family:var(--font-sans);font-size:.75rem;font-weight:500;cursor:pointer;transition:var(--transition-fast)}.preset-btn:hover{background:var(--bg-tertiary);color:var(--text-secondary)}.preset-btn.active{background:var(--accent-primary);color:#fff}.preset-btn:disabled{opacity:.5;cursor:not-allowed}.preset-icon{font-size:1rem}.preset-name{display:none}@media (min-width: 600px){.preset-name{display:inline}}.toolbar-info{display:flex;gap:var(--space-sm)}.info-chip{display:flex;align-items:center;gap:var(--space-xs);font-family:var(--font-mono);font-size:.7rem;color:var(--text-muted);background:var(--bg-primary);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm)}.chip-icon{color:var(--accent-primary)}@media (max-width: 900px){.scene-toolbar{padding:var(--space-xs) var(--space-sm);gap:var(--space-sm);margin-bottom:var(--space-sm);border-radius:var(--radius-md)}.toolbar-section{gap:var(--space-sm)}.toolbar-label{display:none}}@media (max-width: 768px){.scene-toolbar{justify-content:center}.toolbar-info{display:none}.preset-buttons{padding:3px;gap:3px}.preset-btn{padding:var(--space-xs)}.preset-icon{font-size:.9rem}}@media (max-width: 640px){.scene-toolbar{padding:var(--space-xs);border-radius:var(--radius-sm);margin-bottom:var(--space-xs)}.preset-buttons{width:100%;justify-content:center}}@media (max-width: 480px){.preset-btn{padding:6px}.preset-icon{font-size:.85rem}}@media (max-width: 360px){.preset-buttons{padding:2px;gap:2px}.preset-btn{padding:5px}.preset-icon{font-size:.8rem}}.canvas-container{flex:1;display:flex;align-items:center;justify-content:center;position:relative;width:100%;height:100%;padding:var(--space-sm)}.raytracer-canvas{display:block;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg),0 0 80px #e85d4c14;background:var(--bg-tertiary);cursor:grab;image-rendering:auto;max-width:100%;max-height:100%;object-fit:contain}.raytracer-canvas.dragging{cursor:grabbing}.canvas-badge{position:absolute;font-family:var(--font-mono);font-size:.65rem;color:#ffffff80;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:4px 8px;border-radius:var(--radius-sm);pointer-events:none;white-space:nowrap}.canvas-badge.top-left{top:var(--space-md);left:var(--space-md);transform:none}.canvas-badge.bottom-right{bottom:var(--space-md);left:50%;transform:translate(-50%);font-family:var(--font-sans);font-size:.7rem}@media (max-width: 900px){.canvas-container{padding:var(--space-xs)}.raytracer-canvas{border-radius:var(--radius-md);box-shadow:var(--shadow-md)}.canvas-badge{font-size:.6rem;padding:3px 6px}.canvas-badge.top-left{top:var(--space-sm);left:var(--space-sm)}.canvas-badge.bottom-right{bottom:var(--space-sm);font-size:.6rem}}@media (max-width: 640px){.canvas-container{padding:var(--space-xs)}.raytracer-canvas{border-radius:var(--radius-sm);box-shadow:var(--shadow-sm)}.canvas-badge{font-size:.55rem;padding:2px 5px}.canvas-badge.bottom-right{font-size:.55rem}}@media (max-width: 480px){.canvas-badge.top-left{top:var(--space-xs);left:var(--space-xs)}.canvas-badge.bottom-right{bottom:var(--space-xs)}}@media (max-width: 360px){.canvas-badge.bottom-right{display:none}}@media (max-height: 600px) and (orientation: landscape){.canvas-container{padding:var(--space-xs)}.canvas-badge{font-size:.55rem;padding:2px 4px}}.tabs{display:flex;background:var(--bg-primary);border-bottom:1px solid var(--border-subtle);overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}.tabs::-webkit-scrollbar{display:none}.tab{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-xs);background:transparent;border:none;color:var(--text-muted);font-family:var(--font-sans);font-size:.65rem;font-weight:500;text-transform:uppercase;letter-spacing:.03em;cursor:pointer;transition:var(--transition-fast);position:relative;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;min-width:0}.tab:hover{color:var(--text-secondary);background:var(--bg-tertiary)}.tab.active{color:var(--text-primary);border-bottom-color:var(--accent-primary)}.tab-icon{font-size:.85rem;line-height:1;flex-shrink:0}.tab-label{overflow:hidden;text-overflow:ellipsis}@media (max-width: 900px){.tab{padding:var(--space-sm) var(--space-xs);font-size:.6rem;gap:3px}.tab-icon{font-size:.8rem}}@media (max-width: 640px){.tab{padding:var(--space-xs);font-size:.55rem;gap:2px}.tab-icon{font-size:.75rem}.tab-label{font-size:.5rem;letter-spacing:0}}@media (max-width: 480px){.tab-label{display:none}.tab{padding:var(--space-sm);gap:0}.tab-icon{font-size:.9rem}}@media (max-width: 360px){.tab{padding:var(--space-xs)}.tab-icon{font-size:.85rem}}.slider-group{display:flex;flex-direction:column;gap:var(--space-xs)}.slider-header{display:flex;justify-content:space-between;align-items:center}.slider-header label{font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em;font-weight:500}.slider-value{font-family:var(--font-mono);font-size:.8rem;font-weight:600}.slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:4px;background:var(--bg-primary);border-radius:2px;outline:none;cursor:pointer;transition:var(--transition-fast)}.slider:hover{background:var(--bg-elevated)}.slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:14px;height:14px;background:var(--slider-color, var(--accent-primary));border-radius:50%;cursor:pointer;box-shadow:0 2px 6px #0006;transition:var(--transition-fast);border:2px solid var(--bg-secondary)}.slider::-webkit-slider-thumb:hover{transform:scale(1.2)}.slider::-moz-range-thumb{width:14px;height:14px;background:var(--slider-color, var(--accent-primary));border-radius:50%;cursor:pointer;box-shadow:0 2px 6px #0006;transition:var(--transition-fast);border:2px solid var(--bg-secondary)}.slider:disabled{opacity:.5;cursor:not-allowed}@media (max-width: 768px){.slider-header label{font-size:.7rem}.slider-value{font-size:.75rem}.slider::-webkit-slider-thumb{width:16px;height:16px}.slider::-moz-range-thumb{width:16px;height:16px}}@media (max-width: 480px){.slider-header label{font-size:.65rem}.slider-value{font-size:.7rem}.slider{height:5px}.slider::-webkit-slider-thumb{width:18px;height:18px}.slider::-moz-range-thumb{width:18px;height:18px}}.control-section{padding:var(--space-md);display:flex;flex-direction:column;gap:var(--space-md)}.control-group{display:flex;flex-direction:column;gap:var(--space-md)}.control-row{display:flex;justify-content:space-between;align-items:center}.control-info{display:flex;justify-content:space-between;align-items:center;padding:var(--space-sm) var(--space-md);background:var(--bg-primary);border-radius:var(--radius-sm)}.info-label{font-size:.7rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}.info-value{font-family:var(--font-mono);font-size:.75rem;color:var(--text-secondary)}.info-tag{background:var(--bg-tertiary);padding:.2em .6em;border-radius:var(--radius-sm)}.control-divider{height:1px;background:var(--border-subtle);margin:var(--space-xs) 0}.preset-chips{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.chip{padding:var(--space-xs) var(--space-sm);background:var(--bg-primary);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);color:var(--text-secondary);font-family:var(--font-sans);font-size:.7rem;font-weight:500;cursor:pointer;transition:var(--transition-fast)}.chip:hover{background:var(--bg-tertiary);border-color:var(--border-accent);color:var(--text-primary)}.chip:disabled{opacity:.5;cursor:not-allowed}.chip-active{background:var(--accent-primary);border-color:var(--accent-primary);color:#fff}.chip-active:hover{background:var(--accent-primary);opacity:.9}.preset-section{display:flex;flex-direction:column;gap:var(--space-sm)}.group-label{font-size:.7rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:500}.color-grid{display:flex;gap:6px;flex-wrap:wrap}.color-btn{width:32px;height:32px;border-radius:var(--radius-sm);border:2px solid transparent;cursor:pointer;transition:var(--transition-fast);box-shadow:inset 0 0 0 1px #ffffff1a}.color-btn:hover{transform:scale(1.1);box-shadow:0 0 12px #fff3}.color-btn.active{border-color:#fff;box-shadow:0 0 0 2px var(--accent-primary)}.color-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.scene-presets{display:flex;flex-direction:column;gap:var(--space-xs)}.scene-preset-btn{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--bg-primary);border:1px solid var(--border-subtle);border-radius:var(--radius-md);cursor:pointer;transition:var(--transition-fast);text-align:left}.scene-preset-btn:hover{background:var(--bg-tertiary);border-color:var(--border-accent)}.scene-preset-btn.active{background:var(--bg-tertiary);border-color:var(--accent-primary);box-shadow:0 0 0 1px var(--accent-primary)}.scene-preset-btn:disabled{opacity:.5;cursor:not-allowed}.preset-icon{font-size:1.2rem;width:32px;text-align:center}.preset-info{display:flex;flex-direction:column;gap:2px}.preset-name{font-size:.8rem;font-weight:500;color:var(--text-primary)}.preset-desc{font-size:.65rem;color:var(--text-muted)}.button-group{display:flex;gap:2px;background:var(--bg-primary);padding:2px;border-radius:var(--radius-sm)}.size-btn{padding:var(--space-xs) var(--space-sm);background:transparent;border:none;color:var(--text-muted);font-family:var(--font-mono);font-size:.7rem;cursor:pointer;border-radius:var(--radius-sm);transition:var(--transition-fast)}.size-btn:hover{color:var(--text-secondary)}.size-btn.active{background:var(--accent-primary);color:#fff}.size-btn:disabled{opacity:.5;cursor:not-allowed}.resolution-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.res-btn{padding:var(--space-sm);background:var(--bg-primary);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);color:var(--text-muted);font-family:var(--font-mono);font-size:.7rem;cursor:pointer;transition:var(--transition-fast)}.res-btn:hover{background:var(--bg-tertiary);color:var(--text-secondary)}.res-btn.active{background:var(--accent-primary);border-color:var(--accent-primary);color:#fff}.res-btn:disabled{opacity:.5;cursor:not-allowed}.resolution-note{font-size:.65rem;color:var(--text-muted);margin:0;text-align:center}.aa-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.aa-btn{padding:var(--space-sm);background:var(--bg-primary);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);color:var(--text-muted);font-family:var(--font-mono);font-size:.75rem;font-weight:500;cursor:pointer;transition:var(--transition-fast)}.aa-btn:hover{background:var(--bg-tertiary);color:var(--text-secondary);border-color:var(--border-accent)}.aa-btn.active{background:linear-gradient(135deg,#10b981,#059669);border-color:#10b981;color:#fff;box-shadow:0 0 12px #10b9814d}.aa-btn:disabled{opacity:.5;cursor:not-allowed}.aa-info{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);font-size:.65rem;color:var(--text-muted);margin:0}.aa-samples{font-family:var(--font-mono);color:var(--text-secondary)}.aa-warning{color:#f59e0b}.shadow-samples-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.shadow-sample-btn{padding:var(--space-sm);background:var(--bg-primary);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);color:var(--text-muted);font-family:var(--font-mono);font-size:.7rem;font-weight:500;cursor:pointer;transition:var(--transition-fast)}.shadow-sample-btn:hover{background:var(--bg-tertiary);color:var(--text-secondary);border-color:var(--border-accent)}.shadow-sample-btn.active{background:linear-gradient(135deg,#f59e0b,#d97706);border-color:#f59e0b;color:#fff;box-shadow:0 0 12px #f59e0b4d}.shadow-sample-btn:disabled{opacity:.5;cursor:not-allowed}.soft-shadow-info{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);font-size:.65rem;color:var(--text-muted);margin:0}.shadow-rays{font-family:var(--font-mono);color:var(--text-secondary)}.shadow-warning{color:#f59e0b}.control-actions{display:flex;gap:var(--space-sm)}.action-btn{flex:1;padding:var(--space-sm);background:var(--bg-primary);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);color:var(--text-secondary);font-family:var(--font-sans);font-size:.75rem;font-weight:500;cursor:pointer;transition:var(--transition-fast)}.action-btn:hover{background:var(--bg-tertiary);border-color:var(--accent-primary);color:var(--text-primary)}.action-btn:disabled{opacity:.5;cursor:not-allowed}.control-hint{font-size:.7rem;color:var(--text-muted);text-align:center;padding:var(--space-sm);background:var(--bg-primary);border-radius:var(--radius-sm);margin:0}.light-selector{display:flex;align-items:center;gap:var(--space-sm)}.light-tabs{display:flex;flex:1;gap:4px;background:var(--bg-primary);padding:3px;border-radius:var(--radius-sm)}.light-tab{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:6px 8px;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-muted);font-family:var(--font-sans);font-size:.7rem;font-weight:500;cursor:pointer;transition:var(--transition-fast)}.light-tab:hover{color:var(--text-secondary);background:var(--bg-tertiary)}.light-tab.active{background:var(--bg-tertiary);color:var(--text-primary)}.light-indicator{width:10px;height:10px;border-radius:50%;background:var(--light-color, white);box-shadow:0 0 8px var(--light-color, white)}.light-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.light-actions{display:flex;gap:2px}.light-action-btn{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--bg-primary);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);color:var(--text-muted);font-size:1.1rem;font-weight:600;cursor:pointer;transition:var(--transition-fast)}.light-action-btn:hover:not(:disabled){background:var(--bg-tertiary);color:var(--text-primary)}.light-action-btn.add:hover:not(:disabled){border-color:#4ecdc4;color:#4ecdc4}.light-action-btn.remove:hover:not(:disabled){border-color:#ff6b6b;color:#ff6b6b}.light-action-btn:disabled{opacity:.4;cursor:not-allowed}.light-color-grid{display:flex;gap:6px;flex-wrap:wrap}.light-color-btn{width:28px;height:28px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:var(--transition-fast);box-shadow:0 0 8px #ffffff26}.light-color-btn:hover{transform:scale(1.15);box-shadow:0 0 12px #ffffff4d}.light-color-btn.active{border-color:#fff;box-shadow:0 0 12px #fff6}.light-color-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.subsection{display:flex;flex-direction:column;gap:var(--space-sm)}.subsection-label{font-size:.7rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:500}@media (max-width: 900px){.control-section{padding:var(--space-sm);gap:var(--space-sm)}.control-group{gap:var(--space-sm)}.resolution-grid{grid-template-columns:repeat(4,1fr)}.aa-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width: 768px){.control-section{padding:var(--space-sm)}.group-label{font-size:.65rem}.res-btn,.aa-btn{padding:var(--space-xs);font-size:.65rem}.resolution-note,.aa-info{font-size:.6rem}.light-tabs{padding:2px;gap:2px}.light-tab{padding:5px 6px;font-size:.65rem;gap:4px}.light-indicator{width:8px;height:8px}.light-action-btn{width:26px;height:26px;font-size:1rem}.light-color-btn{width:26px;height:26px}.color-btn{width:28px;height:28px}}@media (max-width: 640px){.control-section{padding:var(--space-xs) var(--space-sm)}.control-divider{margin:var(--space-xs) 0}.resolution-grid{grid-template-columns:repeat(4,1fr);gap:3px}.aa-grid{grid-template-columns:repeat(3,1fr);gap:3px}.res-btn,.aa-btn{padding:6px 4px;font-size:.6rem}.light-selector{flex-wrap:wrap;gap:var(--space-xs)}.light-tabs{flex:1;min-width:0;order:1}.light-actions{order:2}.light-tab{padding:4px 5px;font-size:.6rem}.light-label{display:none}.light-indicator{width:10px;height:10px}}@media (max-width: 480px){.control-section{padding:var(--space-xs)}.group-label{font-size:.6rem}.resolution-grid{grid-template-columns:repeat(2,1fr);gap:3px}.res-btn{padding:var(--space-xs);font-size:.65rem}.aa-info{flex-direction:column;gap:2px}.color-btn{width:26px;height:26px}.light-color-btn{width:24px;height:24px}.light-action-btn{width:24px;height:24px;font-size:.9rem}}@media (max-width: 360px){.control-group{gap:var(--space-xs)}.group-label{font-size:.55rem}.res-btn,.aa-btn{padding:5px 3px;font-size:.55rem}.resolution-note,.aa-info{font-size:.55rem}.control-hint{font-size:.6rem;padding:var(--space-xs)}.light-tabs{gap:1px;padding:2px}.light-tab{padding:4px}.light-indicator{width:8px;height:8px}.color-btn{width:24px;height:24px}.light-color-btn{width:22px;height:22px}.light-action-btn{width:22px;height:22px;font-size:.8rem}}.color-picker{display:flex;flex-direction:column;gap:var(--space-sm)}.color-picker-header{display:flex;justify-content:space-between;align-items:center}.color-picker-label{font-size:.7rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:500}.color-picker-value{font-family:var(--font-mono);font-size:.7rem;color:var(--text-secondary);background:var(--bg-primary);padding:2px 6px;border-radius:var(--radius-sm)}.color-picker-row{display:flex;gap:var(--space-sm);align-items:flex-start}.color-picker-custom{width:48px;height:48px;border-radius:var(--radius-md);border:2px solid var(--border-accent);cursor:pointer;transition:var(--transition-fast);position:relative;overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center}.color-picker-custom:hover:not(:disabled){transform:scale(1.05);box-shadow:0 0 16px #fff3}.color-picker-custom:disabled{opacity:.5;cursor:not-allowed}.color-picker-icon{font-size:1.2rem;filter:drop-shadow(0 1px 2px rgba(0,0,0,.5))}.color-input-hidden{position:absolute;width:100%;height:100%;opacity:0;cursor:pointer}.color-preset-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;flex:1}.color-preset-btn{width:100%;aspect-ratio:1;min-width:24px;max-width:32px;border-radius:var(--radius-sm);border:2px solid transparent;cursor:pointer;transition:var(--transition-fast);box-shadow:inset 0 0 0 1px #ffffff1a}.color-preset-btn:hover:not(:disabled){transform:scale(1.15);box-shadow:0 0 12px #ffffff40;z-index:1}.color-preset-btn.active{border-color:#fff;box-shadow:0 0 0 2px var(--accent-primary),0 0 12px #ffffff4d}.color-preset-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}@media (max-width: 768px){.color-picker-custom{width:42px;height:42px}.color-preset-btn{max-width:28px}.color-preset-grid{gap:5px}}@media (max-width: 480px){.color-picker-custom{width:38px;height:38px}.color-picker-icon{font-size:1rem}.color-preset-btn{max-width:24px}.color-preset-grid{gap:4px}}.material-editor{gap:var(--space-md)}.group-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-xs)}.group-badge{font-size:.6rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:2px 8px;border-radius:10px;background:var(--bg-primary);color:var(--text-muted);border:1px solid var(--border-subtle)}.group-badge.highlight{background:linear-gradient(135deg,#6366f133,#a855f733);border-color:#8b5cf666;color:#a78bfa}.material-preset-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.material-preset-btn{display:flex;flex-direction:column;align-items:center;gap:4px;padding:var(--space-sm) var(--space-xs);background:var(--bg-primary);border:1px solid var(--border-subtle);border-radius:var(--radius-md);cursor:pointer;transition:var(--transition-fast)}.material-preset-btn:hover:not(:disabled){background:var(--bg-tertiary);border-color:var(--border-accent);transform:translateY(-2px)}.material-preset-btn.active{background:linear-gradient(135deg,#6366f126,#a855f726);border-color:var(--accent-primary);box-shadow:0 0 12px #8b5cf633}.material-preset-btn:disabled{opacity:.5;cursor:not-allowed}.material-preset-btn .preset-icon{font-size:1.25rem;line-height:1}.material-preset-btn .preset-name{font-size:.6rem;font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.material-preset-btn.active .preset-name{color:var(--text-primary)}.ior-section{display:flex;flex-direction:column;gap:var(--space-sm);transition:opacity .2s ease}.ior-section.disabled{opacity:.4;pointer-events:none}.ior-presets{display:flex;gap:4px;flex-wrap:wrap}.ior-preset-btn{padding:4px 10px;background:var(--bg-primary);border:1px solid var(--border-subtle);border-radius:12px;color:var(--text-muted);font-family:var(--font-sans);font-size:.6rem;font-weight:500;cursor:pointer;transition:var(--transition-fast)}.ior-preset-btn:hover:not(:disabled){background:var(--bg-tertiary);border-color:var(--border-accent);color:var(--text-secondary)}.ior-preset-btn.active{background:linear-gradient(135deg,#fbbf24,#f59e0b);border-color:#fbbf24;color:#1a1a2e;font-weight:600}.ior-preset-btn:disabled{opacity:.4;cursor:not-allowed}.material-summary{display:flex;align-items:center;justify-content:space-between;padding:var(--space-sm) var(--space-md);background:linear-gradient(135deg,var(--bg-primary),var(--bg-tertiary));border-radius:var(--radius-md);border:1px solid var(--border-subtle);margin-top:var(--space-xs)}.summary-item{display:flex;align-items:center;gap:var(--space-sm)}.summary-icon{width:20px;height:20px;border-radius:50%;border:2px solid rgba(255,255,255,.2);box-shadow:0 2px 8px #0000004d}.summary-label{font-size:.75rem;font-weight:600;color:var(--text-primary)}.summary-stats{display:flex;gap:6px}.stat-tag{font-size:.9rem;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3));animation:subtle-pulse 2s ease-in-out infinite}.stat-tag.reflect{animation-delay:0s}.stat-tag.transparent{animation-delay:.5s}.stat-tag.shiny{animation-delay:1s}@keyframes subtle-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(.95)}}@media (max-width: 900px){.material-preset-grid{grid-template-columns:repeat(4,1fr);gap:5px}.material-preset-btn{padding:var(--space-xs)}.material-preset-btn .preset-icon{font-size:1.1rem}.material-preset-btn .preset-name{font-size:.55rem}}@media (max-width: 768px){.material-preset-grid{grid-template-columns:repeat(4,1fr)}.group-header{flex-wrap:wrap;gap:var(--space-xs)}.group-badge{font-size:.55rem;padding:2px 6px}.ior-presets{gap:3px}.ior-preset-btn{padding:3px 8px;font-size:.55rem}}@media (max-width: 640px){.material-preset-grid{grid-template-columns:repeat(4,1fr);gap:4px}.material-preset-btn{padding:6px 4px;gap:2px}.material-preset-btn .preset-icon{font-size:1rem}.material-preset-btn .preset-name{font-size:.5rem}.material-summary{padding:var(--space-xs) var(--space-sm)}.summary-icon{width:16px;height:16px}.summary-label{font-size:.65rem}.stat-tag{font-size:.75rem}}@media (max-width: 480px){.material-preset-grid{grid-template-columns:repeat(4,1fr);gap:3px}.material-preset-btn .preset-name{display:none}.material-preset-btn .preset-icon{font-size:1.2rem}.material-preset-btn{padding:8px}.ior-presets{display:grid;grid-template-columns:repeat(5,1fr)}.ior-preset-btn{padding:4px 2px;font-size:.5rem;text-align:center;border-radius:var(--radius-sm)}}@media (max-width: 360px){.material-preset-btn{padding:6px}.material-preset-btn .preset-icon{font-size:1rem}.summary-stats{gap:4px}.stat-tag{font-size:.65rem}}.toggle-group{display:flex;justify-content:space-between;align-items:center}.toggle-label{font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em;font-weight:500}.toggle{position:relative;width:40px;height:22px;background:var(--bg-primary);border:1px solid var(--border-subtle);border-radius:11px;cursor:pointer;transition:var(--transition-fast);padding:0}.toggle:hover{border-color:var(--border-accent)}.toggle.active{background:var(--accent-primary);border-color:var(--accent-primary)}.toggle-thumb{position:absolute;top:2px;left:2px;width:16px;height:16px;background:var(--text-muted);border-radius:50%;transition:var(--transition-fast)}.toggle.active .toggle-thumb{left:20px;background:#fff}.toggle:disabled{opacity:.5;cursor:not-allowed}@media (max-width: 768px){.toggle-label{font-size:.7rem}.toggle{width:36px;height:20px;border-radius:10px}.toggle-thumb{width:14px;height:14px}.toggle.active .toggle-thumb{left:18px}}@media (max-width: 480px){.toggle-label{font-size:.65rem}.toggle{width:34px;height:18px;border-radius:9px}.toggle-thumb{width:12px;height:12px}.toggle.active .toggle-thumb{left:18px}}.control-panel{background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);overflow:hidden;display:flex;flex-direction:column;min-height:0;flex:1}.control-content{flex:1;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--border-accent) transparent}.control-content::-webkit-scrollbar{width:6px}.control-content::-webkit-scrollbar-track{background:transparent}.control-content::-webkit-scrollbar-thumb{background:var(--border-accent);border-radius:3px}.control-content::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}@media (max-width: 900px){.control-panel{border-radius:var(--radius-md);max-height:none}.control-content{max-height:400px}}@media (max-width: 640px){.control-panel{border-radius:var(--radius-sm)}.control-content{max-height:350px}}@media (max-width: 480px){.control-content{max-height:300px}}:root{--bg-primary: #09090b;--bg-secondary: #0f0f12;--bg-tertiary: #151518;--bg-elevated: #1a1a1f;--accent-primary: #e85d4c;--accent-secondary: #4ecdc4;--accent-tertiary: #ffe66d;--accent-purple: #a78bfa;--accent-pink: #f472b6;--text-primary: #f4f4f5;--text-secondary: #a1a1aa;--text-muted: #52525b;--border-subtle: #27272a;--border-accent: #3f3f46;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 4px 12px rgba(0, 0, 0, .5);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .6);--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--font-sans: "Outfit", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--transition-fast: .12s ease;--transition-normal: .2s ease;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--sidebar-width: 300px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-sans);background:var(--bg-primary);color:var(--text-primary);line-height:1.5;overflow-x:hidden}.app{display:flex;flex-direction:column;min-height:100vh;background:radial-gradient(ellipse at 0% 0%,rgba(232,93,76,.05) 0%,transparent 50%),radial-gradient(ellipse at 100% 100%,rgba(78,205,196,.03) 0%,transparent 50%),var(--bg-primary)}.main-content{flex:1;display:flex;padding:var(--space-md);gap:var(--space-md);overflow:hidden;min-height:0}.viewport{flex:1;display:flex;flex-direction:column;min-width:0}.canvas-area{flex:1;display:flex;align-items:center;justify-content:center;background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);overflow:hidden;min-height:300px}.status-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);padding:var(--space-xl);background:var(--bg-tertiary);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);text-align:center}.status-card.error{border-color:#e85d4c4d}.status-icon{font-size:2rem}.status-title{font-size:1rem;font-weight:500;color:var(--text-primary)}.status-subtitle{font-size:.85rem;color:var(--text-muted);max-width:280px}.status-hint{font-family:var(--font-mono);font-size:.75rem;background:var(--bg-primary);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);color:var(--accent-tertiary)}.spinner{width:40px;height:40px;border:3px solid var(--border-subtle);border-top-color:var(--accent-primary);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.sidebar{width:var(--sidebar-width);flex-shrink:0;display:flex;flex-direction:column;gap:var(--space-md);overflow:hidden}.scene-info{background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-md)}.scene-info h3{font-size:.65rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.1em;margin-bottom:var(--space-sm);font-weight:500}.scene-info ul{list-style:none;display:flex;flex-direction:column;gap:var(--space-xs)}.scene-info li{display:flex;justify-content:space-between;font-size:.7rem}.scene-info li span:first-child{color:var(--text-muted)}.scene-info li span:last-child{color:var(--text-secondary);font-family:var(--font-mono)}.footer{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-md);color:var(--text-muted);font-size:.65rem;letter-spacing:.03em;border-top:1px solid var(--border-subtle);background:var(--bg-secondary)}.footer-sep{opacity:.5}@media (max-width: 1024px){:root{--sidebar-width: 280px}}@media (max-width: 900px){body{overflow-y:auto}.app{min-height:auto}.main-content{flex-direction:column;overflow:visible;padding:var(--space-sm)}.viewport{min-height:60vh}.canvas-area{min-height:350px}.sidebar{width:100%;flex-direction:column;overflow-y:visible}.scene-info{display:none}}@media (max-width: 768px){:root{--space-md: .75rem;--space-lg: 1rem}.canvas-area{min-height:300px;border-radius:var(--radius-md)}}@media (max-width: 640px){.main-content{padding:var(--space-xs);gap:var(--space-sm)}.viewport{min-height:50vh}.canvas-area{min-height:280px}.footer{font-size:.6rem;padding:var(--space-xs)}}@media (max-width: 480px){.main-content{padding:var(--space-xs);gap:var(--space-xs)}.viewport{min-height:45vh}.canvas-area{min-height:250px;border-radius:var(--radius-sm)}.scene-info{display:none}}@media (max-width: 360px){:root{--space-sm: .375rem;--space-md: .5rem}.canvas-area{min-height:220px}}@media (max-height: 600px) and (orientation: landscape){.main-content{flex-direction:row;padding:var(--space-xs)}.sidebar{width:260px;max-height:calc(100vh - 80px);overflow-y:auto}.viewport{min-height:auto}.canvas-area{min-height:200px}.footer{display:none}}
