*,*: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%}body{background:var(--bg);color:var(--fg);min-height:100vh;position:relative;overflow-x:hidden}.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}}.site-header{position:fixed;top:0;left:0;right:0;z-index:10;display:flex;align-items:center;justify-content:space-between;padding:1.4rem 2.5rem;opacity:0;animation:fade-in 1s ease forwards .4s}.header-logo{font-family:Cormorant Garamond,serif;font-size:1.3rem;font-weight:300;letter-spacing:.4em;color:var(--fg)}.header-page-nav{display:flex;gap:0;align-items:center;position:absolute;left:50%;transform:translate(-50%)}.nav-tab{font-family:Space Mono,monospace;font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);background:none;border:none;padding:.45rem 1rem;cursor:pointer;position:relative;transition:color .2s}.nav-tab:after{content:"";position:absolute;bottom:-2px;left:50%;transform:translate(-50%);width:0;height:1px;background:var(--accent);transition:width .2s}.nav-tab--active{color:var(--fg)}.nav-tab--active:after{width:60%}.nav-tab:hover{color:var(--fg)}.header-nav{display:flex;gap:.75rem;align-items:center}.btn-ghost{font-family:Space Mono,monospace;font-size:.65rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);background:none;border:1px solid var(--muted);padding:.45rem 1.1rem;cursor:pointer;transition:color .2s,border-color .2s}.btn-ghost:hover{color:var(--fg);border-color:var(--fg)}.btn-accent{font-family:Space Mono,monospace;font-size:.65rem;letter-spacing:.2em;text-transform:uppercase;color:var(--bg);background:var(--accent);border:1px solid var(--accent);padding:.45rem 1.1rem;cursor:pointer;transition:opacity .2s}.btn-accent:hover{opacity:.85}.btn-accent:disabled{opacity:.5;cursor:not-allowed}.btn-full{width:100%;padding:.75rem;font-size:.7rem}main{text-align:center;z-index:1;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2.5rem;min-height:100vh;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}}@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)}}.overlay-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:#0c0c0cbf;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;animation:fade-in .2s ease}.overlay-panel{position:relative;background:#141414;border:1px solid rgba(201,169,110,.2);padding:2.5rem 2.5rem 2rem;width:min(420px,92vw);animation:fade-in-up .3s cubic-bezier(.22,1,.36,1)}.overlay-close{position:absolute;top:1rem;right:1.2rem;background:none;border:none;color:var(--muted);font-size:1rem;cursor:pointer;line-height:1;transition:color .15s}.overlay-close:hover{color:var(--fg)}.overlay-title{font-family:Cormorant Garamond,serif;font-size:1.9rem;font-weight:300;letter-spacing:.08em;color:var(--fg);margin-bottom:1.75rem}.overlay-form{display:flex;flex-direction:column;gap:1rem}.overlay-form label{display:flex;flex-direction:column;gap:.4rem;font-family:Space Mono,monospace;font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}.overlay-form input{background:#f0ece40d;border:1px solid rgba(240,236,228,.12);color:var(--fg);font-family:Space Mono,monospace;font-size:.8rem;padding:.65rem .8rem;outline:none;transition:border-color .15s}.overlay-form input:focus{border-color:var(--accent)}.form-error{font-family:Space Mono,monospace;font-size:.65rem;letter-spacing:.05em;color:#e07070}.overlay-switch{margin-top:1.25rem;font-family:Space Mono,monospace;font-size:.6rem;letter-spacing:.1em;color:var(--muted);text-align:center}.link-btn{background:none;border:none;color:var(--accent);font-family:Space Mono,monospace;font-size:.6rem;letter-spacing:.1em;cursor:pointer;text-decoration:underline;text-underline-offset:2px}.placeholder-page{display:flex;align-items:center;justify-content:center;min-height:calc(100vh - 70px);margin-top:70px;font-family:Space Mono,monospace;font-size:.65rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}.gallery-page{min-height:100vh;background:var(--bg);display:flex;flex-direction:column;padding-top:70px}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:2px;padding:2px;flex:1}.photo-card{aspect-ratio:1;position:relative;overflow:hidden;cursor:pointer;background:#1a1a1a;user-select:none;-webkit-user-select:none;touch-action:manipulation}.photo-card img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}.thumb-placeholder{width:100%;height:100%;background:linear-gradient(135deg,#1a1a1a,#222);animation:pulse-bg 1.8s ease-in-out infinite}@keyframes pulse-bg{0%,to{opacity:1}50%{opacity:.5}}.photo-card.selected:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#c9a96e40;border:2px solid var(--accent);pointer-events:none}.check-badge{position:absolute;top:6px;right:6px;width:20px;height:20px;border-radius:50%;border:1.5px solid rgba(201,169,110,.5);background:#0c0c0c99;display:flex;align-items:center;justify-content:center;z-index:2;pointer-events:none;transition:background .15s,border-color .15s}.check-badge--on{background:var(--accent);border-color:var(--accent)}.check-badge svg{width:10px;height:10px;stroke:var(--bg)}.selection-bar{position:fixed;bottom:0;left:0;right:0;z-index:50;background:#141414;border-top:1px solid rgba(201,169,110,.2);display:flex;align-items:center;justify-content:space-between;padding:.9rem 1.5rem;animation:slide-up .2s cubic-bezier(.22,1,.36,1)}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.selection-count{font-family:Space Mono,monospace;font-size:.65rem;letter-spacing:.15em;text-transform:uppercase;color:var(--muted)}.selection-actions{display:flex;gap:.5rem}.sel-btn{background:none;border:1px solid rgba(240,236,228,.12);color:var(--muted);width:38px;height:38px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:color .15s,border-color .15s}.sel-btn svg{width:16px;height:16px}.sel-btn:hover{color:var(--fg);border-color:var(--fg)}.sel-btn--album:hover{color:var(--accent);border-color:var(--accent)}.sel-btn--delete:hover{color:#e07070;border-color:#e07070}.gallery-loading{font-family:Space Mono,monospace;font-size:1.2rem;letter-spacing:.3em;color:var(--accent);text-align:center;padding:2rem}.album-empty{font-family:Space Mono,monospace;font-size:.65rem;letter-spacing:.1em;color:var(--muted);text-align:center;padding:1rem 0}.album-list{list-style:none;display:flex;flex-direction:column;gap:2px;margin-top:.5rem;max-height:320px;overflow-y:auto}.album-list-item{width:100%;display:flex;align-items:center;justify-content:space-between;background:none;border:1px solid rgba(240,236,228,.07);color:var(--fg);padding:.75rem 1rem;cursor:pointer;transition:border-color .15s,background .15s;text-align:left}.album-list-item:hover{border-color:var(--accent);background:#c9a96e0d}.album-list-title{font-family:Cormorant Garamond,serif;font-size:1.05rem;font-weight:300;letter-spacing:.05em}.album-list-count{font-family:Space Mono,monospace;font-size:.6rem;letter-spacing:.1em;color:var(--muted)}
