:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;--bg-primary: #e8e8e8;--bg-secondary: #ffffff;--bg-tertiary: #f9fafb;--bg-input: #f9fafb;--bg-hover: #f5f5f5;--bg-overlay: rgba(0, 0, 0, .7);--text-primary: #213547;--text-secondary: #333333;--text-tertiary: #666666;--text-muted: #999999;--text-hint: #aaaaaa;--border-color: #e5e7eb;--border-color-dark: #d1d5db;--border-strong: #333333;--shadow-color: rgba(0, 0, 0, .15);--shadow-strong: rgba(0, 0, 0, .25);--card-bg: #ffffff;--button-bg: #f9f9f9;--button-secondary-bg: #f0f0f0;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(prefers-color-scheme:dark){:root{--bg-primary: #1a1a1a;--bg-secondary: #2d2d2d;--bg-tertiary: #3a3a3a;--bg-input: #3a3a3a;--bg-hover: #404040;--bg-overlay: rgba(0, 0, 0, .85);--text-primary: #f0f0f0;--text-secondary: #e0e0e0;--text-tertiary: #b0b0b0;--text-muted: #888888;--text-hint: #666666;--border-color: #404040;--border-color-dark: #555555;--border-strong: #666666;--shadow-color: rgba(0, 0, 0, .3);--shadow-strong: rgba(0, 0, 0, .5);--card-bg: #2d2d2d;--button-bg: #3a3a3a;--button-secondary-bg: #404040}}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh;color:var(--text-primary);background-color:var(--bg-primary)}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:var(--button-bg);color:var(--text-primary);cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%}body{font-family:Comic Sans MS,Chalkboard,cursive,sans-serif;background:var(--bg-primary)}.app{width:100%;min-height:100vh;position:relative;overflow:hidden}.top-buttons{position:fixed;top:20px;right:20px;z-index:100;display:flex;gap:12px}.github-link,.history-btn,.settings-btn,.mute-btn{padding:12px 24px;background:var(--card-bg);border:3px solid var(--border-strong);border-radius:25px;font-family:Comic Sans MS,cursive;font-size:14px;font-weight:700;color:var(--text-secondary);cursor:pointer;box-shadow:4px 4px 0 var(--border-strong);transition:all .1s ease;text-decoration:none;display:flex;align-items:center;justify-content:center}.github-link{padding:10px 14px}.github-link svg{transition:transform .2s ease}.github-link:hover svg{transform:scale(1.1)}.mute-btn{padding:10px 14px;font-size:18px;line-height:1}.settings-btn{background:var(--button-secondary-bg)}.github-link:hover,.history-btn:hover,.settings-btn:hover,.mute-btn:hover{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--border-strong)}.github-link:active,.history-btn:active,.settings-btn:active,.mute-btn:active{transform:translate(4px,4px);box-shadow:0 0 0 var(--border-strong)}.history-btn.drop-target{background:#dbeafe;border-color:#3b82f6;color:#1d4ed8}.history-btn.drop-hover{background:#3b82f6;border-color:#1d4ed8;color:#fff;transform:scale(1.05)}.gallery-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;margin-left:6px;background:#ef4444;border-radius:10px;font-size:11px;font-weight:700;color:#fff;font-family:-apple-system,BlinkMacSystemFont,sans-serif}.main-area{width:100%;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:40px;gap:60px}.canvas-area{width:100%;min-height:100vh;position:relative;padding:250px 40px 40px;display:flex;align-items:flex-start;justify-content:center}.canvas-hint{position:absolute;top:50%;right:100px;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;color:var(--text-muted);text-align:center;pointer-events:none}.canvas-hint span{font-size:48px;margin-bottom:12px;opacity:.5}.canvas-hint p{font-size:14px;color:var(--text-hint)}.film-card{position:absolute;width:160px;background:var(--card-bg);padding:10px 10px 45px;box-shadow:0 8px 30px var(--shadow-strong);cursor:grab;z-index:10;transition:box-shadow .2s ease,transform .1s ease;-webkit-user-select:none;user-select:none}.film-card:hover{box-shadow:0 12px 40px #00000059;z-index:20}.film-card.dragging{cursor:grabbing;box-shadow:0 20px 60px #0006;z-index:100;transform:scale(1.02)}.film-card.generating{cursor:wait}.film-card.ejecting{cursor:default;z-index:50;animation:film-fade-in 1s ease-out forwards}@keyframes film-fade-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.film-card.completed{cursor:grab}.film-card.completed .film-image img{width:100%;height:100%;object-fit:cover}.film-image{width:140px;height:140px;position:relative;overflow:hidden;background:#111;z-index:1}.film-black{position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(145deg,#1a1a1a,#0a0a0a)}.film-photo{position:absolute;top:0;left:0;width:100%;height:100%;transition:opacity .1s ease}.film-photo img{width:100%;height:100%;object-fit:cover}.film-loading{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#888;font-size:12px;animation:film-pulse 2s ease-in-out infinite}@keyframes film-pulse{0%,to{opacity:.6}50%{opacity:1}}.film-info{position:absolute;bottom:8px;left:10px;right:10px;text-align:center;font-family:Comic Sans MS,cursive}.film-name{display:block;font-size:12px;font-weight:700;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:2px}.film-dream{display:block;font-size:10px;color:var(--text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.film-date{display:block;font-size:10px;color:var(--text-tertiary);margin-top:2px}.film-delete{position:absolute;top:5px;right:5px;width:22px;height:22px;background:#00000080;border:none;border-radius:50%;color:#fff;font-size:11px;cursor:pointer;opacity:0;transition:all .2s ease;display:flex;align-items:center;justify-content:center;z-index:10;pointer-events:auto}.film-card:hover .film-delete{opacity:1}.film-delete:hover{background:#ef4444}.film-collect{position:absolute;top:5px;right:32px;width:22px;height:22px;background:#00000080;border:none;border-radius:50%;color:#fff;font-size:11px;cursor:pointer;opacity:0;transition:all .2s ease;display:flex;align-items:center;justify-content:center;z-index:10}.film-card:hover .film-collect{opacity:1}.film-collect:hover{background:#3b82f6;transform:scale(1.1)}.camera-section{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative}.side-form{position:absolute;right:90%;top:50%;transform:translateY(-50%);width:0;overflow:hidden;transition:width .4s ease;display:flex;justify-content:flex-end}.side-form.visible{width:215px}.side-form-content{width:200px;flex-shrink:0;padding:10px;background:var(--card-bg);border-radius:10px 0 0 10px;box-shadow:-4px 0 20px var(--shadow-color);display:flex;flex-direction:column;gap:6px}.side-form .input-name{padding:8px 10px;border:1px solid var(--border-color);border-radius:6px;font-size:13px;outline:none;background:var(--bg-input);color:var(--text-primary)}.side-form .input-name:focus{border-color:#667eea}.side-form .input-dream{padding:8px 10px;border:1px solid var(--border-color);border-radius:6px;font-size:13px;resize:none;outline:none;font-family:inherit;background:var(--bg-input);color:var(--text-primary)}.side-form .input-dream:focus{border-color:#667eea}.generate-count-selector{display:flex;align-items:center;gap:8px}.count-label{font-size:12px;color:var(--text-tertiary);white-space:nowrap}.count-buttons{display:flex;gap:4px;flex:1}.count-btn{flex:1;padding:4px 0;border:1px solid var(--border-color);border-radius:6px;background:var(--bg-input);color:var(--text-secondary);font-size:11px;cursor:pointer;transition:all .2s ease;font-family:inherit}.count-btn:hover{border-color:#667eea;color:#667eea}.count-btn.active{background:linear-gradient(135deg,#667eea,#764ba2);border-color:transparent;color:#fff;font-weight:600}.side-form-actions{display:flex;gap:8px}.side-form-actions .btn-cancel{flex:1;padding:10px;border:1px solid var(--border-color);border-radius:6px;background:var(--card-bg);color:var(--text-primary);cursor:pointer;font-size:14px;transition:background .2s}.side-form-actions .btn-cancel:hover{background:var(--bg-hover)}.side-form-actions .btn-primary{flex:1;padding:10px;border:none;border-radius:6px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;cursor:pointer;font-size:14px;transition:opacity .2s}.side-form-actions .btn-primary:hover:not(:disabled){opacity:.9}.side-form-actions .btn-primary:disabled{opacity:.5;cursor:not-allowed}.captured-preview{width:100%;height:100%;object-fit:cover}.side-result{position:absolute;left:90%;top:27%;width:0;overflow:visible}.side-result-film{position:absolute;left:0;top:0;width:160px;background:var(--card-bg);padding:10px 10px 40px;border-radius:4px;box-shadow:0 4px 15px var(--shadow-color);transition:transform .5s ease;cursor:grab}.side-result-film .film-image{width:100%;aspect-ratio:1;position:relative;overflow:hidden;border-radius:2px;background:#1a1a1a}.side-result-film .film-photo{position:absolute;top:0;left:0;width:100%;height:100%}.side-result-film .film-photo img{width:100%;height:100%;object-fit:cover}.side-result-film .film-black{position:absolute;top:0;left:0;width:100%;height:100%;background:#1a1a1a;transition:opacity 2s ease}.side-result-film .film-info{margin-top:8px;display:flex;flex-direction:column;gap:2px}.side-result-film .film-dream{font-size:12px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.side-result-film .film-date{font-size:10px;color:var(--text-muted)}.ejected-photo{position:absolute;top:-220px;left:50%;margin-left:-75px;width:150px;background:var(--card-bg);padding:10px 10px 40px;box-shadow:0 8px 30px var(--shadow-strong);cursor:grab;z-index:50;transition:transform .3s ease,box-shadow .3s ease;-webkit-user-select:none;user-select:none}.ejected-photo.ejecting{animation:photo-eject .8s cubic-bezier(.25,.46,.45,.94) forwards;cursor:default}.ejected-photo.dragging{cursor:grabbing;box-shadow:0 15px 50px #0006;transition:none}.ejected-photo.generating{cursor:wait}.ejected-photo.has-result{animation:photo-glow 2s ease-in-out infinite}@keyframes photo-eject{0%{top:30px;opacity:0;filter:blur(8px);clip-path:inset(75% 0 0 0)}30%{opacity:1;filter:blur(4px);clip-path:inset(50% 0 0 0)}60%{filter:blur(2px);clip-path:inset(25% 0 0 0)}to{top:-220px;opacity:1;filter:blur(0);clip-path:inset(0 0 0 0)}}@keyframes photo-glow{0%,to{box-shadow:0 8px 30px #667eea4d}50%{box-shadow:0 8px 40px #667eea99}}.ejected-photo-inner{width:130px;height:130px;background:var(--bg-tertiary);overflow:hidden;position:relative}.ejected-photo-original{width:100%;height:100%;transition:opacity .5s ease}.ejected-photo-original.hidden{opacity:0}.ejected-photo-original img{width:100%;height:100%;object-fit:cover}.ejected-photo-result{position:absolute;top:0;left:0;width:100%;height:100%;opacity:1}.ejected-photo-result.revealing{animation:photo-reveal 1s ease-out forwards}@keyframes photo-reveal{0%{clip-path:circle(0% at 50% 50%);filter:brightness(2) saturate(0)}50%{filter:brightness(1.5) saturate(.5)}to{clip-path:circle(100% at 50% 50%);filter:brightness(1) saturate(1)}}.ejected-photo-result img{width:100%;height:100%;object-fit:cover}.ejected-photo-loading{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eeae6,#764ba2e6);color:#fff;gap:8px}.ejected-photo-loading span{font-size:11px;font-weight:500}.ejected-photo-info{position:absolute;bottom:8px;left:10px;right:10px;text-align:center;font-family:Comic Sans MS,cursive}.ejected-photo-dream{display:block;font-size:11px;font-weight:700;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ejected-photo-date{display:block;font-size:10px;color:var(--text-tertiary);margin-top:2px}.ejected-photo-hint{display:block;font-size:9px;color:#667eea;margin-top:4px;font-weight:700;animation:hint-pulse 1.5s ease-in-out infinite}@keyframes hint-pulse{0%,to{opacity:1}50%{opacity:.5}}.ejected-photo-cancel{position:absolute;top:5px;right:5px;width:20px;height:20px;background:#00000080;border:none;border-radius:50%;color:#fff;font-size:10px;cursor:pointer;opacity:0;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.ejected-photo:hover .ejected-photo-cancel{opacity:1}.ejected-photo-cancel:hover{background:#ef4444}.photos-section{flex:1;display:flex;align-items:center;justify-content:center;min-height:500px}.camera-wrapper{position:relative;width:450px;height:450px;flex-shrink:0;cursor:grab;-webkit-user-select:none;user-select:none;transition:transform .05s ease-out}.camera-wrapper.dragging{cursor:grabbing;transition:none}.camera-image{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain;z-index:4;pointer-events:none}.camera-flashlight{position:absolute;top:24%;right:15%;width:30px;height:30px;background:radial-gradient(circle,#fff 0% 30%,#fff0 70%);border-radius:50%;z-index:100;animation:flashlight-glow .25s ease-out forwards;pointer-events:none;box-shadow:0 0 20px 10px #ffffffe6,0 0 40px 20px #fff9,0 0 60px 30px #ffffff4d}@keyframes flashlight-glow{0%{opacity:1;transform:scale(1)}50%{opacity:1;transform:scale(1.2)}to{opacity:0;transform:scale(.8)}}.camera-flash{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#fff;z-index:9999;animation:flash-effect .25s ease-out forwards;pointer-events:none}@keyframes flash-effect{0%{opacity:.85}40%{opacity:.5}to{opacity:0}}.camera-video-container{position:absolute;top:35%;left:50%;transform:translate(-50%);width:38%;height:38%;overflow:hidden;z-index:3;background:#1a1a1a}.camera-video-container.clickable{cursor:pointer}.camera-video-container.clickable:hover:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:#ffffff1a;pointer-events:none}.camera-video{width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}.camera-placeholder{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:#222;font-size:32px}.camera-placeholder.camera-off{flex-direction:column;gap:8px}.camera-placeholder.camera-off span{font-size:32px;opacity:.5}.camera-placeholder.camera-off small{font-size:12px;color:#888}.camera-shutter{position:absolute;top:24%;left:61%;width:26px;height:26px;min-width:0;padding:0;background:transparent;border:none;box-sizing:border-box;border-radius:50%;cursor:pointer;z-index:10;box-shadow:none;transition:all .1s ease}.camera-shutter:after{display:none}.camera-shutter:hover:not(:disabled){background:transparent;box-shadow:none}.camera-shutter:active:not(:disabled){background:transparent;box-shadow:none}.camera-shutter:disabled{opacity:.5;cursor:not-allowed}.camera-upload{position:absolute;bottom:13%;left:50%;transform:translate(-50%);width:50px;height:50px;background:transparent;border:none;cursor:pointer;z-index:10;border-radius:50%}.camera-upload:hover:not(:disabled){background:#ffffff1a}.camera-upload:disabled{cursor:not-allowed}.camera-toggle{position:absolute;left:16%;top:63.5%;width:7.5%;height:0;padding-bottom:7.5%;min-width:0;background:transparent;border:none;border-radius:50%;cursor:pointer;z-index:11;transition:transform .2s ease;outline:none;-webkit-tap-highlight-color:transparent;box-shadow:none}.camera-toggle:focus,.camera-toggle:focus-visible{outline:none;box-shadow:none}.camera-toggle:hover:not(:disabled){transform:scale(1.1)}.camera-toggle:disabled{opacity:.5;cursor:not-allowed}.camera-toggle-knob{position:absolute;left:16%;top:63.5%;width:7.5%;height:0;padding-bottom:7.5%;background:url(/knob.png) no-repeat center center;background-size:contain;z-index:10;transform:rotate(50deg);transition:transform .3s ease;pointer-events:none}.camera-toggle-knob.on{transform:rotate(10deg)}.upload-arrow{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:42px;font-weight:700;color:#666;transition:color .2s ease}.camera-upload:hover:not(:disabled) .upload-arrow{color:#333}.entering-photo-container{position:absolute;bottom:-8%;left:50%;transform:translate(-50%);width:120px;height:140px;overflow:hidden;z-index:5;pointer-events:none}.entering-photo{position:absolute;bottom:0;left:0;width:100%}.entering-photo img{width:100%;height:auto;aspect-ratio:1;object-fit:cover}.ejecting-film{position:absolute;bottom:100%;left:50%;margin-left:-80px;width:160px;background:var(--card-bg);padding:10px 10px 45px;box-shadow:0 8px 30px var(--shadow-strong);z-index:1;transition:transform .05s linear}.ejecting-film .film-image{width:140px;height:140px;position:relative;overflow:hidden;background:#111}.ejecting-film .film-photo{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.ejecting-film .film-photo img{width:100%;height:100%;object-fit:cover}.ejecting-film .film-black{position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(145deg,#1a1a1a,#0a0a0a);z-index:2;transition:opacity .1s ease}.ejecting-film .film-info{position:absolute;bottom:8px;left:10px;right:10px;text-align:center;font-family:Comic Sans MS,cursive}.ejecting-film .film-dream{display:block;font-size:12px;font-weight:700;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:2px}.ejecting-film .film-date{display:block;font-size:10px;color:var(--text-tertiary)}.pending-photo-wrapper{position:absolute;bottom:100%;left:50%;transform:translate(-50%);margin-bottom:-15px;z-index:10}.pending-photo-card{width:140px;background:var(--card-bg);padding:8px 8px 35px;box-shadow:0 8px 30px var(--shadow-strong);animation:photo-slide-up .6s cubic-bezier(.25,.46,.45,.94) forwards}.pending-photo-card.generating{filter:blur(3px) saturate(.8);animation:photo-slide-up .6s cubic-bezier(.25,.46,.45,.94) forwards,photo-waiting 2s ease-in-out infinite .6s}@keyframes photo-slide-up{0%{transform:translateY(80px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes photo-waiting{0%,to{filter:blur(3px) saturate(.8) brightness(1)}50%{filter:blur(2px) saturate(.9) brightness(1.1)}}.pending-photo-image{width:124px;height:124px;overflow:hidden;position:relative}.pending-photo-image img{width:100%;height:100%;object-fit:cover}.pending-photo-loading{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:#0000004d}.pending-photo-loading span{color:#fff;font-size:12px;font-weight:500;text-shadow:0 1px 3px rgba(0,0,0,.5)}.pending-photo-info{position:absolute;bottom:6px;left:8px;right:8px;text-align:center;font-family:Comic Sans MS,cursive}.pending-photo-hint{font-size:10px;color:var(--text-muted)}.polaroids-area{display:flex;flex-wrap:wrap;gap:20px;max-width:500px;justify-content:center;align-items:flex-start}.polaroids-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-muted);text-align:center}.polaroids-empty span{font-size:60px;margin-bottom:16px}.polaroids-empty p{font-size:16px;color:var(--text-muted)}.polaroid{position:relative;width:150px;background:var(--card-bg);padding:10px 10px 40px;box-shadow:0 4px 15px var(--shadow-color),0 0 0 1px var(--shadow-color);cursor:pointer;transition:all .3s ease}.polaroid:hover{transform:scale(1.05) rotate(0)!important;z-index:10!important;box-shadow:0 10px 30px #0000004d}.polaroid.selected{transform:scale(1.05) rotate(0)!important;z-index:10!important;box-shadow:0 10px 30px #667eea80}.polaroid-image{width:130px;height:130px;background:var(--bg-tertiary);overflow:hidden}.polaroid-image img{width:100%;height:100%;object-fit:cover}.polaroid-loading{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2)}.spinner-small{width:30px;height:30px;border:3px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite}.polaroid-info{position:absolute;bottom:8px;left:10px;right:10px;text-align:center;font-family:Comic Sans MS,cursive}.polaroid-dream{display:block;font-size:11px;font-weight:700;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.polaroid-date{display:block;font-size:10px;color:var(--text-tertiary);margin-top:2px}.polaroid-delete{position:absolute;top:5px;right:5px;width:20px;height:20px;background:#00000080;border:none;border-radius:50%;color:#fff;font-size:10px;cursor:pointer;opacity:0;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.polaroid:hover .polaroid-delete{opacity:1}.polaroid-delete:hover{background:#ef4444}.error-toast{position:fixed;top:20px;left:50%;transform:translate(-50%);background:#ef4444f2;color:#fff;padding:12px 24px;border-radius:25px;font-size:14px;z-index:1000;cursor:pointer;box-shadow:0 4px 20px #ef444466}.polaroid-modal{position:fixed;top:0;left:0;width:100%;height:100%;background:var(--bg-overlay);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px}.polaroid-modal-content{position:relative;width:100%;max-width:400px;background:var(--card-bg);border-radius:20px;overflow:hidden;box-shadow:0 25px 80px var(--shadow-strong)}.polaroid-preview{width:100%;aspect-ratio:1;background:var(--bg-tertiary);overflow:hidden}.polaroid-preview img{width:100%;height:100%;object-fit:cover}.polaroid-generating{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;gap:16px}.polaroid-form{padding:20px;display:flex;flex-direction:column;gap:12px}.polaroid-actions{display:flex;gap:10px}.polaroid-actions .btn-primary,.polaroid-actions .btn-download{flex:1}.polaroid-view-info{text-align:center;padding:10px 0}.view-name{font-size:18px;font-weight:600;color:var(--text-primary);margin-bottom:6px}.view-dream{font-size:14px;color:#667eea;font-style:italic;margin-bottom:4px}.view-date{font-size:12px;color:var(--text-muted)}.btn-close{position:absolute;top:12px;right:12px;width:36px;height:36px;border:none;background:var(--card-bg);border-radius:50%;font-size:18px;color:var(--text-primary);cursor:pointer;z-index:10;box-shadow:0 2px 8px var(--shadow-color);display:flex;align-items:center;justify-content:center;transition:all .2s ease}.btn-close:hover{background:var(--bg-hover);transform:scale(1.1)}.input-name{padding:12px 16px;border:2px solid var(--border-color);border-radius:12px;font-size:14px;outline:none;transition:all .2s ease;background:var(--bg-input);color:var(--text-primary);font-family:inherit}.input-name:focus{border-color:#667eea;background:var(--card-bg);box-shadow:0 0 0 3px #667eea1a}.input-dream{padding:12px 16px;border:2px solid var(--border-color);border-radius:12px;font-size:14px;outline:none;resize:none;font-family:inherit;transition:all .2s ease;background:var(--bg-input);color:var(--text-primary)}.input-dream:focus{border-color:#667eea;background:var(--card-bg);box-shadow:0 0 0 3px #667eea1a}.input-select{padding:12px 16px;border:2px solid var(--border-color);border-radius:12px;font-size:14px;outline:none;transition:all .2s ease;background:var(--bg-input);color:var(--text-primary);font-family:inherit;cursor:pointer}.input-select:focus{border-color:#667eea;background:var(--card-bg);box-shadow:0 0 0 3px #667eea1a}.input-prompt{padding:12px 16px;border:2px solid var(--border-color);border-radius:12px;font-size:13px;outline:none;resize:vertical;font-family:Courier New,monospace;transition:all .2s ease;background:var(--bg-input);color:var(--text-primary);line-height:1.5}.input-prompt:focus{border-color:#667eea;background:var(--card-bg);box-shadow:0 0 0 3px #667eea1a}.btn-primary{padding:14px 20px;background:#667eea;border:none;border-radius:12px;color:#fff;font-size:15px;font-weight:600;cursor:pointer;transition:all .2s ease;font-family:inherit}.btn-primary:hover:not(:disabled){background:#5a6fd6;transform:translateY(-1px);box-shadow:0 4px 12px #667eea4d}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-download{padding:14px 20px;background:#10b981;border:none;border-radius:12px;color:#fff;font-size:15px;font-weight:600;text-decoration:none;text-align:center;cursor:pointer;transition:all .2s ease;font-family:inherit}.btn-download:hover{background:#059669}.btn-reset{margin-left:10px;padding:4px 10px;background:var(--bg-tertiary);border:1px solid var(--border-color-dark);border-radius:6px;font-size:12px;color:var(--text-primary);cursor:pointer;transition:all .2s ease}.btn-reset:hover{background:var(--bg-hover)}.spinner{width:50px;height:50px;border:4px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite}.gallery-overlay{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1000;overflow:auto}.gallery-container{width:100%;min-height:100%;background:repeating-linear-gradient(90deg,transparent 0px,transparent 50px,rgba(0,0,0,.03) 50px,rgba(0,0,0,.03) 51px),repeating-linear-gradient(0deg,transparent 0px,transparent 2px,rgba(139,90,43,.08) 2px,rgba(139,90,43,.08) 4px),repeating-linear-gradient(180deg,rgba(160,120,60,.1) 0px,transparent 2px,transparent 8px),linear-gradient(135deg,#c9a66b,#b8956a,#a68555 60%,#c4a060);display:flex;flex-direction:column}.gallery-back{position:fixed;top:20px;left:20px;padding:10px 20px;background:var(--card-bg);border:none;border-radius:20px;font-family:Comic Sans MS,cursive;font-size:14px;font-weight:700;color:var(--text-primary);cursor:pointer;box-shadow:0 2px 8px var(--shadow-color);z-index:10;transition:all .2s ease}.gallery-back:hover{transform:scale(1.05);box-shadow:0 4px 12px var(--shadow-strong)}.gallery-header{padding:60px 20px 30px;text-align:center}.gallery-pin{font-size:48px;margin-bottom:10px}.gallery-header h2{font-family:Comic Sans MS,Chalkboard,cursive;font-size:42px;font-weight:700;color:var(--text-primary);text-shadow:2px 2px 4px var(--shadow-color);margin-bottom:10px}.gallery-subtitle{font-family:Comic Sans MS,cursive;font-size:16px;color:var(--text-secondary);font-style:italic}.gallery-divider{width:80%;max-width:800px;height:2px;background:var(--border-color);margin:0 auto 40px}.gallery-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--text-secondary)}.gallery-empty span{font-size:80px;margin-bottom:20px}.gallery-empty p{font-family:Comic Sans MS,cursive;font-size:18px}.gallery-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:30px;padding:20px 40px 60px;max-width:1400px;margin:0 auto}.gallery-polaroid{position:relative;width:180px;background:var(--card-bg);padding:12px 12px 50px;box-shadow:0 4px 15px var(--shadow-strong);cursor:pointer;transition:all .3s ease;transform:rotate(var(--rotation, 0deg))}.gallery-polaroid:hover{transform:rotate(0) scale(1.08);z-index:10;box-shadow:0 10px 30px var(--shadow-strong)}.gallery-polaroid:before{content:"";position:absolute;top:-8px;left:50%;transform:translate(-50%);width:20px;height:20px;background:radial-gradient(circle at 30% 30%,#ff6b6b,#c0392b);border-radius:50%;box-shadow:0 2px 4px #0000004d;z-index:1}.gallery-polaroid-image{width:156px;height:156px;overflow:hidden;background:var(--bg-tertiary)}.gallery-polaroid-image img{width:100%;height:100%;object-fit:cover}.gallery-polaroid-info{position:absolute;bottom:10px;left:12px;right:12px;text-align:center;font-family:Comic Sans MS,cursive}.gallery-polaroid-dream{display:block;font-size:13px;font-weight:700;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:2px}.gallery-polaroid-date{display:block;font-size:11px;color:var(--text-tertiary)}.gallery-polaroid-delete{position:absolute;top:15px;right:8px;width:24px;height:24px;border-radius:50%;border:none;background:#00000080;color:#fff;font-size:12px;cursor:pointer;opacity:0;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.gallery-polaroid:hover .gallery-polaroid-delete{opacity:1}.gallery-polaroid-delete:hover{background:#ef4444}.gallery-polaroid-restore{position:absolute;top:15px;right:38px;width:24px;height:24px;border-radius:50%;border:none;background:#00000080;color:#fff;font-size:12px;cursor:pointer;opacity:0;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.gallery-polaroid:hover .gallery-polaroid-restore{opacity:1}.gallery-polaroid-restore:hover{background:#3b82f6;transform:scale(1.1)}.gallery-polaroid.collected{box-shadow:0 3px 15px #3b82f64d}.gallery-polaroid.collected:before{content:"📥";position:absolute;top:-8px;left:-8px;font-size:16px;z-index:10}.settings-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:var(--bg-overlay);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1002;display:flex;align-items:center;justify-content:center;padding:20px}.settings-container{width:100%;max-width:500px;max-height:90vh;background:var(--card-bg);border-radius:20px;overflow:hidden;box-shadow:0 25px 80px var(--shadow-strong);display:flex;flex-direction:column}.settings-header{padding:20px 24px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border-color);flex-shrink:0}.settings-header h2{font-size:18px;font-weight:600;color:var(--text-primary)}.api-key-warning{background:linear-gradient(135deg,#fef3c7,#fde68a);border:1px solid #f59e0b;border-radius:8px;padding:12px 16px;margin:0 24px;font-size:14px;font-weight:500;color:#92400e;display:flex;align-items:center;gap:8px}.settings-field.highlight label{color:#dc2626;font-weight:600}.settings-field.highlight .input-name,.input-name.highlight{border-color:#dc2626!important;box-shadow:0 0 0 3px #dc262626}.required-mark{color:#dc2626;font-size:12px;font-weight:600;margin-left:4px}.settings-form{padding:24px;display:flex;flex-direction:column;gap:16px;overflow-y:auto;flex:1}.settings-field{display:flex;flex-direction:column;gap:6px}.settings-field label{font-size:14px;font-weight:500;color:var(--text-primary);display:flex;align-items:center}.settings-hint{font-size:12px;color:var(--text-tertiary);margin-top:4px}.settings-hint a{color:#667eea;text-decoration:none}.settings-hint a:hover{text-decoration:underline}.settings-hint code{background:var(--bg-tertiary);padding:2px 6px;border-radius:4px;font-family:Courier New,monospace;font-size:11px;color:var(--text-primary)}.storage-info{font-size:13px;color:var(--text-secondary);margin-bottom:10px;padding:8px 12px;background:var(--bg-secondary);border-radius:8px;border:1px solid var(--border-color)}.backup-buttons{display:flex;gap:12px}.backup-btn{flex:1;padding:12px 16px;border:2px solid var(--border-color);border-radius:10px;background:var(--bg-secondary);color:var(--text-primary);font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;gap:6px}.backup-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.backup-btn.export{border-color:#3b82f6;background:linear-gradient(135deg,#eff6ff,#dbeafe);color:#1d4ed8}.backup-btn.export:hover{background:linear-gradient(135deg,#dbeafe,#bfdbfe)}.backup-btn.import{border-color:#10b981;background:linear-gradient(135deg,#ecfdf5,#d1fae5);color:#047857}.backup-btn.import:hover{background:linear-gradient(135deg,#d1fae5,#a7f3d0)}.backup-btn:disabled{opacity:.6;cursor:not-allowed;transform:none!important;box-shadow:none!important}.export-progress{margin:12px 0}.export-progress-bar{width:100%;height:12px;background:var(--bg-tertiary);border-radius:6px;overflow:hidden;border:1px solid var(--border-color)}.export-progress-fill{height:100%;background:linear-gradient(90deg,#3b82f6,#60a5fa);border-radius:6px;transition:width .3s ease}.export-progress-text{font-size:12px;color:var(--text-secondary);margin-top:6px;text-align:center}.export-menu-wrapper{position:relative}.export-menu{position:absolute;top:100%;left:0;right:0;margin-top:4px;background:#fff;border:1px solid #e5e7eb;border-radius:10px;box-shadow:0 8px 24px #00000026;z-index:100;overflow:hidden}.export-menu button{width:100%;padding:12px 14px;background:none;border:none;text-align:left;cursor:pointer;font-size:13px;font-weight:500;color:#374151;display:flex;flex-direction:column;gap:2px;transition:background .15s ease}.export-menu button:hover{background:#f3f4f6}.export-menu button:not(:last-child){border-bottom:1px solid #f3f4f6}.export-menu-desc{font-size:11px;font-weight:400;color:#9ca3af}.template-list{display:flex;flex-direction:column;gap:6px}.template-item{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--bg-tertiary);border:2px solid var(--border-color);border-radius:10px;cursor:pointer;transition:all .2s ease;color:var(--text-primary)}.template-item:hover{background:var(--bg-hover);border-color:var(--border-color-dark)}.template-item.active{background:#667eea;border-color:#667eea;color:#fff}.template-name{font-size:14px;font-weight:500}.template-delete{width:22px;height:22px;background:#0000001a;border:none;border-radius:50%;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;opacity:.6;transition:all .2s ease}.template-item.active .template-delete{background:#fff3;color:#fff}.template-delete:hover{opacity:1;background:#ef4444;color:#fff}.template-add{padding:10px 14px;background:transparent;border:2px dashed var(--border-color-dark);border-radius:10px;cursor:pointer;font-size:14px;color:var(--text-tertiary);transition:all .2s ease;font-family:inherit}.template-add:hover{border-color:#667eea;color:#667eea;background:#667eea0d}.add-template-field{background:var(--bg-input);padding:16px;border-radius:12px;border:1px solid var(--border-color)}.add-template-actions{display:flex;gap:10px;margin-top:12px}.btn-secondary{padding:10px 16px;background:var(--bg-tertiary);border:1px solid var(--border-color-dark);border-radius:8px;font-size:14px;color:var(--text-primary);cursor:pointer;transition:all .2s ease;font-family:inherit}.btn-secondary:hover{background:var(--bg-hover)}.sound-settings-list{display:flex;flex-direction:column;gap:8px}.sound-setting-item{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--bg-tertiary);border:2px solid var(--border-color);border-radius:10px;cursor:pointer;transition:all .2s ease}.sound-setting-item:hover{background:var(--bg-hover);border-color:var(--border-color-dark)}.sound-setting-item.enabled{border-color:#667eea}.sound-setting-info{display:flex;flex-direction:column;gap:2px}.sound-setting-name{font-size:14px;font-weight:500;color:var(--text-primary)}.sound-setting-desc{font-size:12px;color:var(--text-tertiary)}.sound-setting-toggle{padding:4px 10px;border-radius:12px;font-size:12px;font-weight:500;transition:all .2s ease}.sound-setting-toggle.on{background:#667eea;color:#fff}.sound-setting-toggle.off{background:var(--border-color);color:var(--text-tertiary)}.detail-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:var(--bg-overlay);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:1001;display:flex;align-items:center;justify-content:center;padding:20px}.detail-container{position:relative;width:100%;max-width:800px;max-height:90vh;background:var(--card-bg);border-radius:20px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 25px 80px var(--shadow-strong)}.detail-container .btn-close{position:absolute;top:16px;right:16px;z-index:10;background:var(--card-bg);box-shadow:0 2px 8px var(--shadow-color)}.detail-images{display:flex;gap:2px;background:var(--bg-tertiary)}.detail-image-box{flex:1;position:relative;cursor:pointer;transition:transform .2s ease}.detail-image-box:hover{transform:scale(1.02)}.detail-image-box:active{transform:scale(.98)}.detail-image-box img{width:100%;aspect-ratio:1;object-fit:cover}.detail-label{position:absolute;top:12px;left:12px;background:#0009;color:#fff;padding:6px 12px;border-radius:8px;font-size:12px;font-weight:500;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.detail-info{padding:24px;text-align:center;background:var(--card-bg)}.detail-name{font-size:22px;font-weight:600;color:var(--text-primary);margin-bottom:8px}.detail-dream{font-size:15px;color:#667eea;font-style:italic;margin-bottom:8px}.detail-time{font-size:13px;color:var(--text-muted)}.fullscreen-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000f2;z-index:1002;display:flex;align-items:center;justify-content:center;cursor:pointer}.fullscreen-overlay .fullscreen-image{max-width:95vw!important;max-height:95vh!important;width:auto!important;height:auto!important;aspect-ratio:auto!important;object-fit:contain!important;border-radius:4px}@media(max-width:1000px){.main-area{flex-direction:column;padding:80px 20px 40px;gap:40px}.photos-section{min-height:auto}.polaroids-area{max-width:100%}}@media(max-width:600px){.camera-wrapper{width:280px;height:280px}.camera-upload{width:50px;height:65px}.polaroid{width:120px;padding:8px 8px 35px}.polaroid-image{width:104px;height:104px}.polaroid-dream{font-size:9px}.polaroid-date{font-size:8px}.gallery-group-grid{grid-template-columns:repeat(4,1fr);gap:8px}.detail-images{flex-direction:column}.detail-image-box img{aspect-ratio:4/3}.settings-container{max-width:100%}.top-buttons{top:10px;right:10px;gap:8px}.history-btn,.settings-btn{padding:8px 16px;font-size:12px}.canvas-area{padding:80px 15px 20px}.canvas-hint{right:20px;top:auto;bottom:30px;transform:none}.canvas-hint span{font-size:36px}.film-card{width:130px;padding:8px 8px 38px}.film-image{width:114px;height:114px}.film-dream{font-size:10px}.film-date{font-size:9px}}.delete-confirm-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:var(--bg-overlay);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:2000;display:flex;align-items:center;justify-content:center;padding:20px}.delete-confirm-dialog{background:var(--card-bg);border-radius:16px;padding:24px;max-width:300px;width:100%;box-shadow:0 20px 60px var(--shadow-strong);text-align:center}.delete-confirm-preview{width:160px;height:160px;margin:0 auto 16px;border-radius:8px;overflow:hidden;box-shadow:0 4px 12px var(--shadow-color)}.delete-confirm-preview img{width:100%;height:100%;object-fit:cover}.delete-confirm-text{font-size:16px;color:var(--text-primary);margin-bottom:20px;font-weight:500}.delete-confirm-actions{display:flex;gap:12px;justify-content:center}.delete-confirm-actions .btn-cancel{padding:10px 20px;background:var(--bg-tertiary);border:1px solid var(--border-color-dark);border-radius:8px;font-size:14px;cursor:pointer;transition:all .2s ease;color:var(--text-primary)}.delete-confirm-actions .btn-cancel:hover{background:var(--bg-hover)}.delete-confirm-actions .btn-delete{padding:10px 20px;background:#ef4444;border:none;border-radius:8px;color:#fff;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.delete-confirm-actions .btn-delete:hover{background:#dc2626}.detail-actions{padding:16px 20px 20px;display:flex;justify-content:center;gap:12px}.btn-share{padding:12px 32px;background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:25px;color:#fff;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 15px #667eea66}.btn-share:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea80}.btn-share:active{transform:translateY(0)}.share-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:var(--bg-overlay);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:1002;display:flex;align-items:center;justify-content:center;padding:20px}.share-container{position:relative;width:100%;max-width:400px;background:var(--card-bg);border-radius:20px;padding:24px;box-shadow:0 25px 80px var(--shadow-strong)}.share-container .btn-close{position:absolute;top:12px;right:12px;background:var(--bg-tertiary);box-shadow:0 2px 8px var(--shadow-color)}.share-title{text-align:center;font-size:20px;font-weight:600;color:var(--text-primary);margin-bottom:20px}.share-preview{width:100%;aspect-ratio:3/4;background:var(--bg-secondary);border-radius:12px;overflow:hidden;display:flex;align-items:center;justify-content:center;margin-bottom:20px}.share-preview img{width:100%;height:100%;object-fit:contain}.share-loading{display:flex;flex-direction:column;align-items:center;gap:12px;color:var(--text-muted)}.loading-spinner{width:40px;height:40px;border:3px solid var(--border-color);border-top-color:#667eea;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.share-error{color:var(--text-muted);font-size:14px}.share-actions{display:flex;flex-direction:column;gap:12px}.btn-share-action{width:100%;padding:14px 24px;border:none;border-radius:12px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s ease;background:var(--bg-tertiary);color:var(--text-primary)}.btn-share-action:hover:not(:disabled){background:var(--bg-hover)}.btn-share-action.primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.btn-share-action.primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 15px #667eea66}.btn-share-action:disabled{opacity:.5;cursor:not-allowed}@media(max-width:480px){.share-container{max-width:100%;margin:10px;padding:20px}.share-preview{aspect-ratio:3/4}}.camera-iris{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:#111;z-index:5;overflow:hidden}.iris-blade{position:absolute;width:100%;height:100%;background:linear-gradient(135deg,#1a1a1a,#333,#1a1a1a);transform-origin:center center;border:1px solid #444}.iris-blade:nth-child(1){transform:rotate(0) translateY(-50%)}.iris-blade:nth-child(2){transform:rotate(60deg) translateY(-50%)}.iris-blade:nth-child(3){transform:rotate(120deg) translateY(-50%)}.iris-blade:nth-child(4){transform:rotate(180deg) translateY(-50%)}.iris-blade:nth-child(5){transform:rotate(240deg) translateY(-50%)}.iris-blade:nth-child(6){transform:rotate(300deg) translateY(-50%)}.camera-iris.closing .iris-blade{animation:iris-close .4s ease-in forwards}@keyframes iris-close{0%{transform:rotate(var(--rotation, 0deg)) translateY(-100%)}to{transform:rotate(var(--rotation, 0deg)) translateY(-20%)}}.camera-iris.closing .iris-blade:nth-child(1){--rotation: 0deg}.camera-iris.closing .iris-blade:nth-child(2){--rotation: 60deg}.camera-iris.closing .iris-blade:nth-child(3){--rotation: 120deg}.camera-iris.closing .iris-blade:nth-child(4){--rotation: 180deg}.camera-iris.closing .iris-blade:nth-child(5){--rotation: 240deg}.camera-iris.closing .iris-blade:nth-child(6){--rotation: 300deg}.camera-iris.opening .iris-blade{animation:iris-open .4s ease-out forwards}@keyframes iris-open{0%{transform:rotate(var(--rotation, 0deg)) translateY(-20%)}to{transform:rotate(var(--rotation, 0deg)) translateY(-100%)}}.camera-iris.opening .iris-blade:nth-child(1){--rotation: 0deg}.camera-iris.opening .iris-blade:nth-child(2){--rotation: 60deg}.camera-iris.opening .iris-blade:nth-child(3){--rotation: 120deg}.camera-iris.opening .iris-blade:nth-child(4){--rotation: 180deg}.camera-iris.opening .iris-blade:nth-child(5){--rotation: 240deg}.camera-iris.opening .iris-blade:nth-child(6){--rotation: 300deg}.camera-logo-btn{position:absolute;top:23%;left:32%;width:36px;height:36px;background:transparent;border:none;border-radius:50%;cursor:pointer;z-index:10;transition:all .2s ease}.camera-logo-btn:hover{background:#ffffff26;transform:scale(1.05)}.camera-logo-btn:active{transform:scale(.95);background:#ffffff40}.template-toast{position:absolute;top:35px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:8px;padding:8px 16px;background:linear-gradient(180deg,#2a2a2a,#1a1a1a);border:2px solid #444;border-radius:6px;box-shadow:inset 0 1px #ffffff1a,0 4px 12px #00000080,0 0 0 1px #111;z-index:100;animation:template-toast-in .3s ease-out forwards}@keyframes template-toast-in{0%{opacity:0;transform:translate(-50%) translateY(10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.template-toast-icon{font-size:14px}.template-toast-text{font-family:Courier New,Monaco,monospace;font-size:13px;font-weight:700;color:#7fdb7f;text-shadow:0 0 8px rgba(127,219,127,.5);letter-spacing:.5px;white-space:nowrap}@media(prefers-color-scheme:dark){.template-toast{background:linear-gradient(180deg,#1a1a1a,#0a0a0a);border-color:#333}.template-toast-text{color:#90ee90;text-shadow:0 0 10px rgba(144,238,144,.6)}}.side-result-film.failed{cursor:default;overflow:visible;z-index:20}.film-failed-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#ef4444d9;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;z-index:5}.film-failed-icon{font-size:28px;color:#fff;font-weight:700}.film-failed-text{font-size:12px;color:#fff;font-weight:500}.film-failed-actions{position:absolute;bottom:-45px;left:0;right:0;display:flex;gap:8px;justify-content:center;padding:8px 0}.film-retry-btn,.film-delete-btn{padding:6px 16px;border:none;border-radius:15px;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s ease;font-family:inherit}.film-retry-btn{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.film-retry-btn:hover{transform:scale(1.05);box-shadow:0 2px 8px #667eea66}.film-delete-btn{background:var(--bg-tertiary, #f0f0f0);color:var(--text-secondary, #666);border:1px solid var(--border-color, #ddd)}.film-delete-btn:hover{background:#ef4444;color:#fff;border-color:#ef4444}.camera-iris:after{content:"";position:absolute;width:0;height:0;border-radius:50%;background:transparent;box-shadow:0 0 0 200px #111;z-index:10;transition:all .4s ease}.camera-iris.closing:after{animation:iris-center-close .4s ease-in forwards}.camera-iris.opening:after{animation:iris-center-open .4s ease-out forwards}@keyframes iris-center-close{0%{width:200%;height:200%}to{width:0;height:0}}@keyframes iris-center-open{0%{width:0;height:0}to{width:200%;height:200%}}.virtual-camera-video,.virtual-camera-image{width:100%;height:100%;object-fit:cover;display:block;transform:scaleX(1)}.virtual-camera-empty{background:linear-gradient(135deg,#2a2a3a,#1a1a2a)}.virtual-camera-empty span{font-size:48px;opacity:.6}.virtual-camera-empty small{color:#888;font-size:12px}.virtual-media-indicator{position:absolute;bottom:8px;right:8px;background:#0009;color:#fff;padding:4px 10px;border-radius:12px;font-size:11px;font-family:Comic Sans MS,cursive;pointer-events:none}.camera-upload.virtual-mode{background:linear-gradient(135deg,#6366f1,#8b5cf6)}.camera-upload.virtual-mode:hover:not(:disabled){background:linear-gradient(135deg,#4f46e5,#7c3aed)}.camera-upload.virtual-mode .upload-arrow{font-size:20px;font-weight:700}.virtual-camera-toggle{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;background:var(--card-bg);border:2px solid var(--border-color);border-radius:12px;cursor:pointer;transition:all .2s ease;margin-bottom:12px}.virtual-camera-toggle:hover{border-color:var(--border-strong)}.virtual-camera-toggle.enabled{border-color:#6366f1;background:#6366f11a}.virtual-camera-toggle-info{display:flex;flex-direction:column;gap:4px}.virtual-camera-toggle-name{font-weight:700;font-size:14px;color:var(--text-primary)}.virtual-camera-toggle-desc{font-size:12px;color:var(--text-secondary)}.virtual-camera-toggle-switch{padding:6px 14px;border-radius:20px;font-size:12px;font-weight:700;transition:all .2s ease}.virtual-camera-toggle-switch.off{background:var(--border-color);color:var(--text-secondary)}.virtual-camera-toggle-switch.on{background:#6366f1;color:#fff}.privacy-toggle{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;background:var(--card-bg);border:2px solid var(--border-color);border-radius:12px;cursor:pointer;transition:all .2s ease;margin-bottom:12px}.privacy-toggle:hover{border-color:var(--border-strong)}.privacy-toggle.enabled{border-color:#10b981;background:#10b9811a}.privacy-toggle-info{display:flex;flex-direction:column;gap:4px}.privacy-toggle-name{font-weight:700;font-size:14px;color:var(--text-primary)}.privacy-toggle-desc{font-size:12px;color:var(--text-secondary)}.privacy-toggle-switch{padding:6px 14px;border-radius:20px;font-size:12px;font-weight:700;transition:all .2s ease}.privacy-toggle-switch.off{background:var(--border-color);color:var(--text-secondary)}.privacy-toggle-switch.on{background:#10b981;color:#fff}.virtual-media-list{margin-top:8px}.virtual-media-empty{color:var(--text-secondary);font-size:13px;text-align:center;padding:20px 0;opacity:.8}.virtual-media-count{color:var(--text-secondary);font-size:13px;margin-bottom:10px}.virtual-media-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.virtual-media-item{position:relative;aspect-ratio:1;border-radius:8px;overflow:hidden;border:2px solid var(--border-color)}.virtual-media-item img{width:100%;height:100%;object-fit:cover}.virtual-media-video-thumb{width:100%;height:100%;background:#1a1a2a;display:flex;align-items:center;justify-content:center;position:relative}.virtual-media-video-thumb img{width:100%;height:100%;object-fit:cover}.virtual-media-video-thumb span{font-size:24px}.video-badge{position:absolute;bottom:4px;left:4px;background:#000000b3;color:#fff;padding:2px 6px;border-radius:4px;font-size:10px}.virtual-media-delete{position:absolute;top:4px;right:4px;width:20px;height:20px;border-radius:50%;background:#ef4444e6;color:#fff;border:none;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease}.virtual-media-item:hover .virtual-media-delete{opacity:1}.virtual-media-delete:hover{background:#dc2626}.camera-mode-switch{position:absolute;top:27%;left:50%;transform:translate(-50%,-50%);background:transparent;border:none;padding:0;cursor:pointer;z-index:15;font-family:Courier New,monospace;outline:none}.camera-mode-switch:hover,.camera-mode-switch:focus,.camera-mode-switch:active{outline:none;border:none;box-shadow:none}.camera-mode-switch .mode-text{display:block;color:#000;font-size:12px;font-weight:700;letter-spacing:1px}.camera-mode-switch.auto .mode-text{color:#000}.auto-template-hint{margin-bottom:12px!important}.auto-template-list{display:flex;flex-direction:column;gap:8px}.auto-template-item{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--card-bg, #f8f9fa);border:2px solid var(--border-color, #dee2e6);border-radius:8px;cursor:pointer;transition:all .2s ease}.auto-template-item:hover{background:var(--bg-secondary, #e9ecef);border-color:var(--primary-color, #3b82f6)}.auto-template-item.active{background:var(--primary-bg, #dbeafe);border-color:var(--primary-color, #3b82f6);box-shadow:0 0 0 2px #3b82f633}.auto-template-icon{font-size:20px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--bg-secondary, #e9ecef);border-radius:6px}.auto-template-item.active .auto-template-icon{background:var(--primary-color, #3b82f6);color:#fff;text-shadow:none}.auto-template-name{flex:1;font-size:14px;font-weight:500;color:var(--text-primary, #1f2937)}.auto-template-badge{font-size:10px;padding:2px 6px;background:var(--bg-secondary, #e9ecef);color:var(--text-secondary, #6b7280);border-radius:4px}.auto-template-delete{width:22px;height:22px;border-radius:50%;background:transparent;color:var(--text-secondary, #6b7280);border:none;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;opacity:0;transition:all .2s ease}.auto-template-item:hover .auto-template-delete{opacity:1}.auto-template-delete:hover{background:#ef44441a;color:#ef4444}.auto-template-add{display:flex;align-items:center;justify-content:center;gap:6px;padding:10px 12px;background:transparent;border:2px dashed var(--border-color, #dee2e6);border-radius:8px;cursor:pointer;font-size:14px;color:var(--text-secondary, #6b7280);transition:all .2s ease}.auto-template-add:hover{border-color:var(--primary-color, #3b82f6);color:var(--primary-color, #3b82f6);background:var(--primary-bg, #dbeafe)}.add-auto-template-field{background:var(--bg-secondary, #f3f4f6);border-radius:8px;padding:16px;margin-top:8px}.add-auto-template-row{display:flex;gap:8px;margin-bottom:12px}.add-auto-template-row .input-icon{width:60px;text-align:center;font-size:18px}.add-auto-template-row .input-name{flex:1}.add-auto-template-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}@media(prefers-color-scheme:dark){.auto-template-item{background:var(--card-bg, #374151);border-color:var(--border-color, #4b5563)}.auto-template-item:hover{background:var(--bg-secondary, #4b5563)}.auto-template-item.active{background:#3b82f633;border-color:var(--primary-color, #3b82f6)}.auto-template-icon{background:var(--bg-secondary, #4b5563)}.add-auto-template-field{background:var(--bg-secondary, #374151)}}
