@font-face{font-family:"PP Neue Montreal";font-style:normal;font-weight:400;font-display:swap;src:url("../assets/fonts/ppnm-book.woff2") format("woff2")}@font-face{font-family:"PP Neue Montreal";font-style:normal;font-weight:500;font-display:swap;src:url("../assets/fonts/ppnm-medium.woff2") format("woff2")}@font-face{font-family:"PP Neue Montreal";font-style:normal;font-weight:600 700;font-display:swap;src:url("../assets/fonts/ppnm-bold.woff2") format("woff2")}:root{--bone:#F4F3EF;--bone-2:#EAE8E2;--bone-3:#DEDCD4;--paper:#FFFFFF;--ink:#0A0A0A;--ink-2:#141414;--ink-3:#1E1E1E;--text:#0A0A0A;--text-muted:#5E5E58;--text-faint:#6E6E67;--faint-ink:#A6A6A0;--on-ink:#F4F3EF;--on-ink-muted:rgba(244,243,239,0.60);--signal:#C7FF3D;--signal-ink:#0A0A0A;--signal-deep:#0A0A0A;--signal-soft:rgba(199,255,61,0.16);--line:rgba(10,10,10,0.13);--line-strong:rgba(10,10,10,0.26);--line-ink:rgba(244,243,239,0.14);--r-xs:2px;--r-sm:6px;--r-md:10px;--r-lg:14px;--r-pill:999px;--shadow:0 18px 44px -22px rgba(10,10,10,0.30);--shadow-lg:0 40px 90px -34px rgba(10,10,10,0.42);--gutter:clamp(20px,5vw,64px);--section:clamp(56px,7vw,106px);--maxw:1320px;--maxw-text:68ch;--display:"PP Neue Montreal",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--body:"PP Neue Montreal",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--mono:"PP Neue Montreal",ui-monospace,sans-serif}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bone);color:var(--text);font:400 17px/1.6 var(--body);-webkit-font-smoothing:antialiased;overflow-x:hidden}img,svg,video,canvas{max-width:100%;display:block}a{color:inherit}h1,h2,h3,h4{font-family:var(--display);font-weight:500;letter-spacing:-0.035em;line-height:1.0;margin:0;text-wrap:balance}p{margin:0;text-wrap:pretty}::selection{background:var(--signal);color:var(--signal-ink)}:focus-visible{outline:3px solid var(--ink);outline-offset:3px;border-radius:var(--r-xs);box-shadow:0 0 0 6px var(--signal-soft)}:is(.section--ink,.hero,.journey,.cs-hero,.footer,.radar,.tier--featured):focus-visible{outline-color:var(--signal);box-shadow:0 0 0 6px rgba(10,10,10,.55)}.skip{position:absolute;left:-9999px;top:12px;z-index:200;background:var(--ink);color:var(--on-ink);padding:12px 20px;border-radius:var(--r-sm)}.skip:focus{left:12px}.wrap{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter)}.wrap-narrow{max-width:860px}.section{padding-block:var(--section);position:relative}.section--bone2{background:var(--bone-2)}.section--ink{background:var(--ink);color:var(--on-ink)}:is(.section--ink,.hero,.journey,.cs-hero,.footer,.radar,.tier--featured) h1,:is(.section--ink,.hero,.journey,.cs-hero,.footer,.radar,.tier--featured) h2,:is(.section--ink,.hero,.journey,.cs-hero,.footer,.radar,.tier--featured) h3{color:var(--on-ink)}:is(.section--ink,.hero,.journey,.cs-hero,.footer,.radar,.tier--featured) .lede,:is(.section--ink,.hero,.journey,.cs-hero,.footer,.radar,.tier--featured) p{color:var(--on-ink-muted)}.display-xl{font-size:clamp(3rem,9vw,8rem);font-weight:500;letter-spacing:-0.045em}.display-lg{font-size:clamp(2.4rem,6vw,4.8rem);font-weight:500;letter-spacing:-0.04em}.display-md{font-size:clamp(1.9rem,3.8vw,3.1rem);font-weight:500;letter-spacing:-0.035em}.display-sm{font-size:clamp(1.35rem,2.2vw,1.85rem);font-weight:500;letter-spacing:-0.03em}.lede{font-size:clamp(1.05rem,1.5vw,1.28rem);line-height:1.55;color:var(--text-muted);max-width:62ch;font-weight:400}.eyebrow{font:500 11px/1 var(--display);letter-spacing:0.2em;text-transform:uppercase;color:var(--text-faint);display:inline-flex;align-items:center;gap:12px}.eyebrow::before{content:"";width:18px;height:6px;background:var(--signal);flex:none}:is(.section--ink,.hero,.journey,.cs-hero,.footer,.radar,.tier--featured) .eyebrow{color:var(--on-ink-muted)}:is(.section--ink,.hero,.journey,.cs-hero,.footer,.radar,.tier--featured) .cs-stat b{color:var(--on-ink)}:is(.section--ink,.hero,.journey,.cs-hero,.footer,.radar,.tier--featured) .cs-stat>span{color:var(--on-ink-muted)}:is(.section--ink,.hero,.journey,.cs-hero,.footer,.radar,.tier--featured):is(.meta,time,figcaption,small,th){color:var(--faint-ink)}.signal{color:var(--signal-deep)}:is(.section--ink,.hero,.journey,.cs-hero,.footer,.radar,.tier--featured) .signal{color:var(--signal)}.btn{display:inline-flex;align-items:center;gap:12px;padding:16px 26px;border-radius:var(--r-sm);font:500 14px/1 var(--display);letter-spacing:0.01em;text-decoration:none;border:1px solid transparent;cursor:pointer;transition:background-color .3s,color .3s,border-color .3s;white-space:nowrap}.btn .arr{transition:transform .35s cubic-bezier(.22,1,.36,1),color .3s;color:var(--signal)}.btn:hover .arr{transform:translateX(5px)}.btn--primary{background:var(--ink);color:var(--on-ink)}.btn--primary:hover{background:var(--signal);color:var(--signal-ink)}.btn--primary:hover .arr{color:var(--signal-ink)}.btn--ink{background:var(--ink);color:var(--on-ink)}.btn--ink:hover{background:var(--signal);color:var(--signal-ink)}.btn--ghost{border-color:var(--line-strong);color:var(--text)}.btn--ghost:hover{border-color:var(--ink);background:var(--ink);color:var(--on-ink)}:is(.section--ink,.hero,.journey,.cs-hero,.footer,.radar,.tier--featured) .btn--ghost{border-color:var(--line-ink);color:var(--on-ink)}:is(.section--ink,.hero,.journey,.cs-hero,.footer,.radar,.tier--featured) .btn--ghost:hover{background:var(--signal);border-color:var(--signal);color:var(--signal-ink)}:is(.section--ink,.hero,.journey,.cs-hero,.footer,.radar,.tier--featured) .btn--primary{background:transparent;color:var(--on-ink);border-color:var(--line-ink)}:is(.section--ink,.hero,.journey,.cs-hero,.footer,.radar,.tier--featured) .btn--primary .arr{color:var(--signal)}:is(.section--ink,.hero,.journey,.cs-hero,.footer,.radar,.tier--featured) .btn--primary:hover{background:var(--signal);color:var(--signal-ink);border-color:var(--signal)}:is(.section--ink,.hero,.journey,.cs-hero,.footer,.radar,.tier--featured) .btn--primary:hover .arr{color:var(--signal-ink)}.btn--lg{padding:19px 32px;font-size:15px}.link{display:inline-flex;align-items:center;gap:9px;text-decoration:none;font-weight:500;background-image:linear-gradient(var(--signal),var(--signal));background-size:0% 3px;background-position:0 100%;background-repeat:no-repeat;transition:background-size .35s cubic-bezier(.22,1,.36,1);padding-bottom:3px}.link:hover{background-size:100% 3px}.chip{display:inline-flex;align-items:center;gap:8px;padding:8px 15px;border-radius:var(--r-pill);border:1px solid var(--line);font:500 12.5px/1 var(--display);color:var(--text-muted);background:transparent}:is(.section--ink,.hero,.journey,.cs-hero,.footer,.radar,.tier--featured) .chip{border-color:var(--line-ink);color:var(--on-ink-muted)}.chip--signal{border-color:transparent;background:var(--signal);color:var(--signal-ink)}.header{position:fixed;inset:0 0 auto 0;z-index:90;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:18px var(--gutter);transition:background-color .4s,border-color .4s,padding .4s,color .4s;border-bottom:1px solid transparent}.header.is-stuck{background:rgba(244,243,239,0.86);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom-color:var(--line);padding-block:12px}.header.is-on-ink{color:var(--on-ink)}.header.is-on-ink.is-stuck{background:rgba(10,10,10,0.78);border-bottom-color:var(--line-ink)}.brand{display:flex;align-items:center;gap:12px;text-decoration:none}.brand__mark{width:34px;height:34px;flex:none;overflow:visible}.brand__mark path{transition:opacity .4s}.brand__word{display:grid;line-height:1;font-family:var(--display);font-weight:600;font-size:15px;letter-spacing:0.02em;text-transform:uppercase}.brand__word em{font-style:normal;font-weight:400;font-size:13px;letter-spacing:0.24em;opacity:.62;margin-top:4px}@media (max-width:420px){.brand__word{font-size:13px}.brand__word em{font-size:11px}}.nav{display:flex;align-items:center;gap:2px}.nav a{text-decoration:none;font-size:14px;font-weight:400;padding:9px 14px;border-radius:var(--r-sm);opacity:.72;transition:opacity .2s;position:relative}.nav a::after{content:"";position:absolute;left:14px;right:14px;bottom:4px;height:3px;background:var(--signal);transform:scaleX(0);transform-origin:left;transition:transform .3s cubic-bezier(.22,1,.36,1)}.nav a:hover{opacity:1}.nav a:hover::after,.nav a[aria-current="page"]::after{transform:scaleX(1)}.nav a[aria-current="page"]{opacity:1;font-weight:500}.header .btn{padding:12px 20px;font-size:13px}.nav-toggle{display:none}.mobile-nav{display:none}@media (max-width:900px){.nav{display:none}.nav-toggle{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--r-sm);border:1px solid var(--line);background:transparent;color:inherit;cursor:pointer}.header.is-on-ink .nav-toggle{border-color:var(--line-ink)}.mobile-nav{position:fixed;inset:0;z-index:95;background:var(--ink);color:var(--on-ink);display:grid;align-content:center;gap:4px;padding:0 var(--gutter);opacity:0;visibility:hidden;overflow-y:auto}.mobile-nav.is-open{opacity:1;visibility:visible}.mobile-nav a{text-decoration:none;font-family:var(--display);font-weight:500;font-size:clamp(2rem,9vw,3rem);letter-spacing:-0.04em;padding:10px 0;border-bottom:1px solid var(--line-ink)}.mobile-nav a:hover{color:var(--signal)}.mobile-nav .close{position:absolute;top:18px;right:var(--gutter);background:none;border:0;color:inherit;font-size:30px;cursor:pointer}}.hero{position:relative;min-height:100svh;display:grid;align-items:center;background:var(--ink);color:var(--on-ink);overflow:hidden}.hero__canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:pan-y}.hero{cursor:grab}.hero.is-spin{cursor:grabbing}.hero a,.hero button{cursor:pointer}.hero.is-spin,.hero.is-spin *{user-select:none;-webkit-user-select:none}.hero__inner{position:relative;z-index:2;padding-block:140px 90px}.hero h1{font-size:clamp(3rem,9.5vw,8.5rem);font-weight:500;letter-spacing:-0.05em;line-height:0.9}.hero h1 .line{display:block;overflow:hidden}.hero h1 .line>span{display:block}.hero__sub{margin-top:32px;max-width:46ch;font-size:clamp(1.05rem,1.5vw,1.25rem);color:var(--on-ink-muted)}.hero__actions{margin-top:42px;display:flex;flex-wrap:wrap;gap:14px}.hero__meta{margin-top:64px;display:flex;flex-wrap:wrap;gap:12px 34px;font:500 11px/1 var(--display);letter-spacing:.18em;text-transform:uppercase;color:var(--on-ink-muted)}.hero__meta span{display:inline-flex;align-items:center;gap:10px}.hero__meta span::before{content:"";width:6px;height:6px;background:var(--signal)}.hero__scroll{position:absolute;bottom:26px;left:50%;transform:translateX(-50%);z-index:2;display:grid;justify-items:center;gap:9px;font:500 10px/1 var(--display);letter-spacing:.22em;text-transform:uppercase;color:var(--on-ink-muted)}.hero__scroll i{display:block;width:1px;height:42px;background:var(--line-ink);position:relative;overflow:hidden}.hero__scroll i::after{content:"";position:absolute;inset:0 0 auto 0;height:40%;background:var(--signal);animation:scrollcue 1.9s ease-in-out infinite}@keyframes scrollcue{0%{transform:translateY(-100%)}100%{transform:translateY(300%)}}.journey{background:var(--ink);color:var(--on-ink);overflow:hidden}.journey__viewport{height:100svh;display:flex;align-items:center}.journey__track{display:flex;gap:clamp(20px,3vw,44px);padding-inline:var(--gutter);will-change:transform}.journey__intro{flex:none;width:min(78vw,520px);align-self:center}.jcard{flex:none;width:min(82vw,440px);background:var(--ink-2);border:1px solid var(--line-ink);border-radius:var(--r-md);padding:clamp(26px,3vw,40px);display:flex;flex-direction:column;gap:16px;min-height:min(62svh,520px);transition:border-color .4s}.jcard:hover{border-color:var(--signal)}.jcard__n{font:500 11px/1 var(--display);letter-spacing:.18em;text-transform:uppercase;color:var(--signal)}.jcard h3{font-size:clamp(1.6rem,2.6vw,2.2rem)}.jcard p{color:var(--on-ink-muted);font-size:16px}.jcard ul{list-style:none;margin:auto 0 0;padding:0;display:grid;gap:9px}.jcard li{display:flex;gap:12px;font-size:14.5px;color:var(--on-ink-muted)}.jcard li::before{content:"";margin-top:.55em;width:12px;height:3px;background:var(--signal);flex:none}.journey__progress{position:absolute;left:var(--gutter);right:var(--gutter);bottom:34px;height:3px;background:var(--line-ink)}.journey__progress i{display:block;height:100%;width:0;background:var(--signal)}.radar{background:var(--ink);color:var(--on-ink);overflow:hidden}.radar__grid{display:grid;gap:clamp(40px,5vw,80px);align-items:center;margin-top:64px}@media (min-width:1040px){.radar__grid{grid-template-columns:1.05fr .95fr}}.radar__stage{position:relative;aspect-ratio:1;width:100%;max-width:660px;margin-inline:auto}.radar__canvas{position:absolute;inset:0;width:100%;height:100%}.radar__nodes{position:absolute;inset:0}.radar__node{position:absolute;transform:translate(-50%,-50%);display:flex;align-items:center;gap:0;background:none;border:0;padding:0;cursor:crosshair;color:var(--on-ink);white-space:nowrap;font:500 11px/1 var(--display);letter-spacing:.16em;text-transform:uppercase}.radar__node i{width:9px;height:9px;flex:none;position:relative;background:var(--on-ink);opacity:.5;transform:rotate(45deg);transition:background-color .3s,opacity .3s,transform .4s}.radar__node em{font-style:normal;display:block;height:1px;width:0;background:rgba(244,243,239,.35);transition:width .45s cubic-bezier(.22,1,.36,1)}.radar__node span{opacity:0;transform:translateX(-6px);transition:opacity .4s,transform .45s cubic-bezier(.22,1,.36,1),color .3s}.radar__node--right{flex-direction:row-reverse}.radar__node--right span{transform:translateX(6px)}.radar__node:hover i,.radar__node.is-active i,.radar__node.is-lit i{background:var(--signal);opacity:1;transform:rotate(45deg) scale(1.25)}.radar__node:hover em,.radar__node.is-active em{width:26px;background:var(--signal)}.radar__node:hover span,.radar__node.is-active span{opacity:1;transform:translateX(0)}.radar__node.is-active span{color:var(--signal)}.radar__node:focus-visible{outline:none}.radar__node:focus-visible i{outline:2px solid var(--signal);outline-offset:4px}.radar__hud{position:absolute;left:0;bottom:-6px;display:flex;gap:18px;font:500 10px/1 var(--display);letter-spacing:.16em;text-transform:uppercase;color:var(--on-ink-muted);pointer-events:none}.radar__hud-row{display:inline-flex;gap:8px;align-items:center}.radar__hud b{color:rgba(244,243,239,.34);font-weight:500}.radar__hud span[data-hud-status]{color:var(--signal)}.radar__hint{position:absolute;left:auto;right:0;bottom:-6px;margin:0;font:500 10px/1 var(--display);letter-spacing:.14em;text-transform:uppercase;color:rgba(244,243,239,.3);pointer-events:none;text-align:right;max-width:46%;white-space:nowrap}.radar__hint kbd{font:inherit;border:1px solid var(--line-ink);padding:3px 5px;border-radius:2px;margin-left:3px}@media (max-width:560px){.radar__hint{display:none}}.radar__panel{min-height:380px;position:relative}.radar__pane{position:absolute;inset:0;opacity:0;visibility:hidden}.radar__pane.is-shown{opacity:1;visibility:visible;position:relative}.radar__pane h3{font-size:clamp(2rem,3.8vw,3.2rem)}.radar__pane p{margin-top:18px;font-size:16.5px}.radar__pane ul{list-style:none;margin:28px 0 0;padding:0;display:grid;gap:12px}.radar__pane li{display:flex;gap:14px;font-size:15px;color:var(--on-ink-muted)}.radar__pane li::before{content:"";margin-top:.55em;width:12px;height:3px;background:var(--signal);flex:none}.radar__meta{display:flex;flex-wrap:wrap;gap:12px 26px;margin-top:32px;align-items:center}.radar__price{font:500 12px/1 var(--display);letter-spacing:.16em;text-transform:uppercase;color:var(--signal-ink);background:var(--signal);padding:9px 13px;border-radius:2px}.radar__index{display:flex;gap:6px;margin-top:36px;align-items:center;font:500 10px/1 var(--display);letter-spacing:.18em;text-transform:uppercase;color:rgba(244,243,239,.34)}.radar__index i{display:block;width:22px;height:3px;background:rgba(244,243,239,.18);transition:background-color .35s}.radar__index i.on{background:var(--signal)}.collage{display:grid;grid-template-columns:repeat(12,1fr);gap:12px;margin-top:56px}.tile{border:0;padding:0;margin:0;background:none;text-align:left;color:inherit;font:inherit;cursor:pointer;text-decoration:none;grid-column:span 12;display:block;position:relative}.tile__frame{position:relative;display:block;overflow:hidden;border-radius:var(--r-sm);background:var(--ink);aspect-ratio:4/3}.tile[style*="--h"] .tile__frame{aspect-ratio:auto;height:var(--h)}@media (min-width:760px){.tile{grid-column:span 6}.tile--wide{grid-column:span 7}.tile--tall{grid-column:span 5}.tile--full{grid-column:span 12}.tile--third{grid-column:span 4}.tile--two-third{grid-column:span 8}.tile--wide .tile__frame,.tile--two-third .tile__frame{aspect-ratio:16/10}.tile--tall .tile__frame,.tile--third .tile__frame{aspect-ratio:4/5}.tile--full .tile__frame{aspect-ratio:21/9}}.tile img{width:100%;height:100%;object-fit:cover;object-position:top center;will-change:transform}.tile__veil{position:absolute;inset:0;opacity:0;transition:opacity .45s;background:linear-gradient(to top,rgba(10,10,10,.88) 0%,rgba(10,10,10,.55) 46%,rgba(10,10,10,.15) 100%)}.tile__client{position:absolute;top:14px;left:14px;z-index:3;font:500 10px/1 var(--display);letter-spacing:.2em;text-transform:uppercase;color:#fff;background:rgba(10,10,10,.55);backdrop-filter:blur(6px);padding:8px 11px;border-radius:var(--r-xs)}.tile__body{position:absolute;inset:auto 0 0 0;z-index:3;padding:clamp(18px,2.2vw,30px);display:grid;gap:7px;color:#fff;opacity:0;transform:translateY(14px)}.tile__title{font-family:var(--display);font-weight:500;font-size:clamp(1.1rem,1.8vw,1.5rem);letter-spacing:-.03em;line-height:1.12}.tile__meta{font-size:13.5px;color:rgba(255,255,255,.72)}.tile__open{position:absolute;top:14px;right:14px;z-index:3;width:40px;height:40px;border-radius:50%;background:var(--signal);color:var(--signal-ink);display:grid;place-items:center;opacity:0;transform:scale(.75)}.no-js .tile__body,.tile.is-static .tile__body{opacity:1;transform:none}.no-js .tile__veil,.tile.is-static .tile__veil{opacity:1}.tile__reel{position:absolute;inset:0;overflow:hidden}.tile__reel img{position:absolute;top:0;left:0;width:100%;height:auto;will-change:transform}.tile__still{position:absolute;inset:0}.tile__still img{width:100%;height:100%;object-fit:cover;object-position:top center}.tile__scrub{position:absolute;left:14px;right:14px;bottom:12px;z-index:4;height:3px;background:rgba(244,243,239,.22);border-radius:2px;opacity:0;overflow:hidden}.tile__scrub i{display:block;height:100%;width:0;background:var(--signal)}.tile__live{position:absolute;top:14px;right:62px;z-index:4;display:inline-flex;align-items:center;gap:7px;font:500 9px/1 var(--display);letter-spacing:.18em;text-transform:uppercase;color:#fff;background:rgba(10,10,10,.55);backdrop-filter:blur(6px);padding:8px 10px;border-radius:var(--r-xs);opacity:0}.tile__live b{width:5px;height:5px;border-radius:50%;background:var(--signal)}.reviews{background:var(--bone-2)}.reviews__head{display:flex;flex-wrap:wrap;gap:24px;justify-content:space-between;align-items:end}.reviews__score{display:flex;align-items:center;gap:16px}.reviews__score b{font-family:var(--display);font-weight:500;font-size:clamp(2.6rem,5vw,4rem);letter-spacing:-.04em;line-height:1}.stars{display:inline-flex;gap:3px}.stars svg{width:15px;height:15px;color:var(--ink)}.reviews__grid{display:grid;gap:12px;margin-top:52px}@media (min-width:760px){.reviews__grid{grid-template-columns:repeat(2,1fr)}}@media (min-width:1080px){.reviews__grid{grid-template-columns:repeat(3,1fr)}}.review{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-sm);padding:clamp(24px,2.6vw,34px);display:flex;flex-direction:column;gap:16px;transition:border-color .35s,transform .35s cubic-bezier(.22,1,.36,1)}.review:hover{border-color:var(--ink);transform:translateY(-4px)}.review__quote{font-size:16.5px;line-height:1.55}.review__quote::before{content:"";display:block;width:22px;height:4px;background:var(--signal);margin-bottom:16px}.review__who{margin-top:auto;display:flex;align-items:center;gap:12px;padding-top:8px}.review__av{width:38px;height:38px;border-radius:50%;flex:none;background:var(--ink);color:var(--on-ink);display:grid;place-items:center;font:500 12px/1 var(--display);letter-spacing:.04em}.review__name{font-weight:500;font-size:14.5px}.review__role{font-size:13px;color:var(--text-faint)}.review--wide{grid-column:1 / -1;background:var(--ink);color:var(--on-ink);border-color:var(--ink)}.review--wide .review__quote{font-size:clamp(1.3rem,2.4vw,1.9rem);font-weight:500;letter-spacing:-.03em;line-height:1.22;color:var(--on-ink)}.review--wide .review__av{background:var(--signal);color:var(--signal-ink)}.review--wide .review__role{color:var(--on-ink-muted)}.cs-overlay{position:fixed;inset:0;z-index:120;background:var(--bone);overflow-y:auto;overscroll-behavior:contain;opacity:0;visibility:hidden}.cs-overlay__close{position:fixed;top:18px;right:max(18px,var(--gutter));z-index:130;width:52px;height:52px;border-radius:50%;border:1px solid var(--line);background:rgba(244,243,239,.9);backdrop-filter:blur(10px);color:var(--text);display:grid;place-items:center;cursor:pointer;font-size:22px;transition:background-color .25s,transform .25s,color .25s}.cs-overlay__close:hover{background:var(--signal);color:var(--signal-ink);transform:rotate(90deg)}.cs-hero{background:var(--ink);color:var(--on-ink);padding:clamp(96px,12vw,150px) 0 clamp(56px,7vw,90px);position:relative;overflow:hidden}.cs-hero h1{font-size:clamp(2.4rem,6vw,5rem);margin-top:18px}.cs-hero__sub{margin-top:22px;max-width:56ch;color:var(--on-ink-muted);font-size:clamp(1rem,1.4vw,1.18rem)}.cs-hero__chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:28px}.cs-shot{margin-top:clamp(36px,5vw,64px);border-radius:var(--r-sm);overflow:hidden;box-shadow:var(--shadow-lg)}.cs-stats{display:grid;gap:1px;background:var(--line);border-block:1px solid var(--line)}@media (min-width:720px){.cs-stats{grid-template-columns:repeat(4,1fr)}}.cs-stat{background:var(--bone);padding:clamp(24px,3vw,38px)}.cs-stat b{display:block;font-family:var(--display);font-weight:500;font-size:clamp(1.9rem,3.4vw,2.9rem);letter-spacing:-.04em;color:var(--text);font-variant-numeric:tabular-nums}.cs-stat b::after{content:"";display:block;width:26px;height:4px;background:var(--signal);margin-top:12px}.cs-stat>span{display:block;margin-top:12px;font-size:14px;color:var(--text-muted)}.cs-stat b span{font:inherit;color:inherit;margin:0;display:inline}.cs-body{display:grid;gap:clamp(28px,4vw,60px)}@media (min-width:900px){.cs-body{grid-template-columns:1fr 1.35fr}}.cs-body h2{font-size:clamp(1.6rem,2.8vw,2.4rem)}.cs-prose{display:grid;gap:20px;color:var(--text-muted);font-size:17px}.cs-prose h3{color:var(--text);font-size:1.2rem;margin-top:12px}.cs-gallery{display:grid;gap:12px}@media (min-width:760px){.cs-gallery{grid-template-columns:1fr 1fr}}.cs-gallery img,.cs-gallery>div{border-radius:var(--r-sm);overflow:hidden}.cs-next{border-top:1px solid var(--line)}.stepper__tabs{display:flex;flex-wrap:wrap;gap:8px;margin-top:40px}.stepper__tab{border:1px solid var(--line);background:transparent;color:var(--text-muted);padding:12px 20px;border-radius:var(--r-pill);cursor:pointer;font:500 13px/1 var(--display);letter-spacing:.02em;transition:all .28s}.stepper__tab:hover{border-color:var(--ink);color:var(--text)}.stepper__tab[aria-selected="true"]{background:var(--ink);border-color:var(--ink);color:var(--on-ink)}.stepper__tab[aria-selected="true"]::before{content:"";width:7px;height:7px;background:var(--signal);display:inline-block;margin-right:9px;vertical-align:middle}.stepper__rail{margin-top:34px;overflow:hidden}.stepper__track{display:flex;gap:24px;will-change:transform}.step{flex:none;width:100%;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-md);padding:clamp(28px,4vw,52px);display:grid;gap:30px}@media (min-width:860px){.step{grid-template-columns:1.1fr 1fr;align-items:start}}.step__n{font:500 11px/1 var(--display);letter-spacing:.2em;text-transform:uppercase;color:var(--text-faint);display:flex;align-items:center;gap:10px}.step__n::before{content:"";width:16px;height:5px;background:var(--signal)}.step h3{font-size:clamp(1.5rem,2.6vw,2.1rem);margin-top:16px}.step p{color:var(--text-muted);margin-top:16px}.step ul{list-style:none;margin:0;padding:0;display:grid;gap:12px}.step li{display:flex;gap:12px;align-items:flex-start;font-size:15.5px}.step li svg{flex:none;width:20px;height:20px;color:var(--text);margin-top:1px}.stepper__nav{display:flex;align-items:center;gap:12px;margin-top:26px}.stepper__nav button{width:46px;height:46px;border-radius:50%;cursor:pointer;border:1px solid var(--line-strong);background:transparent;color:var(--text);display:grid;place-items:center;transition:all .25s}.stepper__nav button:hover:not(:disabled){background:var(--signal);border-color:var(--signal);color:var(--signal-ink)}.stepper__nav button:disabled{opacity:.28;cursor:not-allowed}.stepper__count{font:500 12px/1 var(--display);color:var(--text-faint);letter-spacing:.14em}.faq{border-top:1px solid var(--line);margin-top:48px}.faq__item{border-bottom:1px solid var(--line)}.faq__q{width:100%;background:none;border:0;cursor:pointer;display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding:26px 0;text-align:left;color:inherit;font-family:var(--display);font-weight:500;font-size:clamp(1.05rem,1.7vw,1.3rem);letter-spacing:-.025em}.faq__q:hover .faq__icon{background:var(--signal)}.faq__icon{flex:none;width:30px;height:30px;position:relative;margin-top:1px;border-radius:50%;background:transparent;border:1px solid var(--line-strong);transition:background-color .3s,border-color .3s}.faq__q:hover .faq__icon{border-color:var(--signal)}.faq__icon::before,.faq__icon::after{content:"";position:absolute;top:50%;left:50%;width:11px;height:1.5px;background:var(--ink);transform:translate(-50%,-50%);transition:transform .35s cubic-bezier(.22,1,.36,1)}.faq__icon::after{transform:translate(-50%,-50%) rotate(90deg)}.faq__q[aria-expanded="true"] .faq__icon{background:var(--signal);border-color:var(--signal)}.faq__q[aria-expanded="true"] .faq__icon::after{transform:translate(-50%,-50%) rotate(0deg)}.faq__a{display:grid;grid-template-rows:0fr;transition:grid-template-rows .42s cubic-bezier(.22,1,.36,1),opacity .3s;opacity:0}.faq__a>div{overflow:hidden}.faq__a p{padding-bottom:28px;color:var(--text-muted);max-width:72ch}.faq__item.is-open .faq__a{grid-template-rows:1fr;opacity:1}.posts{display:grid;gap:12px;margin-top:52px}@media (min-width:760px){.posts{grid-template-columns:repeat(2,1fr)}}@media (min-width:1080px){.posts{grid-template-columns:repeat(3,1fr)}}.post{display:flex;flex-direction:column;text-decoration:none;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;transition:transform .35s cubic-bezier(.22,1,.36,1),border-color .35s}.post:hover{transform:translateY(-5px);border-color:var(--ink)}.post__art{aspect-ratio:16/10;position:relative;overflow:hidden;background:var(--ink)}.post__art img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.22,1,.36,1)}.post:hover .post__art img{transform:scale(1.05)}.post__body{padding:22px;display:grid;gap:10px}.post__cat{font:500 10px/1 var(--display);letter-spacing:.2em;text-transform:uppercase;color:var(--text);display:inline-flex;align-items:center;gap:8px}.post__cat::before{content:"";width:14px;height:4px;background:var(--signal)}.post h3{font-size:1.15rem;line-height:1.18}.post p{font-size:14.5px;color:var(--text-muted)}.post__meta{margin-top:auto;padding:0 22px 20px;font-size:12.5px;color:var(--text-faint)}.article{padding-block:clamp(104px,11.5vw,156px) var(--section)}.article__head{max-width:820px}.article h1{font-size:clamp(2.2rem,5vw,4rem);margin-top:18px}.article__meta{display:flex;flex-wrap:wrap;gap:18px;margin-top:26px;font-size:14px;color:var(--text-faint)}.article__hero{margin:clamp(40px,5vw,64px) 0 0}.article__hero img{width:100%;border-radius:var(--r-sm);aspect-ratio:21/9;object-fit:cover}.article__hero figcaption{margin-top:12px;font-size:12.5px;color:var(--text-faint)}.prose{max-width:var(--maxw-text);margin-top:44px;font-size:17.5px;line-height:1.7;color:#33332F}.prose>*+*{margin-top:22px}.prose h2{font-size:clamp(1.5rem,2.6vw,2.05rem);margin-top:52px;color:var(--text)}.prose h3{font-size:clamp(1.18rem,1.8vw,1.4rem);margin-top:36px;color:var(--text)}.prose ul,.prose ol{padding-left:22px;display:grid;gap:10px}.prose li::marker{color:var(--text-faint)}.prose a{color:var(--text);text-decoration:none;background-image:linear-gradient(var(--signal),var(--signal));background-size:100% 3px;background-position:0 100%;background-repeat:no-repeat;padding-bottom:1px;transition:background-size .3s}.prose a:hover{background-size:100% 100%}.prose blockquote{margin:34px 0;padding:24px 28px;background:var(--bone-2);border-left:4px solid var(--signal);font-size:1.05em;color:var(--text)}.prose table{width:100%;border-collapse:collapse;font-size:15.5px}.prose th,.prose td{text-align:left;padding:13px 14px;border-bottom:1px solid var(--line);vertical-align:top}.prose th{font-family:var(--display);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--text-faint)}.callout{margin:36px 0;padding:26px 28px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--paper)}.callout b{display:block;font-family:var(--display);font-weight:500;font-size:1.05rem;margin-bottom:8px}.callout b::before{content:"";display:inline-block;width:14px;height:4px;background:var(--signal);margin-right:10px;vertical-align:middle}.tiers{display:grid;gap:12px;margin-top:52px}@media (min-width:900px){.tiers{grid-template-columns:repeat(3,1fr)}}.tier{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-md);padding:clamp(26px,3vw,40px);display:flex;flex-direction:column;gap:16px;transition:border-color .3s}.tier:hover{border-color:var(--ink)}.tier--featured{background:var(--ink);color:var(--on-ink);border-color:var(--ink);position:relative}.tier--featured h3{color:var(--on-ink)}.tier--featured p,.tier--featured li{color:var(--on-ink-muted)}.tier__flag{position:absolute;top:-12px;left:clamp(26px,3vw,40px);background:var(--signal);color:var(--signal-ink);font:500 10px/1 var(--display);letter-spacing:.18em;text-transform:uppercase;padding:8px 12px;border-radius:var(--r-xs)}.tier__price{font-family:var(--display);font-weight:500;font-size:clamp(2rem,3.4vw,2.7rem);letter-spacing:-.04em}.tier__price small{font-family:var(--display);font-size:13px;font-weight:400;color:var(--text-faint);letter-spacing:0;display:block;margin-bottom:6px;text-transform:uppercase}.tier--featured .tier__price small{color:var(--on-ink-muted)}.tier ul{list-style:none;margin:8px 0 auto;padding:0;display:grid;gap:11px}.tier li{display:flex;gap:12px;font-size:15px;color:var(--text-muted)}.tier li::before{content:"";margin-top:.58em;width:12px;height:3px;background:var(--signal);flex:none}.footer{background:var(--ink);color:var(--on-ink);padding-block:clamp(64px,8vw,110px) 40px}.footer__grid{display:grid;gap:44px}@media (min-width:860px){.footer__grid{grid-template-columns:1.5fr 1fr 1fr 1fr}}.footer h4{font:500 11px/1 var(--display);letter-spacing:.2em;text-transform:uppercase;color:var(--on-ink-muted);margin-bottom:20px}.footer ul{list-style:none;margin:0;padding:0;display:grid;gap:11px}.footer a{text-decoration:none;color:var(--on-ink-muted);font-size:15px;transition:color .2s}.footer a:hover{color:var(--signal)}.footer__cta{font-family:var(--display);font-weight:500;font-size:clamp(1.5rem,2.8vw,2.2rem);letter-spacing:-.04em;color:var(--on-ink);text-decoration:none;background-image:linear-gradient(var(--signal),var(--signal));background-size:0% 3px;background-position:0 100%;background-repeat:no-repeat;transition:background-size .4s cubic-bezier(.22,1,.36,1);padding-bottom:4px}.footer__cta:hover{background-size:100% 3px;color:var(--on-ink)}.footer__base{margin-top:56px;padding-top:26px;border-top:1px solid var(--line-ink);display:flex;flex-wrap:wrap;gap:14px;justify-content:space-between;font-size:13px;color:var(--on-ink-muted)}.grain::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;opacity:.26;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='.42'/%3E%3C/svg%3E")}.rule{height:1px;background:var(--line);border:0;margin:0}:is(.section--ink,.journey,.radar) .rule{background:var(--line-ink)}.stack-sm>*+*{margin-top:14px}.stack-md>*+*{margin-top:24px}.stack-lg>*+*{margin-top:40px}.center{text-align:center}.center .lede,.center .eyebrow{margin-inline:auto}.split{display:grid;gap:clamp(28px,4vw,64px)}@media (min-width:900px){.split{grid-template-columns:1fr 1fr;align-items:center}.split--wide-left{grid-template-columns:1.25fr 1fr}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.no-scroll{overflow:hidden}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero__scroll i::after{animation:none}*{transition-duration:.01ms !important}.tile__body{opacity:1;transform:none}.tile__veil{opacity:1}}.brand__mark .ring{transform-origin:100px 100px;transition:transform .9s cubic-bezier(.22,1,.36,1)}.brand:hover .ring-1{transform:rotate(45deg)}.brand:hover .ring-2{transform:rotate(-40deg)}.brand:hover .ring-3{transform:rotate(35deg)}.brand:hover .ring-4{transform:rotate(-30deg)}.brand__mark .ring-dot{transition:fill .3s}.brand:hover .ring-dot{fill:var(--signal)}.radar__node.is-lit em{width:18px;background:rgba(199,255,61,.6)}.radar__node.is-lit span{opacity:.72;transform:translateX(0)}.cs-fullshot{margin:0;border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;background:var(--ink)}.cs-fullshot img{width:100%;height:auto;display:block}.cs-fullshot>div{max-height:70vh;overflow-y:auto;overscroll-behavior:contain}.cs-fullshot figcaption{padding:14px 18px;font:500 11px/1 var(--display);letter-spacing:.16em;text-transform:uppercase;color:var(--text-faint);border-top:1px solid var(--line);background:var(--paper)}.tier__price{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}.tier__price small{flex-basis:100%}.tier__per{font-size:15px;font-weight:400;color:var(--text-faint);letter-spacing:0}.tier--featured .tier__per{color:var(--on-ink-muted)}.boot{position:fixed;inset:0;z-index:300;background:var(--ink);display:grid;place-items:center;will-change:transform,opacity}.boot__mark{width:clamp(88px,13vw,150px);height:auto;color:var(--on-ink)}.boot__mark .ring{transform-origin:100px 100px}.boot__word{margin-top:22px;text-align:center;font:500 10px/1 var(--display);letter-spacing:.34em;text-transform:uppercase;color:var(--on-ink-muted);opacity:0}html.booting{overflow:hidden}html.booted .boot{display:none}.no-js .boot,html.no-js .boot{display:none}html:not(.booting):not(.booted) .boot{display:none}@media (prefers-reduced-motion:reduce){.boot{display:none}}[data-presence]{will-change:opacity,transform}.index-list{margin-top:48px;border-top:1px solid var(--line)}.idx{display:grid;grid-template-columns:auto auto 1fr auto;gap:20px;align-items:center;padding:22px 0;border-bottom:1px solid var(--line);text-decoration:none;position:relative;transition:opacity .35s,padding-left .4s cubic-bezier(.22,1,.36,1)}.idx::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--signal);transform:scaleX(0);transform-origin:left;transition:transform .45s cubic-bezier(.22,1,.36,1)}.index-list:hover .idx{opacity:.42}.index-list .idx:hover{opacity:1;padding-left:14px}.idx:hover::after{transform:scaleX(1)}.idx__n{font:500 11px/1.4 var(--display);letter-spacing:.16em;color:var(--text-faint)}.idx__t{font-family:var(--display);font-weight:500;font-size:clamp(1.05rem,1.9vw,1.45rem);letter-spacing:-.03em;line-height:1.18}.idx__m{font:500 10px/1.4 var(--display);letter-spacing:.18em;text-transform:uppercase;color:var(--text-faint);white-space:nowrap}.idx__x{display:block;font-size:14.5px;color:var(--text-muted);margin-top:8px;max-width:74ch}@media (max-width:640px){.idx{grid-template-columns:auto 1fr}.idx__m{grid-column:2}}.idx__thumb{display:block;width:92px;flex:none;overflow:hidden;border-radius:var(--r-xs);background:var(--bone-3);aspect-ratio:16/10}.idx__thumb img{width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.05);opacity:.55;transition:filter .45s,opacity .45s,transform .6s cubic-bezier(.22,1,.36,1)}.idx:hover .idx__thumb img{filter:grayscale(0);opacity:1;transform:scale(1.06)}@media (max-width:760px){.idx{grid-template-columns:auto 1fr}.idx__thumb{display:none}.idx__m{grid-column:2}}.reach{padding-bottom:clamp(48px,6vw,80px);margin-bottom:clamp(48px,6vw,80px);border-bottom:1px solid var(--line-ink)}p.reach__eyebrow{font:500 11px/1 var(--display);letter-spacing:.2em;text-transform:uppercase;color:var(--faint-ink);margin:0}a.reach__mail{display:inline-block;margin-top:22px;text-decoration:none;font-family:var(--display);font-weight:500;letter-spacing:-.035em;line-height:.96;font-size:clamp(2rem,6.6vw,5.1rem);color:var(--on-ink);background-image:linear-gradient(var(--signal),var(--signal));background-repeat:no-repeat;background-position:0 100%;background-size:0 3px;transition:background-size .5s cubic-bezier(.22,1,.36,1),color .3s}a.reach__mail:hover,a.reach__mail:focus-visible{background-size:100% 3px;color:var(--signal)}p.reach__sub{margin-top:24px;max-width:56ch;color:var(--on-ink-muted);font-size:clamp(15px,1.5vw,17px)}.reach__alt{display:flex;flex-wrap:wrap;align-items:center;gap:14px 28px;margin-top:30px}a.reach__wa{display:inline-flex;align-items:center;gap:10px;text-decoration:none;padding:12px 20px;border:1px solid var(--line-ink);border-radius:var(--r-pill);font-size:15px;color:var(--on-ink);transition:border-color .25s,background .25s,color .25s}a.reach__wa::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--signal)}a.reach__wa:hover{background:var(--signal);border-color:var(--signal);color:var(--signal-ink)}a.reach__wa:hover::before{background:var(--signal-ink)}.reach__toggle{appearance:none;background:none;border:0;padding:4px 0;cursor:pointer;font:400 15px/1.4 var(--body);color:var(--faint-ink);text-align:left}.reach__toggle span{color:var(--on-ink);border-bottom:1px solid var(--line-ink);padding-bottom:2px;transition:border-color .25s,color .25s}.reach__toggle:hover span{color:var(--signal);border-color:var(--signal)}.reach__toggle[aria-expanded="true"] span{color:var(--signal);border-color:var(--signal)}.reach__form{margin-top:32px;max-width:620px;display:grid;gap:18px}.reach__form[data-collapsed]{display:none}.reach__row{display:grid;gap:18px}@media (min-width:620px){.reach__row{grid-template-columns:1fr 1fr}}.reach__field{display:grid;gap:8px;font-size:13px;letter-spacing:.04em;text-transform:uppercase;color:var(--faint-ink)}.reach__field input,.reach__field textarea{font:400 16px/1.5 var(--body);color:var(--on-ink);background:var(--ink-2);border:1px solid var(--line-ink);border-radius:var(--r-sm);padding:13px 15px;width:100%;resize:vertical;transition:border-color .2s,background .2s}.reach__field input:focus,.reach__field textarea:focus{border-color:var(--signal);background:var(--ink-3)}.reach__check{display:inline-flex;align-items:center;gap:12px;cursor:pointer;font-size:15px;color:var(--on-ink-muted)}.reach__check input{width:18px;height:18px;accent-color:var(--signal);flex:none}.reach__check:hover span{color:var(--on-ink)}.reach__site[hidden]{display:none}.reach__send{justify-content:center}p.reach__note{font-size:13px;color:var(--faint-ink);margin:0}.reach__hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.gauges{display:grid;gap:1px;background:var(--line-ink);border:1px solid var(--line-ink);border-radius:var(--r-md);overflow:hidden}@media (min-width:640px){.gauges{grid-template-columns:repeat(2,1fr)}}@media (min-width:1000px){.gauges{grid-template-columns:repeat(4,1fr)}}.gauge{position:relative;background:var(--ink-2);padding:clamp(26px,2.6vw,34px);display:grid;align-content:start;gap:0;overflow:hidden;transition:background .4s cubic-bezier(.22,1,.36,1)}.gauge::after{content:"";position:absolute;inset:auto 0 0 0;height:2px;background:var(--signal);transform:scaleX(0);transform-origin:0 50%;transition:transform .55s cubic-bezier(.22,1,.36,1)}.gauge:hover,.gauge:focus-within{background:var(--ink-3)}.gauge:hover::after,.gauge:focus-within::after{transform:scaleX(1)}.gauge__viz{position:relative;height:76px;margin-bottom:22px}.gauge__viz svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.gauge__track{fill:none;stroke:var(--line-ink);stroke-width:2}.gauge__live{fill:none;stroke:var(--signal);stroke-width:2;stroke-linecap:round}.gauge__dot{fill:var(--signal)}.gauge__ghost{fill:rgba(244,243,239,.16)}p.gauge__n{font-family:var(--display);font-weight:500;font-size:clamp(2.4rem,4vw,3.4rem);letter-spacing:-.045em;line-height:.9;color:var(--on-ink);font-variant-numeric:tabular-nums}p.gauge__n u{text-decoration:none;font-size:.42em;letter-spacing:-.01em;margin-left:.18em;color:var(--faint-ink);vertical-align:baseline}p.gauge__label{margin-top:14px;font-size:15px;line-height:1.45;color:var(--on-ink-muted)}p.gauge__more{margin-top:12px;font-size:13.5px;line-height:1.5;color:var(--faint-ink);max-height:0;opacity:0;overflow:hidden;transition:max-height .5s cubic-bezier(.22,1,.36,1),opacity .35s,margin-top .5s}.gauge:hover .gauge__more,.gauge:focus-within p.gauge__more{max-height:9em;opacity:1}@media (hover:none){p.gauge__more{max-height:9em;opacity:1}}.radar__panel{touch-action:pan-y}.radar__pane{transition:opacity .45s ease,transform .45s cubic-bezier(.22,1,.36,1)}.radar__hold{display:inline-flex;align-items:center;gap:10px;margin-top:26px;appearance:none;background:none;cursor:pointer;border:1px solid var(--line-ink);border-radius:var(--r-pill);padding:9px 16px;font:400 13px/1 var(--body);color:var(--on-ink-muted);transition:border-color .25s,color .25s,background .25s}.radar__hold:hover{border-color:var(--signal);color:var(--on-ink)}.radar__hold[aria-pressed="true"]{border-color:var(--signal);color:var(--signal-ink);background:var(--signal)}.radar__hold i{width:7px;height:7px;border-radius:50%;background:var(--signal);flex:none;animation:radarPulse 2.4s infinite ease-in-out}.radar__hold[aria-pressed="true"] i{background:var(--signal-ink);animation:none}@keyframes radarPulse{0%,100%{opacity:.3}50%{opacity:1}}.radar__index{display:flex;align-items:center;gap:8px;margin-top:30px;font:500 11px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--faint-ink)}.radar__index>i{flex:1 1 0;height:2px;background:var(--line-ink);border-radius:2px;position:relative;overflow:hidden;cursor:pointer;min-width:14px}.radar__index>i::after{content:"";position:absolute;inset:0;background:var(--signal);transform:scaleX(0);transform-origin:0 50%}.radar__index>i.is-done::after{transform:scaleX(1)}.radar__index>i.is-live::after{transform:scaleX(var(--p,0))}.radar__index>span:last-child{font-variant-numeric:tabular-nums}.radar__swipe{display:none}@media (max-width:1039px){.radar__swipe{display:block;margin-top:14px;font-size:13px;color:var(--faint-ink)}}@media (prefers-reduced-motion:reduce){.radar__hold i{animation:none}}.contact-direct a.reach__mail{color:var(--ink)}.contact-direct a.reach__mail:hover,.contact-direct a.reach__mail:focus-visible{color:var(--ink);background-size:100% 3px}.contact-direct a.reach__wa{border-color:var(--line-strong);color:var(--ink)}.contact-direct a.reach__wa:hover{background:var(--signal);border-color:var(--signal);color:var(--signal-ink)}.contact-direct .reach__toggle{color:var(--text-muted)}.contact-direct .reach__toggle span{color:var(--ink);border-color:var(--line-strong)}.contact-direct .reach__field{color:var(--text-muted)}.contact-direct .reach__field input,.contact-direct .reach__field textarea{background:var(--paper);color:var(--ink);border-color:var(--line)}.contact-direct .reach__field input:focus,.contact-direct .reach__field textarea:focus{border-color:var(--ink);background:var(--paper)}.contact-direct .reach__check{color:var(--text-muted)}.contact-direct p.reach__note{color:var(--text-faint)}.answer{margin:28px 0 34px;padding:24px 26px;border-left:3px solid var(--signal);background:var(--bone-2);border-radius:0 var(--r-sm) var(--r-sm) 0;font-size:clamp(16.5px,1.6vw,18.5px);line-height:1.58;color:var(--text)}.answer p{margin:0;color:inherit;font-size:inherit}.answer p+p{margin-top:12px}.answer strong{font-weight:500}:is(.section--ink,.hero,.journey,.cs-hero,.footer,.radar) .answer{background:var(--ink-2);color:var(--on-ink)}:is(.section--ink,.hero,.journey,.cs-hero,.footer,.radar) .answer p{color:var(--on-ink)}table{width:100%;border-collapse:collapse;font-size:15.5px}th,td{text-align:left;padding:13px 14px;border-bottom:1px solid var(--line);vertical-align:top}th{font-family:var(--display);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--text-faint);border-bottom-color:var(--line-strong)}td strong{font-weight:500}tbody tr:last-child td{border-bottom:0}.table-wrap{overflow-x:auto;margin:32px 0;-webkit-overflow-scrolling:touch}.table-wrap table{min-width:620px}:is(.section--ink,.hero,.journey,.cs-hero,.footer,.radar):is(th,td){border-bottom-color:var(--line-ink);color:var(--on-ink-muted)}:is(.section--ink,.hero,.journey,.cs-hero,.footer,.radar) th{color:var(--faint-ink);border-bottom-color:rgba(244,243,239,.28)}:is(.section--ink,.hero,.journey,.cs-hero,.footer,.radar) td strong{color:var(--on-ink)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.faq__h{margin:0;font:inherit}.faq__h .faq__q{font-family:var(--display)}.radar__stage{touch-action:pan-y;cursor:crosshair}.radar__canvas{pointer-events:none}.reach__sent{font-family:var(--display);font-weight:500;font-size:clamp(1.3rem,2.4vw,1.9rem);letter-spacing:-.02em;color:var(--signal);margin:0 0 12px}
.contact-direct .reach__sent{color:var(--ink)}
/* The form is an equal alternative to email and WhatsApp, not a footnote.
   It reuses the existing .reach__wa pill so nothing new enters the design
   language, it just stops being the quietest of three options. */
.reach__toggle{display:inline-flex;align-items:center;gap:10px;padding:12px 20px;border:1px solid var(--line-ink);border-radius:var(--r-pill);font:400 15px/1.4 var(--body);color:var(--on-ink);background:none;cursor:pointer;text-align:left;transition:border-color .25s,background .25s,color .25s}
.reach__toggle::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--signal);flex:none}
.reach__toggle span{color:inherit;border:0;padding:0}
.reach__toggle:hover{background:var(--signal);border-color:var(--signal);color:var(--signal-ink)}
.reach__toggle:hover::before{background:var(--signal-ink)}
.reach__toggle:hover span{color:inherit}
.reach__toggle[aria-expanded="true"]{background:var(--signal);border-color:var(--signal);color:var(--signal-ink)}
.reach__toggle[aria-expanded="true"]::before{background:var(--signal-ink)}
.reach__toggle[aria-expanded="true"] span{color:inherit}
:is(.section--ink,.hero,.journey,.cs-hero,.footer) .reach__toggle{border-color:var(--line-ink);color:var(--on-ink)}
.reach__toggle{border-color:var(--line-strong);color:var(--ink)}
/* Keep-reading grid: three related articles rather than two, so link
   equity reaches the sector guides instead of pooling in five hub posts.
   Same rhythm as .split, just a third column above 900px. */
.keep-grid{display:grid;gap:clamp(28px,4vw,52px);grid-template-columns:1fr;align-items:start}
@media (min-width:700px){.keep-grid{grid-template-columns:1fr 1fr}}
@media (min-width:1040px){.keep-grid{grid-template-columns:repeat(3,1fr)}}

/* Mobile-only furniture. Declared hidden at every width first, then turned
   on inside the max-width:759px layer, so if any of it is ever injected on
   a desktop page it stays invisible rather than appearing unstyled. */
.thumbbar,.sprog,.mdiv,.answer__more,.rail-hint,.chapter,.idx-more{display:none}

/* ==========================================================================
   MOBILE EXPERIENCE LAYER
   Everything below is inside @media (max-width:759px). The rest of this
   sheet is written mobile-first with min-width queries, so nothing here can
   reach the desktop layout. The phone gets its own treatment of the same
   design language rather than a narrower copy of the desktop page.

   Why it exists: on a 390px screen the site was 20.7 screens tall and the
   answer block alone ran 804px, a full phone screen of unbroken grey. That
   reads as a document, not as a studio worth hiring.
   ========================================================================== */
@media (max-width:759px){

  .thumbbar{display:grid}
  .sprog,.mdiv{display:block}
  .answer__more{display:inline-flex}
  .rail-hint,.chapter{display:flex}
  .idx-more{display:inline-flex}

  /* ---- reading rhythm ------------------------------------------------ */
  /* Slightly larger body and a touch more air between paragraphs. Long
     measures are what make a phone screen feel like homework. */
  body{font-size:17.5px;line-height:1.64}
  .prose p{margin-bottom:1.15em}
  .lede{font-size:1.06rem;line-height:1.55}

  /* ---- 1. Answer block: progressive disclosure ------------------------
     The answer paragraph is the block Google and the assistants lift, so
     every word stays in the DOM and stays selectable. It is only the
     presentation that changes: the opening reads as a statement, the rest
     is one tap away. Collapsed content is still indexed, which is why this
     is an accordion and not truncated markup. */
  .answer{position:relative;border-radius:0;padding:22px 20px 20px;
    border-left:3px solid var(--signal);background:var(--bone-2)}
  :is(.section--ink,.hero,.journey,.cs-hero,.footer) .answer{background:var(--ink-3)}

  .answer[data-collapsible] .answer__body{position:relative;overflow:hidden;
    max-height:var(--answer-peek,10.6em);
    transition:max-height .55s cubic-bezier(.22,1,.36,1)}
  .answer[data-collapsible][data-open] .answer__body{max-height:var(--answer-full,200em)}

  /* the fade only exists while collapsed, so open text is never dimmed */
  .answer[data-collapsible] .answer__body::after{content:"";position:absolute;
    left:0;right:0;bottom:0;height:5.2em;pointer-events:none;
    background:linear-gradient(to bottom,rgba(233,228,218,0),var(--bone-2) 82%);
    opacity:1;transition:opacity .4s ease}
  .answer[data-collapsible][data-open] .answer__body::after{opacity:0}
  :is(.section--ink,.hero,.journey,.cs-hero,.footer) .answer[data-collapsible] .answer__body::after{
    background:linear-gradient(to bottom,rgba(30,30,30,0),var(--ink-3) 82%)}

  .answer__more{appearance:none;background:none;border:0;padding:14px 0 2px;
    margin-top:2px;display:inline-flex;align-items:center;gap:9px;cursor:pointer;
    font:500 12px/1 var(--display);letter-spacing:.14em;text-transform:uppercase;
    color:var(--text);min-height:44px}
  :is(.section--ink,.hero,.journey,.cs-hero,.footer) .answer__more{color:var(--on-ink)}
  .answer__more i{width:20px;height:20px;flex:none;display:grid;place-items:center;
    border:1px solid var(--line-strong);position:relative;transition:transform .4s cubic-bezier(.22,1,.36,1)}
  :is(.section--ink,.hero,.journey,.cs-hero,.footer) .answer__more i{border-color:var(--line-ink)}
  .answer__more i::before,.answer__more i::after{content:"";position:absolute;
    background:currentColor;transition:opacity .3s ease}
  .answer__more i::before{width:9px;height:1.5px}
  .answer__more i::after{width:1.5px;height:9px}
  .answer[data-open] .answer__more i{transform:rotate(135deg)}
  .answer[data-open] .answer__more i::after{opacity:0}

  /* The boot mark is sized from the viewport on a phone. The shared clamp
     bottomed out at 64px here, about a sixth of a 390px screen, which made
     the opening feel incidental on the device most people arrive on. The
     cap keeps it clear of the edges on the largest handsets, and the
     timeline still peaks at scale 1.12 inside that. */
  .boot__mark{width:min(46vw,200px)}
  .boot__word{margin-top:26px;font-size:11px;letter-spacing:.36em}

  /* ---- 2. Swipe rails --------------------------------------------------
     Card groups stacked vertically are what made the page 20 screens long.
     On a touch screen a horizontal rail is both shorter and more natural:
     the thumb already swipes. Scroll snapping gives it a deliberate,
     app-like feel rather than a loose carousel. */
  .rail{display:grid;grid-auto-flow:column;
    grid-auto-columns:82%;
    gap:14px;overflow-x:auto;overflow-y:hidden;
    scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;
    scroll-padding-inline:var(--gutter);
    padding:2px var(--gutter) 6px;margin-inline:calc(var(--gutter) * -1);
    scrollbar-width:none}
  .rail::-webkit-scrollbar{display:none}
  .rail > *{scroll-snap-align:start;margin:0;min-width:0}
  /* the last card gets breathing room so it can snap fully into view */
  .rail::after{content:"";width:1px}

  .rail-hint{display:flex;align-items:center;gap:10px;margin-top:14px;
    font:500 10.5px/1 var(--display);letter-spacing:.2em;text-transform:uppercase;
    color:var(--text-faint)}
  :is(.section--ink,.hero,.journey,.cs-hero,.footer) .rail-hint{color:var(--on-ink-muted)}
  .rail-hint b{font-weight:500;color:var(--text)}
  :is(.section--ink,.hero,.journey,.cs-hero,.footer) .rail-hint b{color:var(--on-ink)}
  .rail-dots{display:flex;gap:5px;margin-left:auto}
  .rail-dots span{width:5px;height:5px;background:var(--line-strong);
    transition:background .3s ease,width .3s ease}
  :is(.section--ink,.hero,.journey,.cs-hero,.footer) .rail-dots span{background:var(--line-ink)}
  .rail-dots span[data-on]{background:var(--signal);width:14px}

  /* rails inherit the card look but square off, so the phone reads sharper */
  .rail .tier,.rail .post,.rail .idx{border-radius:0}

  /* ---- 3. Chapter markers ---------------------------------------------
     A long scroll with no structure feels endless. A small numbered marker
     at each section turns it into a route with a position in it. */
  .chapter{display:flex;align-items:center;gap:12px;margin-bottom:26px}
  .chapter__n{font:500 10.5px/1 var(--display);letter-spacing:.2em;
    color:var(--signal-deep,var(--text));background:var(--signal);
    color:var(--signal-ink);padding:6px 9px}
  .chapter__rule{height:1px;background:var(--line);flex:1}
  :is(.section--ink,.hero,.journey,.cs-hero,.footer) .chapter__rule{background:var(--line-ink)}

  /* ---- 4. Thumb bar ----------------------------------------------------
     Fixed to the bottom because that is where the thumb already rests. It
     stays out of the way until the hero has gone, and gets out of the way
     again at the footer where the real form lives, so it never competes
     with the thing it is pointing at. */
  .thumbbar{position:fixed;left:0;right:0;bottom:0;z-index:120;
    display:grid;grid-auto-flow:column;grid-auto-columns:1fr;
    background:rgba(10,10,10,.92);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
    border-top:1px solid var(--line-ink);
    padding-bottom:env(safe-area-inset-bottom,0px);
    transform:translateY(110%);transition:transform .45s cubic-bezier(.22,1,.36,1);
    will-change:transform}
  .thumbbar[data-on]{transform:translateY(0)}
  .thumbbar a{display:grid;place-items:center;gap:5px;padding:11px 6px 12px;
    text-decoration:none;color:var(--on-ink);min-height:56px;
    font:500 10px/1 var(--display);letter-spacing:.14em;text-transform:uppercase;
    border-right:1px solid var(--line-ink);-webkit-tap-highlight-color:transparent}
  .thumbbar a:last-child{border-right:0}
  .thumbbar a svg{width:17px;height:17px;display:block}
  .thumbbar a.is-key{background:var(--signal);color:var(--signal-ink)}
  .thumbbar a:active{background:rgba(199,255,61,.16)}
  .thumbbar a.is-key:active{background:#b6ee2c}
  /* keep the footer clear of the bar */
  body[data-thumbbar] .footer{padding-bottom:84px}

  /* ---- 5. Scroll progress ---------------------------------------------- */
  .sprog{position:fixed;top:0;left:0;height:2px;z-index:130;background:var(--signal);
    width:0;transition:width .12s linear;pointer-events:none}

  /* ---- 6. Section divider ----------------------------------------------
     A quiet abstract rule between zones, echoing the radar motif from the
     hero. It is a divider, not a decoration: it marks that one idea ended
     and another began, which is the thing a long phone scroll loses. */
  .mdiv{display:block;height:56px;position:relative;overflow:hidden}
  .mdiv::before{content:"";position:absolute;left:var(--gutter);right:var(--gutter);
    top:50%;height:1px;background:var(--line)}
  :is(.section--ink,.footer) + .mdiv::before,.mdiv[data-on-ink]::before{background:var(--line-ink)}
  .mdiv i{position:absolute;top:50%;left:var(--gutter);width:7px;height:7px;
    margin-top:-3px;background:var(--signal);
    transform:translateX(0);transition:transform 1.1s cubic-bezier(.22,1,.36,1)}
  .mdiv[data-seen] i{transform:translateX(var(--mdiv-travel,140px))}

  /* ---- 7. Touch targets and tap feedback ------------------------------ */
  .btn{min-height:48px;display:inline-flex;align-items:center;justify-content:center}
  .faq__q{min-height:56px}
  .nav-toggle{min-width:44px;min-height:44px}
  a,button{-webkit-tap-highlight-color:rgba(199,255,61,.18)}

  /* ---- 8. Headline sizing ---------------------------------------------
     Display type set for a phone rather than scaled down from a monitor. */
  .display-xl{font-size:clamp(2.5rem,10.5vw,3.4rem);line-height:1.0;letter-spacing:-.035em}
  .display-lg{font-size:clamp(2.1rem,8.6vw,2.9rem);line-height:1.02}
  .display-md{font-size:clamp(1.8rem,7.2vw,2.4rem);line-height:1.05}

  /* ---- 9. Tables: stop the horizontal shove ----------------------------
     Wide comparison tables on a phone are a pinch-and-drag chore. Each row
     becomes a small stacked record with its column name as a label. */
  .prose table[data-stack]{border:0}
  .prose table[data-stack] thead{position:absolute;width:1px;height:1px;
    overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .prose table[data-stack] tr{display:block;border:1px solid var(--line);
    padding:14px 16px;margin-bottom:12px;background:var(--paper)}
  :is(.section--ink,.footer) .prose table[data-stack] tr{background:var(--ink-2);border-color:var(--line-ink)}
  .prose table[data-stack] td{display:block;border:0;padding:0 0 10px}
  .prose table[data-stack] td:last-child{padding-bottom:0}
  .prose table[data-stack] td::before{content:attr(data-label);display:block;
    font:500 10px/1 var(--display);letter-spacing:.18em;text-transform:uppercase;
    color:var(--text-faint);margin-bottom:5px}
  :is(.section--ink,.footer) .prose table[data-stack] td::before{color:var(--on-ink-muted)}

  /* the journey cards, swiped rather than stacked */
  .journey--stacked .journey__track{display:block}
  .jrail{display:grid;grid-auto-flow:column;grid-auto-columns:84%;gap:14px;
    overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;
    -webkit-overflow-scrolling:touch;scroll-padding-inline:var(--gutter);padding:2px var(--gutter) 6px;
    margin-inline:calc(var(--gutter) * -1);scrollbar-width:none}
  .jrail::-webkit-scrollbar{display:none}
  .jrail > *{scroll-snap-align:start;margin:0;min-width:0;height:auto}
  /* the desktop card carries a min-height so the horizontal track reads as
     one band. In a rail that becomes a large dead gap under short copy, so
     let the card be as tall as its content and no taller. */
  .jrail .jcard{border-radius:0;min-height:0;height:auto}
  /* tables live outside .prose on some pages, stack them there too */
  table[data-stack]{border:0}
  table[data-stack] thead{position:absolute;width:1px;height:1px;overflow:hidden;
    clip:rect(0 0 0 0);white-space:nowrap}
  table[data-stack] tr{display:block;border:1px solid var(--line);padding:14px 16px;
    margin-bottom:12px;background:var(--paper)}
  :is(.section--ink,.footer) table[data-stack] tr{background:var(--ink-2);border-color:var(--line-ink)}
  table[data-stack] td,table[data-stack] th{display:block;border:0;padding:0 0 10px;text-align:left}
  table[data-stack] tr > :last-child{padding-bottom:0}
  table[data-stack] td::before{content:attr(data-label);display:block;
    font:500 10px/1 var(--display);letter-spacing:.18em;text-transform:uppercase;
    color:var(--text-faint);margin-bottom:5px}
  :is(.section--ink,.footer) table[data-stack] td::before{color:var(--on-ink-muted)}

  /* Two-column key/value tables use <th scope=row> and have no thead, so
     they never matched the stacking rule above and got clipped instead.
     Stack the label over the value and they read properly at 390px. */
  /* .table-wrap sets min-width:620px on its table so it can scroll sideways
     on desktop. Once a table is stacked it needs neither the min-width nor
     the scroller, and leaving either in place is what pushed the whole page
     sideways. Only relax it for tables actually stacked. */
  .table-wrap:has(table[data-rowkeys]),
  .table-wrap:has(table[data-stack]){overflow:visible}
  .table-wrap table[data-rowkeys],
  .table-wrap table[data-stack]{min-width:0;width:100%}
  table[data-rowkeys]{border:0;display:block;width:100%}
  table[data-rowkeys] tbody,table[data-rowkeys] tr{display:block}
  table[data-rowkeys] tr{border:1px solid var(--line);border-bottom:0;padding:14px 16px}
  table[data-rowkeys] tr:last-child{border-bottom:1px solid var(--line)}
  :is(.section--ink,.footer) table[data-rowkeys] tr{border-color:var(--line-ink)}
  table[data-rowkeys] th[scope=row]{display:block;border:0;padding:0 0 6px;text-align:left;
    font:500 10px/1.3 var(--display);letter-spacing:.18em;text-transform:uppercase;
    color:var(--text-faint);white-space:normal}
  :is(.section--ink,.footer) table[data-rowkeys] th[scope=row]{color:var(--on-ink-muted)}
  table[data-rowkeys] td{display:block;border:0;padding:0;white-space:normal}

  /* ---- 10. Mobile nav: thumb-reachable --------------------------------
     Links sit low in the panel so they land under the thumb rather than
     at the top of a 6-inch screen where nobody can reach them. */
  .mobile-nav{display:grid;align-content:end;padding-bottom:calc(34px + env(safe-area-inset-bottom,0px))}
  .mobile-nav a{font-size:clamp(1.9rem,8vw,2.5rem);padding:9px 0}
}

/* Motion off means motion off, including everything added above. */
@media (prefers-reduced-motion:reduce){
  .answer[data-collapsible] .answer__body,
  .thumbbar,.mdiv i,.answer__more i{transition:none}
}

/* Hero headline: three words, one idea each.
   Set larger and tighter than the general display scale because there are
   only three words carrying the whole screen, and a word this short reads as
   weak if it is set at paragraph-of-text size. The mask on .line is what the
   entrance and the scrubbed exit both slide against, so it stays. */
.hero__h1{font-size:clamp(3.4rem,12vw,9rem);line-height:.92;letter-spacing:-.045em;text-wrap:nowrap}
.hero__h1 .line{overflow:hidden;display:block}
.hero__h1 .line > span{display:block;will-change:transform}
@media (max-width:759px){
  .hero__h1{font-size:clamp(3rem,17vw,5.4rem);line-height:.94;letter-spacing:-.04em}
}

/* Split characters. inline-block so each one can be transformed on its own,
   and a transform-origin at the foot so the rotation reads as tipping away
   rather than spinning about the middle. */
.hero__h1 .ch{display:inline-block;will-change:transform;transform-origin:50% 100%}
.rail-hint{display:inline-flex;align-items:center;gap:8px;font-size:13px;letter-spacing:.02em;color:var(--on-ink-muted);padding:7px 13px;border-radius:var(--r-pill);border:1px solid rgba(199,255,61,.34);background:rgba(199,255,61,.07)}.rail-hint b{color:var(--signal);font-weight:500;text-transform:uppercase;letter-spacing:.09em;font-size:11px}.rail-hint i{font-style:normal;color:var(--signal);animation:railNudge 1.5s ease-in-out infinite}@keyframes railNudge{0%,100%{transform:translateX(0);opacity:.65}50%{transform:translateX(5px);opacity:1}}.rail-hint{animation:railGlow 4s ease-in-out infinite}@keyframes railGlow{0%,100%{box-shadow:0 0 0 0 rgba(199,255,61,0)}45%{box-shadow:0 0 16px 0 rgba(199,255,61,.20)}}@media (prefers-reduced-motion:reduce){.rail-hint,.rail-hint i{animation:none}}@media (max-width:759px){.hero{min-height:100svh}.hero__inner{align-self:start;display:flex;flex-direction:column;padding-top:clamp(76px,10vh,100px)}.hero .eyebrow{order:1}.hero__h1{order:2}.hero__actions{order:3;margin-top:clamp(210px,34vh,340px)}.hero__meta{order:4;margin-top:16px}.hero__sub{order:5;margin-top:22px}.hero__scroll{display:none}
/* Chapter markers are a desktop device. On a phone the marker belonging to
   the section BELOW the hero scrolls up over the hero canvas and strands
   itself on top of the animation, because it was never part of the hero and
   so never leaves with it. There is no good place for it at this width. */
.chapter{display:none}}/* Every thin rule that strands itself over the hero canvas on a phone.
   Two separate elements were involved, which is why hiding one was not
   enough: the injected chapter marker, and the journey section's progress
   rail, which sits just under the header and so lands directly on the
   cloud during the finish animation. Both are desktop devices. */
@media (max-width:759px){
.chapter,.chapter__rule,.journey__progress{display:none!important}
}