/* RadialDial site. The extension's own palette; Unbounded for headings, Figtree for the rest
   (self-hosted, OFL – assets/fonts/). One quiet page with one bold element: the dial's media on
   the right, running off the edge of the screen. Design notes: docs/site-redesign.md. */

@font-face{font-family:"Unbounded";src:url("fonts/unbounded-latin-500-normal.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Unbounded";src:url("fonts/unbounded-latin-700-normal.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Figtree";src:url("fonts/figtree-latin-400-normal.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Figtree";src:url("fonts/figtree-latin-500-normal.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Figtree";src:url("fonts/figtree-latin-700-normal.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}

:root{
  /* Colours */
  --night:#151A26;              /* page background */
  --panel:#1E2536;              /* pricing block, FAQ answers, header once scrolled */
  --line:#2C3548;               /* the few dividers, input borders */
  --ink:#E6EAF2;                /* text */
  --muted:#8C96AB;              /* secondary text */
  --blue:#6D96FF;               /* Get Pro, links, focus ring – nothing else */
  /* Type */
  --font-head:"Unbounded",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --font-body:"Figtree",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --fs-1:1rem;--fs-2:1.25rem;--fs-3:1.75rem;--fs-4:2.5rem;--fs-5:3.75rem;
  /* Layout */
  --maxw:1280px;                /* the one centred container (header, page, footer), gutters included */
  --gutter:clamp(16px, 4vw, 40px);
  --measure:65ch;
  --section:4rem;                      /* the one gap between the page's sections: 64px, desktop 96px */
  --head-h:64px;
  color-scheme:dark;
}
@media (min-width:900px){ :root{--section:6rem} }

/* ---------- Base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{background:var(--night);-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--head-h) + 16px)}
body{margin:0;background:var(--night);color:var(--ink);font-family:var(--font-body);font-size:var(--fs-1);line-height:1.6;
  overflow-x:clip}                              /* media bleeding off a laptop's right edge is cut, never scrolls */
h1,h2,h3{font-family:var(--font-head);font-weight:700;line-height:1.1;margin:0 0 .6em;letter-spacing:-.01em;text-wrap:balance}
h1{font-size:var(--fs-4)}
h2{font-size:var(--fs-3)}
h3{font-size:var(--fs-2);font-weight:500}
p,ul,ol{margin:0 0 1em}
:is(p,ul,ol,h1,h2,h3):last-child{margin-bottom:0}
a{color:var(--blue);text-underline-offset:.18em}
a:hover{text-decoration-thickness:2px}
:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
img,svg,video{max-width:100%;height:auto}
.lead{font-size:var(--fs-2);color:var(--muted);max-width:var(--measure)}
.muted,.quiet{color:var(--muted)}
.small{font-size:.9rem}
.wrap{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter)}
main.wrap{container-type:inline-size}           /* type sizes follow the container (cqi), never the viewport */

/* ---------- Header / footer ---------- */
.site-head{position:sticky;top:0;z-index:20;background:transparent;transition:background-color .2s}
html.scrolled .site-head,html:not(.js) .site-head{background:var(--panel)}
.head-row{display:flex;align-items:center;justify-content:space-between;gap:8px 24px;min-height:var(--head-h);flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none;font-family:var(--font-head);font-weight:500;font-size:1.05rem}
.site-nav{display:flex;gap:4px 20px;flex-wrap:wrap}
.site-nav a{color:var(--muted);text-decoration:none;padding:6px 2px}
.site-nav a:hover,.site-nav a[aria-current="page"]{color:var(--ink)}
main.wrap{padding-top:clamp(2rem, 6vw, 4rem);padding-bottom:var(--section)}
.site-foot{border-top:1px solid var(--line)}
.foot-row{display:flex;flex-wrap:wrap;gap:8px 24px;align-items:center;min-height:72px;padding-top:16px;padding-bottom:16px}
.foot-row a{color:var(--muted);text-decoration:none}
.foot-row a:hover{color:var(--ink)}
/* Phones (< 640px): the header keeps the name and one Get Pro link; Features, Pricing and FAQ are
   in the footer only (Find my key is there anyway) – no menu, no script */
.head-pro{display:none;color:var(--blue);font-weight:700;text-decoration:none;padding:6px 2px}
@media (max-width:639px){
  .site-nav{display:none}
  .head-pro{display:inline-block}
}
@media (min-width:640px){ .phone-only{display:none} }

/* ---------- Buttons ---------- */
.actions{display:flex;flex-wrap:wrap;gap:12px 16px;align-items:center;margin:0 0 1em}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 24px;border-radius:999px;
  border:1px solid var(--muted);background:transparent;color:var(--ink);font:inherit;font-weight:500;text-decoration:none;cursor:pointer}
.btn:hover{border-color:var(--ink)}
.btn.primary{background:var(--blue);border-color:var(--blue);color:var(--night);font-weight:700}
.btn.primary:hover{filter:brightness(1.07)}
.btn.soon{cursor:default;color:var(--muted);border:1px dashed var(--line)}
.btn.soon:hover{border-color:var(--line)}
.text-link{font-weight:500}

/* ---------- Landing: sections share one gap ---------- */
main > section + section{margin-top:var(--section)}
main > section > h2{font-size:var(--fs-4)}

/* Two zones inside the container: text left (~48 %), media right (~52 %) reaching the
   container's right edge (across its padding). While the viewport is no wider than the container
   (laptops) that edge is the screen's, so the media runs off it; on wider screens it stops at the
   container and its right edge fades too (below). */
.zones{display:grid;grid-template-columns:minmax(0,1fr);gap:2rem}
.bleed{min-width:0}
@media (min-width:900px){
  .zones{grid-template-columns:minmax(0,48fr) minmax(0,52fr);column-gap:clamp(2rem, 4cqi, 4rem)}
  .bleed{margin-right:calc(-1 * var(--gutter))}
}

/* Hero: headline, text and buttons on the left, the media beside them – one block, centred
   vertically on each other */
.hero{align-items:center}
.hero-title{font-size:var(--fs-4);margin:0 0 .5em}
.hero .lead{margin-bottom:1.5em}
@media (min-width:900px){ .hero-title{font-size:clamp(2.25rem, 1rem + 3.2cqi, 3.25rem)} }

/* Media: frameless, they blend into the Night background (recorded on it) */
.media{display:block;width:100%;height:auto;border:0;border-radius:0;box-shadow:none;background:transparent;
  /* Soft ~8 % fade into the page on the left, top and bottom edges (hides any slight colour
     mismatch with Night); none on the right, which runs off the screen */
  -webkit-mask-image:linear-gradient(to right, transparent, #000 8%),
                     linear-gradient(to bottom, transparent, #000 8%, #000 92%, transparent);
  -webkit-mask-composite:source-in;
  mask-image:linear-gradient(to right, transparent, #000 8%),
             linear-gradient(to bottom, transparent, #000 8%, #000 92%, transparent);
  mask-composite:intersect}
/* Dial shots (crop) in their .crop-frame. Desktop: a square frame, the image covering it anchored
   right, so the empty background on the left is cut. Phones: a square centred on the dial (at
   78% / 50% of the 16:10 image), the image zoomed so the dial fills ~85% of the width
   (--zoom: frame heights per image height; 'wide' for a larger dial); the frame's edges fade. */
.crop-frame{display:block}
@media (min-width:900px){ .media.crop{aspect-ratio:1 / 1;object-fit:cover;object-position:right center} }
@media (max-width:899px){
  .crop-frame{--zoom:1.54;--ar:1.6;--cx:.78;--cy:.5;position:relative;width:100%;aspect-ratio:1 / 1;overflow:hidden;
    -webkit-mask-image:linear-gradient(to right, transparent, #000 8%, #000 92%, transparent),
                       linear-gradient(to bottom, transparent, #000 8%, #000 92%, transparent);
    -webkit-mask-composite:source-in;
    mask-image:linear-gradient(to right, transparent, #000 8%, #000 92%, transparent),
               linear-gradient(to bottom, transparent, #000 8%, #000 92%, transparent);
    mask-composite:intersect}
  .crop-frame.crop-wide{--zoom:1.15}                      /* second ring: a larger dial */
  .crop-frame.crop-tall{--zoom:1.3}                       /* a label / breadcrumb that must stay whole */
  .crop-frame .media-video{position:static}
  .crop-frame .media.crop{position:absolute;max-width:none;max-height:none;aspect-ratio:auto;object-fit:fill;
    width:calc(var(--zoom) * var(--ar) * 100%);height:calc(var(--zoom) * 100%);
    left:calc(50% - var(--cx) * var(--zoom) * var(--ar) * 100%);top:calc(50% - var(--cy) * var(--zoom) * 100%);
    -webkit-mask-image:none;mask-image:none}
}
/* Wider than the container: the media no longer touches the screen edge – fade the right edge too */
@media (min-width:1281px){
  .bleed .media{
    -webkit-mask-image:linear-gradient(to right, transparent, #000 8%, #000 92%, transparent),
                       linear-gradient(to bottom, transparent, #000 8%, #000 92%, transparent);
    mask-image:linear-gradient(to right, transparent, #000 8%, #000 92%, transparent),
               linear-gradient(to bottom, transparent, #000 8%, #000 92%, transparent)}
}
.media-video{position:relative}
.media-video .poster{display:none}
.placeholder rect{fill:var(--night);stroke:none}
.placeholder text{fill:var(--muted);font-family:var(--font-body)}
.feature-icon{display:block;width:34%;max-width:160px;height:auto;margin:12% auto;fill:none;stroke:var(--muted);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
@media (prefers-reduced-motion:reduce){
  .media-video.has-poster video{display:none}                  /* no motion: the still poster instead */
  .media-video.has-poster .poster{display:block}
}

/* "Pro" tag: quiet, outlined */
.tag{display:inline-block;margin-left:.4em;padding:0 .55em;border:1px solid var(--line);border-radius:999px;
  font-family:var(--font-body);font-size:.8rem;font-weight:500;line-height:1.6;color:var(--muted);vertical-align:.2em;letter-spacing:0}

/* ---------- Features: plain rows ----------
   One row per feature: text and its own media side by side, both centred vertically; sides
   alternate (.flip). Rows are as tall as their content. Media at most 480×400: dial shots
   (crop) in a square frame, the options-page shots in their own ratio inside that box. Phones:
   one column, the media full width above its text. */
.features{display:flex;flex-direction:column;gap:3rem}
.feature{display:grid;grid-template-columns:minmax(0,1fr);gap:1.5rem}
.feature-media{order:1}                      /* phones: the text first, its media below */
.feature-text{max-width:var(--measure)}
.feature-text p{color:var(--muted);font-size:1.125rem}
.feature-media .feature-icon{width:120px;margin:1rem auto}
@media (min-width:900px){
  .features{gap:4rem}
  .feature{grid-template-columns:minmax(0,1fr) minmax(0,480px);column-gap:clamp(2rem, 5cqi, 4rem);align-items:center}
  .feature-media{order:0;justify-self:end;display:flex;justify-content:flex-end}
  .feature.flip{grid-template-columns:minmax(0,480px) minmax(0,1fr)}
  .feature.flip .feature-media{order:-1;justify-self:start;justify-content:flex-start}
  .feature.text-only{grid-template-columns:minmax(0,1fr)}
  .feature-media .media{width:auto;height:auto;max-width:100%;max-height:400px}
  .feature-media .media.crop{width:400px;max-width:100%;aspect-ratio:1 / 1}
}
/* Row media never touch the screen edge: fade all four edges */
.feature-media .media{
  -webkit-mask-image:linear-gradient(to right, transparent, #000 8%, #000 92%, transparent),
                     linear-gradient(to bottom, transparent, #000 8%, #000 92%, transparent);
  mask-image:linear-gradient(to right, transparent, #000 8%, #000 92%, transparent),
             linear-gradient(to bottom, transparent, #000 8%, #000 92%, transparent)}

/* ---------- Free and Pro, pricing ---------- */
.compare{width:100%;border-collapse:collapse;margin:0 0 3rem}
.compare th,.compare td{padding:.8rem .5rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.compare thead th{color:var(--muted);font-weight:500;font-size:.95rem}
.compare tbody th{font-weight:400}
.compare .col{width:5.5rem;text-align:center}
.compare tr > :first-child{padding-left:0}              /* flush with the heading */
.compare tbody tr:last-child > *{border-bottom:0}
.compare .yes{color:var(--ink);font-weight:700}
.compare .no{color:var(--muted)}
.price-panel{background:var(--panel);border-radius:12px;padding:clamp(1.5rem, 4vw, 2.5rem);max-width:640px}
.price-panel p{color:var(--muted)}
.price{font-family:var(--font-head);font-weight:700;font-size:var(--fs-4);line-height:1.1;color:var(--ink)!important;margin:0 0 .5em}

/* ---------- FAQ ---------- */
.faq details{border-bottom:1px solid var(--line);max-width:760px}
.faq details:first-of-type{border-top:1px solid var(--line)}
.faq summary{cursor:pointer;font-weight:500;font-size:1.125rem;padding:1rem 0}
.faq details p{background:var(--panel);color:var(--muted);padding:1rem 1.25rem;margin:0 0 1rem}

/* ---------- Other pages: prose, steps, notices, forms ---------- */
.prose{max-width:var(--measure)}
.prose h1{margin-bottom:.5em}
.prose h2{font-size:var(--fs-2);margin-top:2.2em}
.prose ul,.prose ol{padding-left:1.4em}
.prose li{margin:0 0 .4em}
.steps{counter-reset:step;list-style:none;padding:0 !important;margin:0 0 1em}
.steps li{counter-increment:step;position:relative;padding:0 0 .9em 2.75rem;min-height:2rem}
.steps li::before{content:counter(step);position:absolute;left:0;top:-.1em;width:1.9rem;height:1.9rem;border-radius:50%;
  display:grid;place-items:center;border:1px solid var(--line);color:var(--muted);font-weight:500;font-size:.9rem}
.notice{padding:1rem 1.25rem;border-radius:12px;background:var(--panel);border:1px solid var(--line);margin:0 0 1.25em}
.form{max-width:440px}
.form label{display:block;font-weight:500;margin:0 0 .4em}
.form input[type="email"]{width:100%;min-height:48px;padding:0 14px;border-radius:12px;border:1px solid var(--line);
  background:var(--night);color:var(--ink);font:inherit}
.form input[type="email"]:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.form .actions{margin-top:1.25rem}
.hp{position:absolute!important;left:-10000px!important;width:1px;height:1px;overflow:hidden}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .site-head{transition:none}
}
