*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0c0c0c;--fg: #f0ece4;--accent: #c9a96e;--muted: rgba(240, 236, 228, .35)}html,body{height:100%;overflow:hidden}body{background:var(--bg);color:var(--fg);display:flex;align-items:center;justify-content:center;min-height:100vh;position:relative}.grain{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:100;opacity:.04;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:128px;animation:grain-shift .15s steps(1) infinite}@keyframes grain-shift{0%{background-position:0 0}25%{background-position:-30px -15px}50%{background-position:15px 30px}75%{background-position:-15px 10px}to{background-position:5px -20px}}.bokeh-container{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;z-index:0}.bokeh-ball{position:absolute;border-radius:50%;background:radial-gradient(circle at 35% 35%,#c9a96e8c,#c9a96e05);filter:blur(18px);animation:float linear infinite}@keyframes float{0%{transform:translateY(0) translate(0) scale(1);opacity:0}8%{opacity:1}92%{opacity:.5}to{transform:translateY(-105vh) translate(var(--drift)) scale(1.3);opacity:0}}.scan-line{position:fixed;top:-2px;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent 0%,var(--accent) 40%,#fff 50%,var(--accent) 60%,transparent 100%);opacity:0;z-index:50;animation:scan 7s ease-in-out infinite;pointer-events:none}@keyframes scan{0%{top:-2px;opacity:0}4%{opacity:.7}96%{opacity:.2}to{top:100vh;opacity:0}}main{text-align:center;z-index:1;display:flex;flex-direction:column;align-items:center;gap:2.5rem;padding:2rem}.aperture{width:110px;height:110px;position:relative;opacity:0;animation:fade-in 1.2s ease forwards .2s}.aperture-ring{width:100%;height:100%;position:relative;animation:aperture-spin 12s linear infinite}.blade{position:absolute;width:13px;height:52px;background:linear-gradient(180deg,var(--accent) 0%,rgba(201,169,110,.3) 100%);border-radius:6px 6px 2px 2px;left:50%;top:50%;transform-origin:50% 100%;transform:translate(-50%) translateY(-100%) rotate(var(--r))}.blade:nth-child(1){--r: 0deg}.blade:nth-child(2){--r: 45deg}.blade:nth-child(3){--r: 90deg}.blade:nth-child(4){--r: 135deg}.blade:nth-child(5){--r: 180deg}.blade:nth-child(6){--r: 225deg}.blade:nth-child(7){--r: 270deg}.blade:nth-child(8){--r: 315deg}.aperture:after{content:"";position:absolute;top:50%;left:50%;width:14px;height:14px;background:var(--bg);border:1.5px solid var(--accent);border-radius:50%;transform:translate(-50%,-50%);z-index:2;box-shadow:0 0 8px #c9a96e80}@keyframes aperture-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.logo{font-family:Cormorant Garamond,serif;font-size:clamp(4.5rem,16vw,10rem);font-weight:300;letter-spacing:.35em;color:var(--fg);line-height:1;opacity:0;animation:fade-in-up 1.2s cubic-bezier(.22,1,.36,1) forwards .7s;text-shadow:0 0 80px rgba(201,169,110,.15)}.tagline{font-family:Space Mono,monospace;font-size:clamp(.6rem,1.8vw,.75rem);letter-spacing:.22em;color:var(--accent);text-transform:uppercase;min-height:1.6em;opacity:0;animation:fade-in 1s ease forwards 1.4s}.tagline:after{content:"|";animation:blink .75s step-end infinite;margin-left:1px;color:var(--accent)}@keyframes blink{50%{opacity:0}}.coming-soon{display:flex;align-items:center;gap:.6rem;font-family:Space Mono,monospace;font-size:.65rem;letter-spacing:.3em;text-transform:uppercase;color:var(--muted);opacity:0;animation:fade-in 1s ease forwards 2s}.dot{width:5px;height:5px;background:var(--accent);border-radius:50%;animation:pulse 2.5s ease-in-out infinite;flex-shrink:0}@keyframes pulse{0%,to{transform:scale(1);opacity:1;box-shadow:0 0 #c9a96e80}50%{transform:scale(1.5);opacity:.7;box-shadow:0 0 0 4px #c9a96e00}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-in-up{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
