/* Reframe site v3, 5 November 2026: the AtlasAI site grammar in the Reframe brand (forest, paper, Gilroy and Lato),
   clear glass cards, cinematic plates and After Effects clips. */
@font-face{font-family:"Gilroy";src:url(/assets/fonts/Gilroy-Medium.woff2) format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"Gilroy";src:url(/assets/fonts/Gilroy-Regular.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Lato";src:url(/assets/fonts/Lato-Regular.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Lato";src:url(/assets/fonts/Lato-Bold.woff2) format("woff2");font-weight:700;font-display:swap}
:root{--paper:#f7f6f2;--paper2:#efede6;--ink:#15140f;--ink2:#3b3831;--mute:#6f6a60;--line:rgba(21,20,15,.12);--forest:#244034;--forest2:#162a21;--forest3:#0d1a14;
  --mint:#7fd8ac;--sage:#e3ece6;--gold:#c79a45;--disp:"Gilroy",system-ui,sans-serif;--sans:"Lato",system-ui,sans-serif;--edge:max(24px,calc((100vw - 1280px)/2))}
*{box-sizing:border-box}html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font:17.5px/1.6 var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:inherit}img,video{display:block;max-width:100%}
.w{width:min(1280px,100% - 48px);margin-inline:auto}
::selection{background:#cfe3d6}
/* announcement bar and nav */
.n3-bar{display:block;background:var(--forest3);color:#dfe9e2;text-align:center;font-size:14px;padding:.62rem 1rem;text-decoration:none;position:relative;z-index:7}
.n3-bar b{font-weight:700;color:#fff}.n3-bar span{color:var(--mint);margin-left:.6rem;white-space:nowrap}
.n3{position:absolute;left:0;right:0;z-index:6;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:18px var(--edge);color:#fff}
.n3.solid{position:relative;color:var(--ink);background:var(--paper);border-bottom:1px solid var(--line)}
.n3 .l{display:flex;gap:6px;font-size:15px}.n3 .r{justify-self:end;display:flex;gap:18px;align-items:center;font-size:15px}
.n3 .lg{display:flex;align-items:center;gap:10px;text-decoration:none;font:500 22px var(--disp);letter-spacing:-.01em}
.n3 .lg img{width:30px;height:30px}.n3:not(.solid) .lg img{filter:brightness(0) invert(1)}
.n3 .it{position:relative}.n3 .it>a,.n3 .it>button{all:unset;cursor:pointer;padding:8px 12px;border-radius:999px;opacity:.92;display:inline-flex;align-items:center;gap:6px}
.n3 .it>button::after{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px);opacity:.7}
.n3 .it:hover>a,.n3 .it:hover>button,.n3 .it.open>button{background:rgba(255,255,255,.14)}.n3.solid .it:hover>a,.n3.solid .it:hover>button{background:rgba(21,20,15,.06)}
.n3 .pn{position:absolute;top:calc(100% + 10px);left:-12px;min-width:560px;background:rgba(250,250,247,.97);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);color:var(--ink);border:1px solid rgba(255,255,255,.7);border-radius:18px;box-shadow:0 30px 80px -30px rgba(10,20,15,.45);padding:14px;display:grid;grid-template-columns:1fr 1fr;gap:4px;opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .25s,transform .25s,visibility .25s}
.n3 .it:hover .pn,.n3 .it.open .pn,.n3 .it:focus-within .pn{opacity:1;visibility:visible;transform:none}
.n3 .pn a{display:block;text-decoration:none;padding:12px 14px;border-radius:12px}.n3 .pn a:hover{background:#eef2ee}
.n3 .pn b{display:block;font:600 15px var(--sans)}.n3 .pn span{display:block;font-size:13.5px;color:var(--mute);margin-top:2px;line-height:1.4}
.n3 .pn h5{grid-column:1/-1;margin:4px 14px 2px;font:700 11.5px var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--mute)}
.btn{display:inline-flex;align-items:center;gap:.55rem;background:var(--ink);color:#fff;text-decoration:none;font:700 15px var(--sans);padding:.86rem 1.35rem;border-radius:999px;border:1px solid var(--ink);transition:background .25s,color .25s,transform .25s}
.btn:hover{transform:translateY(-1px)}.btn.lt{background:#fff;color:var(--ink);border-color:#fff}.btn.lt:hover{background:#e5efe8}
.btn.gh{background:transparent;color:inherit;border-color:currentColor}.btn.gh:hover{background:rgba(255,255,255,.12)}
.btn.fo{background:var(--forest);border-color:var(--forest)}.btn.sm{padding:.6rem 1.05rem;font-size:14px}
.btn .ar::after{content:"\2192"}
.lnk{font-weight:700;text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:1px}.lnk::after{content:" \2192"}
.mnu{display:none}.mclose{display:none}
/* hero */
.hero{position:relative;height:100vh;min-height:660px;max-height:1100px;overflow:hidden;background:var(--forest3);color:#fff}
.hero video,.hero .poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 60% 40% at 50% 64%,rgba(6,12,9,.58) 0,rgba(6,12,9,.28) 55%,rgba(6,12,9,0) 100%),linear-gradient(180deg,rgba(6,12,9,.72) 0,rgba(6,12,9,.2) 18%,rgba(6,12,9,.08) 40%,rgba(6,12,9,.55) 70%,rgba(6,12,9,.9) 100%)}
.hero .copy{position:absolute;z-index:2;left:50%;transform:translateX(-50%);bottom:150px;width:min(1080px,90vw);text-align:center}
.eyebrow{font:700 12.5px var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--mute);margin:0 0 18px;display:inline-flex;align-items:center;gap:12px}
.eyebrow::before{content:"";width:28px;height:1px;background:currentColor;opacity:.6}
.hero .eyebrow{color:var(--mint)}
.hero h1{font:500 clamp(2.9rem,6vw,5.6rem)/1.02 var(--disp);letter-spacing:-.035em;margin:0;text-wrap:balance}
.hero .sub{max-width:760px;margin:24px auto 32px;font-size:21px;line-height:1.5;color:rgba(255,255,255,.86)}
.hero .acts{display:flex;justify-content:center;gap:14px;flex-wrap:wrap}
.hero .trust{position:absolute;z-index:2;left:0;right:0;bottom:34px;text-align:center}
.hero .trust small{display:block;font:700 11.5px var(--sans);letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.6);margin-bottom:14px}
.works{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}
.works span{font:600 14px var(--sans);padding:7px 14px;border-radius:999px;border:1px solid rgba(255,255,255,.26);background:rgba(255,255,255,.06);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff}
.hpause{position:absolute;z-index:3;right:var(--edge);bottom:38px;width:42px;height:42px;border-radius:50%;border:1px solid rgba(255,255,255,.25);background:rgba(10,18,14,.45);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);cursor:pointer;display:grid;place-items:center;padding:0}
.hpause span{width:10px;height:12px;border-left:3px solid #fff;border-right:3px solid #fff}.hpause[aria-pressed=true] span{width:0;height:0;border-left:10px solid #fff;border-right:0;border-top:6px solid transparent;border-bottom:6px solid transparent;margin-left:3px}
.hero.sm{height:86vh;min-height:600px}.hero.sm .copy{bottom:96px}
/* sections */
.sec{padding:150px 0}.c{text-align:center}.c .kick{margin-inline:auto}
.h2{font:500 clamp(2.3rem,4.2vw,3.7rem)/1.05 var(--disp);letter-spacing:-.03em;margin:0;text-wrap:balance}
.h3{font:500 clamp(1.5rem,2.2vw,1.9rem)/1.15 var(--disp);letter-spacing:-.02em;margin:0}
.kick{color:var(--ink2);font-size:19px;margin:20px 0 0;max-width:44rem}
.dark{background:var(--forest3);color:#eef3ef}.dark .kick{color:rgba(238,243,239,.78)}.dark .eyebrow{color:var(--mint)}
.forest{background:radial-gradient(1200px 800px at 80% 10%,#2a4a3b 0,#1c3228 60%,#14261d 100%);color:#eef3ef}.forest .kick{color:#cfe0d6}.forest .eyebrow{color:var(--mint)}
.alt{background:var(--paper2)}
/* glass cards */
.gl{position:relative;border-radius:22px;background:linear-gradient(160deg,rgba(255,255,255,.72),rgba(255,255,255,.38));border:1px solid rgba(255,255,255,.85);box-shadow:inset 0 1px 0 rgba(255,255,255,.95),inset 0 -1px 0 rgba(36,64,52,.08),0 1px 2px rgba(20,30,25,.05),0 30px 60px -36px rgba(20,40,30,.35);-webkit-backdrop-filter:blur(18px) saturate(1.2);backdrop-filter:blur(18px) saturate(1.2)}
.dark .gl,.forest .gl{background:linear-gradient(160deg,rgba(255,255,255,.14),rgba(255,255,255,.04));border-color:rgba(255,255,255,.22);box-shadow:inset 0 1px 0 rgba(255,255,255,.3),0 30px 60px -36px rgba(0,0,0,.6)}
/* cards row */
.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:64px}
.cards .gl{padding:34px 32px 36px}.cards .n{font:700 12px var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--mute)}
.dark .cards .n,.forest .cards .n{color:var(--mint)}
.cards h3{font:500 26px/1.15 var(--disp);letter-spacing:-.02em;margin:14px 0 10px}.cards p{margin:0;color:var(--ink2);font-size:16.5px}
.dark .cards p,.forest .cards p{color:rgba(238,243,239,.78)}
.cards .ic{font:500 34px var(--disp);color:var(--forest);margin-bottom:6px}.dark .cards .ic,.forest .cards .ic{color:var(--mint)}
/* plate band: a video behind a section */
.band{position:relative;overflow:hidden;color:#fff;background:var(--forest3)}
.band>video,.band>.poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.band::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(6,12,9,.82),rgba(6,12,9,.55) 45%,rgba(6,12,9,.85));z-index:1}
.band.lt{color:var(--ink);background:#e8ebe8}.band.lt::before{background:linear-gradient(180deg,rgba(247,246,242,.9),rgba(247,246,242,.55) 50%,rgba(247,246,242,.92))}
.band>.w{position:relative;z-index:2}.band .kick{color:rgba(255,255,255,.82)}.band.lt .kick{color:var(--ink2)}.band .eyebrow{color:var(--mint)}.band.lt .eyebrow{color:var(--forest)}
.quote{font:500 clamp(1.9rem,3.4vw,3rem)/1.18 var(--disp);letter-spacing:-.025em;margin:0;max-width:58rem;text-wrap:balance}
.qsrc{margin-top:22px;font-size:15.5px;color:rgba(255,255,255,.72)}.band.lt .qsrc{color:var(--mute)}
/* film */
.fsec{position:relative;height:230vh;background:var(--forest3);color:#fff}
.fsec .fpin{position:sticky;top:0;height:100vh;overflow:hidden}
.fsec .fhead{position:absolute;left:var(--edge);right:var(--edge);top:max(108px,10vh);opacity:var(--hd,0);transform:translateY(calc((1 - var(--hd,0))*24px));max-width:60rem}
.fsec .fhead .kick{color:rgba(255,255,255,.78)}
.fsec .fframe{position:absolute;left:50%;top:0;width:100vw;height:min(calc(100vw*9/16),100vh);border-radius:var(--fr,0);overflow:hidden;background:#000;transform:translate(-50%,var(--fy,0px)) scale(var(--fs,1));transform-origin:50% 0;will-change:transform;box-shadow:0 40px 90px -30px rgba(0,0,0,.7)}
.fsec .fv{width:100%;height:100%;object-fit:cover}
.fsound{all:unset;cursor:pointer;position:absolute;left:24px;top:24px;display:inline-flex;align-items:center;gap:12px;background:rgba(255,255,255,.95);color:var(--ink);font:700 15px var(--sans);padding:10px 18px 10px 10px;border-radius:999px;box-shadow:0 8px 24px rgba(0,0,0,.25)}
.fsound .pi{width:36px;height:36px;border-radius:50%;background:var(--forest);position:relative}.fsound .pi::after{content:"";position:absolute;left:14px;top:11px;border-left:10px solid #fff;border-top:7px solid transparent;border-bottom:7px solid transparent}
.fsound small{font-weight:400;color:var(--mute);font-size:14px}.fsound.on{display:none}
/* features */
.feat{padding:130px 0}.feat.alt{background:var(--paper2)}
.ftxt{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:22px 72px;align-items:end;margin-bottom:52px}
.fnum{grid-column:1/-1;display:inline-flex;align-items:center;gap:14px;font:700 13px var(--sans);letter-spacing:.16em;color:var(--forest);text-transform:uppercase}
.fnum::after{content:"";width:56px;height:1px;background:var(--forest)}
.ftxt .h2{font-size:clamp(2.6rem,4.8vw,4.3rem);line-height:1.02;letter-spacing:-.035em}
.fside .fsub{font:500 clamp(1.3rem,1.9vw,1.6rem)/1.3 var(--disp);color:var(--ink);margin:0 0 14px;letter-spacing:-.015em}.fside p{margin:0;color:var(--ink2)}
.fclip{position:relative;border-radius:22px;overflow:hidden;background:#e7ebe8;box-shadow:0 40px 90px -50px rgba(20,40,30,.55)}
.fclip video{width:100%;aspect-ratio:16/9;object-fit:cover}
.tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px 28px;margin-top:36px;list-style:none;padding:0}
.tiles li{border-top:1px solid var(--line);padding:18px 0 0 30px;position:relative}
.tiles li::before{content:"";position:absolute;left:4px;top:25px;width:12px;height:7px;border-left:2px solid var(--forest);border-bottom:2px solid var(--forest);transform:rotate(-45deg)}
.tiles b{display:block;font:700 16px var(--sans);margin-bottom:4px}.tiles span{display:block;color:var(--ink2);font-size:15.5px;line-height:1.5}
.dark .tiles li,.forest .tiles li{border-color:rgba(255,255,255,.18)}.dark .tiles span,.forest .tiles span{color:rgba(238,243,239,.75)}.dark .tiles li::before,.forest .tiles li::before{border-color:var(--mint)}
/* stack: the clip plays as the layers list advances */
.stack{position:relative;height:300vh;background:var(--paper)}
.stack .pin{position:sticky;top:0;height:100vh;display:grid;grid-template-columns:minmax(0,440px) minmax(0,1fr);gap:64px;align-items:center;padding:0 var(--edge)}
.stack .layers{list-style:none;margin:34px 0 0;padding:0;border-top:1px solid var(--line)}
.stack .layers li{padding:16px 0;border-bottom:1px solid var(--line);color:var(--mute);transition:color .4s}
.stack .layers li b{display:block;font:500 21px/1.2 var(--disp);letter-spacing:-.015em;color:inherit}.stack .layers li span{display:block;font-size:15px;margin-top:4px;max-height:0;opacity:0;overflow:hidden;transition:max-height .6s,opacity .5s}
.stack .layers li.on{color:var(--ink)}.stack .layers li.on span{max-height:4em;opacity:1;color:var(--ink2)}
.stack .sv{border-radius:22px;overflow:hidden;box-shadow:0 40px 90px -50px rgba(20,40,30,.55);background:#e7ebe8}.stack .sv video{width:100%;aspect-ratio:16/9;object-fit:cover}
.checks{list-style:none;margin:28px 0 0;padding:0}.checks li{position:relative;padding:8px 0 8px 30px;font-size:15.5px;color:var(--ink2)}
.checks li::before{content:"";position:absolute;left:4px;top:15px;width:12px;height:7px;border-left:2px solid var(--forest);border-bottom:2px solid var(--forest);transform:rotate(-45deg)}
/* stats */
.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px;margin-top:72px}
.stats div{border-top:1px solid rgba(255,255,255,.28);padding-top:22px}
.stats b{display:block;font:500 clamp(3.6rem,6.6vw,6.2rem)/1 var(--disp);letter-spacing:-.04em;color:#fff}
.stats span{display:block;margin-top:14px;color:rgba(255,255,255,.8);max-width:22rem;font-size:16px}
.note{margin-top:40px;font-size:14px;color:rgba(255,255,255,.6);max-width:52rem}
/* roi */
.roi{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:64px}
.roi .gl{padding:34px 32px}.roi .k{font:700 12px var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--forest)}
.roi h3{font:500 28px/1.12 var(--disp);letter-spacing:-.02em;margin:12px 0 16px}.roi ul{list-style:none;margin:0;padding:0}.roi li{padding:10px 0;border-top:1px solid var(--line);font-size:16px;color:var(--ink2)}
.callout{margin-top:28px;display:grid;grid-template-columns:auto minmax(0,1fr);gap:32px;align-items:center;padding:34px 38px}
.callout b{font:500 clamp(2.6rem,4.4vw,3.8rem)/1 var(--disp);letter-spacing:-.04em;color:var(--forest)}.callout p{margin:0;font-size:18px}.callout small{display:block;margin-top:8px;font-size:13.5px;color:var(--mute)}
/* steps */
.steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:64px;counter-reset:st}
.steps .gl{padding:34px 32px}.steps .k{font:700 12px var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--mint)}
.steps h3{font:500 28px/1.12 var(--disp);letter-spacing:-.02em;margin:12px 0 10px}.steps p{margin:0;color:rgba(255,255,255,.8);font-size:16px}
.band.lt .steps .k{color:var(--forest)}.band.lt .steps p{color:var(--ink2)}
/* security */
.secg{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:34px 40px;margin-top:64px}
.secg div{border-top:1px solid rgba(255,255,255,.4);padding-top:18px}.secg h3{font:700 16.5px var(--sans);margin:0 0 6px}.secg p{margin:0;font-size:15.5px;color:rgba(238,243,239,.75)}
/* practices */
.prac{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;margin-top:60px}
.prac a{text-decoration:none;display:block}.prac .img{position:relative;aspect-ratio:4/5;border-radius:18px;overflow:hidden;background:#d9ddd9}
.prac .img img,.prac .img video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.4s cubic-bezier(.2,.7,.2,1)}
.prac a:hover .img img,.prac a:hover .img video{transform:scale(1.05)}
.prac h3{font:500 23px/1.2 var(--disp);letter-spacing:-.015em;margin:18px 0 6px}.prac p{margin:0;color:var(--ink2);font-size:15.5px}
/* rail */
.relh{display:flex;justify-content:space-between;align-items:baseline;gap:24px}
.relg{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:44px}
.relc{text-decoration:none;display:block;padding:30px 28px 32px;min-height:240px;display:flex;flex-direction:column}
.relc small{font:700 12px var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--mute)}.relc b{display:block;font:500 23px/1.22 var(--disp);letter-spacing:-.015em;margin:14px 0 10px}.relc p{margin:0;color:var(--ink2);font-size:15.5px;flex:1}
.relc:hover b{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}
/* team */
.team{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:60px}
.team .gl{padding:28px}.team img{width:84px;height:84px;border-radius:50%;object-fit:cover;filter:grayscale(.15)}.team h3{font:500 24px/1.2 var(--disp);margin:18px 0 2px}.team .ro{font-size:15px;color:var(--forest);font-weight:700}.team .co{font-size:13.5px;color:var(--mute);margin-top:4px}.team p{margin:14px 0 0;color:var(--ink2);font-size:15.5px}
/* faq */
.faq{max-width:58rem;margin-top:48px}.faq details{border-top:1px solid var(--line);padding:22px 0}.faq details:last-child{border-bottom:1px solid var(--line)}
.faq summary{cursor:pointer;list-style:none;font:500 21px/1.3 var(--disp);letter-spacing:-.01em;display:flex;justify-content:space-between;gap:24px}.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font:400 26px var(--sans);color:var(--mute);transition:transform .3s}.faq details[open] summary::after{transform:rotate(45deg)}
.faq details p{margin:14px 0 0;color:var(--ink2);max-width:50rem}
/* list grid (what you build, roles) */
.lg2{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:56px}.lg2 .gl{padding:30px}.lg2 h3{font:500 22px/1.2 var(--disp);letter-spacing:-.015em;margin:0 0 8px}.lg2 p{margin:0;color:var(--ink2);font-size:15.5px}
.dark .lg2 p,.forest .lg2 p{color:rgba(238,243,239,.78)}
/* close */
.close{position:relative;height:92vh;min-height:620px;overflow:hidden;background:var(--forest3);color:#fff}
.close video,.close .poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.close::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(6,12,9,.88) 0,rgba(6,12,9,.55) 42%,rgba(6,12,9,.1) 75%)}
.close .t{position:absolute;z-index:2;left:var(--edge);top:50%;transform:translateY(-50%);max-width:600px}
.close h2{font:500 clamp(2.6rem,5vw,4.6rem)/1.02 var(--disp);letter-spacing:-.035em;margin:0 0 20px}.close p{color:rgba(255,255,255,.84);margin:0 0 30px;font-size:19px}.close .acts{display:flex;gap:12px;flex-wrap:wrap}
/* page body for legal pages and the form */
.prose{max-width:46rem}.prose h2{font:500 28px/1.2 var(--disp);margin:48px 0 12px}.prose h3{font:700 18px var(--sans);margin:28px 0 8px}.prose p,.prose li{color:var(--ink2)}
/* footer */
.f3{background:var(--forest3);color:#dfe9e2;padding:96px 0 44px}
.f3 .top{display:grid;grid-template-columns:340px repeat(4,minmax(0,1fr));gap:40px}
.f3 .lg{display:flex;align-items:center;gap:10px;font:500 24px var(--disp);color:#fff;text-decoration:none}.f3 .lg img{width:30px;height:30px;filter:brightness(0) invert(1)}
.f3 .tag{font:500 26px/1.2 var(--disp);color:#fff;margin:22px 0 10px;letter-spacing:-.02em}.f3 .ad{font-size:14.5px;color:rgba(223,233,226,.7)}
.f3 h4{font:700 12px var(--sans);letter-spacing:.14em;text-transform:uppercase;color:rgba(223,233,226,.55);margin:6px 0 14px}
.f3 a{display:block;text-decoration:none;font-size:15px;padding:4px 0;color:#dfe9e2}.f3 a:hover{color:#fff}
.f3 .legal{margin-top:72px;padding-top:24px;border-top:1px solid rgba(255,255,255,.14);font-size:13.5px;color:rgba(223,233,226,.6);display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}
/* motion */
.rv{opacity:0;transform:translateY(18px);transition:opacity .45s ease,transform .6s cubic-bezier(.2,.7,.2,1)}.rv.in{opacity:1;transform:none}
.rv.d1{transition-delay:.08s}.rv.d2{transition-delay:.16s}.rv.d3{transition-delay:.24s}
dialog.pf{padding:0;border:0;background:#000;width:min(1440px,94vw);border-radius:14px;overflow:hidden}dialog.pf::backdrop{background:rgba(6,12,9,.88)}dialog.pf video{width:100%}
dialog.pf .x{position:absolute;right:12px;top:12px;z-index:2;background:rgba(0,0,0,.6);color:#fff;border:0;padding:7px 14px;border-radius:999px;cursor:pointer;font:700 14px var(--sans)}
.gl{isolation:isolate}
.gl::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:-1;background:linear-gradient(118deg,transparent 38%,rgba(255,255,255,.6) 50%,transparent 62%) no-repeat;background-size:260% 100%;background-position:100% 0;transition:background-position 1.6s var(--ease)}
.gl:hover::after,.gl.in::after{background-position:0 0}
.gl:hover::before{opacity:1}
.band:not(.lt) .gl::before,.dark .gl::before,.forest .gl::before{opacity:.55}
.band:not(.lt) .gl::after,.dark .gl::after,.forest .gl::after{opacity:.6}
/* eyebrow rule and section accents in the spectrum */
/* buttons: a spectral rim appears on hover */
.btn{position:relative;isolation:isolate;transition:background .35s var(--ease),color .35s var(--ease),transform .5s var(--ease),box-shadow .5s var(--ease)}
.btn:hover::before{opacity:1}.btn:hover{transform:translateY(-1px);box-shadow:0 14px 34px -18px rgba(18,20,18,.35)}.btn:active{transform:scale(.98)}
/* clip frames (5 Nov 2026, Stephen: "i dont like this border ... hard to read"): no bezel, no rim; the clip fills its frame and is zoomed so the UI reads larger */
.fclip,.stack .sv{padding:0;border-radius:20px;overflow:hidden;background:#e9ecea;box-shadow:0 40px 90px -50px rgba(20,40,30,.55);isolation:isolate}
.fclip video,.stack .sv video{display:block;border-radius:0;transform:scale(1.1);transform-origin:50% 28%;filter:contrast(1.12) saturate(1.06)}
.stack .sv video{transform:scale(1.2);transform-origin:50% 48%}
.fnum{font-size:14px;letter-spacing:.2em}
.feat.alt .fclip{background:#e9ecea;box-shadow:0 60px 120px -60px rgba(0,0,0,.8)}
/* prism bands: light through glass, drawn in CSS (no image behind the cards) */
.band.prism{background:linear-gradient(180deg,#f4f4f1 0%,#eceeeb 55%,#f6f5f2 100%)}
.band.prism::before{background:radial-gradient(70% 60% at 78% 18%,rgba(255,255,255,.95),rgba(255,255,255,0) 70%),radial-gradient(50% 50% at 8% 90%,rgba(220,232,226,.7),rgba(220,232,226,0) 70%)}
.band.prism.dk{background:radial-gradient(120% 90% at 20% 60%,#16271f 0,#0b1611 55%,#070e0b 100%);color:#fff}
.band.prism.dk::before{background:radial-gradient(40% 50% at 18% 58%,rgba(127,216,172,.08),rgba(127,216,172,0) 70%)}
.band.prism.dk .gl{background:linear-gradient(160deg,rgba(255,255,255,.1),rgba(255,255,255,.03))}
.band.prism.dk .stats b{background:linear-gradient(100deg,#fff 0%,#fff 45%,#d8f1e4 62%,#c9e3f8 80%,#e3d6fb 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
/* hero polish (5 Nov 2026): the headline rises word by word, the copy follows, the chips are glass with a spectral rim */
.hero{height:calc(100svh - 42px)}
.hero h1 .wd{display:inline-block;overflow:hidden;vertical-align:bottom;padding:0 .02em .1em;margin-bottom:-.1em}
.hero h1 .wd>span{display:inline-block;transform:translate3d(0,108%,0);animation:wup 1.2s var(--ease) var(--d,0s) forwards}
.hero .sub,.hero .acts,.hero .eyebrow{opacity:0;transform:translate3d(0,14px,0);animation:fup 1.1s var(--ease) .55s forwards}
.hero .acts{animation-delay:.7s}.hero .trust{opacity:0;animation:fup 1.2s var(--ease) .95s forwards}
@keyframes wup{to{transform:none}}@keyframes fup{to{opacity:1;transform:none}}
.works span{position:relative;isolation:isolate;transition:background .5s var(--ease)}
.works span:hover::before{opacity:.9}
@media (prefers-reduced-motion:reduce){.hero h1 .wd>span,.hero .sub,.hero .acts,.hero .eyebrow,.hero .trust{animation:none;opacity:1;transform:none}}
.nw{white-space:nowrap}
@media (max-width:560px){.hero .acts{gap:10px;flex-wrap:nowrap}.hero .acts .btn{padding:.78rem 1.05rem;font-size:14.5px}.hero .copy{bottom:150px}.hero .hpause{top:auto;bottom:auto;display:none}.hero .trust{bottom:22px}.hero .sub{margin:18px auto 24px}}
/* judges 5 Nov 2026: the sound button keeps its size while the frame shrinks; visible focus everywhere; skip link */
.fsec .fsound{transform:scale(calc(1 / var(--fs,1)));transform-origin:0 0}
:focus-visible{outline:2px solid var(--forest);outline-offset:3px;border-radius:6px}
.n3 .it>a:focus-visible,.n3 .it>button:focus-visible,.fsound:focus-visible{outline:2px solid var(--forest);outline-offset:3px}
.skip{position:absolute;left:12px;top:-60px;z-index:80;background:#fff;color:var(--ink);padding:10px 16px;border-radius:999px;font:700 14px var(--sans);text-decoration:none;transition:top .3s var(--ease)}.skip:focus{top:12px}
.sec .gl,.feat .gl{-webkit-backdrop-filter:none;backdrop-filter:none}
/* judges 5 Nov 2026: alternate features sit on a deep forest band so the light glass trays carry contrast */
.feat.alt{background:radial-gradient(120% 90% at 85% 0%,#1d3529 0,#11211a 55%,#0b1611 100%);color:#eef3ef;position:relative;overflow:hidden}
.feat.alt::before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(103deg,transparent 52%,rgba(243,170,150,.06) 56%,rgba(186,234,180,.07) 58.5%,rgba(150,208,240,.07) 61%,transparent 66%)}
.feat.alt .w{position:relative}
.feat.alt .fnum{color:var(--mint)}.feat.alt .fside .fsub{color:#fff}.feat.alt .fside p{color:rgba(238,243,239,.78)}
.feat.alt .tiles li{border-color:rgba(255,255,255,.16)}.feat.alt .tiles span{color:rgba(238,243,239,.74)}.feat.alt .tiles li::before{border-color:var(--mint)}
.feat.alt .lnk{color:#fff}
/* prism section (judges 5 Nov 2026, the signature visual): documents become one beam, the ontology prism files each fact */
.prismsec{background:radial-gradient(90% 80% at 50% 45%,#17291f 0,#0c1712 60%,#08100c 100%);color:#eef3ef;position:relative;overflow:hidden}
.prismsec .kick{color:rgba(238,243,239,.78)}.prismsec .eyebrow{color:var(--mint)}
.pzx{position:relative;aspect-ratio:1200/580;margin-top:56px}
.pzsvg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.pzsvg path{fill:none}
.pzsvg .dl{stroke:rgba(255,255,255,.42);stroke-width:1.2;stroke-dasharray:420;stroke-dashoffset:420;transition:stroke-dashoffset 1.3s var(--ease) calc(.25s + var(--i)*.07s)}
.pzsvg .dp{stroke:#fff;stroke-width:2;stroke-dasharray:26 560;stroke-dashoffset:586;opacity:0;stroke-linecap:round}
.pzsvg .beam{stroke:#fff;stroke-width:3;opacity:0;transition:opacity .6s var(--ease) 1.1s}
.pzsvg .halo{opacity:0;transition:opacity 1.2s var(--ease) 1s}
.pzsvg .prism{opacity:0;transform:scale(.9);transform-box:fill-box;transform-origin:center;transition:opacity 1s var(--ease) .9s,transform 1.4s var(--ease) .9s}
.pzsvg .sl{stroke-width:2.4;stroke-linecap:round;stroke-dasharray:300;stroke-dashoffset:300;transition:stroke-dashoffset 1.2s var(--ease) calc(1.35s + var(--i)*.1s)}
.pzsvg .sglow .sl{stroke-width:7;opacity:.5}
.pzsvg .sp{stroke:#fff;stroke-width:2.2;stroke-dasharray:22 420;stroke-dashoffset:442;opacity:0;stroke-linecap:round}
.pzx.in .dl,.pzx.in .sl{stroke-dashoffset:0}
.pzx.in .beam,.pzx.in .halo{opacity:1}.pzx.in .prism{opacity:1;transform:none}
.pdocs,.pfacts{list-style:none;margin:0;padding:0}
.pdocs li{position:absolute;left:0;top:var(--y);transform:translate(-10px,-50%);width:17.4%;box-sizing:border-box;display:flex;align-items:center;gap:8px;padding:7px 12px;border-radius:999px;font:600 12.5px var(--sans);color:rgba(238,243,239,.86);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:linear-gradient(160deg,rgba(255,255,255,.12),rgba(255,255,255,.04));box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 0 0 1px rgba(255,255,255,.12);opacity:0;transition:opacity .7s var(--ease) calc(var(--i)*.06s),transform .9s var(--ease) calc(var(--i)*.06s)}
.pdocs .fi{flex:none;width:10px;height:13px;border-radius:2px;background:linear-gradient(180deg,rgba(255,255,255,.8),rgba(255,255,255,.45))}
.pfacts li{position:absolute;left:73.2%;top:var(--y);transform:translate(10px,-50%);display:flex;align-items:baseline;gap:10px;padding:9px 16px 9px 14px;border-radius:14px;background:linear-gradient(160deg,rgba(255,255,255,.14),rgba(255,255,255,.04));box-shadow:inset 0 1px 0 rgba(255,255,255,.22),0 0 0 1px rgba(255,255,255,.12),0 18px 40px -24px rgba(0,0,0,.8);opacity:0;transition:opacity .8s var(--ease) calc(1.9s + var(--i)*.1s),transform 1s var(--ease) calc(1.9s + var(--i)*.1s);white-space:nowrap}
.pfacts li::before{content:"";align-self:center;width:8px;height:8px;border-radius:50%;background:var(--c);box-shadow:0 0 12px 2px var(--c)}
.pfacts b{font:700 11.5px var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--c)}
.pfacts span{font:500 16px var(--disp);color:#fff;letter-spacing:-.01em}
.pzx.in .pdocs li{opacity:1;transform:translate(0,-50%)}.pzx.in .pfacts li{opacity:1;transform:translate(0,-50%)}
@media (max-width:760px){.pzx{aspect-ratio:auto;padding-top:88%;overflow:hidden;margin-left:-24px;margin-right:-24px}.pzsvg{height:auto;width:190%;left:-45%;right:auto;aspect-ratio:1200/580;inset:0 auto auto -45%}.pdocs{display:none}.pfacts{margin:6px 24px 0}
  .pfacts{position:relative;display:grid;gap:10px;margin-top:18px}.pfacts li{position:relative;left:auto;top:auto;transform:none;white-space:normal}.pzx.in .pfacts li{transform:none}}
@media (prefers-reduced-motion:reduce){.pzx .dl,.pzx .sl{stroke-dashoffset:0;transition:none}.pzx .beam,.pzx .halo,.pzx .prism,.pdocs li,.pfacts li{opacity:1;transform:none;transition:none}.pzx .dp,.pzx .sp{display:none}.pdocs li,.pfacts li{transform:translateY(-50%)}}
@media (max-width:620px){.fclip video.p45,.stack .sv video.p45{aspect-ratio:4/5}}
.mbar{display:none}
@media (prefers-reduced-motion:reduce){.rv{opacity:1;transform:none}}
@media (max-width:980px){
  .n3 .l{display:none}.n3{grid-template-columns:auto 1fr}.n3 .r{gap:10px}.n3 .r .bl{display:none}
  .mnu{display:inline-block;border:1px solid currentColor;color:inherit;background:transparent;padding:.5rem .9rem;font:700 14px var(--sans);border-radius:999px}
  body.menu-open{overflow:hidden}body.menu-open .n3 .l{display:flex;position:fixed;inset:0;z-index:60;flex-direction:column;gap:0;background:var(--forest3);color:#fff;padding:90px 24px 24px;overflow:auto}
  body.menu-open .n3 .l .it>a,body.menu-open .n3 .l .it>button{display:block;padding:16px 0;font:500 24px var(--disp);border-bottom:1px solid rgba(255,255,255,.14);border-radius:0;width:100%}
  body.menu-open .n3 .pn{position:static;opacity:1;visibility:visible;transform:none;min-width:0;background:transparent;border:0;box-shadow:none;color:#fff;grid-template-columns:1fr;padding:4px 0 10px;display:none}
  body.menu-open .n3 .it.open .pn{display:grid}body.menu-open .n3 .pn span{color:rgba(255,255,255,.6)}body.menu-open .n3 .pn a:hover{background:rgba(255,255,255,.08)}
  .mclose{display:none}body.menu-open .mclose{display:block;position:fixed;top:20px;right:24px;z-index:61;border:1px solid #fff;color:#fff;background:transparent;padding:.5rem .9rem;font:700 14px var(--sans);border-radius:999px}
  .sec{padding:96px 0}.feat{padding:90px 0}.ftxt{grid-template-columns:minmax(0,1fr);gap:16px}.tiles{grid-template-columns:minmax(0,1fr)}
  .cards,.roi,.steps,.relg,.team,.lg2{grid-template-columns:minmax(0,1fr)}.stats{grid-template-columns:minmax(0,1fr);gap:28px}.secg{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:26px 20px}
  .prac{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.f3 .top{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .stack{height:auto}.stack .pin{position:static;height:auto;grid-template-columns:minmax(0,1fr);padding:96px 24px;gap:32px}.stack .layers li span{max-height:none;opacity:1}
  .fsec{height:auto;padding:80px 0 60px}.fsec .fpin{position:static;height:auto;padding:0 20px}.fsec .fhead{position:static;opacity:1;transform:none;margin-bottom:24px}
  .fsec .fframe{position:relative;left:auto;width:100%;height:auto;aspect-ratio:16/9;border-radius:14px;transform:none}
  .hero .copy{bottom:140px}.hero .sub{font-size:18px}.callout{grid-template-columns:minmax(0,1fr);gap:12px}
  .close::after{background:linear-gradient(180deg,rgba(6,12,9,.3),rgba(6,12,9,.92))}.close .t{top:auto;bottom:8vh;transform:none;right:24px}
  .fclip video,.stack .sv video{aspect-ratio:1080/768}
  .mbar{display:block;position:fixed;left:12px;right:12px;bottom:12px;z-index:30;text-align:center;background:var(--forest);color:#fff;text-decoration:none;font:700 16px var(--sans);padding:14px;border-radius:999px;opacity:0;transform:translateY(20px);transition:opacity .4s,transform .4s}.scrolled .mbar{opacity:1;transform:none}}
@media (max-width:560px){.prac,.secg,.f3 .top{grid-template-columns:minmax(0,1fr)}.hero h1{font-size:2.6rem}.n3-bar span{display:none}.works span{font-size:12.5px;padding:6px 11px}.lnk{white-space:normal}}
.band:not(.lt) .gl{background:linear-gradient(160deg,rgba(18,30,24,.55),rgba(10,18,14,.35));border-color:rgba(255,255,255,.22);box-shadow:inset 0 1px 0 rgba(255,255,255,.28),0 30px 60px -36px rgba(0,0,0,.6)}
.band:not(.lt) .cards p{color:rgba(238,243,239,.82)}.band:not(.lt) .cards .n{color:var(--mint)}.band:not(.lt) .cards h3{color:#fff}
/* studio system (5 Nov 2026, Stephen: "the rainbow doesnt go with the green ... completely go this route like Legora's site ...
   their colors really work but dont copy exactly ... their glass effects too ... and shapes"). Neutral off-white and soft grey
   studio light, near-black type, one deep forest green, monochrome frosted glass; the night towers stay as photographic bands. */
:root{--ease:cubic-bezier(.32,.72,0,1);--paper:#f4f4f1;--paper2:#ecece8;--studio:radial-gradient(120% 100% at 50% 0%,#fbfbf9 0,#efefec 55%,#e4e4e0 100%);
  --ink:#121412;--ink2:#3d403d;--mute:#6b6e6a;--line:rgba(18,20,18,.1);--forest:#244034;--forest2:#1a3027;--forest3:#0b130f}
body{background:var(--paper)}
.alt{background:var(--paper2)}
/* frosted glass, monochrome */
.gl{background:linear-gradient(180deg,rgba(255,255,255,.82),rgba(255,255,255,.56));border:1px solid rgba(255,255,255,.95);border-radius:18px;
  box-shadow:inset 0 1px 0 #fff,0 1px 2px rgba(18,20,18,.04),0 28px 60px -34px rgba(18,20,18,.28)}
.band:not(.lt) .gl,.dark .gl,.forest .gl{background:none;border:0;border-top:1px solid rgba(255,255,255,.28);border-radius:0;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;padding-left:0;padding-right:0}
.band:not(.lt) .cards .n,.dark .cards .n{color:rgba(238,243,239,.6)}
/* studio bands replace the prism bands */
.band.prism{background:var(--studio)}
.band.prism::before{display:none}
.band.prism .pz{display:none}
.band.prism.dk{background:radial-gradient(120% 100% at 50% 0%,#18291f 0,#0e1913 55%,#09110d 100%);color:#fff}
.band.prism.dk .stats b{color:#fff}
/* buttons: the primary action is a forest pill with an arrow in a circle */
.btn{transition:background .35s var(--ease),color .35s var(--ease),transform .5s var(--ease)}
.btn:hover{transform:translateY(-1px)}.btn:active{transform:scale(.98)}
a.btn[href$="demo.html"]{background:var(--forest);border-color:var(--forest);color:#fff;padding-right:.5rem;gap:.7rem}
a.btn[href$="demo.html"]::after{content:"\2192";display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:#fff;color:var(--forest);font-size:14px;transition:transform .5s var(--ease)}
a.btn[href$="demo.html"]:hover::after{transform:translateX(2px)}
a.btn.sm[href$="demo.html"]::after{width:22px;height:22px;font-size:12px}
.hero a.btn[href$="demo.html"],.close a.btn[href$="demo.html"],.band a.btn[href$="demo.html"]{background:#fff;border-color:#fff;color:var(--ink)}
.hero a.btn[href$="demo.html"]::after,.close a.btn[href$="demo.html"]::after,.band a.btn[href$="demo.html"]::after{background:var(--forest);color:#fff}
/* nav pill and chips without spectral rims */
.n3.float{background:rgba(247,247,244,.82)}
.works span{border-color:rgba(255,255,255,.3);background:rgba(255,255,255,.08)}
/* product clips sit in grey studio tiles */
.fclip,.stack .sv{background:#e9e9e6;border-radius:16px;box-shadow:0 1px 2px rgba(18,20,18,.05),0 40px 90px -56px rgba(18,20,18,.45)}
/* alternate features on soft grey studio light (the night towers carry the dark bands) */
.feat.alt{background:var(--studio);color:var(--ink)}.feat.alt::before{display:none}
.feat.alt .fnum{color:var(--forest)}.feat.alt .fside .fsub{color:var(--ink)}.feat.alt .fside p,.feat.alt .tiles span{color:var(--ink2)}
.feat.alt .tiles li{border-color:var(--line)}.feat.alt .tiles li::before{border-color:var(--forest)}.feat.alt .lnk{color:var(--ink)}
.feat.alt .fclip{background:#e9e9e6;box-shadow:0 1px 2px rgba(18,20,18,.05),0 40px 90px -56px rgba(18,20,18,.45)}
.fnum,.cards .n{color:var(--mute)}
/* the cube section in monochrome on studio light */
.prismsec{background:var(--studio);color:var(--ink)}
.prismsec .kick{color:var(--ink2)}.prismsec .eyebrow{color:var(--mute)}
.pzsvg .dl{stroke:rgba(18,20,18,.28)}
.pzsvg .dp,.pzsvg .sp{display:none}
.pzsvg .beam{stroke:var(--ink)}
.pzsvg .halo{opacity:0!important}
.pzsvg .sglow{display:none}
.pdocs li{color:var(--ink2);background:linear-gradient(180deg,rgba(255,255,255,.9),rgba(255,255,255,.62));box-shadow:inset 0 1px 0 #fff,0 0 0 1px rgba(18,20,18,.08),0 10px 24px -16px rgba(18,20,18,.3)}
.pdocs .fi{background:linear-gradient(180deg,#c9ccc8,#a9ada8)}
.pfacts li{background:linear-gradient(180deg,rgba(255,255,255,.92),rgba(255,255,255,.66));box-shadow:inset 0 1px 0 #fff,0 0 0 1px rgba(18,20,18,.08),0 18px 40px -26px rgba(18,20,18,.35)}
.pfacts li::before{box-shadow:none}
.pfacts b{color:var(--forest)}.pfacts span{color:var(--ink)}
.pzx.in .dp{animation:none}
/* the context layer: a pinned isometric scene (sources, the graph, walls, every AI tool, cited answers) */
.ctx{position:relative;height:430vh;background:var(--studio)}
.ctx .pin{position:sticky;top:0;height:100vh;display:grid;grid-template-columns:minmax(0,400px) minmax(0,1fr);gap:36px;align-items:center;padding:0 var(--edge);overflow:hidden}
.ctx .h2{font-size:clamp(2.1rem,3.3vw,3.2rem)}
.ctx .kick{font-size:16.5px;margin-top:16px}
.csteps{list-style:none;margin:26px 0 0;padding:0;border-top:1px solid var(--line)}
.csteps li{padding:12px 0;border-bottom:1px solid var(--line);color:var(--mute);transition:color .5s var(--ease)}
.csteps li b{display:block;font:500 18px/1.25 var(--disp);letter-spacing:-.01em;color:inherit}
.csteps li span{display:block;font-size:14.5px;line-height:1.5;max-height:0;opacity:0;overflow:hidden;transition:max-height .6s var(--ease),opacity .5s var(--ease)}
.csteps li.done{color:var(--ink2)}
.csteps li.on{color:var(--ink)}.csteps li.on span{max-height:5em;opacity:1;margin-top:4px;color:var(--ink2)}
.csteps li.on b::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--forest);margin:0 10px 2px 0}
.cnt{display:flex;gap:22px;margin-top:22px;font:600 12px var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--mute)}
.cnt b{display:block;font:500 26px/1.1 var(--disp);letter-spacing:-.02em;color:var(--ink);text-transform:none}
.cstage svg{display:block;width:100%;height:auto;max-height:94vh;overflow:visible}
.stage .pl{transition:opacity .25s linear}
.stage .plab{font:700 13px var(--sans);letter-spacing:.16em;text-transform:uppercase;fill:var(--mute)}
.stage .tlab{font:600 16px var(--sans);fill:var(--ink)}.stage .tsub{font:400 12px var(--sans);fill:var(--mute)}
.stage .edge{stroke:rgba(18,20,18,.4);stroke-width:1.4}
.stage .ndot{fill:var(--ink)}.stage .nhalo{fill:rgba(36,64,52,.07);stroke:rgba(36,64,52,.25)}
.stage .nlab{font:600 14px var(--sans);fill:var(--ink2)}
.stage .node{transition:opacity .4s var(--ease)}
.stage .vlink{stroke:rgba(18,20,18,.3);stroke-width:1;stroke-dasharray:3 5;transition:opacity .3s linear}
.stage .vlink.mcp{stroke:rgba(36,64,52,.55);stroke-dasharray:2 4}
.stage .gate{fill:#fff;stroke:var(--forest);stroke-width:1.2}
.stage .gatet{font:700 12px var(--sans);letter-spacing:.14em;text-transform:uppercase;fill:var(--forest)}
.stage .rpath{fill:none;stroke:none}
.stage .rdot{fill:var(--forest);filter:drop-shadow(0 0 6px rgba(36,64,52,.6))}.stage .rdot.no{fill:#b5483f;filter:drop-shadow(0 0 6px rgba(181,72,63,.5))}
.stage .chip{transition:opacity .35s var(--ease)}
.stage .chip rect{fill:#fff;stroke:rgba(18,20,18,.12);filter:drop-shadow(0 10px 18px rgba(18,20,18,.16))}
.stage .chip text{font:600 13px var(--sans);fill:var(--ink)}.stage .chip.no text{fill:#b5483f}
@media (max-width:900px){.ctx{height:auto}.ctx .pin{position:static;height:auto;grid-template-columns:minmax(0,1fr);padding:90px 22px 70px}
  .csteps li span{max-height:none;opacity:1}.csteps li{color:var(--ink)}}

/* judges round 3 (5 Nov 2026) */
:root{--mint:rgba(255,255,255,.62)}
.ctx .pin{grid-template-columns:minmax(0,360px) minmax(0,1fr)}
.stage .plab{font-size:16px}.stage .tlab{font-size:19px}.stage .tsub{font-size:13px}.stage .nlab{font-size:17px}.stage .chip text{font-size:16px}.stage .gatet{font-size:13px}
.stage .fdot{fill:rgba(18,20,18,.38)}.stage .fedge{stroke:rgba(18,20,18,.16);stroke-width:.7}
.stage .cell{fill:rgba(255,255,255,.3);stroke:rgba(18,20,18,.12);stroke-width:.8;transition:fill .35s var(--ease),stroke .35s var(--ease)}
.stage .cell.ref{stroke:rgba(181,72,63,.45)}.stage .cell.hit{fill:url(#cxh);stroke:rgba(181,72,63,.8)}.stage .cell.pass{fill:rgba(36,64,52,.2);stroke:rgba(36,64,52,.5)}
.stage .nhalo{transform-box:fill-box;transform-origin:center;transition:transform .3s var(--ease),fill .3s var(--ease),stroke .3s var(--ease)}
.stage .nhalo.hit{transform:scale(1.8);fill:rgba(36,64,52,.16);stroke:var(--forest)}
.stage .edge{transition:stroke .3s var(--ease),stroke-width .3s var(--ease)}.stage .edge.hot{stroke:var(--forest);stroke-width:2.4}
.stage .cite{stroke:var(--forest);stroke-width:1.2;stroke-dasharray:3 4}
.cnt{flex-wrap:wrap;gap:16px 22px}
@media (max-width:900px){.ctx .cstage{order:-1;margin:0 -22px 28px}.stage .plab{display:none}.stage .tlab{font-size:28px}.stage .tsub{display:none}.stage .nlab{font-size:24px}.stage .chip text{font-size:22px}.stage .gatet{font-size:19px}}
/* the cube section: light keeps travelling once the strands are drawn */
.pzsvg .dp,.pzsvg .sp{display:block;stroke:var(--ink);opacity:.5}
.pzx.in .sp{animation:pzsp 2.6s linear calc(3s + var(--i)*.5s) infinite}.pzx.in .dp{animation:pzsp 3.2s linear calc(2s + var(--i)*.43s) infinite}
@keyframes pzsp{from{stroke-dashoffset:460}to{stroke-dashoffset:0}}
/* phone film control */
@media (max-width:900px){.fsound{left:10px;top:10px;padding:6px 12px 6px 6px;font-size:13px}.fsound small{display:none}.fsound .pi{width:28px;height:28px}}
/* phone nav: Book a session */
@media (max-width:560px){.hm{display:none}.n3 a.btn{white-space:nowrap}}
@media (max-width:900px){.ctx .pin{grid-template-columns:minmax(0,1fr)}}
/* judges round 4 (5 Nov 2026) */
.ctx{height:330vh}
.stage .ghost{fill:none;stroke:rgba(18,20,18,.18);stroke-dasharray:4 6}
.stage .fdot{fill:rgba(18,20,18,.22);transition:fill .3s var(--ease)}.stage .fdot.lit{fill:var(--forest)}
.stage .elab{font:600 12px var(--sans);fill:var(--forest);opacity:0;transition:opacity .3s var(--ease)}.stage .elab.on{opacity:1}
.stage .nlab.on{fill:var(--ink);font-weight:700}
.stage .trail{fill:none;stroke:var(--forest);stroke-width:3;stroke-linecap:round;transition:opacity .2s linear}
.stage .lead{stroke:var(--forest);stroke-width:1;transition:opacity .3s var(--ease)}
.stage .pcard{transition:opacity .35s var(--ease)}
.stage .pcard rect:first-child{fill:#fff;stroke:rgba(18,20,18,.14);filter:drop-shadow(0 14px 24px rgba(18,20,18,.18))}
.stage .pcd{font:700 13px var(--sans);fill:var(--ink)}.stage .pcp{font:500 12px var(--sans);fill:var(--mute)}
.stage .pcb{fill:rgba(36,64,52,.35)}.stage .pcl{fill:rgba(18,20,18,.1)}
@media(max-width:430px){.n3 .lg{font-size:0;gap:0}.n3 .r{gap:8px}}
@media (max-width:620px){.fsec.p45 .fframe{aspect-ratio:1/1;height:auto}.fsec.p45 .fv{object-fit:cover}}  /* 8 Nov 2026: the phone film is the square cut (v5j) */
/* judges round 5 (6 Nov 2026) */
@media (max-width:900px){.ctx{height:auto}}
.stage .nlab,.stage .elab{paint-order:stroke;stroke:#f1f2ef;stroke-width:5px;stroke-linejoin:round}
.stage .stem{stroke:rgba(18,20,18,.28);stroke-width:1}.stage .foot{fill:rgba(18,20,18,.3)}
.pzsvg .prism path:nth-child(1){fill:rgba(255,255,255,.85)}.pzsvg .prism path:nth-child(2){fill:rgba(226,229,226,.8)}.pzsvg .prism path:nth-child(3){fill:rgba(205,210,206,.7)}
.pzsvg .sp{stroke:var(--forest);stroke-width:3;opacity:.9}
.ctx .h2{font-size:clamp(2rem,2.5vw,2.6rem)}
/* judges round 6 (6 Nov 2026) */
.ctx{height:280vh}@media (max-width:900px){.ctx{height:auto}}
.stage .nlab.on{paint-order:stroke;stroke:#f4f5f2;stroke-width:5px}
.stage .nodes:has(.nlab.on) .nlab:not(.on){opacity:.3}
.stage .edge{stroke:rgba(18,20,18,.55);stroke-width:1.6}.stage .ndot{fill:var(--forest)}.stage .fdot{fill:rgba(36,64,52,.3)}.stage .elab{font-size:14px}
@media (max-width:900px){.stage .elab,.stage .pcard{display:none}}
.pzsvg .prism{transition:opacity 1s var(--ease) .2s,transform 1.4s var(--ease) .2s}
/* judges round 7 (6 Nov 2026) */
.stage .chip text{font-size:18px}
@media (max-width:900px){.ctx .cstage{order:0;margin:28px -22px 0}.stage .chip text{font-size:26px}.stage .nlab{font-size:24px}.stage .tlab{font-size:26px}.stage .tsub{display:none}}
.pzsvg .prism path:nth-child(1){fill:rgba(255,255,255,.5)}.pzsvg .prism path:nth-child(2){fill:rgba(226,229,226,.45)}.pzsvg .prism path:nth-child(3){fill:rgba(205,210,206,.4)}
.pzsvg .pzlat line{stroke:rgba(18,20,18,.35);stroke-width:1.2}.pzsvg .pzlat circle{fill:#c9cfca;stroke:#fff;stroke-width:1.2}
.pzx.in .pzlat circle{animation:pzn 3.2s linear calc(2s + var(--i)*.43s) infinite}
@keyframes pzn{0%,70%,100%{fill:#c9cfca}10%{fill:#244034}}
.pzx.in .pfacts li::before{animation:pzf 3.2s linear calc(2.9s + var(--i)*.43s) infinite}
@keyframes pzf{0%,70%,100%{box-shadow:0 0 0 0 rgba(36,64,52,0)}10%{box-shadow:0 0 0 6px rgba(36,64,52,.25)}}
.hero:has(video[poster*="home-hero"])::after{background:radial-gradient(ellipse 60% 40% at 50% 64%,rgba(6,9,14,.58) 0,rgba(6,9,14,.28) 55%,rgba(6,9,14,0) 100%),linear-gradient(180deg,rgba(6,9,14,.5) 0,rgba(6,9,14,.1) 18%,rgba(6,9,14,0) 40%,rgba(6,9,14,.35) 70%,rgba(6,9,14,.8) 100%)!important}
/* the ontology sphere (6 Nov 2026): the lists answer the pulses of assets/v3/ontology.js */
.pzx.in .pfacts li::before{animation:none}
.pdocs li,.pfacts li{transition:opacity .9s var(--ease),transform 1s var(--ease),box-shadow .45s var(--ease)}
.pdocs li.on{box-shadow:inset 0 1px 0 #fff,0 0 0 1px rgba(36,64,52,.34),0 12px 28px -16px rgba(36,64,52,.45)}
.pdocs li.on .fi{background:linear-gradient(180deg,#3d5a4c,#244034)}
.pfacts li.on{box-shadow:inset 0 1px 0 #fff,0 0 0 1px rgba(36,64,52,.4),0 22px 44px -22px rgba(36,64,52,.5)}
.pfacts li::before{transition:box-shadow .45s var(--ease)}
.pfacts li.on::before{box-shadow:0 0 0 5px rgba(36,64,52,.14)}
/* the layers diagram as glass slabs and a living web (6 Nov 2026) */
.stage .tick{fill:none;stroke:rgba(18,20,18,.4);stroke-width:1}
.stage .sheen,.stage .scan{pointer-events:none}
.stage .fweb{fill:none;stroke:rgba(18,20,18,.13);stroke-width:.6;transition:opacity .6s var(--ease)}
.stage .fdots{fill:rgba(18,20,18,.32);transition:opacity .6s var(--ease)}
.stage .fwalk{fill:rgba(36,64,52,.38)}
.stage .flit{fill:rgba(36,64,52,.8)}
.stage .sigh{fill:var(--forest)}
.stage .sigt{fill:none;stroke:rgba(36,64,52,.42);stroke-width:1.1;stroke-linecap:round}
.stage .ripple{fill:none;stroke:var(--forest);stroke-width:1.2;opacity:0}
.stage .fib{fill:none;stroke:rgba(18,20,18,.15);stroke-width:.6;transition:opacity .3s linear}
.stage .fibp{fill:rgba(18,20,18,.62)}
.stage .mcpf{fill:none;stroke:rgba(36,64,52,.42);stroke-width:.8;transition:opacity .3s linear}
.stage .led{fill:rgba(18,20,18,.16);stroke:#fff;stroke-width:1.2;transition:fill .3s var(--ease)}
.stage .led.on{fill:var(--forest);filter:drop-shadow(0 0 4px rgba(36,64,52,.7))}
.stage .ndot{stroke:#fff;stroke-width:1.6}
.stage .nspec{fill:rgba(255,255,255,.75)}
.stage .nring{fill:none;stroke:rgba(36,64,52,.28);stroke-width:1;transform-box:fill-box;transform-origin:center;animation:cxr 3.4s cubic-bezier(.2,.7,.2,1) infinite}
@keyframes cxr{0%{transform:scale(.45);opacity:.9}100%{transform:scale(1.7);opacity:0}}
.stage .eflow{stroke:#fff;stroke-width:1.3;stroke-dasharray:2 9;stroke-linecap:round;opacity:0;transition:opacity .3s var(--ease);animation:cxf .9s linear infinite}
.stage .eflow.hot{opacity:.95}
@keyframes cxf{to{stroke-dashoffset:-22}}
.stage .edge.hot{filter:drop-shadow(0 0 3px rgba(36,64,52,.5))}
.stage .trail{filter:drop-shadow(0 0 5px rgba(36,64,52,.45))}
.stage .chip .cdot{fill:var(--forest)}.stage .chip.no .cdot{fill:#b5483f}
@media (prefers-reduced-motion:reduce){.stage .nring,.stage .eflow{animation:none}}
/* judges round 8 (6 Nov 2026): the story spreads across the pin; sheets on the sources; pages rise, facts arrive */
.ctx{height:240vh}@media (max-width:900px){.ctx{height:auto}}
.stage .sheet{fill:#fff;stroke:rgba(18,20,18,.2);stroke-width:.8}
.stage .fibg{fill:#fff;stroke:rgba(18,20,18,.55);stroke-width:.8}
.stage .fibp{fill:var(--forest)}
@media (max-width:900px){.stage .nodes:has(.nlab.on) .nlab:not(.on){opacity:0}}
/* requests as traces of light (6 Nov 2026, Stephen: the moving balls read as cheesy) */
.stage .rdot{display:none}
.stage .trail{stroke-width:2.2;stroke-linejoin:round;transition:none}
.stage .trail.faint{stroke-width:1;filter:none}
.stage .trail.no{stroke:#b5483f;filter:drop-shadow(0 0 4px rgba(181,72,63,.4))}
.stage .tip{fill:none;stroke:#fff;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 3px rgba(255,255,255,.95))}

/* flat nodes (6 Nov 2026, Stephen: no borders around the dots and no shine on them) */
.stage .ndot{fill:var(--forest)!important;stroke:none}
.stage .nspec,.stage .nring,.stage .nhalo,.stage .led{display:none}

/* the stack clip keeps a margin inside its frame (6 Nov 2026, Stephen: the cropped stack "looks really bad") */
.stack .sv video{transform:scale(1.08);transform-origin:50% 50%}

/* no decorative light on the diagram (6 Nov 2026, Stephen: the sweep across the cards "looks like ai") */
.stage .sheen,.stage .scan,.stage .eflow,.stage .tip{display:none}
.stage .trail,.stage .trail.no,.stage .edge.hot{filter:none}
/* judges round 10 (6 Nov 2026): nothing changes state without easing; one stroke system; legible type */
.stage .nodes:has(.nlab.on) .nlab:not(.on){opacity:1}
.stage .nlab{transition:fill .3s var(--ease)}
.stage .lead,.stage .tsub,.stage .elab{display:none}
.stage .gatet{font-size:16px}.stage .pcd{font-size:17px}.stage .pcp{font-size:16px}
.stage .fweb,.stage .fib,.stage .mcpf,.stage .cell{stroke-width:.75}
.stage .edge,.stage .stem,.stage .cite{stroke-width:1.25}
.stage .trail,.stage .edge.hot,.stage .trail.faint{stroke-width:2}
.stage .cell.hit{fill:rgba(181,72,63,.18)}
.stage .sigh,.stage .sigt,.stage .ripple,.stage .flit,.stage .fwalk,.stage .fibp,.stage .fibg{display:none}

/* judges round 11 (6 Nov 2026) */
.pfacts li.on::before{box-shadow:none}
@media (max-width:700px){.hero .acts{flex-direction:column;align-items:stretch}.hero .acts .btn{justify-content:center}}
.btn,.lnk{white-space:nowrap}
.stack .pin{grid-template-columns:minmax(0,380px) minmax(0,1fr)}
@media (max-width:900px){.stack .pin{grid-template-columns:minmax(0,1fr)}}
.band::before{background:linear-gradient(180deg,rgba(6,12,9,.82),rgba(6,12,9,.72) 45%,rgba(6,12,9,.85))}
.close h2{text-wrap:balance}
/* from the page to the fact (6 Nov 2026) */
.onx{position:relative;display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);gap:84px;align-items:center;margin-top:60px}
.odoc{position:relative;height:430px}
.odoc::before,.odoc::after{content:"";position:absolute;left:14px;right:14px;bottom:-12px;height:40px;border-radius:0 0 16px 16px;background:rgba(255,255,255,.62);box-shadow:0 0 0 1px rgba(18,20,18,.05);z-index:0}
.odoc::after{left:28px;right:28px;bottom:-23px;background:rgba(255,255,255,.4)}
.opage{position:absolute;inset:0;z-index:1;border-radius:16px;background:linear-gradient(180deg,#fff,rgba(255,255,255,.93));box-shadow:inset 0 1px 0 #fff,0 0 0 1px rgba(18,20,18,.08),0 44px 90px -48px rgba(18,20,18,.42);opacity:0;transform:translateY(10px);transition:opacity .6s var(--ease),transform .9s var(--ease)}
.opage.on{opacity:1;transform:none;z-index:2}
.odh{display:flex;justify-content:space-between;align-items:center;padding:15px 24px;border-bottom:1px solid rgba(18,20,18,.07);font:700 13px var(--sans);color:var(--ink2)}
.odh .odt{display:flex;align-items:center;gap:10px}.odh .fi{width:10px;height:13px;border-radius:2px;background:linear-gradient(180deg,#c9ccc8,#a9ada8)}
.odp{font-weight:500;color:var(--mute)}
.odb{padding:34px 48px 0}
.odb p{font:400 18px/1.78 Georgia,"Times New Roman",serif;color:#262926;margin:0 0 16px;letter-spacing:.002em}
.odb b{font-weight:700}
.odb mark{color:inherit;background:linear-gradient(rgba(36,64,52,.17),rgba(36,64,52,.17)) no-repeat 0 88%/0% 52%;transition:background-size .55s var(--ease);padding:0 1px}
.odb mark.hl{background-size:100% 52%}
.odn{position:absolute;left:0;right:0;bottom:18px;text-align:center;font:400 13px Georgia,serif;color:var(--mute)}
.olink{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible;z-index:3}
.olink path{fill:none;stroke:var(--forest);stroke-width:1.25;opacity:0}
.oprof{position:relative;z-index:2;border-radius:18px;background:linear-gradient(180deg,rgba(255,255,255,.94),rgba(255,255,255,.72));box-shadow:inset 0 1px 0 #fff,0 0 0 1px rgba(18,20,18,.08),0 30px 70px -40px rgba(18,20,18,.35);padding:22px 24px 18px}
.oph{display:grid;gap:4px;padding:0 4px 16px;border-bottom:1px solid rgba(18,20,18,.07)}
.oph .oe{font:700 11.5px var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--forest)}
.oph b{font:500 24px var(--disp);letter-spacing:-.01em;color:var(--ink)}.oph .osub{font:500 14px var(--sans);color:var(--mute)}
.orows{list-style:none;margin:0;padding:6px 0 0}
.orows li{display:grid;grid-template-columns:96px minmax(0,1fr);column-gap:14px;row-gap:2px;padding:11px 4px;border-bottom:1px solid rgba(18,20,18,.06);opacity:.14;transition:opacity .5s var(--ease)}
.orows li b{grid-row:span 2;align-self:center;font:700 11px var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--forest)}
.orows .ov{font:500 16px var(--sans);color:var(--ink);transform:translateX(-6px);transition:transform .6s var(--ease)}
.orows .os{font:500 12.5px var(--sans);color:var(--mute)}
.orows li.in{opacity:1}.orows li.in .ov{transform:none}
.orows li.now .ov{color:var(--forest)}
.opf{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:14px 4px 0;font:500 12.5px var(--sans);color:var(--mute)}
.opf b{color:var(--ink);font-weight:700}
@media (max-width:900px){.onx{grid-template-columns:minmax(0,1fr);gap:40px}.odoc{height:400px}.odb{padding:24px 24px 0}.odb p{font-size:16px}.olink{display:none}}
@media (prefers-reduced-motion:reduce){.opage,.orows li,.orows .ov,.odb mark{transition:none}}
/* page to fact, judges round 12 */
.orows li{opacity:1}.orows li:not(.in) .ov,.orows li:not(.in) .os{opacity:.2}.orows li:not(.in) b{color:rgba(36,64,52,.45)}
.orows .ov,.orows .os{transition:opacity .5s var(--ease),transform .6s var(--ease)}
@media(max-width:900px){.onx{gap:16px}.odoc{height:318px}.odb{padding:16px 20px 0}.odb p{font-size:15px;line-height:1.6;margin-bottom:10px}.odn{display:none}.oprof{padding:16px 18px 12px}.orows li{grid-template-columns:82px 1fr;padding:6px 2px}.orows .ov{font-size:14.5px}.orows .os{font-size:11.5px}.oph b{font-size:20px}}
/* one answer, traced (6 Nov 2026, judges round 12) */
.ctx2{padding:140px 0 150px}
.ans{position:relative;display:grid;grid-template-columns:minmax(0,1.02fr) minmax(0,.98fr);gap:72px;align-items:center;margin-top:60px}
.apanel{position:relative;z-index:2;min-height:470px;border-radius:18px;background:linear-gradient(180deg,rgba(255,255,255,.95),rgba(255,255,255,.74));box-shadow:inset 0 1px 0 #fff,0 0 0 1px rgba(18,20,18,.08),0 30px 70px -40px rgba(18,20,18,.35);padding:0 0 18px}
.atabs{display:flex;gap:26px;padding:0 26px;border-bottom:1px solid rgba(18,20,18,.07)}
.atabs>span{padding:17px 0 15px;font:700 13px var(--sans);color:var(--mute);transition:color .3s var(--ease),box-shadow .3s var(--ease)}
.atabs>span.on{color:var(--ink);box-shadow:inset 0 -1.5px 0 var(--forest)}
.aview{position:absolute;left:0;right:0;top:54px;padding:22px 28px 0;opacity:0;transition:opacity .4s var(--ease);pointer-events:none}
.aview.show{opacity:1;pointer-events:auto}
.aby{font:500 12.5px var(--sans);color:var(--mute);margin-bottom:8px}.aby b{color:var(--ink2);font-weight:700}
.aq{font:500 19px/1.4 var(--disp);color:var(--ink);letter-spacing:-.005em}
.aled{margin:18px 0 0;padding:12px 0;border-top:1px solid rgba(18,20,18,.07);border-bottom:1px solid rgba(18,20,18,.07);font:500 13px/1.9 var(--sans)}
.aled>div{display:grid;grid-template-columns:96px 1fr;gap:12px}
.aled dt{font:700 11px/2.3 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--forest)}.aled dd{margin:0;color:var(--ink2)}
.aled>div.wall dt,.aled>div.wall dd{color:#b5483f}
.aa{margin:18px 0 0;font:400 17px/1.7 var(--sans);color:var(--ink)}
.cit{display:inline-grid;place-items:center;min-width:20px;height:20px;border-radius:5px;background:rgba(36,64,52,.08);font:700 11.5px var(--sans);font-style:normal;color:var(--forest);vertical-align:2px;transition:background .3s var(--ease),color .3s var(--ease)}
.cit.act{background:var(--forest);color:#fff}
.asrc{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:6px;font:500 13px var(--sans);color:var(--ink2)}
.asrc li{display:flex;align-items:center;gap:10px}.asrc li i{font-style:normal;display:inline-grid;place-items:center;min-width:18px;height:18px;border-radius:4px;background:rgba(36,64,52,.08);font:700 10.5px var(--sans);color:var(--forest)}
.afoot{margin-top:16px;font:500 12.5px var(--sans);color:var(--mute)}.afoot b{color:var(--ink)}
.aref{margin:18px 0 0;font:400 17px/1.7 var(--sans);color:var(--ink)}.aref b{color:#b5483f;font-weight:700}
.aq,.aled>div,.s1,.s2,.cit,.asrc li,.aref,.afoot{opacity:0;transform:translateY(4px);transition:opacity .4s var(--ease),transform .5s var(--ease),background .3s var(--ease),color .3s var(--ease)}
.aq.in,.aled>div.in,.s1.in,.s2.in,.cit.in,.asrc li.in,.aref.in,.afoot.in{opacity:1;transform:none}
.apages{height:470px}
.apages .opage.on{transform:none}
.acr{padding:14px 24px 0;font:500 12px var(--sans);color:var(--mute)}
.apages .odh{padding-top:8px}
.afn{position:absolute;left:24px;right:24px;bottom:18px;font:500 12.5px var(--sans);color:var(--mute)}
.awall{margin:4px 0 22px;font:700 11.5px var(--sans);letter-spacing:.16em;text-transform:uppercase;color:#b5483f}
.ared{display:grid;gap:17px}.ared span{display:block;height:13px;border-radius:3px;background:#dcdcd7}.ared span:nth-child(2){width:86%}.ared span:nth-child(4){width:72%}.ared span:nth-child(5){width:54%}
@media (max-width:900px){.ctx2{padding:96px 0}.ans{grid-template-columns:minmax(0,1fr);gap:16px}.apanel{min-height:520px}.atabs{gap:16px;padding:0 18px;overflow-x:auto}.aview{padding:18px 18px 0}.apages{height:230px}.apages .odb p:nth-child(2),.afn{display:none}.alink{display:none}}
@media (prefers-reduced-motion:reduce){.aq,.aled>div,.s1,.s2,.cit,.asrc li,.aref,.afoot,.aview{transition:none}}
.nw{white-space:nowrap}

/* judges round 13 (6 Nov 2026): no light sweep on glass cards; tighter cards */
.gl::after{display:none!important}
.onx .odoc{height:360px}
@media (max-width:900px){.onx .odoc{height:318px}.apanel{min-height:470px}}
.apages .pc .odb{position:absolute;left:0;right:0;top:92px;bottom:56px;display:grid;place-content:center;text-align:center;padding:0 40px}
.apages .pc .awall{margin:0 0 10px}.apages .pc .aw2{font:400 18px/1.6 Georgia,"Times New Roman",serif;color:var(--ink2);margin:0}
/* judges round 14 (6 Nov 2026) */
@media (max-width:600px){.fnum::after{display:none}}
@media (min-width:901px){.sec.dark .lg2{grid-template-columns:repeat(4,minmax(0,1fr))}}
/* judges round 15 (6 Nov 2026) */
@media (max-width:900px){.fsound{top:auto;bottom:10px}}
#positions .fclip video,#pe .fclip video,#finance .fclip video{transform:scale(1.24);transform-origin:50% 30%}
/* the film header behaves like the AtlasAI video header (6 Nov 2026): full width first, then a framed 16:9 card under the headline; the frame is always 16:9, so the film is never cropped */
@media (min-width:901px){
.fsec{height:180vh}
.fsec .fframe{width:min(100vw,calc(100vh*16/9));height:auto;aspect-ratio:16/9}
.fsec .fv{object-fit:contain;background:#0d1210}
.fsec .fhead .h2{color:#fff;font-size:clamp(2rem,3.4vw,3.1rem);margin:0 0 14px;max-width:24ch;text-wrap:balance}
.fsec .fhead .kick{max-width:46rem;margin:0}
}
@media (min-width:901px){.fsec .fhead .kick{font-size:18px;line-height:1.55;color:rgba(255,255,255,.82)}}
.qv{margin:26px 0 0;font:400 italic clamp(1.15rem,1.6vw,1.45rem)/1.45 var(--sans);color:rgba(255,255,255,.88);max-width:46rem}
@media (min-width:901px){.fsec .fframe{width:min(100vw,calc((100vh - 48px)*16/9))}}
/* the sound control shrinks with the film on desktop and sits under the film on phones (6 Nov 2026) */
@media (min-width:901px){.fsec .fsound{transform:none}}
@media (max-width:900px){.fsec .fframe{overflow:visible;margin-bottom:64px}.fsec .fv{border-radius:14px}.fsec .fsound{top:calc(100% + 14px);bottom:auto;left:0}}
/* four people on the team (6 Nov 2026) */
@media (min-width:1101px){.team{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (min-width:701px) and (max-width:1100px){.team{grid-template-columns:repeat(2,minmax(0,1fr))}}
.team .mono{width:84px;height:84px;border-radius:50%;display:grid;place-items:center;background:var(--forest);color:#fff;font:500 28px var(--disp);letter-spacing:-.01em}
.qeb{margin:0 0 18px;font:700 12px var(--sans);letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.7)}.band .qv{font-style:normal}
.guides{margin-top:28px;display:flex;flex-wrap:wrap;gap:10px 22px;font-size:15px;color:var(--mute)}
/* mobile judges (6 Nov 2026): less text on phones, nothing cropped, nothing under the bar, 44 px targets */
.dsk{display:inline}
@media (max-width:900px){
.band.prism.lt .cards .gl p,.band.prism.lt .kick,.cards .n{display:none}
.asrc,.afoot{display:none}.apanel{min-height:430px}.apages{height:200px}
.onx .odoc{height:285px}.oprof .oe,.oprof .osub{display:none}.orows li{padding:4px 2px}
.feat .fside p:not(.fsub),.feat .tiles li span{display:none}
.relc p{display:none}.relc{padding:18px 20px}
.team p{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.ftxt .h2{font-size:2.3rem}
.n3 .mnu,.n3 a.btn,.fsound,.faq summary{min-height:44px}.n3 a.lg{padding:7px;margin:-7px}
.orows .os,.acr{font-size:13px}
}
@media (max-width:620px){.fclip video,.stack .sv video,#positions .fclip video,#pe .fclip video,#finance .fclip video{transform:none}}
@media (max-width:560px){.dsk{display:none}.hero .trust{display:none}.f3 .top{grid-template-columns:1fr 1fr}.f3 a{display:block;min-height:44px;padding-top:10px}}
@media (max-width:380px){.apanel{min-height:470px}}
/* SEO judge round 16 (6 Nov 2026): guide links on home; phones skip sections that also live elsewhere */
.guides-sec{padding:0 0 72px;background:var(--paper)}
@media (max-width:620px){
#positions,#build,#routes,.band.prism.lt{display:none}
.prac .img{display:none}.prac{grid-template-columns:1fr 1fr;gap:12px}
.roi ul{display:none}
#security .secg>div:nth-child(n+4){display:none}
.sec{padding:64px 0}.feat{padding:56px 0}
}
/* 6 Nov 2026, Stephen: copy ran over the page edges on phones. Fixed heights clipped the wrapped text; on phones the
   pages share one grid cell, so the card is always as tall as the longest page at any width. */
@media (max-width:900px){
.onx .odoc,.apages{display:grid;height:auto}
.onx .odoc>.opage,.apages>.opage{position:relative;inset:auto;grid-area:1/1}
.apages .pc .odb{position:static;display:block;padding:24px 24px 40px}
}
@media (max-width:900px){.apages .pc .odb p.aw2{display:block}}  /* the refusal sentence is the second child of the refused page; the phone rule that hides second paragraphs must not hide the refusal (6 Nov 2026) */
/* 6 Nov 2026: wide post tables stack on phones, each cell labeled with its column heading, so no column sits off screen */
@media (max-width:620px){
.post-table.tstack{overflow:visible}
.post-table.tstack table,.post-table.tstack tbody,.post-table.tstack tr,.post-table.tstack td{display:block;width:100%}
.post-table.tstack thead{display:none}
.post-table.tstack tr{padding:14px 0;border-bottom:1px solid var(--hair)}
.post-table.tstack td{border:0;padding:3px 0}
.post-table.tstack td::before{content:attr(data-label);display:block;font:600 11.5px/1.4 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--ink3,#6b6f6b);margin-bottom:2px}
}
/* judges round 17 (6 Nov 2026): blog cards carry an H2; Security tiles match the card type scale; Solutions practice headings balance */
.relc .relt{display:block;font:500 23px/1.22 var(--disp);letter-spacing:-.015em;margin:14px 0 10px;color:inherit}
.secg h3{font:500 21px/1.2 var(--disp);letter-spacing:-.01em}
#pe .h2,#funds .h2,#litigation .h2,#finance .h2,#positions .h2,#covenants .h2,#km .h2{font-size:clamp(2.3rem,3.6vw,3.4rem);text-wrap:balance}

/* 7 Nov 2026 (Stephen: "On mobile the button looks really bad under the video"): on tablets and phones the sound button sits inside the
   frame, centred at the bottom, on a dark backing that reads over the light and the night scenes, with the film length shown */
@media (max-width:900px){
  .fsec .fframe{overflow:hidden;margin-bottom:0}
  .fsec .fsound{top:auto;bottom:14px;left:50%;transform:translateX(-50%);background:rgba(10,15,13,.86);color:#fff;
    padding:8px 16px 8px 8px;font-size:14px;gap:10px;box-shadow:0 6px 22px rgba(0,0,0,.28);white-space:nowrap}
  .fsec .fsound small{display:inline;color:rgba(255,255,255,.7);font-size:13px}
  .fsec .fsound .pi{background:#fff;width:30px;height:30px}
  .fsec .fsound .pi::after{border-left-color:var(--forest3);left:12px;top:9px}
}

/* 7 Nov 2026 phone review (Stephen: "check the mobile version of our site every page"): the privacy request form gets full-width
   fields at 16 px (no zoom on focus) and a 46 px button; blog cards on phones lose the desktop min-height that left them half empty;
   the post crumb, "All posts" and the related-card kicker meet the 44 px tap and 12 px text floors */
#dsr-form{display:grid;gap:14px;margin:18px 0 8px;max-width:34rem}
#dsr-form label{display:grid;gap:6px;font:600 15px var(--sans);color:var(--ink)}
#dsr-form input,#dsr-form select,#dsr-form textarea{font:400 16px var(--sans);padding:12px 14px;border:1px solid #cfd6d2;border-radius:10px;background:#fff;color:var(--ink);width:100%;box-sizing:border-box;min-height:46px}
#dsr-form textarea{min-height:96px}
#dsr-form button{justify-self:start;min-height:46px;padding:0 22px;border:0;border-radius:999px;background:var(--forest);color:#fff;font:700 15px var(--sans);cursor:pointer}
#dsr-form p{font-size:14px;color:var(--mute);margin:0}
@media (max-width:900px){
  .relc{min-height:0}
  .post-hero .crumb{min-height:44px;align-items:center}
  .relh .lnk{display:inline-flex;align-items:center;min-height:44px}
  .rel-card .r-kicker{font-size:12px}
}

/* 7 Nov 2026 About page (Stephen: "This looks terrible"): the roadmap in large type on a light ground, and the team as four equal
   cards, square portraits in one grayscale treatment, full bios on every width (the 3-line clamp cut the bios on phones) */
.road{list-style:none;margin:56px 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:36px}
.road li{border-top:2px solid var(--forest);padding-top:22px}
.road .rn{font:700 13px var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--forest)}
.road h3{font:500 clamp(22px,2vw,28px)/1.2 var(--disp);letter-spacing:-.015em;margin:12px 0 10px}
.road p{font-size:17px;line-height:1.6;color:var(--ink2);margin:0;max-width:34ch}
.team2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:56px}
.tm{display:grid;grid-template-columns:150px minmax(0,1fr);grid-template-rows:auto 1fr;column-gap:28px;row-gap:14px;padding:30px;align-items:start}
.tm img,.tm .mono{grid-row:1/3;width:150px;height:150px;border-radius:20px;object-fit:cover;filter:grayscale(1) contrast(1.05)}
.tm .mono{display:grid;place-items:center;background:var(--forest);color:#fff;font:500 40px var(--disp);filter:none}
.tm h3{font:500 28px/1.15 var(--disp);letter-spacing:-.015em;margin:0 0 6px}
.tm .ro{font:700 15px var(--sans);color:var(--forest)}
.tm .co{font-size:14.5px;color:var(--mute);margin-top:6px}
.tm p{grid-column:2;font-size:16.5px;line-height:1.6;color:var(--ink2);margin:0}
@media (max-width:1000px){.team2{grid-template-columns:minmax(0,1fr)}}
@media (max-width:900px){.road{grid-template-columns:minmax(0,1fr);gap:30px;margin-top:36px}.road p{max-width:none}
  .team2{gap:16px;margin-top:36px}.tm{grid-template-columns:96px minmax(0,1fr);column-gap:18px;padding:22px}
  .tm img,.tm .mono{grid-row:auto;width:96px;height:96px;border-radius:14px}.tm .mono{font-size:30px}
  .tm h3{font-size:24px}.tm p{grid-column:1/-1;font-size:16px}}
/* phones (7 Nov 2026, Stephen: "The home page on mobile is Jammmed please make this more elegant on mobile"): a slim bar;
   a header with the logo and Menu only (the Book button returns in the bottom bar once the visitor scrolls); the hero copy
   set left at the foot of the first screen over a darker scrim, one primary button and a text link */
@media (max-width:600px){
  .n3-bar{font-size:12.5px;padding:.56rem 1rem;letter-spacing:.005em}.n3-bar b{font-weight:600}
  .n3{padding:12px 20px}.n3 .r a.btn{display:none}
  .n3 .lg{font-size:20px;gap:9px}.n3 .lg img{width:26px;height:26px}
  .mnu{font:600 14px var(--sans);letter-spacing:.01em;padding:0 18px;border-color:rgba(255,255,255,.4);background:rgba(255,255,255,.07);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
  .n3.solid .mnu{border-color:var(--line);background:transparent}
  .hero,.hero.sm{height:auto;min-height:calc(100svh - 36px);max-height:none;display:flex;flex-direction:column;justify-content:flex-end;padding:108px 22px 30px}
  .hero .copy,.hero.sm .copy{position:relative;left:auto;bottom:auto;transform:none;width:100%;text-align:left}
  .hero h1{font-size:clamp(2.2rem,10.2vw,2.75rem);line-height:1.04;letter-spacing:-.03em}
  .hero .sub{font-size:16px;line-height:1.55;margin:16px 0 26px;max-width:34em;color:rgba(255,255,255,.82);text-wrap:pretty}
  .hero .acts{flex-direction:column;align-items:stretch;gap:4px}
  .hero .acts .btn{justify-content:center;padding:.95rem 1.2rem;font-size:15.5px}
  .hero .acts .btn.gh{border-color:transparent;background:transparent;padding:.75rem 0 .2rem;font-weight:600;color:rgba(255,255,255,.88)}
  .hero .acts .btn.gh::after{content:"\2192"}
  body .hero::after,body .hero:has(video[poster])::after{background:linear-gradient(180deg,rgba(6,9,14,.55) 0,rgba(6,9,14,.08) 18%,rgba(6,9,14,.14) 34%,rgba(6,9,14,.66) 52%,rgba(6,9,14,.86) 72%,rgba(6,9,14,.93) 100%)!important}  /* the desktop home scrim is !important (line 423) */
}
/* the open menu on phones and tablets (7 Nov 2026): the header sits above the benchmark bar so Close is never under it,
   the section arrows sit at the right of each row, and the menu ends with the Book button */
.mcta{display:none}
@media (max-width:980px){
  body.menu-open .n3{z-index:70}
  body.menu-open .mclose{top:12px;right:20px;min-height:44px;padding:0 18px;font:600 14px var(--sans);border-color:rgba(255,255,255,.4)}
  body.menu-open .n3 .l{padding:84px 24px 28px}
  body.menu-open .n3 .l .it>button{display:flex;justify-content:space-between;align-items:center}
  body.menu-open .n3 .l .it>button::after{display:inline-block;width:9px;height:9px;margin-right:6px;transform:rotate(45deg) translateY(-3px);transition:transform .3s var(--ease)}
  body.menu-open .n3 .l .it.open>button::after{transform:rotate(-135deg) translateY(-3px)}
  body.menu-open .n3 .l .it>button,body.menu-open .n3 .l .it:hover>button,body.menu-open .n3 .l .it.open>button{background:transparent}
  body.menu-open .n3 .l .mcta{display:flex;justify-content:center;margin-top:28px;padding:.95rem 1.2rem;font-size:15.5px}
}
/* 9 Nov 2026, Stephen: the home hero "looks crowded" on laptops. The headline grew with width only, hit its cap at ~1490 px and wrapped
   to three lines in a 1080 px column, so the block reached up to the nav. Now the headline also follows the window height, the column
   is wide enough for two balanced lines, and the subhead is a size smaller. Phones keep their own rules below 561 px. */
@media (min-width:561px){
  .hero .copy{width:min(1240px,90vw)}
  .hero h1{font-size:clamp(2.9rem,min(5.4vw,9.2vh),5.2rem)}
  .hero .sub{max-width:800px;font-size:19px;margin:20px auto 28px}
}
/* 9 Nov 2026, Stephen's screenshot of the security page: the buttons of the closing section were cut off. Above 980 px the closing
   text is centred with translateY(-50%), and the reveal (.rv.in{transform:none}) replaced that transform once the block scrolled into
   view, so the block dropped by half its height and overflow:hidden cut the buttons. The reveal now keeps the centring. */
@media (min-width:981px){.close .t.rv{transform:translateY(calc(-50% + 18px))}.close .t.rv.in{transform:translateY(-50%)}}
@media (min-width:981px) and (prefers-reduced-motion:reduce){.close .t.rv{transform:translateY(-50%)}}
