/* Approved opening: clean vector geometry and soft light. The pre-release build holds the final frame. */
@font-face{font-family:OpeningMontserrat;src:url("fonts/cover-montserrat-semibold.woff2?v=c26c8b74d5") format('woff2');font-style:normal;font-weight:600;font-display:swap}
.intro-veil,.intro-veil *{box-sizing:border-box}
.intro-veil{display:none}
html.intro-on{overflow:hidden}
html.intro-on .intro-veil{position:fixed;inset:0;z-index:100;color:#252b27;-webkit-font-smoothing:antialiased;isolation:isolate;display:grid;place-items:center;min-height:260px;overflow:hidden;--intro-flight:1.6s;--intro-blend-delay:1.15s;--intro-blend:.45s;--intro-ease:cubic-bezier(.4,0,.2,1)}
.intro-sheet{position:absolute;inset:0;isolation:isolate;overflow:hidden;background:radial-gradient(ellipse at 48% 43%,#fcfbf7 0%,#f8f7f3 44%,#f1f1eb 100%)}
.intro-light{position:absolute;inset:-15%;z-index:-2;background:radial-gradient(ellipse 36% 42% at 51% 49%,rgba(225,232,218,.24),transparent 80%),radial-gradient(ellipse 60% 46% at 16% 12%,rgba(233,220,198,.18),transparent 80%);animation:intro-light-arrives 1.83s cubic-bezier(.16,1,.3,1) both}
.intro-paper{position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:.035;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Cpath fill='%23000' filter='url("%23n")' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}
.intro-identity{display:flex;flex-direction:column;align-items:center;transform:translateY(-.5vh)}
.intro-symbol{position:relative;width:clamp(172px,25vmin,238px);aspect-ratio:1;transform:scale(.96)}
.intro-aura{position:absolute;inset:-54%;border-radius:50%;background:radial-gradient(circle,rgba(196,215,188,.12),rgba(221,229,208,.05) 38%,transparent 67%);animation:intro-aura-settles 1.83s cubic-bezier(.16,1,.3,1) both}
.intro-ring{position:relative;display:block;width:100%;height:100%;overflow:visible;transform-origin:center;animation:intro-ring-arrives 1.83s cubic-bezier(.22,1,.36,1) both}
.intro-shadow{opacity:.075}
.intro-draw{stroke-dasharray:1;stroke-dashoffset:0;animation:intro-ring-trace 1.65s .18s cubic-bezier(.55,.06,.16,1) both}
.intro-rim{opacity:.46}
.intro-word{position:relative;margin:0;font-family:OpeningMontserrat,Montserrat,"Avenir Next",sans-serif;font-size:clamp(34px,4vw,44px);font-weight:600;line-height:1.2;letter-spacing:-.03em;animation:intro-word-arrives .9s .85s cubic-bezier(.16,1,.3,1) both}
@keyframes intro-ring-trace{from{stroke-dashoffset:1;opacity:0}8%{opacity:1}to{stroke-dashoffset:0;opacity:1}}
@keyframes intro-ring-arrives{from{opacity:0;transform:scale(1.10) rotate(-13deg);filter:blur(3px)}30%{opacity:1}to{opacity:1;transform:scale(1) rotate(0);filter:blur(0)}}
@keyframes intro-word-arrives{from{opacity:0;transform:translateY(8px);filter:blur(4px);letter-spacing:.02em}to{opacity:1;transform:translateY(0);filter:blur(0);letter-spacing:-.03em}}
@keyframes intro-aura-settles{from{opacity:0;transform:scale(.72)}45%{opacity:1;transform:scale(1.09)}to{opacity:.8;transform:scale(1)}}
@keyframes intro-light-arrives{from{opacity:0;transform:scale(1.12)}to{opacity:1;transform:scale(1)}}
/* Lift the opening sheet and uncover the opaque page in the same motion. Keep
   the travelling ring behind the content so it never shows through the video. */
.home-content{position:relative;z-index:2}
html.intro-on .home-content{clip-path:inset(100vh 0 0 0)}
html.intro-on.intro-merging .home-content{clip-path:inset(0 0 0 0);transition:clip-path 1.35s cubic-bezier(.4,0,.2,1)}
html.intro-on .intro-veil.is-leaving{z-index:1}
html.intro-on .home .sf-hero .sf-ring{animation-play-state:paused}
html.intro-on .home .sf-hero .sf-ring>svg{opacity:0}
html.intro-on.intro-merging .home .sf-hero .sf-ring>svg{opacity:1;transition:opacity .45s ease 1.15s}
.intro-veil.is-leaving .intro-sheet{transform:translateY(-100%);transition:transform 1.35s var(--intro-ease)}
.intro-veil.is-leaving .intro-symbol{
  transform:translate(var(--fly-x,0px),var(--fly-y,0px)) scale(var(--fly-scale,.96));
  filter:blur(var(--fly-blur,3px));opacity:0;
  transition:transform var(--intro-flight) var(--intro-ease),filter var(--intro-flight) var(--intro-ease),opacity var(--intro-blend) ease var(--intro-blend-delay);
}
.intro-veil.is-leaving .intro-word{animation:intro-word-departs .45s ease both}
@keyframes intro-word-departs{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-10px)}}
.intro-veil.is-leaving .intro-aura{animation:none;opacity:0;transition:opacity .8s ease}
.intro-veil.is-leaving .intro-shadow{opacity:0;transition:opacity .8s ease}
.intro-veil.is-leaving .intro-ring{animation:none;opacity:var(--fly-ink,.82);transition:opacity var(--intro-flight) var(--intro-ease)}
.intro-veil.is-leaving .intro-rim{animation:none;opacity:0;transition:opacity .8s ease}
.intro-veil.is-leaving #intro-material stop{transition:stop-color var(--intro-flight) var(--intro-ease)}
.intro-veil.is-leaving #intro-material stop:nth-child(1){stop-color:#8fae9e}
.intro-veil.is-leaving #intro-material stop:nth-child(2){stop-color:#709583}
.intro-veil.is-leaving #intro-material stop:nth-child(3){stop-color:#517c6a}
.intro-veil.is-leaving #intro-material stop:nth-child(4){stop-color:#406d5c}
.intro-veil.is-quick{opacity:0;transition:opacity .25s ease}
@media(max-width:600px){.intro-symbol{width:clamp(150px,25vmin,180px)}}
@media(max-height:420px){.intro-symbol{width:135px}.intro-word{font-size:30px}}
@media(prefers-reduced-motion:reduce){.intro-light,.intro-aura,.intro-ring,.intro-draw,.intro-word{animation:none!important}}
