/* Public surface: the claim root, the long-form pages, and the send/reply
   screens. Served as one file from /styles.css. No script depends on it. */

:root{
  color-scheme:dark;
  --bg:#08080C; --panel:#101017; --raise:#181822; --raise-2:#202030;
  --ink:#F4F4F8; --ink-2:#A8A8BC; --ink-3:#9898AE;
  --line:#26263A; --line-2:#34344E; --ruled:#212130;
  /* Boundary of anything interactive. Held at 3:1 on --bg and on --panel. */
  --field:#6E6E85;
  --accent:#7C6BFF; --accent-2:#A78BFA; --accent-ink:#FFFFFF;
  --accent-fill:#6B58F5; --accent-fill-2:#5B4BE8;
  --good:#34D399; --warn:#FBBF24; --bad:#FB7185;
  --glow:rgba(124,107,255,.30);
  --shadow:0 1px 2px rgba(0,0,0,.5), 0 12px 32px -8px rgba(0,0,0,.7);
  --r:14px; --r-lg:22px; --r-sm:10px;
  --ease:cubic-bezier(.22,1,.36,1);
  --mono:ui-monospace,SFMono-Regular,Menlo,monospace;
}

/* Light theme. Written twice: one copy answers the OS setting, the other an
   explicit data-theme. --accent-2 steps darker here because it carries text. */
@media (prefers-color-scheme: light){
  html:not([data-theme]){
    color-scheme:light;
    --bg:#F2F2F7; --panel:#FFFFFF; --raise:#FFFFFF; --raise-2:#E9E9F2;
    --ink:#12121A; --ink-2:#484859; --ink-3:#5A5A6E;
    --line:#DCDCE6; --line-2:#C4C4D4; --ruled:#E6E6EF; --field:#84849A;
    --accent:#5241D9; --accent-2:#4433C4; --accent-ink:#FFFFFF;
    --accent-fill:#5241D9; --accent-fill-2:#4433C4;
    --good:#0A7150; --warn:#9A4708; --bad:#BE123C;
    --glow:rgba(82,65,217,.17);
    --shadow:0 1px 2px rgba(16,16,32,.06), 0 12px 28px -10px rgba(16,16,32,.16);
  }
}
html[data-theme="light"]{
  color-scheme:light;
  --bg:#F2F2F7; --panel:#FFFFFF; --raise:#FFFFFF; --raise-2:#E9E9F2;
  --ink:#12121A; --ink-2:#484859; --ink-3:#5A5A6E;
  --line:#DCDCE6; --line-2:#C4C4D4; --ruled:#E6E6EF; --field:#84849A;
  --accent:#5241D9; --accent-2:#4433C4; --accent-ink:#FFFFFF;
  --accent-fill:#5241D9; --accent-fill-2:#4433C4;
  --good:#0A7150; --warn:#9A4708; --bad:#BE123C;
  --glow:rgba(82,65,217,.17);
  --shadow:0 1px 2px rgba(16,16,32,.06), 0 12px 28px -10px rgba(16,16,32,.16);
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; min-height:100dvh; display:flex; flex-direction:column;
  background:var(--bg); color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,system-ui,sans-serif;
  font-size:16px; line-height:1.5; -webkit-font-smoothing:antialiased;
}
/* Fixed noise layer. Large flat dark fields band on an OLED panel without it. */
body::before{
  content:""; position:fixed; inset:0; pointer-events:none; z-index:9999;
  opacity:.035; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");
}
@media (prefers-color-scheme: light){ html:not([data-theme]) body::before{opacity:.02} }
html[data-theme="light"] body::before{opacity:.02}

a{color:var(--accent-2)}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,
select:focus-visible,summary:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--accent-2); outline-offset:2px;
}
.behind{display:contents}
.sr{
  position:absolute; width:1px; height:1px; margin:-1px; padding:0;
  overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0;
}
.skip{
  position:absolute; left:-9999px; top:0; z-index:200; padding:10px 14px;
  background:var(--panel); color:var(--ink); border:1px solid var(--field); border-radius:10px;
}
.skip:focus{left:12px; top:12px}

/* ---------- shared primitives ---------- */
.screen{
  flex:1 1 auto; display:flex; flex-direction:column; width:100%;
  max-width:430px; margin:0 auto; position:relative;
}
.mark{display:inline-flex; align-items:center; gap:8px; font-weight:600; letter-spacing:-.02em; font-size:16px; text-decoration:none; color:var(--ink)}
.mark svg{width:22px; height:22px; display:block}
.handle{font-family:var(--mono); font-size:13px; color:var(--ink-3)}
.spacer{flex:1}
.num{font-family:var(--mono); font-variant-numeric:tabular-nums}
.pill{
  display:inline-flex; align-items:center; gap:6px; padding:4px 10px; border-radius:99px;
  font-size:11.5px; font-weight:600; letter-spacing:.02em;
  background:var(--raise-2); color:var(--ink-2); border:1px solid var(--line);
}
.pill svg{width:14px; height:14px}
.pill--new{background:color-mix(in srgb, var(--accent) 16%, transparent); color:var(--accent-2); border-color:color-mix(in srgb, var(--accent) 34%, transparent)}
.pill--good{background:color-mix(in srgb, var(--good) 11%, transparent); color:var(--good); border-color:color-mix(in srgb, var(--good) 30%, transparent)}
.pill--warn{background:color-mix(in srgb, var(--warn) 11%, transparent); color:var(--warn); border-color:color-mix(in srgb, var(--warn) 30%, transparent)}

.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  min-height:50px; padding:0 20px; width:100%; border:0; border-radius:var(--r);
  background:var(--accent-fill); color:var(--accent-ink); font:inherit; font-size:16px;
  font-weight:600; letter-spacing:-.01em; cursor:pointer; text-decoration:none;
  box-shadow:0 6px 24px -6px var(--glow);
  transition:transform .16s var(--ease), box-shadow .25s var(--ease), filter .2s;
}
.btn:hover{filter:brightness(1.08); box-shadow:0 10px 32px -6px var(--glow)}
.btn:active{transform:translateY(1px) scale(.994)}
.btn--ghost{background:transparent; color:var(--ink-2); border:1px solid var(--field); box-shadow:none}
.btn--ghost:hover{color:var(--ink); border-color:var(--accent); filter:none}
.btn--sm{min-height:38px; font-size:14px; width:auto; padding:0 14px; border-radius:var(--r-sm)}
.btn--auto{width:auto}
.btn svg{width:18px; height:18px}

/* 16px is a floor, not a taste: iOS Safari zooms the viewport when a text
   control smaller than that takes focus, and never zooms back out. The claim
   field is the product's first interaction. */
.field{
  width:100%; min-height:132px; padding:16px; border-radius:var(--r-lg);
  background:var(--panel); border:1px solid var(--field); color:var(--ink);
  font:inherit; font-size:16.5px; line-height:1.45; resize:vertical; text-align:left;
  transition:border-color .25s var(--ease), box-shadow .25s var(--ease);
}
.field::placeholder{color:var(--ink-3)}
.field:focus{
  border-color:var(--accent);
  box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 15%, transparent);
}
.field:focus:not(:focus-visible){outline:none}
/* Single-line variant: same shell, one row high. */
.field--line{min-height:0; padding:14px 16px; border-radius:var(--r); font-size:16px; resize:none}

.meta{
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  margin:10px 2px 20px; font-size:12.5px; color:var(--ink-3);
}
.anon-badge{display:inline-flex; align-items:center; gap:6px}
.anon-badge svg{width:14px; height:14px; opacity:.8}
.count{font-family:var(--mono); font-variant-numeric:tabular-nums}
/* src/client/counter.ts sets this from 94% of the limit. Without a rule the
   counter reached the cap looking exactly like the counter at half of it. */
.count.is-near{color:var(--warn); font-weight:650}
.legal{margin:16px 0 0; font-size:11.5px; color:var(--ink-3); line-height:1.5}
.legal a{color:var(--ink-2)}
.check{display:flex; gap:10px; align-items:flex-start; margin:18px 0 0; font-size:13px; color:var(--ink-2); line-height:1.45}
.check input{margin:2px 0 0; accent-color:var(--accent); width:17px; height:17px; flex:0 0 auto}

.notice{
  display:flex; gap:10px; align-items:flex-start; margin:0 0 16px; padding:12px 14px;
  border-radius:var(--r); background:var(--panel); border:1px solid var(--line-2);
  font-size:13.5px; color:var(--ink-2); line-height:1.5; text-align:left;
}
.notice svg{width:17px; height:17px; flex:0 0 auto; margin-top:2px; color:var(--ink-3)}
.notice--bad{border-color:color-mix(in srgb, var(--bad) 45%, transparent); background:color-mix(in srgb, var(--bad) 9%, var(--panel)); color:var(--ink)}
.notice--bad svg{color:var(--bad)}
.notice--warn{border-color:color-mix(in srgb, var(--warn) 42%, transparent); background:color-mix(in srgb, var(--warn) 8%, var(--panel))}
.notice--warn svg{color:var(--warn)}
.notice--good{border-color:color-mix(in srgb, var(--good) 40%, transparent); background:color-mix(in srgb, var(--good) 8%, var(--panel))}
.notice--good svg{color:var(--good)}

.linkrow{
  display:flex; align-items:center; gap:8px; padding:9px 12px; border-radius:var(--r-sm);
  background:var(--raise-2); border:1px solid var(--line);
}
.linkrow code{
  flex:1; min-width:0; font-family:var(--mono); font-size:12.5px; color:var(--ink-2);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; user-select:all;
  background:none; border:0; padding:0;
}
.linkrow--wrap code{white-space:normal; overflow:visible; line-height:1.55}

.steps{margin:30px 0 0; padding:0; list-style:none; display:flex; flex-direction:column; gap:14px}
.steps li{display:flex; gap:12px; align-items:flex-start; font-size:14px; color:var(--ink-2); line-height:1.5}
.steps .num,.steps .n{
  flex:0 0 auto; width:22px; height:22px; border-radius:50%; display:grid; place-items:center;
  background:var(--raise-2); border:1px solid var(--line-2); color:var(--ink-3);
  font-size:11.5px; font-weight:650; font-variant-numeric:tabular-nums; font-family:var(--mono);
}
.steps b{color:var(--ink); font-weight:650}

/* ---------- send ---------- */
/* The glow is centred on the column and nothing clips it, so a width over 100%
   is scrollable overflow on any phone narrower than the box: at 380px the 110%
   it used to allow put its right edge 19px past the viewport. */
.send{
  flex:1 1 auto; display:flex; flex-direction:column; justify-content:center;
  padding:44px 22px; position:relative; text-align:center;
}
.send::before{
  content:""; position:absolute; top:2%; left:50%; width:420px; height:420px;
  transform:translateX(-50%); pointer-events:none; max-width:100%;
  background:radial-gradient(circle, var(--glow) 0%, transparent 68%);
  animation:breathe 7s ease-in-out infinite;
}
@keyframes breathe{
  0%,100%{opacity:.65; transform:translateX(-50%) scale(1)}
  50%{opacity:1; transform:translateX(-50%) scale(1.1)}
}
.send__inner{position:relative; z-index:1}
.avatar{
  width:76px; height:76px; border-radius:50%; margin:0 auto 18px; display:grid;
  place-items:center; font-size:28px; font-weight:600; color:var(--accent-ink);
  background:linear-gradient(150deg, var(--accent-fill), var(--accent-fill-2));
  box-shadow:0 8px 30px -8px var(--glow), inset 0 1px 0 rgba(255,255,255,.28);
}
.send h1{margin:0 0 6px; font-size:25px; font-weight:650; letter-spacing:-.03em; line-height:1.2}
.send .who{margin:0 0 26px; color:var(--ink-3); font-size:14px}
.turnstile{display:flex; justify-content:center; margin:0 0 16px; min-height:0}

/* ---------- sent ---------- */
.sent{flex:1 1 auto; display:flex; flex-direction:column; justify-content:center; align-items:center; padding:44px 26px; text-align:center}
.seal{width:88px; height:88px; margin-bottom:22px; position:relative}
.seal svg{width:100%; height:100%; overflow:visible}
.seal .ring{
  fill:none; stroke:var(--accent); stroke-width:2; opacity:.35;
  stroke-dasharray:264; stroke-dashoffset:264; animation:draw 1.1s var(--ease) .1s forwards;
}
.seal .tick{
  fill:none; stroke:var(--good); stroke-width:3.5; stroke-linecap:round; stroke-linejoin:round;
  stroke-dasharray:44; stroke-dashoffset:44; animation:draw .5s var(--ease) .75s forwards;
}
@keyframes draw{to{stroke-dashoffset:0}}
.sent h1{margin:0 0 10px; font-size:24px; font-weight:650; letter-spacing:-.025em}
.sent p{margin:0 0 8px; color:var(--ink-2); font-size:15px; max-width:32ch}
.keeper{
  margin:26px 0 0; width:100%; padding:16px; border-radius:var(--r);
  background:var(--panel); border:1px dashed var(--line-2); text-align:left;
}
.keeper h2{margin:0 0 6px; font-size:13.5px; font-weight:650; color:var(--ink)}
.keeper p{margin:0 0 12px; font-size:13px; color:var(--ink-3); max-width:none}

/* ---------- thread, as the sender sees it ---------- */
.ret{flex:1 1 auto; display:flex; flex-direction:column; justify-content:center; padding:44px 24px; text-align:center; position:relative}
.ret::before{
  content:""; position:absolute; top:6%; left:50%; width:340px; height:340px; max-width:100%;
  transform:translateX(-50%); pointer-events:none;
  background:radial-gradient(circle, var(--glow), transparent 68%); animation:breathe 7s ease-in-out infinite;
}
.ret__inner{position:relative; z-index:1}
.ret h1{margin:0 0 8px; font-size:23px; font-weight:650; letter-spacing:-.025em}
.ret__lede{margin:0 0 22px; color:var(--ink-2); font-size:14.5px}
.quote{
  text-align:left; padding:16px 18px; border-radius:var(--r); background:var(--panel);
  border:1px solid var(--line-2); border-left:3px solid var(--accent); margin-bottom:14px;
}
.quote .lbl{margin:0 0 6px; font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-3); font-family:var(--mono)}
.quote p{margin:0; font-size:15px; line-height:1.45; white-space:pre-wrap; overflow-wrap:anywhere}
.reply-card{
  text-align:left; padding:16px 18px; border-radius:var(--r); margin-bottom:14px;
  background:linear-gradient(150deg, color-mix(in srgb, var(--accent) 20%, var(--panel)), var(--panel));
  border:1px solid color-mix(in srgb, var(--accent) 36%, transparent);
}
.reply-card .lbl{margin:0 0 6px; font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--accent-2); font-family:var(--mono)}
.reply-card p{margin:0; font-size:15.5px; line-height:1.45; white-space:pre-wrap; overflow-wrap:anywhere}
.stamp{margin:5px 4px 14px; font-size:11px; color:var(--ink-3); text-align:left}

/* The rendered share card. The 1080x1920 attributes canvas.ts sets are the
   bitmap the encoder needs; with no rule here they were the layout size too, so
   the element burst out of every phone. aspect-ratio reserves the same box
   before the script runs, so mounting it does not shove the buttons down. */
.card-canvas{
  display:block; width:100%; height:auto; max-width:340px; aspect-ratio:1080/1920;
  margin:0 auto 12px; border-radius:14px; background:var(--raise);
}
@media (max-width:420px){ .card-canvas{max-width:100%} }

/* ---------- dock: a composer or a capability bar ---------- */
.dock{margin-top:10px; text-align:left}
.dock__note{margin:0 0 10px; font-size:11.5px; color:var(--ink-3); text-align:center; line-height:1.45}
.dock__note b{color:var(--accent-2); font-weight:600}
.dock__note .num{font-family:var(--mono); font-variant-numeric:tabular-nums}
.cap{
  display:flex; align-items:center; gap:12px; padding:15px 16px; border-radius:var(--r);
  border:1px solid var(--line-2); background:var(--panel);
}
.cap__icon{
  flex:0 0 auto; width:36px; height:36px; border-radius:12px; display:grid; place-items:center;
  background:var(--raise-2); border:1px solid var(--line-2); color:var(--ink-3);
}
.cap__icon svg{width:17px; height:17px}
.cap__main{flex:1; min-width:0}
.cap__main strong{display:block; font-size:13.5px; font-weight:650; letter-spacing:-.012em; margin-bottom:2px}
.cap__main p{margin:0; font-size:12px; color:var(--ink-3); line-height:1.45}
.cap__main b{color:var(--ink-2); font-weight:650}
.cap--locked .cap__icon{
  color:var(--accent-2); background:color-mix(in srgb, var(--accent) 15%, transparent);
  border-color:color-mix(in srgb, var(--accent) 34%, transparent);
}

/* ---------- claim ---------- */
.claim{flex:1 1 auto; display:flex; flex-direction:column; justify-content:center; padding:44px 24px}
.claim .eyebrow{margin:0 0 14px; font-size:12px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-3); font-family:var(--mono)}
.claim h1{margin:0 0 8px; font-size:27px; font-weight:650; letter-spacing:-.03em; line-height:1.15}
.claim__lede{margin:0 0 26px; color:var(--ink-2); font-size:15px}
.urlbox{
  display:flex; align-items:center; border-radius:var(--r); overflow:hidden;
  border:1px solid var(--field); background:var(--panel);
  transition:border-color .25s, box-shadow .25s;
}
.urlbox:focus-within{border-color:var(--accent); box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 15%, transparent)}
.urlbox:has(input:focus-visible){outline:2px solid var(--accent-2); outline-offset:2px}
.urlbox__pre{
  padding:0 2px 0 15px; font-family:var(--mono); font-size:16px; color:var(--ink-3);
  flex:0 0 auto; line-height:54px;
}
.urlbox input{
  flex:1; min-width:0; border:0; background:none; color:var(--ink); font:inherit;
  font-family:var(--mono); font-size:16px; padding:16px 12px 16px 0;
}
.urlbox input:focus:not(:focus-visible){outline:none}
.codebox{
  width:100%; margin-top:12px; padding:15px; border-radius:var(--r); background:var(--panel);
  border:1px solid var(--field); color:var(--ink); font:inherit; font-family:var(--mono); font-size:16px;
}
.codebox:focus{border-color:var(--accent); box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 15%, transparent)}
.codebox:focus:not(:focus-visible){outline:none}
.avail{margin:9px 2px 0; font-size:12.5px; color:var(--ink-3); display:flex; align-items:center; gap:6px}

/* ---------- safety blocks ---------- */
.shield{
  padding:15px 16px; border-radius:var(--r); border:1px solid var(--line-2); background:var(--panel);
  display:flex; gap:12px; align-items:flex-start; text-align:left; margin-bottom:12px;
}
.shield > svg{width:20px; height:20px; flex:0 0 auto; margin-top:1px; color:var(--accent-2)}
.shield h3,.shield h4{margin:0 0 4px; font-size:14px; font-weight:650}
.shield p{margin:0 0 8px; font-size:13px; color:var(--ink-2); line-height:1.5}
.shield p:last-child{margin-bottom:0}
.shield--held{border-color:color-mix(in srgb, var(--warn) 40%, transparent); background:color-mix(in srgb, var(--warn) 8%, var(--panel))}
.shield--held > svg{color:var(--warn)}
.shield--blocked > svg{color:var(--bad)}
.promise{margin:22px 0 0; padding:15px 16px; border-radius:var(--r); border:1px dashed var(--line-2); text-align:left}
.promise h2{margin:0 0 8px; font-size:12px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-3); font-family:var(--mono); font-weight:500}
.promise ul{margin:0; padding:0; list-style:none; display:flex; flex-direction:column; gap:8px}
.promise li{display:flex; gap:9px; font-size:13px; color:var(--ink-2); line-height:1.45; align-items:flex-start}
.promise li svg{width:15px; height:15px; flex:0 0 auto; margin-top:2px; color:var(--good)}

/* ---------- empty and refused states ---------- */
.empty{flex:1 1 auto; display:flex; flex-direction:column; justify-content:center; align-items:center; padding:44px 26px; text-align:center}
.empty h1{margin:0 0 10px; font-size:23px; font-weight:650; letter-spacing:-.025em}
.empty p{margin:0 0 18px; color:var(--ink-2); font-size:15px; max-width:34ch}

/* ==========================================================================
   Site chrome. `.page` is the full-width document wrapper; `.site` is the
   narrow column the app's own long-form screens still use.
   ========================================================================== */
.page{flex:1 1 auto; display:flex; flex-direction:column; width:100%; min-width:0}
.site{width:100%; max-width:720px; margin:0 auto; padding:0 20px 72px; flex:1 1 auto}
/* The bar aligns with the column when it sits inside one. */
.site > .site__bar{padding-left:0; padding-right:0; background:none; margin-bottom:22px}

.site__bar{
  display:flex; align-items:center; gap:10px 18px; flex-wrap:wrap;
  padding:15px max(26px, calc((100% - 1240px) / 2)); border-bottom:1px solid var(--line);
  background:color-mix(in srgb, var(--panel) 55%, transparent);
}
.site__nav{display:flex; gap:2px; flex-wrap:wrap}
.site__nav a{
  padding:6px 11px; border-radius:9px; font-size:13.5px; color:var(--ink-2);
  text-decoration:none; transition:background .2s, color .2s;
}
.site__nav a:hover{background:var(--raise-2); color:var(--ink)}
.site__nav a[aria-current="page"]{background:color-mix(in srgb, var(--accent) 15%, transparent); color:var(--accent-2); font-weight:600}
.site__body{flex:1 1 auto; min-width:0}
.site__foot{
  flex:0 0 auto; display:flex; align-items:center; gap:10px 20px; flex-wrap:wrap;
  padding:20px max(26px, calc((100% - 1240px) / 2)); border-top:1px solid var(--line); background:var(--panel);
}
.site__foot .site__nav a{font-size:12.5px; padding:4px 9px; color:var(--ink-3)}
.site__foot .site__nav a:hover{color:var(--ink-2)}
.foot__note{font-size:11.5px; color:var(--ink-3); line-height:1.5; max-width:52ch}
.foot__note a{color:var(--ink-2)}
@media (max-width:560px){
  .site__bar{padding:13px 16px; gap:8px 12px}
  .site__foot{padding:16px}
  .site > .site__bar{padding-left:0; padding-right:0}
}

/* ---------- a document column ---------- */
.doc-col{max-width:960px; margin:0 auto; padding:40px 26px 46px; width:100%}
.doc-col--tight{max-width:760px}
@media (max-width:560px){ .doc-col{padding:28px 16px 34px} }

.page__head{margin:0 0 26px; max-width:70ch}
.page__eyebrow{
  display:block; margin:0 0 10px; font-family:var(--mono); font-size:11px;
  letter-spacing:.14em; text-transform:uppercase; color:var(--accent-2);
}
.page__head h1{margin:0 0 12px; font-size:clamp(26px,3.6vw,36px); font-weight:650; letter-spacing:-.03em; line-height:1.12}
.page__head p:not([class]){margin:0 0 8px; color:var(--ink-2); font-size:16px; line-height:1.55}
.page__stamp{margin:14px 0 0; font-family:var(--mono); font-size:11.5px; color:var(--ink-3)}

.toc{display:flex; flex-wrap:wrap; gap:7px; margin:0 0 6px; padding:0; list-style:none}
.toc a{
  display:inline-flex; align-items:center; gap:7px; padding:6px 12px; border-radius:99px;
  border:1px solid var(--field); background:var(--panel); color:var(--ink-2);
  font-size:12.5px; text-decoration:none; transition:border-color .2s, color .2s;
}
.toc a:hover{color:var(--ink); border-color:var(--accent)}
.toc a .n{font-family:var(--mono); font-size:10.5px; color:var(--ink-3)}

.sect{margin-top:44px; scroll-margin-top:20px}
.sect__head{display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; margin-bottom:16px}
.sect__head h2{margin:0; font-size:19px; font-weight:650; letter-spacing:-.02em}
.sect__head h3{margin:0; font-size:16px; font-weight:650; letter-spacing:-.015em}
.sect__head p{margin:0; flex-basis:100%; color:var(--ink-2); font-size:14.5px; max-width:72ch; line-height:1.6}

/* Paragraph measure on the public pages. Element-qualified so it cannot reach
   the `.prose` container the app screens wrap their long copy in. */
p.prose,ul.prose,ol.prose{margin:0 0 12px; color:var(--ink-2); font-size:15px; line-height:1.65; max-width:72ch}
ul.prose,ol.prose{padding-left:20px}
ul.prose li,ol.prose li{margin:0 0 8px}
p.prose:last-child{margin-bottom:0}
p.prose strong,ul.prose strong{color:var(--ink); font-weight:650}

/* Long-form container used by the app screens. */
.prose h1{margin:0 0 10px; font-size:clamp(28px,6vw,38px); font-weight:650; letter-spacing:-.03em; line-height:1.12}
.prose .lede{margin:0 0 34px; color:var(--ink-2); font-size:16.5px; max-width:60ch}
.prose h2{margin:38px 0 10px; font-size:19px; font-weight:650; letter-spacing:-.02em}
.prose h3{margin:24px 0 6px; font-size:15px; font-weight:650}
.prose p{margin:0 0 14px; color:var(--ink-2); font-size:15.5px; line-height:1.62; max-width:66ch}
.prose ul{margin:0 0 16px; padding-left:20px; color:var(--ink-2); font-size:15.5px; line-height:1.62; max-width:66ch}
.prose li{margin:0 0 8px}
.prose strong{color:var(--ink); font-weight:650}
code{font-family:var(--mono); font-size:13.5px; color:var(--ink); background:var(--raise-2); border:1px solid var(--line); border-radius:6px; padding:1px 6px}
.prose .updated,.updated{margin:0 0 30px; font-size:12.5px; color:var(--ink-3); font-family:var(--mono)}
.tbl{width:100%; border-collapse:collapse; margin:0 0 18px; font-size:14px}
.tbl th,.tbl td{text-align:left; padding:9px 12px; border-bottom:1px solid var(--line); color:var(--ink-2); vertical-align:top}
.tbl th{color:var(--ink-3); font-weight:600; font-size:11.5px; letter-spacing:.08em; text-transform:uppercase; font-family:var(--mono)}
.tbl tr:last-child td{border-bottom:0}
.tbl td.n,.tbl th.n{text-align:right; font-variant-numeric:tabular-nums}
.tbl td.wrap{white-space:normal}

/* Narrow width: each row becomes a card and each cell prints its column name
   from data-label, so the header row can be dropped rather than scrolled to. */
@media (max-width:640px){
  .tbl,.tbl tbody,.tbl tr,.tbl td{display:block; width:100%}
  .tbl thead{position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0}
  .tbl tr{
    margin:0 0 10px; padding:12px 14px; border:1px solid var(--line);
    border-radius:var(--r-sm); background:var(--panel);
  }
  .tbl td{border-bottom:0; padding:0 0 7px; white-space:normal; display:flex; gap:14px; align-items:baseline}
  .tbl tr td:last-child{padding-bottom:0}
  .tbl td::before{
    content:attr(data-label); flex:0 0 auto; min-width:6.5em;
    font-family:var(--mono); font-size:10px; letter-spacing:.1em;
    text-transform:uppercase; color:var(--ink-3);
  }
  .tbl td[data-label=""]::before,.tbl td:not([data-label])::before{display:none}
  .tbl td.n{text-align:left}
  .tbl td > *{min-width:0}
}

/* ============================ the root ================================== */
.root{position:relative; overflow:hidden; padding:56px 26px 40px}
.root::before{
  content:""; position:absolute; top:-32%; left:26%; width:560px; height:560px;
  transform:translateX(-50%); pointer-events:none;
  background:radial-gradient(circle, var(--glow) 0%, transparent 68%);
  animation:breathe 7s ease-in-out infinite;
}
.root__grid{
  position:relative; z-index:1; max-width:1000px; margin:0 auto;
  display:grid; grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr); gap:48px; align-items:center;
}
.root__claim h1{
  margin:14px 0 10px; font-size:clamp(28px,4.2vw,40px); font-weight:650;
  letter-spacing:-.035em; line-height:1.08;
}
.root__claim .root__lede{margin:0 0 26px; color:var(--ink-2); font-size:16px; max-width:44ch; line-height:1.55}
.root__act{display:flex; gap:10px; margin-top:18px; flex-wrap:wrap}
.root__act .btn{flex:1 1 200px}
.root__steps{margin-top:28px; padding-top:22px; border-top:1px solid var(--line)}
.root__steps .steps{margin-top:0}
@media (max-width:900px){
  .root{padding:40px 20px 32px}
  .root__grid{grid-template-columns:1fr; gap:34px}
  .root::before{left:50%; top:-24%; width:420px; height:420px}
}
@media (max-width:560px){ .root{padding:30px 16px 26px} }

/* The preview card on the root. */
.mini{
  border-radius:var(--r-lg); border:1px solid var(--line-2); background:var(--panel);
  padding:26px 22px 22px; text-align:center; box-shadow:var(--shadow); position:relative;
}
.mini__cap{
  position:absolute; top:-11px; left:50%; transform:translateX(-50%);
  font-family:var(--mono); font-size:10px; letter-spacing:.1em; text-transform:uppercase;
  color:var(--ink-3); background:var(--bg); padding:2px 10px; border:1px solid var(--line);
  border-radius:99px; white-space:nowrap;
}
.mini__av{
  width:56px; height:56px; border-radius:50%; margin:6px auto 14px; display:grid;
  place-items:center; font-size:21px; font-weight:600; color:var(--accent-ink);
  background:linear-gradient(150deg, var(--accent-fill), var(--accent-fill-2));
  box-shadow:0 8px 24px -10px var(--glow), inset 0 1px 0 rgba(255,255,255,.28);
}
.mini h2{margin:0 0 5px; font-size:18px; font-weight:650; letter-spacing:-.025em; line-height:1.22}
.mini__who{margin:0 0 18px; font-size:12.5px; color:var(--ink-3)}
.mini__box{
  text-align:left; min-height:76px; padding:13px 14px; border-radius:16px;
  border:1px solid var(--line); background:var(--bg); color:var(--ink-3); font-size:14px; line-height:1.45;
}
.mini__meta{display:flex; align-items:center; justify-content:space-between; gap:10px; margin:9px 2px 14px; font-size:11.5px; color:var(--ink-3)}
.mini__meta span{display:inline-flex; align-items:center; gap:5px}
.mini__meta svg{width:13px; height:13px; opacity:.8}
.mini__send{
  display:flex; align-items:center; justify-content:center; gap:8px; min-height:44px;
  border-radius:var(--r); background:var(--accent-fill); color:var(--accent-ink);
  font-size:15px; font-weight:600; box-shadow:0 6px 22px -8px var(--glow);
}
.mini__send svg{width:16px; height:16px}
.mini__legal{margin:12px 0 0; font-size:11px; color:var(--ink-3); line-height:1.5}

.band{
  display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1px;
  background:var(--line); border-top:1px solid var(--line); border-bottom:1px solid var(--line);
}
.band__cell{background:var(--bg); padding:22px 26px}
.band__cell svg{width:19px; height:19px; color:var(--accent-2); margin-bottom:10px; display:block}
.band__cell h2{margin:0 0 5px; font-size:14px; font-weight:650; letter-spacing:-.012em}
.band__cell p{margin:0; font-size:13px; color:var(--ink-2); line-height:1.55}
@media (max-width:820px){ .band{grid-template-columns:1fr} .band__cell{padding:18px 20px} }

/* ============================ /safety =================================== */
.vows{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px}
@media (max-width:940px){ .vows{grid-template-columns:1fr} }
.vow{
  border:1px solid var(--line-2); border-radius:var(--r); padding:20px 20px 18px;
  background:var(--panel); position:relative; display:flex; flex-direction:column; gap:10px;
  animation:rise .5s var(--ease) both;
}
.vow:nth-child(1){animation-delay:.04s}
.vow:nth-child(2){animation-delay:.12s}
.vow:nth-child(3){animation-delay:.2s}
@keyframes rise{from{opacity:0; transform:translateY(14px)} to{opacity:1; transform:none}}
.vow__no{
  display:inline-flex; align-items:center; gap:7px; font-family:var(--mono);
  font-size:10.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--bad);
}
.vow__no svg{width:14px; height:14px}
.vow h3{margin:0; font-size:17.5px; font-weight:650; letter-spacing:-.025em; line-height:1.25}
.vow > p:not([class]){margin:0; font-size:13.5px; color:var(--ink-2); line-height:1.6}
.vow__test{
  margin-top:auto; padding-top:12px; border-top:1px dashed var(--line-2);
  font-size:12.5px; color:var(--ink-3); line-height:1.55;
}
.vow__test b{display:block; color:var(--good); font-weight:600; font-size:11px; letter-spacing:.1em; text-transform:uppercase; margin-bottom:4px; font-family:var(--mono)}

.rungs{display:flex; flex-direction:column; gap:12px}
.rung{
  display:flex; gap:16px; padding:18px; border-radius:var(--r);
  border:1px solid var(--line-2); background:var(--panel);
}
.rung__n{
  flex:0 0 auto; width:38px; height:38px; border-radius:12px; display:grid; place-items:center;
  font-family:var(--mono); font-size:14px; font-weight:650;
  background:color-mix(in srgb, var(--accent) 15%, transparent);
  border:1px solid color-mix(in srgb, var(--accent) 34%, transparent); color:var(--accent-2);
}
.rung__main{flex:1; min-width:0}
.rung__top{display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; margin-bottom:6px}
.rung__top h3{margin:0; font-size:15.5px; font-weight:650; letter-spacing:-.015em}
.rung__top .handle{margin-left:auto}
.rung p{margin:0 0 10px; font-size:13.5px; color:var(--ink-2); line-height:1.6}
.rung__list{margin:0; padding:0; list-style:none; display:flex; flex-wrap:wrap; gap:6px}
.rung__list li{
  font-size:12px; color:var(--ink-2); padding:3px 9px; border-radius:var(--r-sm);
  background:var(--raise-2); border:1px solid var(--line);
}
@media (max-width:560px){ .rung{flex-direction:column; gap:12px} .rung__top .handle{margin-left:0; flex-basis:100%} }

.outcomes{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin:14px 0}
@media (max-width:760px){ .outcomes{grid-template-columns:1fr} }
.outcome{padding:14px 15px; border-radius:var(--r); border:1px solid var(--line); background:var(--bg)}
.outcome h3{margin:0 0 5px; font-size:13.5px; font-weight:650; display:flex; align-items:center; gap:8px}
.outcome h3 i{width:8px; height:8px; border-radius:50%; display:block; flex:0 0 auto}
.outcome--pass h3 i{background:var(--good)}
.outcome--hold h3 i{background:var(--warn)}
.outcome--drop h3 i{background:var(--bad)}
.outcome p{margin:0; font-size:12.5px; color:var(--ink-3); line-height:1.55}

p.held-body{
  margin:10px 0 0; padding:11px 13px; border-radius:var(--r-sm); background:var(--raise-2);
  font-size:13.5px; color:var(--ink-3); filter:blur(4px); user-select:none;
  transition:filter .35s var(--ease);
}
p.held-body:hover{filter:blur(0)}

/* ============================ is this a scam ============================ */
.scam{position:relative; padding:44px 26px 40px; overflow:hidden}
.scam::before{
  content:""; position:absolute; top:-18%; left:50%; width:460px; height:460px;
  transform:translateX(-50%); pointer-events:none;
  background:radial-gradient(circle, var(--glow) 0%, transparent 70%);
  animation:breathe 7s ease-in-out infinite;
}
.scam__inner{position:relative; z-index:1; max-width:680px; margin:0 auto}
.scam__from{display:flex; justify-content:center; margin-bottom:18px}
.scam h1{margin:0 0 10px; font-size:clamp(26px,4vw,34px); font-weight:650; letter-spacing:-.03em; text-align:center}
.scam__lede{margin:0 auto 28px; color:var(--ink-2); font-size:15.5px; line-height:1.6; text-align:center; max-width:52ch}
.qa{display:flex; flex-direction:column; border:1px solid var(--line-2); border-radius:var(--r); overflow:hidden; background:var(--panel); margin:0}
.qa__row{display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.35fr); gap:18px; padding:16px 18px; border-bottom:1px solid var(--ruled)}
.qa__row:last-child{border-bottom:0}
.qa__row dt{margin:0; font-size:14.5px; font-weight:650; letter-spacing:-.015em}
.qa__row dd{margin:0; font-size:13.5px; color:var(--ink-2); line-height:1.6}
.qa__row dd b{color:var(--ink); font-weight:650}
.qa__row--flag{background:color-mix(in srgb, var(--warn) 7%, var(--panel))}
.qa__row--flag dt{color:var(--warn)}
@media (max-width:640px){ .qa__row{grid-template-columns:1fr; gap:6px} }
.scam__acts{display:flex; gap:10px; margin-top:22px; flex-wrap:wrap}
.scam__acts .btn{flex:1 1 210px}
.scam__out{margin:16px 0 0; text-align:center; font-size:12.5px; color:var(--ink-3); line-height:1.6}
@media (max-width:560px){ .scam{padding:30px 16px} }

/* ============================ /privacy ================================== */
.kv{width:100%; border-collapse:collapse; font-size:13.5px}
.kv caption{
  caption-side:top; text-align:left; padding:0 0 10px; color:var(--ink-3);
  font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase;
}
.kv th{
  text-align:left; padding:9px 12px; font-size:11px; font-weight:600; letter-spacing:.08em;
  text-transform:uppercase; color:var(--ink-3); border-bottom:1px solid var(--line-2);
  font-family:var(--mono);
}
.kv td{padding:11px 12px; border-bottom:1px solid var(--ruled); color:var(--ink-2); line-height:1.55; vertical-align:top}
.kv tr:last-child td{border-bottom:0}
.kv td:first-child{color:var(--ink); font-weight:600; font-family:var(--mono); font-size:12.5px; white-space:nowrap}
.kv .who{color:var(--ink-3); font-size:12.5px}
.kv .who--never{color:var(--good)}
.kv .who--audit{color:var(--warn)}
.tablecard{border:1px solid var(--line-2); border-radius:var(--r); background:var(--panel); padding:16px 16px 6px; margin-bottom:14px}

/* Below 640px each row becomes a card: the header row is taken out of the flow
   and each cell carries its column name from data-label. */
@media (max-width:640px){
  .tablecard{padding:14px 14px 4px}
  .kv,.kv tbody,.kv tr,.kv td{display:block; width:100%}
  .kv thead{position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0}
  .kv tr{
    border:1px solid var(--line); border-radius:var(--r-sm);
    background:var(--bg); padding:12px 13px; margin-bottom:10px;
  }
  .kv td{border-bottom:0; padding:0 0 9px; white-space:normal}
  .kv tr td:last-child{padding-bottom:0}
  .kv td:first-child{
    white-space:normal; font-size:13px; padding-bottom:8px;
    margin-bottom:8px; border-bottom:1px solid var(--ruled);
  }
  .kv td[data-label]::before{
    content:attr(data-label); display:block; margin-bottom:3px;
    font-family:var(--mono); font-size:10px; letter-spacing:.1em;
    text-transform:uppercase; color:var(--ink-3); font-weight:500;
  }
}

.stats{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin-top:16px}
@media (max-width:860px){ .stats{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:420px){ .stats{grid-template-columns:1fr} }
.stat{padding:15px 16px; border-radius:var(--r); border:1px solid var(--line); background:var(--panel)}
.stat b{display:block; font-size:24px; font-weight:650; letter-spacing:-.03em; font-variant-numeric:tabular-nums; font-family:var(--mono)}
.stat span{display:block; margin-top:4px; font-size:12.5px; color:var(--ink-3); line-height:1.45}

/* The capture ladder. Four radios drive both the pressed rung and which panel
   is shown; no script is involved. */
.ladder{border:1px solid var(--line-2); border-radius:var(--r); background:var(--panel); overflow:hidden; margin:0; padding:0; min-width:0}
.ladder__rows{display:grid; grid-template-columns:repeat(4,minmax(0,1fr))}
.lrung{
  border-right:1px solid var(--ruled); border-bottom:1px solid var(--ruled);
  background:var(--panel); color:var(--ink-2); font:inherit; text-align:left; cursor:pointer;
  padding:14px 15px; display:flex; flex-direction:column; gap:6px; align-items:flex-start;
  transition:background .2s var(--ease), color .2s;
}
.lrung:last-of-type{border-right:0}
.lrung:hover{background:var(--raise-2); color:var(--ink)}
.lrung__id{font-family:var(--mono); font-size:12.5px; font-weight:650; letter-spacing:.04em; color:var(--accent-2)}
.lrung__sub{font-size:11.5px; color:var(--ink-3); line-height:1.4}
.ladder__detail{display:none; padding:18px; border-top:1px solid var(--ruled)}
.ladder__detail h3{margin:0 0 8px; font-size:14.5px; font-weight:650; letter-spacing:-.015em}
.ladder__detail p{margin:0 0 12px; font-size:13.5px; color:var(--ink-2); line-height:1.6; max-width:70ch}
.ladder__facts{display:flex; flex-wrap:wrap; gap:8px; margin:0; padding:0; list-style:none}
.ladder__facts li{
  font-size:12px; color:var(--ink-2); padding:4px 10px; border-radius:var(--r-sm);
  background:var(--raise-2); border:1px solid var(--line); font-family:var(--mono);
}
#rung-full:checked ~ .ladder__detail[data-r="full"],
#rung-reduced:checked ~ .ladder__detail[data-r="reduced"],
#rung-minimal:checked ~ .ladder__detail[data-r="minimal"],
#rung-off:checked ~ .ladder__detail[data-r="off"]{display:block}
#rung-full:checked ~ .ladder__rows label[for="rung-full"],
#rung-reduced:checked ~ .ladder__rows label[for="rung-reduced"],
#rung-minimal:checked ~ .ladder__rows label[for="rung-minimal"],
#rung-off:checked ~ .ladder__rows label[for="rung-off"]{background:color-mix(in srgb, var(--accent) 14%, var(--panel)); color:var(--ink)}
#rung-full:focus-visible ~ .ladder__rows label[for="rung-full"],
#rung-reduced:focus-visible ~ .ladder__rows label[for="rung-reduced"],
#rung-minimal:focus-visible ~ .ladder__rows label[for="rung-minimal"],
#rung-off:focus-visible ~ .ladder__rows label[for="rung-off"]{outline:2px solid var(--accent-2); outline-offset:-2px}
@media (max-width:760px){
  .ladder__rows{grid-template-columns:repeat(2,minmax(0,1fr))}
  .lrung:nth-of-type(2n){border-right:0}
}
@media (max-width:440px){
  .ladder__rows{grid-template-columns:1fr}
  .lrung{border-right:0}
}

.triggers{margin:14px 0 0; padding:0; list-style:none; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px}
@media (max-width:760px){ .triggers{grid-template-columns:1fr} }
.triggers li{
  display:flex; gap:10px; align-items:flex-start; padding:11px 13px; border-radius:var(--r-sm);
  background:var(--bg); border:1px solid var(--line); font-size:12.5px; color:var(--ink-2); line-height:1.5;
}
.triggers li svg{width:15px; height:15px; flex:0 0 auto; margin-top:1px; color:var(--accent-2)}

/* The data-request control. */
.dsar{
  border:1px solid color-mix(in srgb, var(--accent) 34%, transparent); border-radius:var(--r);
  background:linear-gradient(155deg, color-mix(in srgb, var(--accent) 12%, var(--panel)), var(--panel) 62%);
  padding:20px;
}
.dsar h3{margin:0 0 6px; font-size:16.5px; font-weight:650; letter-spacing:-.02em}
.dsar > p:not([class]){margin:0 0 16px; font-size:13.5px; color:var(--ink-2); line-height:1.6; max-width:62ch}
.dsar fieldset{border:0; margin:0 0 6px; padding:0; min-width:0}
.dsar legend{padding:0; font-size:12.5px; color:var(--ink-3); margin-bottom:8px}
.seg{display:inline-flex; padding:3px; border-radius:var(--r-sm); background:var(--raise-2); border:1px solid var(--line); gap:2px; flex-wrap:wrap}
.seg label{
  font-size:13px; color:var(--ink-3); padding:7px 13px; border-radius:7px; cursor:pointer;
  transition:background .2s, color .2s;
}
.seg label:hover{color:var(--ink)}
.dsar__form{display:flex; flex-direction:column; gap:12px; margin-top:14px}
.dsar__row{display:flex; gap:10px; flex-wrap:wrap; align-items:flex-end}
.dsar__row .dsar__cell{flex:1 1 260px; min-width:0}
.dsar__row .btn{flex:0 0 auto; width:auto; min-height:50px}
.dsar__lbl{display:block; margin:0 0 6px; font-size:12.5px; color:var(--ink-2)}
.dsar__hint{margin:0; font-size:12.5px; color:var(--ink-3); line-height:1.6; max-width:64ch}
.dsar__hint b{color:var(--ink-2); font-weight:600}
.dsar__what{display:none; margin:0; font-size:13px; color:var(--ink-2); line-height:1.6; max-width:64ch}
#kind-access:checked ~ .dsar__what[data-k="access"],
#kind-erasure:checked ~ .dsar__what[data-k="erasure"]{display:block}
#kind-access:checked ~ .seg label[for="kind-access"],
#kind-erasure:checked ~ .seg label[for="kind-erasure"]{background:var(--accent-fill); color:var(--accent-ink); font-weight:600}
#kind-access:focus-visible ~ .seg label[for="kind-access"],
#kind-erasure:focus-visible ~ .seg label[for="kind-erasure"]{outline:2px solid var(--accent-2); outline-offset:2px}
.receipt{display:grid; grid-template-columns:auto minmax(0,1fr); gap:10px 18px; margin:0; font-size:13.5px}
.receipt dt{margin:0; color:var(--ink-3); font-family:var(--mono); font-size:11.5px; letter-spacing:.06em; text-transform:uppercase; padding-top:2px}
.receipt dd{margin:0; color:var(--ink-2); line-height:1.55; overflow-wrap:anywhere}
@media (max-width:520px){ .receipt{grid-template-columns:1fr; gap:4px 0} .receipt dd{margin-bottom:8px} }

/* ============================ /terms ==================================== */
.tiles{display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr)); gap:14px}
.tile{
  border:1px solid var(--line-2); border-radius:var(--r); background:var(--panel);
  padding:17px 18px; display:flex; flex-direction:column; gap:8px;
}
.tile--first{border-color:color-mix(in srgb, var(--accent) 40%, transparent); background:linear-gradient(155deg, color-mix(in srgb, var(--accent) 13%, var(--panel)), var(--panel) 60%)}
.tile__n{font-family:var(--mono); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--ink-3)}
.tile--first .tile__n{color:var(--accent-2)}
.tile h3{margin:0; font-size:15.5px; font-weight:650; letter-spacing:-.02em; line-height:1.3}
.tile > p:not([class]){margin:0; font-size:13.5px; color:var(--ink-2); line-height:1.6}
details.more{margin-top:auto; padding-top:10px; border-top:1px dashed var(--line-2)}
details.more summary{
  cursor:pointer; font-size:12px; color:var(--ink-3); list-style:none;
  font-family:var(--mono); letter-spacing:.06em; text-transform:uppercase;
  display:flex; align-items:center; gap:7px;
}
details.more summary::-webkit-details-marker{display:none}
details.more summary::before{content:"+"; display:inline-block; width:13px; text-align:center; color:var(--accent-2); font-weight:700}
details.more[open] summary::before{content:"\2212"}
.clause{margin:10px 0 0; font-size:12.5px; color:var(--ink-3); line-height:1.65; border-left:2px solid var(--line-2); padding-left:11px}
.terms__foot{display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-top:22px; padding-top:18px; border-top:1px solid var(--line)}
.terms__foot p{margin:0; font-size:12.5px; color:var(--ink-3); flex:1 1 240px; line-height:1.55}

/* ============================ /about ==================================== */
.about__grid{display:grid; grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr); gap:36px; align-items:start}
@media (max-width:880px){ .about__grid{grid-template-columns:1fr; gap:26px} }
.facts{margin:0; display:grid; grid-template-columns:auto minmax(0,1fr); gap:10px 18px; font-size:13.5px}
.facts dt{margin:0; color:var(--ink-3); font-family:var(--mono); font-size:11.5px; letter-spacing:.06em; text-transform:uppercase; padding-top:2px}
.facts dd{margin:0; color:var(--ink-2); line-height:1.55; overflow-wrap:anywhere}
@media (max-width:520px){ .facts{grid-template-columns:1fr; gap:4px 0} .facts dd{margin-bottom:8px} }
.press{border:1px solid var(--line-2); border-radius:var(--r); background:var(--panel); padding:18px}
.press h2{margin:0 0 4px; font-size:15px; font-weight:650; letter-spacing:-.018em}
.press > p:not([class]){margin:0 0 14px; font-size:12.5px; color:var(--ink-3); line-height:1.55}
.nots{margin:18px 0 0; padding:0; list-style:none; display:flex; flex-direction:column; gap:9px}
.nots li{display:flex; gap:10px; align-items:flex-start; font-size:13.5px; color:var(--ink-2); line-height:1.55}
.nots li svg{width:16px; height:16px; flex:0 0 auto; margin-top:2px; color:var(--bad)}

@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.001ms !important; animation-delay:0ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important; transition-delay:0ms !important;
  }
}

/* Held messages, blurred until the recipient asks. /safety promises they can be
   deleted without ever being read, so the body must not be legible by default —
   and must still be selectable by a screen reader, which is why it is blurred
   rather than removed. */
.held{list-style:none; margin:0; padding:0}
.held li{border:1px solid var(--line); border-radius:12px; padding:14px 16px; margin:0 0 12px}
.held .why{margin:0 0 8px; font-size:13px; color:var(--ink-2)}
.held__body{
  margin:0 0 12px; filter:blur(5px); user-select:none; transition:filter .12s ease;
  white-space:pre-wrap; overflow-wrap:anywhere; color:var(--ink-2);
}
.held li:hover .held__body, .held__body:focus-visible{filter:none; user-select:auto}
@media (prefers-reduced-motion:reduce){ .held__body{transition:none} }
