/* ─────────────────────────────────────────────────────────
   ONE-WAY GLASS
   Light side = the page you're on. Dark side = the chamber
   you look through. Light travels one direction only.
   ───────────────────────────────────────────────────────── */
:root{
  --ink:      #14121C;   /* the dark side */
  --ink-2:    #201D2C;   /* raised surface inside the chamber */
  --ink-3:    #302B41;   /* hairlines on dark */
  --paper:    #F1F0F5;   /* cool page, deliberately not cream */
  --paper-2:  #FFFFFF;
  --rule:     #DCD9E4;
  --veil:     #5B4FCF;   /* indigo — the glass */
  --glow:     #FFB020;   /* sodium amber — the lit story */
  --mute:     #7C7791;
  --mute-d:   #9A94B0;   /* muted, on dark */

  --f-display:'Familjen Grotesk', system-ui, sans-serif;
  --f-body:   'Inter Tight', system-ui, sans-serif;
  --f-mono:   'JetBrains Mono', ui-monospace, monospace;

  --shell: 1240px;
  --r: 14px;
}
html[dir="rtl"]{
  --f-display:'Cairo', system-ui, sans-serif;
  --f-body:   'Cairo', system-ui, sans-serif;
}
html[dir="rtl"] h1{line-height:1.32;letter-spacing:0}
html[dir="rtl"] h2{line-height:1.34;letter-spacing:0}
html[dir="rtl"] h3{line-height:1.42;letter-spacing:0}
html[dir="rtl"] .qa summary{letter-spacing:0;line-height:1.5}
/* Latin runs inside RTL keep their own direction so @ stays put */
html[dir="rtl"] .handle,html[dir="rtl"] .profile .hd,
html[dir="rtl"] #uname,html[dir="rtl"] .field .at{direction:ltr;unicode-bidi:isolate}
html[dir="rtl"] #uname{text-align:right}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
section[id],div[id]{scroll-margin-top:84px}
body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:var(--f-body); font-size:17px; line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block}
button{font:inherit;color:inherit;cursor:pointer}
a{color:inherit}
:focus-visible{outline:2.5px solid var(--veil);outline-offset:3px;border-radius:4px}
.chamber :focus-visible{outline-color:var(--glow)}

.shell{width:100%;max-width:var(--shell);margin-inline:auto;padding-inline:26px}

h1,h2,h3{font-family:var(--f-display);font-weight:700;letter-spacing:-.03em;line-height:1.03;margin:0}
h1{font-size:clamp(2.9rem,6.4vw,4.7rem)}
h2{font-size:clamp(1.9rem,3.6vw,2.75rem);letter-spacing:-.025em}
h3{font-size:1.16rem;letter-spacing:-.015em;line-height:1.25}
p{margin:0}

/* eyebrow — mono, because it labels a machine state */
.eyebrow{
  font-family:var(--f-mono);font-size:.685rem;font-weight:500;
  letter-spacing:.16em;text-transform:uppercase;color:var(--mute);
}
html[dir="rtl"] .eyebrow{letter-spacing:0;font-family:var(--f-body);font-weight:700}

/* ── masthead ───────────────────────────────────────────── */
.masthead{
  position:sticky;top:0;z-index:60;background:rgba(241,240,245,.86);
  backdrop-filter:blur(14px);border-bottom:1px solid var(--rule);
}
.masthead .shell{display:flex;align-items:center;gap:22px;height:66px}
.brand{display:flex;align-items:center;gap:9px;text-decoration:none;font-family:var(--f-display);font-weight:700;letter-spacing:-.03em;font-size:1.09rem}
.brand-mark{width:26px;height:26px;flex:none}
.masthead nav{display:flex;gap:26px;margin-inline-start:auto}
.masthead nav a{font-size:.9rem;color:var(--mute);text-decoration:none;font-weight:500}
.masthead nav a:hover{color:var(--ink)}

/* language switch */
.lang{position:relative;margin-inline-start:22px}
.lang-btn{
  display:flex;align-items:center;gap:7px;background:var(--paper-2);
  border:1px solid var(--rule);border-radius:99px;padding:7px 13px;
  font-size:.86rem;font-weight:500;
}
.lang-btn:hover{border-color:var(--veil)}
.lang-btn svg{width:14px;height:14px;opacity:.5}
.lang-menu{
  position:absolute;inset-inline-end:0;top:calc(100% + 9px);width:212px;
  background:var(--paper-2);border:1px solid var(--rule);border-radius:var(--r);
  padding:6px;box-shadow:0 18px 44px rgba(20,18,28,.14);
  display:none;
}
.lang-menu[data-open="true"]{display:block}
.lang-menu a{
  display:flex;width:100%;align-items:baseline;gap:9px;
  border-radius:9px;padding:9px 11px;text-decoration:none;
  text-align:start;font-size:.92rem;color:var(--ink);
}
.lang-menu a:hover{background:var(--paper)}
.lang-menu a[aria-current="page"]{background:var(--paper);font-weight:600}
.lang-menu .code{
  font-family:var(--f-mono);font-size:.66rem;color:var(--mute);
  letter-spacing:.06em;text-transform:uppercase;margin-inline-start:auto;
}

/* ── hero: paper on the left, chamber on the right ──────── */
.hero{border-bottom:1px solid var(--rule)}
.hero .shell{
  display:grid;grid-template-columns:1fr .92fr;
  column-gap:60px;row-gap:30px;align-content:center;
  grid-template-areas:"copy chamber" "ledger chamber";
  padding-block:72px 78px;
}
.hero-copy{grid-area:copy;align-self:end}
.ledger{grid-area:ledger;align-self:start}
.chamber{grid-area:chamber;align-self:center}
.hero-copy>*+*{margin-top:22px}
.hero h1 .line2{color:var(--veil);display:block}
.hero-sub{font-size:1.115rem;color:#413C52;max-width:31em}

/* ── SIGNATURE: the seen-by ledger ──────────────────────── */
/* The product promise is an absence. So the page shows the
   list you would have appeared in, and the empty slot. */
.ledger{
  background:var(--paper-2);border:1px solid var(--rule);
  border-radius:var(--r);padding:17px 19px;max-width:378px;
}
.ledger-head{
  display:flex;align-items:baseline;gap:9px;
  padding-bottom:11px;border-bottom:1px solid var(--rule);
}
.ledger-head .t{font-family:var(--f-display);font-weight:600;font-size:.94rem}
.ledger-head .n{font-family:var(--f-mono);font-size:.78rem;color:var(--mute);margin-inline-start:auto}
.ledger-rows{margin:0;padding:0;list-style:none}
.ledger-rows li{
  display:flex;align-items:center;gap:10px;padding:8px 0;
  font-size:.88rem;border-bottom:1px solid var(--rule);
  opacity:0;transform:translateY(5px);
}
.ledger-rows li.in{opacity:1;transform:none;transition:opacity .45s ease,transform .45s ease}
.dot{width:25px;height:25px;border-radius:99px;flex:none}
.handle{font-family:var(--f-mono);font-size:.8rem;color:#4A4560;direction:ltr;unicode-bidi:isolate}
/* the slot where you are not */
.ledger-you{
  display:flex;align-items:center;gap:10px;margin-top:11px;
  padding:9px 11px;border:1.5px dashed var(--rule);border-radius:10px;
  background:repeating-linear-gradient(-45deg,transparent 0 7px,rgba(91,79,207,.045) 7px 14px);
}
.ledger-you .slot{
  width:25px;height:25px;border-radius:99px;flex:none;
  border:1.5px dashed #C4BFD4;
}
.ledger-you .txt{font-size:.85rem;font-weight:600;color:var(--veil)}
.ledger-you .sub{
  font-family:var(--f-mono);font-size:.66rem;letter-spacing:.09em;
  text-transform:uppercase;color:var(--mute);margin-inline-start:auto;
}
html[dir="rtl"] .ledger-you .sub,html[dir="rtl"] .handle,html[dir="rtl"] .ledger-head .n{
  font-family:var(--f-body);letter-spacing:0;
}

/* ── the chamber (dark side) ────────────────────────────── */
.chamber{
  background:var(--ink);border-radius:22px;padding:26px;
  color:#EDEBF3;position:relative;overflow:hidden;
  box-shadow:0 34px 70px -30px rgba(20,18,28,.55);
}
.chamber::after{ /* the pane of glass */
  content:"";position:absolute;inset:0;pointer-events:none;border-radius:22px;
  background:linear-gradient(148deg,rgba(255,255,255,.07),transparent 42%);
}
.chamber-label{
  display:flex;align-items:center;gap:8px;margin-bottom:15px;
  font-family:var(--f-mono);font-size:.66rem;letter-spacing:.15em;
  text-transform:uppercase;color:var(--mute-d);
}
html[dir="rtl"] .chamber-label{font-family:var(--f-body);letter-spacing:0}
.chamber-label .led{width:6px;height:6px;border-radius:99px;background:var(--glow);flex:none}

/* username field */
.field{
  display:flex;align-items:center;background:var(--ink-2);
  border:1.5px solid var(--ink-3);border-radius:12px;
  padding:0 6px 0 15px;transition:border-color .18s;
}
html[dir="rtl"] .field{padding:0 15px 0 6px}
.field:focus-within{border-color:var(--glow)}
.field .at{font-family:var(--f-mono);font-size:1rem;color:var(--mute-d);flex:none;direction:ltr}
.field input{
  flex:1;min-width:0;background:none;border:0;outline:0;color:#fff;
  font-family:var(--f-mono);font-size:1rem;padding:15px 9px;
}
.field input::placeholder{color:#5D5773}
.field button{
  flex:none;background:var(--glow);color:var(--ink);border:0;border-radius:9px;
  padding:11px 17px;font-weight:600;font-size:.9rem;letter-spacing:-.01em;
  transition:filter .16s;
}
.field button:hover{filter:brightness(1.08)}
.field button:disabled{opacity:.5;cursor:default}
.field-note{margin-top:11px;font-size:.82rem;color:var(--mute-d)}
.field-note.err{color:#FF9A8B}

/* preview badge — never let a demo pretend to be live */
.preview-flag{
  display:inline-flex;align-items:center;gap:7px;margin-top:15px;
  background:rgba(255,176,32,.11);border:1px solid rgba(255,176,32,.3);
  color:var(--glow);border-radius:99px;padding:5px 12px;
  font-family:var(--f-mono);font-size:.64rem;letter-spacing:.11em;text-transform:uppercase;
}
html[dir="rtl"] .preview-flag{font-family:var(--f-body);letter-spacing:0}

/* result panel */
.result{margin-top:22px;display:none}
.result[data-on="true"]{display:block;animation:rise .4s ease both}
@keyframes rise{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
.profile{display:flex;align-items:center;gap:13px;padding-bottom:16px;border-bottom:1px solid var(--ink-3)}
.avatar{
  width:52px;height:52px;border-radius:99px;flex:none;
  background:linear-gradient(135deg,#5B4FCF,#B14FCF);
  box-shadow:0 0 0 2px var(--ink),0 0 0 3.5px var(--glow);
}
.profile .nm{display:block;font-family:var(--f-display);font-weight:600;font-size:1rem;line-height:1.25}
.profile .hd{display:block;font-family:var(--f-mono);font-size:.76rem;color:var(--mute-d);direction:ltr;text-align:start}
html[dir="rtl"] .profile .hd{font-family:var(--f-body)}
.profile .stat{margin-inline-start:auto;text-align:end}
.profile .stat b{font-family:var(--f-mono);font-size:.95rem;display:block}
.profile .stat span{font-size:.7rem;color:var(--mute-d)}

.tabs{display:flex;gap:5px;margin:15px 0 14px}
.tabs button{
  background:none;border:1px solid var(--ink-3);border-radius:99px;
  padding:6px 14px;font-size:.83rem;color:var(--mute-d);font-weight:500;
}
.tabs button[aria-selected="true"]{background:#fff;border-color:#fff;color:var(--ink);font-weight:600}

.tray{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}
.frame{
  position:relative;aspect-ratio:9/16;border-radius:10px;overflow:hidden;
  border:0;padding:0;background:var(--ink-2);
}
.frame .art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.frame .age{
  position:absolute;inset-inline-start:7px;top:7px;z-index:2;
  font-family:var(--f-mono);font-size:.6rem;color:#fff;
  background:rgba(20,18,28,.55);border-radius:5px;padding:2px 5px;
}
html[dir="rtl"] .frame .age{font-family:var(--f-body)}
.frame .save{opacity:0;
  position:absolute;inset-inline-end:6px;bottom:6px;z-index:2;
  width:25px;height:25px;border-radius:7px;display:grid;place-items:center;
  background:rgba(20,18,28,.62);backdrop-filter:blur(5px);
  opacity:0;transition:opacity .16s;
}
.frame:hover .save,.frame:focus-within .save{opacity:1}
/* Touch devices have no hover, so the control would never appear. */
@media (hover:none){ .frame .save{opacity:1} }
.frame .save.busy{opacity:1;background:var(--glow)}
.frame .save.busy svg{stroke:var(--ink)}
.frame{cursor:pointer}
/* video marker */
.frame .vid{
  position:absolute;inset-inline-start:7px;bottom:7px;z-index:2;
  width:20px;height:20px;border-radius:99px;display:grid;place-items:center;
  background:rgba(20,18,28,.62);backdrop-filter:blur(5px);
}
.frame .vid svg{width:11px;height:11px;fill:#fff}
.frame .save svg{width:13px;height:13px;stroke:#fff;fill:none;stroke-width:2.2}
.bars{position:absolute;top:0;inset-inline:0;display:flex;gap:2.5px;padding:5px;z-index:2}
.bars i{flex:1;height:2px;border-radius:2px;background:rgba(255,255,255,.34)}
.bars i.seen{background:#fff}

/* spinner */
.loading{display:none;align-items:center;gap:11px;padding:26px 0;color:var(--mute-d);font-size:.9rem}
.loading[data-on="true"]{display:flex}
.spin{width:17px;height:17px;border:2px solid var(--ink-3);border-top-color:var(--glow);border-radius:99px;animation:sp .7s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}

/* ── sections ───────────────────────────────────────────── */
section{padding-block:84px}
.sec-head{max-width:36em;margin-bottom:44px}
.sec-head .eyebrow{display:block;margin-bottom:13px}
.sec-head p{margin-top:15px;color:var(--mute);font-size:1.04rem}

/* steps — numbered, because this genuinely is a sequence */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule);border-block:1px solid var(--rule)}
.step{background:var(--paper);padding:32px 28px}
.step .num{
  font-family:var(--f-mono);font-size:.7rem;font-weight:700;color:var(--veil);
  letter-spacing:.1em;display:block;margin-bottom:15px;
}
.step h3{margin-bottom:9px}
.step p{color:var(--mute);font-size:.95rem}

/* what you can open */
.opens{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.open{background:var(--paper-2);border:1px solid var(--rule);border-radius:var(--r);padding:24px 22px}
.open .ic{width:30px;height:30px;margin-bottom:16px;stroke:var(--veil);fill:none;stroke-width:1.6}
.open h3{font-size:1.02rem;margin-bottom:7px}
.open p{font-size:.9rem;color:var(--mute)}

/* faq */
.faq{max-width:themed;max-width:790px}
.qa{border-bottom:1px solid var(--rule)}
.qa summary{
  list-style:none;cursor:pointer;padding:21px 44px 21px 0;
  font-family:var(--f-display);font-weight:600;font-size:1.06rem;
  position:relative;letter-spacing:-.015em;
}
html[dir="rtl"] .qa summary{padding:21px 0 21px 44px}
.qa summary::-webkit-details-marker{display:none}
.qa summary::after{
  content:"";position:absolute;inset-inline-end:8px;top:27px;
  width:11px;height:11px;border-right:2px solid var(--veil);
  border-bottom:2px solid var(--veil);transform:rotate(45deg);transition:transform .2s;
}
.qa[open] summary::after{transform:rotate(-135deg);top:31px}
.qa .a{padding:0 44px 23px 0;color:var(--mute);font-size:.97rem}
html[dir="rtl"] .qa .a{padding:0 0 23px 44px}

/* footer */
footer{background:var(--ink);color:#B7B2C6;padding-block:56px 40px;font-size:.9rem}
footer .cols{display:grid;grid-template-columns:1.6fr 1fr 1fr;gap:40px;padding-bottom:34px;border-bottom:1px solid var(--ink-3)}
footer .brand{color:#fff;margin-bottom:14px}
footer h4{font-family:var(--f-display);color:#fff;font-size:.86rem;margin:0 0 14px;letter-spacing:.02em}
footer ul{list-style:none;margin:0;padding:0}
footer li{margin-bottom:9px}
footer a{text-decoration:none;color:#B7B2C6}
footer a:hover{color:#fff}
.disclaimer{padding-top:26px;color:#6E6885;font-size:.79rem;line-height:1.65;max-width:62em}


/* ── mock surfaces: same dark vocabulary as the chamber ──── */
.vis{
  background:var(--ink);border-radius:12px;position:relative;overflow:hidden;
  display:flex;align-items:center;justify-content:center;
}
.vis::after{
  content:"";position:absolute;inset:0;border-radius:12px;pointer-events:none;
  background:linear-gradient(150deg,rgba(255,255,255,.06),transparent 46%);
}
.mini-bars{position:absolute;top:0;inset-inline:0;display:flex;gap:2px;padding:4px;z-index:2}
.mini-bars i{flex:1;height:1.5px;border-radius:2px;background:rgba(255,255,255,.32)}
.mini-bars i.on{background:#fff}

/* steps */
.step .vis{height:128px;margin-bottom:22px}
.mock-field{
  display:flex;align-items:center;gap:2px;background:var(--ink-2);
  border:1.5px solid var(--glow);border-radius:9px;padding:9px 13px;
  font-family:var(--f-mono);font-size:.86rem;color:#fff;
}
.mock-field .at{color:var(--mute-d);font-style:normal}
.caret{width:1.5px;height:15px;background:var(--glow);display:inline-block;animation:blink 1.1s step-end infinite}
@keyframes blink{50%{opacity:0}}
.flow{display:flex;align-items:center;gap:7px}
.node{
  background:var(--ink-2);border:1px solid var(--ink-3);border-radius:7px;
  padding:6px 10px;font-size:.7rem;color:#CFCADF;white-space:nowrap;
}
.node.hot{border-color:var(--glow);color:var(--glow)}
.link{width:16px;height:1.5px;background:var(--ink-3);position:relative;flex:none}
.link::after{
  content:"";position:absolute;inset-inline-end:-1px;top:-2.5px;
  border-inline-start:5px solid var(--ink-3);
  border-block:3px solid transparent;
}
html[dir="rtl"] .link::after{transform:scaleX(-1);inset-inline-end:auto;inset-inline-start:-1px}
.mock-frame{
  width:62px;aspect-ratio:9/16;border-radius:8px;position:relative;overflow:hidden;
  background:linear-gradient(160deg,#F2A65A,#E2557E);
}
.save-chip{
  position:absolute;inset-inline-end:4px;bottom:4px;width:19px;height:19px;
  border-radius:6px;background:rgba(20,18,28,.62);display:grid;place-items:center;
}
.save-chip svg{width:11px;height:11px;stroke:#fff;fill:none;stroke-width:2.4}

/* what you can open */
.open{padding:0;overflow:hidden}
.open .vis{height:132px;border-radius:0;width:100%}
.open .body{padding:20px 22px 24px}
.open h3{font-size:1.02rem;margin-bottom:7px}
.open p{font-size:.9rem;color:var(--mute)}
.o-row{display:flex;gap:7px;align-items:center}
.o-frame{width:42px;aspect-ratio:9/16;border-radius:6px;position:relative;overflow:hidden}
.o-ring{
  width:38px;height:38px;border-radius:99px;
  box-shadow:0 0 0 1.5px var(--ink),0 0 0 3px var(--glow);
}
.o-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;width:86px}
.o-grid span{aspect-ratio:1;border-radius:3px}
.o-avatar{
  width:74px;height:74px;border-radius:99px;
  background:linear-gradient(135deg,#5B4FCF,#B14FCF);
  box-shadow:0 0 0 2px var(--ink),0 0 0 4px var(--glow);
}

/* guides */
.guides{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.guide{
  background:var(--paper-2);border:1px solid var(--rule);border-radius:var(--r);
  overflow:hidden;text-decoration:none;display:block;transition:border-color .18s,transform .18s;
}
.guide:hover{border-color:var(--veil);transform:translateY(-2px)}
.guide .thumb{display:block;height:118px;position:relative}
.guide .thumb .tag{
  position:absolute;inset-inline-start:12px;bottom:12px;
  background:rgba(20,18,28,.72);color:#fff;border-radius:99px;padding:3px 10px;
  font-family:var(--f-mono);font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;
}
html[dir="rtl"] .guide .thumb .tag{font-family:var(--f-body);letter-spacing:0}
.guide .body{display:block;padding:18px 20px 20px}
.guide h3{font-size:1rem;line-height:1.32;margin:0 0 9px}
.guide .meta{font-family:var(--f-mono);font-size:.68rem;color:var(--mute)}
html[dir="rtl"] .guide .meta{font-family:var(--f-body)}
.guides-more{
  display:inline-flex;align-items:center;gap:8px;margin-top:28px;
  font-weight:600;font-size:.95rem;color:var(--veil);text-decoration:none;
}
.guides-more:hover{text-decoration:underline}
.guides-more span:last-child{transition:transform .18s}
html[dir="rtl"] .guides-more span:last-child{transform:scaleX(-1)}

/* ── ad slots ────────────────────────────────────────────── */
.ad-slot{
  margin:0 auto 8px;text-align:center;min-height:90px;
  display:flex;align-items:center;justify-content:center;overflow:hidden;
}
.ad-slot ins{max-width:100%}
.ad-top{margin-top:44px}
.ad-mid{margin-block:8px 44px}
@media (max-width:760px){
  .ad-slot{min-height:60px}
  .ad-top{margin-top:28px}
}


/* ── story viewer ─────────────────────────────────────────
   The point of the whole site. Full-bleed 9:16, tap to move,
   progress bars across the top like the app it mirrors.
   ───────────────────────────────────────────────────────── */
.igsv-viewer{
  position:fixed;inset:0;z-index:9999;display:none;
  background:rgba(10,9,14,.94);backdrop-filter:blur(18px);
  align-items:center;justify-content:center;
  padding:22px;
}
.igsv-viewer[data-open="true"]{display:flex}
.igsv-stage{
  position:relative;height:100%;max-height:92vh;aspect-ratio:9/16;
  max-width:100%;border-radius:14px;overflow:hidden;background:#000;
  box-shadow:0 30px 90px -20px rgba(0,0,0,.8);
}
.igsv-stage img,.igsv-stage video{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:contain;background:#000;
}
/* progress */
.igsv-prog{
  position:absolute;top:0;inset-inline:0;z-index:5;
  display:flex;gap:3px;padding:9px 10px;
  background:linear-gradient(rgba(0,0,0,.45),transparent);
}
.igsv-prog i{flex:1;height:2.5px;border-radius:2px;background:rgba(255,255,255,.3);overflow:hidden}
.igsv-prog i b{display:block;height:100%;width:0;background:#fff;border-radius:2px}
.igsv-prog i.done b{width:100%}
/* tap zones */
.igsv-zone{position:absolute;top:0;bottom:0;z-index:4;border:0;background:none;cursor:pointer}
.igsv-zone.prev{inset-inline-start:0;width:33%}
.igsv-zone.next{inset-inline-end:0;width:67%}
/* chrome */
.igsv-bar{
  position:absolute;top:26px;inset-inline:0;z-index:6;
  display:flex;align-items:center;gap:10px;padding:0 12px;
}
.igsv-who{
  display:flex;align-items:center;gap:9px;color:#fff;
  font-family:var(--f-mono);font-size:.78rem;
  text-shadow:0 1px 6px rgba(0,0,0,.6);
}
html[dir="rtl"] .igsv-who{font-family:var(--f-body)}
.igsv-who .ago{opacity:.72}
.igsv-acts{margin-inline-start:auto;display:flex;gap:7px}
.igsv-btn{
  width:34px;height:34px;border:0;border-radius:99px;flex:none;
  background:rgba(20,18,28,.55);backdrop-filter:blur(6px);
  display:grid;place-items:center;cursor:pointer;transition:background .16s;
}
.igsv-btn:hover{background:rgba(20,18,28,.85)}
.igsv-btn svg{width:16px;height:16px;stroke:#fff;fill:none;stroke-width:2}
.igsv-btn.dl svg{stroke-linecap:round;stroke-linejoin:round}
.igsv-btn .on{display:none}
.igsv-btn[data-muted="false"] .on{display:block}
.igsv-btn[data-muted="false"] .off{display:none}
/* arrows on desktop */
.igsv-arrow{
  position:absolute;top:50%;transform:translateY(-50%);z-index:6;
  width:40px;height:40px;border:0;border-radius:99px;
  background:rgba(20,18,28,.5);display:none;place-items:center;cursor:pointer;
}
.igsv-arrow svg{width:17px;height:17px;stroke:#fff;fill:none;stroke-width:2.2}
.igsv-arrow:hover{background:rgba(20,18,28,.85)}
.igsv-arrow.l{inset-inline-start:26px}
.igsv-arrow.r{inset-inline-end:26px}
html[dir="rtl"] .igsv-arrow svg{transform:scaleX(-1)}
@media (min-width:900px){ .igsv-arrow{display:grid} }
@media (max-width:899px){ .igsv-viewer{padding:0} .igsv-stage{border-radius:0;max-height:100vh;height:100vh} }


/* ── articles ─────────────────────────────────────────────
   Reading typography. Wider measure than the landing page,
   larger body size, generous leading — this is the one place
   on the site people actually read rather than scan.
   ───────────────────────────────────────────────────────── */
.shell.narrow{max-width:768px}

.art-head{padding:66px 0 26px}
.art-head h1{font-size:clamp(2.1rem,4.4vw,3.15rem);line-height:1.08;margin-top:12px}
.art-head .eyebrow{display:block}
.art-meta{
  margin-top:20px;display:flex;gap:9px;align-items:center;
  font-family:var(--f-mono);font-size:.78rem;color:var(--mute);
}
html[dir="rtl"] .art-meta{font-family:var(--f-body)}
.art-hero{border-radius:var(--r);overflow:hidden;margin-bottom:34px}
.art-hero img{width:100%;height:auto;display:block}

.prose{font-size:1.115rem;line-height:1.72;color:#2C2838;padding-bottom:20px}
/* Spacing is set on the elements themselves: a blanket reset plus a
   sibling rule loses on specificity and silently collapses everything. */
.prose p,.prose ul,.prose ol,.prose blockquote,
.prose pre,.prose table,.prose img,.prose hr{margin:1.15em 0 0}
.prose > :first-child{margin-top:0}
.prose h2{
  font-size:1.72rem;line-height:1.18;letter-spacing:-.022em;
}
.prose > h2 + *{margin-top:.75em}
.prose > * + h2{margin-top:2.1em}
.prose h3{font-size:1.24rem}
.prose > h3 + *{margin-top:.6em}
.prose > * + h3{margin-top:1.75em}
.prose a{color:var(--veil);text-decoration:underline;text-underline-offset:2.5px}
.prose a:hover{text-decoration-thickness:2px}
.prose strong{font-weight:600;color:var(--ink)}
.prose ul,.prose ol{padding-inline-start:1.25em}
.prose li + li{margin-top:.5em}
.prose li::marker{color:var(--veil)}
.prose blockquote{
  margin-inline:0;padding:4px 0 4px 20px;
  border-inline-start:3px solid var(--veil);
  font-size:1.06rem;color:#413C52;
}
html[dir="rtl"] .prose blockquote{padding:4px 20px 4px 0}
.prose img{border-radius:var(--r);width:100%;height:auto}
.prose code{
  font-family:var(--f-mono);font-size:.86em;background:var(--paper-2);
  border:1px solid var(--rule);border-radius:5px;padding:1px 5px;
}
.prose pre{background:var(--ink);color:#EDEBF3;border-radius:var(--r);padding:18px;overflow:auto}
.prose pre code{background:none;border:0;color:inherit;padding:0}
.prose hr{border:0;border-top:1px solid var(--rule);margin-block:2.2em}
.prose table{width:100%;border-collapse:collapse;font-size:.97rem}
.prose th,.prose td{text-align:start;padding:10px 12px;border-bottom:1px solid var(--rule)}
.prose th{font-family:var(--f-display);font-weight:600}

/* one route back to the tool */
.art-cta{
  display:flex;align-items:center;gap:22px;flex-wrap:wrap;
  background:var(--ink);color:#EDEBF3;border-radius:var(--r);
  padding:26px 28px;margin:48px 0 70px;
}
.art-cta strong{font-family:var(--f-display);font-size:1.16rem;display:block}
.art-cta p{margin-top:6px;font-size:.92rem;color:var(--mute-d)}
.art-cta a{
  margin-inline-start:auto;background:var(--glow);color:var(--ink);
  border-radius:10px;padding:12px 20px;font-weight:600;
  text-decoration:none;white-space:nowrap;
}
.art-cta a:hover{filter:brightness(1.08)}

.art-pager{margin-top:40px;display:flex;gap:8px;font-family:var(--f-mono);font-size:.88rem}
.art-pager .page-numbers{
  padding:8px 13px;border:1px solid var(--rule);border-radius:9px;
  text-decoration:none;color:var(--ink);background:var(--paper-2);
}
.art-pager .page-numbers.current{background:var(--ink);color:#fff;border-color:var(--ink)}

@media (max-width:760px){
  .art-head{padding:38px 0 18px}
  /* three columns in 350px needs every pixel it can get */
  .prose table{font-size:.84rem}
  .prose th,.prose td{padding:8px 7px;vertical-align:top}
  .prose{font-size:1.05rem}
  .art-cta{padding:22px;margin:34px 0 50px}
  .art-cta a{margin-inline-start:0;width:100%;text-align:center}
}

/* ── responsive ─────────────────────────────────────────── */
@media (max-width:1000px){
  .hero .shell{grid-template-columns:1fr;grid-template-areas:"copy" "chamber" "ledger";row-gap:34px;padding-block:52px 60px}
  .ledger{max-width:none}
  .opens{grid-template-columns:repeat(2,1fr)}
  .guides{grid-template-columns:1fr 1fr}
  footer .cols{grid-template-columns:1fr 1fr}
}
@media (max-width:760px){
  body{font-size:16px}
  /* the input is the product — keep it within reach of the fold */
  h1{font-size:clamp(2.25rem,8.4vw,2.9rem)}
  .hero-sub{font-size:1.02rem}
  .hero .shell{row-gap:26px;padding-block:34px 46px}
  .hero-copy>*+*{margin-top:15px}
  .masthead nav{display:none}
  .lang{margin-inline-start:auto}
  .steps{grid-template-columns:1fr}
  section{padding-block:60px}
  .shell{padding-inline:20px}
  .chamber{padding:20px;border-radius:18px}
  .tray{grid-template-columns:repeat(3,1fr)}
  .opens{grid-template-columns:1fr}
  .guides{grid-template-columns:1fr}
  .step .vis{height:112px}
  .field{flex-wrap:wrap;padding:11px}
  .field input{width:100%;padding:6px 4px}
  .field button{width:100%;margin-top:9px;padding:13px}
  footer .cols{grid-template-columns:1fr;gap:28px}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  .ledger-rows li{opacity:1;transform:none}
}
