/* Boxanne — boxanne.com. Colors match the app's asset catalog (light + dark). */
:root{
  --bg:#F7F5F0;--bg2:#EFEBE3;--text:#1F1E1B;--text2:#5E5B54;--text3:#8A867D;
  --card:#FFFFFF;--border:#DCD8CE;--field:#ECE9E2;
  --accent:#22566B;--on-accent:#FFFFFF;--navy:#1D2A4A;--glow:#E9D9B8;
  --sage:#E3EBDD;--sage-t:#3A5233;--mist:#DDE6EE;--mist-t:#2F4C66;--sand:#F1E6D3;--sand-t:#6B4F24;
  --lavender:#E7E1EF;--lavender-t:#4E3F66;--clay:#F2DDD5;--clay-t:#6E3A2A;
  --shadow:0 2px 6px rgba(31,30,27,.06),0 30px 60px -20px rgba(31,30,27,.28),0 60px 120px -40px rgba(34,86,107,.25);
  --radius:22px;--measure:38rem;
  --display:ui-rounded,"SF Pro Rounded",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --body:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,"Helvetica Neue",sans-serif;
}
@media (prefers-color-scheme:dark){:root{
  --bg:#121211;--bg2:#1A1A18;--text:#F2F1EE;--text2:#B5B2AA;--text3:#8C897F;
  --card:#1F1F1D;--border:#33322F;--field:#262624;
  --accent:#7FB3C6;--on-accent:#0E2731;--navy:#0F1730;--glow:#6B5A3A;
  --sage:#2C3A28;--sage-t:#CFE0C4;--mist:#263544;--mist-t:#C9D9E8;--sand:#3D3221;--sand-t:#EBDDC2;
  --lavender:#342D40;--lavender-t:#DCD2EC;--clay:#3E2A23;--clay-t:#F0D3C7;
  --shadow:0 2px 6px rgba(0,0,0,.4),0 30px 70px -20px rgba(0,0,0,.7),0 60px 140px -40px rgba(127,179,198,.18);
}}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--bg);color:var(--text);font:1.0625rem/1.6 var(--body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img{display:block;max-width:100%;height:auto}
h1,h2,h3,.brand{font-family:var(--display);line-height:1.08;letter-spacing:-.02em;text-wrap:balance}
h1{font-size:clamp(2.2rem,5vw,3rem);font-weight:800;margin:0 0 .5em}
h2{font-size:1.4rem;font-weight:700;margin:2em 0 .5em}
p{text-wrap:pretty}
a{color:var(--accent);text-underline-offset:.18em;text-decoration-thickness:1px}
a:focus-visible,summary:focus-visible,.btn:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:8px}
.wrap{max-width:var(--measure);margin:0 auto;padding:0 1.25rem}
.skip{position:absolute;left:-999px}.skip:focus{left:1rem;top:1rem;background:var(--card);padding:.5rem 1rem;z-index:9;border-radius:8px}

/* Header and footer (all pages). The top padding keeps the logo clear of the phone's status bar,
   where a tap scrolls to the top instead of following the link. */
header.site{padding-top:clamp(1.25rem,6vw,1.75rem)}
header.site .wrap{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.25rem 1rem;min-height:4.25rem}
.brand{display:inline-flex;align-items:center;gap:.6rem;min-height:2.75rem;padding:.25rem .5rem .25rem 0;font-weight:800;font-size:1.2rem;color:var(--text);text-decoration:none;letter-spacing:-.01em}
.brand img{width:30px;height:30px;border-radius:8px;box-shadow:0 1px 2px rgba(0,0,0,.15)}
nav a{display:inline-block;padding:.65rem .55rem;color:var(--text2);text-decoration:none;font-weight:600;font-size:.95rem}
nav a:hover{color:var(--text)}
/* Sub-pages have four menu links, which wrap under the logo on phones: line them up with it. */
@media (max-width:30rem){header.site .wrap nav{margin:0 0 .5rem -.55rem}}
main{padding:2.5rem 0 4rem}
footer.site{border-top:1px solid var(--border);padding:2rem 0 2.5rem;color:var(--text3);font-size:.875rem}
footer.site a{display:inline-block;margin-right:1.25rem;padding:.4rem 0;color:var(--text2);text-decoration:none}
footer.site a:hover{color:var(--text)}
footer.site p{margin:.75rem 0 0}

/* Text pages (support, privacy, terms, label, 404) */
.lede{font-size:1.2rem;color:var(--text2)}
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem 1.4rem;margin:1.25rem 0}
.soon{display:inline-block;background:var(--field);border:1px solid var(--border);border-radius:999px;padding:.7rem 1.4rem;font-weight:700;min-height:3rem}
.btn{display:inline-block;background:var(--accent);color:var(--on-accent);border-radius:999px;padding:.9rem 1.8rem;font-weight:700;text-decoration:none;min-height:3rem}
details{background:var(--card);border:1px solid var(--border);border-radius:16px;margin:.6rem 0;padding:0 1.1rem}
summary{cursor:pointer;font-weight:600;padding:.9rem 0;min-height:2.75rem}
details p{margin:0 0 1rem;color:var(--text2)}
ul{padding-left:1.3rem}li{margin:.3rem 0}
.center{text-align:center}

/* ---------- Home ---------- */
.home main{padding:0}
.home .wide{max-width:72rem;margin:0 auto;padding:0 1.25rem}

/* A real screenshot inside Apple's iPhone 17 Pro bezel (Apple Design Resources), flattened into one image
   (Silver for light screens, Deep Blue for dark). The shadow follows the phone's outline. */
.phone{position:relative;width:min(100%,var(--w,300px));aspect-ratio:1350/2760;filter:drop-shadow(0 24px 40px rgba(31,30,27,.22)) drop-shadow(0 4px 10px rgba(31,30,27,.10))}
.phone img,.phone picture{display:block;width:100%;height:100%}
@media (prefers-color-scheme:dark){.phone{filter:drop-shadow(0 28px 48px rgba(0,0,0,.6)) drop-shadow(0 0 60px rgba(127,179,198,.10))}}

/* Hero */
.hero{position:relative;text-align:center;padding:clamp(3rem,8vw,6.5rem) 0 0;overflow:hidden}
.hero::before{content:"";position:absolute;left:50%;top:38%;width:min(120vw,70rem);aspect-ratio:1;transform:translateX(-50%);background:radial-gradient(closest-side,color-mix(in srgb,var(--glow) 55%,transparent),transparent 70%);z-index:-1;pointer-events:none}
.eyebrow{display:inline-flex;align-items:center;gap:.5rem;font-size:.85rem;font-weight:600;color:var(--text2);letter-spacing:.01em;margin:0 0 1.5rem}
.eyebrow .dot{width:.45rem;height:.45rem;border-radius:50%;background:var(--accent)}
.hero h1{font-size:clamp(2.6rem,7.2vw,5.6rem);letter-spacing:-.032em;line-height:.98;margin:0 auto .35em;max-width:12ch}
.hero .lede{font-size:clamp(1.1rem,2vw,1.35rem);max-width:30rem;margin:0 auto;color:var(--text2)}
.stage{position:relative;display:flex;justify-content:center;align-items:flex-start;gap:clamp(1rem,3vw,2.5rem);margin:clamp(1rem,4vw,2.5rem) auto 0;padding:3.5rem 1.25rem 0;height:clamp(32rem,55vw,43rem);overflow:hidden;mask-image:linear-gradient(#000 78%,transparent);-webkit-mask-image:linear-gradient(#000 78%,transparent)}
.stage > .phone{--w:clamp(16rem,28vw,22rem);flex:none;position:relative;z-index:1}
.stage .side{flex:none;width:clamp(12rem,21vw,17rem);margin-top:clamp(4rem,9vw,7rem)}
.stage .side .phone{--w:clamp(12rem,21vw,17rem)}
@media (max-width:44rem){.stage .side{display:none}.stage{height:34rem}}

.path{display:flex;flex-wrap:wrap;gap:.4rem .45rem;align-items:center;font-family:var(--display);font-weight:800;font-size:1rem;letter-spacing:-.01em;margin:0}
.path .sep{color:var(--text3);font-weight:500}
.chip{padding:.3em .75em;border-radius:999px;line-height:1.1}
.sage{background:var(--sage);color:var(--sage-t)}.mist{background:var(--mist);color:var(--mist-t)}.sand{background:var(--sand);color:var(--sand-t)}
.lavender{background:var(--lavender);color:var(--lavender-t)}.clay{background:var(--clay);color:var(--clay-t)}

/* Feature rows */
.feature{display:grid;grid-template-columns:1fr;gap:clamp(2rem,5vw,4.5rem);align-items:center;padding:clamp(4rem,10vw,8.5rem) 0}
.feature + .feature{border-top:1px solid var(--border)}
.feature .copy{max-width:27rem}
.feature .num{font-family:var(--display);font-weight:700;font-size:.85rem;color:var(--accent);letter-spacing:.06em;margin:0 0 1rem}
.feature h2{font-size:clamp(2rem,4.4vw,3.25rem);font-weight:800;letter-spacing:-.035em;margin:0 0 .5em;line-height:1.02}
.feature .copy p{font-size:1.15rem;color:var(--text2);margin:0 0 1rem}
.feature .copy p strong{color:var(--text);font-weight:600}
.feature figure{margin:0;display:flex;justify-content:center}
.feature .phone{--w:clamp(15rem,30vw,20rem)}
@media (min-width:52rem){
  .feature{grid-template-columns:1fr 1fr}
  .feature.flip .copy{order:2}
}
.feature figure.talk{display:grid;gap:1.25rem;width:100%;max-width:28rem;justify-self:center;align-content:center}
.bubble{margin:0;border-radius:26px;padding:1.05rem 1.3rem;font-family:var(--display);font-weight:700;font-size:clamp(1.15rem,2.2vw,1.35rem);line-height:1.3;letter-spacing:-.01em}
.bubble p{margin:0}
.you{justify-self:end;max-width:80%;background:var(--accent);color:var(--on-accent);border-bottom-right-radius:8px}
.her{display:flex;align-items:flex-end;gap:.75rem;max-width:92%}
.her img{width:44px;height:44px;border-radius:12px;flex:none;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.her .bubble{background:var(--card);border:1px solid var(--border);border-bottom-left-radius:8px;box-shadow:var(--shadow)}
.her .path{margin-top:.9rem}

/* Light and dark, side by side */
.pair{padding:clamp(4rem,10vw,8rem) 0;text-align:center;border-top:1px solid var(--border)}
.pair h2{font-size:clamp(2rem,4.4vw,3.25rem);font-weight:800;letter-spacing:-.035em;margin:0 0 .4em}
.pair > .wide > p{font-size:1.15rem;color:var(--text2);max-width:30rem;margin:0 auto}
.pair .row{display:flex;justify-content:center;gap:clamp(1.25rem,4vw,3rem);margin-top:clamp(2.5rem,6vw,4rem)}
.pair .phone{--w:clamp(10rem,24vw,17rem)}

/* Promises */
.promises{display:grid;gap:1px;background:var(--border);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin:clamp(2rem,6vw,4rem) 0}
.promises div{background:var(--bg);padding:1.75rem 1.6rem}
.promises h3{font-size:1.2rem;font-weight:800;margin:0 0 .35rem;letter-spacing:-.01em}
.promises p{margin:0;color:var(--text2);font-size:1rem}
@media (min-width:44rem){.promises{grid-template-columns:repeat(3,1fr)}}

/* Closing */
.closing{text-align:center;padding:clamp(4rem,10vw,8rem) 0 clamp(5rem,11vw,9rem)}
.closing img{width:96px;height:96px;border-radius:22px;margin:0 auto 1.75rem;box-shadow:var(--shadow)}
.closing h2{font-size:clamp(2.2rem,5vw,3.75rem);font-weight:800;letter-spacing:-.04em;margin:0 0 .4em}
.closing p{color:var(--text2);font-size:1.15rem;margin:0}

/* Gentle reveal on scroll, only where supported and wanted */
@media (prefers-reduced-motion:no-preference){
  @supports (animation-timeline:view()){
    .reveal{animation:rise linear both;animation-timeline:view();animation-range:entry 0% cover 28%}
    @keyframes rise{from{opacity:0;transform:translateY(2.5rem)}to{opacity:1;transform:none}}
  }
}
.home header.site .wide{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.25rem 1rem;min-height:4.25rem}

/* Beta / launch signup (hero and closing). One field; the main choice sits inside it, the other below. */
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.signup{max-width:31rem;margin:2.25rem auto 0;text-align:center}
.signup .ask{display:flex;align-items:center;gap:.4rem;padding:.4rem;background:var(--card);border:1px solid var(--border);border-radius:999px;transition:border-color .2s}
.signup .ask:focus-within{border-color:var(--accent)}
.signup input[type=email]{flex:1;min-width:0;border:0;background:transparent;color:var(--text);font:inherit;font-size:1.05rem;padding:.75rem .5rem .75rem 1.1rem;min-height:3rem;outline:none}
.signup input::placeholder{color:var(--text3)}
.signup .btn{flex:none;border:0;cursor:pointer;font:inherit;font-weight:700;white-space:nowrap}
.signup .btn:hover{filter:brightness(1.08)}
.signup .also{margin:.9rem auto 0;border:0;background:none;color:var(--text2);font:inherit;font-size:.95rem;font-weight:600;cursor:pointer;padding:.55rem .75rem;min-height:2.75rem;border-radius:999px;text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--text2) 35%,transparent);text-underline-offset:.22em}
.signup .also:hover{color:var(--text)}
.signup .also:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.signup .hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.signup .status{min-height:1.6em;margin:.5rem 0 0;font-size:.95rem;font-weight:600;color:var(--text2)}
.signup[data-state=sending] .ask{opacity:.6;pointer-events:none}
.signup[data-state=done] .status{color:var(--sage-t)}
.signup[data-state=error] .status{color:var(--clay-t)}
@media (max-width:30rem){
  .signup .ask{flex-direction:column;align-items:stretch;border-radius:26px;padding:.5rem}
  .signup input[type=email]{text-align:center;padding-left:.5rem}
}
.closing .signup{margin-top:2rem}
.closing .small{font-size:.95rem;color:var(--text3);margin-top:1rem}

/* Hero / closing call to action: the beta is one tap; the email is only for launch news. */
.cta{display:flex;flex-direction:column;align-items:center;margin:2.25rem auto 0;max-width:30rem}
.cta > .btn{font-size:1.1rem;padding:1rem 2.4rem;box-shadow:var(--shadow)}
.cta .signup{margin-top:2rem;width:100%}
.cta .or{margin:0 0 .7rem;font-size:.95rem;font-weight:600;color:var(--text2)}
.btn.quiet{background:var(--field);color:var(--text)}
.signup .btn.quiet{padding:.75rem 1.4rem}

/* Beta page */
.beta img{width:88px;height:88px;border-radius:20px;margin:1rem auto 1.5rem;box-shadow:var(--shadow)}
.beta h1{font-size:clamp(2.4rem,7vw,3.5rem);font-weight:800;letter-spacing:-.035em;margin:0 0 .25em}
.steps{list-style:none;counter-reset:step;display:grid;gap:1rem;margin:2.25rem auto 0;padding:0;max-width:30rem;text-align:left}
.step{counter-increment:step;position:relative;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem 1.4rem 1.5rem 4.6rem}
.step::before{content:counter(step);position:absolute;left:1.4rem;top:1.4rem;width:2.2rem;height:2.2rem;border-radius:50%;background:var(--accent);color:var(--on-accent);font-family:var(--display);font-weight:800;font-size:1.1rem;display:grid;place-items:center}
.step h2{font-size:1.3rem;margin:.2rem 0 .35rem;letter-spacing:-.01em}
.step p{margin:0 0 1.1rem;color:var(--text2)}
.step .btn{display:block;text-align:center}
.step .small{margin:.8rem 0 0;font-size:.95rem;color:var(--text3)}
