/* Tamarack "studio" refinement layer (preview, Nov 13 2026). Loaded last; restraint over flash. */
/* Typography: balanced headings, steadier rhythm, crisper rendering */
html{text-rendering:optimizeLegibility;font-kerning:normal;scroll-padding-top:96px}
h1,h2,h3,.statement{text-wrap:balance}
.lead{text-wrap:pretty}
h2{letter-spacing:-.006em;line-height:1.08}
h3{letter-spacing:.002em}
.lead{line-height:1.72}
.eyebrow{font-size:.7rem}
.eyebrow:before{width:34px!important;opacity:.85}
::selection{background:rgba(232,201,157,.35);color:inherit}

/* Buttons: calm by default. The constant shimmer now plays once on hover only. */
.shine:after,.btn:not(.ghost):after{animation:none!important;left:-80%;transition:left .9s cubic-bezier(.2,.7,.2,1)}
.btn:not(.ghost):hover:after,.shine:hover:after{left:130%}
.btn{transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s,background-color .35s,border-color .35s;box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 1px 2px rgba(0,0,0,.18)}
.btn:hover{transform:translateY(-1px)}
.btn:not(.ghost):hover{box-shadow:inset 0 1px 0 rgba(255,255,255,.4),0 12px 28px -14px rgba(184,150,89,.75)}
.btn.ghost{box-shadow:inset 0 1px 0 rgba(255,255,255,.06)}
.btn.ghost:hover{border-color:rgba(232,201,157,.8)}
.btn:active{transform:translateY(0);transition-duration:.08s}
.btn:focus-visible,a:focus-visible,button:focus-visible{outline:2px solid #e8c99d;outline-offset:3px}

/* Cards and plans: hairline edges, quieter lift, softer light */
.card,.plan{transition:transform .5s cubic-bezier(.2,.7,.2,1),box-shadow .5s,border-color .5s}
.dark .card{box-shadow:inset 0 1px 0 rgba(232,201,157,.14),0 30px 60px -34px rgba(0,0,0,.5)}
.card:hover{transform:translateY(-3px);box-shadow:inset 0 1px 0 rgba(232,201,157,.3),0 28px 56px -32px rgba(0,0,0,.55),0 0 0 1px rgba(232,201,157,.28)}
.light .card:hover{box-shadow:0 26px 50px -32px rgba(12,26,65,.35),0 0 0 1px rgba(184,150,89,.28)}
.card:before,.plan:before{background:radial-gradient(360px circle at var(--mx,50%) var(--my,-30%),rgba(232,201,157,.12),transparent 50%)!important}
.plan:hover{transform:translateY(-4px)}
.plan.feat:hover{transform:translateY(-16px)}

/* Imagery: gentle frame and a slow settle when images arrive */
.fimg img,.frame img{transition:transform 1.4s cubic-bezier(.2,.7,.2,1)}
.fimg:hover img,.frame:hover img{transform:scale(1.015)}

/* Hero: quieter ambient layers so the type leads */
.hero .rays{opacity:.7}
.hero .sweep{opacity:.6}

/* Reading progress hairline */
.fx-progress{position:fixed;left:0;top:0;height:2px;width:100%;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,#9d7530,#e8c99d 60%,#f3e2bf);z-index:10001;pointer-events:none;opacity:.9}

/* Three.js hero light (index only); static photo remains the fallback */
.fx-dust{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:0;transition:opacity 2.4s ease}
.fx-dust.on{opacity:1}

@media (prefers-reduced-motion:reduce){
 .fx-progress,.fx-dust{display:none}
 .btn,.card,.plan,.fimg img,.frame img{transition:none!important}
 .card:hover,.plan:hover,.btn:hover{transform:none}
}

/* Speed: below-the-fold background photos wait until they are near the viewport (lzbg is set by a tiny inline script) */
.lzbg .bandimg:not(.lzin),.lzbg .mapimg:not(.lzin){background-image:none!important}
.lzbg section.dark:not(.lzin){background-image:none!important}
/* Lighter ridge texture and mobile hero are swapped directly in brand3.css / bgfix.css */

/* Hero intro in CSS so it never waits on a script download */
@media (prefers-reduced-motion:no-preference){
 .hero .content>.eyebrow,.hero .content>.lead,.hero .content>.row,.hero .content>.meta>div{animation:fxUp .95s cubic-bezier(.2,.7,.2,1) both}
 .hero .content>.eyebrow{animation-delay:.12s}
 .hero .content>.lead{animation-delay:.32s}
 .hero .content>.row{animation-delay:.44s}
 .hero .content>.meta>div:nth-child(1){animation-delay:.56s}
 .hero .content>.meta>div:nth-child(2){animation-delay:.63s}
 .hero .content>.meta>div:nth-child(3){animation-delay:.7s}
}
@keyframes fxUp{from{opacity:0;transform:translateY(14px)}}
