:root { --night:#0b1117; --night-soft:#101a22; --paper:#e9e1d4; --muted:#a79f93; --gold:#c69a5f; --line:rgba(233,225,212,.2); }
* { box-sizing:border-box; } html { scroll-behavior:smooth; } body { margin:0; background:var(--night); color:var(--paper); font-family:"DM Sans",sans-serif; } a { color:inherit; text-decoration:none; } button { font:inherit; }
.site-header { position:fixed; z-index:20; inset:0 0 auto; height:76px; display:flex; align-items:center; justify-content:space-between; padding:0 5vw; border-bottom:1px solid rgba(233,225,212,.11); background:rgba(11,17,23,.86); backdrop-filter:blur(12px); }.wordmark { font:400 1.05rem "Libre Baskerville",serif; letter-spacing:-.04em; }.wordmark span { color:var(--gold); } nav { display:flex; gap:28px; font:.63rem "DM Mono",monospace; letter-spacing:.11em; text-transform:uppercase; color:var(--muted); } nav a:hover { color:var(--paper); }.menu-button { display:none; color:inherit; border:0; background:transparent; font:.63rem "DM Mono",monospace; letter-spacing:.1em; text-transform:uppercase; }
.home-hero { min-height:90vh; padding:clamp(140px,18vw,220px) 8vw 9vw; display:grid; grid-template-columns:1.1fr .9fr; gap:8vw; align-items:end; border-bottom:1px solid var(--line); background:radial-gradient(circle at 70% 20%,#213344 0,transparent 38%),var(--night); }.kicker,.eyebrow { margin:0 0 18px; color:var(--gold); font:.63rem "DM Mono",monospace; letter-spacing:.13em; text-transform:uppercase; }.home-hero h1,.section-title,.collection-heading h1 { max-width:780px; margin:0; font:400 clamp(3.3rem,7vw,7.7rem)/.98 "Libre Baskerville",serif; letter-spacing:-.07em; }.home-hero h1 em { color:var(--gold); }.home-hero p:not(.kicker) { max-width:34ch; margin:35px 0 0; color:var(--muted); line-height:1.65; }.hero-ledger { display:flex; gap:28px; margin-top:55px; padding-top:18px; border-top:1px solid var(--line); }.hero-ledger span { display:block; color:var(--gold); font:1.45rem "Libre Baskerville",serif; }.hero-ledger small { display:block; margin-top:6px; color:var(--muted); font:.57rem "DM Mono",monospace; letter-spacing:.09em; text-transform:uppercase; }.hero-index { align-self:center; border-top:1px solid var(--line); border-left:1px solid var(--line); }.hero-index__label { display:block; padding:15px 17px; color:var(--gold); border-right:1px solid var(--line); border-bottom:1px solid var(--line); font:.6rem "DM Mono",monospace; letter-spacing:.1em; text-transform:uppercase; }.hero-index__grid { display:grid; grid-template-columns:repeat(2,1fr); }.hero-index__item { display:flex; align-items:center; justify-content:space-between; min-height:74px; padding:13px 16px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); background:rgba(16,26,34,.32); color:var(--paper); text-align:left; transition:background .25s ease,color .25s ease; }.hero-index__item:hover { color:var(--gold); background:rgba(198,154,95,.08); }.hero-index__item strong { display:block; font:400 .98rem "Libre Baskerville",serif; }.hero-index__item small { display:block; margin-top:4px; color:var(--muted); font:.53rem "DM Mono",monospace; letter-spacing:.07em; text-transform:uppercase; }.hero-index__item span { color:var(--gold); font-size:.85rem; }
.earth-section { padding:10vw 8vw; display:grid; grid-template-columns:.78fr 1.22fr; gap:8vw; align-items:center; border-bottom:1px solid var(--line); }.earth-copy h2 { margin:0; font:400 clamp(2.6rem,4.5vw,5.1rem)/1 "Libre Baskerville",serif; letter-spacing:-.06em; }.earth-copy p:not(.eyebrow) { max-width:36ch; color:var(--muted); line-height:1.65; }.earth-note { margin-top:34px; font:.63rem "DM Mono",monospace; color:var(--gold); text-transform:uppercase; letter-spacing:.1em; }.globe-wrap { position:relative; max-width:700px; justify-self:end; width:100%; }.globe-wrap::before { content:""; position:absolute; inset:10%; border:1px solid rgba(198,154,95,.2); border-radius:50%; transform:scale(1.13); }.globe-canvas { position:relative; z-index:1; width:100%; aspect-ratio:1; display:block; cursor:grab; touch-action:none; }.globe-canvas:active { cursor:grabbing; }.globe-status { min-height:20px; margin:3px 0 0; color:var(--gold); text-align:center; font:.6rem "DM Mono",monospace; letter-spacing:.08em; text-transform:uppercase; transition:opacity .25s ease; }.globe-legend { display:flex; flex-wrap:wrap; justify-content:center; gap:10px 18px; margin-top:14px; color:var(--muted); font:.59rem "DM Mono",monospace; letter-spacing:.08em; text-transform:uppercase; }.globe-legend span::before { content:""; width:7px; height:7px; margin-right:7px; border-radius:50%; display:inline-block; background:var(--gold); }
.archive-section { padding:11vw 8vw; }.archive-intro { display:flex; align-items:end; justify-content:space-between; gap:30px; }.archive-intro p:last-child { max-width:30ch; margin:0; color:var(--muted); line-height:1.6; }.collection-grid { display:grid; grid-template-columns:repeat(3,1fr); margin-top:7vw; border-top:1px solid var(--line); border-left:1px solid var(--line); }.collection-card { position:relative; min-height:420px; padding:20px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); color:inherit; text-align:left; cursor:pointer; background:var(--night); overflow:hidden; }.collection-card__image { position:absolute; inset:0; opacity:.62; }.collection-card img { width:100%; height:100%; object-fit:cover; filter:saturate(.82) contrast(.98); transition:transform .7s ease,opacity .5s ease; }.collection-card:hover img { transform:scale(1.045); opacity:.78; }.collection-card::after { content:""; position:absolute; inset:0; background:linear-gradient(180deg,rgba(11,17,23,.05),rgba(11,17,23,.9)); pointer-events:none; }.collection-card__meta { position:relative; z-index:1; display:flex; height:100%; flex-direction:column; justify-content:space-between; }.collection-card__place { font:.62rem "DM Mono",monospace; color:var(--gold); letter-spacing:.1em; text-transform:uppercase; }.collection-card__title { font:400 clamp(1.8rem,2.6vw,2.9rem)/1.04 "Libre Baskerville",serif; }.collection-card__count { margin-top:10px; color:var(--muted); font:.62rem "DM Mono",monospace; letter-spacing:.08em; text-transform:uppercase; }
.collection-journey { margin-top:9vw; border-bottom:1px solid var(--line); }.collection-entry { display:grid; grid-template-columns:1fr 1.15fr 1fr; gap:clamp(18px,4vw,70px); position:relative; width:100%; min-height:min(49vw,660px); padding:clamp(26px,4vw,58px) 0; border:0; border-top:1px solid var(--line); background:transparent; color:var(--paper); text-align:left; cursor:pointer; overflow:hidden; }.collection-entry__number { align-self:start; color:var(--gold); font:.62rem "DM Mono",monospace; letter-spacing:.11em; }.collection-entry__image { grid-column:2; position:relative; display:block; height:100%; min-height:380px; overflow:hidden; }.collection-entry__image::after { content:""; position:absolute; inset:0; background:linear-gradient(180deg,transparent 45%,rgba(7,12,16,.24)); transition:background .35s ease; }.collection-entry__image img { width:100%; height:100%; object-fit:cover; filter:saturate(.75) contrast(.98); transition:transform .8s cubic-bezier(.2,.8,.2,1),filter .4s ease; }.collection-entry__meta { grid-column:3; align-self:end; display:flex; flex-direction:column; align-items:flex-start; padding-bottom:7%; }.collection-entry__place,.collection-entry__count { color:var(--muted); font:.6rem "DM Mono",monospace; letter-spacing:.1em; text-transform:uppercase; }.collection-entry__title { max-width:6ch; margin:16px 0 22px; font:400 clamp(2.6rem,5.2vw,6.2rem)/.91 "Libre Baskerville",serif; letter-spacing:-.07em; }.collection-entry__count b { margin-left:8px; color:var(--gold); font-size:.95rem; font-weight:400; }.collection-entry:nth-child(even) { grid-template-columns:1fr 1.15fr 1fr; }.collection-entry:nth-child(even) .collection-entry__number { grid-column:3; grid-row:1; justify-self:end; }.collection-entry:nth-child(even) .collection-entry__image { grid-column:2; }.collection-entry:nth-child(even) .collection-entry__meta { grid-column:1; grid-row:1; align-self:end; }.collection-entry:hover .collection-entry__image img { transform:scale(1.045); filter:saturate(1.03); }.collection-entry:hover .collection-entry__image::after { background:linear-gradient(180deg,rgba(198,154,95,.08),rgba(7,12,16,.2)); }.collection-entry:hover .collection-entry__title { color:var(--gold); }
.about { display:grid; grid-template-columns:1fr 1fr; border-top:1px solid var(--line); background:#0f181f; }.about-photo { min-height:54vw; background:url('public/collections/shanghai/cover.jpg') center/cover; filter:grayscale(.25); }.about-copy { max-width:610px; padding:11vw 8vw; }.about-copy h2 { margin:0; font:400 clamp(2.5rem,4.5vw,5rem)/1 "Libre Baskerville",serif; letter-spacing:-.06em; }.about-copy p:not(.eyebrow) { margin-top:30px; color:var(--muted); line-height:1.65; }
.collection-page { min-height:100vh; padding-top:128px; }.back-link { display:inline-flex; margin:0 8vw 7vw; padding-bottom:8px; border-bottom:1px solid var(--gold); color:var(--gold); font:.63rem "DM Mono",monospace; letter-spacing:.1em; text-transform:uppercase; }.collection-heading { padding:0 8vw 8vw; display:grid; grid-template-columns:1.1fr .9fr; gap:8vw; align-items:end; }.collection-heading p { margin:0; max-width:32ch; color:var(--muted); line-height:1.65; justify-self:end; }.locked-content { display:none; }.locked-content.unlocked { display:block; animation:reveal .9s ease both; }.collection-cover { width:100%; height:min(66vw,800px); object-fit:cover; display:block; filter:saturate(.88); }.gallery { padding:10vw 8vw; display:grid; grid-template-columns:repeat(12,1fr); gap:44px 20px; }.gallery-image { display:flex; flex-direction:column; margin:0; }.gallery-image img { width:100%; height:auto; display:block; filter:saturate(.86); transition:filter .35s ease,transform .5s ease; }.gallery-image:hover img { filter:saturate(1.08); transform:scale(1.01); }.gallery-image:nth-child(6n+1),.gallery-image:nth-child(6n+4) { grid-column:span 7; }.gallery-image:nth-child(6n+2),.gallery-image:nth-child(6n+3),.gallery-image:nth-child(6n+5),.gallery-image:nth-child(6n) { grid-column:span 5; align-self:center; }.gallery-image figcaption { padding-top:13px; }.caption-number { display:block; color:var(--gold); font:.6rem "DM Mono",monospace; letter-spacing:.1em; text-transform:uppercase; }.gallery-image figcaption p { max-width:32ch; margin:9px 0 0; color:rgba(233,225,212,.78); font:.9rem/1.58 "Libre Baskerville",serif; }.empty-gallery { padding:10vw 8vw; text-align:center; font:2rem "Libre Baskerville",serif; }
.home-hero { position:relative; display:block; min-height:100svh; padding:0; overflow:hidden; isolation:isolate; background:#070c10; }.home-hero__image,.home-hero__veil { position:absolute; inset:0; width:100%; height:100%; }.home-hero__image { object-fit:cover; object-position:center; filter:saturate(.74) contrast(1.05) brightness(.76); }.home-hero__veil { background:linear-gradient(90deg,rgba(5,9,12,.82) 0%,rgba(5,9,12,.42) 47%,rgba(5,9,12,.08) 100%),linear-gradient(0deg,rgba(5,9,12,.7),transparent 46%); }.home-hero__content { position:relative; z-index:1; display:flex; min-height:100svh; max-width:810px; padding:clamp(140px,18vw,220px) 8vw 9vw; flex-direction:column; justify-content:flex-end; align-items:flex-start; }.home-hero h1 { max-width:780px; margin:0; font:400 clamp(3.25rem,7vw,7.7rem)/.98 "Libre Baskerville",serif; letter-spacing:-.07em; }.home-hero h1 em { color:var(--gold); }.home-hero p:not(.kicker) { max-width:32ch; margin:31px 0 0; color:rgba(233,225,212,.78); line-height:1.65; }.hero-enter { display:inline-flex; gap:18px; align-items:center; margin-top:44px; padding:14px 0; border-bottom:1px solid var(--gold); color:var(--paper); font:.64rem "DM Mono",monospace; letter-spacing:.11em; text-transform:uppercase; transition:color .2s ease,gap .2s ease; }.hero-enter:hover { gap:25px; color:var(--gold); }.hero-credit { position:absolute; z-index:1; right:5vw; bottom:25px; margin:0; color:rgba(233,225,212,.65); font:.58rem "DM Mono",monospace; letter-spacing:.1em; text-transform:uppercase; }
.dial-section { padding:10vw 8vw; background:#081018; border-top:1px solid var(--line); }.dial-layout { display:grid; grid-template-columns:.85fr 1.15fr; gap:8vw; align-items:center; max-width:1280px; margin:auto; }.dial-copy h2 { margin:0; font:400 clamp(2.5rem,4.5vw,4.8rem)/1 "Libre Baskerville",serif; letter-spacing:-.06em; }.dial-copy p:not(.eyebrow) { max-width:35ch; color:var(--muted); line-height:1.65; }.dial-reset { margin-top:26px; padding:12px 16px; border:1px solid var(--gold); color:var(--gold); background:transparent; cursor:pointer; font:.62rem "DM Mono",monospace; letter-spacing:.1em; text-transform:uppercase; transition:background .2s,color .2s; }.dial-reset:hover { background:var(--gold); color:var(--night); }.dial-stage { position:relative; width:min(100%,650px); aspect-ratio:1; margin:auto; overflow:hidden; border:1px solid rgba(198,154,95,.68); border-radius:50%; background:#050a0e; box-shadow:0 30px 70px rgba(0,0,0,.32); cursor:grab; touch-action:none; user-select:none; }.dial-stage:active { cursor:grabbing; }.dial-stage:focus-visible { outline:2px solid var(--paper); outline-offset:8px; }.dial-image,.dial-shade { position:absolute; inset:11%; width:78%; height:78%; border-radius:50%; }.dial-image { object-fit:cover; filter:saturate(.72) contrast(1.02) brightness(.6); }.dial-shade { background:radial-gradient(circle,transparent 45%,rgba(3,8,12,.55) 100%); }.dial-ring { position:absolute; inset:4%; border:1px solid rgba(233,225,212,.3); border-radius:50%; pointer-events:none; }.dial-ring::before,.dial-ring::after { content:""; position:absolute; inset:8%; border:1px solid rgba(233,225,212,.12); border-radius:50%; }.dial-ring::after { inset:0; background:repeating-conic-gradient(from 0deg,rgba(233,225,212,.42) 0deg 1deg,transparent 1deg 10deg); -webkit-mask:radial-gradient(transparent 73%,#000 74%); mask:radial-gradient(transparent 73%,#000 74%); }.dial-cardinal { position:absolute; color:var(--paper); font:.64rem "DM Mono",monospace; letter-spacing:.11em; }.dial-cardinal--n { top:5%; left:50%; transform:translateX(-50%); }.dial-cardinal--e { top:50%; right:4%; transform:translateY(-50%); }.dial-cardinal--s { bottom:5%; left:50%; transform:translateX(-50%); }.dial-cardinal--w { top:50%; left:4%; transform:translateY(-50%); }.dial-marker { position:absolute; inset:5.5%; transform:rotate(var(--target)); transform-origin:center; pointer-events:none; }.dial-marker::before { content:""; position:absolute; top:0; left:50%; width:11px; height:11px; border:2px solid var(--night); border-radius:50%; background:var(--gold); transform:translate(-50%,-50%); box-shadow:0 0 0 5px rgba(198,154,95,.16); }.dial-marker span { position:absolute; top:19px; left:50%; color:var(--gold); font:.52rem "DM Mono",monospace; letter-spacing:.08em; text-transform:uppercase; transform:translateX(-50%); }.dial-needle { --angle:0deg; position:absolute; inset:17%; transform:rotate(var(--angle)); transform-origin:center; pointer-events:none; transition:transform .12s linear; }.dial-needle::before { content:""; position:absolute; top:0; left:50%; width:2px; height:50%; background:linear-gradient(var(--paper),rgba(233,225,212,.22)); transform:translateX(-50%); }.dial-needle::after { content:""; position:absolute; top:-3px; left:50%; width:10px; height:10px; border-radius:50%; background:var(--paper); transform:translateX(-50%); box-shadow:0 0 10px rgba(233,225,212,.6); }.dial-center { position:absolute; inset:38%; display:grid; place-content:center; width:24%; height:24%; border:1px solid rgba(233,225,212,.38); border-radius:50%; background:rgba(8,16,24,.82); color:var(--paper); text-align:center; pointer-events:none; }.dial-center span { font:.78rem "Libre Baskerville",serif; }.dial-center small { margin-top:4px; color:var(--gold); font:.46rem "DM Mono",monospace; letter-spacing:.08em; text-transform:uppercase; }.dial-success { display:grid; place-items:center; position:absolute; inset:0; z-index:3; color:var(--night); background:rgba(233,225,212,.96); text-align:center; opacity:0; visibility:hidden; transform:scale(.98); transition:opacity .55s ease,transform .55s ease,visibility 0s linear .55s; pointer-events:none; }.dial-success.show { opacity:1; visibility:visible; transform:scale(1); transition-delay:0s; }.dial-success h3 { margin:0; font:400 clamp(2.5rem,4vw,4.2rem)/1 "Libre Baskerville",serif; }.dial-success p { margin:14px 0 0; font:.65rem "DM Mono",monospace; letter-spacing:.1em; text-transform:uppercase; }
footer { display:flex; justify-content:space-between; padding:22px 5vw; border-top:1px solid var(--line); color:var(--muted); font:.6rem "DM Mono",monospace; letter-spacing:.08em; text-transform:uppercase; } @keyframes reveal { from { opacity:0; transform:translateY(18px); } to { opacity:1; transform:translateY(0); } }
@media(max-width:720px) { .site-header { height:64px; padding:0 6vw; }.menu-button { display:block; } nav { display:none; position:absolute; top:63px; right:0; left:0; padding:20px 6vw; background:#0b1117; border-bottom:1px solid var(--line); flex-direction:column; }.site-header.open nav { display:flex; }.home-hero { min-height:72vh; padding:130px 6vw 16vw; display:block; }.hero-index { margin-top:55px; }.hero-ledger { gap:17px; }.earth-section { padding:18vw 6vw; display:block; }.globe-wrap { margin-top:12vw; }.archive-section { padding:18vw 6vw; }.archive-intro { display:block; }.archive-intro p:last-child { margin-top:30px; }.collection-grid { grid-template-columns:repeat(2,1fr); margin-top:15vw; }.collection-card { min-height:250px; padding:14px; }.collection-card__title { font-size:1.5rem; }.about { display:block; }.about-photo { min-height:100vw; }.about-copy { padding:18vw 6vw; }.collection-page { padding-top:100px; }.back-link { margin:0 6vw 14vw; }.collection-heading { display:block; padding:0 6vw 16vw; }.collection-heading p { margin-top:30px; }.collection-cover { height:105vw; }.gallery { padding:17vw 6vw; grid-template-columns:repeat(2,1fr); gap:35px 10px; }.gallery-image:nth-child(n) { grid-column:span 1; }.gallery-image:nth-child(4n+1) { grid-column:span 2; }.puzzle-section { padding:18vw 6vw; }.puzzle-layout { display:block; }.puzzle-copy { margin-bottom:13vw; } footer { padding:19px 6vw; } }
@media(max-width:720px) { .home-hero { min-height:100svh; padding:0; }.home-hero__image { object-position:58% center; }.home-hero__content { min-height:100svh; padding:130px 7vw 11vw; }.home-hero h1 { font-size:clamp(3rem,13vw,4.5rem); }.hero-credit { right:7vw; bottom:20px; }.dial-section { padding:18vw 6vw; }.dial-layout { display:block; }.dial-copy { margin-bottom:13vw; }.dial-stage { width:100%; }.dial-marker span { display:none; }.collection-journey { margin-top:15vw; }.collection-entry,.collection-entry:nth-child(even) { display:block; min-height:0; padding:20px 0 46px; }.collection-entry__number,.collection-entry:nth-child(even) .collection-entry__number { display:block; margin-bottom:15px; }.collection-entry__image,.collection-entry:nth-child(even) .collection-entry__image { display:block; height:92vw; min-height:0; }.collection-entry__meta,.collection-entry:nth-child(even) .collection-entry__meta { display:block; padding:20px 0 0; }.collection-entry__title { max-width:none; margin:11px 0 15px; font-size:clamp(2.7rem,13vw,4.5rem); }.collection-entry__count { display:block; } }

/* Preserve each photograph's original frame, while keeping the site composition calm. */
.home-hero__image { object-fit:contain; background:#070c10; }.collection-cover { height:auto; max-height:none; object-fit:contain; background:#070c10; }.collection-entry { min-height:0; padding:clamp(18px,2.8vw,38px) 0; transition:background .45s ease,transform .45s ease; }.collection-entry__image { height:auto; min-height:0; overflow:visible; align-self:center; }.collection-entry__image img { height:auto; object-fit:contain; display:block; }.collection-entry__image::after { display:none; }.collection-entry__meta { padding-bottom:0; }.collection-entry:hover { background:rgba(198,154,95,.035); transform:translateX(6px); }.about-photo { background-size:contain; background-repeat:no-repeat; background-position:center; }

/* Hovering a gold point softly layers its photographs over the globe. */
.globe-preview { position:absolute; z-index:2; inset:19%; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px; opacity:0; transform:scale(.84); transition:opacity .42s ease,transform .62s cubic-bezier(.22,1,.36,1),filter .5s ease; pointer-events:none; filter:blur(3px); }.globe-preview.visible { opacity:.58; transform:scale(1); filter:blur(0); }.globe-preview.opening { opacity:.9; transform:scale(1.15); filter:brightness(1.18) blur(0); transition-duration:.68s; }.globe-preview__title { color:var(--paper); font:.65rem "DM Mono",monospace; letter-spacing:.12em; text-transform:uppercase; text-shadow:0 1px 8px #050a0e; }.globe-preview__images { display:flex; align-items:center; justify-content:center; width:100%; }.globe-preview__images img { width:46%; max-height:130px; margin-left:-11%; border:1px solid rgba(233,225,212,.38); background:#081018; object-fit:contain; box-shadow:0 14px 28px rgba(0,0,0,.25); transform:rotate(-5deg); }.globe-preview__images img:first-child { margin-left:0; transform:rotate(4deg); }.globe-preview__images img:last-child { transform:rotate(8deg); }

/* The dial changes state gently and resolves into the archive instead of stopping abruptly. */
.dial-image { object-fit:contain; background:#050a0e; }.dial-stage.stage-change .dial-ring,.dial-stage.stage-change .dial-center,.dial-stage.stage-change .dial-marker { animation:dial-step .52s cubic-bezier(.22,1,.36,1) both; }.dial-stage.complete { animation:dial-resolve .82s cubic-bezier(.22,1,.36,1) both; }.dial-stage.complete .dial-image { filter:saturate(1.05) brightness(.9); transition:filter .7s ease; }.dial-success { background:linear-gradient(135deg,rgba(233,225,212,.98),rgba(219,203,178,.96)); }.dial-success.show { transition-duration:.72s; }
@keyframes dial-step { 0% { opacity:1; transform:scale(1); } 45% { opacity:0; transform:scale(.92); } 100% { opacity:1; transform:scale(1); } } @keyframes dial-resolve { 0% { transform:scale(1); box-shadow:0 30px 70px rgba(0,0,0,.32); } 45% { transform:scale(1.025); box-shadow:0 0 0 16px rgba(198,154,95,.12),0 36px 90px rgba(0,0,0,.4); } 100% { transform:scale(1); box-shadow:0 30px 70px rgba(0,0,0,.32); } }

@media(max-width:720px) { .collection-entry,.collection-entry:nth-child(even) { padding:16px 0 30px; }.collection-entry__image,.collection-entry:nth-child(even) .collection-entry__image { height:auto; }.globe-preview { inset:24%; }.globe-preview__images img { max-height:86px; }.home-hero__image { object-position:center; } }

/* A single uncropped photograph quietly changes while a location is explored. */
.globe-preview { gap:9px; }.globe-preview__image { display:block; width:auto; height:auto; max-width:82%; max-height:185px; border:1px solid rgba(233,225,212,.38); background:transparent; box-shadow:0 14px 28px rgba(0,0,0,.22); object-fit:contain; animation:preview-photo .38s ease both; }.globe-preview.opening .globe-preview__image { transform:scale(1.07); transition:transform .68s cubic-bezier(.22,1,.36,1); } @keyframes preview-photo { from { opacity:0; transform:translateY(8px) scale(.97); } to { opacity:1; transform:translateY(0) scale(1); } }

/* The archive is now a compact photographic masonry rather than a long procession. */
.collection-journey { column-count:3; column-gap:20px; margin-top:5vw; border:0; }.collection-entry,.collection-entry:nth-child(even) { display:inline-block; width:100%; min-height:0; margin:0 0 25px; padding:0 0 18px; border-top:0; border-bottom:1px solid var(--line); break-inside:avoid; overflow:visible; transform:none; }.collection-entry__number,.collection-entry:nth-child(even) .collection-entry__number { display:block; margin-bottom:9px; }.collection-entry__image,.collection-entry:nth-child(even) .collection-entry__image { display:block; width:100%; height:auto; min-height:0; overflow:visible; }.collection-entry__image img { width:100%; height:auto; transform:none; }.collection-entry__meta,.collection-entry:nth-child(even) .collection-entry__meta { display:block; padding:13px 0 0; }.collection-entry__title { max-width:none; margin:8px 0 12px; font-size:clamp(2rem,3.1vw,3.45rem); line-height:.96; }.collection-entry:hover,.collection-entry:nth-child(even):hover { background:transparent; transform:translateY(-4px); }.collection-entry:hover .collection-entry__image img { transform:none; filter:saturate(1.03); }
@media(max-width:900px) { .collection-journey { column-count:2; column-gap:14px; }.collection-entry { margin-bottom:20px; } } @media(max-width:520px) { .collection-journey { column-count:1; }.globe-preview__image { max-height:120px; } }

/* California expands from its clustered globe points into an immersive regional map. */
.state-focus { position:fixed; z-index:50; inset:0; display:grid; grid-template-columns:.86fr 1.14fr; overflow:hidden; opacity:0; visibility:hidden; transform:scale(.965); background:#081018; color:var(--paper); pointer-events:none; transition:opacity .58s ease,transform .72s cubic-bezier(.22,1,.36,1),visibility 0s linear .72s; }.state-focus.visible { opacity:1; visibility:visible; transform:scale(1); pointer-events:auto; transition-delay:0s; }.state-focus.leaving { opacity:0; transform:scale(1.045); transition-duration:.68s; }.state-focus__intro { display:flex; flex-direction:column; justify-content:center; padding:11vw 7vw; border-right:1px solid var(--line); background:radial-gradient(circle at 40% 34%,#203442 0,transparent 50%),#081018; }.state-focus__intro h2 { margin:0; font:400 clamp(3rem,5.5vw,6.5rem)/.94 "Libre Baskerville",serif; letter-spacing:-.07em; }.state-focus__intro > p:not(.eyebrow) { max-width:27ch; margin:28px 0 0; color:var(--muted); line-height:1.65; }.state-focus__montage { position:relative; min-height:230px; margin-top:42px; }.state-focus__montage img { display:block; width:auto; max-width:100%; max-height:230px; background:transparent; object-fit:contain; filter:saturate(.84); animation:state-photo .42s ease both; }.state-focus__montage span { display:block; margin-top:11px; color:var(--gold); font:.6rem "DM Mono",monospace; letter-spacing:.11em; text-transform:uppercase; }.state-focus__map { position:relative; min-height:100vh; overflow:hidden; background:linear-gradient(135deg,#0b171d,#122936); }.state-focus__map::before { content:""; position:absolute; inset:7%; border:1px solid rgba(198,154,95,.2); border-radius:50%; transform:scale(1.18); }.state-focus__map svg { position:absolute; inset:5% 13%; width:74%; height:90%; filter:drop-shadow(0 30px 35px rgba(0,0,0,.32)); }.state-focus__map path { fill:rgba(198,154,95,.12); stroke:rgba(233,225,212,.66); stroke-width:3; vector-effect:non-scaling-stroke; }.state-focus__point { position:absolute; left:var(--x); top:var(--y); z-index:1; padding:0; border:0; color:var(--paper); background:transparent; cursor:pointer; transform:translate(-50%,-50%); }.state-focus__point span { display:block; width:14px; height:14px; margin:auto; border:2px solid var(--night); border-radius:50%; background:var(--gold); box-shadow:0 0 0 7px rgba(198,154,95,.16); transition:transform .25s ease,box-shadow .25s ease; }.state-focus__point small { display:block; margin-top:9px; font:.6rem "DM Mono",monospace; letter-spacing:.1em; text-transform:uppercase; text-shadow:0 2px 8px #081018; }.state-focus__point:hover span { transform:scale(1.45); box-shadow:0 0 0 12px rgba(198,154,95,.18); }.state-focus__close { position:absolute; z-index:3; top:28px; right:36px; width:42px; height:42px; border:1px solid var(--line); border-radius:50%; color:var(--paper); background:rgba(8,16,24,.38); cursor:pointer; font:1.5rem/1 sans-serif; transition:background .2s ease,color .2s ease; }.state-focus__close:hover { color:var(--night); background:var(--gold); } @keyframes state-photo { from { opacity:0; transform:translateY(10px) scale(.98); } to { opacity:1; transform:translateY(0) scale(1); } }
@media(max-width:720px) { .state-focus { display:block; overflow:auto; }.state-focus__intro { min-height:54svh; padding:132px 8vw 12vw; border-right:0; border-bottom:1px solid var(--line); }.state-focus__map { min-height:72svh; }.state-focus__map svg { inset:6% 14%; width:72%; height:88%; }.state-focus__close { top:17px; right:18px; }.state-focus__montage { min-height:150px; }.state-focus__montage img { max-height:150px; } }

/* A location lens starts exactly under the cursor: orb first, then a close regional map. */
.location-focus { --origin-x:50vw; --origin-y:50vh; position:fixed; z-index:40; inset:0; overflow:hidden; color:var(--paper); background:#09141b; clip-path:circle(0 at var(--origin-x) var(--origin-y)); opacity:0; visibility:hidden; pointer-events:none; transition:clip-path .98s cubic-bezier(.22,1,.36,1),opacity .28s ease,visibility 0s linear .98s; }.location-focus.visible { clip-path:circle(150vmax at var(--origin-x) var(--origin-y)); opacity:1; visibility:visible; transition-delay:0s; }.location-focus__orb { position:absolute; z-index:2; left:var(--origin-x); top:var(--origin-y); width:min(46vmin,500px); aspect-ratio:1; border:1px solid rgba(245,229,201,.58); border-radius:50%; background:radial-gradient(circle at 31% 27%,rgba(111,154,178,.84),rgba(30,65,82,.72) 36%,rgba(7,17,23,.96) 72%); box-shadow:inset -48px -28px 68px rgba(0,0,0,.56),0 0 0 1px rgba(198,154,95,.18),0 28px 75px rgba(0,0,0,.42); opacity:0; transform:translate(-50%,-50%) scale(.04); transition:opacity .22s ease,transform .78s cubic-bezier(.22,1,.36,1); }.location-focus__orb::before,.location-focus__orb::after { content:""; position:absolute; inset:16%; border:1px solid rgba(233,225,212,.17); border-radius:50%; }.location-focus__orb::after { inset:-1px 48%; border-width:0 1px; border-radius:50%; }.location-focus.visible .location-focus__orb { opacity:1; transform:translate(-50%,-50%) scale(1); }.location-focus__canvas { position:absolute; inset:0; width:100%; height:100%; opacity:0; transform:scale(1.08); transition:opacity .54s ease .3s,transform 1.08s cubic-bezier(.22,1,.36,1) .18s; }.location-focus.visible .location-focus__canvas { opacity:1; transform:scale(1); }.location-focus__copy { position:absolute; z-index:3; right:clamp(24px,7vw,120px); bottom:clamp(28px,9vh,110px); width:min(360px,calc(100vw - 48px)); padding:28px 30px; border:1px solid rgba(233,225,212,.2); background:rgba(7,15,20,.66); backdrop-filter:blur(10px); opacity:0; transform:translateY(28px); transition:opacity .45s ease .56s,transform .68s cubic-bezier(.22,1,.36,1) .56s; }.location-focus.visible .location-focus__copy { opacity:1; transform:translateY(0); }.location-focus__copy h2 { margin:10px 0 14px; font:400 clamp(2.5rem,5vw,4.7rem)/.92 "Libre Baskerville",serif; letter-spacing:-.06em; }.location-focus__copy > p:not(.eyebrow) { margin:0; color:var(--muted); line-height:1.6; }.location-focus__montage { margin-top:20px; min-height:96px; }.location-focus__montage img { display:block; width:auto; max-width:100%; max-height:150px; object-fit:contain; background:transparent; box-shadow:0 14px 26px rgba(0,0,0,.22); transition:opacity .18s ease; }
@media(max-width:720px) { .location-focus__orb { width:65vmin; }.location-focus__copy { right:24px; bottom:28px; padding:22px; }.location-focus__copy h2 { font-size:2.7rem; }.location-focus__montage img { max-height:100px; } }

/* The globe remains the only sphere: selecting a place enlarges the actual Earth
   before the photographic map is revealed. */
.globe-wrap { z-index:1; transform-origin:50% 50%; transition:transform 1.18s cubic-bezier(.22,1,.36,1),z-index 0s linear 1.18s; }
.globe-wrap.globe-wrap--magnifying { z-index:41; transform-origin:var(--focus-x,50%) var(--focus-y,50%); transform:scale(var(--magnify-scale,2.12)); transition-delay:0s; }
.globe-wrap.globe-wrap--magnifying .globe-preview { opacity:0; transform:scale(.92); }
.location-focus { z-index:42; clip-path:none; background:linear-gradient(135deg,rgba(6,17,24,.95),rgba(5,11,16,.9)); opacity:0; visibility:hidden; pointer-events:none; transition:opacity .5s ease,visibility 0s linear .55s; }
.location-focus.visible { clip-path:none; opacity:1; visibility:visible; pointer-events:auto; transition:opacity .5s ease .72s,visibility 0s linear 0s; }
.location-focus__canvas { z-index:1; opacity:0; transform:scale(1.05); transition:opacity .75s ease .28s,transform 1.18s cubic-bezier(.22,1,.36,1) .18s; }
.location-focus.visible .location-focus__canvas { opacity:.58; transform:scale(1); }
.location-focus__photo-map { position:absolute; z-index:2; inset:clamp(16px,4vw,64px); display:grid; grid-template-columns:repeat(4,1fr); grid-template-rows:repeat(3,1fr); overflow:hidden; border:1px solid rgba(233,225,212,.3); background:#071116; opacity:0; transform:scale(.92); transition:opacity .6s ease .5s,transform 1s cubic-bezier(.22,1,.36,1) .42s; }
.location-focus.visible .location-focus__photo-map { opacity:.88; transform:scale(1); }
.map-photo-piece { display:block; min-width:0; min-height:0; margin:-12%; border:1px solid rgba(233,225,212,.24); background-color:#0b1820; background-position:center; background-size:cover; box-shadow:inset 0 0 0 1px rgba(0,0,0,.2); filter:saturate(.82) contrast(1.04) brightness(.86); opacity:1; transform:scale(1.06); transition:opacity .18s ease,filter .45s ease,transform .48s cubic-bezier(.22,1,.36,1); }
.map-photo-piece:nth-child(3n+2) { filter:saturate(.94) contrast(1.05) brightness(.92); }.map-photo-piece:nth-child(4n) { filter:saturate(.74) brightness(.78); }.map-photo-piece.is-changing { opacity:.2; transform:scale(.98); }
.location-focus__copy { z-index:4; bottom:clamp(24px,7vh,90px); background:rgba(7,15,20,.8); transition:opacity .45s ease .82s,transform .68s cubic-bezier(.22,1,.36,1) .82s; }
.location-focus__actions { display:flex; flex-wrap:wrap; gap:10px; margin-top:23px; }.location-focus__enter,.location-focus__return { padding:12px 14px; border:1px solid var(--gold); cursor:pointer; font:.58rem "DM Mono",monospace; letter-spacing:.09em; text-transform:uppercase; transition:background .2s ease,color .2s ease; }.location-focus__enter { color:var(--night); background:var(--gold); }.location-focus__enter:hover { background:var(--paper); border-color:var(--paper); }.location-focus__return { color:var(--paper); background:transparent; border-color:rgba(233,225,212,.38); }.location-focus__return:hover { color:var(--gold); border-color:var(--gold); }

/* On a first visit, each archive entry directs visitors to discover it on the globe. */
.earth-gate { min-height:calc(100svh - 76px); padding:clamp(145px,19vw,230px) 8vw 10vw; display:grid; align-content:center; border-bottom:1px solid var(--line); background:radial-gradient(circle at 72% 28%,rgba(44,70,86,.48),transparent 36%),var(--night); }.earth-gate h1 { max-width:850px; margin:0; font:400 clamp(3.2rem,7vw,7.3rem)/.96 "Libre Baskerville",serif; letter-spacing:-.07em; }.earth-gate h1 em { color:var(--gold); }.earth-gate > p:not(.eyebrow) { max-width:45ch; margin:34px 0 0; color:var(--muted); line-height:1.7; }.earth-gate .hero-enter { width:max-content; margin-top:36px; }.earth-guidance { display:inline-block; margin-top:24px; color:var(--gold); font:.61rem "DM Mono",monospace; letter-spacing:.1em; text-transform:uppercase; }.earth-guidance:hover { color:var(--paper); }.collection-entry--guided { cursor:help; }.collection-entry--guided:hover .collection-entry__image img { transform:none; filter:saturate(.75) contrast(.98); }.collection-entry--guided:hover .collection-entry__image::after { background:linear-gradient(180deg,transparent 45%,rgba(7,12,16,.24)); }.collection-entry--guided:hover .collection-entry__title { color:var(--paper); }.collection-entry--guided:focus-visible { outline:1px solid var(--gold); outline-offset:-5px; }

/* A short, calm direction appears only when a first-time visitor selects an album card. */
.earth-entry-hint { position:fixed; z-index:90; left:50%; bottom:28px; display:flex; align-items:center; gap:24px; width:min(570px,calc(100vw - 36px)); padding:18px 20px; border:1px solid rgba(233,225,212,.32); background:rgba(7,15,20,.93); box-shadow:0 18px 48px rgba(0,0,0,.34); color:var(--paper); opacity:0; visibility:hidden; transform:translate(-50%,24px) scale(.98); transition:opacity .42s ease,transform .62s cubic-bezier(.22,1,.36,1),visibility 0s linear .62s; }.earth-entry-hint.show { opacity:1; visibility:visible; transform:translate(-50%,0) scale(1); transition-delay:0s; }.earth-entry-hint p { flex:1; margin:0; line-height:1.45; }.earth-entry-hint p span { display:block; margin-bottom:5px; color:var(--gold); font:.55rem "DM Mono",monospace; letter-spacing:.1em; text-transform:uppercase; }.earth-entry-hint p strong { font:400 .92rem "Libre Baskerville",serif; }.earth-entry-hint a { flex:none; color:var(--gold); font:.57rem "DM Mono",monospace; letter-spacing:.08em; text-align:right; text-transform:uppercase; }.earth-entry-hint a:hover { color:var(--paper); }

@media(max-width:720px) { .globe-wrap.globe-wrap--magnifying { transform:scale(1.56); }.location-focus__photo-map { inset:16px 14px 35vh; grid-template-columns:repeat(4,1fr); grid-template-rows:repeat(3,1fr); }.location-focus__copy { right:18px; bottom:20px; width:calc(100vw - 36px); }.location-focus__actions { gap:8px; }.location-focus__enter,.location-focus__return { padding:10px 11px; font-size:.53rem; }.earth-gate { min-height:calc(100svh - 64px); padding:136px 7vw 16vw; }.earth-gate h1 { font-size:clamp(3rem,12vw,4.7rem); }.earth-entry-hint { bottom:18px; display:block; padding:16px 17px; }.earth-entry-hint a { display:inline-block; margin-top:12px; text-align:left; } }

/* The map is now the interaction: hover opens a quiet regional view, then the
   archive unfolds beside it instead of covering it with a puzzle. */
.globe-preview__pulse { display:block; width:7px; height:7px; border-radius:50%; background:var(--gold); box-shadow:0 0 0 0 rgba(198,154,95,.46); animation:atlas-pulse 1.1s ease-out infinite; }.globe-preview.opening { opacity:.66; transform:scale(1.06); }
@keyframes atlas-pulse { 70% { box-shadow:0 0 0 13px rgba(198,154,95,0); } 100% { box-shadow:0 0 0 0 rgba(198,154,95,0); } }
.location-focus { --map-surface:#172225; --map-depth:#071015; --map-panel:#0b1518; --map-accent:#c69a5f; --map-line:rgba(231,220,198,.72); }.location-focus__map-stage { position:absolute; z-index:2; inset:clamp(22px,4vw,64px); overflow:hidden; border:1px solid var(--map-line); background:linear-gradient(135deg,var(--map-surface),var(--map-depth)); box-shadow:0 24px 70px rgba(0,0,0,.25); transition:right 1.08s cubic-bezier(.22,1,.36,1),bottom .72s cubic-bezier(.22,1,.36,1),border-color .7s ease,background .7s ease; }.location-focus__map-stage::after { content:""; position:absolute; inset:13px; border:1px solid color-mix(in srgb,var(--map-accent) 38%,transparent); pointer-events:none; }
.location-focus__canvas { z-index:1; opacity:0; transform:scale(1.04); transition:opacity .8s ease .34s,transform 1.2s cubic-bezier(.22,1,.36,1) .24s; }.location-focus.visible .location-focus__canvas { opacity:.95; transform:scale(1); }
.location-focus__map-prompt { position:absolute; z-index:3; left:clamp(22px,4vw,60px); bottom:clamp(22px,5vw,65px); width:min(440px,calc(100% - 44px)); padding:22px 24px; border-left:1px solid var(--map-accent); background:color-mix(in srgb,var(--map-panel) 87%,#000); backdrop-filter:blur(11px); opacity:0; transform:translateY(22px); transition:opacity .45s ease .88s,transform .7s cubic-bezier(.22,1,.36,1) .88s,border-color .7s ease,background .7s ease; }.location-focus.visible .location-focus__map-prompt { opacity:1; transform:translateY(0); }.location-focus__map-prompt .eyebrow,.location-focus__archive .eyebrow { color:var(--map-accent); }.location-focus__map-prompt h2 { margin:7px 0 12px; font:400 clamp(2.5rem,5vw,5.4rem)/.9 "Libre Baskerville",serif; letter-spacing:-.07em; }.location-focus__map-prompt > p:not(.eyebrow) { max-width:31ch; margin:0; color:var(--muted); line-height:1.55; }.location-focus__reveal { display:inline-flex; align-items:center; gap:14px; margin-top:20px; padding:0 0 9px; border:0; border-bottom:1px solid var(--map-accent); background:transparent; color:var(--paper); cursor:pointer; font:.6rem "DM Mono",monospace; letter-spacing:.1em; text-transform:uppercase; transition:gap .24s ease,color .24s ease,border-color .7s ease; }.location-focus__reveal:hover { gap:21px; color:var(--map-accent); }
.location-focus__archive { position:absolute; z-index:5; top:clamp(22px,4vw,64px); right:clamp(22px,4vw,64px); bottom:clamp(22px,4vw,64px); display:flex; flex-direction:column; width:min(33vw,510px); padding:clamp(24px,3vw,46px); border:1px solid var(--map-line); background:color-mix(in srgb,var(--map-panel) 94%,#000); box-shadow:0 24px 70px rgba(0,0,0,.28); opacity:0; visibility:hidden; transform:translateX(56px); transition:opacity .48s ease,transform .9s cubic-bezier(.22,1,.36,1),visibility 0s linear .9s,border-color .7s ease,background .7s ease; }.location-focus.archive-open .location-focus__map-stage { right:calc(min(33vw,510px) + clamp(46px,8vw,124px)); }.location-focus.archive-open .location-focus__map-prompt { opacity:0; transform:translateY(12px); pointer-events:none; transition-delay:0s; }.location-focus.archive-open .location-focus__archive { opacity:1; visibility:visible; transform:translateX(0); transition-delay:.24s, .24s, 0s, 0s, 0s; }.location-focus__archive h2 { margin:8px 0 16px; font:400 clamp(2.8rem,4.5vw,5.1rem)/.88 "Libre Baskerville",serif; letter-spacing:-.07em; }.location-focus__archive > p:not(.eyebrow) { margin:0; color:var(--muted); line-height:1.62; }.location-focus__archive .location-focus__montage { position:relative; display:flex; flex:1; align-items:center; justify-content:center; min-height:0; margin:clamp(20px,3vw,38px) 0 24px; padding:17px; border:1px solid color-mix(in srgb,var(--map-line) 45%,transparent); background:var(--map-depth); overflow:hidden; transition:border-color .7s ease,background .7s ease; }.location-focus__archive .location-focus__montage::before { content:""; position:absolute; inset:8px; border:1px solid color-mix(in srgb,var(--map-accent) 34%,transparent); pointer-events:none; }.location-focus__archive .location-focus__montage img { display:block; width:100%; height:100%; max-width:none; max-height:none; object-fit:contain; background:transparent; box-shadow:none; opacity:1; transform:scale(1); transition:opacity .13s ease,transform .22s ease,filter .22s ease; }.location-focus__archive .location-focus__montage img.is-changing { opacity:.15; transform:scale(.98); filter:blur(1px); }.location-focus__montage span { position:absolute; z-index:2; right:15px; bottom:13px; color:var(--map-accent); font:.55rem "DM Mono",monospace; letter-spacing:.1em; text-shadow:0 1px 6px #02080c; }.location-focus__archive .location-focus__actions { margin-top:auto; }.location-focus .location-focus__enter { border-color:var(--map-accent); background:var(--map-accent); }.location-focus .location-focus__enter:hover { border-color:var(--map-line); background:var(--map-line); }.location-focus .location-focus__return:hover { color:var(--map-accent); border-color:var(--map-accent); }
.collection-content { display:block; }
@media(max-width:900px) { .location-focus.archive-open .location-focus__map-stage { right:calc(min(37vw,390px) + 44px); }.location-focus__archive { width:min(37vw,390px); padding:24px; }.location-focus__archive h2 { font-size:clamp(2.5rem,5.6vw,4rem); } }
@media(max-width:720px) { .location-focus__map-stage { inset:14px; }.location-focus__map-prompt { left:16px; bottom:16px; width:calc(100% - 32px); padding:18px; }.location-focus__map-prompt h2 { font-size:clamp(2.5rem,12vw,4rem); }.location-focus.archive-open .location-focus__map-stage { right:14px; bottom:49svh; }.location-focus__archive { top:auto; right:14px; bottom:14px; left:14px; width:auto; height:calc(47svh - 20px); padding:20px; transform:translateY(36px); }.location-focus.archive-open .location-focus__archive { transform:translateY(0); }.location-focus__archive h2 { margin:5px 0 8px; font-size:clamp(2.4rem,11vw,3.8rem); }.location-focus__archive > p:not(.eyebrow) { font-size:.88rem; }.location-focus__archive .location-focus__montage { margin:14px 0; padding:11px; }.location-focus__archive .location-focus__actions { margin-top:0; } }

/* Homepage photographs cross-fade as a quiet four-image opening sequence. */
.home-hero__montage { position:absolute; inset:0; z-index:0; overflow:hidden; background:#070c10; }.home-hero__montage .home-hero__image { z-index:0; opacity:0; transform:scale(1.025); transition:opacity 1.15s cubic-bezier(.22,1,.36,1),transform 5.8s cubic-bezier(.22,1,.36,1),filter 1.15s ease; will-change:opacity,transform; }.home-hero__montage .home-hero__image.is-active { z-index:1; opacity:1; transform:scale(1); }.hero-credit { transition:opacity .32s ease,transform .32s ease; }.hero-credit.is-changing { opacity:.1; transform:translateY(4px); }

/* Keep the collection title and its photograph count in their own clear rows. */
.collection-heading { display:block; padding-bottom:clamp(56px,7vw,112px); }.collection-heading__identity { min-width:0; }.collection-heading__identity h1 { max-width:100%; overflow-wrap:anywhere; }.collection-heading__note { max-width:38ch; margin:clamp(24px,3vw,42px) 0 0; justify-self:auto; }
@media(max-width:720px) { .collection-heading__identity .eyebrow { margin:0 0 18px; }.collection-heading__note { margin-top:28px; } }

/* Nearby albums open as a camera-like regional lens on the same globe. Their
   true anchors remain visible while generous label targets unfold around them. */
.region-guide { position:absolute; z-index:3; top:7%; right:4%; width:min(205px,34%); padding:15px 17px 14px; border-top:1px solid rgba(198,154,95,.72); border-bottom:1px solid rgba(233,225,212,.18); background:linear-gradient(90deg,rgba(7,15,20,.88),rgba(7,15,20,.52)); color:var(--paper); opacity:0; visibility:hidden; transform:translateY(12px); transition:opacity .38s ease,transform .7s cubic-bezier(.22,1,.36,1),visibility 0s linear .7s; pointer-events:none; backdrop-filter:blur(7px); }
.region-guide span,.region-guide small { display:block; font:.52rem "DM Mono",monospace; letter-spacing:.11em; text-transform:uppercase; }
.region-guide span { color:var(--gold); }
.region-guide strong { display:block; margin:7px 0 8px; font:400 clamp(.92rem,1.7vw,1.22rem)/1.15 "Libre Baskerville",serif; }
.region-guide small { color:rgba(233,225,212,.6); line-height:1.55; }
.globe-wrap--region .region-guide { opacity:.92; visibility:visible; transform:translateY(0); transition-delay:.42s, .42s, 0s; }
.globe-wrap--region-leaving .region-guide { opacity:0; transform:translateY(-8px); transition-delay:0s; }
.globe-wrap--region::before { opacity:.12; transform:scale(1.32); transition:opacity .65s ease,transform 1.2s cubic-bezier(.22,1,.36,1); }
.globe-wrap--region .globe-legend { opacity:.28; transition:opacity .45s ease; }
.globe-wrap--region-ready .globe-status { color:var(--paper); }
.globe-wrap--region-ready .region-guide { border-top-color:var(--paper); }
@media(max-width:720px) {
  .region-guide { top:3%; right:2%; width:42%; padding:10px 11px; }
  .region-guide strong { margin:5px 0 4px; font-size:.83rem; }
  .region-guide small { display:none; }
  .globe-wrap.globe-wrap--magnifying { transform:scale(var(--magnify-scale,1.56)); }
}
@media(prefers-reduced-motion:reduce) {
  .region-guide,.globe-wrap,.globe-wrap::before { transition-duration:.01ms !important; }
}

/* A quiet mark appears only after every archive dial has been completed. */
.secret-entry[hidden] { display:none; }
.secret-entry { position:relative; width:20px; height:20px; margin:-4px 0 0 -10px; padding:0; border:0; background:transparent; color:rgba(233,225,212,.3); cursor:pointer; font:400 .82rem/20px "Libre Baskerville",serif; transition:color .45s ease,transform .55s cubic-bezier(.22,1,.36,1),opacity .45s ease; opacity:.62; }
.secret-entry::after { content:""; position:absolute; inset:5px; border:1px solid currentColor; transform:rotate(45deg) scale(.55); opacity:.42; transition:transform .55s cubic-bezier(.22,1,.36,1),opacity .45s ease; }
.secret-entry span { opacity:0; }
.secret-entry:hover,.secret-entry:focus-visible { color:var(--gold); opacity:1; transform:rotate(90deg); outline:0; }
.secret-entry:hover::after,.secret-entry:focus-visible::after { opacity:.9; transform:rotate(45deg) scale(.86); }

/* The private-word gate is intentionally spare and gives no clue to the answer. */
.secret-gate-open { overflow:hidden; }
.secret-gate { position:fixed; z-index:120; inset:0; display:grid; place-items:center; padding:22px; background:rgba(12,6,12,0); backdrop-filter:blur(0); opacity:0; visibility:hidden; transition:opacity .48s ease,background .48s ease,backdrop-filter .48s ease,visibility 0s linear .5s; }
.secret-gate.visible { background:rgba(12,6,12,.91); backdrop-filter:blur(18px); opacity:1; visibility:visible; transition-delay:0s; }
.secret-gate__card { position:relative; width:min(490px,100%); padding:clamp(34px,6vw,68px); border:1px solid rgba(225,186,190,.28); background:linear-gradient(145deg,rgba(39,20,34,.98),rgba(19,11,19,.99)); box-shadow:0 36px 100px rgba(0,0,0,.48); opacity:0; transform:translateY(22px) scale(.97); transition:opacity .42s ease .12s,transform .7s cubic-bezier(.22,1,.36,1) .12s; }
.secret-gate.visible .secret-gate__card { opacity:1; transform:translateY(0) scale(1); }
.secret-gate__mark { display:block; margin-bottom:34px; color:#d7aeb2; font:400 1rem "Libre Baskerville",serif; }
.secret-gate__card > p { margin:0 0 50px; color:#f1dfe0; font:400 clamp(2rem,5vw,3.1rem)/1.08 "Libre Baskerville",serif; letter-spacing:-.055em; }
.secret-gate__card label { display:block; margin-bottom:10px; color:rgba(241,223,224,.54); font:.55rem "DM Mono",monospace; letter-spacing:.12em; text-transform:uppercase; }
.secret-gate__field { display:flex; border-bottom:1px solid rgba(225,186,190,.48); }
.secret-gate__field input { min-width:0; flex:1; padding:13px 0; border:0; outline:0; background:transparent; color:#f4e6e2; font:1rem "DM Mono",monospace; letter-spacing:.08em; }
.secret-gate__field button { padding:0 0 0 22px; border:0; background:transparent; color:#d7aeb2; cursor:pointer; font:.57rem "DM Mono",monospace; letter-spacing:.11em; text-transform:uppercase; transition:color .2s ease,transform .2s ease; }
.secret-gate__field button:hover { color:#fff2ed; transform:translateX(3px); }
.secret-gate__error { display:block; min-height:18px; margin-top:14px; color:#c78388; font:.55rem "DM Mono",monospace; letter-spacing:.06em; }
.secret-gate__close { position:absolute; z-index:2; top:25px; right:28px; width:34px; height:34px; padding:0; border:1px solid rgba(225,186,190,.26); border-radius:50%; background:rgba(23,12,21,.42); color:rgba(241,223,224,.65); cursor:pointer; font:300 1.2rem/31px "DM Sans",sans-serif; transition:border-color .25s ease,color .25s ease,transform .4s ease; }
.secret-gate__close:hover { border-color:#d7aeb2; color:#fff2ed; transform:rotate(90deg); }
.secret-gate.rejected .secret-gate__card { animation:secret-reject .42s ease; }
.secret-gate.accepted { background:#160d15; }
.secret-gate.accepted .secret-gate__card { opacity:0; transform:scale(1.06); transition:opacity .55s ease,transform .7s cubic-bezier(.22,1,.36,1); }
@keyframes secret-reject { 25% { transform:translateX(-7px); } 50% { transform:translateX(6px); } 75% { transform:translateX(-3px); } }

/* The keepsake lives outside the geographic archive: warm, intimate, and unnumbered. */
.keepsake-open { background:#170f16; }
.keepsake-open .site-header { border-bottom-color:rgba(229,194,196,.15); background:rgba(20,11,18,.82); }
.keepsake-open .wordmark span { color:#d0a1a5; }
.keepsake-open > footer { display:none; }
.keepsake-page { --rose:#d6a5a9; --blush:#ead0cf; --wine:#6c3a4c; --ink:#170f16; min-height:100vh; overflow:hidden; background:var(--ink); color:#eee1dc; }
.keepsake-hero { position:relative; min-height:100svh; padding:clamp(116px,12vw,165px) 7vw 7vw; display:grid; grid-template-columns:minmax(250px,.86fr) minmax(420px,1.3fr); grid-template-rows:1fr auto; gap:4vw 7vw; align-items:center; background:radial-gradient(circle at 77% 18%,rgba(113,57,74,.36),transparent 33%),linear-gradient(135deg,#1a1018,#24131e 53%,#120b12); }
.keepsake-hero::before { content:""; position:absolute; inset:98px 4vw 4vw; border:1px solid rgba(234,208,207,.12); pointer-events:none; }
.keepsake-hero__monogram { position:absolute; z-index:2; top:112px; right:6vw; display:flex; align-items:center; gap:10px; color:rgba(234,208,207,.62); font:.55rem "DM Mono",monospace; letter-spacing:.12em; }
.keepsake-hero__monogram i { display:block; width:24px; height:1px; background:rgba(234,208,207,.3); transform:rotate(-35deg); }
.keepsake-hero__image { grid-column:2; grid-row:1 / span 2; position:relative; align-self:stretch; min-height:65vh; display:grid; place-items:center; }
.keepsake-hero__image::before { content:""; position:absolute; inset:7% -2% -3% 7%; border:1px solid rgba(214,165,169,.33); transform:rotate(1.4deg); }
.keepsake-hero__image::after { content:""; position:absolute; top:4%; right:-1%; width:31%; height:1px; background:var(--rose); }
.keepsake-hero__image img { position:relative; z-index:1; display:block; width:100%; height:auto; max-height:76vh; object-fit:contain; filter:saturate(.82) sepia(.06); box-shadow:0 30px 80px rgba(0,0,0,.38); }
.keepsake-hero__copy { grid-column:1; grid-row:1 / span 2; align-self:end; padding:0 0 4vw 2vw; }
.keepsake-hero__copy > p { margin:0 0 24px; color:var(--rose); font:.56rem "DM Mono",monospace; letter-spacing:.13em; text-transform:uppercase; }
.keepsake-hero__copy h1 { margin:0; color:#f0dfda; font:400 clamp(4.2rem,8.2vw,9.4rem)/.83 "Libre Baskerville",serif; letter-spacing:-.085em; }
.keepsake-hero__copy blockquote { max-width:30ch; margin:38px 0 0; color:rgba(238,225,220,.68); font:italic 400 clamp(.92rem,1.35vw,1.16rem)/1.8 "Libre Baskerville",serif; }
.keepsake-hero__copy a { display:inline-flex; gap:16px; margin-top:44px; padding-bottom:8px; border-bottom:1px solid rgba(214,165,169,.6); color:var(--blush); font:.55rem "DM Mono",monospace; letter-spacing:.11em; text-transform:uppercase; transition:gap .25s ease,color .25s ease; }
.keepsake-hero__copy a:hover { gap:23px; color:#fff2ed; }
.keepsake-intro { position:relative; display:grid; grid-template-columns:.3fr 1.05fr .65fr; gap:7vw; align-items:end; padding:clamp(100px,13vw,190px) 8vw; border-top:1px solid rgba(234,208,207,.12); border-bottom:1px solid rgba(234,208,207,.12); background:#1b1018; }
.keepsake-intro > p { align-self:start; margin:4px 0 0; color:var(--rose); font:.58rem "DM Mono",monospace; letter-spacing:.14em; }
.keepsake-intro h2 { margin:0; color:#edddd8; font:400 clamp(3rem,6vw,7rem)/.96 "Libre Baskerville",serif; letter-spacing:-.07em; }
.keepsake-intro h2 em { color:var(--rose); font-weight:400; }
.keepsake-intro > span { max-width:32ch; color:rgba(238,225,220,.58); line-height:1.75; }
.keepsake-memories { position:relative; display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:clamp(28px,6vw,92px) clamp(14px,2.4vw,42px); padding:clamp(86px,12vw,180px) 7vw; background:linear-gradient(180deg,#170f16,#1b1018 48%,#140c13); }
.keepsake-memories::before { content:""; position:absolute; top:0; bottom:0; left:50%; width:1px; background:linear-gradient(transparent,rgba(214,165,169,.2) 8%,rgba(214,165,169,.2) 92%,transparent); }
.keepsake-memory { position:relative; z-index:1; grid-column:span 6; align-self:center; margin:0; padding:clamp(7px,1vw,13px); background:#22151e; box-shadow:0 24px 64px rgba(0,0,0,.24); transform:rotate(var(--memory-tilt,-.35deg)); }
.keepsake-memory:nth-child(even) { --memory-tilt:.45deg; }
.keepsake-memory:nth-child(7n+1),.keepsake-memory:nth-child(11n) { grid-column:2 / span 10; --memory-tilt:0deg; }
.keepsake-memory:nth-child(9n+3) { grid-column:1 / span 5; }
.keepsake-memory:nth-child(9n+4) { grid-column:7 / span 6; }
.keepsake-memory img { display:block; width:100%; height:auto; object-fit:contain; background:#170f16; filter:saturate(.9) contrast(1.01); transition:filter .5s ease,transform .75s cubic-bezier(.22,1,.36,1); }
.keepsake-memory:hover img { filter:saturate(1.04); transform:scale(1.006); }
.keepsake-memory figcaption { position:absolute; right:12px; bottom:-22px; color:rgba(234,208,207,.35); font:.48rem "DM Mono",monospace; letter-spacing:.12em; }
.keepsake-ending { min-height:80svh; display:flex; align-items:center; justify-content:center; flex-direction:column; padding:15vw 7vw; border-top:1px solid rgba(234,208,207,.12); background:radial-gradient(circle,rgba(101,52,68,.24),transparent 43%),#160d15; text-align:center; }
.keepsake-ending > span { color:var(--rose); font:.55rem "DM Mono",monospace; letter-spacing:.2em; }
.keepsake-ending p { margin:34px 0 25px; color:#efded9; font:italic 400 clamp(2.1rem,4.5vw,5rem)/1.3 "Libre Baskerville",serif; letter-spacing:-.045em; }
.keepsake-ending small { color:rgba(238,225,220,.52); font:.62rem "DM Mono",monospace; letter-spacing:.1em; }

@media(max-width:720px) {
  .secret-entry { margin:0; }
  .secret-gate__close { top:18px; right:18px; }
  .secret-gate__card { padding:42px 28px; }
  .secret-gate__card > p { margin-bottom:40px; }
  .keepsake-hero { min-height:0; display:flex; padding:104px 6vw 15vw; flex-direction:column; gap:12vw; }
  .keepsake-hero::before { inset:78px 3vw 3vw; }
  .keepsake-hero__monogram { top:92px; right:8vw; }
  .keepsake-hero__image { order:1; min-height:0; width:100%; padding-top:38px; }
  .keepsake-hero__image img { max-height:none; }
  .keepsake-hero__copy { order:2; align-self:stretch; padding:0 3vw 5vw; }
  .keepsake-hero__copy h1 { font-size:clamp(4.2rem,20vw,6.6rem); }
  .keepsake-intro { display:block; padding:27vw 8vw; }
  .keepsake-intro h2 { margin:28px 0 34px; font-size:clamp(3rem,13vw,5rem); }
  .keepsake-memories { display:block; padding:24vw 6vw; }
  .keepsake-memories::before { left:50%; opacity:.45; }
  .keepsake-memory,.keepsake-memory:nth-child(n) { width:100%; margin:0 0 18vw; transform:none; }
  .keepsake-memory:nth-child(3n+2) { width:86%; margin-left:auto; }
  .keepsake-memory:nth-child(3n) { width:88%; margin-right:auto; }
  .keepsake-ending { min-height:72svh; }
}

@media(prefers-reduced-motion:reduce) {
  .secret-entry,.secret-entry::after,.secret-gate,.secret-gate__card,.keepsake-memory img { transition-duration:.01ms !important; }
}

/* The completed-dials entry is now a visible, persistent diamond. */
.secret-entry {
  width:30px;
  height:30px;
  margin:-7px -7px 0 -9px;
  color:#edb8c9;
  opacity:1;
  filter:drop-shadow(0 0 8px rgba(237,184,201,.28));
}
.secret-entry::after {
  inset:7px;
  border:1.5px solid currentColor;
  background:rgba(237,184,201,.13);
  box-shadow:inset 0 0 0 2px rgba(237,184,201,.06);
  opacity:1;
  transform:rotate(45deg) scale(1);
}
.secret-entry:hover,.secret-entry:focus-visible { color:#ffe0e9; transform:rotate(90deg) scale(1.08); }
.secret-entry:hover::after,.secret-entry:focus-visible::after { opacity:1; transform:rotate(45deg) scale(1); }

/* The hidden archive becomes a connected pastel-pink story in two chapters. */
.keepsake-open { background:#fff3f6; }
.keepsake-open .site-header {
  border-bottom-color:rgba(103,58,72,.13);
  background:rgba(255,247,249,.84);
  color:#5a3440;
  box-shadow:0 8px 32px rgba(130,76,94,.05);
}
.keepsake-open .wordmark span { color:#d97899; }
.keepsake-open nav { color:rgba(90,52,64,.62); }
.keepsake-open nav a:hover { color:#9d4868; }
.keepsake-page {
  --pink-paper:#fff3f6;
  --pink-soft:#f8dfe7;
  --pink-mid:#ecb8c8;
  --pink-deep:#d97899;
  --pink-ink:#583641;
  --pink-muted:#946d78;
  min-height:100vh;
  overflow:hidden;
  background:var(--pink-paper);
  color:var(--pink-ink);
}
.formal-chapter {
  position:relative;
  min-height:100svh;
  padding:108px 5vw 34px;
  overflow:hidden;
  background:
    radial-gradient(circle at 50% 45%,rgba(255,255,255,.94) 0 17%,rgba(249,218,228,.54) 42%,transparent 68%),
    radial-gradient(circle at 88% 16%,rgba(237,184,200,.48),transparent 29%),
    linear-gradient(135deg,#fff8fa,#f9e3ea 56%,#f5d7e2);
}
.formal-chapter::before,.formal-chapter::after {
  content:"";
  position:absolute;
  border:1px solid rgba(163,84,111,.11);
  border-radius:50%;
  pointer-events:none;
}
.formal-chapter::before { inset:16% 20%; transform:rotate(-12deg); }
.formal-chapter::after { inset:23% 12%; transform:rotate(18deg); }
.keepsake-topline {
  position:relative;
  z-index:6;
  display:flex;
  align-items:center;
  justify-content:space-between;
  color:rgba(88,54,65,.54);
  font:.55rem "DM Mono",monospace;
  letter-spacing:.13em;
  text-transform:uppercase;
}
.keepsake-topline a {
  padding-bottom:7px;
  border-bottom:1px solid rgba(217,120,153,.54);
  color:#a24d6b;
  transition:color .25s ease,gap .25s ease;
}
.keepsake-topline a:hover { color:#6f304a; }
.formal-heading {
  position:absolute;
  z-index:5;
  top:clamp(150px,17vh,210px);
  left:6vw;
  width:min(390px,32vw);
  pointer-events:none;
}
.formal-heading > p,.daily-heading > p,.daily-gate__copy > p {
  margin:0 0 20px;
  color:#c26082;
  font:.56rem "DM Mono",monospace;
  letter-spacing:.13em;
  line-height:1.55;
  text-transform:uppercase;
}
.formal-heading h1,.daily-heading h2,.daily-gate__copy h2 {
  margin:0;
  color:#573440;
  font:400 clamp(3.2rem,6vw,7rem)/.9 "Libre Baskerville",serif;
  letter-spacing:-.075em;
}
.formal-heading h1 em,.daily-heading h2 em { color:#d97899; font-weight:400; }
.formal-heading > span,.daily-heading > span,.daily-gate__copy > span {
  display:block;
  max-width:31ch;
  margin-top:29px;
  color:var(--pink-muted);
  line-height:1.7;
}
.heart-shell {
  position:relative;
  z-index:3;
  min-height:calc(100svh - 152px);
}
.heart-halo {
  position:absolute;
  inset:0;
  display:grid;
  place-items:center;
  color:rgba(214,122,153,.09);
  pointer-events:none;
}
.heart-halo::before {
  content:"♡";
  font:400 min(70vw,850px)/1 "Libre Baskerville",serif;
  transform:translateY(-1%);
  filter:drop-shadow(0 25px 60px rgba(195,97,131,.08));
}
.heart-stage {
  position:absolute;
  inset:1% 0 0 25%;
  perspective:1250px;
  perspective-origin:50% 46%;
  cursor:grab;
  touch-action:none;
  user-select:none;
}
.heart-stage.is-dragging { cursor:grabbing; }
.heart-stage.is-static-heart { cursor:default; }
.heart-object {
  position:absolute;
  top:50%;
  left:50%;
  width:1px;
  height:1px;
  transform-style:preserve-3d;
  will-change:transform;
}
.heart-photo {
  position:absolute;
  top:0;
  left:0;
  width:clamp(46px,5vw,76px);
  height:clamp(60px,6.6vw,100px);
  padding:4px;
  border:1px solid rgba(151,76,102,.22);
  background:#fffafb;
  box-shadow:0 10px 26px rgba(119,56,78,.16);
  cursor:pointer;
  opacity:0;
  transform:translate3d(var(--heart-x),var(--heart-y),var(--heart-z)) rotateZ(var(--heart-tilt));
  transform-origin:center;
  transform-style:preserve-3d;
  animation:heart-card-arrive .7s cubic-bezier(.22,1,.36,1) calc(var(--card-order) * 12ms + 180ms) forwards;
  transition:border-color .25s ease,box-shadow .3s ease,filter .3s ease;
  backface-visibility:visible;
}
.heart-photo img {
  display:block;
  width:100%;
  height:100%;
  object-fit:contain;
  background:#f8e6ec;
  pointer-events:none;
}
.heart-photo:hover,.heart-photo:focus-visible {
  z-index:8;
  border-color:#d97899;
  outline:0;
  box-shadow:0 15px 36px rgba(149,70,98,.3),0 0 0 3px rgba(255,255,255,.72);
  filter:saturate(1.08) brightness(1.03);
}
.heart-photo.is-viewed::after {
  content:"";
  position:absolute;
  right:-4px;
  bottom:-4px;
  width:8px;
  height:8px;
  border:2px solid #fff8fa;
  border-radius:50%;
  background:#d97899;
}
.heart-progress {
  position:absolute;
  z-index:6;
  right:1vw;
  bottom:7%;
  width:140px;
  padding:17px 0;
  border-top:1px solid rgba(156,78,105,.26);
  border-bottom:1px solid rgba(156,78,105,.14);
  text-align:right;
}
.heart-progress span {
  display:block;
  color:#a74668;
  font:400 1.6rem "Libre Baskerville",serif;
}
.heart-progress small {
  display:block;
  margin-top:6px;
  color:rgba(88,54,65,.52);
  font:.48rem/1.5 "DM Mono",monospace;
  letter-spacing:.1em;
  text-transform:uppercase;
}
.heart-instruction {
  position:absolute;
  z-index:5;
  left:6vw;
  bottom:38px;
  margin:0;
  color:rgba(88,54,65,.47);
  font:.51rem "DM Mono",monospace;
  letter-spacing:.11em;
  text-transform:uppercase;
}
@keyframes heart-card-arrive {
  from { opacity:0; }
  to { opacity:1; }
}

/* Selecting a heart card travels from the exact card into a full photograph. */
.memory-viewer-open { overflow:hidden; }
.memory-viewer {
  position:fixed;
  z-index:160;
  inset:0;
  background:rgba(255,238,243,0);
  backdrop-filter:blur(0);
  visibility:hidden;
  transition:background .55s ease,backdrop-filter .55s ease,visibility 0s linear .65s;
}
.memory-viewer.visible {
  background:rgba(255,239,244,.94);
  backdrop-filter:blur(18px);
  visibility:visible;
  transition-delay:0s;
}
.memory-viewer__image {
  position:fixed;
  display:block;
  object-fit:contain;
  border:8px solid #fffafb;
  background:#f7dce5;
  box-shadow:0 30px 90px rgba(111,50,72,.22);
  transition:left .82s cubic-bezier(.22,1,.36,1),top .82s cubic-bezier(.22,1,.36,1),width .82s cubic-bezier(.22,1,.36,1),height .82s cubic-bezier(.22,1,.36,1),opacity .35s ease;
}
.memory-viewer__meta {
  position:absolute;
  z-index:2;
  left:50%;
  bottom:clamp(20px,4vh,46px);
  text-align:center;
  opacity:0;
  transform:translate(-50%,14px);
  transition:opacity .4s ease .45s,transform .6s cubic-bezier(.22,1,.36,1) .45s;
}
.memory-viewer.visible .memory-viewer__meta { opacity:1; transform:translate(-50%,0); }
.memory-viewer__meta span {
  color:#bf5e80;
  font:.5rem "DM Mono",monospace;
  letter-spacing:.13em;
  text-transform:uppercase;
}
.memory-viewer__meta p {
  margin:8px 0 0;
  white-space:nowrap;
  color:#613b48;
  font:400 clamp(1.15rem,2.5vw,1.8rem) "Libre Baskerville",serif;
}
.memory-viewer__close {
  position:absolute;
  z-index:3;
  top:24px;
  right:27px;
  width:42px;
  height:42px;
  padding:0;
  border:1px solid rgba(111,57,75,.25);
  border-radius:50%;
  background:rgba(255,250,251,.7);
  color:#7d4057;
  cursor:pointer;
  font:300 1.35rem/39px "DM Sans",sans-serif;
  opacity:0;
  transition:opacity .35s ease .38s,transform .35s ease;
}
.memory-viewer.visible .memory-viewer__close { opacity:1; }
.memory-viewer__close:hover { transform:rotate(90deg); }
.memory-viewer.closing { background:rgba(255,239,244,0); backdrop-filter:blur(0); }
.memory-viewer.closing .memory-viewer__meta,.memory-viewer.closing .memory-viewer__close { opacity:0; transition-delay:0s; }

/* The second chapter grows out of the fifth opened formal photograph. */
.daily-chapter {
  min-height:100svh;
  background:#f7dce5;
  opacity:0;
  transform:translateY(65px);
  transition:opacity .8s ease,transform 1.05s cubic-bezier(.22,1,.36,1);
}
.daily-chapter[hidden] { display:none; }
.daily-chapter.is-visible { opacity:1; transform:translateY(0); }
.daily-chapter.daily-opening { opacity:.25; transform:scale(.985); }
.daily-gate {
  min-height:100svh;
  display:grid;
  grid-template-columns:1fr .8fr;
  gap:10vw;
  align-items:center;
  padding:125px 10vw 10vw;
  background:
    radial-gradient(circle at 78% 34%,rgba(255,255,255,.94),transparent 25%),
    linear-gradient(145deg,#fae6ec,#f5d3df);
}
.daily-gate__copy h2 { font-size:clamp(3rem,5.8vw,6.7rem); }
.anniversary-form {
  padding:clamp(28px,4.5vw,55px);
  border:1px solid rgba(145,70,96,.18);
  background:rgba(255,249,251,.64);
  box-shadow:0 28px 70px rgba(124,59,82,.09);
}
.anniversary-form label {
  display:block;
  margin-bottom:20px;
  color:#b45173;
  font:.55rem "DM Mono",monospace;
  letter-spacing:.13em;
  text-transform:uppercase;
}
.anniversary-form > div { display:flex; border-bottom:1px solid rgba(145,70,96,.34); }
.anniversary-form input {
  min-width:0;
  flex:1;
  padding:16px 0;
  border:0;
  outline:0;
  background:transparent;
  color:#603945;
  font:1rem "DM Mono",monospace;
  letter-spacing:.08em;
}
.anniversary-form input::placeholder { color:rgba(96,57,69,.33); }
.anniversary-form button {
  border:0;
  background:transparent;
  color:#b34e71;
  cursor:pointer;
  font:.55rem "DM Mono",monospace;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.anniversary-form small {
  display:block;
  min-height:18px;
  margin-top:15px;
  color:#b44767;
  font:.55rem "DM Mono",monospace;
}
.anniversary-form.rejected { animation:anniversary-reject .4s ease; }
@keyframes anniversary-reject { 25% { transform:translateX(-7px); } 50% { transform:translateX(6px); } 75% { transform:translateX(-3px); } }

.daily-experience {
  min-height:100svh;
  background:
    radial-gradient(circle at 48% 28%,rgba(255,255,255,.88),transparent 30%),
    linear-gradient(180deg,#f9e3ea,#fff3f6 50%,#f4d3df);
}
.daily-heading {
  display:grid;
  grid-template-columns:.45fr 1fr .62fr;
  gap:6vw;
  align-items:end;
  padding:clamp(120px,13vw,190px) 8vw 8vw;
  border-bottom:1px solid rgba(150,75,101,.13);
}
.daily-heading > p { align-self:start; }
.daily-heading h2 { font-size:clamp(3.4rem,7vw,8rem); }
.daily-heading > span { margin:0; }
.relationship-clock {
  position:relative;
  z-index:3;
  width:min(980px,84vw);
  margin:8vw auto 0;
  padding:clamp(26px,4vw,52px);
  border:1px solid rgba(150,75,101,.19);
  background:rgba(255,250,251,.72);
  box-shadow:0 25px 70px rgba(126,58,82,.08);
  text-align:center;
}
.relationship-clock > p {
  margin:0 0 28px;
  color:#b65375;
  font:.55rem "DM Mono",monospace;
  letter-spacing:.14em;
  text-transform:uppercase;
}
.relationship-clock > div { display:flex; align-items:flex-start; justify-content:center; gap:clamp(10px,3vw,42px); }
.relationship-clock span { min-width:clamp(54px,9vw,115px); }
.relationship-clock b {
  display:block;
  color:#5c3743;
  font:400 clamp(2rem,5.5vw,6rem)/1 "Libre Baskerville",serif;
  letter-spacing:-.055em;
}
.relationship-clock small {
  display:block;
  margin-top:11px;
  color:rgba(92,55,67,.48);
  font:.48rem "DM Mono",monospace;
  letter-spacing:.11em;
  text-transform:uppercase;
}
.relationship-clock i {
  color:#dc8ba6;
  font:400 clamp(1.5rem,4vw,4rem)/1 "Libre Baskerville",serif;
  font-style:normal;
}
.pig-memory-stage {
  position:relative;
  min-height:800px;
  display:grid;
  place-items:center;
  margin-top:5vw;
  overflow:hidden;
}
.pig-memory-stage::before {
  content:"";
  position:absolute;
  width:min(72vw,840px);
  aspect-ratio:1;
  border:1px solid rgba(181,92,123,.12);
  border-radius:50%;
  box-shadow:0 0 0 70px rgba(255,255,255,.18),0 0 0 140px rgba(215,123,154,.035);
}
.pig-memory-stage > p {
  position:absolute;
  z-index:5;
  left:50%;
  bottom:8%;
  margin:0;
  color:rgba(91,54,66,.51);
  font:.52rem "DM Mono",monospace;
  letter-spacing:.11em;
  text-transform:uppercase;
  transform:translateX(-50%);
  white-space:nowrap;
}
.daily-pop-layer { position:absolute; inset:0; pointer-events:none; }
.daily-photo-pop {
  position:absolute;
  z-index:2;
  top:50%;
  left:50%;
  width:clamp(92px,11vw,150px);
  padding:6px 6px 23px;
  border:1px solid rgba(145,70,96,.18);
  background:#fffafb;
  box-shadow:0 18px 50px rgba(120,51,76,.18);
  cursor:pointer;
  pointer-events:auto;
  opacity:0;
  transform:translate(-50%,-50%) scale(.08) rotate(0);
  transition:opacity .35s ease,transform .82s cubic-bezier(.17,1.65,.35,1),filter .4s ease;
}
.daily-photo-pop.is-visible {
  opacity:1;
  transform:translate(calc(-50% + var(--pop-x)),calc(-50% + var(--pop-y))) scale(1) rotate(var(--pop-rotate));
}
.daily-photo-pop.is-leaving { opacity:0; filter:blur(4px); transform:translate(-50%,-50%) scale(.2); }
.daily-photo-pop img {
  display:block;
  width:100%;
  height:clamp(88px,12vw,165px);
  object-fit:contain;
  background:#f8e2e9;
}
.daily-photo-pop span {
  position:absolute;
  right:8px;
  bottom:7px;
  color:rgba(90,52,64,.52);
  font:.42rem "DM Mono",monospace;
  letter-spacing:.06em;
}
.memory-pig {
  position:relative;
  z-index:4;
  width:230px;
  height:210px;
  padding:0;
  border:0;
  background:transparent;
  cursor:pointer;
  filter:drop-shadow(0 18px 25px rgba(129,64,87,.13));
  animation:pig-float 3.2s ease-in-out infinite;
}
.memory-pig:focus-visible { outline:2px solid #ce6d8e; outline-offset:12px; border-radius:45%; }
.pig-head {
  position:absolute;
  z-index:3;
  top:37px;
  left:30px;
  width:170px;
  height:145px;
  border:5px solid #613e47;
  border-radius:48% 48% 44% 44%;
  background:#f7cbd8;
  box-shadow:inset 0 -14px 0 rgba(238,164,186,.13);
}
.pig-ear {
  position:absolute;
  z-index:2;
  top:24px;
  width:54px;
  height:58px;
  border:5px solid #613e47;
  background:#f7cbd8;
  transform:rotate(40deg);
}
.pig-ear--left { left:32px; border-radius:75% 18% 70% 25%; }
.pig-ear--right { right:32px; border-radius:18% 75% 25% 70%; transform:rotate(-40deg); }
.pig-eye {
  position:absolute;
  top:47px;
  width:10px;
  height:13px;
  border-radius:50%;
  background:#56343f;
}
.pig-eye--left { left:47px; }
.pig-eye--right { right:47px; }
.pig-cheek {
  position:absolute;
  top:74px;
  width:27px;
  height:17px;
  border-radius:50%;
  background:#f09bad;
  filter:blur(.2px);
}
.pig-cheek--left { left:18px; }
.pig-cheek--right { right:18px; }
.pig-snout {
  position:absolute;
  top:68px;
  left:50%;
  width:54px;
  height:39px;
  border:4px solid #613e47;
  border-radius:48%;
  background:#ec91aa;
  transform:translateX(-50%);
}
.pig-snout b {
  position:absolute;
  top:13px;
  width:6px;
  height:9px;
  border-radius:50%;
  background:#613e47;
}
.pig-snout b:first-child { left:13px; }
.pig-snout b:last-child { right:13px; }
.pig-mouth {
  position:absolute;
  left:50%;
  bottom:20px;
  width:23px;
  height:11px;
  border-bottom:3px solid #613e47;
  border-radius:50%;
  transform:translateX(-50%);
}
.pig-arm {
  position:absolute;
  z-index:1;
  top:107px;
  width:73px;
  height:12px;
  border-top:5px solid #613e47;
}
.pig-arm--left { left:-4px; transform:rotate(-28deg); }
.pig-arm--right { right:-4px; transform:rotate(28deg); }
.pig-spark {
  position:absolute;
  z-index:5;
  top:45px;
  color:#f2b24d;
  font:2.1rem/1 "DM Sans",sans-serif;
  animation:spark-twinkle 1.8s ease-in-out infinite;
}
.pig-spark--left { left:-4px; }
.pig-spark--right { right:-4px; animation-delay:.35s; }
.memory-pig.is-celebrating { animation:pig-celebrate .72s cubic-bezier(.2,1.4,.4,1),pig-float 3.2s ease-in-out .72s infinite; }
@keyframes pig-float { 50% { transform:translateY(-9px) rotate(-1deg); } }
@keyframes pig-celebrate { 35% { transform:translateY(-26px) scale(1.08) rotate(5deg); } 70% { transform:translateY(3px) scale(.98) rotate(-4deg); } }
@keyframes spark-twinkle { 50% { opacity:.45; transform:scale(.72) rotate(18deg); } }
.daily-experience .keepsake-ending {
  min-height:78svh;
  border-top:1px solid rgba(145,70,96,.13);
  background:radial-gradient(circle,rgba(255,255,255,.78),transparent 42%),#f4d3df;
}
.daily-experience .keepsake-ending > span { color:#bd587a; }
.daily-experience .keepsake-ending p { color:#603945; }
.daily-experience .keepsake-ending small { color:rgba(96,57,69,.55); }

@media(max-width:820px) {
  .keepsake-open nav { background:#fff5f8; }
  .formal-chapter { padding:90px 4vw 26px; }
  .keepsake-topline { padding:0 3vw; }
  .formal-heading { position:relative; top:auto; left:auto; width:auto; padding:48px 4vw 0; }
  .formal-heading h1 { font-size:clamp(3.4rem,15vw,5.4rem); }
  .formal-heading > span { margin-top:20px; }
  .heart-shell { min-height:73svh; }
  .heart-stage { inset:0; }
  .heart-halo::before { font-size:105vw; }
  .heart-photo { width:clamp(35px,9vw,48px); height:clamp(47px,12vw,64px); padding:2px; }
  .heart-progress { right:4vw; bottom:3%; width:112px; }
  .heart-instruction { left:8vw; bottom:18px; max-width:42vw; line-height:1.6; }
  .daily-gate { display:block; padding:130px 8vw 20vw; }
  .daily-gate__copy { margin-bottom:14vw; }
  .daily-gate__copy h2 { font-size:clamp(3.2rem,13vw,5.1rem); }
  .daily-heading { display:block; padding:130px 8vw 18vw; }
  .daily-heading h2 { margin:20px 0 30px; font-size:clamp(3.7rem,16vw,6rem); }
  .relationship-clock { width:90vw; padding:25px 15px; }
  .relationship-clock > div { gap:7px; }
  .relationship-clock span { min-width:50px; }
  .relationship-clock b { font-size:clamp(1.8rem,9.5vw,3rem); }
  .relationship-clock i { font-size:1.7rem; }
  .pig-memory-stage { min-height:650px; }
  .pig-memory-stage::before { width:88vw; }
  .memory-pig { width:230px; height:210px; }
  .pig-memory-stage > p { bottom:5%; width:80vw; white-space:normal; text-align:center; line-height:1.6; }
  .daily-photo-pop { width:82px; padding:4px 4px 18px; }
  .daily-photo-pop img { height:92px; }
  .daily-photo-pop span { font-size:.35rem; }
  .memory-viewer__image { border-width:5px; }
  .memory-viewer__meta { bottom:28px; }
  .memory-viewer__close { top:16px; right:17px; }
}

@media(prefers-reduced-motion:reduce) {
  .heart-photo { animation-duration:.01ms !important; animation-delay:0s !important; }
  .memory-viewer,.memory-viewer__image,.memory-viewer__meta,.daily-chapter,.daily-photo-pop,.memory-pig { transition-duration:.01ms !important; animation-duration:.01ms !important; }
}

/* Final private-archive palette: the main site's darkness, with pink as its companion. */
.secret-entry {
  width:20px;
  height:20px;
  margin:-4px -2px 0 -10px;
  color:var(--gold);
  opacity:.72;
  filter:drop-shadow(0 0 5px rgba(198,154,95,.2));
}
.secret-entry::after {
  inset:6px;
  border-width:1px;
  background:rgba(198,154,95,.08);
  box-shadow:none;
  transform:rotate(45deg) scale(.78);
}
.secret-entry:hover,.secret-entry:focus-visible { color:#e6c28d; opacity:1; transform:rotate(90deg); }
.secret-entry:hover::after,.secret-entry:focus-visible::after { transform:rotate(45deg) scale(.9); }
.keepsake-open { background:#091016; }
.keepsake-open .site-header {
  border-bottom-color:rgba(233,225,212,.11);
  background:rgba(11,17,23,.9);
  color:var(--paper);
  box-shadow:none;
}
.keepsake-open .wordmark span { color:#efb8ca; }
.keepsake-open nav { color:var(--muted); }
.keepsake-open nav a:hover { color:var(--paper); }
.keepsake-page {
  --pink-paper:#0a1117;
  --pink-soft:#191821;
  --pink-mid:#d69db0;
  --pink-deep:#efb8ca;
  --pink-ink:#eee5dd;
  --pink-muted:#aaa0a0;
  background:#091016;
  color:var(--paper);
}
.formal-chapter {
  padding-top:108px;
  background:
    radial-gradient(circle at 58% 45%,rgba(63,43,55,.48) 0 12%,rgba(27,25,34,.45) 38%,transparent 65%),
    radial-gradient(circle at 90% 12%,rgba(177,93,123,.15),transparent 27%),
    linear-gradient(135deg,#081016,#11151c 56%,#0a0f15);
}
.formal-chapter::before,.formal-chapter::after { border-color:rgba(239,184,202,.07); }
.keepsake-topline { color:rgba(233,225,212,.45); }
.keepsake-topline a { border-bottom-color:rgba(239,184,202,.44); color:#efb8ca; }
.keepsake-topline a:hover { color:#f8dbe4; }
.formal-heading {
  top:clamp(165px,19vh,230px);
  left:5vw;
  width:min(250px,21vw);
}
.formal-heading > p,.daily-heading > p,.daily-gate__copy > p { color:#e2a6ba; }
.formal-heading h1,.daily-heading h2,.daily-gate__copy h2 { color:#eee5dd; }
.formal-heading h1 { font-size:clamp(2.5rem,4vw,4.7rem); line-height:.93; }
.formal-heading h1 em,.daily-heading h2 em { color:#efb8ca; }
.formal-heading > span,.daily-heading > span,.daily-gate__copy > span { color:#a79f9d; }
.formal-heading > span { max-width:21ch; margin-top:20px; font-size:.84rem; }
.heart-shell { min-height:calc(100svh - 136px); }
.heart-halo { color:rgba(239,184,202,.045); }
.heart-halo::before { font-size:min(82vw,1040px); filter:drop-shadow(0 25px 70px rgba(229,145,175,.05)); }
.heart-stage { inset:-7% -8% -8% 5%; }
.heart-photo {
  width:clamp(48px,5.3vw,84px);
  height:clamp(62px,7vw,110px);
  border-color:rgba(239,184,202,.26);
  background:#15171e;
  box-shadow:0 12px 30px rgba(0,0,0,.38);
}
.heart-photo img { background:#0c1218; }
.heart-photo:hover,.heart-photo:focus-visible {
  border-color:#efb8ca;
  box-shadow:0 18px 42px rgba(0,0,0,.54),0 0 0 2px rgba(239,184,202,.36);
}
.heart-photo.is-viewed::after { border-color:#0b1117; background:#efb8ca; }
.heart-progress { display:none; }
.heart-instruction { left:5vw; color:rgba(233,225,212,.38); }
.memory-viewer.visible {
  background:rgba(7,12,17,.94);
  backdrop-filter:blur(18px);
}
.memory-viewer__image {
  border-color:#17171d;
  background:#090f14;
  box-shadow:0 32px 100px rgba(0,0,0,.62);
}
.memory-viewer__meta span { color:#efb8ca; }
.memory-viewer__meta p { color:#eee5dd; }
.memory-viewer__close {
  border-color:rgba(239,184,202,.25);
  background:rgba(12,17,23,.72);
  color:#efb8ca;
}
.memory-viewer.closing { background:rgba(7,12,17,0); }
.daily-chapter { background:#0b1117; }
.daily-gate {
  background:
    radial-gradient(circle at 78% 34%,rgba(82,49,64,.28),transparent 25%),
    linear-gradient(145deg,#0b1218,#16141c);
}
.anniversary-form {
  border-color:rgba(239,184,202,.18);
  background:rgba(18,21,28,.8);
  box-shadow:0 28px 80px rgba(0,0,0,.28);
}
.anniversary-form label,.anniversary-form button { color:#efb8ca; }
.anniversary-form > div { border-bottom-color:rgba(239,184,202,.34); }
.anniversary-form input { color:#eee5dd; }
.anniversary-form input::placeholder { color:rgba(233,225,212,.25); }
.anniversary-form small { color:#df8faa; }
.daily-experience {
  background:
    radial-gradient(circle at 48% 28%,rgba(80,48,63,.25),transparent 30%),
    linear-gradient(180deg,#10141b,#091016 50%,#15131b);
}
.daily-heading { border-bottom-color:rgba(239,184,202,.11); }
.relationship-clock {
  border-color:rgba(239,184,202,.18);
  background:rgba(18,21,28,.76);
  box-shadow:0 25px 75px rgba(0,0,0,.28);
}
.relationship-clock > p { color:#efb8ca; }
.relationship-clock b { color:#eee5dd; }
.relationship-clock small { color:rgba(233,225,212,.42); }
.relationship-clock i { color:#dc91aa; }
.pig-memory-stage::before {
  border-color:rgba(239,184,202,.11);
  box-shadow:0 0 0 70px rgba(239,184,202,.025),0 0 0 140px rgba(239,184,202,.014);
}
.pig-memory-stage > p { color:rgba(233,225,212,.43); }
.daily-photo-pop {
  border-color:rgba(239,184,202,.24);
  background:#17171d;
  box-shadow:0 20px 55px rgba(0,0,0,.48);
}
.daily-photo-pop img { background:#0c1218; }
.daily-photo-pop span { color:rgba(239,184,202,.7); }
.daily-experience .keepsake-ending {
  border-top-color:rgba(239,184,202,.11);
  background:radial-gradient(circle,rgba(82,48,64,.22),transparent 42%),#0b1117;
}
.daily-experience .keepsake-ending > span { color:#efb8ca; }
.daily-experience .keepsake-ending p { color:#eee5dd; }
.daily-experience .keepsake-ending small { color:rgba(233,225,212,.48); }

@media(max-width:820px) {
  .keepsake-open nav { background:#0b1117; }
  .formal-heading { width:auto; }
  .formal-heading h1 { font-size:clamp(2.9rem,12vw,4.4rem); }
  .formal-heading > span { max-width:24ch; }
  .heart-shell { min-height:78svh; }
  .heart-stage { inset:-5% -10% -7%; }
  .heart-halo::before { font-size:116vw; }
  .heart-photo { width:clamp(37px,9.6vw,51px); height:clamp(49px,12.6vw,68px); }
}

/* The formal collection begins as a movable universe and gathers into a heart. */
.formal-chapter {
  min-height:100svh;
  overflow:hidden;
  background:
    radial-gradient(ellipse at 70% 48%,rgba(78,42,70,.34),transparent 35%),
    radial-gradient(ellipse at 34% 75%,rgba(95,45,54,.16),transparent 28%),
    linear-gradient(135deg,#04080d 0%,#0a0d15 48%,#100b13 100%);
}
.formal-chapter::before {
  width:55vw;
  height:55vw;
  border-color:rgba(231,172,157,.035);
  transform:translate(16%,-35%);
}
.formal-chapter::after {
  width:34vw;
  height:34vw;
  border-color:rgba(231,172,157,.028);
  transform:translate(-34%,45%);
}
.formal-heading {
  top:clamp(160px,18vh,215px);
  width:min(225px,18vw);
}
.formal-heading h1 {
  font-size:clamp(2.35rem,3.45vw,4rem);
  letter-spacing:-.065em;
}
.formal-heading > span {
  max-width:19ch;
  font-size:.75rem;
}
.heart-shell {
  isolation:isolate;
  min-height:calc(100svh - 108px);
}
.galaxy-canvas {
  position:absolute;
  z-index:0;
  inset:-6%;
  width:112%;
  height:112%;
  opacity:.96;
  pointer-events:none;
  mix-blend-mode:screen;
  filter:saturate(1.08) contrast(1.04);
}
.heart-halo {
  z-index:1;
  background:
    radial-gradient(ellipse at 62% 49%,rgba(218,145,156,.07),transparent 23%),
    radial-gradient(ellipse at 62% 49%,transparent 0 28%,rgba(211,150,132,.035) 31%,transparent 43%);
}
.heart-halo::before {
  content:"";
  width:min(72vw,980px);
  aspect-ratio:1;
  border:1px solid rgba(239,184,202,.025);
  border-radius:50%;
  background:
    repeating-radial-gradient(circle,transparent 0 9.7%,rgba(235,185,170,.022) 10%,transparent 10.35%),
    conic-gradient(from 70deg,transparent,rgba(196,116,147,.04),transparent 24%,rgba(210,151,121,.035),transparent 49%);
  filter:blur(.2px) drop-shadow(0 0 90px rgba(194,102,138,.08));
  transform:translate(7%,-1%) rotate(-8deg) scaleY(.48);
}
.heart-stage {
  z-index:3;
  inset:-8% -11% -9% 13%;
  perspective:980px;
  perspective-origin:53% 48%;
  transform-style:preserve-3d;
}
.heart-object {
  transform-style:preserve-3d;
  transition:none;
}
.heart-object.heart-complete {
  filter:none;
}
.heart-photo {
  width:clamp(46px,4.8vw,76px);
  height:clamp(62px,6.35vw,101px);
  box-sizing:border-box;
  padding:0;
  border:1px solid transparent;
  border-radius:1px;
  background:transparent;
  box-shadow:none;
  opacity:0;
  transform:translate3d(var(--universe-x),var(--universe-y),var(--universe-z));
  transform-style:preserve-3d;
  transform-origin:center;
  transition:
    transform 2.8s cubic-bezier(.16,1,.3,1),
    border-color .32s ease,
    box-shadow .45s ease,
    filter .45s ease;
  backface-visibility:visible;
  will-change:transform;
}
.heart-photo::before {
  display:none;
}
.heart-photo__plane {
  position:absolute;
  inset:0;
  display:block;
  transform:
    rotateX(var(--plane-rotate-x))
    rotateY(var(--plane-rotate-y))
    rotateZ(var(--plane-rotate-z));
  transform-style:preserve-3d;
  transform-origin:center;
  backface-visibility:visible;
  will-change:transform;
  pointer-events:auto;
  transition:transform .14s linear;
}
.heart-photo img {
  position:absolute;
  z-index:1;
  inset:0;
  border:0;
  background:#080b10;
  box-shadow:0 10px 26px rgba(0,0,0,.42);
  transform:none;
  transform-origin:center;
  transform-style:preserve-3d;
  backface-visibility:hidden;
  will-change:transform;
  pointer-events:none;
}
.heart-photo img.heart-photo__back {
  position:absolute;
  z-index:0;
  inset:0;
  border:0;
  background:#080b10;
  box-shadow:0 10px 26px rgba(0,0,0,.42);
  transform:rotateY(180deg);
  backface-visibility:hidden;
  pointer-events:none;
}
.heart-photo.is-viewed {
  padding:0;
  border-color:transparent;
  background:transparent;
  box-shadow:none;
}
.heart-photo.is-viewed img {
  outline:1px solid rgba(213,173,115,.9);
  outline-offset:2px;
  box-shadow:0 11px 30px rgba(0,0,0,.48),0 0 12px rgba(213,173,115,.12);
}
.heart-photo.is-viewed .heart-photo__back {
  border-color:rgba(213,173,115,.72);
  box-shadow:0 11px 30px rgba(0,0,0,.48),0 0 12px rgba(213,173,115,.12);
}
.heart-photo.is-in-heart {
  transform:translate3d(var(--heart-x),var(--heart-y),var(--heart-z));
  transition-duration:2.8s,.32s,.45s,.45s;
  transition-delay:calc(var(--card-order) * 9ms);
}
.heart-photo.is-in-heart .heart-photo__plane {
  transition:transform 2.35s cubic-bezier(.16,1,.3,1);
}
.heart-photo:hover,.heart-photo:focus-visible {
  border-color:transparent;
  box-shadow:none;
}
.heart-photo:hover img,.heart-photo:focus-visible img {
  outline:1px solid #e8c184;
  outline-offset:2px;
  box-shadow:0 20px 48px rgba(0,0,0,.68),0 0 24px rgba(213,173,115,.16);
}
.heart-photo:hover .heart-photo__back,.heart-photo:focus-visible .heart-photo__back {
  border-color:#e8c184;
  box-shadow:0 20px 48px rgba(0,0,0,.68),0 0 24px rgba(213,173,115,.16);
}
.heart-photo.is-viewed::after {
  content:none;
}
.heart-photo.is-gathering {
  z-index:10;
  border-color:transparent;
  box-shadow:none;
}
.heart-photo.is-gathering img {
  outline:1px solid #e8c184;
  outline-offset:2px;
  box-shadow:0 0 22px rgba(230,188,126,.54),0 0 54px rgba(221,145,169,.26);
}
.heart-photo.is-gathering .heart-photo__back {
  border-color:#e8c184;
  box-shadow:0 0 22px rgba(230,188,126,.54),0 0 54px rgba(221,145,169,.26);
}
.galaxy-shuffle {
  position:absolute;
  z-index:7;
  right:4vw;
  bottom:32px;
  padding:10px 0;
  border:0;
  border-bottom:1px solid rgba(230,177,157,.48);
  background:transparent;
  color:#deb19e;
  font:.49rem/1.3 "DM Mono",monospace;
  letter-spacing:.13em;
  text-transform:uppercase;
  cursor:pointer;
  opacity:0;
  visibility:hidden;
  transform:translateY(12px);
  transition:opacity .8s ease,transform .8s cubic-bezier(.22,1,.36,1),color .25s ease,visibility 0s linear .8s;
}
.galaxy-shuffle.is-visible {
  opacity:.76;
  visibility:visible;
  transform:translateY(0);
  transition-delay:.3s, .3s, 0s, 0s;
}
.galaxy-shuffle:hover,.galaxy-shuffle:focus-visible {
  color:#ffe0cb;
  opacity:1;
  outline:0;
}
.heart-instruction {
  z-index:7;
  bottom:34px;
  color:rgba(235,215,207,.42);
}

@media(max-width:820px) {
  .formal-heading {
    top:auto;
    width:auto;
  }
  .formal-heading h1 { font-size:clamp(2.75rem,11.5vw,4.15rem); }
  .heart-shell { min-height:80svh; }
  .heart-stage { inset:-1% -22% -6%; }
  .heart-halo::before { width:120vw; transform:translate(0,-2%) rotate(-8deg) scaleY(.52); }
  .heart-photo {
    width:clamp(35px,9vw,48px);
    height:clamp(47px,11.9vw,64px);
    padding:0;
  }
  .heart-photo.is-viewed { padding:1px; }
  .galaxy-shuffle { right:6vw; bottom:24px; }
  .heart-instruction { left:6vw; bottom:24px; max-width:46vw; }
}

@media(prefers-reduced-motion:reduce) {
  .heart-photo { transition-duration:.01ms !important; }
  .galaxy-shuffle { transition-duration:.01ms !important; }
}

/* The memory viewer is a continuous sequence with restrained gold controls. */
.memory-viewer__image {
  border:1px solid rgba(213,173,115,.92);
  background:#070b10;
  box-shadow:0 30px 100px rgba(0,0,0,.68),0 0 0 1px rgba(213,173,115,.12);
  transition:
    left .82s cubic-bezier(.22,1,.36,1),
    top .82s cubic-bezier(.22,1,.36,1),
    width .82s cubic-bezier(.22,1,.36,1),
    height .82s cubic-bezier(.22,1,.36,1),
    opacity .32s ease,
    transform .42s cubic-bezier(.22,1,.36,1);
}
.memory-viewer__image.is-switching-out.to-left {
  opacity:0;
  transform:translateX(-34px) scale(.985);
}
.memory-viewer__image.is-switching-out.to-right {
  opacity:0;
  transform:translateX(34px) scale(.985);
}
.memory-viewer__image.from-right {
  opacity:0;
  transform:translateX(34px) scale(.985);
  transition:none;
}
.memory-viewer__image.from-left {
  opacity:0;
  transform:translateX(-34px) scale(.985);
  transition:none;
}
.memory-viewer__nav {
  position:fixed;
  z-index:4;
  top:50%;
  display:grid;
  width:48px;
  height:48px;
  padding:0;
  place-items:center;
  border:1px solid rgba(213,173,115,.34);
  border-radius:50%;
  background:rgba(8,13,18,.66);
  color:#d5ad73;
  cursor:pointer;
  font:300 1.05rem/1 "DM Sans",sans-serif;
  opacity:0;
  transform:translateY(-50%) scale(.88);
  backdrop-filter:blur(10px);
  transition:opacity .35s ease .42s,transform .5s cubic-bezier(.22,1,.36,1) .42s,border-color .25s ease,background .25s ease;
}
.memory-viewer__nav--previous { left:clamp(18px,4vw,68px); }
.memory-viewer__nav--next { right:clamp(18px,4vw,68px); }
.memory-viewer.visible .memory-viewer__nav {
  opacity:.88;
  transform:translateY(-50%) scale(1);
}
.memory-viewer__nav:hover,.memory-viewer__nav:focus-visible {
  border-color:rgba(232,193,132,.9);
  background:rgba(20,21,24,.9);
  color:#f0cf98;
  outline:0;
}
.memory-viewer__meta b { font-weight:400; color:#d5ad73; }
.memory-viewer.closing .memory-viewer__nav {
  opacity:0;
  transform:translateY(-50%) scale(.88);
  transition-delay:0s;
}

@media(max-width:720px) {
  .memory-viewer__nav {
    top:auto;
    bottom:25px;
    width:43px;
    height:43px;
    transform:scale(.88);
  }
  .memory-viewer__nav--previous { left:24px; }
  .memory-viewer__nav--next { right:24px; }
  .memory-viewer.visible .memory-viewer__nav { transform:scale(1); }
  .memory-viewer.closing .memory-viewer__nav { transform:scale(.88); }
  .memory-viewer__meta { bottom:31px; max-width:52vw; }
}

/* A slower, jewel-like universe: deep photographs, white star diamonds and rose-gold outlines. */
.galaxy-canvas {
  opacity:1;
  filter:saturate(1.18) contrast(1.08) brightness(1.06);
}
.heart-stage.is-morphing {
  cursor:progress;
}
.heart-stage.is-morphing::after {
  content:"";
  position:absolute;
  inset:18% 16%;
  border:1px solid rgba(239,184,202,.08);
  border-radius:50%;
  opacity:0;
  pointer-events:none;
  animation:galaxy-morph-aura 6.4s cubic-bezier(.2,.7,.12,1);
  box-shadow:
    0 0 80px rgba(239,184,202,.08),
    inset 0 0 80px rgba(231,192,126,.04);
}
.heart-photo {
  transform:translate3d(var(--universe-x),var(--universe-y),var(--universe-z)) scale(var(--universe-scale,1));
  transition:
    transform 5.65s cubic-bezier(.2,.72,.1,1),
    border-color .42s ease,
    box-shadow .58s ease,
    filter .58s ease;
}
.heart-photo.is-in-heart {
  transform:translate3d(var(--heart-x),var(--heart-y),var(--heart-z)) scale(1);
  transition-duration:5.65s,.42s,.58s,.58s;
  transition-delay:calc(var(--card-order) * 14ms);
}
.heart-photo.is-in-heart .heart-photo__plane {
  transition:transform 5.1s cubic-bezier(.2,.72,.1,1);
}
.heart-stage.is-morphing .heart-photo img {
  box-shadow:
    0 14px 34px rgba(0,0,0,.5),
    0 0 18px rgba(239,184,202,.09);
}
.galaxy-shuffle:disabled {
  cursor:wait;
  color:rgba(222,177,158,.48);
}
@keyframes galaxy-morph-aura {
  0% { opacity:0; transform:scale(.62) rotate(-8deg); }
  38% { opacity:.7; }
  72% { opacity:.34; transform:scale(1.08) rotate(5deg); }
  100% { opacity:0; transform:scale(1.2) rotate(8deg); }
}

/* The daily pig is a small rose-gold memory guardian inside its own constellation portal. */
.pig-memory-stage {
  isolation:isolate;
  background:
    radial-gradient(circle at 50% 50%,rgba(239,184,202,.085),transparent 18%),
    radial-gradient(circle at 50% 52%,rgba(231,187,116,.035),transparent 39%);
}
.pig-memory-stage::before {
  width:min(68vw,760px);
  border-color:rgba(239,184,202,.14);
  box-shadow:
    0 0 0 62px rgba(239,184,202,.022),
    0 0 0 126px rgba(231,190,123,.013),
    0 0 95px rgba(218,133,165,.09),
    inset 0 0 75px rgba(239,184,202,.04);
}
.pig-memory-stage::after {
  content:"";
  position:absolute;
  z-index:0;
  width:min(58vw,650px);
  aspect-ratio:1;
  border-radius:50%;
  background:
    conic-gradient(
      from 12deg,
      transparent 0 7%,
      rgba(239,184,202,.2) 7.4%,
      transparent 8% 24%,
      rgba(234,194,126,.18) 24.5%,
      transparent 25% 46%,
      rgba(239,184,202,.16) 46.5%,
      transparent 47% 72%,
      rgba(234,194,126,.17) 72.5%,
      transparent 73%
    );
  -webkit-mask:radial-gradient(transparent 0 58%,#000 58.5% 59.2%,transparent 59.7% 70%,#000 70.5% 71%,transparent 71.5%);
  mask:radial-gradient(transparent 0 58%,#000 58.5% 59.2%,transparent 59.7% 70%,#000 70.5% 71%,transparent 71.5%);
  opacity:.7;
  pointer-events:none;
  animation:pig-portal-turn 24s linear infinite;
}
.pig-cosmos {
  position:absolute;
  z-index:1;
  top:50%;
  left:50%;
  width:min(62vw,700px);
  aspect-ratio:1;
  pointer-events:none;
  transform:translate(-50%,-50%);
}
.pig-orbit {
  position:absolute;
  top:50%;
  left:50%;
  border:1px solid rgba(239,184,202,.14);
  border-radius:50%;
  transform-style:preserve-3d;
}
.pig-orbit::before,.pig-orbit::after {
  content:"";
  position:absolute;
  top:50%;
  width:7px;
  height:7px;
  border:1px solid currentColor;
  background:#0b1117;
  color:#ebc580;
  box-shadow:0 0 12px currentColor;
  transform:translateY(-50%) rotate(45deg);
}
.pig-orbit::before { left:-4px; }
.pig-orbit::after { right:-4px; color:#efb8ca; }
.pig-orbit--one {
  width:88%;
  height:42%;
  transform:translate(-50%,-50%) rotate(-12deg);
  animation:pig-orbit-one 18s linear infinite;
}
.pig-orbit--two {
  width:66%;
  height:66%;
  transform:translate(-50%,-50%) rotate(44deg);
  animation:pig-orbit-two 23s linear infinite reverse;
}
.pig-orbit--three {
  width:48%;
  height:92%;
  transform:translate(-50%,-50%) rotate(72deg);
  animation:pig-orbit-three 27s linear infinite;
}
.pig-cosmos__star {
  position:absolute;
  color:#fffaf2;
  font-style:normal;
  filter:drop-shadow(0 0 8px rgba(255,250,242,.75));
  animation:pig-cosmos-twinkle 2.8s ease-in-out infinite;
}
.pig-cosmos__star--one { top:17%; left:20%; font-size:1.1rem; }
.pig-cosmos__star--two { top:29%; right:13%; font-size:.7rem; animation-delay:.8s; }
.pig-cosmos__star--three { right:25%; bottom:12%; font-size:1.35rem; animation-delay:1.5s; }
.memory-pig {
  width:246px;
  height:226px;
  filter:
    drop-shadow(0 20px 28px rgba(0,0,0,.32))
    drop-shadow(0 0 22px rgba(239,184,202,.12));
}
.pig-heart-pulse {
  position:absolute;
  z-index:0;
  top:50%;
  left:50%;
  width:178px;
  height:178px;
  border:1px solid rgba(239,184,202,.18);
  border-radius:50%;
  pointer-events:none;
  transform:translate(-50%,-46%);
  box-shadow:0 0 38px rgba(239,184,202,.09),inset 0 0 28px rgba(239,184,202,.04);
  animation:pig-heart-breathe 3.4s ease-in-out infinite;
}
.pig-crown {
  position:absolute;
  z-index:8;
  top:-5px;
  left:50%;
  color:#ebc580;
  font:400 2.15rem/1 "Libre Baskerville",serif;
  text-shadow:0 0 14px rgba(235,197,128,.4);
  transform:translateX(-50%) rotate(-4deg);
  transform-origin:50% 100%;
  animation:pig-crown-float 3.2s ease-in-out infinite;
}
.pig-pendant {
  position:absolute;
  left:50%;
  bottom:7px;
  padding:3px 6px;
  border:1px solid rgba(231,190,123,.62);
  border-radius:50%;
  background:#12141a;
  color:#ebc580;
  font:400 .37rem/1 "DM Mono",monospace;
  font-style:normal;
  letter-spacing:.06em;
  transform:translateX(-50%);
  box-shadow:0 0 9px rgba(235,197,128,.16);
}
.pig-head {
  background:
    radial-gradient(circle at 34% 26%,rgba(255,255,255,.34),transparent 12%),
    linear-gradient(145deg,#f9d7e1,#eeb5c7);
  border-color:#553945;
  box-shadow:
    inset 0 -16px 0 rgba(205,109,142,.09),
    inset 0 0 24px rgba(255,255,255,.14),
    0 0 0 1px rgba(235,197,128,.12);
}
.pig-snout {
  background:linear-gradient(145deg,#f3a7bc,#dc7f9c);
  box-shadow:inset 0 3px 7px rgba(255,255,255,.2);
}
.pig-eye {
  transform-origin:center;
  animation:pig-blink 5.2s ease-in-out infinite;
}
.pig-arm::after {
  content:"";
  position:absolute;
  top:-7px;
  width:10px;
  height:10px;
  border:1px solid #ebc580;
  border-radius:50%;
  box-shadow:0 0 7px rgba(235,197,128,.32);
}
.pig-arm--left::after { left:22px; }
.pig-arm--right::after { right:22px; }
.pig-memory-stage.is-releasing::after {
  animation:pig-portal-release 1.5s cubic-bezier(.18,.78,.2,1);
}
.pig-memory-stage.is-releasing .pig-cosmos {
  animation:pig-cosmos-release 1.45s cubic-bezier(.18,.78,.2,1);
}
.pig-memory-stage.is-releasing .pig-heart-pulse {
  animation:pig-heart-release 1.35s cubic-bezier(.16,.86,.2,1);
}
.memory-pig.is-celebrating {
  animation:pig-jewel-celebrate 1.35s cubic-bezier(.18,1.35,.28,1),pig-float 3.2s ease-in-out 1.35s infinite;
}
.memory-pig.is-celebrating .pig-crown {
  animation:pig-crown-celebrate 1.25s cubic-bezier(.18,1.35,.28,1);
}
.pig-burst-particle {
  position:absolute;
  z-index:6;
  top:50%;
  left:50%;
  width:var(--burst-size);
  height:var(--burst-size);
  border:1px solid var(--burst-color);
  background:transparent;
  color:var(--burst-color);
  opacity:0;
  pointer-events:none;
  transform:translate(-50%,-50%) rotate(45deg) scale(.2);
  filter:drop-shadow(0 0 5px var(--burst-color));
}
.pig-burst-particle.is-star::before,.pig-burst-particle.is-star::after {
  content:"";
  position:absolute;
  top:50%;
  left:50%;
  background:var(--burst-color);
  transform:translate(-50%,-50%) rotate(-45deg);
}
.pig-burst-particle.is-star::before { width:1px; height:260%; }
.pig-burst-particle.is-star::after { width:260%; height:1px; }
.pig-burst-particle.is-released {
  animation:pig-burst-release 1.7s cubic-bezier(.16,.78,.28,1) var(--burst-delay) forwards;
}
.daily-photo-pop {
  border-color:rgba(231,190,123,.42);
  background:linear-gradient(145deg,#1d1a20,#11151b);
  box-shadow:
    0 20px 55px rgba(0,0,0,.56),
    0 0 0 1px rgba(239,184,202,.08),
    0 0 22px rgba(231,190,123,.08);
}
.daily-photo-pop::before {
  content:"";
  position:absolute;
  inset:-3px;
  z-index:-1;
  border:1px solid rgba(239,184,202,.24);
  pointer-events:none;
}
.daily-photo-pop.is-visible {
  animation:daily-memory-flight 1.42s cubic-bezier(.16,.88,.22,1) forwards;
}
.daily-photo-pop.is-leaving {
  animation:none;
  opacity:0;
  filter:blur(5px);
  transform:translate(-50%,-50%) scale(.16);
}

@keyframes pig-portal-turn {
  to { transform:rotate(360deg); }
}
@keyframes pig-orbit-one {
  to { transform:translate(-50%,-50%) rotate(348deg); }
}
@keyframes pig-orbit-two {
  to { transform:translate(-50%,-50%) rotate(404deg); }
}
@keyframes pig-orbit-three {
  to { transform:translate(-50%,-50%) rotate(432deg); }
}
@keyframes pig-cosmos-twinkle {
  0%,100% { opacity:.26; transform:scale(.58) rotate(0); }
  48% { opacity:1; transform:scale(1.18) rotate(22deg); }
}
@keyframes pig-heart-breathe {
  50% { opacity:.42; transform:translate(-50%,-46%) scale(1.09); box-shadow:0 0 62px rgba(239,184,202,.15),inset 0 0 38px rgba(239,184,202,.08); }
}
@keyframes pig-crown-float {
  50% { transform:translate(-50%,-4px) rotate(4deg); }
}
@keyframes pig-blink {
  0%,46%,50%,100% { transform:scaleY(1); }
  48% { transform:scaleY(.12); }
}
@keyframes pig-portal-release {
  0% { opacity:.7; transform:rotate(0) scale(1); }
  42% { opacity:1; filter:drop-shadow(0 0 20px rgba(239,184,202,.42)); }
  100% { opacity:.4; transform:rotate(52deg) scale(1.18); }
}
@keyframes pig-cosmos-release {
  42% { transform:translate(-50%,-50%) scale(1.08) rotate(8deg); filter:brightness(1.35); }
}
@keyframes pig-heart-release {
  0% { opacity:.8; transform:translate(-50%,-46%) scale(1); }
  55% { opacity:1; transform:translate(-50%,-46%) scale(1.42); box-shadow:0 0 90px rgba(239,184,202,.25),inset 0 0 45px rgba(239,184,202,.12); }
  100% { opacity:0; transform:translate(-50%,-46%) scale(1.65); }
}
@keyframes pig-jewel-celebrate {
  0% { transform:translateY(0) scale(1) rotate(0); }
  34% { transform:translateY(-34px) scale(1.09) rotate(6deg); }
  66% { transform:translateY(4px) scale(.98) rotate(-5deg); }
  100% { transform:translateY(0) scale(1) rotate(0); }
}
@keyframes pig-crown-celebrate {
  0% { transform:translateX(-50%) rotate(-4deg); }
  42% { transform:translate(-50%,-26px) rotate(18deg) scale(1.16); }
  76% { transform:translate(-50%,2px) rotate(-11deg); }
}
@keyframes pig-burst-release {
  0% { opacity:0; transform:translate(-50%,-50%) rotate(45deg) scale(.2); }
  18% { opacity:1; }
  72% { opacity:.86; }
  100% { opacity:0; transform:translate(calc(-50% + var(--burst-x)),calc(-50% + var(--burst-y))) rotate(225deg) scale(1); }
}
@keyframes daily-memory-flight {
  0% { opacity:0; transform:translate(-50%,-50%) scale(.08) rotate(0); filter:brightness(1.7) blur(3px); }
  54% { opacity:1; transform:translate(calc(-50% + var(--pop-mid-x)),calc(-50% + var(--pop-mid-y))) scale(1.08) rotate(var(--pop-mid-rotate)); filter:brightness(1.16) blur(0); }
  100% { opacity:1; transform:translate(calc(-50% + var(--pop-x)),calc(-50% + var(--pop-y))) scale(1) rotate(var(--pop-rotate)); filter:brightness(1) blur(0); }
}

@media(max-width:820px) {
  .pig-memory-stage::before { width:86vw; }
  .pig-memory-stage::after { width:78vw; }
  .pig-cosmos { width:88vw; }
  .memory-pig { width:226px; height:210px; }
  .pig-crown { top:0; }
}

@media(prefers-reduced-motion:reduce) {
  .heart-stage.is-morphing::after,
  .pig-memory-stage::after,
  .pig-cosmos,
  .pig-orbit,
  .pig-cosmos__star,
  .pig-heart-pulse,
  .pig-crown,
  .pig-eye,
  .pig-burst-particle,
  .daily-photo-pop.is-visible {
    animation-duration:.01ms !important;
    animation-delay:0s !important;
  }
}

/* Performance pass: keep the same look while reducing full-screen compositing and off-screen work. */
.galaxy-canvas {
  inset:-2%;
  width:104%;
  height:104%;
  mix-blend-mode:normal;
  filter:none;
  contain:paint;
}
.heart-photo img {
  transform-style:flat;
  will-change:auto;
}
.pig-memory-stage {
  content-visibility:auto;
  contain-intrinsic-size:800px;
}
