/* Obsidiana: graphite grain, brushed silver and white eclipse light. */
:root{--ib-entry-bg:#09090b}
.entry::before,.section--dark::before{background:radial-gradient(ellipse at 65% 18%,rgba(236,239,245,.07),transparent 52%),radial-gradient(ellipse at 15% 85%,rgba(190,195,205,.04),transparent 44%);opacity:1}
.entry__grain{opacity:.18;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.78' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23fff' filter='url(%23n)' opacity='.35' d='M0 0h180v180H0z'/%3E%3C/svg%3E");background-size:180px}
.section--dark{--surface-image:radial-gradient(ellipse at 75% 20%,rgba(228,232,243,.07),transparent 50%),url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.78' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23fff' filter='url(%23n)' opacity='.045' d='M0 0h180v180H0z'/%3E%3C/svg%3E"),linear-gradient(145deg,#1c1c20,#09090b)}
.section--light{--surface-color:#d3d4d8;--surface-image:linear-gradient(112deg,rgba(255,255,255,.46),transparent 31%,rgba(94,96,103,.08) 58%,rgba(255,255,255,.48)),repeating-linear-gradient(176deg,rgba(37,38,44,.027) 0 .6px,rgba(255,255,255,.075) .6px 1.2px,transparent 1.2px 3px)}
.section--pearl{--surface-color:#edeef0;--surface-image:radial-gradient(ellipse at 15% 10%,#fff9,transparent 55%),repeating-linear-gradient(6deg,rgba(73,76,83,.023) 0 1px,transparent 1px 3px),linear-gradient(125deg,#f1f1f3,#cfd1d7 54%,#eeeef0)}
.entry__halo{border:0;border-radius:0;width:min(85vw,660px);height:1px;aspect-ratio:auto;background:linear-gradient(90deg,transparent,#c6c9d4,white,#c6c9d4,transparent);box-shadow:0 0 30px 3px #f2f4ff26;top:27%;animation:haloBreath 8s ease-in-out infinite}
.entry__halo::after{inset:-30px 15%;border:0;border-radius:50%;background:radial-gradient(ellipse,#e8ecff14,transparent 68%)}
.hero__photo{filter:saturate(.65) brightness(.65)}
/* Graphite and silver tint sits above the birthday portrait and below the type. */
.hero::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,rgba(9,9,11,.69) 0%,rgba(24,25,31,.40) 36%,rgba(9,9,11,.56) 70%,rgba(9,9,11,.88) 100%),linear-gradient(110deg,rgba(171,177,192,.21),rgba(29,31,39,.31) 55%,rgba(188,193,205,.14));mix-blend-mode:normal}
.birthday-photo--hero{filter:saturate(.40) contrast(1.05)}
.section-eclipse{filter:grayscale(1) brightness(1.65)}
.hero__names em,.entry h1 em{color:#e1e3e8}
.date-card{background:linear-gradient(125deg,#ffffffa8,#c4c6ce94 55%,#ffffffc7)}
.glass-card{background:linear-gradient(135deg,#ffffff70,#c7c9d14d)}
.modal{background-image:linear-gradient(115deg,#ffffff50,transparent 45%,#babdc630)}

/* Preserve the approved Eclipse geometry; only neutralize the light. */
.hero__eclipse{opacity:0;animation:none;filter:grayscale(1) brightness(.72)}
body.ib-entered.eclipse-ready .hero__eclipse{animation:heroEclipseTransit 11s 0s cubic-bezier(.45,0,.55,1) infinite both}
/* Keep the requested entrance separator clear of the date. */
.entry__content>.entry__halo{position:relative;top:auto;left:auto;right:auto;width:min(72%,340px);height:1px;margin:0 auto 34px;flex:none}
.entry__content>.entry__halo::after{inset:-12px 15%}

/* Frame the replacement portrait so the couple remains visible on wide screens. */
@media(min-width:701px){.hero__photo{object-position:center 75%}}
