/* The Decision Line — Opus variant.
   White paper, navy ink, cobalt for entries, brick red for stops, brass for the idea zone.
   Every block is readable without JS; .js only adds interaction states. */

@font-face{font-family:'Alexandria';font-weight:400;font-display:swap;src:url(assets/fonts/font-0.woff2) format('woff2')}
@font-face{font-family:'Alexandria';font-weight:500;font-display:swap;src:url(assets/fonts/font-1.woff2) format('woff2')}
@font-face{font-family:'Alexandria';font-weight:600;font-display:swap;src:url(assets/fonts/font-2.woff2) format('woff2')}
@font-face{font-family:'Alexandria';font-weight:700;font-display:swap;src:url(assets/fonts/font-3.woff2) format('woff2')}
@font-face{font-family:'Manrope';font-weight:400;font-display:swap;src:url(assets/fonts/font-4.woff2) format('woff2')}
@font-face{font-family:'Manrope';font-weight:500;font-display:swap;src:url(assets/fonts/font-5.woff2) format('woff2')}
@font-face{font-family:'Manrope';font-weight:600;font-display:swap;src:url(assets/fonts/font-6.woff2) format('woff2')}
@font-face{font-family:'Manrope';font-weight:700;font-display:swap;src:url(assets/fonts/font-7.woff2) format('woff2')}
@font-face{font-family:'Manrope';font-weight:800;font-display:swap;src:url(assets/fonts/font-8.woff2) format('woff2')}

:root{
  --paper:#fff;
  --mist:#f4f6fa;
  --mist-2:#eaeef6;
  --line:#e2e7f0;
  --ink:#0e1830;
  --slate:#556078;
  --cobalt:#2443d6;
  --cobalt-deep:#1a31a6;
  --cobalt-wash:#e9eeff;
  --stop:#bf3a2b;
  --stop-wash:rgba(191,58,43,.09);
  --brass:#8a6713;
  --brass-wash:rgba(176,134,34,.14);
  --ar:'Alexandria',system-ui,sans-serif;
  --en:'Manrope',system-ui,sans-serif;
  --ease:cubic-bezier(.16,1,.3,1);
  --bar-h:72px;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:calc(var(--bar-h) + 16px);scrollbar-color:#b7c1d6 var(--mist);-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:400 16px/1.85 var(--ar);-webkit-font-smoothing:antialiased;overflow-x:clip}
html[lang=en] body{font-family:var(--en);line-height:1.65}
::selection{background:var(--cobalt);color:#fff}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none;text-underline-offset:.3em;text-decoration-thickness:1px}
button{font:inherit;color:inherit;cursor:pointer}
a,button{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
h1,h2,h3,p,figure,dl,dd,ol,ul{margin:0}
ol,ul{padding:0;list-style:none}
h1,h2,h3{text-wrap:balance}
p{text-wrap:pretty}
:focus-visible{outline:2px solid var(--cobalt);outline-offset:4px;border-radius:4px}
.defs{position:absolute;width:0;height:0;overflow:hidden}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.wrap{width:min(1240px,calc(100% - 96px));margin-inline:auto}
.ic{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.ic.solid{fill:currentColor;stroke:none}
html[dir=rtl] .ic.flip{transform:scaleX(-1)}
.ic.down{transform:rotate(90deg)}
.skip{position:fixed;inset-inline-start:16px;top:-80px;z-index:100;background:var(--ink);color:#fff;padding:10px 16px;border-radius:8px}
.skip:focus{top:12px}

/* Buttons & links */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:14px;min-height:54px;padding:14px 24px;border-radius:999px;background:var(--cobalt);color:#fff;font-size:15px;font-weight:500;line-height:1.3;white-space:nowrap;box-shadow:0 10px 24px -12px rgba(36,67,214,.55);transition:background-color .2s,transform .25s var(--ease),box-shadow .25s var(--ease)}
.btn:hover{background:var(--cobalt-deep);transform:translateY(-1px);box-shadow:0 14px 28px -12px rgba(36,67,214,.6)}
.btn:active{transform:scale(.97);transition-duration:.08s}
.btn .ic{transition:translate .25s var(--ease)}
.btn:hover .ic{translate:4px 0}
html[dir=rtl] .btn:hover .ic{translate:-4px 0}
.btn-sm{min-height:42px;padding:9px 18px;font-size:13px;box-shadow:none}
.link{display:inline-flex;align-items:center;gap:10px;min-height:44px;font-size:15px;color:var(--ink);font-weight:500}
.link:hover{color:var(--cobalt);text-decoration:underline}
.link .ic{width:18px;height:18px}
.link-sm{font-size:13px;min-height:0;font-weight:400}

/* Header */
.bar{position:sticky;top:0;z-index:40;background:rgba(255,255,255,.94);backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)}
.bar-in{height:var(--bar-h);display:flex;align-items:center;gap:32px}
.mark{display:flex;flex-direction:column;line-height:1.2;flex:none}
.mark-name{font-size:19px;font-weight:600;letter-spacing:-.01em}
.mark-latin{font:500 11px/1.4 var(--en);color:var(--slate);letter-spacing:.06em;margin-top:3px}
html[lang=en] .mark-latin{display:none}
html[lang=en] .mark-name{font-size:18px;font-weight:700;letter-spacing:-.02em}
.bar-nav{display:flex;gap:6px;margin-inline:auto}
.bar-nav a{font-size:14px;color:var(--slate);padding:10px 14px;border-radius:999px;transition:color .2s,background-color .2s}
.bar-nav a:hover{color:var(--ink);background:var(--mist)}
.bar-nav a[aria-current=true]{color:var(--ink);background:var(--mist)}
.bar-actions{display:flex;align-items:center;gap:10px;margin-inline-start:auto}
.bar-nav+.bar-actions{margin-inline-start:0}
.lang{min-width:44px;min-height:44px;border:0;background:none;border-radius:999px;font:600 13px var(--en);color:var(--ink)}
.lang:lang(ar){font-family:var(--ar);font-weight:500}
.lang:hover{background:var(--mist)}
.menu-btn{display:none;width:44px;height:44px;border:0;border-radius:999px;background:var(--mist);align-items:center;justify-content:center}
.bar-progress{position:absolute;inset-inline:0;bottom:-1px;height:2px;background:var(--cobalt);transform:scaleX(var(--progress,0));transform-origin:left;pointer-events:none}
html[dir=rtl] .bar-progress{transform-origin:right}
.js .bar-cta{transition:opacity .25s,visibility .25s,transform .3s var(--ease)}
.js:not([data-cta=show]) .bar-cta{opacity:0;visibility:hidden;transform:translateY(-4px)}
.sheet{border-top:1px solid var(--line);background:#fff}
.sheet[hidden]{display:none}
.sheet .wrap{display:flex;flex-direction:column;padding-block:8px 20px}
.sheet a:not(.btn){padding:15px 2px;font-size:16px;border-bottom:1px solid var(--line)}
.sheet .btn{margin-top:18px}

/* Hero */
.hero{position:relative;isolation:isolate;overflow:hidden;border-bottom:1px solid var(--line)}
.levels{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none;
  -webkit-mask-image:linear-gradient(to left,#000 30%,transparent 78%);mask-image:linear-gradient(to left,#000 30%,transparent 78%)}
html[dir=rtl] .levels{-webkit-mask-image:linear-gradient(to right,#000 30%,transparent 78%);mask-image:linear-gradient(to right,#000 30%,transparent 78%)}
.hero-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);align-items:end;min-height:min(760px,calc(100svh - var(--bar-h)));gap:24px}
.hero-copy{align-self:center;padding-block:72px 96px;max-width:620px}
.hero h1{font-weight:700;font-size:clamp(40px,5.1vw,72px);line-height:1.32;letter-spacing:-.02em}
.hero h1 span{display:block}
/* Alexandria needs room for Arabic descenders and upper marks between lines. */
html[lang=ar] .hero h1{line-height:1.55}
/* One sentence over two lines: the second half carries the entry-line cobalt */
.h1-b{color:var(--cobalt)}
html[lang=en] .hero h1{line-height:1.04;letter-spacing:-.035em;font-weight:800}
.lead{font-size:clamp(16px,1.35vw,19px);line-height:1.95;color:var(--slate);margin-top:28px;max-width:46ch}
html[lang=en] .lead{line-height:1.6}
.hero-actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px 28px;margin-top:36px}
.hero-fine{font-size:13px;color:var(--slate);margin-top:18px}
.hero-art{position:relative;align-self:stretch;min-height:560px;display:flex;justify-content:center;align-items:flex-end}
/* Seated cutout. The frame is width-driven, so the tag and the canvas levels stay locked to
   the figure at every size. The legs leave through the hero's lower edge (the bottom 7% is
   clipped by the hero), and the thigh's crop on the left dissolves under a short mask. */
.portrait-frame{--ph:clamp(520px,calc(100svh - var(--bar-h)),760px);position:relative;width:min(100%,calc(var(--ph) * .75));transform:translateY(7%)}
.portrait{position:relative;width:100%;height:auto;
  -webkit-mask-image:linear-gradient(to right,transparent,#000 9%);mask-image:linear-gradient(to right,transparent,#000 9%);
  filter:drop-shadow(0 30px 40px rgba(14,24,48,.12));translate:var(--px,0) 0;transition:translate .6s var(--ease)}
/* The portrait is not mirrored, so the tag stays on the physical left in both directions:
   over the cropped thigh, clear of the face and of the watch on his left wrist. */
.hero-tag{position:absolute;bottom:calc(7% + 16px);left:0;display:flex;flex-direction:column;gap:2px;padding:14px 18px 12px;background:rgba(255,255,255,.92);border-radius:14px;box-shadow:0 18px 40px -24px rgba(14,24,48,.35);min-width:0}
.hero-tag strong{font-size:16px;font-weight:600;line-height:1.5}
.hero-tag>span{font-size:13px;color:var(--slate);line-height:1.5}
.hero-tag a{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--cobalt);margin-top:6px;min-height:28px}
.hero-tag a:hover{text-decoration:underline}
.hero-tag .ic{width:16px;height:16px}

/* Channel — signature */
.channel{padding-block:120px 110px;position:relative}
.channel-head{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:48px;align-items:end;margin-bottom:56px}
.channel h2,.about h2,.app h2,.faq h2,.download h2{font-size:clamp(30px,3.3vw,48px);font-weight:700;line-height:1.4;letter-spacing:-.015em}
html[lang=en] :is(.channel,.about,.app,.faq,.download) h2{line-height:1.12;letter-spacing:-.03em;font-weight:800}
.channel-head p{color:var(--slate);font-size:16px;max-width:44ch}
.scrolly{display:grid;grid-template-columns:minmax(0,.78fr) minmax(0,1.22fr);gap:56px;align-items:start}
.stage-col{grid-column:2;grid-row:1;position:relative;align-self:stretch}
.steps{grid-column:1;grid-row:1}
.stage{background:#fff;border:1px solid var(--line);border-radius:20px;padding:20px;box-shadow:0 30px 60px -40px rgba(14,24,48,.25)}
.js .stage{position:sticky;top:calc(var(--bar-h) + 20px)}
.stage-top{display:flex;justify-content:space-between;gap:16px;align-items:center}
.step-buttons{display:flex;gap:4px;background:var(--mist);border-radius:999px;padding:4px;flex-wrap:wrap}
.step-buttons button{display:inline-flex;align-items:center;gap:8px;border:0;background:none;border-radius:999px;padding:7px 14px 7px 12px;font-size:13px;color:var(--slate);min-height:36px;transition:background-color .2s,color .2s,box-shadow .2s}
.step-buttons b{font:700 11px/1 var(--en);width:20px;height:20px;border-radius:50%;display:inline-grid;place-items:center;background:#fff;color:var(--slate)}
.step-buttons button:hover{color:var(--ink)}
.step-buttons button[aria-pressed=true]{background:#fff;color:var(--ink);box-shadow:0 2px 8px -3px rgba(14,24,48,.25)}
.step-buttons button[aria-pressed=true] b{background:var(--ink);color:#fff}
html:not(.js) .step-buttons,html:not(.js) .outcome{display:none}

.chart{position:relative;margin-top:16px;margin-inline:auto;width:min(100%,calc((100svh - 450px) * 1.818));min-width:min(100%,420px);aspect-ratio:800/440;border-radius:12px;background:#fff;touch-action:pan-y;cursor:ew-resize;user-select:none;-webkit-user-select:none}
.chart:focus-visible{outline-offset:6px}
.chart-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.grid path{stroke:var(--line);stroke-width:1;vector-effect:non-scaling-stroke}
.future{fill:var(--mist)}
.zone{fill:var(--brass-wash)}
.zone-edge{stroke:#c6a24a;stroke-width:1;stroke-dasharray:3 4;fill:none;vector-effect:non-scaling-stroke}
.risk{fill:var(--stop-wash);transform-box:fill-box;transform-origin:top}
.entry-line{stroke:var(--cobalt);stroke-width:2.2;vector-effect:non-scaling-stroke}
.stop-line{stroke:var(--stop);stroke-width:2;stroke-dasharray:7 6;vector-effect:non-scaling-stroke}
.ln{transform-box:fill-box;transform-origin:left center}
.price{fill:none;stroke:var(--ink);stroke-width:2;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}
.path-b{stroke:var(--ink)}
.update-stem{stroke:var(--slate);stroke-width:1;stroke-dasharray:2 4;vector-effect:non-scaling-stroke}
.update-dot{fill:#fff;stroke:var(--ink);stroke-width:2;vector-effect:non-scaling-stroke}
.idea-dot{fill:#fff;stroke:#b08622;stroke-width:2;vector-effect:non-scaling-stroke}
.cursor{stroke:var(--ink);stroke-width:1;opacity:.35;vector-effect:non-scaling-stroke}
.now{fill:var(--ink)}
.stop-g{transition:transform .5s var(--ease)}
.zone-g,.risk,.entry-line,.stop-line,.update-g,.idea-dot{transition:opacity .35s,transform .55s var(--ease)}

/* HTML tags over the chart keep legible sizes at every width */
.tag{position:absolute;font-size:12px;line-height:1.35;font-weight:500;white-space:nowrap;padding:3px 8px;border-radius:6px;background:#fff;pointer-events:none;transition:opacity .3s,top .5s var(--ease);unicode-bidi:plaintext}
html[lang=en] .tag{font-weight:600}
.tag-zone{left:32%;top:72.5%;color:var(--brass);background:transparent;padding-inline:0}
.tag-entry{right:1%;top:calc(65.9% - 26px);color:var(--cobalt)}
.tag-stop{left:50.5%;top:calc(76.1% + 4px);color:var(--stop)}
.tag-update{left:75.2%;top:2%;transform:translateX(-50%);color:#fff;background:var(--ink)}
.tag-b{left:74.3%}
/* Legend for the shaded band between entry and stop. It sits in the empty lower-left
   corner, so it never crosses the price path, the update stem or the level tags. */
.tag.tag-risk{left:1%;top:auto;bottom:3%;display:inline-flex;align-items:center;gap:6px;color:var(--stop)}
html[dir=rtl] .tag.tag-risk{flex-direction:row-reverse}
.tag-risk::before{content:'';width:14px;height:9px;flex:none;background:rgba(191,58,43,.14);border-top:1.5px solid var(--cobalt);border-bottom:1.5px dashed var(--stop)}

/* outcome a/b visibility: without JS both paths are visible */
.js .scrolly[data-outcome=a] :is(.path-b,.tag-b),.js .scrolly[data-outcome=b] :is(.path-a,.tag-a){display:none}
html:not(.js) .path-b{stroke:var(--stop);opacity:.55}
html:not(.js) .tag-b{top:12%}
.js .scrolly[data-moved=true] .stop-g{transform:translateY(-45px)}
.js .scrolly[data-moved=true] .tag-stop{top:calc(65.9% + 6px)}
.js .scrolly[data-moved=true] .risk{transform:scaleY(0)}
.js .scrolly[data-stopped=true] .stop-line{stroke-dasharray:none;stroke-width:2.6}

/* Visibility driven by time (JS sets data flags) */
.js .scrolly:not([data-zone=true]) :is(.zone-g,.idea-dot,.tag-zone){opacity:0}
.js .scrolly:not([data-lines=true]) :is(.entry-line,.stop-line){opacity:0;transform:scaleX(0)}
.js .scrolly:not([data-lines=true]) :is(.tag-entry,.tag-stop,.risk){opacity:0}
.js .scrolly:not([data-update=true]) :is(.update-g,.tag-update){opacity:0}
/* Emphasis by active step */
.js .scrolly[data-step=entry] :is(.stop-line,.tag-stop){opacity:.35}
.js .scrolly[data-step=entry] .risk{opacity:0}
.js .scrolly[data-step=idea] .zone{fill:rgba(176,134,34,.22)}
.js .scrolly[data-step=stop] .entry-line{opacity:.55}
.js .scrolly:not([data-step=stop]):not([data-step=update]) .risk{opacity:0}
.js .scrolly[data-step=update] .risk{opacity:.6}
.js .scrolly:not([data-step=stop]):not([data-step=update]) .tag-risk,.js .scrolly[data-moved=true] .tag-risk{opacity:0}

.stage-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 20px;margin-top:14px}
.outcome{display:flex;align-items:center;flex-wrap:wrap;gap:6px}
.outcome>span{font-size:13px;color:var(--slate);margin-inline-end:6px}
.outcome button{display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:6px 14px;border:1px solid var(--line);background:#fff;border-radius:999px;font-size:13px;color:var(--slate);transition:border-color .2s,color .2s,background-color .2s}
.outcome button:hover{border-color:#c5cddd;color:var(--ink)}
.outcome button[aria-pressed=true]{border-color:var(--ink);color:var(--ink);background:var(--mist)}
.sw{width:18px;height:2px;border-radius:2px;display:block;background:var(--ink)}
.sw-b{background:repeating-linear-gradient(90deg,var(--stop) 0 5px,transparent 5px 8px)}
.stage-note{font-size:12px;color:var(--slate)}

.feed{margin-top:16px;border-top:1px solid var(--line);padding-top:14px}
.feed-head{display:flex;align-items:center;gap:10px;font-size:13px}
.feed-head strong{font-weight:600}
.feed-head>span:last-child{color:var(--slate);font-size:12px;margin-inline-start:auto}
.feed-avatar{width:28px;height:28px;flex:none;border-radius:8px;overflow:hidden;background:var(--ink)}
.feed-avatar img{width:100%;height:100%;object-fit:cover}
.posts{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.post p{display:inline-block;max-width:100%;font-size:14px;line-height:1.75;background:var(--mist);padding:9px 14px;border-radius:4px 14px 14px 14px}
html[dir=rtl] .post p{border-radius:14px 4px 14px 14px}
html[lang=en] .post p{line-height:1.5}
.post[data-kind=update] p{background:var(--ink);color:#fff}
.feed-empty{font-size:13px;color:var(--slate);padding:9px 0}
.js .post:not(.on){display:none}
.js .scrolly[data-outcome=a] .post-b,.js .scrolly[data-outcome=b] .post-a{display:none}
.js .feed:has(.post.on) .feed-empty{display:none}
html:not(.js) .feed-empty{display:none}
.post.on{animation:post-in .45s var(--ease) both}
@keyframes post-in{from{opacity:0;transform:translateY(10px) scale(.98);filter:blur(3px)}to{opacity:1;transform:none;filter:none}}

.steps{display:flex;flex-direction:column}
.step{display:grid;grid-template-columns:40px minmax(0,1fr);column-gap:22px;align-content:center;padding-block:28px;border-top:1px solid var(--line)}
.step>h3,.step>p{grid-column:2}
.js .step{min-height:68vh}
.step h3,.step p{transition:color .35s}
.js .step:not(.is-active) h3{color:var(--slate)}
.js .step.is-active p{color:#36415c}
.step-n{grid-column:1;grid-row:1;align-self:center;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font:700 15px/1 var(--en);border:1px solid var(--line);background:#fff;transition:background-color .3s,color .3s,border-color .3s}
.step.is-active .step-n{background:var(--ink);border-color:var(--ink);color:#fff}
.step[data-step=idea].is-active .step-n{background:#b08622;border-color:#b08622}
.step[data-step=entry].is-active .step-n{background:var(--cobalt);border-color:var(--cobalt)}
.step[data-step=stop].is-active .step-n{background:var(--stop);border-color:var(--stop)}
.step h3{font-size:clamp(24px,2.3vw,32px);font-weight:700;line-height:1.4;letter-spacing:-.01em}
html[lang=en] .step h3{letter-spacing:-.025em;line-height:1.2}
.step p{font-size:16px;color:var(--slate);margin-top:12px;max-width:40ch}

/* How the channel trades: planned parameters and T4T AI-reported averages sit in two
   separate ledgers between hairlines (the founder-figures motif), with the note beneath. */
.specs{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1fr) minmax(0,1fr);grid-template-areas:"head plan rep" "head note note";gap:0 48px;margin-top:96px;padding-top:40px;border-top:1px solid var(--line)}
.specs-head{grid-area:head}
.specs-head h3{font-size:clamp(22px,2vw,28px);font-weight:700;line-height:1.45;letter-spacing:-.01em}
html[lang=en] .specs-head h3{font-weight:800;line-height:1.2;letter-spacing:-.025em}
.specs-head p{font-size:15px;color:var(--slate);margin-top:10px;max-width:38ch}
.methods{display:flex;flex-wrap:wrap;gap:6px;margin-top:18px}
.methods li{font:600 12px/1 var(--en);letter-spacing:.06em;padding:8px 11px;border:1px solid var(--line);border-radius:999px}
.methods li:lang(ar){font-family:var(--ar);font-weight:500;letter-spacing:0}
.spec-plan{grid-area:plan}
.spec-rep{grid-area:rep}
.spec-group{min-width:0}
.spec-group h4{font-size:13px;font-weight:600;color:var(--slate);line-height:1.6}
.ledger{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:12px;border-block:1px solid #d6dce8}
.ledger li{display:flex;flex-direction:column;gap:4px;padding-block:16px;min-width:0}
.ledger li:first-child{padding-inline-end:18px}
.ledger li+li{border-inline-start:1px solid #d6dce8;padding-inline-start:18px}
.spec-n{font:700 clamp(26px,2.3vw,32px)/1.15 var(--en);letter-spacing:-.03em;font-variant-numeric:lining-nums tabular-nums;white-space:nowrap}
.spec-n small{font-size:13px;font-weight:600;letter-spacing:0;color:var(--slate);margin-inline-start:5px}
.spec-l{font-size:14px;line-height:1.6;color:var(--slate)}
.specs-note{grid-area:note;font-size:12px;line-height:1.75;color:var(--slate);margin-top:16px;max-width:88ch}
html[lang=en] .specs-note{line-height:1.6}

.channel-foot{display:flex;align-items:center;justify-content:space-between;gap:24px 40px;flex-wrap:wrap;margin-top:56px;padding:28px 32px;background:var(--mist);border-radius:20px}
.channel-foot p{font-size:16px;color:var(--slate);max-width:60ch}
.channel-foot strong{color:var(--ink);font-weight:600}

/* About */
.about{padding-block:120px;background:var(--mist)}
/* Title and copy are separate grid children: beside the photo on desktop, title-first on phones */
.about-grid{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);grid-template-rows:1fr auto auto 1fr;grid-template-areas:"photo ." "photo title" "photo copy" "photo .";column-gap:88px}
.about-title{grid-area:title}
.about-copy{grid-area:copy}
.office{position:relative;grid-area:photo;align-self:center}
.office-link{display:block;border-radius:18px;overflow:hidden;background:var(--mist-2);box-shadow:0 30px 60px -36px rgba(14,24,48,.35)}
.office img{width:100%;aspect-ratio:3/4;object-fit:cover;transition:transform .8s var(--ease)}
.office-link:hover img{transform:scale(1.025)}
.office figcaption{margin-top:14px;font-size:13px;color:var(--slate)}
.office figcaption a{display:inline-flex;align-items:center;gap:8px;min-height:32px}
.office figcaption a:hover{color:var(--cobalt);text-decoration:underline}
.office figcaption .ic{width:16px;height:16px}
.about-lead{font-size:clamp(19px,1.7vw,23px);line-height:1.8;margin-top:24px;font-weight:500}
html[lang=en] .about-lead{line-height:1.5}
.about-copy>p:not(.about-lead){color:var(--slate);margin-top:14px;max-width:52ch}
/* Owner-provided figures: two quiet columns between hairlines, no card, no counting.
   Each number is an LTR bdi inside a span that follows the page direction. */
.proof{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));max-width:560px;margin-top:30px;border-block:1px solid #d6dce8}
.proof li{display:flex;flex-direction:column;gap:6px;padding-block:18px}
.proof li:first-child{padding-inline-end:24px}
.proof li+li{border-inline-start:1px solid #d6dce8;padding-inline-start:24px}
.proof-n{font:700 clamp(30px,2.6vw,38px)/1.15 var(--en);letter-spacing:-.03em;font-variant-numeric:lining-nums tabular-nums;color:var(--ink)}
.proof-l{font-size:15px;line-height:1.6;color:var(--slate)}
html[lang=en] .proof-l{line-height:1.45}
.about-copy>.proof+p{margin-top:24px}
.badges{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}
.badges .badge{margin-top:0}
.badge{display:inline-flex;align-items:center;gap:12px;margin-top:28px;padding:10px 16px 10px 12px;background:#fff;border:1px solid var(--line);border-radius:12px}
html[dir=rtl] .badge{padding:10px 12px 10px 16px}
.badge strong{display:block;font-size:14px;font-weight:600;line-height:1.4}
.badge small{display:block;font-size:12px;color:var(--slate);line-height:1.5}
.flag{width:36px;height:24px;border-radius:3px;box-shadow:0 0 0 1px rgba(14,24,48,.12);flex:none}
.flag-us{width:42px}
.sources{margin-top:44px}
.sources h3{font-size:15px;font-weight:600}
.sources ul{margin-top:12px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}
.sources li+li{border-inline-start:1px solid var(--line)}
.sources a{display:flex;align-items:center;justify-content:space-between;gap:10px;height:100%;min-height:64px;padding:14px 18px;transition:background-color .2s}
.sources a:hover{background:var(--cobalt-wash)}
.sources a:focus-visible{outline-offset:-3px;border-radius:12px}
.sources small{display:block;font-size:12px;color:var(--slate);line-height:1.5}
.sources strong{display:block;font:600 15px/1.4 var(--en)}
.sources .ic{width:16px;height:16px;color:var(--slate);transition:color .2s,translate .25s var(--ease)}
.sources a:hover .ic{color:var(--cobalt);translate:0 -2px}

/* App */
.app{padding-block:120px 110px}
.app-head{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);grid-template-areas:"id id" "title intro";gap:0 48px;align-items:end}
.app-head h2{grid-area:title}
.app-id{grid-area:id;display:flex;align-items:center;gap:12px 14px;flex-wrap:wrap;margin-bottom:30px}
.app-id img{width:48px;height:48px;border-radius:12px}
.app-name{font:800 20px var(--en);letter-spacing:-.02em;margin-inline-end:8px}
.app h2 .soft{color:var(--slate);font-weight:500}
.app-intro{grid-area:intro;color:var(--slate);max-width:46ch}
/* Three services: hairline columns, each opened by a short cobalt level */
.pillars{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 40px;margin-top:64px}
.pillars li{position:relative;padding-top:26px;border-top:1px solid var(--line)}
.pillars li::before{content:'';position:absolute;top:-1px;inset-inline-start:0;width:48px;height:2px;background:var(--cobalt)}
.pillar-n{display:block;font:700 12px/1 var(--en);letter-spacing:.08em;color:var(--cobalt)}
.pillars h3{font-size:clamp(20px,1.8vw,24px);font-weight:700;line-height:1.45;margin-top:16px}
html[lang=en] .pillars h3{font-weight:800;line-height:1.25;letter-spacing:-.02em}
.pillar-for{font-size:13px;font-weight:500;margin-top:4px}
.pillars p:not(.pillar-for){font-size:15px;color:var(--slate);margin-top:12px;max-width:40ch}
.app-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.9fr);grid-template-areas:"copy phone" "tools phone";grid-template-rows:auto 1fr;gap:0 80px;margin-top:96px}
.app-copy{grid-area:copy}
.phone-stage{grid-area:phone;align-self:center}
.tools-block{grid-area:tools;margin-top:28px}
.tabs{display:flex;gap:4px;background:var(--mist);border-radius:999px;padding:4px;width:max-content;max-width:100%}
.tabs button{border:0;background:none;border-radius:999px;padding:9px 18px;font-size:14px;color:var(--slate);min-height:40px;white-space:nowrap;transition:background-color .2s,color .2s,box-shadow .2s}
.tabs button:hover{color:var(--ink)}
.tabs button[aria-selected=true]{background:#fff;color:var(--ink);box-shadow:0 2px 8px -3px rgba(14,24,48,.25)}
.tab-panel{padding-top:22px;min-height:150px}
.tab-panel h3{font-size:21px;font-weight:600;line-height:1.5}
.tab-panel p{color:var(--slate);margin-top:8px;max-width:46ch;font-size:15px}
.phone-stage{position:relative;display:flex;flex-direction:column;align-items:center;padding-block:20px;perspective:1200px}
.phone-stage::before{content:'';position:absolute;inset:8% 6% 14%;background:var(--cobalt-wash);border-radius:40% 40% 24px 24px;z-index:-1}
.phone{width:min(300px,72vw);border-radius:42px;padding:8px;background:var(--ink);box-shadow:0 40px 70px -30px rgba(14,24,48,.45);transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(var(--py,0px));transition:transform .5s var(--ease)}
.phone img{border-radius:34px;width:100%}
.phone-cap{margin-top:18px;font-size:13px;color:var(--slate);text-align:center}
/* Supporting tools as ledger rows: name beside what it does */
.tools-block h3{font-size:15px;font-weight:600}
.tools{margin-top:12px;border-top:1px solid var(--line)}
.tools>div{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:4px 24px;padding-block:15px;border-bottom:1px solid var(--line)}
.tools dt{font-size:15px;font-weight:600;line-height:1.6}
.tools dd{font-size:14px;color:var(--slate);line-height:1.75}
html[lang=en] .tools dd{line-height:1.6}
.app-sub{font-size:13px;color:var(--slate);margin-top:40px}

/* FAQ */
.faq{padding-block:110px;background:var(--mist)}
.faq-grid{display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);grid-template-rows:auto 1fr;grid-template-areas:"head list" "help list";gap:0 64px;align-items:start}
.faq h2{grid-area:head}
.faq-list{grid-area:list;border-top:1px solid #d6dce8}
.faq-help{grid-area:help;margin-top:20px;font-size:15px;color:var(--slate);max-width:32ch}
.faq-help a{color:var(--ink);font-weight:600;font-family:var(--en);text-decoration:underline;text-decoration-color:#b7c1d6;display:inline-block;padding-block:6px}
.faq-help a:hover{color:var(--cobalt);text-decoration-color:currentColor}
.faq details{border-bottom:1px solid #d6dce8}
.faq summary{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px 0;font-size:17px;font-weight:500;line-height:1.6;cursor:pointer;list-style:none}
.faq summary::-webkit-details-marker{display:none}
.faq summary:hover{color:var(--cobalt)}
.faq summary .ic{width:18px;height:18px;transition:transform .3s var(--ease)}
.faq details[open] summary .ic{transform:rotate(45deg)}
.faq details p{color:var(--slate);padding-bottom:24px;max-width:62ch;font-size:15px}
.faq details[open] p{animation:fold .32s var(--ease)}
@keyframes fold{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}

/* Download */
.download{padding-block:100px 120px}
.dl-panel{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:56px;align-items:center;padding:64px;border-radius:28px;background:var(--cobalt-wash);position:relative;overflow:hidden;isolation:isolate}
/* The hero's entry and stop levels return to close the page; time runs left to right in both languages */
.dl-panel::before{content:'';position:absolute;inset-inline:0;top:62%;height:2px;background:var(--cobalt);opacity:.18;z-index:-1;transform-origin:left}
.dl-panel::after{content:'';position:absolute;inset-inline:0;top:76%;border-top:2px dashed var(--stop);opacity:.16;z-index:-1;transform-origin:left}
.dl-copy p{font-size:17px;color:#3b4766;margin-top:18px;max-width:42ch}
.dl-steps{counter-reset:s;margin-top:32px;display:flex;flex-direction:column;gap:12px}
.dl-steps li{counter-increment:s;display:flex;align-items:center;gap:14px;font-size:15px}
.dl-steps li::before{content:counter(s);font:700 13px/1 var(--en);width:30px;height:30px;border-radius:50%;background:#fff;color:var(--cobalt);display:grid;place-items:center;flex:none}
.dl-actions{display:flex;flex-direction:column;align-items:flex-start;gap:22px}
.dl-icon{width:76px;height:76px;border-radius:20px;box-shadow:0 16px 30px -16px rgba(14,24,48,.4)}
.stores{display:flex;flex-wrap:wrap;gap:12px;width:100%}
.store{flex:1 1 180px;display:flex;align-items:center;gap:12px;padding:12px 18px;min-height:60px;border-radius:14px;background:var(--ink);color:#fff;transition:transform .25s var(--ease),background-color .2s}
.store:hover{background:#1c2a4d;transform:translateY(-2px)}
.store .ic{width:24px;height:24px}
.store small{display:block;font-size:11px;line-height:1.4;opacity:.8}
.store strong{display:block;font:700 17px/1.3 var(--en);white-space:nowrap}
.dl-fine{font-size:13px;color:#3b4766}
.download :focus-visible{outline-color:var(--ink)}

/* Footer */
.foot{padding-block:56px 40px;border-top:1px solid var(--line)}
.foot-top{display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap}
.foot-links{display:flex;flex-wrap:wrap;gap:8px 28px;font-size:14px;color:var(--slate)}
.foot-links a{min-height:36px;display:inline-flex;align-items:center}
.foot-links a:hover{color:var(--cobalt);text-decoration:underline}
.company{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;margin-top:36px;padding-block:28px;border-block:1px solid var(--line);font-size:13px;color:var(--slate);line-height:1.8}
.company h3{font-size:14px;font-weight:600;color:var(--ink)}
.company-name{font-family:var(--en);margin-top:4px}
.company .muted{font-size:12px;margin-top:6px}
.company bdi{font-variant-numeric:tabular-nums;font-family:var(--en)}
.company .link{color:var(--ink)}
.foot-bottom{display:flex;justify-content:space-between;gap:32px;padding-top:24px;font-size:12px;color:var(--slate)}
.foot-bottom p{max-width:86ch}
.foot-bottom span{white-space:nowrap}

/* Mobile dock */
.dock{display:none}

/* Hero entrance: the one orchestrated moment */
@media (prefers-reduced-motion:no-preference){
  /* fill-mode backwards: once finished, nothing lingers (no clip over focus rings) */
  .js .h1-a,.js .h1-b,.js .lead,.js .hero-actions,.js .hero-fine{animation:rise .75s var(--ease) backwards}
  .js .h1-b{animation-delay:.08s}
  .js .lead{animation-delay:.16s}
  .js .hero-actions{animation-delay:.24s}
  .js .hero-fine{animation-delay:.3s}
  .js .portrait{animation:stand 1s var(--ease) .1s backwards}
  .js .hero-tag{animation:rise .7s var(--ease) .55s backwards}
  @keyframes rise{from{opacity:0;transform:translateY(22px);clip-path:inset(-10% -10% 40% -10%)}to{opacity:1;transform:none;clip-path:inset(-10% -10% -10% -10%)}}
  @keyframes stand{from{opacity:0;transform:translateY(40px) scale(.98);filter:drop-shadow(0 30px 40px rgba(14,24,48,0)) blur(6px)}to{opacity:1;transform:none}}

  /* Two quiet scroll moments, both from an already-readable state:
     the original photo opens and settles; the closing panel draws its two levels. */
  .js .office[data-reveal] .office-link{clip-path:inset(0 round 18px);transition:clip-path .9s var(--ease)}
  .js .office[data-reveal]:not(.in) .office-link{clip-path:inset(5% 4% 0 4% round 18px)}
  .js .office[data-reveal]:not(.in) img{transform:scale(1.06)}
  .js .dl-panel[data-reveal]::before,.js .dl-panel[data-reveal]::after{transition:transform 1.1s var(--ease)}
  .js .dl-panel[data-reveal]::after{transition-delay:.2s}
  .js .dl-panel[data-reveal]:not(.in)::before,.js .dl-panel[data-reveal]:not(.in)::after{transform:scaleX(0)}
}

@media (min-width:901px) and (max-height:780px){
  .js .stage .post:not(.latest){display:none}
  .js .stage{top:calc(var(--bar-h) + 12px)}
  .hero-copy{padding-block:44px 64px}
  .hero h1{font-size:clamp(40px,4.4vw,62px)}
  .lead{margin-top:20px}
  .hero-actions{margin-top:28px}
}

@media (max-width:1100px){
  .wrap{width:calc(100% - 64px)}
  .bar-nav a{padding-inline:10px;font-size:13px}
  .scrolly{gap:36px}
  .about-grid{gap:56px}
  .app-grid{gap:0 48px}
  .pillars{gap:0 28px}
  .specs{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"head head" "plan rep" "note note";gap:0 40px}
  .specs-head{margin-bottom:28px}
  .specs-head p{max-width:60ch}
  .dl-panel{padding:48px}
  .step-buttons button{padding-inline:10px;gap:6px}
}

@media (max-width:900px){
  :root{--bar-h:64px}
  .bar-nav{display:none}
  .menu-btn{display:inline-flex}
  .bar-cta{display:none}
  .hero-grid{grid-template-columns:1fr;min-height:0;gap:0}
  .hero-copy{padding-block:48px 8px;max-width:none}
  .hero-art{min-height:0;align-self:auto;margin-top:20px}
  .portrait-frame{width:min(100%,440px)}
  .levels{-webkit-mask-image:linear-gradient(to top,#000 40%,transparent 66%)!important;mask-image:linear-gradient(to top,#000 40%,transparent 66%)!important}
  .channel{padding-block:88px 80px}
  .channel-head{grid-template-columns:1fr;gap:16px;margin-bottom:36px}
  .scrolly{grid-template-columns:1fr;gap:0}
  .stage-col,.steps{grid-column:1}
  .stage-col{grid-row:1;z-index:2}
  .steps{grid-row:2}
  .scrolly{display:block}
  .stage-col{display:contents}
  .js .stage{position:relative;top:auto}
  .stage{padding:14px;border-radius:16px;z-index:2}
  .chart{width:100%;min-width:0}
  .steps{margin-top:8px}
  .step-buttons{width:100%;justify-content:space-between}
  .step-buttons button{flex:1;justify-content:center;padding-inline:6px}
  .step-buttons button span{white-space:nowrap}
  /* Phones and tablets: every stage control and app tab is a full 44px target */
  .step-buttons button,.outcome button,.tabs button{min-height:44px}
  .js .step{min-height:0;padding-block:24px}
  .bar-nav+.bar-actions{margin-inline-start:auto}
  .about{padding-block:88px}
  .about-grid{grid-template-columns:1fr;grid-template-rows:none;grid-template-areas:"title" "photo" "copy";gap:32px}
  .office{max-width:440px}
  .about-lead{margin-top:0}
  .specs{margin-top:72px;padding-top:32px}
  .channel-foot{margin-top:48px}
  .app{padding-block:88px}
  .app-head{grid-template-columns:1fr;grid-template-areas:"id" "title" "intro";gap:18px}
  .app-id{margin-bottom:12px}
  .pillars{grid-template-columns:1fr;gap:28px;margin-top:44px}
  .app-grid{grid-template-columns:1fr;grid-template-areas:"copy" "phone" "tools";grid-template-rows:none;margin-top:64px}
  .phone-stage{margin-top:28px}
  .tools-block{margin-top:40px}
  .faq{padding-block:88px}
  .faq-grid{grid-template-columns:1fr;grid-template-rows:none;grid-template-areas:"head" "list" "help";gap:28px}
  .faq-help{margin-top:0;max-width:none}
  .download{padding-block:72px 96px}
  .dl-panel{grid-template-columns:1fr;gap:36px;padding:40px 32px}
  .company{grid-template-columns:1fr 1fr}
  .company>div:last-child{grid-column:1/-1}
  .foot{padding-bottom:110px}
  .dock{display:block;position:fixed;inset-inline:0;bottom:0;z-index:35;padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:rgba(255,255,255,.95);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-top:1px solid var(--line);transition:transform .35s var(--ease),visibility .35s}
  .dock .btn{width:100%;justify-content:space-between;min-height:50px}
  .js:not([data-cta=show]) .dock{transform:translateY(110%);visibility:hidden}
}

/* Sticky stage on tall phones/tablets: chart pinned while steps scroll beneath */
@media (max-width:900px) and (min-height:700px){
  .js .stage{position:sticky;top:calc(var(--bar-h) + 8px)}
  .js .stage .feed{margin-top:10px;padding-top:10px}
  .js .stage .post:not(.latest){display:none}
  .js .stage .feed-head{display:none}
  .js .stage .outcome>span{display:none}
  .js .stage .stage-bottom{margin-top:10px;gap:6px}
  .js .stage .chart{width:min(100%,calc((100svh - 478px) * 1.818))}
  .js .step{min-height:46vh}
}

@media (max-width:600px){
  .wrap{width:calc(100% - 40px)}
  body{font-size:15px}
  .mark-name{font-size:17px}
  /* Phone hero: same type, tighter rhythm. The seated portrait runs edge to edge, so the
     thigh and sleeve crops meet the screen edges instead of floating mid-page. */
  .hero-copy{position:relative;z-index:1;padding-block:24px 0}
  .hero h1{font-size:clamp(34px,10vw,44px)}
  .lead{font-size:16px;margin-top:14px;line-height:1.8}
  .hero-actions{margin-top:22px;gap:2px 22px}
  .hero-fine{margin-top:10px;line-height:1.7}
  .hero-art{margin-inline:-20px;margin-top:14px}
  .portrait-frame{width:min(100%,480px)}
  .hero-tag{left:20px;padding:10px 14px}
  .hero-tag strong{font-size:15px}
  .channel h2,.about h2,.app h2,.faq h2,.download h2{font-size:clamp(27px,8vw,34px)}
  .step-buttons button span{font-size:12px}
  .step-buttons b{display:none}
  .stage-bottom{flex-direction:column;align-items:flex-start}
  .outcome>span{width:100%}
  .tag{font-size:11px;padding:2px 6px}
  .tag-update,.tag-b{left:auto;right:0;top:-1%;transform:none}
  .js .scrolly:not([data-step=idea]) .tag-zone{opacity:0}
  .tag-zone{left:30%}
  .post p{font-size:13px}
  /* Number and heading share a row; the body uses the full column beneath them */
  .step{grid-template-columns:36px minmax(0,1fr);column-gap:14px}
  .step>p{grid-column:1/-1;max-width:none}
  .step-n{width:36px;height:36px;font-size:14px}
  .step p{font-size:15px}
  .channel-foot{padding:22px;margin-top:48px}
  .channel-foot .btn{width:100%}
  /* Figures become two ledger rows: numbers share one column (subgrid), labels get the rest */
  .proof{grid-template-columns:max-content minmax(0,1fr);column-gap:18px;margin-top:24px}
  .proof li{grid-column:1/-1;display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-columns:subgrid;align-items:center;gap:0 18px;padding-block:14px}
  .proof li:first-child{padding-inline-end:0}
  .proof li+li{border-inline-start:0;padding-inline-start:0;border-top:1px solid #d6dce8}
  .proof-n{font-size:28px}
  .sources ul{grid-template-columns:1fr}
  .sources li+li{border-inline-start:0;border-top:1px solid var(--line)}
  .office img{aspect-ratio:4/5;object-position:50% 40%}
  .specs{grid-template-columns:1fr;grid-template-areas:"head" "plan" "rep" "note";gap:28px;margin-top:56px}
  .specs-head{margin-bottom:0}
  .specs-note{margin-top:0}
  .ledger li:first-child{padding-inline-end:14px}
  .ledger li+li{padding-inline-start:14px}
  .spec-n{font-size:26px}
  .pillars p:not(.pillar-for){max-width:none}
  .tabs{width:100%}
  .tabs button{flex:1;padding-inline:8px;font-size:13px}
  .tools>div{grid-template-columns:1fr}
  .faq summary{font-size:16px}
  .dl-panel{padding:32px 22px;border-radius:22px}
  .stores{flex-direction:column}
  .store{flex:none;width:100%}
  .company{grid-template-columns:1fr;gap:20px}
  .company>div:last-child{grid-column:auto}
  .foot-bottom{flex-direction:column;gap:14px}
}

@media (max-width:380px){
  .wrap{width:calc(100% - 28px)}
  .btn{padding-inline:18px;font-size:14px}
  .hero-actions .btn{width:100%;justify-content:space-between}
  .hero-art{margin-inline:-14px}
  .hero-tag{left:14px;padding:9px 12px}
  .hero-tag strong{font-size:14px}
  .hero-tag>span,.hero-tag a{font-size:12px}
  .spec-n{font-size:22px}
  .spec-n small{font-size:12px;margin-inline-start:4px}
  .stage{padding:10px}
  .step-buttons{padding:3px}
  .step-buttons button{padding-inline:2px;font-size:12px}
  .tag{font-size:10px}
  .tag-update{max-width:none}
  .outcome button{padding-inline:10px;font-size:12px}
  .tabs button{font-size:12px;padding-inline:4px}
}

/* Touch: every control reaches a comfortable target without changing the desktop rhythm */
@media (pointer:coarse){
  .step-buttons button,.outcome button,.tabs button{min-height:44px}
  .hero-tag a,.office figcaption a{min-height:44px}
  .foot-links a{min-height:44px}
}
/* Touch laptops/tablets in the side-by-side layout: give back the 16px the taller controls take */
@media (pointer:coarse) and (min-width:901px){
  .chart{width:min(100%,calc((100svh - 466px) * 1.818))}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
  .phone{transform:none!important}
  .portrait{translate:none!important}
}
