:root{
  color-scheme:light dark;
  --bg:#F3FBF4;--surface:#FFFFFF;--panel:#E1F3E5;--rule:#CFE5D5;--edge:#6E8F7F;
  --ink:#0F2E24;--muted:#3D5E50;--green:#143D30;--on-green:#F3FBF4;--lime:#C8F45A;--on-lime:#0F2E24;--green-ink:#1D6B3C;
  /* The handheld flips per theme: green on the light page, mint white on the dark page. */
  --body:#143D30;--body-hi:#1B4B3B;--side:#0A2219;--label:#E8FBEA;--label-dim:#A6CBB7;--pill:#0D2A20;--pill-ink:#E8FBEA;--btn-edge:#0A2219;--dpad:#0D2A20;--grille:#0A2219;
  /* The screen is the same in both themes, four greens. */
  --lcd0:#D5F08A;--lcd1:#A8CC5E;--lcd2:#3E672A;--lcd3:#12351F;--bezel:#0D2A20;--bezel-ink:#A6CBB7;
  --display:"Gabarito","Avenir Next","Trebuchet MS",system-ui,sans-serif;
  --sans:"Figtree",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;
  --mono:"DM Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;
  --pixel:"Pixelify Sans","DM Mono",ui-monospace,monospace;
  --gutter:clamp(20px,5vw,72px);
  /* The handheld's scale. */
  --k:.88;
}
@media(prefers-color-scheme:dark){:root{
  --bg:#0D2A20;--surface:#133A2D;--panel:#18473A;--rule:#24574A;--edge:#6C9A86;
  --ink:#E8FBEA;--muted:#A6CBB7;--green:#C8F45A;--on-green:#0D2A20;--green-ink:#C8F45A;
  --body:#E8FBEA;--body-hi:#F6FFF7;--side:#9FC6B0;--label:#143D30;--label-dim:#3D5E50;--pill:#143D30;--pill-ink:#E8FBEA;--btn-edge:#143D30;--dpad:#143D30;--grille:#B9D8C6;
}}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font:400 17px/1.6 var(--sans);-webkit-font-smoothing:antialiased}
p,h1,h2,h3,ol,ul,dl{margin:0}
a{color:inherit}
:focus-visible{outline:3px solid var(--green-ink);outline-offset:3px}
.skip{position:fixed;z-index:20;top:12px;left:12px;padding:10px 16px;background:var(--surface);transform:translateY(-200%)}.skip:focus{transform:none}
.wrap{max-width:1296px;margin:auto;padding-inline:var(--gutter)}
.kicker{font:500 12px/1.4 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--green-ink)}
h1,h2{font-family:var(--display);font-weight:800;letter-spacing:-.025em;line-height:.98}
h1{font-size:clamp(44px,4.1vw,60px)}
h1 span{display:block;color:var(--green-ink)}
h2{font-size:clamp(32px,3.4vw,48px);line-height:1.04}
h3{font:700 20px/1.25 var(--display);letter-spacing:-.01em}
.button{display:inline-flex;align-items:center;gap:12px;min-height:50px;padding:12px 24px;border-radius:999px;border:2px solid var(--green);background:var(--green);color:var(--on-green);font:700 16px/1 var(--sans);text-decoration:none}
.button.quiet{background:transparent;color:var(--ink);border-color:var(--edge)}
.actions{display:flex;flex-wrap:wrap;gap:12px}

/* Header */
.top{display:flex;align-items:center;justify-content:space-between;padding-block:22px}
.brand{display:flex;align-items:center;gap:10px;font:800 22px/1 var(--display);letter-spacing:-.02em;text-decoration:none}
.brand svg{width:22px;height:30px}
.b-body{fill:var(--body);stroke:var(--ink);stroke-width:2}.b-lcd{fill:var(--lcd0)}.b-key{fill:var(--lime)}.b-pad{stroke:var(--label);stroke-width:2}
nav{display:flex;align-items:center;gap:6px}
.nav-link{padding:10px 14px;text-decoration:none;font-weight:500;color:var(--muted)}
.nav-link:hover{color:var(--ink)}
.nav-signin{min-height:42px;padding:8px 18px;font-size:15px;margin-left:8px}

/* Hero */
.hero{overflow-x:clip}
.hero-grid{display:grid;grid-template-columns:minmax(0,470px) minmax(0,1fr);gap:clamp(40px,6vw,104px);align-items:center;padding-block:8px 72px}
.copy{min-width:0}
.copy .kicker{margin-bottom:18px}
.intro{margin-top:20px;max-width:560px;color:var(--muted);font-size:17.5px}
.copy .actions{margin-top:28px}

/* The legend. The same three controls as the handheld, in words. */
.legend{list-style:none;padding:0;margin-top:32px;border-top:2px solid var(--ink)}
.legend li{display:grid;grid-template-columns:76px minmax(0,1fr);gap:18px;align-items:start;padding:13px 14px 13px 0;border-bottom:1px solid var(--rule)}
.legend li.on{background:var(--panel);box-shadow:-14px 0 0 var(--panel)}
.legend h2{margin-bottom:4px;font:700 20px/1.25 var(--display);letter-spacing:-.01em}
.legend p{color:var(--muted);font-size:15px;line-height:1.45}
.legend .math{margin-top:6px;font:500 13px/1.5 var(--mono);color:var(--ink)}
.legend .math b{font-weight:500;color:var(--green-ink)}
.chip{display:inline-grid;place-items:center;width:46px;height:46px;border-radius:50%;background:var(--lime);color:var(--on-lime);font:800 20px/1 var(--display);box-shadow:inset 0 -3px 0 #0000002e,0 0 0 2px var(--btn-edge)}
.chip.pill{width:76px;height:26px;margin-top:10px;border-radius:999px;background:var(--pill);color:var(--pill-ink);font:500 10.5px/1 var(--mono);letter-spacing:.12em;box-shadow:none}
@media(prefers-color-scheme:dark){.chip{box-shadow:inset 0 -3px 0 #0000002e}.chip.pill{background:var(--body);color:var(--label)}}

/* The handheld. HTML and CSS, so the screen stays real text. */
.device{position:relative;display:grid;place-items:center;height:calc(var(--k) * 727px)}
.console{position:relative;flex:none;width:440px;height:690px;border-radius:22px 22px 86px 22px;
  background:linear-gradient(160deg,var(--body-hi),var(--body) 40%);
  box-shadow:16px 18px 0 var(--side),16px 18px 60px 10px #0b241b33;transform:rotate(-4deg) scale(var(--k))}
.console::before{content:"";position:absolute;inset:0 0 auto;height:34px;border-bottom:2px solid #0000001f;border-radius:22px 22px 0 0}
.console::after{content:"";position:absolute;left:30px;top:13px;width:9px;height:9px;border-radius:50%;background:var(--label-dim);opacity:.5}
.bezel{position:absolute;left:30px;right:30px;top:58px;height:352px;border-radius:14px 14px 50px 14px;background:var(--bezel);padding:26px 40px 0}
.bezel .tag{position:absolute;left:18px;right:18px;top:8px;display:flex;align-items:center;gap:10px;font:500 9.5px/1 var(--mono);letter-spacing:.14em;color:var(--bezel-ink)}
.bezel .tag::before,.bezel .tag::after{content:"";height:2px;flex:1;background:var(--lime);opacity:.55}
.bezel .tag::before{flex:0 0 26px}
.led{position:absolute;left:12px;top:132px;width:9px;height:9px;border-radius:50%;background:var(--lime);box-shadow:0 0 10px var(--lime)}
.led-label{position:absolute;left:6px;top:148px;font:500 7.5px/1 var(--mono);letter-spacing:.08em;color:var(--bezel-ink)}
.lcd{height:300px;border-radius:4px;background:var(--lcd0);color:var(--lcd3);font-family:var(--pixel);padding:14px 16px;position:relative;overflow:hidden;
  box-shadow:inset 0 0 0 2px #12351F22,inset 0 6px 14px #12351F26}
.lcd::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,#12351F0d 0 1px,transparent 1px 3px),repeating-linear-gradient(90deg,#12351F08 0 1px,transparent 1px 3px);pointer-events:none}
.lcd .row{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;line-height:1.2;letter-spacing:.04em}
.lcd .sec{margin-top:12px;color:var(--lcd2)}
.lcd .bal{display:flex;align-items:flex-end;gap:10px;margin-top:6px}
.lcd .bal b{font:700 84px/.9 var(--pixel);letter-spacing:-.02em}
.lcd .bal span{font-size:13px;line-height:1.25;padding-bottom:8px;color:var(--lcd2)}
.cells{display:grid;grid-template-columns:repeat(16,1fr);gap:3px;margin:8px 0 4px;position:relative}
.cells i{height:14px;background:var(--lcd1);border-radius:1px}
.cells i.f{background:var(--lcd3)}
/* The goal tick at the end of the bar fills when the week's goal is met. */
.cells::after{content:"";position:absolute;right:-6px;top:-4px;bottom:-4px;width:3px;background:var(--lcd2)}
.cells.met::after{background:var(--lcd3);box-shadow:0 0 0 1px var(--lcd3)}
.days{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin:10px 0 8px;text-align:center;font-size:12px}
.days span{padding:2px 0;border:1px solid var(--lcd1);border-radius:2px}
.days span.p{background:var(--lcd1)}
.days span.c{background:var(--lcd3);color:var(--lcd0);border-color:var(--lcd3)}
.log{font-size:13px}
.log .row{padding:3px 4px;margin:0 -4px;min-height:22px}
.log .row.inv{background:var(--lcd3);color:var(--lcd0)}
.brandline{position:absolute;left:34px;top:424px;font:800 italic 17px/1 var(--display);letter-spacing:-.01em;color:var(--label)}
.brandline small{font:500 9px/1 var(--mono);font-style:normal;letter-spacing:.14em;margin-left:8px;color:var(--label-dim)}
.dpad{position:absolute;left:44px;top:484px;width:96px;height:96px}
.dpad::before,.dpad::after{content:"";position:absolute;background:var(--dpad);border-radius:4px;box-shadow:inset 0 -3px 0 #ffffff14}
.dpad::before{left:32px;top:0;width:32px;height:96px}.dpad::after{left:0;top:32px;width:96px;height:32px}
.dpad-label{position:absolute;left:44px;top:590px;width:96px;text-align:center;font:500 9px/1.2 var(--mono);letter-spacing:.12em;color:var(--label-dim)}
.ab{position:absolute;right:34px;top:458px;width:170px;height:110px;transform:rotate(-24deg)}
.key{position:absolute;width:62px;height:62px;border-radius:50%;background:var(--lime);color:var(--on-lime);display:grid;place-items:center;font:800 24px/1 var(--display);
  box-shadow:inset 0 -5px 0 #0000002b,0 4px 0 var(--btn-edge),0 0 0 2px var(--btn-edge)}
.key.down{transform:translateY(4px);box-shadow:inset 0 -2px 0 #0000002b,0 0 0 var(--btn-edge),0 0 0 2px var(--btn-edge),0 0 0 9px #C8F45A55}
.key.b{left:0;top:30px}.key.a{right:0;top:0}
.key-label{position:absolute;font:600 10px/1 var(--mono);letter-spacing:.14em;color:var(--label);width:90px;text-align:center}
.key.b+.key-label{left:-14px;top:104px}.key.a+.key-label{right:-14px;top:74px}
.pills{position:absolute;left:112px;top:652px;display:flex;gap:16px;transform:rotate(-24deg);transform-origin:left}
.pill-key{display:flex;flex-direction:column;align-items:center;gap:7px;font:600 9px/1 var(--mono);letter-spacing:.12em;color:var(--label)}
.pill-key i{display:block;width:52px;height:13px;border-radius:999px;background:var(--pill);box-shadow:0 2px 0 var(--btn-edge)}
.pill-key.down i{background:var(--lime);box-shadow:0 0 0 6px #C8F45A55}
.grille{position:absolute;right:30px;bottom:44px;display:flex;gap:7px;transform:rotate(-28deg)}
.grille i{width:6px;height:46px;border-radius:3px;background:var(--grille);opacity:.55}
.caption{position:absolute;left:0;right:0;bottom:-56px;text-align:center;font:500 12px/1.4 var(--mono);letter-spacing:.06em;color:var(--muted)}

/* Below the hero */
.band{padding-block:104px}
/* Sections are split by a rule as wide as the content. */
.band>.wrap{position:relative}
.band>.wrap::before{content:"";position:absolute;top:-104px;left:var(--gutter);right:var(--gutter);border-top:1px solid var(--rule)}
.link{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:72px;align-items:center}
.lead{margin-top:20px;color:var(--muted);font-size:18px;max-width:520px}
.cable{position:relative;height:340px}
.wire{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.wire path{fill:none;stroke:var(--ink);stroke-width:5;stroke-linecap:round}.wire rect{fill:var(--ink)}
.mini{position:absolute;left:0;top:40px;width:178px;height:258px;border-radius:12px 12px 38px 12px;background:var(--body);box-shadow:8px 9px 0 var(--side)}
.mini .scr{position:absolute;left:16px;right:16px;top:20px;height:122px;border-radius:6px 6px 20px 6px;background:var(--bezel);padding:12px 16px}
.mini .scr div{height:100%;background:var(--lcd0);border-radius:2px;color:var(--lcd3);font:600 12px/1.2 var(--pixel);padding:8px;display:flex;flex-direction:column;justify-content:space-between}
.mini .scr b{font:700 38px/.9 var(--pixel)}
.mini .k{position:absolute;width:28px;height:28px;border-radius:50%;background:var(--lime);box-shadow:0 0 0 2px var(--btn-edge)}
.mini .k1{right:22px;top:168px}.mini .k2{right:62px;top:186px}
.chat{position:absolute;right:0;top:0;width:min(400px,62%);background:var(--surface);border:1px solid var(--rule);border-radius:18px;padding:18px;box-shadow:0 30px 60px -30px #0b241b55}
.chat .who{font:500 11px/1 var(--mono);letter-spacing:.12em;color:var(--muted);margin-bottom:12px;text-transform:uppercase}
.msg{padding:10px 14px;border-radius:14px;font-size:15px;line-height:1.45;max-width:88%}
.msg+.msg{margin-top:10px}
.msg.you{margin-left:auto;background:var(--green);color:var(--on-green);border-bottom-right-radius:4px}
.msg.it{background:var(--panel);border-bottom-left-radius:4px}
.same{position:absolute;left:190px;bottom:2px;font:500 12px/1.4 var(--mono);letter-spacing:.06em;color:var(--green-ink)}
.prices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px;margin-top:52px}
.cart{border-radius:14px 14px 4px 4px;background:var(--surface);border:2px solid var(--ink);padding:0 0 10px;position:relative}
.cart h3{display:flex;justify-content:space-between;align-items:center;padding:14px 20px;border-bottom:2px solid var(--ink);font-size:18px;line-height:1}
.cart h3 span,.tools h3 span{font:500 11px/1 var(--mono);letter-spacing:.12em;color:var(--muted)}
.cart ul{list-style:none;padding:6px 20px}
.cart li{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px dashed var(--rule);font-weight:500}
.cart li:last-child{border:0}
.cart li b{font:500 15px/1.4 var(--mono)}
.cart.earn li b{color:var(--green-ink)}
.cart::before{content:"";position:absolute;left:24px;right:24px;top:-8px;height:8px;border-radius:6px 6px 0 0;background:var(--ink);opacity:.15}

/* Connect */
.connect-intro{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:64px;align-items:end;margin-bottom:64px}
.connect-intro .lead{margin-top:0;max-width:600px}
#connect-title{font-size:clamp(44px,5vw,76px);line-height:.98}
.steps{list-style:none;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}
.steps li{border-top:2px solid var(--ink);padding-top:20px;min-width:0}
.steps .n{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--lime);color:var(--on-lime);font:800 18px/1 var(--display);margin-bottom:16px;box-shadow:0 0 0 2px var(--btn-edge)}
.steps p{color:var(--muted);font-size:16px;margin-top:6px}
.steps .address{display:flex;align-items:center;gap:10px;margin-top:14px;min-height:58px;padding:8px 8px 8px 16px;border:2px solid var(--ink);border-radius:999px;background:var(--surface);color:var(--ink);font:500 13px/1.3 var(--mono)}
/* The address stays on one line, so it never breaks mid host. */
.address code{font:inherit;min-width:0;white-space:nowrap;overflow-x:auto}
@media(max-width:380px){.steps .address{flex-wrap:wrap;border-radius:20px;padding:10px 12px}.address code{flex:1 1 100%}}
.copy-address{margin-left:auto;flex:none;min-height:38px;padding:0 16px;border-radius:999px;border:0;background:var(--green);color:var(--on-green);font:700 14px var(--sans);cursor:pointer}
.tools{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px;margin-top:44px}
.tools section{border:2px solid var(--ink);border-radius:14px;background:var(--surface);overflow:hidden}
.tools h3{padding:14px 18px;border-bottom:2px solid var(--ink);display:flex;justify-content:space-between;align-items:center}
.tools dl{padding:6px 18px 16px}
.tools dt{font:500 14px/1.4 var(--mono);color:var(--green-ink);margin-top:12px}
.tools dd{margin:2px 0 0;color:var(--muted);font-size:15px;line-height:1.45}

.end{padding-block:104px;text-align:center;background:var(--green);color:var(--on-green)}
.end h2{color:var(--on-green)}
.end p{margin:16px auto 0;max-width:540px;opacity:.86}
.end .button{margin-top:12px;background:var(--lime);border-color:var(--lime);color:var(--on-lime)}
.end p:last-child{opacity:1}
@media(prefers-color-scheme:dark){.end{background:var(--panel);color:var(--ink)}.end h2{color:var(--ink)}}
.foot{display:flex;justify-content:space-between;gap:6px 24px;padding-block:28px;font-size:14px;color:var(--muted)}

/* Phones and narrow tablets: copy, then the handheld, then the legend. */
@media(max-width:820px){
  :root{--k:.72}
  .hero-grid{display:flex;flex-direction:column;align-items:stretch;gap:0;padding-block:8px 48px}
  .copy{display:contents}
  .copy .kicker,.copy h1,.copy .intro{order:0}
  .copy .actions{order:1;margin-top:22px}
  .track{order:2;margin:20px 0 6px}
  .copy .legend{order:3;margin-top:8px}
  .device{display:block}
  .console{position:absolute;top:calc(345px * (var(--k) - 1));left:50%;margin-left:-220px}
  .caption{display:none}
  h1{font-size:44px}
  .intro{font-size:16.5px}
  .nav-link{display:none}
  .legend li{grid-template-columns:58px minmax(0,1fr);gap:12px}
  .chip{width:40px;height:40px;font-size:17px}.chip.pill{width:58px;font-size:9px}
  .legend .math{font-size:11.5px}
  .link,.prices,.connect-intro,.steps,.tools{grid-template-columns:minmax(0,1fr)}
  .link{gap:48px}
  .connect-intro{gap:20px;margin-bottom:44px}
  .cable{height:auto;padding-block:24px 44px}
  .chat{position:relative;margin-left:auto;width:76%}
  .same{left:0;right:0;bottom:4px;text-align:center}
  .mini{top:70px}
  .band,.end{padding-block:72px}
  .band>.wrap::before{top:-72px}
  .foot{flex-direction:column}
}
@media(max-width:389px){:root{--k:.64}.chat{width:80%}.mini{width:150px}}
@media(max-width:339px){:root{--k:.58}h1{font-size:38px}}

/* With motion and scripts, scrolling walks the handheld through the week. */
@media(prefers-reduced-motion:no-preference){
  .js .console{transform:perspective(1600px) rotateX(var(--rx,6deg)) rotateY(var(--ry,-10deg)) rotate(-4deg) scale(var(--k))}
  .js:not(.live) .lcd>*{visibility:hidden}
  .key{transition:transform .16s,box-shadow .16s}
  .key.down{transition-duration:.12s}
  .legend li{transition:background .3s,box-shadow .3s}
  .cells.blink{animation:blink .3s steps(1) 2}
  @keyframes blink{50%{visibility:hidden}}
}
@media(prefers-reduced-motion:no-preference) and (min-width:821px){
  .js .hero{min-height:300svh}
  .js .stage{position:sticky;top:var(--stick,0px)}
  .js .hero-grid{padding-bottom:40px}
}
/* On short screens the stage sticks by its lower edge, so the handheld sits low and a little smaller. */
@media(prefers-reduced-motion:no-preference) and (min-width:821px) and (max-height:760px){
  :root{--k:.76}
  .js .track{align-self:end;padding-bottom:40px}
  .js .device{grid-template-rows:minmax(0,1fr)}
}
@media(prefers-reduced-motion:no-preference) and (max-width:820px){
  .js .track{height:calc(var(--k) * 727px + 44px + 200svh)}
  .js .device{position:sticky;top:max(0px,calc(50svh - var(--k) * 363px - 22px));height:calc(var(--k) * 727px + 44px)}
  .js .caption{display:block;bottom:8px}
}
@media(forced-colors:active){
  .console,.lcd,.key,.chip,.pill-key i,.cart,.tools section,.dpad::before,.dpad::after{border:2px solid CanvasText}
  .cells i,.grille i{border:1px solid CanvasText}
  .cells i.f,.days span.c,.log .row.inv{forced-color-adjust:none;background:CanvasText;color:Canvas}
  .key.down,.pill-key.down i{forced-color-adjust:none;background:Highlight;color:HighlightText}
  .legend li.on{outline:2px solid Highlight}
}
