/* Fonts served from this site, not Google's: loading them from Google
   would send every visitor's IP address there before any consent.
   Archivo and Source Sans 3, SIL Open Font License 1.1 (fonts/OFL-*.txt). */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 600 800;
  font-stretch: 100% 125%;
  font-display: swap;
  src: url(fonts/archivo-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 600 800;
  font-stretch: 100% 125%;
  font-display: swap;
  src: url(fonts/archivo-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(fonts/sourcesans3-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(fonts/sourcesans3-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(fonts/sourcesans3-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(fonts/sourcesans3-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(fonts/sourcesans3-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(fonts/sourcesans3-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* KOTB website. Park green and crown gold from the app's design system
   (ios/Packages/KOTBKit/Sources/DesignSystem/ColorTokens.swift). */
:root{
  --ground:#f2f4f1; --card:#ffffff; --ink:#17201b; --muted:#59645d; --rule:#dde3de;
  --brand:#1e6b45; --on-brand:#ffffff; --crown:#9a6200; --crown-fill:#f5c542;
  --danger:#c0262d; --focus:#1e6b45;
  --display:"Archivo", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --sans:"Source Sans 3", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}
@media (prefers-color-scheme: dark){
  :root{
    color-scheme: dark;
    --ground:#0e1210; --card:#171c19; --ink:#e7ece8; --muted:#9aa59e; --rule:#28302b;
    --brand:#3ddc84; --on-brand:#04210f; --crown:#f5c542; --crown-fill:#f5c542;
    --danger:#ff6b6b; --focus:#3ddc84;
  }
}
*{box-sizing:border-box}
/* `hidden` wins over any display rule (the cookie banner is display:flex). */
[hidden]{display:none !important}
html{-webkit-text-size-adjust:100%}
body{margin:0; background:var(--ground); color:var(--ink); font:17px/1.55 var(--sans); padding-inline:16px;}
a{color:var(--brand)}
a:focus-visible, button:focus-visible, input:focus-visible{outline:3px solid var(--focus); outline-offset:2px}
.wrap{max-width:1040px; margin:0 auto}
header.site{display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px 16px; padding-block:20px}
.brand{font:800 20px/1 var(--display); color:var(--ink); text-decoration:none; letter-spacing:.02em}
nav.legal-nav{display:flex; gap:16px; flex-wrap:wrap; font-size:15px}

/* Landing */
.hero{display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr); grid-template-areas:"intro demos" "form demos";
      column-gap:48px; row-gap:8px; align-items:start; padding-block:32px 56px}
.hero .intro{grid-area:intro} .hero .demos{grid-area:demos; align-self:center} .hero .signup{grid-area:form}
.hero:not(:has(.demos)){grid-template-columns:minmax(0,1fr); grid-template-areas:"intro" "form"}
.hero h1{font:800 clamp(40px,7vw,76px)/0.98 var(--display); font-stretch:112%; margin:0 0 20px; letter-spacing:-.01em; text-wrap:balance}
.hero h1 em{font-style:normal; color:var(--brand)}
.hero p.lede{font-size:clamp(18px,2.2vw,21px); color:var(--muted); margin:0 0 28px; max-width:34ch}
/* The demo videos: portrait, like the phone that filmed them. */
.demos{display:flex; gap:16px; justify-content:center}
.demo{flex:1 1 0; max-width:300px; margin:0}
.demo video{display:block; width:100%; aspect-ratio:9/16; object-fit:cover; border-radius:22px; background:#000; border:1px solid var(--rule)}
.signup{background:var(--card); border:1px solid var(--rule); border-radius:18px; padding:20px; display:flex; flex-direction:column; gap:12px; max-width:480px}
.signup label.field{font-weight:600}
.signup input[type=email]{font:inherit; padding:12px 14px; border-radius:12px; border:1px solid var(--rule); background:var(--ground); color:var(--ink); width:100%}
button.primary{font:700 17px/1 var(--sans); background:var(--brand); color:var(--on-brand); border:0; border-radius:14px; min-height:50px; padding-inline:18px; cursor:pointer}
button.primary:disabled{opacity:.5; cursor:default}
.status{font-size:15px; min-height:1.5em; margin:0}
.hint{font-size:14px; color:var(--muted); margin:0}
.status.ok{color:var(--brand)} .status.bad{color:var(--danger)}
.steps{display:grid; grid-template-columns:repeat(3,1fr); gap:28px; padding-block:32px 64px; border-top:1px solid var(--rule)}
.step{display:flex; flex-direction:column; gap:10px}
.step .n{font:800 15px/1 var(--display); color:var(--crown); letter-spacing:.08em; text-transform:uppercase}
.step p{margin:0; font-size:clamp(19px,1.9vw,22px); line-height:1.45}
button.link{font:inherit; color:var(--brand); background:none; border:0; padding:0; text-decoration:underline; cursor:pointer}
/* The cookie banner: Reject and Accept look the same, as the DPC asks. */
.cookies{position:fixed; left:16px; right:16px; bottom:calc(16px + env(safe-area-inset-bottom, 0px)); z-index:10; max-width:720px; margin:0 auto;
         background:var(--card); border:1px solid var(--rule); border-radius:18px; padding:16px 18px; box-shadow:0 10px 30px rgba(0,0,0,.25);
         display:flex; flex-wrap:wrap; gap:12px 20px; align-items:center}
.cookies p{margin:0; flex:1 1 320px; font-size:15px}
.cookies .choices{display:flex; gap:10px; flex:1 1 220px}
.cookies .choices button{flex:1; min-height:46px; border-radius:12px; border:1px solid var(--ink); background:var(--card); color:var(--ink); font:700 16px/1 var(--sans); cursor:pointer}
footer.site{border-top:1px solid var(--rule); padding-block:24px 40px; color:var(--muted); font-size:15px; display:flex; flex-wrap:wrap; gap:8px 20px; justify-content:space-between}

/* Documents */
article.doc{max-width:72ch; margin:0 auto; padding-block:16px 56px}
article.doc h1{font:800 clamp(30px,5vw,44px)/1.1 var(--display); margin:12px 0 8px; text-wrap:balance}
article.doc h2{font:800 24px/1.2 var(--display); margin:36px 0 8px}
article.doc h3{font:700 19px/1.3 var(--display); margin:24px 0 6px}
article.doc blockquote{margin:16px 0; padding:12px 16px; border-radius:12px; background:color-mix(in srgb, var(--crown-fill) 22%, var(--card)); font-weight:600}
article.doc blockquote p{margin:0}
.table-wrap{overflow-x:auto; margin:12px 0; border:1px solid var(--rule); border-radius:12px; background:var(--card)}
table{border-collapse:collapse; width:100%; font-size:15px}
th, td{text-align:left; vertical-align:top; padding:10px 12px; border-bottom:1px solid var(--rule)}
th{font-weight:700; background:var(--ground)}
tr:last-child td{border-bottom:0}
.notice{max-width:56ch; margin:48px auto; display:flex; flex-direction:column; gap:12px}
.notice h1{font:800 34px/1.1 var(--display); margin:0}
@media (max-width:760px){
  .hero{grid-template-columns:minmax(0,1fr); padding-block:12px 40px}
  .hero{grid-template-areas:"intro" "demos" "form"; row-gap:24px}
  .steps{grid-template-columns:1fr; gap:24px}
}
@media (prefers-reduced-motion: reduce){*{transition:none !important; animation:none !important}}
.signup p{margin:0}
