
:root{
  --paper:#f2f1ed;
  --ink:#111111;
  --muted:#696967;
  --line:#c9c8c2;
  --green:#c9ff3d;
  --black:#0b0b0b;
  --header:64px;
  --max:1440px;
  --pad:clamp(18px,3.2vw,50px);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header) + 20px)}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
::selection{background:var(--green);color:#000}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit}
svg{display:block}
code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.shell{width:min(var(--max),calc(100% - var(--pad)*2));margin-inline:auto}

.skip-link{
  position:fixed;left:12px;top:12px;z-index:500;
  padding:10px 12px;background:var(--black);color:#fff;
  transform:translateY(-160%);
}
.skip-link:focus{transform:none}
a:focus-visible,button:focus-visible{outline:2px solid #111;outline-offset:4px}

/* header */
.header{
  position:fixed;inset:0 0 auto;height:var(--header);z-index:100;
  background:rgba(242,241,237,.9);
  border-bottom:1px solid rgba(17,17,17,.14);
  backdrop-filter:blur(14px);
}
.header-inner{
  height:100%;display:grid;grid-template-columns:1fr auto 1fr;
  align-items:center;gap:24px;
}
.brand{font-size:13px;font-weight:760;letter-spacing:-.02em}
.nav{display:flex;gap:26px;font-size:11px;color:#656562}
.nav a:hover{color:#000}
.header-key{
  justify-self:end;display:inline-flex;gap:8px;align-items:center;
  font-size:10px;font-weight:760;letter-spacing:.07em;
}
.header-key span{font-size:13px}
.is-key-missing{opacity:.45;cursor:help}

/* hero */
.hero-scroll{height:275svh}
.hero{
  --scan:0%;
  --beam:0;
  --done:0;
  position:sticky;top:0;height:100svh;min-height:620px;
  padding-top:var(--header);overflow:hidden;background:var(--paper);
}
.hero::before{
  content:"";position:absolute;inset:var(--header) 0 0;
  background:
    linear-gradient(90deg,transparent 0,transparent calc(25% - 1px),rgba(17,17,17,.055) 25%,transparent calc(25% + 1px)),
    linear-gradient(90deg,transparent 0,transparent calc(50% - 1px),rgba(17,17,17,.055) 50%,transparent calc(50% + 1px)),
    linear-gradient(90deg,transparent 0,transparent calc(75% - 1px),rgba(17,17,17,.055) 75%,transparent calc(75% + 1px));
  pointer-events:none;
}
.hero-shell{
  height:calc(100svh - var(--header));min-height:556px;
  display:grid;grid-template-rows:auto minmax(0,1fr) auto;
  padding:22px 0 28px;position:relative;z-index:2;
}
.hero-meta{display:flex;justify-content:space-between;gap:20px;align-items:center}
.meta-left{font-size:9px;letter-spacing:.13em;font-weight:720}
.meta-state{display:flex;align-items:center;gap:8px;font-size:9px;letter-spacing:.08em}
.meta-state i{width:7px;height:7px;border-radius:50%;background:#e45555}
.hero[data-state="encrypting"] .meta-state i{background:#111}
.hero[data-state="encrypted"] .meta-state i{background:var(--green);box-shadow:0 0 0 4px rgba(201,255,61,.22)}

.hero-center{display:flex;align-items:center;min-height:0}
.headline-stage{position:relative;width:100%;isolation:isolate}
.headline{
  margin:0;font-size:clamp(52px,7.75vw,122px);line-height:.91;
  letter-spacing:-.071em;font-weight:780;
}
.headline span{display:block;white-space:nowrap}
.headline-plain{clip-path:inset(0 0 0 var(--scan))}
.headline-plain span:last-child{font-style:italic;font-family:Georgia,"Times New Roman",serif;font-weight:400;letter-spacing:-.05em}
.headline-cipher{
  position:absolute;inset:0;z-index:2;
  clip-path:inset(0 calc(100% - var(--scan)) 0 0);
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:clamp(43px,6.75vw,106px);
  line-height:1.045;letter-spacing:-.025em;font-weight:620;color:#111;
}
.wipe{
  position:absolute;z-index:4;top:-9%;bottom:-9%;left:var(--scan);
  width:2px;background:#111;opacity:var(--beam);
}
.wipe::after{
  content:"";position:absolute;inset:0 auto 0 1px;width:80px;
  background:linear-gradient(90deg,rgba(201,255,61,.44),transparent);
}
.drag-key{
  position:absolute;z-index:6;left:var(--scan);top:50%;
  width:72px;height:72px;border:0;border-radius:0;
  display:grid;place-items:center;background:var(--green);color:#111;
  transform:translate(-50%,-50%) rotate(-7deg);
  cursor:grab;touch-action:none;box-shadow:6px 6px 0 #111;
}
.drag-key:active{cursor:grabbing;transform:translate(-50%,-50%) rotate(0deg)}
.drag-key svg{width:40px;height:40px}

.hero-footer{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,.55fr) auto;
  gap:clamp(24px,5vw,80px);align-items:end;
}
.hero-copy p{max-width:650px;margin:0;font-size:14px;line-height:1.5}
.hero-copy strong{font-weight:760}
.hero-copy-small{margin-top:7px!important;color:var(--muted);font-size:11px!important}
.control-row{
  display:flex;justify-content:space-between;gap:16px;margin-bottom:8px;
  font-size:9px;text-transform:uppercase;letter-spacing:.08em
}
.track{height:2px;background:#c9c8c2;overflow:hidden}
.track span{display:block;height:100%;width:0;background:#111}
.hero-actions{display:flex;gap:12px;align-items:center;justify-self:end}
.button{
  min-height:44px;padding:0 16px;border:1px solid #111;background:transparent;
  display:inline-flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:740;cursor:pointer;
}
.button-dark{background:#111;color:#fff}
.button-link{border:0;padding:0;min-height:auto}
.button-accent{background:var(--green);color:#111;border-color:var(--green)}
.button-outline{background:transparent;color:#fff;border-color:#fff}

/* generic section */
.section{padding:clamp(90px,10vw,155px) 0}
.section-number{font:700 10px/1 ui-monospace,SFMono-Regular,Menlo,monospace;margin-bottom:42px}
.section-head{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,.42fr);
  gap:clamp(36px,8vw,120px);align-items:end;margin-bottom:66px
}
.section-head h2,.key-title h2,.warning-title h2,.final h2{
  margin:0;font-size:clamp(46px,6vw,84px);line-height:.98;letter-spacing:-.065em
}
.section-head p{margin:0;color:var(--muted);font-size:14px;line-height:1.6}

/* steps */
.steps{border-top:1px solid #111}
.step{
  min-height:250px;display:grid;
  grid-template-columns:70px minmax(200px,.7fr) minmax(0,1fr);
  gap:clamp(24px,6vw,90px);align-items:center;
  border-bottom:1px solid #111
}
.step-index{align-self:start;padding-top:28px;font:700 9px/1 ui-monospace,monospace}
.step-word{font-size:clamp(72px,9vw,140px);line-height:.8;letter-spacing:-.08em;font-weight:790}
.step-word-accent{background:var(--green);width:max-content;padding:8px 12px 12px}
.step-word-mono{font-family:ui-monospace,monospace;font-size:clamp(54px,7vw,110px);letter-spacing:-.06em}
.step-copy h3{margin:0 0 9px;font-size:30px;letter-spacing:-.04em}
.step-copy p{max-width:670px;margin:0;color:var(--muted);font-size:13px;line-height:1.55}

/* key */
.key-section{background:#0b0b0b;color:#fff;padding:clamp(100px,11vw,170px) 0}
.key-grid{display:grid;grid-template-columns:minmax(0,.92fr) minmax(380px,1.08fr);gap:clamp(44px,8vw,130px)}
.section-number-light{color:#aaa}
.key-title p{max-width:600px;margin:25px 0 0;color:#9d9d9a;font-size:14px;line-height:1.6}
.key-side{display:grid;align-content:start;gap:26px}
.key-glyph{width:180px;color:var(--green)}
.fingerprint-wrap{border-top:1px solid #444;border-bottom:1px solid #444;padding:18px 0}
.fingerprint-wrap>span{display:block;margin-bottom:9px;color:#777;font:700 8px/1 ui-monospace,monospace;letter-spacing:.12em}
.fingerprint-wrap code{display:block;color:#fff;font-size:12px;line-height:1.7;overflow-wrap:anywhere}
.key-buttons{display:flex;gap:10px;flex-wrap:wrap}
.key-caption{max-width:520px;margin:0;color:#777;font-size:11px;line-height:1.5}

/* accordion */
.instructions-section{border-bottom:1px solid #111}
.accordion{border-top:1px solid #111}
details{border-bottom:1px solid #111}
summary{
  min-height:105px;display:grid;grid-template-columns:70px minmax(180px,.6fr) 1fr 30px;
  align-items:center;gap:24px;cursor:pointer;list-style:none
}
summary::-webkit-details-marker{display:none}
.accordion-index{font:700 9px/1 ui-monospace,monospace}
summary strong{font-size:26px;letter-spacing:-.04em}
.accordion-note{color:var(--muted);font-size:12px}
.accordion-plus{justify-self:end;font-size:26px;font-weight:300}
details[open] .accordion-plus{transform:rotate(45deg)}
.accordion-content{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(200px,.36fr);
  gap:60px;padding:0 0 44px 94px
}
.instructions-copy ol{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.instructions-copy li{
  display:grid;grid-template-columns:42px 1fr;gap:12px;
  padding:14px 0;border-bottom:1px solid var(--line)
}
.instructions-copy li>span{font:700 8px/1 ui-monospace,monospace;padding-top:4px}
.instructions-copy p{margin:0;font-size:12px;line-height:1.5}
.compat-note{margin-top:18px!important;color:var(--muted)}
.instructions-mark{
  align-self:end;justify-self:end;font-size:100px;font-weight:800;letter-spacing:-.08em;color:#d6d5cf
}
.instructions-mark-mono{font-family:ui-monospace,monospace}

/* warning */
.warning-section{padding:clamp(90px,10vw,150px) 0;background:#e7e5df}
.warning-title span{display:block;margin-bottom:32px;font:700 9px/1 ui-monospace,monospace}
.warning-title h2{max-width:1050px}
.warning-grid{
  display:grid;grid-template-columns:repeat(3,1fr);
  margin-top:70px;border-top:1px solid #111;border-bottom:1px solid #111
}
.warning-grid>div{min-height:220px;padding:28px 32px;border-right:1px solid #111}
.warning-grid>div:first-child{padding-left:0}
.warning-grid>div:last-child{border-right:0;padding-right:0}
.warning-grid b{display:block;margin-top:50px;font-size:21px;letter-spacing:-.035em}
.warning-grid p{margin:8px 0 0;color:#62625f;font-size:12px;line-height:1.5}

/* final */
.final{padding:clamp(100px,12vw,180px) 0}
.final-label{display:block;margin-bottom:44px;font:700 9px/1 ui-monospace,monospace}
.final h2{font-size:clamp(54px,8vw,118px)}
.final-bottom{
  margin-top:60px;padding-top:20px;border-top:1px solid #111;
  display:flex;justify-content:space-between;align-items:flex-start;gap:30px
}
.final-bottom p{max-width:590px;margin:0;color:var(--muted);font-size:14px;line-height:1.55}

/* footer */
footer{border-top:1px solid #111;padding:22px 0 30px}
.footer-inner{display:flex;justify-content:space-between;gap:20px;font-size:10px}

/* toast */
.toast{
  position:fixed;left:50%;bottom:20px;z-index:300;
  width:min(430px,calc(100% - 28px));padding:13px 15px;
  background:#111;color:#fff;font-size:11px;line-height:1.45;
  opacity:0;transform:translate(-50%,12px);pointer-events:none;
  transition:.2s
}
.toast.visible{opacity:1;transform:translate(-50%,0)}

@media(max-height:760px) and (min-width:981px){
  .hero-shell{padding-top:14px;padding-bottom:18px}
  .headline{font-size:clamp(48px,6.8vw,92px)}
  .headline-cipher{font-size:clamp(40px,5.8vw,79px)}
  .hero-copy p{font-size:12px}
  .drag-key{width:60px;height:60px}
  .drag-key svg{width:34px}
}

@media(max-width:980px){
  .header-inner{grid-template-columns:1fr auto}
  .nav{display:none}
  .hero-scroll{height:285svh}
  .hero-footer{grid-template-columns:1fr 1fr}
  .hero-actions{grid-column:1 / -1;justify-self:start}
  .headline{font-size:clamp(48px,9vw,76px)}
  .headline-cipher{font-size:clamp(39px,7.6vw,64px)}
  .section-head{grid-template-columns:1fr;gap:18px}
  .step{grid-template-columns:50px minmax(160px,.55fr) 1fr;gap:22px}
  .key-grid{grid-template-columns:1fr}
  .accordion-content{padding-left:70px}
}

@media(max-width:680px){
  :root{--header:58px;--pad:15px}
  .header-key{font-size:8px}
  .brand{font-size:10px}
  .hero-scroll{height:300svh}
  .hero{min-height:650px}
  .hero-shell{min-height:592px;padding:13px 0 17px}
  .meta-left{font-size:6px}
  .meta-state{font-size:6px}
  .headline{font-size:clamp(40px,12.1vw,55px);line-height:.94}
  .headline-cipher{font-size:clamp(31px,9.9vw,45px);line-height:1.15}
  .headline span{white-space:normal}
  .drag-key{width:52px;height:52px;box-shadow:4px 4px 0 #111}
  .drag-key svg{width:30px;height:30px}
  .hero-footer{grid-template-columns:1fr;gap:12px}
  .hero-copy p{font-size:11px}
  .hero-copy-small{font-size:8px!important}
  .control-row{font-size:7px}
  .hero-actions{grid-column:auto}
  .button{min-height:39px;padding:0 12px;font-size:9px}
  .button-link{display:none}

  .section{padding:80px 0}
  .section-number{margin-bottom:30px}
  .section-head{margin-bottom:38px}
  .section-head h2,.key-title h2,.warning-title h2,.final h2{
    font-size:clamp(39px,11.6vw,56px)
  }

  .step{
    min-height:0;grid-template-columns:30px 1fr;gap:12px;padding:26px 0
  }
  .step-index{grid-row:1 / span 2;padding-top:4px}
  .step-word{font-size:72px}
  .step-copy h3{font-size:24px}
  .step-copy p{font-size:11px}

  .key-section{padding:82px 0}
  .key-title p{font-size:12px}
  .key-glyph{width:130px}
  .key-buttons{display:grid}
  .button-outline{width:100%}

  summary{
    min-height:84px;
    grid-template-columns:30px minmax(130px,1fr) auto 24px;
    gap:10px
  }
  summary strong{font-size:20px}
  .accordion-note{font-size:8px}
  .accordion-content{grid-template-columns:1fr;padding:0 0 30px 42px;gap:16px}
  .instructions-mark{display:none}
  .instructions-copy p{font-size:10px}

  .warning-section{padding:80px 0}
  .warning-grid{grid-template-columns:1fr;margin-top:44px}
  .warning-grid>div{
    min-height:0;padding:24px 0;border-right:0;border-bottom:1px solid #111
  }
  .warning-grid>div:last-child{border-bottom:0}
  .warning-grid b{margin-top:18px}

  .final{padding:84px 0}
  .final-bottom{margin-top:40px;display:grid}
  .footer-inner{font-size:8px}
}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{transition:none!important}
  .hero-scroll{height:100svh}
  .hero{position:relative}
  .headline-plain{clip-path:inset(0 0 0 100%)}
  .headline-cipher{clip-path:inset(0 0 0 0)}
  .drag-key,.wipe{display:none}
}


.key-title strong{color:#fff;font-weight:700}

.key-meta-grid{
  display:grid;
  grid-template-columns:1.15fr 1fr .8fr;
  border-top:1px solid #3d3d3d;
  border-bottom:1px solid #3d3d3d;
}
.key-meta-grid>div{
  min-height:78px;padding:17px 18px;border-right:1px solid #3d3d3d;
}
.key-meta-grid>div:first-child{padding-left:0}
.key-meta-grid>div:last-child{border-right:0}
.key-meta-grid span{
  display:block;margin-bottom:9px;color:#6f6f6f;
  font:700 7px/1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.12em;
}
.key-meta-grid b{font-size:11px;line-height:1.35}

.keyserver-box{
  display:grid;grid-template-columns:1fr auto;align-items:end;
  gap:30px;padding-top:23px;border-top:1px solid #3d3d3d;
}
.keyserver-label{
  display:block;margin-bottom:7px;color:#727272;
  font:700 7px/1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.12em;
}
.keyserver-box h3{margin:0;font-size:24px;letter-spacing:-.04em}
.keyserver-box p{
  max-width:580px;margin:9px 0 0;color:#8e8e8b;font-size:11px;line-height:1.55;
}
.keyserver-box code{color:#d8d8d5}
.keyserver-link{
  white-space:nowrap;padding-bottom:3px;border-bottom:1px solid var(--green);
  color:var(--green);font-size:10px;font-weight:700;
}

/* FAQ */
.faq-section{border-bottom:1px solid #111}
.faq-head p strong{color:#111;font-weight:760}
.faq-list{border-top:1px solid #111}
.faq-list details{border-bottom:1px solid #111}
.faq-list summary{
  min-height:106px;grid-template-columns:70px 1fr 30px;
}
.faq-list summary strong{
  font-size:clamp(21px,2.3vw,31px);line-height:1.08;
}
.faq-index{font:700 9px/1 ui-monospace,SFMono-Regular,Menlo,monospace}
.faq-answer{max-width:1000px;padding:0 0 46px 94px}
.faq-answer>p{
  max-width:830px;margin:0;color:#4f4f4c;font-size:16px;line-height:1.65;
}
.faq-answer strong{color:#111;font-weight:760}
.inline-link{border-bottom:1px solid #111;font-weight:700}

.direction-diagram{
  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;
  margin-top:32px;border-top:1px solid #111;border-bottom:1px solid #111;
}
.direction-person{
  min-height:116px;display:flex;flex-direction:column;justify-content:center;
}
.direction-person span,.two-way span,.lookup-example>span{
  display:block;margin-bottom:8px;color:#777771;
  font:700 7px/1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.12em;
}
.direction-person b{font-size:20px;letter-spacing:-.035em}
.direction-person-dark{padding-left:28px;color:#fff;background:#111}
.direction-person-dark span{color:#94948e}
.direction-arrow{min-width:220px;padding:0 24px;text-align:center}
.direction-arrow small{
  display:block;margin-bottom:11px;
  font:700 7px/1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.12em;
}
.direction-arrow span{display:block;font-size:34px}

.two-way{
  display:grid;grid-template-columns:1fr 1fr;margin-top:30px;
  border-top:1px solid #111;border-bottom:1px solid #111;
}
.two-way>div{min-height:112px;padding:22px 25px 20px 0}
.two-way>div+div{padding-left:25px;border-left:1px solid #111}
.two-way b{
  display:block;max-width:350px;font-size:17px;line-height:1.25;letter-spacing:-.025em;
}

.lookup-example{
  display:grid;grid-template-columns:auto 1fr auto;gap:20px;align-items:center;
  margin-top:30px;padding:20px 0;border-top:1px solid #111;border-bottom:1px solid #111;
}
.lookup-example>span{margin:0}
.lookup-example code{font-size:13px;font-weight:650}
.lookup-example a{border-bottom:1px solid #111;font-size:10px;font-weight:700}

@media(max-width:680px){
  .key-meta-grid{grid-template-columns:1fr}
  .key-meta-grid>div{
    min-height:0;padding:15px 0;border-right:0;border-bottom:1px solid #3d3d3d;
  }
  .key-meta-grid>div:last-child{border-bottom:0}
  .keyserver-box{grid-template-columns:1fr;gap:15px}
  .keyserver-link{width:max-content}

  .faq-list summary{
    min-height:88px;grid-template-columns:30px 1fr 22px;gap:10px;
  }
  .faq-list summary strong{font-size:20px}
  .faq-answer{padding:0 0 32px 42px}
  .faq-answer>p{font-size:12px}

  .direction-diagram{grid-template-columns:1fr}
  .direction-person{min-height:82px}
  .direction-person-dark{padding:18px}
  .direction-arrow{min-width:0;padding:16px 0;text-align:left}
  .direction-arrow span{
    transform:rotate(90deg);transform-origin:left center;margin-left:10px;
  }

  .two-way{grid-template-columns:1fr}
  .two-way>div{min-height:0;padding:18px 0}
  .two-way>div+div{padding-left:0;border-left:0;border-top:1px solid #111}
  .two-way b{font-size:15px}

  .lookup-example{grid-template-columns:1fr;gap:10px}
}
