/* Nap — trynap.app
   Colours come from the screensavers' Night theme, with the Paper tone as the
   type colour, like an old split-flap departure board. Every colour is a token
   below; components only ever read tokens. */

:root{
  --display:"Funnel Display","Helvetica Neue",Arial,sans-serif;
  --text:"Funnel Sans",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue",Arial,sans-serif;

  --nav-fg:#E7E3D8; --nav-muted:rgba(231,227,216,.72);
  --nav-gap:14px; --nav-row:52px; --nav-h:calc(var(--nav-gap) + var(--nav-row));

  --veil:7 8 11;                       /* hero fade, as an rgb triple */
  --hero-fg:#E7E3D8; --hero-muted:rgba(231,227,216,.72);
  --btn-bg:#E7E3D8; --btn-fg:#07080B; --btn-hover:#F2EFE8;
  --pick-bg:rgba(20,22,28,.6); --pick-line:rgba(231,227,216,.16);

  --a-bg:#111318; --a-fg:#E7E3D8; --a-muted:rgba(231,227,216,.68); --a-rule:#262932;
  --a-accent:#E7E3D8; --a-accent-fg:#111318;

  --b-bg:#07080B; --b-fg:#E7E3D8; --b-muted:rgba(231,227,216,.68); --b-rule:#1A1C22;
  --panel-bg:#111318; --panel-line:#262932; --field-bg:#07080B; --field-line:#2E323C;

  --cta-bg:#E7E3D8; --cta-fg:#07080B; --cta-muted:rgba(7,8,11,.7);
  --cta-btn-bg:#07080B; --cta-btn-fg:#E7E3D8;

  --foot-bg:#000000; --foot-fg:rgba(231,227,216,.55); --foot-strong:#E7E3D8;

  /* Liquid Glass for the floating nav. Retinted over light sections, the way
     the macOS 26 material adapts to whatever sits behind it. */
  --glass-tint:rgba(18,19,24,.38); --glass-fg:#E7E3D8; --glass-muted:rgba(231,227,216,.72);
  --glass-rim:linear-gradient(135deg,rgba(255,255,255,.5),rgba(255,255,255,.1) 30%,rgba(255,255,255,.03) 55%,rgba(255,255,255,.26));
  --glass-sheen:linear-gradient(180deg,rgba(255,255,255,.12),rgba(255,255,255,0) 55%);
  --glass-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 12px 32px -10px rgba(0,0,0,.55),0 2px 8px rgba(0,0,0,.28);

  --radius:4px;
  --page:min(1180px,100% - 3rem);
  --ease:cubic-bezier(.2,.7,.3,1);
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;color-scheme:dark}
@media (prefers-reduced-motion:reduce){ html{scroll-behavior:auto} }

body{
  margin:0;
  background:var(--b-bg);
  color:var(--a-fg);
  font-family:var(--text);
  font-size:17px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}

h1,h2,h3{margin:0;font-family:var(--display);font-weight:800;line-height:1.02;letter-spacing:-.03em}
h1{font-size:clamp(2.7rem,6.6vw,5.3rem)}
h2{font-size:clamp(2rem,4.4vw,3.2rem)}
h3{font-size:1.22rem;font-weight:700;letter-spacing:-.02em;line-height:1.2}
p{margin:0;max-width:36rem}
img{max-width:100%;display:block}
a{color:inherit}

:focus-visible{outline:3px solid currentColor;outline-offset:3px;border-radius:4px}

.page{width:var(--page);margin-inline:auto}
@media (max-width:640px){ :root{ --page:min(1180px,100% - 2rem) } }

.skip{position:absolute;left:-999px}
.skip:focus{left:1rem;top:1rem;z-index:99;background:var(--btn-bg);color:var(--btn-fg);padding:.7rem 1rem;border-radius:var(--radius)}

/* ------------------------------------------------------------------- nav */

/* At the top there is no bar: the row sits over the hero with the clock behind
   it. Once the page moves, the same row gathers into a floating capsule of
   Liquid Glass, the macOS 26 material. The outer height is identical in both
   states and cancelled by the negative margin, so nothing below ever moves. */
.nav{
  position:sticky;top:0;z-index:40;
  height:var(--nav-h);margin-bottom:calc(-1 * var(--nav-h));
  padding-top:var(--nav-gap);
  color:var(--nav-fg);
  pointer-events:none;
  transition:color .35s var(--ease);
}
.nav-inner{
  position:relative;isolation:isolate;pointer-events:auto;
  display:flex;align-items:center;gap:1.4rem;height:var(--nav-row);
  padding-left:0;padding-right:0;border-radius:999px;
  /* spelled out empty rather than `none`, so each property animates instead of snapping */
  background-color:rgba(18,19,24,0);
  -webkit-backdrop-filter:blur(0px) saturate(100%);
  backdrop-filter:blur(0px) saturate(100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,0),0 12px 32px -10px rgba(0,0,0,0),0 2px 8px rgba(0,0,0,0);
  transition:width .5s var(--ease),padding .5s var(--ease),
             background-color .35s var(--ease),box-shadow .35s var(--ease),
             -webkit-backdrop-filter .35s var(--ease),backdrop-filter .35s var(--ease);
}

.nav.is-floating{color:var(--glass-fg)}
.nav.is-floating .nav-inner{
  width:min(940px,100% - 1.5rem);
  padding-left:1.1rem;padding-right:.45rem;
  background-color:var(--glass-tint);
  -webkit-backdrop-filter:blur(24px) saturate(190%);
  backdrop-filter:blur(24px) saturate(190%);
  box-shadow:var(--glass-shadow);
}
.nav-inner::before,.nav-inner::after{
  content:"";position:absolute;z-index:-1;border-radius:inherit;pointer-events:none;
  opacity:0;transition:opacity .35s var(--ease);
}
/* the rim: a 1px gradient ring, brightest where light would catch the edge */
.nav-inner::before{
  inset:0;padding:1px;background:var(--glass-rim);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude;
}
.nav-inner::after{inset:1px;background:var(--glass-sheen)}
.nav.is-floating .nav-inner::before,.nav.is-floating .nav-inner::after{opacity:1}

.nav[data-tone="light"]{
  --glass-tint:rgba(246,243,236,.55); --glass-fg:#07080B; --glass-muted:rgba(7,8,11,.66);
  --glass-rim:linear-gradient(135deg,rgba(255,255,255,.95),rgba(255,255,255,.35) 30%,rgba(255,255,255,.15) 55%,rgba(255,255,255,.7));
  --glass-sheen:linear-gradient(180deg,rgba(255,255,255,.35),rgba(255,255,255,0) 55%);
  --glass-shadow:inset 0 1px 0 rgba(255,255,255,.8),0 12px 32px -10px rgba(40,34,24,.3),0 2px 8px rgba(40,34,24,.14);
}
.nav.is-floating .nav-links a{color:var(--glass-muted)}
.nav.is-floating .nav-links a:hover{color:var(--glass-fg)}
.nav.is-floating .btn{border-radius:999px}
.nav.is-floating[data-tone="light"] .btn{background:#07080B;color:#E7E3D8}

@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .nav{--glass-tint:rgba(18,19,24,.92)}
  .nav[data-tone="light"]{--glass-tint:rgba(246,243,236,.94)}
}
@media (max-width:640px){
  .nav.is-floating .nav-inner{width:calc(100% - 1rem);padding-left:.95rem;padding-right:.4rem}
}
@media (prefers-reduced-motion:reduce){
  .nav,.nav-inner,.nav-inner::before,.nav-inner::after{transition:none}
}

section[id]{scroll-margin-top:calc(var(--nav-h) + 16px)}
.brand{display:flex;align-items:center;gap:.6rem;font-family:var(--display);font-weight:800;font-size:1.16rem;letter-spacing:-.03em;text-decoration:none}
.brand img{width:28px;height:28px;flex:none}
.nav-links{display:none;gap:1.5rem;margin-left:auto;font-size:.96rem}
.nav-links a{text-decoration:none;color:var(--nav-muted);padding:.35rem 0}
.nav-links a:hover{color:var(--nav-fg)}
@media (min-width:800px){ .nav-links{display:flex} }

.btn{
  display:inline-block;font-family:var(--text);font-weight:600;font-size:1rem;
  letter-spacing:-.01em;text-decoration:none;border:0;cursor:pointer;
  padding:.8rem 1.4rem;border-radius:var(--radius);
  background:var(--btn-bg);color:var(--btn-fg);
  transition:transform .15s var(--ease),background-color .15s var(--ease);
}
.btn:hover{background:var(--btn-hover)}
.btn:active{transform:translateY(1px)}
.nav .btn{margin-left:auto;padding:.55rem 1rem;font-size:.94rem}
@media (min-width:800px){ .nav .btn{margin-left:0} }

/* ------------------------------------------------------------------ hero */

.hero{position:relative;background:var(--b-bg);color:var(--hero-fg);overflow:hidden;isolation:isolate}
.hero-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;z-index:-2}
.hero-veil{
  position:absolute;inset:0;z-index:-1;
  /* the top band keeps the transparent nav readable when the clock drifts under it */
  background:linear-gradient(180deg,rgb(var(--veil) / .7) 0,rgb(var(--veil) / 0) 150px),
    linear-gradient(100deg,
    rgb(var(--veil) / .97) 0%,
    rgb(var(--veil) / .93) 34%,
    rgb(var(--veil) / .55) 56%,
    rgb(var(--veil) / 0) 76%);
}
.hero-inner{
  position:relative;
  min-height:clamp(520px,84vh,860px);
  display:flex;flex-direction:column;justify-content:center;
  padding:4.5rem 0 7rem;
}
.hero h1{max-width:15ch;text-wrap:balance}
.hero-sub{margin-top:1.3rem;font-size:clamp(1.05rem,1.7vw,1.26rem);color:var(--hero-muted);max-width:34rem}
.hero-actions{margin-top:2.2rem;display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.5rem}
.hero-req{font-size:.95rem;color:var(--hero-muted)}

.picker{
  position:absolute;right:1.5rem;bottom:1.5rem;z-index:3;
  display:flex;gap:3px;padding:3px;border-radius:calc(var(--radius) + 4px);
  background:var(--pick-bg);border:1px solid var(--pick-line);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
}
.picker button{
  font:inherit;font-size:.88rem;font-weight:600;color:var(--hero-muted);
  background:none;border:0;border-radius:var(--radius);padding:.45rem .85rem;cursor:pointer;
}
.picker button[aria-pressed="true"]{background:var(--btn-bg);color:var(--btn-fg)}
@media (max-width:640px){ .picker{right:1rem;bottom:1rem} }

/* narrow: the preview sits above the words instead of behind them */
@media (max-width:760px){
  .hero{display:flex;flex-direction:column}
  .hero-canvas{position:relative;height:46vh;min-height:260px;z-index:0}
  .hero-veil{background:linear-gradient(180deg,rgb(var(--veil) / .7) 0,rgb(var(--veil) / 0) 120px)}
  .hero-inner{min-height:0;padding:2.6rem 0 3.2rem}
  .picker{top:calc(46vh - 3.2rem);bottom:auto}
}

/* --------------------------------------------------------------- sections */

.band{padding:clamp(4rem,8vw,7rem) 0}
.band-a{background:var(--a-bg);color:var(--a-fg)}
.band-b{background:var(--b-bg);color:var(--b-fg)}
.band-cta{background:var(--cta-bg);color:var(--cta-fg)}

.band-a p{color:var(--a-muted)}
.band-b p{color:var(--b-muted)}

.lead{margin-top:1.2rem;font-size:clamp(1.05rem,1.8vw,1.2rem)}

/* seam divider borrowed from the flip card's spindle */
.seam{position:relative;height:1px;background:var(--a-rule);margin:0}
.seam::before,.seam::after{
  content:"";position:absolute;top:50%;transform:translateY(-50%);
  width:9px;height:20px;background:var(--a-bg);border:1px solid var(--a-rule);
}
.seam::before{left:0;border-left:0;border-radius:0 99px 99px 0}
.seam::after{right:0;border-right:0;border-radius:99px 0 0 99px}

/* ---------------------------------------------------------- screensavers */

.saver{display:grid;gap:2.4rem;align-items:center}
@media (min-width:900px){
  .saver{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:4rem}
  .saver-flip .saver-text{order:1}
  .saver-flip .saver-view{order:2}
  .saver-ball .saver-view{order:1}
  .saver-ball .saver-text{order:2}
}

.saver-view{
  position:relative;aspect-ratio:16/10;max-width:100%;border-radius:14px;overflow:hidden;
  box-shadow:0 0 0 1px var(--a-rule),0 18px 40px rgba(0,0,0,.35);
}
.band-b .saver-view{box-shadow:0 0 0 1px var(--b-rule),0 18px 40px rgba(0,0,0,.4)}
.saver-view canvas{width:100%;height:100%;display:block}

.saver-kicker{
  font-family:var(--display);font-weight:700;font-size:.95rem;letter-spacing:-.01em;
  margin-bottom:.5rem;
}
.band-a .saver-kicker{color:var(--a-accent)}
.band-b .saver-kicker{color:var(--b-fg)}

.controls-list{margin:1.7rem 0 0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:.5rem}
.controls-list li{font-size:.92rem;font-weight:500;padding:.38rem .78rem;border-radius:99px}
.band-a .controls-list li{border:1px solid var(--a-rule);color:var(--a-muted)}
.band-b .controls-list li{border:1px solid var(--b-rule);color:var(--b-muted)}

.more{margin-top:3.4rem;padding-top:1.6rem;border-top:1px solid var(--b-rule);font-size:1rem}

/* ------------------------------------------------------------------ steps */

.steps{margin:3rem 0 0;padding:0;list-style:none;display:grid;gap:2rem;counter-reset:step}
@media (min-width:860px){ .steps{grid-template-columns:repeat(3,1fr);gap:2.6rem} }
.steps li{counter-increment:step;display:grid;gap:.75rem;align-content:start}
.steps li::before{
  content:counter(step);
  font-family:var(--display);font-weight:800;font-size:1.05rem;
  width:2.3rem;height:2.3rem;border-radius:50%;
  display:grid;place-items:center;
  background:var(--a-accent);color:var(--a-accent-fg);
}
.steps p{font-size:1rem}
.band-a .note{margin-top:.7rem;font-size:.92rem;color:var(--a-muted);border-left:2px solid var(--a-rule);padding-left:.8rem}

/* -------------------------------------------------------------- customise */

.tune{display:grid;gap:2.2rem;margin-top:3rem}
@media (min-width:900px){ .tune{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:3.4rem;align-items:start} }

.tune-view{position:relative;aspect-ratio:16/10;max-width:100%;border-radius:14px;overflow:hidden;box-shadow:0 0 0 1px var(--b-rule),0 16px 36px rgba(0,0,0,.4)}
.tune-view canvas{width:100%;height:100%;display:block}

.panel{
  background:var(--panel-bg);border:1px solid var(--panel-line);border-radius:14px;
  padding:1.5rem;display:grid;gap:1.15rem;color:var(--b-fg);
}
.field{display:grid;gap:.45rem}
.field-row{display:flex;align-items:center;justify-content:space-between;gap:1rem}
.field label{font-size:.95rem;font-weight:600}
.field output{font-size:.9rem;color:var(--b-muted);font-variant-numeric:tabular-nums}

input[type=range]{width:100%;accent-color:var(--a-accent);height:1.5rem}
select{
  font:inherit;font-size:.95rem;padding:.5rem .7rem;border-radius:var(--radius);
  border:1px solid var(--field-line);background:var(--field-bg);color:var(--b-fg);width:100%;
}
.switch{display:flex;align-items:center;gap:.6rem;font-size:.95rem;font-weight:600}
.switch input{width:1.15rem;height:1.15rem;accent-color:var(--a-accent);margin:0}
.panel-foot{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;border-top:1px solid var(--panel-line);padding-top:1.1rem}
.reset{font:inherit;font-size:.92rem;font-weight:600;color:var(--b-fg);background:none;border:0;cursor:pointer;padding:.3rem 0;text-decoration:underline;text-underline-offset:3px}
.panel .applies{font-size:.88rem;color:var(--b-muted);margin:0}

/* -------------------------------------------------------------------- cta */

.cta{text-align:left}
.cta h2{max-width:16ch}
.cta .hero-actions{margin-top:2rem}
.band-cta .btn{background:var(--cta-btn-bg);color:var(--cta-btn-fg)}
.band-cta .hero-req{color:var(--cta-muted)}

/* ----------------------------------------------------------------- footer */

footer{background:var(--foot-bg);color:var(--foot-fg);padding:3.4rem 0;font-size:.95rem}
.foot{display:grid;gap:1.4rem}
@media (min-width:760px){ .foot{grid-template-columns:1fr auto;align-items:end} }
footer a{color:var(--foot-strong)}
.foot-mark{font-family:var(--display);font-weight:800;font-size:1.1rem;color:var(--foot-strong);letter-spacing:-.03em}
