/* ============================================================================
   site.css — shared design language for all app sites (shawndowler.com/<slug>/)
   Edit tokens/components here once; every generated page picks them up.
   Extracted from the original per-page inline <style> blocks — values unchanged.
   ========================================================================== */

:root{
  --bg:#161616;
  --panel:#202020;
  --panel-2:#1c1c1c;
  --field:#252525;
  --border:rgba(255,255,255,.08);
  --border-2:rgba(255,255,255,.05);
  --text:#f4f4f4;
  --text-2:#a2a2a2;
  --text-3:#6c6c6c;
  --green:#5cc24c;
  --blue:#2f7cf6;
  --red:#e8483a;
  --amber:#f5a623;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  background:var(--bg);
  color:var(--text);
  font-family:var(--sans);
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
a{color:inherit}
img{max-width:100%;height:auto;display:block}
.wrap{max-width:1040px;margin:0 auto;padding:0 24px}
.wrap-narrow{max-width:640px;margin:0 auto;padding:0 24px}

/* ---------- Header ---------- */
header{
  border-bottom:1px solid var(--border-2);
  position:sticky;top:0;z-index:10;
  background:rgba(22,22,22,.82);
  backdrop-filter:saturate(160%) blur(14px);
  -webkit-backdrop-filter:saturate(160%) blur(14px);
}
.nav{display:flex;align-items:center;justify-content:space-between;height:60px}
.brand{display:flex;align-items:center;gap:10px;font-weight:600;letter-spacing:-.01em;text-decoration:none}
.dot{width:9px;height:9px;border-radius:50%;background:var(--green);
     box-shadow:0 0 0 3px rgba(92,194,76,.16),0 0 12px rgba(92,194,76,.55)}
.nav-links{display:flex;align-items:center;gap:26px;font-size:15px}
.nav-links a{color:var(--text-2);text-decoration:none;transition:color .15s;white-space:nowrap}
.nav-links a:hover{color:var(--text)}

/* ---------- Hero ---------- */
.hero{padding:84px 0 48px;text-align:center}
.eyebrow{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--text-2);border:1px solid var(--border);border-radius:100px;
  padding:7px 14px;margin-bottom:26px;background:var(--panel-2);
}
.eyebrow .dot{width:7px;height:7px}
h1{
  font-size:clamp(40px,7vw,72px);line-height:1.02;letter-spacing:-.035em;font-weight:700;
  margin-bottom:18px;
}
.subtitle{font-size:clamp(17px,2.4vw,22px);color:var(--text-2);font-weight:500;letter-spacing:-.01em;margin-bottom:26px}
.lede{max-width:680px;margin:0 auto 40px;font-size:18px;color:#cfcfcf;text-wrap:pretty}
.cta-row{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;align-items:center}

.appstore{
  display:inline-flex;align-items:center;gap:12px;
  background:#fff;color:#000;text-decoration:none;
  padding:13px 22px 13px 20px;border-radius:14px;
  transition:transform .12s ease,box-shadow .12s ease;
  box-shadow:0 1px 0 rgba(255,255,255,.4) inset,0 8px 24px rgba(0,0,0,.45);
}
.appstore:hover{transform:translateY(-1px)}
.appstore svg{width:26px;height:26px;fill:#000;flex:none}
.appstore .as-txt{text-align:left;line-height:1.15;white-space:nowrap}
.appstore .as-small{font-size:11px;letter-spacing:.02em}
.appstore .as-big{font-size:19px;font-weight:600;letter-spacing:-.01em}
/* "Coming soon" variant, used when a registry entry has no appStoreUrl yet */
.appstore.soon{background:var(--panel-2);color:var(--text);border:1px solid var(--border);
               box-shadow:none;cursor:default}
.appstore.soon svg{fill:var(--text-2)}

.text-link{
  display:inline-flex;align-items:center;gap:7px;
  color:var(--text);text-decoration:none;font-size:16px;font-weight:500;
  padding:13px 18px;border:1px solid var(--border);border-radius:14px;
  transition:border-color .15s,background .15s;
}
.text-link:hover{border-color:rgba(255,255,255,.22);background:var(--panel-2)}
.text-link .arrow{color:var(--text-3);transition:transform .15s}
.text-link:hover .arrow{transform:translateX(3px)}

/* ---------- TV showcase (16:9 framed screenshots) ---------- */
.showcase{padding:16px 0 40px}
.tv{
  padding:14px;background:#080808;border-radius:16px;
  border:1px solid rgba(255,255,255,.09);
  box-shadow:0 2px 1px rgba(255,255,255,.06) inset,0 40px 80px -30px rgba(0,0,0,.9),0 10px 30px rgba(0,0,0,.5);
}
.tv img{border-radius:6px;aspect-ratio:16/9;object-fit:cover;background:#000;width:100%}
.tv-hero{max-width:900px;margin:0 auto}
.gallery{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin-top:28px}
.device-cap{
  text-align:center;margin-top:16px;font-family:var(--mono);font-size:11px;
  letter-spacing:.12em;text-transform:uppercase;color:var(--text-3);
}

/* ---------- Device showcase (phone + tablet mockups) ---------- */
.devices{display:flex;gap:48px;align-items:flex-end;justify-content:center;flex-wrap:wrap}
.device-phone{
  width:266px;flex:none;padding:11px;background:#080808;border-radius:46px;
  border:1px solid rgba(255,255,255,.09);
  box-shadow:0 2px 1px rgba(255,255,255,.06) inset,0 40px 80px -30px rgba(0,0,0,.9),0 10px 30px rgba(0,0,0,.5);
}
.device-phone img{border-radius:35px}
.device-pad{
  width:560px;max-width:100%;flex:none;padding:15px;background:#080808;border-radius:30px;
  border:1px solid rgba(255,255,255,.09);
  box-shadow:0 2px 1px rgba(255,255,255,.06) inset,0 40px 80px -30px rgba(0,0,0,.9),0 10px 30px rgba(0,0,0,.5);
}
.device-pad img{border-radius:16px}

/* ---------- Section heads ---------- */
section.block{padding:60px 0}
.seclabel{
  font-family:var(--mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--text-3);margin-bottom:22px;
}
h2{font-size:clamp(26px,4vw,34px);letter-spacing:-.025em;font-weight:700;margin-bottom:30px}

/* ---------- Features grid ---------- */
.features{
  display:grid;grid-template-columns:repeat(2,1fr);gap:1px;
  background:var(--border-2);border:1px solid var(--border-2);border-radius:18px;overflow:hidden;
}
.feat{display:flex;align-items:center;gap:16px;padding:22px 24px;background:var(--panel-2)}
.keycap{
  flex:none;min-width:62px;height:46px;padding:0 12px;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-size:13px;font-weight:600;letter-spacing:.02em;color:#1a1a1a;
  border-radius:11px;
  background:linear-gradient(180deg,#fff 0%,#e2e2e2 100%);
  box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 -2px 4px rgba(0,0,0,.12) inset,0 2px 4px rgba(0,0,0,.5);
}
.keycap.amber{color:#3a2400;background:linear-gradient(180deg,#f8b53e 0%,#e09112 100%);
              box-shadow:0 1px 0 rgba(255,255,255,.35) inset,0 0 14px rgba(245,166,35,.4),0 2px 4px rgba(0,0,0,.5)}
.keycap.green{color:#10330a;background:linear-gradient(180deg,#74d35f 0%,#4faa3c 100%);
              box-shadow:0 1px 0 rgba(255,255,255,.3) inset,0 0 14px rgba(92,194,76,.4),0 2px 4px rgba(0,0,0,.5)}
.keycap.blue{color:#06203f;background:linear-gradient(180deg,#5ea0fb 0%,#2f7cf6 100%);
             box-shadow:0 1px 0 rgba(255,255,255,.3) inset,0 0 14px rgba(47,124,246,.4),0 2px 4px rgba(0,0,0,.5)}
.keycap.red{color:#fff;background:linear-gradient(180deg,#ef5a4d 0%,#d6392b 100%);
            box-shadow:0 1px 0 rgba(255,255,255,.25) inset,0 0 14px rgba(232,72,58,.45),0 2px 4px rgba(0,0,0,.5)}
.feat-name{font-size:16px;font-weight:600;letter-spacing:-.01em}
.feat-sub{font-size:13.5px;color:var(--text-2);margin-top:2px}

/* ---------- Compatibility / Safety cards ---------- */
.compat{
  background:var(--panel-2);border:1px solid var(--border);border-radius:18px;
  padding:28px 30px;display:flex;gap:20px;align-items:flex-start;
}
.compat + .compat{margin-top:18px}
.compat .badge{
  flex:none;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--amber);border:1px solid rgba(245,166,35,.3);border-radius:8px;padding:6px 10px;margin-top:2px;
  background:rgba(245,166,35,.06);
}
.compat .badge.safety{color:var(--red);border-color:rgba(232,72,58,.3);background:rgba(232,72,58,.06)}
.compat p{color:#cfcfcf;font-size:15.5px;text-wrap:pretty}
.compat strong{color:var(--text);font-weight:600}
.compat .disclaim{display:block;margin-top:8px;color:var(--text-3);font-size:13.5px}

/* ---------- Privacy ---------- */
#privacy{padding-bottom:24px}
.privacy-card{
  background:var(--panel-2);border:1px solid var(--border);border-radius:18px;padding:34px 32px;
}
.privacy-card p{color:#cfcfcf;font-size:16px;max-width:760px;text-wrap:pretty}

/* ---------- Footer ---------- */
footer{border-top:1px solid var(--border-2);padding:40px 0 56px;margin-top:40px}
.foot{display:flex;flex-wrap:wrap;gap:18px;align-items:center;justify-content:space-between;
      color:var(--text-3);font-size:14px}
.foot a{color:var(--text-2);text-decoration:none}
.foot a:hover{color:var(--text)}
.foot-links{display:flex;gap:22px;flex-wrap:wrap}

/* ---------- Support page ---------- */
main.support{padding:64px 0 80px}
.support .intro{color:var(--text-2);font-size:18px;margin-bottom:40px;text-wrap:pretty}
.support h1{font-size:clamp(34px,6vw,48px);letter-spacing:-.03em;font-weight:700;margin-bottom:16px}
.card{background:var(--panel-2);border:1px solid var(--border);border-radius:18px;padding:30px}
.field{margin-bottom:22px}
.field:last-of-type{margin-bottom:26px}
label{display:block;font-size:14px;font-weight:600;color:var(--text);margin-bottom:9px;letter-spacing:-.01em}
label .req{color:var(--green);font-weight:500}
input,select,textarea{
  width:100%;font-family:var(--sans);font-size:16px;color:var(--text);
  background:var(--field);border:1px solid var(--border);border-radius:11px;
  padding:13px 14px;transition:border-color .15s,box-shadow .15s;
}
textarea{resize:vertical;min-height:140px;line-height:1.55}
input::placeholder,textarea::placeholder{color:var(--text-3)}
input:focus,select:focus,textarea:focus{
  outline:none;border-color:rgba(92,194,76,.5);box-shadow:0 0 0 3px rgba(92,194,76,.14)
}
select{
  appearance:none;-webkit-appearance:none;cursor:pointer;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23a2a2a2' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
  background-repeat:no-repeat;background-position:right 14px center;padding-right:40px;
}
button.submit{
  width:100%;font-family:var(--sans);font-size:16px;font-weight:600;letter-spacing:-.01em;color:#08210a;cursor:pointer;
  background:linear-gradient(180deg,#74d35f 0%,#4faa3c 100%);border:none;border-radius:12px;padding:15px;
  box-shadow:0 1px 0 rgba(255,255,255,.3) inset,0 6px 18px rgba(92,194,76,.28);
  transition:transform .12s ease,filter .12s ease;
}
button.submit:hover{transform:translateY(-1px);filter:brightness(1.04)}
button.submit:active{transform:translateY(0)}
.thanks{display:none;text-align:center;padding:18px 6px}
.thanks .check{
  width:60px;height:60px;border-radius:50%;margin:0 auto 22px;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(180deg,#74d35f 0%,#4faa3c 100%);
  box-shadow:0 0 0 6px rgba(92,194,76,.12),0 0 24px rgba(92,194,76,.4);
}
.thanks .check svg{width:28px;height:28px;stroke:#08210a;stroke-width:3.5;fill:none;stroke-linecap:round;stroke-linejoin:round}
.thanks h2{font-size:24px;letter-spacing:-.02em;margin-bottom:10px}
.thanks p{color:var(--text-2);font-size:16px;max-width:420px;margin:0 auto}
.backlink{display:inline-flex;align-items:center;gap:8px;margin-top:30px;color:var(--text-2);text-decoration:none;font-size:15px;transition:color .15s}
.backlink:hover{color:var(--text)}
.backlink .arrow{transition:transform .15s}
.backlink:hover .arrow{transform:translateX(-3px)}

/* ---------- Home / app directory ---------- */
.home-hero{padding:96px 0 40px;text-align:center}
.app-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;padding:0 0 40px}
.app-card{
  display:block;background:var(--panel-2);border:1px solid var(--border);border-radius:18px;
  padding:28px 30px;text-decoration:none;transition:border-color .15s,transform .12s ease;
}
.app-card:hover{border-color:rgba(255,255,255,.22);transform:translateY(-2px)}
.app-card .platform{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-3);margin-bottom:12px}
.app-card .app-name{font-size:22px;font-weight:700;letter-spacing:-.02em;margin-bottom:6px}
.app-card .go{color:var(--text-2);font-size:14px}

@media (max-width:760px){
  .hero{padding:56px 0 32px}
  section.block{padding:46px 0}
  .features{grid-template-columns:1fr}
  .gallery{grid-template-columns:1fr;gap:24px}
  .devices{gap:40px}
  .compat{flex-direction:column;gap:14px}
  .foot{flex-direction:column;align-items:flex-start}
  .app-grid{grid-template-columns:1fr}
}
@media (max-width:560px){
  main.support{padding:46px 0 60px}
  .card{padding:24px 20px}
}
