:root{--color-bg: #FAFAF8;--color-surface: #FFFFFF;--color-text: #1C1C1C;--color-text-secondary: #666;--color-accent: #C9A962;--color-subtle: #F0EFED;--color-border: #D5D3CF;--transition-elegant: .3s ease;--shadow-refined: 0 4px 24px rgba(0, 0, 0, .08)}[data-theme=dark]{--color-bg: #1A1A1A;--color-surface: #2A2A2A;--color-text: #F5F5F5;--color-text-secondary: #999;--color-accent: #D4B872;--color-subtle: #333;--color-border: #444;--shadow-refined: 0 4px 24px rgba(0, 0, 0, .3)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--color-bg: #1A1A1A;--color-surface: #2A2A2A;--color-text: #F5F5F5;--color-text-secondary: #999;--color-accent: #D4B872;--color-subtle: #333;--color-border: #444;--shadow-refined: 0 4px 24px rgba(0, 0, 0, .3)}}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:Helvetica Neue,-apple-system,BlinkMacSystemFont,sans-serif;font-weight:400;background:var(--color-bg);color:var(--color-text);min-height:100vh;line-height:1.5}.app{max-width:800px;margin:0 auto;padding:40px 20px;min-height:100vh;display:flex;flex-direction:column}header{text-align:center;margin-bottom:40px;position:relative}header h1{font-size:22px;font-weight:400;letter-spacing:.15em;text-transform:uppercase;margin-bottom:8px}.subtitle{font-size:13px;font-weight:400;color:var(--color-text-secondary);letter-spacing:.02em}.theme-toggle{position:absolute;right:0;top:50%;transform:translateY(-50%);background:transparent;border:1px solid var(--color-border);border-radius:4px;width:36px;height:36px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-elegant);color:var(--color-text-secondary);font-size:18px}.theme-toggle:hover{border-color:var(--color-accent);color:var(--color-accent)}.theme-toggle .icon-sun,.theme-toggle .icon-moon{display:none}[data-theme=dark] .theme-toggle .icon-sun{display:block}[data-theme=dark] .theme-toggle .icon-moon,[data-theme=light] .theme-toggle .icon-sun{display:none}[data-theme=light] .theme-toggle .icon-moon{display:block}:root:not([data-theme]) .theme-toggle .icon-moon{display:block}@media (prefers-color-scheme: dark){:root:not([data-theme]) .theme-toggle .icon-sun{display:block}:root:not([data-theme]) .theme-toggle .icon-moon{display:none}}main{flex:1;display:flex;flex-direction:column}.step{text-align:center;flex:1;display:flex;flex-direction:column;justify-content:center}.step.hidden{display:none}#stepPhotos{justify-content:flex-start}.step-title{font-size:16px;font-weight:400;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text);margin-bottom:32px}.step-header{position:relative;margin-bottom:32px}.step-header .step-title{margin-bottom:0}.back-btn{position:absolute;left:0;top:50%;transform:translateY(-50%);background:transparent;border:none;color:var(--color-accent);font-size:13px;font-weight:400;letter-spacing:.02em;cursor:pointer;transition:opacity var(--transition-elegant);padding:8px 0}.back-btn:hover{opacity:.7}.count-options{display:flex;justify-content:center;gap:16px}.count-btn{width:72px;height:72px;border:1px solid var(--color-border);border-radius:4px;background:var(--color-surface);font-size:24px;font-weight:400;color:var(--color-text);cursor:pointer;transition:all var(--transition-elegant)}.count-btn:hover{border-color:var(--color-accent);color:var(--color-accent)}.layout-options{display:flex;justify-content:center;gap:20px;flex-wrap:wrap}.layout-card{width:140px;padding:16px;border:1px solid var(--color-border);border-radius:4px;background:var(--color-surface);cursor:pointer;transition:all var(--transition-elegant);text-align:center}.layout-card:hover{border-color:var(--color-accent);box-shadow:var(--shadow-refined)}.layout-preview{display:grid;gap:3px;aspect-ratio:1.2;margin-bottom:12px}.layout-preview .cell{background:var(--color-subtle);border-radius:2px;min-height:0}.layout-name{font-size:11px;font-weight:500;letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-secondary)}.photo-slot{position:relative;flex-direction:column;gap:4px}.slot-label{font-size:11px;font-weight:500;color:var(--color-accent);letter-spacing:.05em}.upload-section{margin-bottom:32px}.photos-container{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}.drop-zone{width:80px;height:80px;border:1px dashed var(--color-border);border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-elegant);background:var(--color-surface);flex-shrink:0}.drop-zone:hover{border-color:var(--color-accent);border-style:solid}.drop-zone.drag-over{border-color:var(--color-accent);border-style:solid;background:var(--color-subtle)}.drop-zone.hidden{display:none}.drop-icon{font-size:24px;font-weight:300;color:var(--color-text-secondary)}.photo-thumb{position:relative;width:80px;height:80px;border-radius:4px;overflow:hidden;flex-shrink:0;box-shadow:0 2px 12px #0000001a;transition:box-shadow var(--transition-elegant)}.photo-thumb:hover{box-shadow:0 4px 16px #00000026}.photo-thumb img{width:100%;height:100%;object-fit:cover;pointer-events:none}.photo-thumb .remove-btn{position:absolute;top:4px;right:4px;width:24px;height:24px;border-radius:50%;border:none;background:#1c1c1c99;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:#fff;font-size:16px;font-weight:400;line-height:1;cursor:pointer;opacity:1;transition:all var(--transition-elegant);display:flex;align-items:center;justify-content:center}.photo-thumb .remove-btn:hover{background:#1c1c1ccc}@media (hover: hover){.photo-thumb .remove-btn{opacity:0}.photo-thumb:hover .remove-btn{opacity:1}}.photo-thumb .order-badge{position:absolute;bottom:4px;left:4px;width:20px;height:20px;border-radius:50%;background:var(--color-surface);border:1px solid var(--color-accent);color:var(--color-accent);font-size:10px;font-weight:500;display:flex;align-items:center;justify-content:center}.photo-actions{display:flex;justify-content:center;align-items:center;gap:16px;margin-top:16px}.photo-count{font-size:11px;font-weight:400;letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-secondary);min-height:20px}.photo-count.error{color:#c00}.clear-all-btn{padding:8px 16px;font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-secondary);background:transparent;border:1px solid var(--color-border);border-radius:2px;cursor:pointer;transition:all var(--transition-elegant)}.clear-all-btn:hover{color:var(--color-text);border-color:var(--color-text)}.clear-all-btn.hidden{display:none}.preview-section{margin-bottom:24px}.canvas-wrapper{position:relative;background:var(--color-surface);border-radius:4px;min-height:200px;display:flex;align-items:center;justify-content:center;overflow:hidden;box-shadow:var(--shadow-refined)}#collageCanvas{max-width:100%;max-height:500px;display:none;cursor:grab}#collageCanvas:active{cursor:grabbing}#collageCanvas.visible{display:block}.placeholder{color:var(--color-text-secondary);font-size:12px;font-weight:400;letter-spacing:.05em;text-transform:uppercase;padding:80px 20px}.placeholder.hidden{display:none}.export-section{text-align:center}.download-btn{padding:14px 40px;font-size:11px;font-weight:500;letter-spacing:.15em;text-transform:uppercase;color:var(--color-accent);background:transparent;border:1px solid var(--color-accent);border-radius:2px;cursor:pointer;transition:all var(--transition-elegant)}.download-btn:hover:not(:disabled){background:var(--color-accent);color:var(--color-surface)}.download-btn:disabled{background:transparent;border-color:var(--color-border);color:var(--color-text-secondary);cursor:not-allowed}@media (max-width: 500px){.app{padding:24px 20px}header{margin-bottom:24px}header h1{font-size:18px;letter-spacing:.12em}.theme-toggle{width:32px;height:32px;font-size:16px}.step-title{font-size:14px}.count-btn{width:60px;height:60px;font-size:20px}.layout-card{width:120px;padding:12px}.layout-options{gap:12px}.photo-thumb,.drop-zone{width:64px;height:64px;border-radius:3px}.download-btn{padding:12px 32px;font-size:10px}.back-btn{font-size:12px}.step-header{display:flex;flex-direction:column;align-items:center;gap:8px}.step-header .back-btn{position:static;transform:none;order:-1}}
