.darkroom-body{background:radial-gradient(ellipse 55% 40% at 25% 6%,#1d1d1e 0%,transparent 45%),radial-gradient(ellipse 40% 35% at 78% 12%,#191a1b 0%,transparent 40%),radial-gradient(ellipse 65% 45% at 50% 30%,#1b1b1b 0%,transparent 55%),radial-gradient(ellipse 50% 50% at 12% 45%,#171717 0%,transparent 42%),radial-gradient(ellipse 45% 40% at 70% 42%,#181716 0%,transparent 48%),radial-gradient(ellipse 60% 55% at 38% 60%,#1a1919 0%,transparent 50%),radial-gradient(ellipse 35% 60% at 82% 65%,#16171a 0%,transparent 40%),radial-gradient(ellipse 50% 35% at 20% 78%,#1c1c1d 0%,transparent 45%),radial-gradient(ellipse 70% 50% at 60% 88%,#141414 0%,transparent 55%),radial-gradient(ellipse 45% 45% at 40% 95%,#1a1a1b 0%,transparent 40%),radial-gradient(ellipse 80% 80% at 50% 50%,#121213 0%,transparent 60%),#0a0a0a;background-attachment:fixed;overflow-x:hidden;margin:0;padding:0}.darkroom-body::before{content:'';position:fixed;inset:0;z-index:50;pointer-events:none;background:radial-gradient(ellipse at 85% 8%,rgba(200,30,10,7%) 0%,transparent 50%),radial-gradient(ellipse at 15% 30%,rgba(180,20,5,4%) 0%,transparent 40%),radial-gradient(ellipse at 70% 60%,rgba(160,25,8,3%) 0%,transparent 45%);animation:ambient-flicker 4s ease-in-out infinite}@keyframes ambient-flicker{0%{opacity:.3;transform:translateX(0)}8%{opacity:.95}15%{opacity:.4;transform:translateX(2%)}22%{opacity:1}30%{opacity:.25;transform:translateX(-1%)}38%{opacity:.9}45%{opacity:.35;transform:translateX(3%)}52%{opacity:1}60%{opacity:.3;transform:translateX(-2%)}68%{opacity:.85}75%{opacity:.4;transform:translateX(1%)}82%{opacity:1}90%{opacity:.35;transform:translateX(-1%)}100%{opacity:.3;transform:translateX(0)}}.bulb-fixture{position:fixed;top:-20px;right:32px;z-index:100;display:flex;flex-direction:column;align-items:center;transform-origin:top center;animation:bulb-swing 6s ease-in-out infinite;pointer-events:none}.bulb-lottie{width:240px;height:360px}.bulb-glow{position:absolute;top:140px;left:50%;transform:translateX(-50%);width:300px;height:300px;border-radius:50%;background:radial-gradient(circle,rgba(255,40,15,.12) 0%,rgba(200,30,10,4%) 40%,transparent 65%);filter:blur(30px);animation:glow-pulse 3s ease-in-out infinite;pointer-events:none}@keyframes bulb-swing{0%{transform:rotate(0)}10%{transform:rotate(5deg)}20%{transform:rotate(-4deg)}35%{transform:rotate(7deg)}50%{transform:rotate(-3deg)}60%{transform:rotate(6deg)}75%{transform:rotate(-5deg)}85%{transform:rotate(3deg)}100%{transform:rotate(0)}}@keyframes glow-pulse{0%,100%{opacity:.5}30%{opacity:1}50%{opacity:.4}70%{opacity:.85}}.esc-keycap{position:fixed;bottom:calc(2rem + 36px);right:2rem;z-index:9000;display:flex;align-items:center;justify-content:center;width:56px;height:56px;background:0 0;border:2.5px solid rgba(255,255,255,.85);border-radius:14px;text-decoration:none;cursor:pointer;transition:transform .15s ease,perspective .15s ease;opacity:0;animation:fade-up 1s ease forwards 1s;transform:perspective(200px)rotateX(8deg)rotateY(-4deg);transform-style:preserve-3d}.esc-keycap::before{content:'';position:absolute;top:4px;left:5px;right:6px;bottom:6px;border:2px solid rgba(255,255,255,.85);border-radius:7px}.esc-keycap:hover{border-color:#fff}.esc-keycap:hover::before{border-color:#fff}.esc-keycap:active{transform:perspective(200px)rotateX(2deg)rotateY(-1deg)translateY(2px)}.esc-keycap-label{color:rgba(255,255,255,.85);font-family:sf mono,monaco,inconsolata,roboto mono,monospace;font-size:.7rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;user-select:none}.esc-keycap:hover .esc-keycap-label{color:#fff}.arrow-keys{position:fixed;bottom:2rem;left:2rem;z-index:9000;display:flex;flex-direction:column;align-items:center;gap:4px;opacity:0;animation:fade-up 1s ease forwards 1s}.arrow-keys-row{display:flex;gap:calc(40px + 4px)}.arrow-key{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:0 0;border:2.5px solid rgba(255,255,255,.85);border-radius:10px;cursor:pointer;transform:perspective(200px)rotateX(8deg)rotateY(4deg);transform-style:preserve-3d;transition:transform .15s ease;padding:0}.arrow-key::before{content:'';position:absolute;top:3px;left:4px;right:5px;bottom:5px;border:1.5px solid rgba(255,255,255,.85);border-radius:5px}.arrow-key:hover{border-color:#fff}.arrow-key:hover::before{border-color:#fff}.arrow-key:active{transform:perspective(200px)rotateX(2deg)rotateY(1deg)translateY(2px)}.arrow-key-label{color:rgba(255,255,255,.85);font-size:.55rem;user-select:none;line-height:1}.arrow-key:hover .arrow-key-label{color:#fff}.darkroom-entry{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;background:radial-gradient(ellipse at 50% 15%,rgba(180,30,30,8%) 0%,transparent 50%);padding:2rem}.safelight-reflection{position:absolute;top:0;right:0;width:60%;height:50%;background:radial-gradient(ellipse at 80% 0%,rgba(200,30,10,6%) 0%,transparent 60%);pointer-events:none}.darkroom-title{color:#e0d8d0;font-size:clamp(2.5rem,8vw,6rem);font-weight:200;letter-spacing:.4em;opacity:0;animation:fade-up 2.5s ease forwards .5s;text-align:center;z-index:1}.darkroom-desc{color:rgba(200,180,160,.45);font-size:clamp(.75rem,1.5vw,.95rem);font-style:italic;font-weight:300;letter-spacing:.08em;line-height:2;text-align:center;margin-top:1.2rem;opacity:0;animation:fade-up 2s ease forwards 1.5s;z-index:1}@keyframes fade-up{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.scroll-hint{position:absolute;bottom:3rem;display:flex;flex-direction:column;align-items:center;opacity:0;animation:fade-up 1.5s ease forwards 2.5s}.scroll-hint-text{color:rgba(200,180,160,.3);font-size:.7rem;letter-spacing:.3em;text-transform:uppercase;margin-bottom:.5rem}.scroll-hint-arrow{width:1px;height:40px;background:linear-gradient(to bottom,rgba(200,180,160,.3),transparent);animation:scroll-bounce 2s ease-in-out infinite 3s}@keyframes scroll-bounce{0%,100%{transform:translateY(0);opacity:.5}50%{transform:translateY(10px);opacity:1}}.darkroom-trays{position:relative;padding:6rem 0;min-height:100vh;background:0 0}.tray-liquid{position:absolute;top:0;left:0;right:0;height:4px;overflow:hidden}.liquid-surface{width:200%;height:100%;background:linear-gradient(90deg,transparent 0%,rgba(139,90,43,.15) 25%,transparent 50%,rgba(139,90,43,.1) 75%,transparent 100%);animation:liquid-flow 8s linear infinite}@keyframes liquid-flow{from{transform:translateX(-50%)}to{transform:translateX(0)}}.tray-container{margin:0 auto;padding:0 2rem;display:flex;flex-direction:column;align-items:center;gap:3rem}.photo-paper{position:relative;background:#f0ebe0;padding:8px;padding-bottom:24px;overflow:hidden;cursor:pointer;box-shadow:0 4px 16px rgba(0,0,0,.5),0 1px 4px rgba(0,0,0,.3);transition:transform .3s ease,box-shadow .3s ease}.photo-paper:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.6),0 0 30px rgba(180,30,30,6%)}.chemical-wash{position:absolute;top:8px;left:8px;right:8px;bottom:24px;background:linear-gradient(180deg,rgba(139,90,43,.6) 0%,rgba(139,90,43,.3) 40%,transparent 100%);opacity:0;z-index:2;pointer-events:none}.photo-img{display:block;max-width:45vw;max-height:55vh;width:auto;height:auto;opacity:0;filter:sepia(1)contrast(.4)brightness(.2);transition:none}.photo-paper[data-stage=developing] .chemical-wash{animation:wash-sweep 2s ease-out forwards}.photo-paper[data-stage=developing] .photo-img{animation:develop-image 3.5s ease-out forwards .3s}.photo-paper[data-stage=developed] .photo-img{opacity:1;filter:none}@keyframes wash-sweep{0%{opacity:0;transform:translateY(-100%)}15%{opacity:.8;transform:translateY(-60%)}40%{opacity:.6;transform:translateY(0)}70%{opacity:.3}100%{opacity:0}}@keyframes develop-image{0%{opacity:0;filter:sepia(1)contrast(.4)brightness(.2)}15%{opacity:.3;filter:sepia(1)contrast(.5)brightness(.3)}30%{opacity:.5;filter:sepia(.7)contrast(.6)brightness(.5)}50%{opacity:.7;filter:sepia(.4)contrast(.75)brightness(.7)}70%{opacity:.85;filter:sepia(.15)contrast(.9)brightness(.9)}90%{opacity:.95;filter:sepia(.05)contrast(.98)brightness(.98)}100%{opacity:1;filter:none}}.darkroom-lightbox{position:fixed;inset:0;background:rgba(5,0,0,.95);box-shadow:inset 0 0 200px rgba(100,20,20,.3);z-index:9999;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .4s ease}.darkroom-lightbox.active{opacity:1;pointer-events:auto}.lightbox-close{position:absolute;top:1.5rem;right:1.5rem;background:0 0;border:none;color:rgba(200,180,160,.6);font-size:2.5rem;cursor:pointer;line-height:1;padding:.5rem;transition:color .3s ease;z-index:1}.lightbox-close:hover{color:#c8b4a0}.lightbox-img{max-width:100vw;max-height:100vh;object-fit:contain;box-shadow:none;animation:lightbox-reveal .5s ease forwards}@keyframes lightbox-reveal{from{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@media(prefers-reduced-motion:reduce){.darkroom-body::before,.bulb-fixture,.bulb-glow,.scroll-hint-arrow{animation:none}.darkroom-title,.scroll-hint,.esc-keycap,.arrow-keys{animation:none;opacity:1}.liquid-surface{animation:none}.photo-paper[data-stage=developing] .chemical-wash{animation:none}.photo-paper[data-stage=developing] .photo-img{animation:none;opacity:1;filter:none}.lightbox-img{animation:none;opacity:1}}@media(max-width:575.98px){.bulb-fixture{right:5%}.bulb-lottie{width:150px;height:225px}.bulb-glow{top:90px;width:180px;height:180px}.darkroom-title{letter-spacing:.25em}.lightbox-close{top:1rem;right:1rem}.esc-keycap{bottom:calc(1.5rem + 30px);right:1.5rem;width:48px;height:48px}.esc-keycap-label{font-size:.6rem}.arrow-keys{bottom:1.5rem;left:1.5rem}.arrow-key{width:34px;height:34px;border-radius:8px}.arrow-keys-row{gap:calc(34px + 4px)}.arrow-key-label{font-size:.45rem}}