
:root{
  --bg:#0e0f12;
  --card:#151821;
  --ink:#e7eaf2;
  --muted:#a9b0c3;
  --accent:#76e0a9;
  --accent-2:#a1c4ff;
  --ring: 0 0 0 3px rgba(118,224,169,.25);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font:16px/1.6 Inter, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif}
a{color:var(--accent)}
a:hover{color:#c4ffd9}
.container{max-width:1100px;margin:0 auto;padding:24px}
.header{position:sticky;top:0;z-index:40;background:rgba(14,15,18,.75);backdrop-filter:saturate(140%) blur(12px);border-bottom:1px solid #2a2e3a}
.nav{display:flex;align-items:center;gap:16px;padding:10px 16px}
.nav .brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink)}
.nav .spacer{flex:1}
.nav a{padding:8px 10px;border-radius:10px;text-decoration:none;color:var(--ink)}
.nav a:hover{background:#1f2431}
.btn{display:inline-block;padding:10px 14px;border-radius:12px;background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#0b0d12;text-decoration:none;font-weight:700;box-shadow:0 10px 20px rgba(118,224,169,.25)}
.btn:focus{outline:none;box-shadow:var(--ring)}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px}
.card{background:linear-gradient(180deg,#181b26,#12141c);border:1px solid #262a37;border-radius:16px;overflow:hidden}
.card .p{padding:16px}
.card h3{margin:0 0 8px}
.hero{display:grid;grid-template-columns:1.2fr 1fr;gap:28px;align-items:center;padding:36px 0}
.hero h1{font-size:44px;line-height:1.1;margin:0 0 12px}
.hero p.lead{color:var(--muted);font-size:18px;margin:0 0 18px}
.badge{display:inline-flex;align-items:center;gap:8px;background:#1a1f2b;color:#b9c2da;border:1px solid #2b3141;padding:6px 10px;border-radius:999px;font-size:12px}
.kbd{display:inline-block;border:1px solid #2b3141;border-bottom-width:3px;background:#171b26;border-radius:8px;padding:2px 6px;font-weight:700}
.footer{border-top:1px solid #262a37;margin-top:40px;padding:24px 0;color:#98a1b8}
figure{margin:16px 0;background:#111521;border:1px solid #22273a;border-radius:14px;overflow:hidden}
figure img, figure video{display:block;width:100%;height:auto}
figcaption{padding:10px 12px;color:#a5aec6;font-size:13px}
.step{background:#121624;border:1px solid #252a3a;border-radius:14px;padding:16px;margin:14px 0}
.step h4{margin:0 0 8px}
.steps{counter-reset: step}
.step::before{counter-increment: step;content:"Step " counter(step) " — ";color:#8eb2ff;font-weight:700}
.toc{background:#101421;border:1px solid #252a38;border-radius:12px;padding:12px;margin:16px 0}
.notice{background:#0f1320;border:1px dashed #2b3350;border-radius:12px;padding:12px;color:#9fb4e1}
.code{font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;background:#0a0d16;border:1px solid #20263b;border-radius:10px;padding:10px}
.gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}
small.caption{color:#97a3bf}
.ad{display:block;margin:18px auto;min-height:90px;border:1px dashed #2b3141;border-radius:12px;padding:8px;text-align:center;color:#8291b1}
/* table of contents on tutorials */
.tutorial-grid{display:grid;grid-template-columns:260px 1fr;gap:24px}
@media(max-width:920px){.tutorial-grid{grid-template-columns:1fr} .hero{grid-template-columns:1fr}}
blockquote{margin:12px 0;padding:12px 14px;background:#0f1320;border-left:4px solid #7ad7a0;border-radius:0 12px 12px 0}
kbd.k{padding:2px 6px;border-radius:6px;background:#1a1f2b;border:1px solid #2b3141}
ul.inline{display:flex;flex-wrap:wrap;gap:10px;list-style:none;padding:0;margin:0}
li.tag{background:#111521;border:1px solid #21283b;color:#a9b4cf;padding:6px 10px;border-radius:999px;font-size:12px}

.ad--leaderboard{display:none;margin:12px 0;border:1px dashed #2b3141;border-radius:12px;padding:6px;text-align:center}
@media(min-width:1024px){.ad--leaderboard{display:block}}
.ad--insteps{margin:16px 0 6px}


/* Sticky sidebar + related tutorials */
.sticky-side{position:sticky;top:84px;display:block}
.related{margin-top:18px;padding:12px;border:1px solid #262a37;border-radius:12px;background:#121520}
.related h4{margin:0 0 8px}
.related ul{margin:0;padding-left:18px}
.related li{margin:6px 0}
@media(max-width:920px){.sticky-side{position:static}}


/* --- Simple lightbox --- */
.lb-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.85);display:none;align-items:center;justify-content:center;z-index:1000}
.lb-backdrop.open{display:flex}
.lb-img{max-width:92vw;max-height:92vh;box-shadow:0 10px 40px rgba(0,0,0,.6);border-radius:12px}
.lb-close{position:fixed;top:14px;right:18px;color:#fff;font:700 20px/1 system-ui;cursor:pointer}
.lb-caption{position:fixed;left:0;right:0;bottom:16px;color:#cfd7ff;text-align:center;padding:0 16px;font-size:14px}
a.lb{display:block}

/* CLS-safe ad slots */
.ad-sizer{width:100%;min-height:280px;display:block;position:relative}
@media(min-width:768px){.ad-sizer{min-height:250px}}
@media(min-width:1024px){.ad-sizer{min-height:280px}}
.ad-sizer > .adsbygoogle{position:absolute;inset:0}
