:root { color-scheme:dark; --paper:#090b0a; --paper-raised:#101311; --ink:#f2f0e8; --muted:#939b95; --accent:#ff6b4a; --accent-strong:#ff8266; --line:rgba(255,255,255,.12); --glass:rgba(10,12,11,.76); --placeholder:#171b18; --shadow:0 24px 80px rgba(0,0,0,.38); }
:root[data-theme="light"] { color-scheme:light; --paper:#f3f0e7; --paper-raised:#fbf9f2; --ink:#172019; --muted:#69726c; --accent:#d94d2c; --accent-strong:#bd3d20; --line:rgba(23,32,25,.14); --glass:rgba(243,240,231,.8); --placeholder:#e5e1d6; --shadow:0 24px 80px rgba(37,40,34,.15); }
* { box-sizing:border-box; }
html { background:var(--paper); color:var(--ink); font-family:Inter,ui-sans-serif,system-ui,sans-serif; scroll-behavior:smooth; }
body { margin:0; min-height:100vh; transition:background .25s,color .25s; }
body::before { background:radial-gradient(circle at 18% 0,color-mix(in srgb,var(--accent) 7%,transparent),transparent 28%); content:""; height:45vh; left:0; pointer-events:none; position:absolute; right:0; top:0; }
.site-header { align-items:center; backdrop-filter:blur(18px); background:var(--glass); border-bottom:1px solid var(--line); display:flex; justify-content:space-between; padding:18px 4vw; position:sticky; top:0; z-index:20; }
.brand { align-items:center; color:var(--ink); display:inline-flex; font-size:15px; font-weight:750; gap:8px; letter-spacing:-.02em; text-decoration:none; }
.brand svg { color:var(--accent); fill:none; height:22px; stroke:currentColor; stroke-linecap:round; stroke-linejoin:round; stroke-width:1.7; width:22px; }
.eyebrow { color:var(--accent); }
.header-tools { align-items:center; display:flex; gap:16px; }
.count { color:var(--muted); font-size:12px; letter-spacing:.08em; margin:0; text-transform:uppercase; }
.icon-button,.round-control { align-items:center; background:transparent; border:1px solid var(--line); border-radius:50%; color:var(--ink); cursor:pointer; display:inline-flex; height:40px; justify-content:center; padding:0; width:40px; }
.icon-button:hover,.round-control:hover { background:var(--ink); color:var(--paper); }
main { margin:0 auto; max-width:1900px; padding:0 24px 96px; position:relative; }
.album-header { align-items:end; display:flex; gap:28px; justify-content:space-between; padding:48px 4px 34px; }
.eyebrow { font-size:10px; font-weight:800; letter-spacing:.18em; margin:0 0 10px; }
h1 { font:650 clamp(34px,5vw,64px)/1.02 system-ui,sans-serif; letter-spacing:-.045em; margin:0; text-wrap:balance; }
.description { color:var(--muted); font-size:15px; line-height:1.55; margin:14px 0 0; max-width:700px; }
.meta { color:var(--muted); font-size:11px; margin:12px 0 0; }
.actions,.download-actions { display:flex; flex-wrap:wrap; gap:10px; }
.actions { flex-shrink:0; margin-bottom:2px; }
.primary-action,.secondary-action { border-radius:999px; display:inline-flex; font-size:12px; font-weight:750; justify-content:center; padding:14px 19px; text-decoration:none; }
.primary-action { background:var(--accent); color:#fff; }.primary-action:hover { background:var(--accent-strong); }
.secondary-action { border:1px solid var(--line); color:var(--ink); }.secondary-action:hover { background:rgba(255,255,255,.08); }
.gallery { display:grid; gap:4px; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); }
.photo { aspect-ratio:1; background:var(--placeholder); border-radius:2px; cursor:zoom-in; margin:0; overflow:hidden; position:relative; transform:translateZ(0); }
.photo:focus-visible { outline:2px solid var(--accent); outline-offset:4px; }
.photo img { display:block; height:100%; object-fit:cover; opacity:0; transform:scale(1.015); transition:opacity .35s,transform .55s cubic-bezier(.2,.7,.2,1); width:100%; }
.photo img.loaded { opacity:1; }.photo:hover img { transform:scale(1.04); }
.photo-overlay { align-items:end; background:linear-gradient(transparent 40%,rgba(0,0,0,.7)); bottom:0; color:white; display:flex; gap:10px; justify-content:space-between; left:0; opacity:0; padding:48px 15px 14px; position:absolute; right:0; transition:opacity .25s; }
.photo:hover .photo-overlay,.photo:focus-visible .photo-overlay { opacity:1; }
.photo-overlay span { font-size:12px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.photo-overlay em { border:1px solid rgba(255,255,255,.5); border-radius:999px; font-size:8px; font-style:normal; letter-spacing:.1em; padding:5px 7px; }
.load-sentinel { align-items:center; display:flex; height:130px; justify-content:center; }.load-sentinel[hidden] { display:none; }
.load-sentinel span { animation:pulse 1s infinite alternate; background:var(--accent); border-radius:50%; height:7px; width:7px; }
@keyframes pulse { to { opacity:.2; transform:scale(.55); } }
dialog { background:rgba(4,6,5,.96); border:0; color:#f5f3ed; height:100%; margin:0; max-height:none; max-width:none; padding:0; width:100%; }
dialog::backdrop { background:#040605; }
dialog figure { align-items:center; display:flex; height:calc(100% - 94px); justify-content:center; margin:0; padding:4vh 7vw 2vh; }
dialog img { box-shadow:var(--shadow); max-height:82vh; max-width:86vw; object-fit:contain; }
.round-control { background:rgba(12,14,13,.68); border-color:rgba(255,255,255,.18); color:white; font-size:27px; position:fixed; z-index:2; }
.close { right:22px; top:22px; }.nav { top:45%; transform:translateY(-50%); }.previous { left:22px; }.next { right:22px; }
.lightbox-bar { align-items:center; backdrop-filter:blur(18px); background:rgba(8,10,9,.82); border-top:1px solid rgba(255,255,255,.12); bottom:0; display:flex; gap:24px; justify-content:space-between; left:0; min-height:94px; padding:17px 4vw; position:fixed; right:0; }
.lightbox-bar strong,.lightbox-bar span { display:block; }.lightbox-bar strong { font-size:13px; max-width:50vw; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.lightbox-bar span { color:rgba(255,255,255,.55); font-size:11px; margin-top:5px; }.lightbox-bar .secondary-action { border-color:rgba(255,255,255,.2); color:white; }
.password-card { background:var(--paper-raised); border:1px solid var(--line); border-radius:18px; margin:16vh auto; max-width:460px; padding:34px; }
.password-card h1 { font-size:56px; }.password-card form { display:flex; gap:10px; margin-top:34px; }
.password-card input { background:var(--paper); border:1px solid var(--line); border-radius:999px; color:var(--ink); flex:1; font:inherit; min-width:0; padding:14px 18px; }
.password-card button { background:var(--accent); border:0; border-radius:999px; color:white; cursor:pointer; font-weight:700; padding:14px 20px; }
.error,.error-message { color:var(--accent); }.error-message { font-size:18px; padding:40px 0; }
footer { border-top:1px solid var(--line); color:var(--muted); display:flex; font-size:11px; justify-content:space-between; letter-spacing:.08em; margin:0 4vw; padding:28px 0 42px; text-transform:uppercase; }
@media(max-width:900px){.gallery{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}}
@media(max-width:600px){.site-header{padding:14px 16px}main{padding-left:8px;padding-right:8px}.album-header{align-items:start;flex-direction:column;padding:34px 8px 24px}.gallery{gap:2px;grid-template-columns:repeat(3,1fr)}.photo-overlay{display:none}.password-card{margin:12vh 18px}.password-card form,.lightbox-bar{align-items:stretch;flex-direction:column}dialog figure{height:calc(100% - 150px);padding:60px 12px 0}dialog img{max-height:70vh;max-width:100%}.nav{display:none}.lightbox-bar{gap:12px;min-height:150px}.lightbox-bar strong{max-width:90vw}.download-actions a{flex:1}}
