html { scroll-behavior: smooth; }
body { font-family: 'Inter', sans-serif; }
.font-serif { font-feature-settings: "lnum" 1; }
:focus-visible { outline: 2px solid #C2A16B; outline-offset: 3px; border-radius: 6px; }

/* film grain */
.grain { position: relative; }
.grain::after { content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .07; mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); }

.glass { background: linear-gradient(160deg, rgba(255,255,255,.14), rgba(255,255,255,.06)); backdrop-filter: blur(22px) saturate(140%); -webkit-backdrop-filter: blur(22px) saturate(140%); border: 1px solid rgba(255,255,255,.18); }
.eyebrow { font-size: .72rem; letter-spacing: .22em; text-transform: uppercase; font-weight: 500; }

/* header */
#hdr { transition: background-color .35s ease, box-shadow .35s ease, color .35s ease; }
#hdr.solid { background: rgba(251,249,245,.94); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); box-shadow: 0 1px 0 rgba(11,20,38,.08); color: #0B1426; }
#hdr .logo-dark { display: none; } #hdr.solid .logo-dark { display: block; } #hdr.solid .logo-light { display: none; }
.dd { visibility: hidden; opacity: 0; transform: translateY(8px); transition: opacity .25s ease, transform .25s ease, visibility .25s; }
.has-dd:hover .dd, .has-dd:focus-within .dd { visibility: visible; opacity: 1; transform: none; }

/* reveal */
.reveal { opacity: 0; transform: translateY(28px); transition: opacity .9s cubic-bezier(.2,.7,.2,1), transform .9s cubic-bezier(.2,.7,.2,1); }
.reveal.in { opacity: 1; transform: none; }
.d1 { transition-delay: .08s } .d2 { transition-delay: .16s } .d3 { transition-delay: .24s } .d4 { transition-delay: .32s }

.marquee { animation: marquee 38s linear infinite; }
@keyframes marquee { to { transform: translateX(-50%); } }
.kenburns { animation: kb 22s ease-out forwards; }
@keyframes kb { from { transform: scale(1.12); } to { transform: scale(1); } }

/* form tiles */
.need input:checked + label { border-color: #C2A16B; background: rgba(194,161,107,.16); }
.need input:checked + label .tick { opacity: 1; }
.need input:focus-visible + label { outline: 2px solid #C2A16B; outline-offset: 2px; }

/* range */
input[type=range] { -webkit-appearance: none; appearance: none; width: 100%; height: 4px; border-radius: 9px; background: #E2DBCD; outline: none; cursor: pointer; }
input[type=range]::-webkit-slider-thumb { -webkit-appearance: none; width: 24px; height: 24px; border-radius: 50%; background: #0B1426; border: 4px solid #C2A16B; cursor: pointer; box-shadow: 0 2px 8px rgba(11,20,38,.25); }
input[type=range]::-moz-range-thumb { width: 16px; height: 16px; border-radius: 50%; background: #0B1426; border: 4px solid #C2A16B; cursor: pointer; }
.num { -moz-appearance: textfield; }
.num::-webkit-outer-spin-button, .num::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

/* segmented control */
.seg input:checked + label { background: #0B1426; color: #fff; }
.seg input:focus-visible + label { outline: 2px solid #C2A16B; outline-offset: 2px; }

.svc { position: relative; }
.svc::before { content: ""; position: absolute; left: 0; top: 0; height: 2px; width: 0; background: #C2A16B; transition: width .5s cubic-bezier(.2,.7,.2,1); z-index: 2; }
.svc:hover::before { width: 100%; }

details summary::-webkit-details-marker { display: none; }
details summary { list-style: none; }
details[open] .pm { transform: rotate(45deg); }

.prose-lux p { margin-top: 1.1rem; }
.prose-lux ul { margin-top: 1.1rem; display: grid; gap: .7rem; }
.prose-lux li { position: relative; padding-left: 1.6rem; }
.prose-lux li::before { content: ""; position: absolute; left: 0; top: .7em; width: .7rem; height: 1px; background: #C2A16B; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  .reveal { opacity: 1; transform: none; }
}
