/* Tracktainer blog stylesheet. Build 8. */
/* Tracktainer Blog theme
   Brand kit: Plus Jakarta Sans / DM Sans / JetBrains Mono
   Emerald #10b981, Ocean #0ea5e9, Indigo #6366f1 */

:root{
  --tt-emerald:#10b981; --tt-ocean:#0ea5e9; --tt-indigo:#6366f1;
  --tt-ink:#0f172a; --tt-ink-2:#1e293b; --tt-read:#334155;
  --tt-slate:#64748b; --tt-muted:#94a3b8; --tt-line:#e2e8f0;
  --tt-bg:#fafbfe;
  --tt-grad:linear-gradient(135deg,#10b981,#0ea5e9,#6366f1);
  --f-display:'Plus Jakarta Sans',system-ui,sans-serif;
  --f-body:'DM Sans',system-ui,sans-serif;
  --f-mono:'JetBrains Mono',ui-monospace,monospace;
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:104px}
body{font-family:var(--f-body);color:var(--tt-read);background:#fff;line-height:1.7;
  -webkit-font-smoothing:antialiased;overflow-x:hidden}
h1,h2,h3,p,li,td,th,a{overflow-wrap:break-word}
img,svg{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
:focus-visible{outline:2px solid var(--tt-ocean);outline-offset:3px;border-radius:4px}

.wrap{max-width:1120px;margin:0 auto;padding:0 24px}
.measure{max-width:720px;margin:0 auto}
.eyebrow{font-family:var(--f-mono);font-size:.7rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--tt-muted)}
.eyebrow .dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--tt-emerald);margin-right:8px;vertical-align:middle}

/* ---------- Header ---------- */
.site-head{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.92);backdrop-filter:blur(14px);border-bottom:1px solid var(--tt-line)}
.head-in{display:flex;align-items:center;gap:20px;height:72px;flex-wrap:nowrap}
.brand{display:flex;align-items:center;gap:11px;flex-shrink:0}
.brand img{height:27px;width:auto}
.brand-tag{font-family:var(--f-mono);font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;color:var(--tt-muted);padding-left:11px;border-left:1px solid var(--tt-line);white-space:nowrap}
.nav{display:flex;align-items:center;gap:4px;margin-left:auto;flex-shrink:0}
.nav a{font-size:.875rem;font-weight:500;color:var(--tt-slate);white-space:nowrap;padding:.45rem .7rem;border-radius:8px;transition:background .18s,color .18s}
.nav a:hover{color:var(--tt-ink);background:var(--tt-bg)}
.nav a[aria-current="page"]{color:var(--tt-ink);background:var(--tt-bg)}
.btn-grad{display:inline-block;background:var(--tt-grad);color:#fff;font-family:var(--f-display);font-weight:600;font-size:.85rem;line-height:1;white-space:nowrap;padding:.68rem 1.05rem;border-radius:9px;border:0;cursor:pointer;margin-left:10px;transition:opacity .2s,transform .2s}
.btn-grad:hover{opacity:.92;transform:translateY(-1px);color:#fff}
.nav a.btn-grad:hover{background:var(--tt-grad)}
.nav-toggle{display:none;margin-left:auto;background:none;border:1px solid var(--tt-line);border-radius:9px;padding:.45rem .68rem;font-size:1rem;line-height:1;cursor:pointer;color:var(--tt-ink)}

/* ---------- Hero / featured ---------- */
/* ---------- Hero ---------- */
.hero{padding:40px 0 34px}
.hero-top{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:52px;align-items:end}
.hero-lede{font-family:var(--f-display);font-weight:800;letter-spacing:-.032em;line-height:1.08;font-size:clamp(1.7rem,3.1vw,2.35rem);color:var(--tt-ink);max-width:17ch;margin-top:10px}
.hero-lede em{font-style:normal;background:var(--tt-grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
.hero-sub{margin:0 0 18px;font-size:.97rem;color:var(--tt-slate);max-width:48ch}
.hero-track{display:flex;gap:8px;flex-wrap:wrap;max-width:440px}
.hero-track input{flex:1;min-width:190px;font-family:var(--f-mono);font-size:.9rem;letter-spacing:.05em;padding:.72rem .9rem;border:1px solid var(--tt-line);border-radius:10px;background:#fff;color:var(--tt-ink);transition:border-color .18s,box-shadow .18s}
.hero-track input::placeholder{color:var(--tt-muted)}
.hero-track input:focus{border-color:var(--tt-emerald);outline:none;box-shadow:0 0 0 3px rgba(16,185,129,.12)}
.hero-note{margin-top:10px;font-family:var(--f-mono);font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--tt-muted)}

/* ---------- Featured slider ---------- */
.fs{padding-bottom:8px}
.fs-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:16px;min-width:0;flex-wrap:nowrap}
.fs-head .eyebrow{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fs-count{white-space:nowrap;flex-shrink:0}
/* Scroll-snap carousel. An earlier transform based version collapsed to zero
   height in Chrome on Android, so the track is a real scroll container now:
   height comes from content, swipe is native, and no JS is needed to move. */
.fs-viewport{border-radius:18px;border:1px solid var(--tt-line);background:var(--tt-bg);overflow:hidden}
.fs-track{display:flex;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch;scrollbar-width:none;scroll-behavior:smooth;
  overscroll-behavior-x:contain;touch-action:pan-x pan-y}
.fs-track::-webkit-scrollbar{display:none}
.fs-slide{flex:0 0 100%;width:100%;scroll-snap-align:start;scroll-snap-stop:always;
  display:grid;grid-template-columns:minmax(0,1.02fr) minmax(0,1fr);gap:0;align-items:stretch}
.fs-media{position:relative;overflow:hidden;background:#fff;border-right:1px solid var(--tt-line);min-width:0}
.fs-media img{display:block;width:100%;height:auto;aspect-ratio:16/11;object-fit:cover}
.fs-body{padding:38px 40px;display:flex;flex-direction:column;justify-content:center;background:#fff;min-width:0}
.fs-body h2{font-family:var(--f-display);font-weight:800;letter-spacing:-.03em;line-height:1.16;font-size:clamp(1.3rem,2.2vw,1.85rem);color:var(--tt-ink);margin:12px 0 12px}
.fs-body h2 a:hover{color:var(--tt-ocean)}
.fs-body p{color:var(--tt-slate);font-size:.97rem}
.fs-read{margin-top:20px;font-family:var(--f-display);font-weight:600;font-size:.9rem;color:var(--tt-ocean);display:inline-flex;align-items:center;gap:7px;align-self:flex-start}
.fs-read:hover{gap:11px}
.fs-read span{transition:transform .2s}
.fs-controls{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:16px}
.fs-dots{display:flex;gap:7px}
.fs-dot{width:26px;height:4px;border-radius:99px;border:0;padding:0;background:var(--tt-line);cursor:pointer;transition:background .25s,width .25s}
.fs-dot[aria-selected="true"]{background:var(--tt-grad);width:44px}
.fs-arrows{display:flex;gap:8px}
.fs-arrow{width:38px;height:38px;border-radius:10px;border:1px solid var(--tt-line);background:#fff;color:var(--tt-slate);font-size:1rem;line-height:1;cursor:pointer;transition:.18s}
.fs-arrow:hover{border-color:var(--tt-ocean);color:var(--tt-ink)}
.fs-count{font-family:var(--f-mono);font-size:.68rem;letter-spacing:.08em;color:var(--tt-muted)}

.featured{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:36px;align-items:center;margin-top:40px;padding-top:36px;border-top:1px solid var(--tt-line)}
.featured .eyebrow{margin-bottom:2px}
.thumb{display:block;border-radius:16px;overflow:hidden;aspect-ratio:16/10;border:1px solid var(--tt-line);background:var(--tt-bg);transition:border-color .25s}
.thumb img{width:100%;height:100%;object-fit:cover;transition:transform .45s ease}
.featured h2{font-family:var(--f-display);font-weight:800;letter-spacing:-.03em;line-height:1.15;font-size:clamp(1.5rem,2.8vw,2.05rem);color:var(--tt-ink);margin:14px 0 12px}
.featured p{color:var(--tt-slate)}
.meta{font-family:var(--f-mono);font-size:.71rem;letter-spacing:.06em;color:var(--tt-muted);margin-top:16px;text-transform:uppercase}
.meta span+span:before{content:"\00b7";margin:0 8px}

/* ---------- Category chips ---------- */
.chips{display:flex;gap:8px;flex-wrap:wrap;padding:32px 0 0}
.chip{font-family:var(--f-mono);font-size:.71rem;letter-spacing:.06em;text-transform:uppercase;padding:.42rem .8rem;border:1px solid var(--tt-line);border-radius:999px;color:var(--tt-slate);background:#fff;transition:.2s;cursor:pointer}
.chip:hover{border-color:var(--tt-ocean);color:var(--tt-ink)}
.chip.on{background:var(--tt-ink);border-color:var(--tt-ink);color:#fff}

/* ---------- Post grid ---------- */
.section{padding-top:52px;padding-bottom:52px}
.section-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:28px}
.section-head h2{font-family:var(--f-display);font-weight:700;font-size:1.3rem;letter-spacing:-.02em;color:var(--tt-ink)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:38px 32px}
.card{display:flex;flex-direction:column}
.card .thumb{aspect-ratio:16/10;border-radius:13px;margin-bottom:16px}
.card:hover .thumb{border-color:var(--tt-ocean)}
.card:hover .thumb img{transform:scale(1.035)}
.card h3{font-family:var(--f-display);font-weight:700;font-size:1.12rem;line-height:1.35;letter-spacing:-.02em;color:var(--tt-ink);margin:10px 0 8px}
.card:hover h3{color:var(--tt-ocean)}
.card p{font-size:.92rem;color:var(--tt-slate)}

/* ---------- CTA band ---------- */
.cta-band{background:var(--tt-ink);border-radius:20px;padding:56px 44px;color:#fff;position:relative;overflow:hidden}
.cta-band:after{content:"";position:absolute;right:-90px;bottom:-140px;width:360px;height:360px;border-radius:50%;background:var(--tt-grad);filter:blur(90px);opacity:.4}
.cta-band h2{font-family:var(--f-display);font-weight:800;font-size:clamp(1.5rem,3vw,2rem);letter-spacing:-.03em;max-width:19ch;position:relative}
.cta-band p{color:#94a3b8;margin-top:12px;max-width:50ch;position:relative}
.tracker{display:flex;gap:10px;margin-top:26px;max-width:520px;position:relative;flex-wrap:wrap}
.tracker input{flex:1;min-width:220px;font-family:var(--f-mono);font-size:.95rem;letter-spacing:.05em;padding:.85rem 1rem;border-radius:10px;border:1px solid #334155;background:#1e293b;color:#fff}
.tracker input::placeholder{color:#64748b}
.tracker input:focus{border-color:var(--tt-emerald);outline:none}

/* ---------- Footer ---------- */
.site-foot{border-top:1px solid var(--tt-line);margin-top:72px;padding:44px 0;font-size:.88rem;color:var(--tt-slate)}
.foot-in{display:flex;gap:32px;flex-wrap:wrap;justify-content:space-between;align-items:center}
.foot-links{display:flex;gap:20px;flex-wrap:wrap}
.foot-links a:hover{color:var(--tt-ink)}

/* ---------- Voyage rail (signature) ---------- */
.voyage{position:fixed;top:72px;left:0;right:0;height:2px;background:var(--tt-line);z-index:49}
.voyage-fill{height:100%;width:0;background:var(--tt-grad);transition:width .12s linear}
.voyage-mark{position:fixed;top:82px;right:24px;z-index:49;font-family:var(--f-mono);font-size:.62rem;letter-spacing:.11em;text-transform:uppercase;color:var(--tt-slate);background:rgba(255,255,255,.92);padding:3px 9px;border:1px solid var(--tt-line);border-radius:7px}

/* ---------- Article ---------- */
.crumb{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--tt-muted);padding:34px 0 0}
.crumb a:hover{color:var(--tt-ocean)}
.crumb i{font-style:normal;margin:0 8px}
.post-head{padding:22px 0 30px}
.post-head h1{font-family:var(--f-display);font-weight:800;letter-spacing:-.035em;line-height:1.12;font-size:clamp(1.9rem,4.4vw,2.85rem);color:var(--tt-ink);margin:14px 0 18px}
.deck{font-size:1.12rem;color:var(--tt-slate);line-height:1.6}
.byline{display:flex;align-items:center;gap:12px;margin-top:28px;padding-top:22px;border-top:1px solid var(--tt-line)}
.avatar{width:38px;height:38px;border-radius:50%;background:var(--tt-grad);flex-shrink:0}
.byline b{font-family:var(--f-display);font-size:.92rem;color:var(--tt-ink);display:block;font-weight:600}
.byline small{font-family:var(--f-mono);font-size:.67rem;letter-spacing:.06em;color:var(--tt-muted);text-transform:uppercase}

.quick-take{background:var(--tt-bg);border:1px solid var(--tt-line);border-left:3px solid var(--tt-emerald);border-radius:0 12px 12px 0;padding:22px 24px;margin:36px 0}
.quick-take .eyebrow{margin-bottom:10px}
.quick-take ul{margin:0;padding-left:18px}
.quick-take li{margin:6px 0;font-size:.95rem}

.toc{border:1px solid var(--tt-line);border-radius:12px;padding:20px 24px;margin:36px 0}
.toc ol{margin:10px 0 0;padding-left:20px;font-size:.93rem}
.toc li{margin:6px 0}
.toc a:hover{color:var(--tt-ocean)}

.prose{font-size:1.06rem;line-height:1.8}
.prose h2{font-family:var(--f-display);font-weight:700;font-size:1.5rem;letter-spacing:-.025em;color:var(--tt-ink);margin:52px 0 16px;scroll-margin-top:114px}
.prose h3{font-family:var(--f-display);font-weight:700;font-size:1.14rem;color:var(--tt-ink);margin:34px 0 12px}
.prose p{margin:18px 0}
.prose ul,.prose ol{margin:18px 0;padding-left:22px}
.prose li{margin:8px 0}
.prose a{color:var(--tt-ocean);border-bottom:1px solid rgba(14,165,233,.3)}
.prose a:hover{border-bottom-color:var(--tt-ocean)}
.prose strong{color:var(--tt-ink);font-weight:600}
.prose pre{background:var(--tt-bg);border:1px solid var(--tt-line);border-radius:10px;
  padding:16px 18px;overflow-x:auto;-webkit-overflow-scrolling:touch;margin:26px 0}
.prose pre code{background:none;border:0;padding:0;font-size:.84rem;line-height:1.7;white-space:pre}
.prose code{font-family:var(--f-mono);font-size:.87em;background:var(--tt-bg);border:1px solid var(--tt-line);border-radius:5px;padding:.12em .42em;color:var(--tt-ink)}
.prose figure{margin:36px 0}
.prose figure img{border-radius:13px;border:1px solid var(--tt-line)}
.prose figcaption{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.05em;color:var(--tt-muted);margin-top:10px;text-transform:uppercase}
.prose blockquote{border-left:3px solid var(--tt-ocean);padding-left:20px;margin:32px 0;font-size:1.1rem;color:var(--tt-ink-2)}
.prose table{width:100%;border-collapse:collapse;margin:32px 0;font-size:.93rem}
/* Tables are the most common overflow source on phones. Wrap each one in its
   own scroll area rather than letting it push the whole page sideways. */
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:32px 0;
  border-radius:10px;scrollbar-width:thin}
.table-scroll table{margin:0;min-width:460px}
.prose th{font-family:var(--f-display);font-weight:600;text-align:left;color:var(--tt-ink);background:var(--tt-bg);padding:.7rem .9rem;border:1px solid var(--tt-line)}
.prose td{padding:.7rem .9rem;border:1px solid var(--tt-line);vertical-align:top}

.inline-cta{background:var(--tt-bg);border:1px solid var(--tt-line);border-radius:14px;padding:26px;margin:44px 0}
.inline-cta h4{font-family:var(--f-display);font-weight:700;font-size:1.05rem;color:var(--tt-ink);margin-bottom:6px}
.inline-cta p{font-size:.92rem;color:var(--tt-slate);margin:0 0 16px}
.inline-cta form{display:flex;gap:9px;flex-wrap:wrap}
.inline-cta input{flex:1;min-width:200px;font-family:var(--f-mono);letter-spacing:.05em;font-size:.92rem;padding:.72rem .9rem;border:1px solid var(--tt-line);border-radius:9px;background:#fff;color:var(--tt-ink)}
.inline-cta input:focus{border-color:var(--tt-emerald);outline:none}

.faq details{border-bottom:1px solid var(--tt-line);padding:16px 0}
.faq summary{font-family:var(--f-display);font-weight:600;font-size:1rem;color:var(--tt-ink);cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:16px}
.faq summary::-webkit-details-marker{display:none}
.faq summary:after{content:"+";color:var(--tt-muted);font-weight:400}
.faq details[open] summary:after{content:"\2212"}
.faq p{margin-top:10px;font-size:.95rem;color:var(--tt-slate)}

.post-foot{border-top:1px solid var(--tt-line);margin-top:56px;padding-top:32px}
.post-foot h2{font-family:var(--f-display);font-weight:700;font-size:1.3rem;color:var(--tt-ink);margin-bottom:8px}

.pager{display:flex;justify-content:center;gap:8px;margin-top:44px}
.pager a,.pager span{font-family:var(--f-mono);font-size:.78rem;padding:.5rem .85rem;border:1px solid var(--tt-line);border-radius:9px;color:var(--tt-slate)}
.pager .on{background:var(--tt-ink);border-color:var(--tt-ink);color:#fff}

/* ---------- Responsive ---------- */
@media(max-width:1080px){
  .nav{display:none}
  .nav-toggle{display:block}
  .nav.open{display:flex;position:absolute;top:72px;left:0;right:0;background:#fff;border-bottom:1px solid var(--tt-line);flex-direction:column;align-items:stretch;padding:14px 24px 20px;gap:2px;box-shadow:0 12px 24px -12px rgba(15,23,42,.12)}
  .nav.open a{padding:.7rem .6rem;font-size:.95rem}
  .nav.open .btn-grad{margin:10px 0 0;text-align:center;padding:.8rem 1rem}
}
@media(max-width:980px){
  .fs-slide{grid-template-columns:1fr;grid-template-rows:auto auto}
  .fs-media{border-right:0;border-bottom:1px solid var(--tt-line)}
  .fs-media img{aspect-ratio:2/1}
  .fs-body{padding:22px 20px 26px}
  .fs-body h2{font-size:1.2rem;margin:10px 0 10px}
  .fs-body p{font-size:.93rem}
  .fs-body .meta{margin-top:12px}
  .fs-read{margin-top:16px}
  .fs-head{margin-bottom:12px}
}
@media(max-width:880px){
  /* iOS zooms the page when a focused input is under 16px. */
  .hero-track input,.tracker input,.inline-cta input{font-size:16px}
  .hero{padding:30px 0 26px}
  .hero-top{grid-template-columns:1fr;gap:20px;align-items:start}
  .featured{grid-template-columns:1fr;gap:22px;margin-top:32px;padding-top:30px}
  .cta-band{padding:34px 22px;border-radius:16px}
  .cta-band h2{font-size:1.4rem}
  .brand-tag{display:none}
  .voyage-mark{display:none}
  .head-in{gap:12px}
  .wrap{padding:0 18px}
  .chip{padding:.5rem .85rem}
  .fs-controls{margin-top:14px}
  .fs-arrow{width:44px;height:44px;font-size:1.1rem}
  .fs-dot{height:6px;width:22px}
  .fs-dot[aria-selected="true"]{width:36px}
  .grid{gap:30px 20px}
  .section{padding-top:38px;padding-bottom:38px}
  .quick-take,.toc,.inline-cta{padding:18px 16px}
  .prose{font-size:1.02rem}
  .post-head h1{letter-spacing:-.03em}
  .hero-track{max-width:none}
  .hero-track input{min-width:0}
  .tracker input{min-width:0}
  .inline-cta input{min-width:0}
}
@media(max-width:400px){
  .hero-track button,.tracker button,.inline-cta button{width:100%}
}
@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
  .fs-track{scroll-behavior:auto!important}
  html{scroll-behavior:auto}
}
