@font-face{font-family:"EB Garamond";src:url("assets/eb-garamond-regular.woff2") format("woff2");font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:"EB Garamond";src:url("assets/eb-garamond-italic.woff2") format("woff2");font-style:italic;font-weight:400;font-display:swap}
@font-face{font-family:"Cormorant Garamond";src:url("assets/cormorant-medium.ttf") format("truetype");font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:"Cormorant Garamond";src:url("assets/cormorant-italic.ttf") format("truetype");font-style:italic;font-weight:400;font-display:swap}
:root{--paper:#eeebe4;--ink:#000;--muted:#575550;--line:#aaa69e;--accent:var(--ink);--display-font:"EB Garamond",Georgia,serif;--sans:Arial,Helvetica,sans-serif;--mono:"SFMono-Regular",Consolas,"Liberation Mono",monospace;--wordmark-size:18vw;--hero-gap:66px;--grain-opacity:.23;--card-radius:22px;--glitch-strength:1;--mobile-glitch-strength:.7;--ghost-strength:1;--glitch-hold:180;--scene-travel:200svh;--reveal-duration:900ms}
*{box-sizing:border-box}
html{min-height:100%;isolation:isolate;scroll-behavior:smooth;scroll-padding-top:35px;background:var(--paper)}
body{position:relative;isolation:isolate;min-height:100svh;margin:0;background:transparent;color:var(--ink);font-family:var(--display-font);font-weight:400;-webkit-font-smoothing:antialiased}
/* One continuous paper layer spans the full viewport, including safe areas. */
html::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:url("assets/grain.svg");opacity:var(--grain-opacity)}
main,.site-footer{position:relative;z-index:1}
a{color:inherit;text-decoration:none}
button,a,input,select{-webkit-tap-highlight-color:transparent}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--ink);outline-offset:6px}
::selection{background:var(--ink);color:var(--paper)}
h1,h2,h3,p{font-weight:400;margin:0}
em{font-weight:400}
.skip-link{position:fixed;left:20px;top:20px;z-index:100;padding:14px 20px;background:var(--ink);color:var(--paper);font:13px var(--sans);transform:translateY(-180%)}
.skip-link:focus{transform:none}
.story-stage{position:relative}
.story-scene{min-height:620px;height:100svh;position:relative;display:grid;place-items:center}
.scene-visual{position:relative;display:grid;place-items:center;width:100%;height:100%}
.scene-content{grid-area:1/1;width:100%;height:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:60px 6vw}
.hero-composition{gap:min(var(--hero-gap),11svh);text-align:center}
.hero-eyebrow{font-size:clamp(20px,1.8vw,32px);line-height:1.25;letter-spacing:-.015em}
.wordmark{font-size:clamp(80px,var(--wordmark-size),380px);line-height:.92;letter-spacing:-.055em;padding-bottom:.095em}
[data-wordmark-case="upper"] .wordmark{font-size:clamp(66px,calc(var(--wordmark-size) * .74),290px);letter-spacing:-.035em;text-transform:uppercase}
.hero-tagline{font-size:clamp(25px,2.8vw,48px);line-height:1.05;letter-spacing:-.025em}
.hero-tagline span{display:inline-block}
.purpose-composition{gap:clamp(42px,7svh,90px)}
.official-mark{display:block;aspect-ratio:1370/1774;background:currentColor;-webkit-mask:url("assets/aspire-mark.svg") center/contain no-repeat;mask:url("assets/aspire-mark.svg") center/contain no-repeat}
.persistent-brand{position:fixed;top:max(18px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);z-index:50;display:grid;place-items:center;width:44px;height:44px;color:var(--ink)}
.persistent-brand .official-mark{width:24px}
.persistent-brand:hover{opacity:.65}
.purpose-mark{width:clamp(48px,6.3vw,105px);height:auto;flex-shrink:0}
.purpose-copy{font-size:clamp(27px,3.65vw,66px);line-height:1.17;letter-spacing:-.025em;text-align:center;max-width:100%;width:max-content}
.purpose-line{display:block;white-space:nowrap}
.purpose-lead{display:block}
.scroll-cue{display:none;position:absolute;left:50%;bottom:23px;transform:translateX(-50%);z-index:5;place-items:center;width:44px;height:44px;font-family:var(--sans);font-size:23px;opacity:.5;transition:opacity .25s}
.scroll-cue:hover{opacity:1}
/* Without JS, both scenes are ordinary, readable sections. */
.story.is-enhanced{height:calc(max(620px,100svh) + var(--scene-travel))}
.is-enhanced .story-stage{position:sticky;top:0;height:max(620px,100svh);overflow:clip}
.is-enhanced .story-scene{position:absolute;inset:0;height:100%;min-height:0}
.is-enhanced .scene-purpose{opacity:0;pointer-events:none;z-index:2}
.is-enhanced .scroll-cue{display:grid}
.glitch-copy{pointer-events:none;user-select:none;opacity:0}
.glitch-cyan{color:#00e4ed}
.glitch-magenta{color:#ef00df}
.glitch-yellow{color:#f1e600}
.glitch-ink{color:var(--ink)}
.wordmark-letter{display:inline-block;transform-origin:50% 75%}
.apps-section{max-width:2100px;margin:auto;padding:80px 5.4vw 0;scroll-margin-top:45px}
.app-list{list-style:none;padding:0;margin:0}
.app-row{position:relative;transition:opacity .35s}
.app-row::before,.app-list::after{content:"";display:block;height:1px;background:var(--line);transform-origin:left}
.app-link{display:grid;grid-template-columns:minmax(0,1fr) clamp(96px,12vw,215px);column-gap:clamp(26px,7vw,145px);align-items:center;padding:23px 0;min-height:178px}
.app-description{display:block;min-width:0}
.app-name{font-size:clamp(38px,4.45vw,84px);line-height:1.14;letter-spacing:-.035em}
.app-tagline{margin-top:16px;font:clamp(14px,1.3vw,25px)/1.45 var(--sans);letter-spacing:-.025em;white-space:normal}
.banned{display:inline-block;vertical-align:middle;font:clamp(10px,1.18vw,22px)/1.5 var(--mono);letter-spacing:0;color:var(--ink);margin-left:12px;white-space:nowrap}
.app-image{display:block;position:relative;width:100%;aspect-ratio:1;border-radius:var(--card-radius);overflow:hidden;transition:transform .5s cubic-bezier(.2,.7,.2,1)}
.app-image img{display:block;width:100%;height:100%;object-fit:cover}
.app-image-condom{background:#0e0606}
.app-image-condom img{position:absolute;height:100%;width:auto;max-width:none;right:21%;object-fit:initial}
.app-link:hover .app-image,.app-link:focus-visible .app-image{transform:translateY(-3px) scale(1.04)}
.app-link:active .app-image{transform:translateY(1px) scale(.98);transition-duration:.15s}
@media(hover:hover){.app-list:has(.app-link:hover) .app-row:not(:hover){opacity:.3}}
.app-list:has(.app-link:focus-visible) .app-row:not(:focus-within){opacity:.3}
[data-reveal]{--reveal-progress:1}
.has-reveals .app-row .app-link{opacity:var(--reveal-progress);transform:translateY(calc((1 - var(--reveal-progress)) * 28px));transition:opacity var(--reveal-duration) ease,transform var(--reveal-duration) cubic-bezier(.2,.7,.2,1)}
.has-reveals .app-row::before{transform:scaleX(var(--reveal-progress));transition:transform calc(var(--reveal-duration) * 1.15) cubic-bezier(.2,.7,.2,1)}
.has-reveals .site-footer{opacity:var(--reveal-progress);transition:opacity var(--reveal-duration)}
.site-footer{margin:clamp(140px,18vw,340px) 5.4vw 0;padding-bottom:110px}
.footer-ornaments{display:flex;align-items:center;gap:34px;margin-bottom:42px}
.footer-mark{width:26px;height:40px;display:grid;place-items:center}
.footer-mark .official-mark{width:26px}
.footer-rule{height:1px;flex:1;background:var(--line)}
.footer-wordmark{font-family:var(--display-font);font-size:37px;letter-spacing:-.05em;line-height:1}
.footer-links{display:flex;justify-content:space-between;align-items:center;gap:30px;font:11px/1.5 var(--mono)}
.social-link{display:grid;place-items:center;min-width:44px;min-height:44px;font:17px var(--sans);margin-left:-14px}
.copyright{margin-left:auto;margin-right:auto}
.footer-links nav{display:flex;gap:26px}
.footer-links nav a{display:flex;align-items:center;min-height:44px}
.footer-links a:hover{text-decoration:underline;text-underline-offset:5px}
.reading-progress{position:fixed;bottom:0;left:0;right:0;height:2px;background:var(--ink);opacity:calc(.45 * var(--progress-visible,0));transition:opacity .2s ease;z-index:30;transform:scaleX(var(--page-progress,0));transform-origin:left;pointer-events:none}
@media(min-width:1600px){.app-link{padding:26px 0}.app-tagline{margin-top:18px}}
@media(max-width:900px){
 .purpose-copy{font-size:4.3vw}.app-name{font-size:clamp(35px,5.6vw,52px)}
 .app-link{column-gap:30px;grid-template-columns:minmax(0,1fr) 100px}.banned{margin-left:0;margin-top:8px;font-size:11px}
}
@media(max-width:600px){
 .story-scene{min-height:560px}.scene-content{padding:55px 6vw}.hero-composition{gap:min(var(--hero-gap),12svh)}
 .wordmark{font-size:calc(var(--wordmark-size) * 1.9)}[data-wordmark-case="upper"] .wordmark{font-size:calc(var(--wordmark-size) * 1.04)}
 .hero-eyebrow{font-size:16px}.hero-tagline{font-size:clamp(21px,5.8vw,29px)}
 .story.is-enhanced{height:calc(max(560px,100svh) + var(--scene-travel))}.is-enhanced .story-stage{height:max(560px,100svh)}
 .purpose-copy{font-size:clamp(21px,6vw,36px);line-height:1.2;letter-spacing:-.025em}.purpose-mark{width:48px}.purpose-composition{gap:34px}
 .apps-section{padding:46px 6vw 0}.app-link{grid-template-columns:minmax(0,1fr) 66px;column-gap:16px;padding:25px 0;min-height:160px}
 .app-description{grid-column:1;grid-row:1}.app-name{font-size:clamp(28px,7.2vw,42px);line-height:1.08}.app-tagline{font-size:13px;line-height:1.4;white-space:normal;margin-top:14px;max-width:190px}
 .banned{display:block;font-size:10px;margin:10px 0 0}.app-image{border-radius:calc(var(--card-radius) * .65)}
 .site-footer{margin:155px 6vw 0;padding-bottom:100px}.footer-ornaments{gap:23px;margin-bottom:25px}.footer-wordmark{font-size:32px}
 .footer-links{display:grid;grid-template-columns:44px 1fr;gap:20px 12px;font-size:10px}.copyright{margin:0;text-align:right}.footer-links nav{grid-column:1/-1;justify-content:flex-end;gap:24px}
}
@media(max-width:360px){.purpose-copy{font-size:6.6vw}.app-link{column-gap:12px;grid-template-columns:minmax(0,1fr) 58px}.app-name{font-size:27px}.app-tagline{font-size:12px}.banned{font-size:9px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.glitch-copy{display:none!important}}
[data-motion="off"]{scroll-behavior:auto}
[data-motion="off"] *,[data-motion="off"] *::before,[data-motion="off"] *::after{animation:none!important;transition:none!important}
[data-glitch="off"] .glitch-copy,[data-motion="off"] .glitch-copy{display:none!important}
