@font-face{font-family:Plex;src:url(/static/fonts/plex-ar-400.woff2) format("woff2");font-weight:400;font-display:swap;unicode-range:U+0600-06FF,U+0750-077F,U+08A0-08FF,U+FB50-FDFF,U+FE70-FEFF,U+200C-200E}
@font-face{font-family:Plex;src:url(/static/fonts/plex-ar-500.woff2) format("woff2");font-weight:500;font-display:swap;unicode-range:U+0600-06FF,U+0750-077F,U+08A0-08FF,U+FB50-FDFF,U+FE70-FEFF,U+200C-200E}
@font-face{font-family:Plex;src:url(/static/fonts/plex-ar-600.woff2) format("woff2");font-weight:600;font-display:swap;unicode-range:U+0600-06FF,U+0750-077F,U+08A0-08FF,U+FB50-FDFF,U+FE70-FEFF,U+200C-200E}
@font-face{font-family:Plex;src:url(/static/fonts/plex-ar-700.woff2) format("woff2");font-weight:700;font-display:swap;unicode-range:U+0600-06FF,U+0750-077F,U+08A0-08FF,U+FB50-FDFF,U+FE70-FEFF,U+200C-200E}
@font-face{font-family:Plex;src:url(/static/fonts/plex-lat-400.woff2) format("woff2");font-weight:400 500;font-display:swap;unicode-range:U+0000-00FF,U+2000-206F}
@font-face{font-family:Plex;src:url(/static/fonts/plex-lat-600.woff2) format("woff2");font-weight:600;font-display:swap;unicode-range:U+0000-00FF,U+2000-206F}
@font-face{font-family:Plex;src:url(/static/fonts/plex-lat-700.woff2) format("woff2");font-weight:700;font-display:swap;unicode-range:U+0000-00FF,U+2000-206F}

:root{--brand:#1D6FE8;--brand-2:#0B4FB8;--brand-soft:#E8F1FF;--cyan:#12B5FF;--accent:#F5A524;--accent-soft:#FEF3DC;--ink:#0A1530;--ink-2:#334155;--muted:#64748B;--bg:#F5F8FD;--card:#FFFFFF;--line:#E4E7EB;--line-2:#EEF0F2;
--shadow:0 1px 2px rgba(15,23,42,.04),0 4px 16px rgba(15,23,42,.06);--shadow-lg:0 10px 40px rgba(15,23,42,.12);--r:16px;--r-sm:10px;--max:1200px;--read:720px;
--code-bg:#0A1530;--code-ink:#E2E8F0;--tip:#1D6FE8;--warn:#B45309;--danger:#B91C1C;--info:#1D4ED8;color-scheme:light}
html[data-theme=dark]{--brand:#4C9BFF;--brand-2:#7DB6FF;--brand-soft:#0F2147;--cyan:#22C3FF;--accent:#FBBF24;--accent-soft:#3A2C0C;--ink:#E6EAF0;--ink-2:#C2CAD6;--muted:#93A0B4;--bg:#060D1F;--card:#0D1830;--line:#1C2A47;--line-2:#14213D;
--shadow:0 1px 2px rgba(0,0,0,.3),0 4px 16px rgba(0,0,0,.25);--code-bg:#040914;--tip:#4C9BFF;--warn:#FBBF24;--danger:#F87171;--info:#93C5FD;color-scheme:dark}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:84px}
body{margin:0;font-family:Plex,"Segoe UI",Tahoma,system-ui,sans-serif;font-size:17px;line-height:1.85;color:var(--ink);background:var(--bg);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}
a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:4px}
img,svg{max-width:100%;height:auto}
h1,h2,h3,h4{line-height:1.45;margin:0 0 .6em;font-weight:700;color:var(--ink)}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:6px}
.ic{flex:none;vertical-align:middle}
.wrap{max-width:var(--max);margin:0 auto;padding:0 20px}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;inset-inline-start:12px;top:-60px;background:var(--ink);color:var(--bg);padding:8px 14px;border-radius:8px;z-index:100}.skip:focus{top:12px}

/* header */
.top{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--card) 82%,transparent);backdrop-filter:saturate(1.8) blur(16px);-webkit-backdrop-filter:saturate(1.8) blur(16px);border-bottom:1px solid var(--line);transition:box-shadow .2s}
.top.scrolled{box-shadow:0 6px 24px rgba(15,23,42,.07)}
.top-in{display:flex;align-items:center;gap:10px;height:70px}
.logo{display:flex;align-items:center;color:var(--ink);white-space:nowrap;flex:none}.logo:hover{text-decoration:none}
.nav{display:flex;align-items:center;gap:2px;margin-inline-start:22px;flex:1;min-width:0}
.nav>a,.dd-btn{display:inline-flex;align-items:center;gap:6px;padding:9px 12px;border-radius:11px;color:var(--ink-2);font:inherit;font-weight:600;font-size:14.5px;white-space:nowrap;background:none;border:0;cursor:pointer;line-height:1.4}
.nav>a:hover,.dd-btn:hover,.dd.open .dd-btn,.nav>a[aria-current],.dd-btn.cur{background:var(--brand-soft);color:var(--brand);text-decoration:none}
.dd{position:relative}
.dd .chev{transition:transform .2s;opacity:.7}.dd.open .chev{transform:rotate(180deg)}
.dd-panel{position:absolute;top:calc(100% + 10px);inset-inline-start:0;background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow-lg);padding:10px;opacity:0;visibility:hidden;transform:translateY(6px);transition:.18s ease;z-index:45}
.dd-panel::before{content:"";position:absolute;inset:-12px 0 auto;height:12px}
.dd.open .dd-panel{opacity:1;visibility:visible;transform:none}
@media (hover:hover){.dd:hover .dd-panel{opacity:1;visibility:visible;transform:none}.dd:hover .chev{transform:rotate(180deg)}}
.mega{width:min(560px,90vw)}
.mega-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px}
.mega-i,.dd-panel.list a{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;color:var(--ink)}
.mega-i:hover,.dd-panel.list a:hover,.mega-all:hover{background:var(--bg);text-decoration:none}
.mega-i .ico,.dd-panel.list .ico{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;flex:none;background:color-mix(in srgb,var(--c,var(--brand)) 13%,transparent);color:var(--c,var(--brand))}
.mega-i b,.dd-panel.list b{display:block;font-size:15px;line-height:1.4}.mega-i small,.dd-panel.list small{display:block;color:var(--muted);font-size:12.5px;line-height:1.5;font-weight:500}
.mega-all{display:flex;align-items:center;justify-content:space-between;margin-top:6px;padding:11px 14px;border-top:1px solid var(--line);color:var(--brand);font-weight:600;font-size:14px;border-radius:0 0 10px 10px}
.dd-panel.list{width:min(580px,90vw);display:grid;grid-template-columns:1fr 1fr;gap:2px}
.tools{display:flex;gap:6px;margin-inline-start:auto;align-items:center}
.sbtn{display:inline-flex;align-items:center;gap:8px;height:42px;padding:0 10px 0 14px;border-radius:12px;border:1px solid var(--line);background:var(--bg);color:var(--muted);font:inherit;font-size:14px;cursor:pointer;min-width:210px}
.sbtn:hover{border-color:var(--brand);color:var(--ink)}.sbtn span{flex:1;text-align:start}
.sbtn kbd{font:600 12px/1 Plex,monospace;border:1px solid var(--line);border-radius:6px;padding:4px 7px;background:var(--card);color:var(--muted)}
.ibtn{display:inline-grid;place-items:center;width:42px;height:42px;border-radius:12px;border:1px solid var(--line);background:var(--card);color:var(--ink-2);cursor:pointer}
.ibtn:hover{color:var(--brand);border-color:var(--brand)}
.menu-btn,.s-only{display:none}
html[data-theme=dark] .i-moon,html:not([data-theme=dark]) .i-sun{display:none}

@media (max-width:900px){.nav,.sbtn{display:none}.menu-btn,.s-only{display:inline-grid}}

/* mobile drawer */
.drawer{position:fixed;inset:0;z-index:60;visibility:hidden}
.drawer.open{visibility:visible}
.drawer .shade{position:absolute;inset:0;background:rgba(2,6,23,.5);opacity:0;transition:opacity .25s}
.drawer.open .shade{opacity:1}
.drawer .panel{position:absolute;top:0;bottom:0;inset-inline-start:0;width:min(400px,92vw);background:var(--bg);overflow:auto;overscroll-behavior:contain;box-shadow:var(--shadow-lg);transform:translateX(100%);transition:transform .28s cubic-bezier(.2,.8,.2,1);display:flex;flex-direction:column}
.drawer.open .panel{transform:none}
.d-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:2}
.d-search{display:flex;align-items:center;gap:8px;margin:14px 16px 4px;padding:0 14px;height:48px;border-radius:14px;background:var(--card);border:1px solid var(--line);color:var(--muted)}
.d-search input{flex:1;border:0;background:none;font:inherit;font-size:16px;color:var(--ink);outline:none;min-width:0}
.d-sec{padding:14px 16px 4px}
.d-sec h2,.d-sec h3{font-size:12.5px;letter-spacing:.3px;color:var(--muted);font-weight:700;margin:0 4px 10px}
.d-cats{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.d-cats a{display:flex;flex-direction:column;gap:6px;padding:12px;border-radius:16px;background:var(--card);border:1px solid var(--line);color:var(--ink)}
.d-cats a:hover,.d-cats a[aria-current]{border-color:var(--c);text-decoration:none}
.d-cats .ico{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:color-mix(in srgb,var(--c) 14%,transparent);color:var(--c)}
.d-cats b{font-size:14.5px;line-height:1.35}.d-cats small{color:var(--muted);font-size:12px;line-height:1}
.d-list{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden}
.d-list a{display:flex;align-items:center;gap:12px;padding:11px 12px;color:var(--ink);border-bottom:1px solid var(--line-2)}
.d-list a:last-child{border-bottom:0}.d-list a:hover{background:var(--brand-soft);text-decoration:none}
.d-list .ico{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:var(--brand-soft);color:var(--brand);flex:none}
.d-list b{display:block;font-size:14.5px;line-height:1.4}.d-list small{display:block;color:var(--muted);font-size:12px;line-height:1.5}
.d-list span:nth-child(2){flex:1;min-width:0}.d-list .go{color:var(--muted)}
.d-foot{margin-top:auto;padding:18px 16px 26px;display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;font-size:14px}
.d-foot a{color:var(--muted)}.d-foot .btn{margin-inline-start:auto}

/* bottom bar (phones) */
.bnav{display:none}
@media (max-width:760px){
  .bnav{display:flex;position:fixed;bottom:0;inset-inline:0;z-index:39;background:color-mix(in srgb,var(--card) 92%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line);padding:6px 6px calc(6px + env(safe-area-inset-bottom))}
  .bnav a,.bnav button{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:5px 0;border:0;background:none;color:var(--muted);font:inherit;font-size:11.5px;font-weight:600;cursor:pointer;border-radius:10px}
  .bnav a:hover{text-decoration:none}.bnav [aria-current]{color:var(--brand)}
  body{padding-bottom:70px}.cookie{bottom:78px!important}
}

/* search overlay */
.sbox{position:fixed;inset:0;z-index:70;display:none;background:rgba(2,6,23,.5);padding:10vh 16px 16px}
.sbox.open{display:block;animation:fade .15s}
.sbox form{max-width:680px;margin:0 auto;background:var(--card);border-radius:18px;box-shadow:var(--shadow-lg);overflow:hidden}
.sbox .row{display:flex;align-items:center;gap:10px;padding:8px 16px;border-bottom:1px solid var(--line)}
.sbox input{flex:1;border:0;background:transparent;font:inherit;font-size:19px;padding:12px 0;color:var(--ink);outline:none}
.sbox ul{list-style:none;margin:0;padding:6px;max-height:55vh;overflow:auto}
.sbox li a{display:flex;justify-content:space-between;gap:12px;padding:11px 12px;border-radius:10px;color:var(--ink)}
.sbox li a:hover,.sbox li a.on{background:var(--brand-soft);text-decoration:none}
.sbox li small{color:var(--muted);white-space:nowrap}
.sbox .hint{padding:12px 18px;color:var(--muted);font-size:14px}

/* progress */
.progress{position:fixed;top:0;inset-inline:0;height:3px;z-index:50;pointer-events:none}
.progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--brand),var(--accent));transition:width .1s linear}

/* buttons, chips */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 20px;border-radius:12px;border:1px solid transparent;background:var(--brand);color:#fff;font:inherit;font-weight:600;font-size:15.5px;cursor:pointer;line-height:1.4}
html[data-theme=dark] .btn{color:#041029}
.btn:hover{text-decoration:none;filter:brightness(1.07)}
.btn.ghost{background:transparent;color:var(--ink);border-color:var(--line)}.btn.ghost:hover{border-color:var(--brand);color:var(--brand)}
.btn.accent{background:var(--accent);color:#1C1305}
.btn.sm{padding:7px 13px;font-size:14px;border-radius:10px}
.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border-radius:999px;background:var(--brand-soft);color:var(--brand);font-size:13px;font-weight:600;line-height:1.6}
.chip:hover{text-decoration:none;filter:brightness(.97)}
.chip.os{background:var(--accent-soft);color:var(--warn)}
html[data-theme=dark] .chip.os{color:var(--accent)}
.muted{color:var(--muted)}
.eyebrow{display:inline-flex;align-items:center;gap:8px;color:var(--brand);font-weight:600;font-size:14px;margin-bottom:10px}

/* hero */
.hero{position:relative;overflow:hidden;padding:56px 0 40px}
.hero::before{content:"";position:absolute;inset:-40% -10% auto auto;width:720px;height:720px;background:radial-gradient(closest-side,color-mix(in srgb,var(--brand) 18%,transparent),transparent 70%);pointer-events:none}
.hero::after{content:"";position:absolute;inset:auto auto -50% -10%;width:600px;height:600px;background:radial-gradient(closest-side,color-mix(in srgb,var(--accent) 16%,transparent),transparent 70%);pointer-events:none}
.hero .wrap{position:relative;display:grid;grid-template-columns:1.15fr .85fr;gap:40px;align-items:center}
.hero h1{font-size:clamp(30px,4.4vw,50px);letter-spacing:-.5px;margin-bottom:14px}
.hero h1 em{font-style:normal;background:linear-gradient(90deg,var(--brand),var(--cyan));-webkit-background-clip:text;background-clip:text;color:transparent}
.hero p.lead{font-size:19px;color:var(--ink-2);max-width:560px;margin:0 0 24px}
.hero-search{display:flex;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:7px;box-shadow:var(--shadow);max-width:560px}
.hero-search input{flex:1;border:0;background:transparent;font:inherit;padding:8px 12px;color:var(--ink);outline:none;min-width:0}
.hero-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px;font-size:14px}
.hero-tags span{color:var(--muted)}
.stats{display:flex;gap:26px;margin-top:28px;flex-wrap:wrap}
.stats b{display:block;font-size:26px;color:var(--ink)}.stats span{color:var(--muted);font-size:14px}
.hero-card{background:var(--card);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow-lg);overflow:hidden}
.hero-card .art{aspect-ratio:1200/630;display:block;background:var(--brand-soft)}
.hero-card .art img{display:block;width:100%;height:100%;object-fit:cover}
.hero-card .body{padding:20px 22px 22px}
.hero-card h2{font-size:21px;margin:8px 0}
.hero-card h2 a{color:var(--ink)}
@media (max-width:900px){.hero .wrap{grid-template-columns:1fr}.hero{padding-top:34px}}

/* sections */
.sec{padding:34px 0}
.sec-h{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:20px}
.sec-h h2{font-size:26px;margin:0}
.sec-h p{margin:4px 0 0;color:var(--muted)}
.sec-h a.more{display:inline-flex;align-items:center;gap:6px;font-weight:600;white-space:nowrap}

/* category tiles */
.cats{display:grid;grid-template-columns:repeat(6,1fr);gap:14px}
.cat-tile{display:flex;flex-direction:column;gap:10px;padding:18px;border-radius:var(--r);background:var(--card);border:1px solid var(--line);color:var(--ink);transition:transform .15s,box-shadow .15s,border-color .15s}
.cat-tile:hover{transform:translateY(-3px);box-shadow:var(--shadow);text-decoration:none;border-color:var(--c,var(--brand))}
.cat-tile .ico{display:grid;place-items:center;width:46px;height:46px;border-radius:13px;background:color-mix(in srgb,var(--c,var(--brand)) 14%,transparent);color:var(--c,var(--brand))}
.cat-tile b{font-size:16.5px}.cat-tile span{font-size:13.5px;color:var(--muted)}
@media (max-width:1060px){.cats{grid-template-columns:repeat(3,1fr)}}@media (max-width:560px){.cats{grid-template-columns:repeat(2,1fr)}.cat-tile{padding:14px}}

/* cards */
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.grid.g4{grid-template-columns:repeat(4,1fr)}
@media (max-width:1000px){.grid,.grid.g4{grid-template-columns:repeat(2,1fr)}}@media (max-width:620px){.grid,.grid.g4{grid-template-columns:1fr}}
.card{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;transition:transform .15s,box-shadow .15s}
.card:hover{transform:translateY(-3px);box-shadow:var(--shadow)}
.card .art{display:block;aspect-ratio:1200/630;background:var(--brand-soft);overflow:hidden}
.card .art img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .4s}
.card:hover .art img{transform:scale(1.04)}
.card .body{padding:16px 18px 18px;display:flex;flex-direction:column;gap:8px;flex:1}
.card h3{font-size:18px;margin:0;line-height:1.55}
.card h3 a{color:var(--ink)}
.card p{margin:0;color:var(--muted);font-size:15px;line-height:1.75;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card .meta{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:13px;margin-top:auto;padding-top:6px}
.card .meta span{display:inline-flex;align-items:center;gap:4px}
.row-card{display:flex;gap:14px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line-2)}
.row-card:last-child{border-bottom:0}
.row-card .n{flex:none;width:34px;height:34px;display:grid;place-items:center;border-radius:10px;background:var(--brand-soft);color:var(--brand);font-weight:700}
.row-card a{color:var(--ink);font-weight:600;font-size:15.5px;line-height:1.6}
.row-card small{display:block;color:var(--muted);font-weight:400}

/* split layouts */
.split{display:grid;grid-template-columns:1fr 340px;gap:30px;align-items:start}
@media (max-width:1000px){.split{grid-template-columns:1fr}}
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:20px}
.panel h3{font-size:17px;display:flex;align-items:center;gap:8px}

/* feature strip */
.features{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.feature{position:relative;padding:24px;border-radius:20px;background:var(--card);border:1px solid var(--line);overflow:hidden;color:var(--ink)}
.feature:hover{text-decoration:none;box-shadow:var(--shadow)}
.feature .ico{display:grid;place-items:center;width:52px;height:52px;border-radius:15px;background:var(--brand);color:#fff;margin-bottom:14px}
html[data-theme=dark] .feature .ico{color:#041029}
.feature h3{font-size:19px;margin-bottom:6px}.feature p{margin:0;color:var(--muted);font-size:15px}
.feature .go{display:inline-flex;align-items:center;gap:6px;margin-top:12px;font-weight:600;color:var(--brand)}
@media (max-width:860px){.features{grid-template-columns:1fr}}

.terms{display:flex;flex-wrap:wrap;gap:10px}
.term-pill{display:inline-flex;gap:8px;align-items:baseline;padding:9px 14px;border-radius:12px;background:var(--card);border:1px solid var(--line);color:var(--ink);font-weight:600}
.term-pill small{color:var(--muted);font-weight:500;font-family:Plex,sans-serif}
.term-pill:hover{border-color:var(--brand);text-decoration:none}

/* newsletter */
.news{border-radius:24px;padding:34px;background:radial-gradient(circle at 15% 120%,rgba(18,181,255,.45),transparent 50%),linear-gradient(135deg,#0B4FB8,#0A1530);color:#fff;display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:center;position:relative;overflow:hidden}
html[data-theme=dark] .news{border:1px solid var(--line);background:linear-gradient(135deg,#0E2A66,#081633)}
.news h2{color:#fff;font-size:26px;margin-bottom:6px}.news p{margin:0;opacity:.9}
.news form{display:flex;gap:8px;background:rgba(255,255,255,.14);padding:7px;border-radius:14px}
.news input{flex:1;min-width:0;border:0;border-radius:10px;padding:11px 14px;font:inherit;background:#fff;color:#0F172A}
.news .msg{grid-column:1/-1;margin:0;font-weight:600}
@media (max-width:760px){.news{grid-template-columns:1fr;padding:24px}}

/* breadcrumbs */
.crumbs{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:14px;color:var(--muted);margin:22px 0 10px;padding:0;list-style:none}
.crumbs a{color:var(--muted)}.crumbs li+li::before{content:"‹";margin-inline-end:6px;opacity:.6}

/* page heading */
.ph{padding:10px 0 24px}
.ph h1{font-size:clamp(28px,3.6vw,40px);margin-bottom:8px}
.ph p{color:var(--ink-2);font-size:18px;margin:0;max-width:760px}

/* article */
.post{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:44px;align-items:start}
.post-main{max-width:var(--read);width:100%}
@media (max-width:1060px){.post{grid-template-columns:1fr}.post-side{display:none}}
.post-head h1{font-size:clamp(28px,3.8vw,42px);letter-spacing:-.3px;margin:6px 0 14px;line-height:1.4}
.post-head .lede{font-size:19px;color:var(--ink-2);margin:0 0 18px}
.byline{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;color:var(--muted);font-size:14px;padding:12px 0;border-block:1px solid var(--line)}
.byline .who{display:flex;align-items:center;gap:10px;color:var(--ink);font-weight:600}
.avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--brand);color:#fff;font-weight:700;flex:none}
html[data-theme=dark] .avatar{color:#041029}
.byline span{display:inline-flex;align-items:center;gap:5px}
.post-cover{margin:22px 0;border-radius:20px;overflow:hidden;aspect-ratio:1200/630;background:var(--brand-soft)}
.post-cover img{display:block;width:100%;height:100%;object-fit:cover}
.quick{position:relative;margin:24px 0;padding:18px 20px 18px 20px;border-radius:16px;background:var(--brand-soft);border:1px solid color-mix(in srgb,var(--brand) 25%,transparent)}
.quick strong{display:flex;align-items:center;gap:8px;color:var(--brand);margin-bottom:4px;font-size:15px}
.quick p{margin:0;font-size:17.5px;font-weight:500}
.toc{margin:22px 0;padding:16px 18px;border:1px solid var(--line);border-radius:16px;background:var(--card)}
.toc summary{cursor:pointer;font-weight:700;list-style:none;display:flex;justify-content:space-between;align-items:center}
.toc summary::-webkit-details-marker{display:none}
.toc ol{margin:10px 0 0;padding:0;list-style:none;font-size:15.5px}
.toc li{margin:5px 0;padding-inline-start:14px;position:relative}.toc li::before{content:"";position:absolute;inset-inline-start:0;top:.8em;width:6px;height:6px;border-radius:2px;background:var(--brand);opacity:.55}.toc li.d3{margin-inline-start:16px;font-size:14.5px}.toc li.d3::before{background:var(--muted)}
.toc a{color:var(--ink-2)}.toc a.on{color:var(--brand);font-weight:600}
.side-toc{position:sticky;top:90px;max-height:calc(100vh - 110px);overflow:auto}
.side-toc .toc{margin:0}

.prose{font-size:18px;line-height:2}
.prose>*:first-child{margin-top:0}
.prose h2{font-size:26px;margin:1.8em 0 .6em;padding-top:.2em}
.prose h3{font-size:21px;margin:1.5em 0 .5em}
.prose p{margin:0 0 1.15em}
.prose ul,.prose ol{padding-inline-start:1.4em;margin:0 0 1.2em}
.prose li{margin:.35em 0}.prose li::marker{color:var(--brand);font-weight:700}
.prose strong{color:var(--ink);font-weight:700}
.prose a{text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--brand) 40%,transparent);text-underline-offset:4px}
.prose a.gl{text-decoration:underline dotted;text-decoration-color:var(--brand);color:inherit;cursor:help;position:relative}
.prose code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.86em;background:var(--line-2);padding:2px 6px;border-radius:6px;direction:ltr;unicode-bidi:embed}
.prose blockquote{margin:1.4em 0;padding:4px 18px;border-inline-start:4px solid var(--brand);color:var(--ink-2)}
.prose hr{border:0;height:1px;background:var(--line);margin:2em 0}
.prose kbd{font-family:ui-monospace,Consolas,monospace;font-size:.82em;padding:2px 7px;border:1px solid var(--line);border-bottom-width:3px;border-radius:7px;background:var(--card);direction:ltr;unicode-bidi:embed;white-space:nowrap}
.code{margin:1.3em 0;border-radius:14px;overflow:hidden;background:var(--code-bg);direction:ltr}
.code-bar{display:flex;justify-content:space-between;align-items:center;padding:7px 12px;background:rgba(255,255,255,.06);color:#94A3B8;font-size:13px;font-family:ui-monospace,Consolas,monospace}
.copy-btn{border:1px solid rgba(255,255,255,.2);background:transparent;color:#E2E8F0;border-radius:8px;padding:3px 10px;font:inherit;font-family:Plex,sans-serif;cursor:pointer}
.copy-btn:hover{background:rgba(255,255,255,.1)}
.code pre{margin:0;padding:14px 16px;overflow:auto;color:var(--code-ink);font-size:14.5px;line-height:1.7;text-align:left}
.code pre code{background:none;padding:0;font-size:inherit;color:inherit}
.table-wrap{overflow-x:auto;margin:1.4em 0;border:1px solid var(--line);border-radius:14px;background:var(--card)}
.prose table{width:100%;border-collapse:collapse;font-size:15.5px;line-height:1.7}
.prose th,.prose td{padding:11px 14px;text-align:start;border-bottom:1px solid var(--line-2);vertical-align:top}
.prose th{background:var(--brand-soft);color:var(--ink);font-weight:700;white-space:nowrap}
.prose tr:last-child td{border-bottom:0}
.callout{margin:1.4em 0;padding:14px 18px;border-radius:14px;border:1px solid var(--line);border-inline-start:5px solid var(--tip);background:var(--card)}
.callout p:last-child{margin-bottom:0}
.callout-t{display:block;margin-bottom:2px;color:var(--tip)}
.callout-warning{border-inline-start-color:var(--warn)}.callout-warning .callout-t{color:var(--warn)}
.callout-danger{border-inline-start-color:var(--danger)}.callout-danger .callout-t{color:var(--danger)}
.callout-info,.callout-note{border-inline-start-color:var(--info)}.callout-info .callout-t,.callout-note .callout-t{color:var(--info)}
.fig{margin:1.5em 0}.fig img{border-radius:14px;border:1px solid var(--line)}.fig figcaption,.diagram figcaption{color:var(--muted);font-size:14px;text-align:center;margin-top:8px}
.diagram{margin:1.6em 0;padding:18px;border:1px solid var(--line);border-radius:16px;background:var(--card)}
.diagram svg{display:block;width:100%;height:auto;font-family:Plex,sans-serif}
.dg-box rect{fill:var(--brand-soft);stroke:var(--brand);stroke-width:1.5}.dg-box.alt rect{fill:var(--accent-soft);stroke:var(--accent)}
.dg-t{fill:var(--ink);font-size:16px;font-weight:700}.dg-s{fill:var(--muted);font-size:13px}
.dg-arrow path,.dg-loop{stroke:var(--ink-2);stroke-width:1.8;fill:none}.dg-head{fill:var(--ink-2)}
.dg-tunnel rect{fill:color-mix(in srgb,var(--brand) 22%,transparent);stroke:var(--brand);stroke-dasharray:5 5}
.faq-item{border:1px solid var(--line);border-radius:14px;margin:10px 0;background:var(--card);overflow:hidden}
.faq-item summary{cursor:pointer;padding:14px 18px;font-weight:700;list-style:none;display:flex;justify-content:space-between;gap:12px}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{content:"+";color:var(--brand);font-size:22px;line-height:1}
.faq-item[open] summary::after{content:"−"}
.faq-item>div{padding:0 18px 6px}
.shot-slot{display:flex;flex-direction:column;gap:4px;margin:1.2em 0;padding:16px;border:2px dashed var(--accent);border-radius:14px;background:var(--accent-soft);font-size:15px}
mark.fact{background:#FDE68A;color:#1C1305;padding:0 3px;border-radius:4px}
.tip-pop{position:absolute;z-index:30;max-width:300px;background:var(--ink);color:var(--bg);padding:10px 13px;border-radius:12px;font-size:14px;line-height:1.7;box-shadow:var(--shadow-lg);pointer-events:none}
.tip-pop b{display:block;margin-bottom:2px}

.aff{margin:1.6em 0;padding:16px;border-radius:16px;border:1px solid var(--line);background:var(--card)}
.aff-h{font-weight:700;margin-bottom:10px}
.aff-i{display:grid;grid-template-columns:1fr auto;gap:2px 12px;padding:12px;border-radius:12px;border:1px solid var(--line-2);margin-bottom:8px;color:var(--ink)}
.aff-i:hover{text-decoration:none;border-color:var(--brand)}
.aff-i span{grid-column:1;color:var(--muted);font-size:14px}.aff-i em{grid-row:1/3;grid-column:2;align-self:center;font-style:normal;background:var(--accent);color:#1C1305;padding:6px 12px;border-radius:10px;font-weight:600;font-size:14px}
.aff-d{font-size:12.5px;color:var(--muted);margin:6px 0 0}

.post-foot{margin:30px 0}
.sources{margin:26px 0;padding:16px 18px;border-radius:14px;background:var(--line-2);font-size:15px}
.sources h2{font-size:17px!important;margin:0 0 6px!important}
.sources ol{margin:0;padding-inline-start:20px}
.review{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:14px;color:var(--muted)}
.share{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:18px 0}
.share b{margin-inline-end:4px;font-size:15px}
.share a,.share button{display:inline-flex;align-items:center;gap:6px;padding:8px 13px;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--ink-2);font:inherit;font-size:14px;cursor:pointer}
.share a:hover,.share button:hover{border-color:var(--brand);color:var(--brand);text-decoration:none}
.helpful{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:18px;border-radius:16px;border:1px solid var(--line);background:var(--card);margin:24px 0}
.helpful b{flex:1;min-width:200px}
.helpful .done{color:var(--brand);font-weight:600}
.author-box{display:flex;gap:16px;padding:20px;border-radius:18px;background:var(--card);border:1px solid var(--line);margin:26px 0}
.author-box .avatar{width:58px;height:58px;font-size:22px}
.author-box p{margin:4px 0 0;color:var(--ink-2);font-size:15.5px}
.tags{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}

/* dialog */
dialog{border:0;border-radius:18px;padding:0;max-width:520px;width:calc(100% - 32px);background:var(--card);color:var(--ink);box-shadow:var(--shadow-lg)}
dialog::backdrop{background:rgba(2,6,23,.5)}
dialog form{padding:22px}
dialog h2{font-size:20px}

/* forms */
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.field label{font-weight:600;font-size:15px}
.input,textarea.input,select.input{width:100%;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:12px;padding:11px 14px;font:inherit;font-size:16px}
.input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px color-mix(in srgb,var(--brand) 18%,transparent)}
.alert{padding:12px 16px;border-radius:12px;margin:0 0 16px;font-weight:500}
.alert.ok{background:var(--brand-soft);color:var(--brand)}.alert.err{background:#FEE2E2;color:#991B1B}
html[data-theme=dark] .alert.err{background:#3B1212;color:#FCA5A5}
.hp{position:absolute;inset-inline-start:-9999px}

/* pagination */
.pager{display:flex;gap:6px;justify-content:center;margin:34px 0;flex-wrap:wrap}
.pager a,.pager span{min-width:42px;height:42px;padding:0 12px;display:grid;place-items:center;border-radius:12px;border:1px solid var(--line);background:var(--card);color:var(--ink);font-weight:600}
.pager span.on{background:var(--brand);color:#fff;border-color:var(--brand)}

/* glossary */
.letters{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:22px;position:sticky;top:68px;background:var(--bg);padding:10px 0;z-index:5}
.letters a{width:38px;height:38px;display:grid;place-items:center;border-radius:10px;border:1px solid var(--line);background:var(--card);font-weight:700;color:var(--ink)}
.letters a:hover{border-color:var(--brand);color:var(--brand);text-decoration:none}
.g-group{margin-bottom:26px}.g-group h2{font-size:24px;color:var(--brand);border-bottom:2px solid var(--line);padding-bottom:6px}
.g-list{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
@media (max-width:760px){.g-list{grid-template-columns:1fr}}
.g-item{display:block;padding:14px 16px;border-radius:14px;background:var(--card);border:1px solid var(--line);color:var(--ink)}
.g-item:hover{border-color:var(--brand);text-decoration:none}
.g-item b{font-size:17px}.g-item i{font-style:normal;color:var(--muted);font-family:Plex,sans-serif;margin-inline-start:6px;direction:ltr;unicode-bidi:embed}
.g-item p{margin:4px 0 0;color:var(--muted);font-size:14.5px;line-height:1.7}
.filter{max-width:460px;margin-bottom:18px}

/* errors */
.err-list{display:grid;gap:10px}
.err-row{display:flex;align-items:center;gap:14px;padding:13px 16px;border-radius:14px;background:var(--card);border:1px solid var(--line);color:var(--ink)}
.err-row:hover{border-color:var(--brand);text-decoration:none}
.err-row code{font-family:ui-monospace,Consolas,monospace;background:var(--line-2);padding:3px 8px;border-radius:8px;direction:ltr;font-size:14px;flex:none;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.err-row span{flex:1}.err-row small{color:var(--muted)}
.codebig{display:inline-block;font-family:ui-monospace,Consolas,monospace;font-size:clamp(18px,3vw,26px);background:var(--code-bg);color:#FBBF24;padding:8px 16px;border-radius:12px;direction:ltr;margin-bottom:12px;word-break:break-all}

/* wizard */
.wz{max-width:760px}
.wz-card{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:26px;box-shadow:var(--shadow)}
.wz-q{font-size:22px;margin-bottom:16px}
.wz-opts{display:grid;gap:10px}
.wz-opts button{text-align:start;padding:15px 18px;border-radius:14px;border:1px solid var(--line);background:var(--bg);color:var(--ink);font:inherit;font-weight:500;cursor:pointer;display:flex;justify-content:space-between;align-items:center}
.wz-opts button:hover{border-color:var(--brand);background:var(--brand-soft)}
.wz-steps{counter-reset:s;list-style:none;padding:0;margin:14px 0}
.wz-steps li{counter-increment:s;position:relative;padding:12px 52px 12px 14px;margin:8px 0;border-radius:12px;background:var(--bg)}
.wz-steps li::before{content:counter(s);position:absolute;inset-inline-start:12px;top:12px;width:28px;height:28px;display:grid;place-items:center;border-radius:8px;background:var(--brand);color:#fff;font-weight:700;font-size:14px}
.wz-nav{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap}
.wz-trail{color:var(--muted);font-size:14px;margin-bottom:10px}

/* paths & quiz */
.path-steps{list-style:none;padding:0;margin:0;counter-reset:p}
.path-steps li{counter-increment:p;display:flex;gap:14px;align-items:center;padding:14px;border-radius:14px;background:var(--card);border:1px solid var(--line);margin-bottom:10px}
.path-steps li::before{content:counter(p);flex:none;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--line-2);font-weight:700;color:var(--ink-2)}
.path-steps li.done::before{content:"✓";background:var(--brand);color:#fff}
.path-steps a{color:var(--ink);font-weight:600}
.pbar{height:10px;border-radius:99px;background:var(--line-2);overflow:hidden;margin:10px 0 20px}.pbar i{display:block;height:100%;background:linear-gradient(90deg,var(--brand),var(--accent));width:0;transition:width .3s}
.quiz .q{padding:18px;border-radius:16px;background:var(--card);border:1px solid var(--line);margin-bottom:12px}
.quiz .q b{display:block;margin-bottom:10px}
.quiz label{display:flex;gap:10px;align-items:center;padding:9px 12px;border-radius:10px;cursor:pointer;border:1px solid transparent}
.quiz label:hover{background:var(--bg)}
.quiz .right{border-color:var(--brand);background:var(--brand-soft)}.quiz .wrong{border-color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,transparent)}
.quiz .ex{display:none;font-size:14.5px;color:var(--ink-2);margin-top:8px}.quiz .show .ex{display:block}
.badge-out{display:none;text-align:center;padding:28px;border-radius:22px;border:2px solid var(--accent);background:var(--accent-soft);margin-top:20px}
.badge-out.on{display:block}
.badge-out svg{width:140px;height:140px}

/* footer */
.foot{margin-top:60px;background:var(--card);border-top:1px solid var(--line);padding:44px 0 26px}
.foot .cols{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr 1fr;gap:28px}
.foot h4,.foot h2.fh{font-size:15px;margin:0 0 12px}
.foot ul{list-style:none;padding:0;margin:0;font-size:15px}.foot li{margin:7px 0}.foot li a{color:var(--ink-2)}
.foot .about{color:var(--muted);font-size:15px;max-width:340px}
.foot .bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;margin-top:30px;padding-top:18px;border-top:1px solid var(--line);color:var(--muted);font-size:14px}
.foot .social{display:flex;gap:8px;margin-top:12px}
@media (max-width:860px){.foot .cols{grid-template-columns:1fr 1fr}}

/* cookie */
.cookie{position:fixed;inset-inline:16px;bottom:16px;z-index:80;max-width:560px;margin-inline-start:auto;background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow-lg);padding:18px;display:none}
.cookie.on{display:block;animation:fade .25s}
.cookie p{margin:0 0 12px;font-size:15px}
.cookie .acts{display:flex;gap:8px;flex-wrap:wrap}

.ad{margin:26px 0;min-height:100px;text-align:center}
.ad::before{content:"إعلان";display:block;font-size:11px;color:var(--muted);margin-bottom:4px}
.empty{padding:40px;text-align:center;color:var(--muted);background:var(--card);border:1px dashed var(--line);border-radius:18px}
.notfound{text-align:center;padding:40px 0}
.notfound .big{font-size:90px;font-weight:700;line-height:1;background:linear-gradient(90deg,var(--brand),var(--accent));-webkit-background-clip:text;background-clip:text;color:transparent}
.preview-bar{background:var(--accent);color:#1C1305;padding:10px;text-align:center;font-weight:600}

@media print{
  .top,.foot,.post-side,.share,.helpful,.cookie,.progress,.ad,.aff,.news,.crumbs,.toc,.no-print,.drawer,.sbox{display:none!important}
  body{background:#fff;color:#000;font-size:13pt}.post{display:block}.prose{font-size:12.5pt}.post-cover{display:none}
  a{color:#000;text-decoration:underline}.code{background:#f3f4f6}.code pre{color:#000}
  .faq-item{break-inside:avoid}.faq-item>div{display:block!important}
}
@media (max-width:620px){body{font-size:16px}.prose{font-size:17px;line-height:1.95}.prose h2{font-size:23px}.top-in{height:62px}.brandmark b{font-size:19px}.brandmark .mark{width:36px;height:36px}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}html{scroll-behavior:auto}}

/* brand wordmark (pure SVG + CSS) */
.brandmark{display:inline-flex;align-items:center;gap:10px;color:var(--ink);white-space:nowrap}
.brandmark .mark{width:40px;height:40px;flex:none;border-radius:11px;box-shadow:0 4px 14px rgba(37,99,235,.28)}
.brandmark .txt{display:flex;flex-direction:column;line-height:1.1}
.brandmark b{font-size:21px;font-weight:700;letter-spacing:-.3px}
.brandmark b em{font-style:normal;background:linear-gradient(90deg,#2563EB,#06B6D4);-webkit-background-clip:text;background-clip:text;color:transparent}
html[data-theme=dark] .brandmark b em{background-image:linear-gradient(90deg,#60A5FA,#22D3EE)}
.brandmark small{direction:ltr;text-align:right;font-size:10px;letter-spacing:3.2px;font-weight:600;color:var(--muted);margin-top:3px;font-family:Plex,sans-serif}
.logo:hover .mark{transform:rotate(-4deg)}.brandmark .mark{transition:transform .25s}
html[data-theme=dark] .top{background:color-mix(in srgb,var(--bg) 82%,transparent)}
@media (max-width:620px){.brandmark .mark{width:36px;height:36px}.brandmark b{font-size:18.5px}.brandmark small{font-size:9px;letter-spacing:2.6px}}
html[data-theme=dark] .btn.ghost{color:var(--ink)}
.avatar-mark{background:none!important;padding:0;overflow:hidden}.avatar-mark img{display:block;width:100%;height:100%;border-radius:inherit}

/* tools */
.tools-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.tools-grid.small{grid-template-columns:repeat(3,1fr)}
@media (max-width:1000px){.tools-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:560px){.tools-grid,.tools-grid.small{grid-template-columns:1fr}}
.tool-card{display:flex;flex-direction:column;gap:8px;padding:18px;border-radius:var(--r);background:var(--card);border:1px solid var(--line);color:var(--ink);transition:transform .15s,box-shadow .15s,border-color .15s}
.tool-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--brand);text-decoration:none}
.tool-card .ico{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,var(--brand),var(--cyan));color:#fff}
.tool-card h2{font-size:17px;margin:0;line-height:1.5}.tool-card p{margin:0;color:var(--muted);font-size:14.5px;line-height:1.7}
.tool-card .go{margin-top:auto;display:inline-flex;gap:6px;align-items:center;color:var(--brand);font-weight:600;font-size:14.5px}
.tool-intro{font-size:17px}.tool-intro p{margin:0}
.tool-card-main{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:24px;box-shadow:var(--shadow)}
.tool-card-main h3{font-size:18px;margin:0 0 12px}
.ltr{direction:ltr;text-align:left;unicode-bidi:plaintext}
textarea.input{resize:vertical;line-height:1.8}
.pw-row{display:flex;gap:8px}.pw-row .input{font-size:19px;font-family:ui-monospace,Consolas,monospace}
.meter{height:10px;border-radius:99px;background:var(--line-2);overflow:hidden;margin:14px 0}.meter i{display:block;height:100%;width:0;background:var(--brand);transition:width .25s,background .25s}
.tool-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin:14px 0}
.tool-stats div{background:var(--bg);border:1px solid var(--line-2);border-radius:14px;padding:12px 14px}
.tool-stats b{display:block;font-size:21px;line-height:1.4}.tool-stats span{color:var(--muted);font-size:13.5px}
.tool-notes{list-style:none;padding:0;margin:10px 0}.tool-notes li{padding:9px 12px 9px 12px;border-radius:10px;margin:6px 0;background:var(--bg);border-inline-start:4px solid var(--line);font-size:15px}
.tool-notes li.bad{border-color:#DC2626}.tool-notes li.warn{border-color:#CA8A04}.tool-notes li.ok{border-color:#16A34A}.tool-notes li.info{border-color:var(--brand)}
.tool-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:14px}
.tool-result{margin:14px 0 0;padding:12px 14px;border-radius:12px;background:var(--brand-soft);font-weight:500}
.tool-result.bad{background:#FEE2E2;color:#991B1B}.tool-result.ok{background:#DCFCE7;color:#166534}
html[data-theme=dark] .tool-result.bad{background:#3B1212;color:#FCA5A5}html[data-theme=dark] .tool-result.ok{background:#0F2E1C;color:#86EFAC}
.small-print{font-size:13px;margin:12px 0 0}
.seg{display:inline-flex;flex-wrap:wrap;gap:4px;padding:4px;border-radius:14px;background:var(--bg);border:1px solid var(--line);margin-bottom:16px}
.seg button{border:0;background:transparent;color:var(--ink-2);font:inherit;font-weight:600;font-size:14.5px;padding:8px 14px;border-radius:10px;cursor:pointer}
.seg button.on{background:var(--card);color:var(--brand);box-shadow:var(--shadow)}
.gen-out{display:flex;gap:10px;align-items:center;background:var(--code-bg);border-radius:14px;padding:14px 16px;margin-bottom:16px}
.gen-out output{flex:1;color:#E2E8F0;font-family:ui-monospace,Consolas,monospace;font-size:20px;word-break:break-all;min-height:30px}
.chk{display:flex;gap:8px;align-items:center;margin:8px 0;font-weight:500;cursor:pointer}
input[type=range]{width:100%;accent-color:var(--brand)}
.ip-big{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:18px;border-radius:16px;background:linear-gradient(135deg,var(--brand),#0A1530);color:#fff;margin-bottom:16px}
.ip-big span{color:#C9D6EE!important}.ip-big output{flex:1;font-size:clamp(22px,4vw,34px);font-weight:700;font-family:ui-monospace,Consolas,monospace;word-break:break-all}
.kv{width:100%;border-collapse:collapse;font-size:15px}.kv th,.kv td{padding:10px 12px;border-bottom:1px solid var(--line-2);text-align:start;vertical-align:top}.kv th{width:38%;color:var(--muted);font-weight:500}
.speed-gauges{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}@media (max-width:620px){.speed-gauges{grid-template-columns:1fr 1fr}}
.speed-gauges div{text-align:center;padding:16px 10px;border-radius:16px;background:var(--bg);border:1px solid var(--line-2)}
.speed-gauges .main{background:var(--brand-soft);border-color:color-mix(in srgb,var(--brand) 25%,transparent)}
.speed-gauges span{display:block;color:var(--muted);font-size:14px}.speed-gauges b{display:block;font-size:34px;line-height:1.3;font-family:ui-monospace,Consolas,monospace}.speed-gauges small{color:var(--muted)}
.qr{display:grid;grid-template-columns:1.2fr 1fr;gap:24px}@media (max-width:760px){.qr{grid-template-columns:1fr}}
.qr-colors{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin-top:8px}.qr-colors label{display:flex;gap:8px;align-items:center;font-weight:500}.qr-colors .input{width:auto;padding:6px 10px}
.qr-box{aspect-ratio:1;max-width:340px;margin:0 auto;display:grid;place-items:center;border:1px dashed var(--line);border-radius:16px;background:#fff;padding:8px}.qr-box svg{width:100%;height:auto}
.date-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}
.conv-out{margin-top:10px;padding:18px;border-radius:16px;background:var(--brand-soft);font-size:20px;text-align:center}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px}@media (max-width:760px){.two-col{grid-template-columns:1fr}}
.wrap-btns .btn{white-space:nowrap}
.verdict{padding:14px 16px;border-radius:14px;font-weight:700;font-size:18px;margin:16px 0}
.verdict.bad{background:#FEE2E2;color:#991B1B}.verdict.warn{background:#FEF3C7;color:#92400E}.verdict.ok{background:#DCFCE7;color:#166534}
html[data-theme=dark] .verdict.bad{background:#3B1212;color:#FCA5A5}html[data-theme=dark] .verdict.warn{background:#3A2C0C;color:#FCD34D}html[data-theme=dark] .verdict.ok{background:#0F2E1C;color:#86EFAC}

/* home slider (scroll-snap, ~1 KB of JS) */
.slider{position:relative;border-radius:24px;overflow:hidden;background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow-lg);min-width:0}
.sl-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;scroll-behavior:smooth;outline:none}
.sl-track::-webkit-scrollbar{display:none}
.slide{position:relative;flex:0 0 100%;scroll-snap-align:start;aspect-ratio:4/3.3;display:flex;align-items:flex-end;color:#fff;overflow:hidden}
.slide img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scale(1.02)}
.slide::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(5,12,32,.94) 0,rgba(5,12,32,.72) 42%,rgba(5,12,32,.05) 78%)}
.sl-body{position:relative;z-index:1;padding:24px 24px 64px}
.sl-body .chip{background:rgba(255,255,255,.16);color:#fff;backdrop-filter:blur(6px)}
.sl-body h2{font-size:clamp(20px,2.1vw,26px);line-height:1.5;margin:10px 0 6px;color:#fff}
.sl-body h2 a{color:#fff}.sl-body h2 a::after{content:"";position:absolute;inset:0}
.sl-body p{margin:0;color:#D7E2F5;font-size:15px;line-height:1.75;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sl-meta{display:inline-flex;align-items:center;gap:6px;margin-top:10px;color:#AFC2E2;font-size:13px}
.sl-nav{position:absolute;bottom:14px;inset-inline:16px;display:flex;align-items:center;justify-content:space-between;z-index:2}
.sl-btn{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.12);color:#fff;cursor:pointer;backdrop-filter:blur(6px)}
.sl-btn:hover{background:rgba(255,255,255,.25)}
.sl-dots{display:flex;gap:7px}
.sl-dots button{width:8px;height:8px;border-radius:99px;border:0;padding:0;background:rgba(255,255,255,.45);cursor:pointer;transition:width .25s,background .25s}
.sl-dots button[aria-current]{width:26px;background:#fff}
@media (max-width:960px){.hero .wrap{grid-template-columns:1fr}.slide{aspect-ratio:16/11}}
@media (max-width:520px){.slide{aspect-ratio:4/4.2}.sl-body{padding:18px 18px 60px}}
.hero .wrap>*{min-width:0}
.stats{flex-wrap:wrap;row-gap:14px}
.slide{background:#081230}
.slide img{height:60%;inset:0 0 auto 0;object-position:center 45%}
.slide::after{background:linear-gradient(to top,#081230 0,#081230 42%,rgba(8,18,48,.6) 52%,rgba(8,18,48,0) 64%)}
@media (max-width:760px){html,body{overflow-x:hidden}}

/* courses & lessons */
.courses{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
@media (max-width:1100px){.courses{grid-template-columns:repeat(2,1fr)}}@media (max-width:560px){.courses{grid-template-columns:1fr}}
.course{position:relative;display:flex;flex-direction:column;gap:8px;padding:22px;border-radius:20px;background:var(--card);border:1px solid var(--line);color:var(--ink);overflow:hidden;transition:transform .15s,box-shadow .15s}
.course:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--c);text-decoration:none}
.course::before{content:"";position:absolute;inset:0 0 auto;height:4px;background:var(--c)}
.course-badge{display:grid;place-items:center;width:54px;height:54px;border-radius:15px;background:var(--c);color:#fff;font:700 17px/1 Plex,monospace;direction:ltr;letter-spacing:.5px;box-shadow:0 8px 18px color-mix(in srgb,var(--c) 35%,transparent)}
.course h3{margin:6px 0 0;font-size:19px}.course p{margin:0;color:var(--muted);font-size:14.5px;line-height:1.75}
.course-meta{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:auto;padding-top:8px;font-size:13px;color:var(--muted)}
.course .pbar{height:6px;margin:6px 0 0}
.lprog{height:6px;border-radius:9px;background:var(--line-2);overflow:hidden;margin:0 0 18px}.lprog i{display:block;height:100%;background:linear-gradient(90deg,var(--brand),var(--cyan))}
.lessons-side ol{list-style:none;margin:8px 0 0;padding:0;counter-reset:none}
.lessons-side li a{display:flex;gap:10px;align-items:flex-start;padding:8px 8px;border-radius:10px;color:var(--ink-2);font-size:14.5px;line-height:1.6}
.lessons-side li a:hover{background:var(--bg);text-decoration:none}
.lessons-side li a span{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;flex:none;background:var(--line-2);font-size:12px;font-weight:700;color:var(--muted)}
.lessons-side li.done a span{background:#16a34a;color:#fff}.lessons-side li.cur a{background:var(--brand-soft);color:var(--brand);font-weight:600}.lessons-side li.cur a span{background:var(--brand);color:#fff}
.lnav{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:30px 0 10px}
.lnav a{display:flex;flex-direction:column;gap:2px;padding:14px 16px;border-radius:16px;border:1px solid var(--line);background:var(--card);color:var(--ink)}
.lnav a:hover{border-color:var(--brand);text-decoration:none}.lnav small{color:var(--muted)}.lnav .lnext{text-align:left;grid-column:2}
.lnav .lnext b::after{content:" ←"}.lnav .lprev b::before{content:"→ "}
@media (max-width:620px){.lnav{grid-template-columns:1fr}.lnav .lnext{grid-column:auto}}
.play{margin:22px 0;border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--card)}
.play-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 12px;background:var(--bg);border-bottom:1px solid var(--line)}
.play-h b{font-size:15px}.play-h span{color:var(--muted);font-size:13px;flex:1}
.play-b{display:grid;grid-template-columns:1fr 1fr;min-height:180px}
.play textarea{border:0;resize:vertical;padding:14px;font:14px/1.65 ui-monospace,SFMono-Regular,Consolas,Plex,monospace;letter-spacing:0;background:#0B1220;color:#E2E8F0;tab-size:2;outline:none;min-height:180px;direction:ltr;text-align:left;white-space:pre;overflow:auto}
.play iframe{width:100%;height:100%;min-height:180px;border:0;background:#fff}
@media (max-width:820px){.play-b{grid-template-columns:1fr}.play iframe{min-height:160px;border-top:1px solid var(--line)}}
.chip.ghost{background:var(--bg);color:var(--muted);border:1px solid var(--line)}

/* glossary topics */
.topics{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}
.topics a,.topics button{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:99px;border:1px solid var(--line);background:var(--card);color:var(--ink-2);font-weight:600;font-size:14px}
.topics a:hover{border-color:var(--brand);text-decoration:none}.topics a[aria-current]{background:var(--brand);border-color:var(--brand);color:#fff}
.topics small{opacity:.7;font-weight:500}
.term-en{color:var(--muted);font-weight:500;font-size:.55em;white-space:nowrap}
.term-ex{margin:16px 0;padding:16px 18px;border-radius:16px;background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 30%,transparent)}
.term-ex strong{display:flex;align-items:center;gap:6px;margin-bottom:4px}.term-ex p{margin:0;line-height:1.9}
.faq-mini{margin-top:26px}.faq-mini h2,.h3{font-size:20px}
/* slider: image on top, text below (no overlap with the cover icon) */
.slide{flex-direction:column;align-items:stretch;justify-content:flex-start;aspect-ratio:auto}
.slide img{position:relative;inset:auto;width:100%;height:auto;aspect-ratio:1200/520;object-fit:cover;transform:none}
.slide::after{inset:0 0 auto 0;height:calc(100% * 0);background:none}
.slide .sl-body{padding:18px 22px 66px;background:#081230;flex:1}
.slide .sl-body .chip{position:absolute;top:-34px;inset-inline-start:22px}
@media (max-width:960px){.slide{aspect-ratio:auto}}
@media (max-width:520px){.slide{aspect-ratio:auto}.slide .sl-body{padding:16px 16px 62px}}

/* tools centre 1.3 */
.tool-group{scroll-margin-top:90px}.tool-group .sec-h{flex-wrap:wrap;gap:4px 16px}
.tool-card h3{font-size:17px;margin:10px 0 4px}.tool-card.feat{border-color:var(--brand);background:linear-gradient(135deg,var(--brand-soft),var(--card))}
.row-in{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:10px}.row-in .input{flex:1;min-width:160px}.row-in label{display:flex;align-items:center;gap:6px;font-size:14px}
.nt-out{margin-top:12px}.loading{padding:16px;color:var(--muted)}.loading::before{content:"";display:inline-block;width:14px;height:14px;border:2px solid var(--brand);border-inline-end-color:transparent;border-radius:50%;margin-inline-end:8px;vertical-align:-2px;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.h3.ltr-h{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}.ltr,.t.ltr td{direction:ltr;text-align:left}
.code-in{font:13.5px/1.6 ui-monospace,SFMono-Regular,Consolas,Plex,monospace;direction:ltr;text-align:left;tab-size:2}
.tree{font:13px/1.7 ui-monospace,Consolas,monospace;margin-top:10px;max-height:420px;overflow:auto;background:var(--bg);border-radius:12px;padding:10px}
.tree details{padding-inline-start:16px}.tree summary{cursor:pointer}.tree .tk{color:#7c3aed}.tree .ts{color:#16a34a}.tree .tnum{color:#2563eb}.tree .tb{color:#db2777}.tree .tn{color:var(--muted)}
.drop{display:flex;flex-direction:column;align-items:center;gap:4px;padding:28px;border:2px dashed var(--line);border-radius:16px;cursor:pointer;text-align:center;background:var(--bg)}.drop.over,.drop:hover{border-color:var(--brand)}
.hash-t code{word-break:break-all;font-size:12.5px}
.swatches{display:flex;flex-wrap:wrap;gap:6px}.sw{border:0;border-radius:10px;padding:14px 10px;min-width:84px;font:600 12px ui-monospace,monospace;cursor:pointer;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.swatches.big .sw{width:56px;height:56px;min-width:0}.pal{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:6px 0}.pal span{width:70px;font-size:13px;color:var(--muted)}
.contrast{display:flex;gap:16px;align-items:center;padding:18px;border-radius:12px;margin:8px 0}.linkish{background:none;border:0;color:var(--brand);cursor:pointer;font:inherit;padding:0}
.grad-prev{height:180px;border-radius:16px;margin-bottom:12px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.06)}.gst{display:inline-flex;align-items:center;gap:2px}.gst button{border:0;background:none;color:var(--muted);cursor:pointer;font-size:18px}
.md-split{display:grid;grid-template-columns:1fr 1fr;gap:10px}.md-split iframe{width:100%;min-height:380px;border:1px solid var(--line);border-radius:12px;background:#fff}.md-split textarea{min-height:380px;font:14px/1.7 ui-monospace,Consolas,Plex,monospace}
@media (max-width:760px){.md-split{grid-template-columns:1fr}}
.rx-sl{font:600 20px monospace;color:var(--muted)}.rx-hl{white-space:pre-wrap;padding:12px;border-radius:12px;background:var(--bg);margin:10px 0;line-height:2}.rx-hl mark{background:#fde68a;border-radius:3px;padding:0 2px}
.diff-in{display:grid;grid-template-columns:1fr 1fr;gap:10px}@media (max-width:700px){.diff-in{grid-template-columns:1fr}}
.diff-out{background:var(--bg);border-radius:12px;padding:10px;white-space:pre-wrap;line-height:1.9;font-size:14.5px}.dl{padding:0 8px;border-radius:4px}.dl.a{background:#dcfce7;color:#14532d}.dl.d{background:#fee2e2;color:#7f1d1d}
.diff-out ins{background:#bbf7d0;text-decoration:none;border-radius:3px}.diff-out del{background:#fecaca;border-radius:3px}
html[data-theme=dark] .dl.a{background:#14532d;color:#dcfce7}html[data-theme=dark] .dl.d{background:#7f1d1d;color:#fee2e2}html[data-theme=dark] .diff-out ins{background:#166534}html[data-theme=dark] .diff-out del{background:#991b1b}
.tz-list{display:flex;flex-direction:column;gap:6px;margin-top:10px}.tz-row{display:grid;grid-template-columns:1fr auto auto auto;gap:12px;align-items:center;padding:12px 14px;border-radius:12px;border:1px solid var(--line);border-inline-start:5px solid}
.tz-t{font-size:20px;font-weight:700}.tz-w{border-inline-start-color:#16a34a}.tz-e{border-inline-start-color:#f59e0b}.tz-n{border-inline-start-color:#64748b}.tz-key{display:inline-block;width:12px;height:12px;border-radius:3px;border:0;border-inline-start:12px solid;vertical-align:-1px}
.kv.ltr-vals b{direction:ltr;unicode-bidi:plaintext}
.kbd-board{display:flex;flex-direction:column;gap:5px;padding:12px;border-radius:16px;background:var(--bg);overflow-x:auto;outline:none}.kr{display:flex;gap:5px}
.kk{flex:0 0 44px;height:42px;display:grid;place-items:center;border-radius:8px;background:var(--card);border:1px solid var(--line);font:600 12.5px system-ui,sans-serif;color:var(--ink-2);transition:background .1s}
.kk.w12{flex-basis:56px}.kk.w15{flex-basis:66px}.kk.w18{flex-basis:78px}.kk.w2{flex-basis:88px}.kk.w22{flex-basis:96px}.kk.w24{flex-basis:104px}.kk.w26{flex-basis:118px}.kk.w6x{flex:1 0 220px}
.kk.done{background:#dcfce7;border-color:#22c55e;color:#14532d}.kk.on{background:#2563eb;color:#fff;border-color:#2563eb}html[data-theme=dark] .kk.done{background:#14532d;color:#dcfce7}
.st-full{position:fixed;inset:0;z-index:100;cursor:pointer}
.ex-wrap{display:grid;grid-template-columns:240px 1fr;gap:16px;align-items:start;margin-top:14px}.ex-img{width:100%;height:auto;border-radius:12px}@media (max-width:640px){.ex-wrap{grid-template-columns:1fr}}
.ic-list{display:flex;flex-direction:column;gap:8px;margin-top:12px}.ic-row{display:flex;gap:12px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:12px}.ic-row img{object-fit:cover;border-radius:8px}.ic-row span{flex:1;min-width:0;word-break:break-all}
.wrap-btns{flex-wrap:wrap}
.sim-svg{width:100%;height:auto;background:var(--bg);border-radius:16px;margin:8px 0}
.sim-l{stroke:var(--line);stroke-width:3;stroke-dasharray:6 6}.sim-l.on{stroke:var(--brand);stroke-dasharray:none}
.sim-n circle{fill:var(--card);stroke:var(--line);stroke-width:2}.sim-n.on circle{stroke:var(--brand);stroke-width:3;fill:var(--brand-soft)}
.sim-n .e{font-size:24px}.sim-n .lb{font:600 13px Plex,system-ui,sans-serif;fill:var(--ink-2)}.sim-pk{fill:#f59e0b;filter:drop-shadow(0 0 6px #f59e0b)}
.sim-step{min-height:110px;padding:14px 16px;border-radius:14px;background:var(--card);border:1px solid var(--line)}.sim-step b{display:flex;gap:8px;align-items:center;font-size:17px}.sim-step p{margin:6px 0 0;line-height:1.9}
.sim-badge{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--brand);color:#fff;font-size:13px}
.play .py-out{margin:0;padding:14px;background:#fff;color:#0f172a;font:14px/1.65 ui-monospace,Consolas,Plex,monospace;white-space:pre-wrap;min-height:180px;overflow:auto;border-radius:0}
.play .py-out.err{color:#b91c1c}html[data-theme=dark] .play .py-out{background:#0f172a;color:#e2e8f0}

/* playground */
.pg-wrap{max-width:1400px}.pg-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:14px}.pg-head h1{margin:0 0 4px;font-size:clamp(24px,3vw,34px)}.pg-head p{margin:0}
.seg a{display:inline-block;padding:7px 14px;border-radius:9px;color:var(--ink-2);font-weight:600;font-size:14px}.seg a.on{background:var(--card);box-shadow:var(--shadow);color:var(--brand)}.seg a:hover{text-decoration:none}
.pg{border:1px solid var(--line);border-radius:18px;background:var(--card);overflow:hidden}
.pg-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:10px 12px;border-bottom:1px solid var(--line);background:var(--bg)}.pg-tpl{width:auto;min-width:150px;height:36px;padding:0 10px}
.pg-main{display:grid;grid-template-columns:1fr 1fr;min-height:560px}
.pg-ed{display:flex;flex-direction:column}.pg-ed textarea{flex:1;border:0;resize:none;padding:16px;font:14px/1.7 ui-monospace,SFMono-Regular,Consolas,Plex,monospace;background:#0B1220;color:#E2E8F0;tab-size:2;outline:none;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;overflow-x:hidden;overflow-y:auto;direction:ltr;text-align:left;min-height:560px}
.pg-res{display:flex;flex-direction:column;border-inline-start:1px solid var(--line)}.pg-res iframe{flex:1;width:100%;border:0;background:#fff;min-height:360px}
.pg-console{height:170px;display:flex;flex-direction:column;border-top:1px solid var(--line);background:var(--bg)}.pg-ch{display:flex;justify-content:space-between;padding:6px 12px;font-size:13px;border-bottom:1px solid var(--line)}
#pg-log{flex:1;overflow:auto;font:13px/1.6 ui-monospace,Consolas,Plex,monospace;padding:4px 0}.pg-l{padding:2px 12px;border-bottom:1px solid var(--line-2);white-space:pre-wrap}.pg-l.error{color:#dc2626;background:#fef2f2}.pg-l.warn{color:#b45309;background:#fffbeb}
html[data-theme=dark] .pg-l.error{background:#450a0a;color:#fecaca}html[data-theme=dark] .pg-l.warn{background:#451a03;color:#fde68a}
.pg-out{flex:1;margin:0;padding:16px;font:14px/1.7 ui-monospace,Consolas,Plex,monospace;white-space:pre-wrap;overflow:auto;background:var(--card);min-height:560px}.pg-out.err{color:#dc2626}
@media (max-width:900px){.pg-main{grid-template-columns:1fr}.pg-ed textarea{min-height:300px}.pg-res{border-inline-start:0;border-top:1px solid var(--line)}.pg-out{min-height:240px}}
.pg-bar .input{width:auto;flex:0 0 auto}.pg-bar .grow{flex:1}.pg-bar .seg{margin:0}
.pg-bar .pg-tpl{height:auto;padding:7px 10px;line-height:1.4}
/* knowledge quizzes */
.qz-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.qz-card h2,.qz-card h3{font-size:19px;margin:6px 0}
.qz-meta{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 10px}.qz-meta span{font-size:13px;padding:3px 10px;border-radius:99px;background:var(--bg);border:1px solid var(--line);color:var(--ink-2)}
.qz-meta .qz-best{background:var(--brand-soft);border-color:var(--brand);color:var(--brand)}
.qz{max-width:780px;margin:0 auto 30px;padding:24px;border-radius:22px;background:var(--card);border:1px solid var(--line);scroll-margin-top:90px}
.qz-top{display:flex;justify-content:space-between;font-weight:600;color:var(--ink-2);font-size:15px}
.qz-bar{height:8px;border-radius:99px;background:var(--bg);margin:10px 0 22px;overflow:hidden}.qz-bar i{display:block;height:100%;width:0;background:var(--brand);border-radius:inherit;transition:width .35s}
.qz-list{list-style:none;margin:0;padding:0}
.qz-q h2{font-size:clamp(19px,2.6vw,23px);line-height:1.6;margin:0 0 16px}
.qz-opts{display:grid;gap:10px}
.qz-opts button{display:flex;align-items:center;gap:12px;width:100%;text-align:start;padding:13px 14px;border-radius:14px;border:1.5px solid var(--line);background:var(--bg);color:var(--ink);font:inherit;font-size:16px;cursor:pointer;transition:border-color .15s,background .15s}
.qz-opts button b{flex:none;display:grid;place-items:center;width:32px;height:32px;border-radius:10px;background:var(--card);border:1px solid var(--line);font-size:14px}
.qz-opts button:hover:not(:disabled){border-color:var(--brand)}
.qz-opts button:disabled{cursor:default}
.qz-opts button.right{border-color:var(--brand);background:var(--brand-soft)}.qz-opts button.right b{background:var(--brand);color:#fff;border-color:var(--brand)}
.qz-opts button.wrong{border-color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,transparent)}.qz-opts button.wrong b{background:var(--danger);color:#fff;border-color:var(--danger)}
.qz-ex{margin-top:14px;padding:14px 16px;border-radius:14px;border-inline-start:4px solid var(--line);background:var(--bg)}
.qz-ex.ok{border-color:var(--brand)}.qz-ex.no{border-color:var(--danger)}
.qz-ex p{margin:0 0 6px}.qz-ex a{display:inline-flex;align-items:center;gap:6px;font-weight:600}
.qz-nav{margin-top:18px;display:flex;justify-content:flex-end}
.qz-end{text-align:center}
.qz-ring{position:relative;width:150px;height:150px;margin:6px auto 10px}.qz-ring svg{width:100%;height:100%}.qz-ring circle{transition:stroke-dashoffset 1s ease}
.qz-ring b{position:absolute;inset:0;display:grid;place-items:center;font-size:32px}
.qz-end h2{margin:4px 0}
.qz-cert{margin:22px 0;padding:18px;border-radius:18px;background:var(--bg);border:1px dashed var(--brand)}
.qz-cert-row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.qz-cert-row .input{max-width:300px;text-align:center}
.qz-cert img{display:block;width:100%;max-width:640px;height:auto;margin:16px auto 0;border-radius:10px;box-shadow:var(--shadow,0 6px 20px rgba(0,0,0,.08))}
.qz-review{text-align:start;margin-top:20px}.qz-review ul{padding-inline-start:20px}.qz-review li{margin-bottom:10px;line-height:1.8}
.qz-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:18px}
@media (max-width:600px){.qz{padding:16px;border-radius:18px}.qz-opts button{font-size:15px;padding:11px 12px}}
.cert-prev{display:block;width:100%;max-width:640px;height:auto;margin:16px auto 0;border-radius:10px;box-shadow:0 6px 20px rgba(0,0,0,.08)}
.qz [hidden],.qz-nav[hidden]{display:none!important}
/* knowledge hubs */
.hub-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.hub-card{display:flex;gap:16px;padding:22px;border-radius:20px;background:var(--card);border:1px solid var(--line);color:inherit;text-decoration:none;transition:border-color .15s,transform .15s}
.hub-card:hover{border-color:var(--brand);transform:translateY(-2px)}
.hub-card .ico,.hub-ico{flex:none;display:grid;place-items:center;width:54px;height:54px;border-radius:16px;background:var(--brand-soft);color:var(--brand)}
.hub-card h2{font-size:20px;margin:0 0 6px}.hub-card p{margin:0 0 10px;color:var(--ink-2);font-size:15px;line-height:1.8}
.hub-meta{font-size:13px;color:var(--muted)}
.hub-hero{display:flex;gap:20px;align-items:flex-start;padding:26px;border-radius:24px;background:linear-gradient(135deg,var(--brand-soft),var(--card));border:1px solid var(--line);margin-bottom:16px}
.hub-hero .hub-ico{width:68px;height:68px;border-radius:20px;background:var(--brand);color:#fff}
.hub-hero h1{font-size:clamp(24px,3.6vw,34px);margin:0 0 10px;line-height:1.4}.hub-hero p{margin:0 0 8px;color:var(--ink-2);line-height:1.9;max-width:75ch}
.hub-toc{margin-bottom:18px}
.hub-top{display:grid;grid-template-columns:1fr 1.2fr;gap:16px}
.hub-start,.hub-road{padding:22px;border-radius:20px;background:var(--card);border:1px solid var(--line);scroll-margin-top:90px}
.hub-start{border-color:var(--brand);border-width:1.5px}
.hub-start h2{font-size:21px;margin:8px 0;line-height:1.5}.hub-start h2 a{color:inherit}.hub-start p{color:var(--ink-2);line-height:1.8}
.hub-road h2{display:flex;gap:8px;align-items:center;font-size:20px;margin:0 0 12px}
.hub-road ol{list-style:none;margin:0;padding:0;counter-reset:s}
.hub-road li{counter-increment:s;position:relative;padding:0 46px 14px 0;display:flex;flex-direction:column}
.hub-road li::before{content:counter(s);position:absolute;inset-inline-start:0;top:0;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--brand);color:#fff;font-weight:700;font-size:14px}
.hub-road li:not(:last-child)::after{content:"";position:absolute;inset-inline-start:15px;top:34px;bottom:2px;width:2px;background:var(--line)}
.hub-road li span{color:var(--ink-2);font-size:15px}
.hub .sec{scroll-margin-top:90px}
.hub-more{columns:2;gap:24px;margin-top:16px;padding-inline-start:20px}.hub-more li{margin-bottom:8px;break-inside:avoid}
.hub-terms{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin:0}
.hub-terms div{padding:14px 16px;border-radius:14px;background:var(--card);border:1px solid var(--line)}
.hub-terms dt{font-weight:700}.hub-terms dt span{font-weight:400;font-size:13px;color:var(--muted)}.hub-terms dd{margin:6px 0 0;font-size:14.5px;color:var(--ink-2);line-height:1.7}
.hub-fix{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.hub-fix-w{display:flex;gap:12px;padding:16px;border-radius:16px;background:var(--card);border:1px solid var(--line);color:inherit;text-decoration:none}
.hub-fix-w:hover{border-color:var(--brand)}.hub-fix-w .ic{color:var(--brand);flex:none}.hub-fix-w span{display:flex;flex-direction:column;gap:4px}.hub-fix-w small{color:var(--ink-2)}
.hub-errs{padding:16px;border-radius:16px;background:var(--card);border:1px solid var(--line)}.hub-errs ul{list-style:none;padding:0;margin:10px 0}.hub-errs li{margin-bottom:6px}.hub-errs code{font-size:13px}
@media (max-width:820px){.hub-top{grid-template-columns:1fr}.hub-hero{flex-direction:column;padding:20px}.hub-more{columns:1}}
.hub-home{grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}.hub-home .hub-card{padding:16px;align-items:center}.hub-home h3{margin:0 0 2px;font-size:17px}.hub-home .ico{width:46px;height:46px;border-radius:14px}
.hub-cta{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
/* header 1.3.1 */
.nav{gap:4px;margin-inline-start:28px}
.nav .dd-btn{font-size:15px;padding:9px 13px}
.dd-panel.list.one{width:min(330px,90vw);grid-template-columns:1fr}
.dd-all{grid-column:1/-1;display:flex!important;justify-content:space-between;border-top:1px solid var(--line);border-radius:0 0 10px 10px!important;margin-top:4px;color:var(--brand)!important;font-weight:600;font-size:14px}
.ed-btn{display:inline-flex;align-items:center;gap:7px;height:42px;padding:0 16px;border-radius:12px;background:linear-gradient(135deg,var(--brand),var(--cyan));color:#fff;font-weight:700;font-size:14.5px;white-space:nowrap;box-shadow:0 6px 16px color-mix(in srgb,var(--brand) 30%,transparent);transition:transform .15s,box-shadow .15s}
.ed-btn:hover{text-decoration:none;transform:translateY(-1px);box-shadow:0 10px 22px color-mix(in srgb,var(--brand) 38%,transparent)}
.ed-btn.cur{outline:2px solid var(--accent);outline-offset:2px}
.d-editor{display:flex;align-items:center;gap:12px;margin:0 0 18px;padding:14px;border-radius:16px;background:linear-gradient(135deg,var(--brand),var(--cyan));color:#fff}
.d-editor:hover{text-decoration:none}.d-editor .ico{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:rgba(255,255,255,.18);flex:none}
.d-editor b{display:block;font-size:15.5px}.d-editor small{display:block;font-size:12.5px;opacity:.9;line-height:1.5}.d-editor span:nth-child(2){flex:1}
@media (max-width:1100px){.nav{margin-inline-start:12px}.nav .dd-btn{padding:9px 9px;font-size:14.5px}}
@media (max-width:1000px){.ed-btn span{display:none}.ed-btn{width:42px;padding:0;justify-content:center}}
@media (max-width:900px){.ed-btn{display:none}}
.bnav .bnav-ed{color:var(--brand)}
/* home 1.3.1 */
.doors-sec{padding-top:8px}
.doors{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.door{display:flex;flex-direction:column;gap:6px;padding:20px;border-radius:20px;background:var(--card);border:1px solid var(--line);color:var(--ink);transition:transform .15s,border-color .15s,box-shadow .15s}
.door:hover{text-decoration:none;transform:translateY(-3px);border-color:var(--c);box-shadow:0 12px 28px color-mix(in srgb,var(--c) 16%,transparent)}
.door .ico{display:grid;place-items:center;width:52px;height:52px;border-radius:15px;background:color-mix(in srgb,var(--c) 13%,transparent);color:var(--c);margin-bottom:6px}
.door b{font-size:18px}.door span:last-child{color:var(--muted);font-size:14px}
.ed-show{display:grid;grid-template-columns:1fr 1.15fr;gap:28px;align-items:center;padding:30px;border-radius:26px;background:linear-gradient(135deg,var(--brand-soft),var(--card));border:1px solid var(--line)}
.ed-copy h2{font-size:clamp(24px,3vw,32px);margin:8px 0 10px;line-height:1.35}.ed-copy p{color:var(--ink-2);line-height:1.9;margin:0 0 18px}
.ed-cta{display:flex;gap:10px;flex-wrap:wrap}
.ed-live{border-radius:18px;overflow:hidden;background:#0A1530;box-shadow:0 18px 40px rgba(10,21,48,.25);border:1px solid #1C2A47}
.ed-bar{display:flex;align-items:center;gap:6px;padding:10px 14px;background:#0D1B3A;color:#93A0B4;font-size:12.5px;direction:ltr}
.ed-bar i{width:11px;height:11px;border-radius:50%;background:#F87171}.ed-bar i:nth-child(2){background:#FBBF24}.ed-bar i:nth-child(3){background:#34D399}.ed-bar span{margin-inline-start:8px;font-family:ui-monospace,Consolas,monospace}
.ed-panes{display:grid;grid-template-columns:1fr 1fr;min-height:240px}
.ed-live textarea{width:100%;height:100%;min-height:240px;resize:none;white-space:pre-wrap;overflow-wrap:anywhere;overflow-x:hidden;overflow-y:auto;border:0;outline:0;padding:14px;background:#0A1530;color:#E2E8F0;font:13.5px/1.7 ui-monospace,Consolas,Menlo,monospace;tab-size:2}
.ed-live iframe{width:100%;height:100%;min-height:240px;border:0;background:#fff}
.quiz-band{display:flex;align-items:center;gap:14px;margin-top:16px;padding:16px 20px;border-radius:18px;background:var(--card);border:1px dashed var(--brand);color:var(--ink)}
.quiz-band:hover{text-decoration:none;background:var(--brand-soft)}
.quiz-band .ico{display:grid;place-items:center;width:46px;height:46px;border-radius:14px;background:var(--brand);color:#fff;flex:none}
.quiz-band span:nth-child(2){flex:1}.quiz-band b{display:block;font-size:16.5px}.quiz-band small{color:var(--ink-2)}
@media (max-width:1000px){.doors{grid-template-columns:repeat(2,1fr)}.ed-show{grid-template-columns:1fr;padding:22px}}
@media (max-width:560px){.door{padding:16px}.door b{font-size:16px}.ed-panes{grid-template-columns:1fr}.ed-live textarea,.ed-live iframe{min-height:170px}.quiz-band{flex-wrap:wrap}.quiz-band .btn{width:100%;justify-content:center}}
/* search 1.4 */
.dym-line{margin-top:12px;padding:10px 14px;border-radius:12px;background:color-mix(in srgb,var(--accent) 14%,transparent);display:inline-block}
.ask-box{display:flex;align-items:center;gap:14px;margin:6px 0 18px;padding:14px 18px;border-radius:16px;background:linear-gradient(135deg,var(--brand),var(--cyan));color:#fff}
.ask-box:hover{text-decoration:none;filter:brightness(1.05)}.ask-box .ico{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:rgba(255,255,255,.18);flex:none}
.ask-box span:nth-child(2){flex:1}.ask-box b{display:block;font-size:16px}.ask-box small{opacity:.92}
.s-tabs{margin-bottom:16px}.s-tabs button{font:inherit;cursor:pointer}.s-tabs button.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.quick{padding:18px 20px;border-radius:16px;background:var(--card);border:1px solid var(--line);border-inline-start:4px solid var(--brand);margin-bottom:18px}
.quick h2{font-size:20px;margin:6px 0}.quick h2 span{font-size:14px;color:var(--muted);font-weight:400}
#sresults a.dym span b{color:var(--brand)}#sresults a.ask{background:var(--brand-soft)}
main section[hidden]{display:none}
/* error identifier */
.eid-form{max-width:820px;padding:20px;border-radius:20px;background:var(--card);border:1px solid var(--line)}
.eid-form textarea{width:100%;font:15px/1.7 ui-monospace,Consolas,monospace;direction:ltr;text-align:left;resize:vertical}
.eid-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:12px}
.eid-ex{display:flex;gap:6px;flex-wrap:wrap;align-items:center;color:var(--muted);font-size:14px}.eid-ex button{font:inherit;font-size:13px;padding:5px 10px;border-radius:99px;border:1px solid var(--line);background:var(--bg);color:var(--ink-2);cursor:pointer}
.eid-out{max-width:820px;margin-top:18px}.eid-codes{margin-bottom:12px}.eid-codes code{margin-inline-end:6px}
.eid-card{padding:18px 20px;border-radius:16px;background:var(--card);border:1px solid var(--line);border-inline-start:4px solid var(--accent);margin-bottom:12px}
.eid-card.ok{border-inline-start-color:var(--brand)}.eid-card h2{font-size:19px;margin:4px 0 8px}.eid-card p{margin:0 0 10px;line-height:1.85}
.eid-arts{list-style:none;padding:0}.eid-arts a{display:block;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:var(--card);margin-bottom:8px;color:inherit}.eid-arts a:hover{border-color:var(--brand);text-decoration:none}.eid-arts small{display:block;color:var(--muted);margin-top:4px}
/* assistant */
.as-wrap{max-width:920px}
.as-head{display:flex;gap:16px;align-items:flex-start;margin:10px 0 18px}.as-head h1{margin:0 0 6px;font-size:clamp(26px,3.4vw,34px)}.as-head p{margin:0;color:var(--ink-2);line-height:1.85}
.as-ico{flex:none;display:grid;place-items:center;width:62px;height:62px;border-radius:18px;background:linear-gradient(135deg,var(--brand),var(--cyan));color:#fff}
.as{border-radius:22px;background:var(--card);border:1px solid var(--line);padding:16px;display:flex;flex-direction:column;gap:12px}
.as-log{min-height:220px;max-height:62vh;overflow:auto;display:flex;flex-direction:column;gap:12px;padding:4px}
.as-empty p{color:var(--muted);margin:4px 0 10px}.as-ex{display:flex;flex-wrap:wrap;gap:8px}
.as-ex button{font:inherit;font-size:14px;text-align:start;padding:9px 14px;border-radius:14px;border:1px solid var(--line);background:var(--bg);color:var(--ink);cursor:pointer}.as-ex button:hover{border-color:var(--brand)}
.as-msg{max-width:88%;padding:12px 16px;border-radius:18px;line-height:1.9}
.as-msg p{margin:0 0 6px}.as-msg ol,.as-msg ul{margin:4px 0 8px;padding-inline-start:22px}.as-msg li{margin-bottom:4px}
.as-msg.me{align-self:flex-start;background:var(--brand);color:#fff;border-end-start-radius:6px}
.as-msg.bot{align-self:flex-end;background:var(--bg);border:1px solid var(--line);border-end-end-radius:6px}
.as-msg .cite{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 4px;margin:0 2px;border-radius:6px;background:var(--brand-soft);color:var(--brand);font-size:12px;font-weight:700;vertical-align:2px}
.as-src{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line)}.as-src b{font-size:14px}.as-src ol{list-style:none;padding:0;margin:6px 0 0}
.as-src a{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:14.5px}.as-src a span{display:grid;place-items:center;width:22px;height:22px;border-radius:6px;background:var(--card);border:1px solid var(--line);font-size:12px;flex:none}
.as-src li.cited a span{background:var(--brand);border-color:var(--brand);color:#fff}.as-src small{color:var(--muted);margin-inline-start:auto;font-size:12px}
.as-fb{display:flex;gap:8px;align-items:center;margin-top:8px;font-size:13.5px;color:var(--muted)}.as-fb button{font:inherit;font-size:13px;padding:3px 12px;border-radius:99px;border:1px solid var(--line);background:var(--card);cursor:pointer}
.dots{display:inline-flex;gap:3px;margin-inline-end:6px}.dots i{width:6px;height:6px;border-radius:50%;background:var(--brand);animation:dot 1s infinite alternate}.dots i:nth-child(2){animation-delay:.2s}.dots i:nth-child(3){animation-delay:.4s}
@keyframes dot{from{opacity:.25}to{opacity:1}}
.as-form{display:flex;gap:10px;align-items:flex-end}.as-form textarea{flex:1;resize:none;font:inherit;font-size:16px;padding:12px 14px;border-radius:14px;border:1.5px solid var(--line);background:var(--bg);color:var(--ink);min-height:52px}
.as-form textarea:focus{outline:0;border-color:var(--brand)}.as-form .btn{height:52px;width:56px;padding:0;justify-content:center}
.as-note{display:flex;gap:6px;align-items:flex-start;font-size:13px;color:var(--muted);margin:0}
@media (max-width:600px){.as-head{flex-direction:column}.as-msg{max-width:96%}.as{padding:12px}}
/* larger touch targets inside tools */
.tool input[type=checkbox],.tool input[type=radio]{width:20px;height:20px;accent-color:var(--brand);vertical-align:-4px}
.tool input[type=color]{min-width:44px;min-height:40px;padding:2px;border-radius:10px;border:1px solid var(--line);background:var(--card);cursor:pointer}
.tool input[type=range]{min-height:32px;accent-color:var(--brand)}
.tool .linkish{min-height:36px;padding-inline:8px}
@media (pointer:coarse){.tool .linkish{min-height:44px}.tool label:has(input[type=checkbox]){display:inline-flex;align-items:center;gap:8px;min-height:44px}}
/* playground 1.4 */
.pg.pg-full{position:fixed;inset:0;z-index:80;margin:0;border-radius:0;max-width:none;display:flex;flex-direction:column;background:var(--bg);padding:10px}
.pg.pg-full .pg-main{flex:1;min-height:0}.pg.pg-full .pg-ed textarea,.pg.pg-full .pg-res iframe{height:100%;min-height:0}
html.pg-lock{overflow:hidden}
.pg-expanel{margin:10px 0;padding:14px 16px;border-radius:14px;background:var(--card);border:1px solid var(--brand);border-inline-start-width:4px}
.ex-h{display:flex;align-items:center;gap:8px}.ex-h b{flex:1;font-size:16.5px}.pg-expanel>p{margin:8px 0;line-height:1.8}
.ex-act{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}
.ex-res{list-style:none;padding:0;margin:8px 0 0;display:grid;gap:4px}.ex-res li{padding:4px 28px 4px 0;position:relative;font-size:14.5px}
.ex-res li::before{content:"○";position:absolute;inset-inline-start:6px;color:var(--muted)}.ex-res li.ok::before{content:"✓";color:#16a34a;font-weight:700}.ex-res li.no::before{content:"✕";color:var(--danger);font-weight:700}
.ex-msg{margin:10px 0 0;padding:8px 12px;border-radius:10px;font-weight:600}.ex-msg.ok{background:color-mix(in srgb,#16a34a 14%,transparent);color:#15803d}.ex-msg.no{background:color-mix(in srgb,var(--danger) 10%,transparent)}
.path-ex{margin:16px 0}.path-ex h3{display:flex;gap:8px;align-items:center;margin:0 0 4px}
/* authors */
.avatar-ini{display:inline-grid;place-items:center;border-radius:50%;background:linear-gradient(135deg,var(--brand),var(--cyan));color:#fff;font-weight:700;flex:none}
img.avatar{border-radius:50%;object-fit:cover;flex:none}
.people{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.person{display:flex;gap:12px;align-items:center;padding:14px;border-radius:16px;background:var(--card);border:1px solid var(--line);color:inherit}.person:hover{border-color:var(--brand);text-decoration:none}
.person span:last-child{display:flex;flex-direction:column}.person small{font-size:13px;color:var(--ink-2)}
.profile{display:flex;gap:20px;align-items:center;margin-top:10px}.profile h1{margin:0 0 4px}.profile-role{margin:0 0 8px;color:var(--ink-2)}.profile-links{display:flex;gap:14px;margin:8px 0 0}
.corrections{margin:24px 0;padding:16px 18px;border-radius:14px;background:var(--card);border:1px solid var(--line)}.corrections h2{font-size:18px;margin:0 0 8px}
.corrections ul{list-style:none;padding:0;margin:0}.corrections li{padding:6px 0;border-bottom:1px dashed var(--line);line-height:1.8}.corrections li:last-child{border:0}.corrections time{color:var(--muted);margin-inline-end:8px;font-size:14px}
@media (max-width:600px){.profile{flex-direction:column;text-align:center}.profile .topics,.profile-links{justify-content:center}}
.hero-ask{display:inline-flex;align-items:center;gap:6px;margin:10px 0 2px;font-weight:600;font-size:15px}

.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.path-ex h2{display:flex;gap:8px;align-items:center;margin:0 0 4px;font-size:18px}
.cert-slot{display:block}.cert-slot img{display:block;width:100%;max-width:640px;height:auto;margin:16px auto 0;border-radius:10px;box-shadow:0 6px 20px rgba(0,0,0,.08)}
/* related tools + ask box in articles */
.art-tools,.art-ask{margin:26px 0;padding:18px;border-radius:18px;background:var(--card);border:1px solid var(--line)}
.art-tools h2,.art-ask h2{display:flex;gap:8px;align-items:center;font-size:18px;margin:0 0 12px}
.art-tools-g{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.art-tools-g a{display:flex;gap:10px;align-items:flex-start;padding:12px;border-radius:14px;border:1px solid var(--line);background:var(--bg);color:inherit}.art-tools-g a:hover{border-color:var(--brand);text-decoration:none}
.art-tools-g .ico{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:var(--brand-soft);color:var(--brand);flex:none}.art-tools-g b{display:block;font-size:15px}.art-tools-g small{color:var(--ink-2);font-size:13px;line-height:1.6}
.art-ask{background:linear-gradient(135deg,var(--brand-soft),var(--card))}
.art-ask-f{display:flex;gap:8px}.art-ask-f input{flex:1;min-width:0;padding:10px 14px;border-radius:12px;border:1.5px solid var(--line);background:var(--card);color:var(--ink);font:inherit}.art-ask-f input:focus{outline:0;border-color:var(--brand)}
.art-ask-q{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.art-ask-q a{font-size:14px;padding:7px 12px;border-radius:99px;background:var(--card);border:1px solid var(--line);color:var(--ink-2)}.art-ask-q a:hover{border-color:var(--brand);text-decoration:none}
.art-ask-q a.eid{display:inline-flex;gap:6px;align-items:center;color:var(--brand)}
/* PWA */
.share [data-save-offline].on{border-color:var(--brand);color:var(--brand)}
.d-install{display:flex;align-items:center;gap:12px;width:100%;margin:0 0 10px;padding:12px 14px;border-radius:16px;border:1.5px dashed var(--brand);background:var(--brand-soft);color:var(--ink);font:inherit;text-align:start;cursor:pointer}
.d-install span{display:flex;flex-direction:column}.d-install b{font-size:15px}.d-install small{font-size:12.5px;color:var(--ink-2)}.d-install .ic{color:var(--brand);flex:none}
.d-saved{display:flex;align-items:center;gap:8px;margin:0 0 14px;padding:10px 12px;border-radius:12px;background:var(--card);border:1px solid var(--line);color:var(--ink);font-weight:600}
.saved-list{list-style:none;padding:0;margin:0 0 20px}.saved-list li{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:14px;background:var(--card);border:1px solid var(--line);margin-bottom:8px}
.saved-list a{flex:1;color:inherit}.saved-list small{display:block;color:var(--muted);font-size:13px}
.install-help h2{display:flex;gap:8px;align-items:center;font-size:18px}.install-help li{margin-bottom:6px;line-height:1.8}
/* labs: SQL, React, PHP */
.pg-modes{flex-wrap:wrap}
.lab .pg-res{display:flex;flex-direction:column;min-height:0}
.lab-file{cursor:pointer}
.lab[data-lab=sql] .pg-res{display:grid;grid-template-columns:170px 1fr;align-items:stretch}
.sql-side{border-inline-end:1px solid var(--line);padding:10px;overflow:auto;max-height:620px;font-size:13.5px;background:var(--bg)}
.sql-side ul{list-style:none;padding:0;margin:6px 0 0}.sql-side li{margin-bottom:10px;direction:ltr;text-align:left}.sql-side li div{color:var(--muted);font:12px/1.6 ui-monospace,Consolas,monospace}
.sql-side small{color:var(--brand);font-size:10.5px}.sql-side .linkish{font-weight:700;font-family:ui-monospace,Consolas,monospace}
.lab-out{padding:12px;overflow:auto;max-height:620px;min-height:300px}
.sql-res{margin-bottom:14px}.sql-meta{font-size:13px;color:var(--muted);margin-bottom:4px}
.sql-scroll{overflow:auto;max-height:380px;border:1px solid var(--line);border-radius:10px}
.sql-scroll table{border-collapse:collapse;width:100%;font-size:14px}.sql-scroll th{position:sticky;top:0;background:var(--brand-soft);text-align:start;padding:6px 10px;white-space:nowrap}
.sql-scroll td{padding:6px 10px;border-top:1px solid var(--line);white-space:nowrap}.sql-scroll td.num{direction:ltr;text-align:right}.sql-scroll td.null{color:var(--muted);font-style:italic}
.sql-ok{padding:10px 12px;border-radius:10px;background:color-mix(in srgb,#16a34a 12%,transparent);color:#15803d;font-weight:600}
.lab-otabs{margin:8px}.lab-pre{flex:1;margin:0;min-height:300px;white-space:pre-wrap}.lab-pre.err{color:#b91c1c}
#lab-html{flex:1;min-height:360px;border:0;background:#fff}
@media (max-width:900px){.lab[data-lab=sql] .pg-res{grid-template-columns:1fr}.sql-side{max-height:160px;border-inline-end:0;border-bottom:1px solid var(--line)}}
.md-split.only-edit{grid-template-columns:1fr}.md-split.only-edit iframe{display:none}.md-split.only-preview{grid-template-columns:1fr}.md-split.only-preview textarea{display:none}
.js-tabs{margin:12px 0 8px}.tree .tk{cursor:pointer}.tree .tk:hover{text-decoration:underline}
.jd{border-collapse:collapse;width:100%;font-size:14px;margin-top:8px}.jd td,.jd th{border:1px solid var(--line);padding:5px 8px;text-align:left}.jd tr.da td:first-child{color:#15803d}.jd tr.dr td:first-child{color:#b91c1c}.jd tr.dc td:first-child{color:#b45309}.jd del{color:#b91c1c}.jd ins{color:#15803d;text-decoration:none}
#js-csv-out{max-height:320px;overflow:auto;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px;font-size:13px;white-space:pre}
.lab-try .play-b{grid-template-columns:1fr 1fr}.lab-try-out{padding:10px;overflow:auto;max-height:520px;background:var(--card);min-height:140px}
.lab-try-out iframe{width:100%;min-height:220px;border:0;background:#fff;border-radius:8px}.lab-try-out .lab-pre{margin:0;min-height:0;font-size:13.5px;white-space:pre-wrap}
@media (max-width:760px){.lab-try .play-b{grid-template-columns:1fr}}
.lab-course{background:var(--brand-soft);border:1px solid var(--line);border-radius:12px;padding:12px 16px}
/* hardware explorer */
.hw-modes{margin-bottom:14px;flex-wrap:wrap}
.hw-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:18px;align-items:start}
.hw-view{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:10px;position:relative}
.hw-view svg{display:block;width:100%;height:auto}
.hw-view svg[hidden]{display:none}
.hw-case{fill:#0f172a;stroke:#334155;stroke-width:3}
.hw-shroud{fill:#111c33}
.hw-mb{fill:#14532d;stroke:#166534;stroke-width:2}
.hw-trace{stroke:#4ade80;stroke-width:2;fill:none;opacity:.45}
.hw-chip{fill:#1e293b;stroke:#64748b}
.hw-p{stroke:#0b1220;stroke-width:1.5}
.hw-cpu{fill:#cbd5e1}.hw-die{fill:#475569}
.hw-ram{fill:#2563eb}.hw-ssd{fill:#1e3a8a}.hw-gpu{fill:#334155}.hw-psu{fill:#27272a}.hw-hdd{fill:#52525b}
.hw-wifi{fill:#0e7490}.hw-bat{fill:#1f2937}.hw-fanbox{fill:#1e293b}.hw-plat{fill:#a1a1aa}
.hw-pipe{stroke:#d97706;stroke-width:9;stroke-linecap:round;fill:none}
.hw-blade{stroke:#94a3b8;stroke-width:3;fill:none;opacity:.6}
.hw-t{fill:#f8fafc;font:600 13px Tahoma,system-ui,sans-serif;text-anchor:middle;pointer-events:none}
.hw-tl{font-size:15px;font-weight:700}
.hw-ts{font-size:11px}
[data-part]{cursor:pointer;outline:none;transition:filter .15s}
[data-part]:hover,[data-part]:focus-visible{filter:drop-shadow(0 0 6px #38bdf8) brightness(1.15)}
[data-part].on{filter:drop-shadow(0 0 8px #facc15) brightness(1.2)}
[data-part].on .hw-p,[data-part].on .hw-mb{stroke:#facc15;stroke-width:3}
.hw-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.hw-chips .chip{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;padding:5px 12px;font:inherit;font-size:.9rem;cursor:pointer}
.hw-chips .chip.on{background:var(--brand);border-color:var(--brand);color:#fff}
.hw-side{position:sticky;top:84px}
.hw-panel,.hw-quiz{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px 18px}
.hw-quiz{margin-bottom:12px;border-color:var(--brand);background:var(--brand-soft)}
.hw-ph{display:flex;gap:12px;align-items:center;margin-bottom:10px}
.hw-ph h3{margin:0;font-size:1.2rem}
.hw-ic{font-size:1.8rem;line-height:1}
.hw-tabs{margin:6px 0 10px;flex-wrap:wrap}
.hw-body{line-height:1.9}.hw-body ul{padding-inline-start:20px;margin:6px 0}
.hw-lap{background:var(--brand-soft);border-radius:10px;padding:8px 12px}
.hw-terms{font-size:.92rem;margin:8px 0 0}
.hw-quiz .ok,.hw-checks .ok,.hw-watt .ok{color:#15803d}.hw-quiz .bad,.hw-checks .bad,.hw-watt .bad{color:#b91c1c}
.hw-qn{margin:0;font-size:.85rem;color:var(--muted)}.hw-qq{margin:6px 0}
.hw-build{margin-top:28px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px}
.hw-build h2{margin-top:0;font-size:1.25rem}
.hw-form{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px 14px;margin:12px 0}
.hw-form label{display:flex;flex-direction:column;gap:4px;font-size:.92rem}
.hw-form label[hidden]{display:none}
.hw-watt{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:8px 0}
.hw-watt>div{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:10px;text-align:center}
.hw-watt b{display:block;font-size:1.3rem;margin-top:2px}
.hw-checks{list-style:none;padding:0;margin:10px 0 0;display:grid;gap:6px}
.hw-checks li{padding:8px 12px;border-radius:10px;background:var(--bg);border:1px solid var(--line)}
.hw-checks li.warn{color:#a16207}
.hw-checks li span{font-weight:700;margin-inline-end:4px}
[data-theme=dark] .hw-checks li.warn{color:#facc15}[data-theme=dark] .hw-checks .ok,[data-theme=dark] .hw-watt .ok,[data-theme=dark] .hw-quiz .ok{color:#4ade80}[data-theme=dark] .hw-checks .bad,[data-theme=dark] .hw-watt .bad,[data-theme=dark] .hw-quiz .bad{color:#f87171}
@media (max-width:820px){.hw-grid{grid-template-columns:1fr}.hw-side{position:static}.hw-watt{grid-template-columns:1fr 1fr 1fr}.hw-watt b{font-size:1.05rem}}
.hw-case,.hw-shroud{pointer-events:none}
