:root{
  --bg:#060E1C; --bg2:#0A1628; --panel:#0E1D33; --panel2:#13243F;
  --ink:#E5EEF8; --muted:#8FA6C0; --line:#1E3354;
  --cyan:#22D3EE; --amber:#FCD34D; --red:#F87171; --green:#34D399; --violet:#A78BFA;
}
*{box-sizing:border-box}
body{margin:0; background:var(--bg); color:var(--ink);
  font-family:"Manrope","Inter",system-ui,Segoe UI,Roboto,sans-serif; line-height:1.55; padding:0 0 80px}
a{color:var(--cyan)}
img{max-width:100%}
header{padding:38px 20px 18px; text-align:center; background:linear-gradient(180deg,var(--bg2),transparent); border-bottom:1px solid var(--line)}
header .tag{color:var(--cyan); font-family:"JetBrains Mono",monospace; font-size:12px; letter-spacing:1px; text-transform:uppercase}
header h1{margin:6px 0 4px; font-size:28px; letter-spacing:-.5px}
header p{color:var(--muted); margin:6px auto 0; font-size:15px; max-width:720px}
.wrap{max-width:1160px; margin:0 auto; padding:0 20px}

.railwrap{max-width:1160px;margin:18px auto 0;padding:0 20px}
.rail{display:flex;gap:8px;flex-wrap:wrap;align-items:stretch}
.rail a{flex:1 1 120px;min-width:120px;text-decoration:none;display:block;border:1px solid var(--line);border-radius:10px;padding:9px 12px;background:var(--panel);transition:.14s}
.rail a:hover{border-color:var(--cyan);transform:translateY(-2px)}
.rail a .rn{font-family:"JetBrains Mono",monospace;font-size:11px;color:var(--muted)}
.rail a .rt{font-size:13px;color:var(--ink);font-weight:700;margin-top:2px;line-height:1.25}
.rail a.cur{border-color:var(--cyan);background:linear-gradient(180deg,rgba(34,211,238,.12),transparent)}
.rail a.cur .rn{color:var(--cyan)}
.rail a.done .rt::after{content:" ✓";color:var(--green)}
@media(max-width:760px){.rail a{flex:1 1 45%;min-width:0}}

.topnav{max-width:1160px;margin:14px auto 0;padding:0 20px}
.nav-back{display:inline-flex;align-items:center;gap:7px;text-decoration:none;font-family:"JetBrains Mono",monospace;font-size:13px;padding:7px 14px;border-radius:9px;border:1px solid var(--line);background:var(--panel);color:var(--muted)}
.nav-back:hover{border-color:var(--cyan);color:var(--cyan);background:rgba(34,211,238,.06)}
.modnav{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:14px;max-width:1160px;margin:38px auto 0;padding:18px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(180deg,var(--panel),var(--bg2))}
.modnav .mn-label{font-family:"JetBrains Mono",monospace;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px}
.modnav .mn-title{font-size:15px;color:var(--ink);font-weight:700}
.nav-next{display:inline-flex;align-items:center;gap:9px;text-decoration:none;padding:12px 20px;border-radius:11px;background:var(--cyan);color:#04222b;font-weight:700;font-size:14px}
.nav-next:hover{filter:brightness(1.08)}
.nav-prev{display:inline-flex;align-items:center;gap:7px;text-decoration:none;font-family:"JetBrains Mono",monospace;font-size:13px;padding:9px 16px;border-radius:9px;border:1px solid var(--line);background:var(--panel2);color:var(--muted)}
.nav-prev:hover{border-color:var(--cyan);color:var(--cyan)}
@media(max-width:620px){.modnav{flex-direction:column;align-items:stretch}}

.section{margin-top:46px}
.sec-head{display:flex; align-items:baseline; gap:14px; flex-wrap:wrap; margin-bottom:6px}
.sec-num{font-family:"JetBrains Mono",monospace; font-size:13px; color:var(--cyan); border:1px solid var(--line); border-radius:8px; padding:4px 10px; background:var(--bg2)}
.sec-head h2{font-size:23px; margin:0; letter-spacing:-.3px}
.sec-sub{color:var(--muted); font-size:14.5px; margin:4px 0 0; max-width:820px; line-height:1.6}
.badges{display:flex; gap:7px; flex-wrap:wrap; margin:12px 0 2px}
.b{font-family:"JetBrains Mono",monospace; font-size:11px; letter-spacing:.04em; text-transform:uppercase; padding:4px 10px; border-radius:999px; border:1px solid var(--line)}
.b.fgos{color:var(--green); background:rgba(52,211,153,.08); border-color:rgba(52,211,153,.35)}
.b.fop{color:var(--violet); background:rgba(167,139,250,.08); border-color:rgba(167,139,250,.35)}
.b.exam{color:var(--amber); background:rgba(252,211,77,.08); border-color:rgba(252,211,77,.35)}

.intro{background:var(--panel); border:1px solid var(--line); border-left:4px solid var(--amber); border-radius:14px; padding:20px 22px; margin-top:26px}
.intro p{margin:8px 0; font-size:15px; color:#d7e3f2; line-height:1.7}
.intro p:first-child{margin-top:0}
.intro b{color:var(--ink)}
.intro .hook{font-size:16px;color:var(--ink)}

.theory{background:var(--panel); border:1px solid var(--line); border-radius:14px; padding:20px 22px; margin-top:18px}
.theory h4{font-size:15px; color:var(--cyan); margin:18px 0 6px; border-left:3px solid var(--cyan); padding-left:10px}
.theory h4:first-child{margin-top:4px}
.theory p{font-size:14.5px; line-height:1.7; color:#d7e3f2; margin:8px 0}
.theory b{color:var(--ink)}
.theory i{color:#cfe0f1}
.theory code,.mono{font-family:"JetBrains Mono",monospace; font-size:.92em; background:var(--bg2); border:1px solid var(--line); border-radius:5px; padding:1px 6px; color:var(--amber)}
.theory ul,.theory ol{margin:8px 0; padding-left:20px}
.theory li{font-size:14.5px; line-height:1.7; color:#d7e3f2; margin:4px 0}
.callout{background:var(--bg2); border:1px solid var(--line); border-left:3px solid var(--violet); border-radius:10px; padding:12px 14px; margin:14px 0; font-size:13.5px; color:#cdddef}
.callout .ct{font-family:"JetBrains Mono",monospace; font-size:11px; text-transform:uppercase; letter-spacing:.06em; color:var(--violet); display:block; margin-bottom:4px}
.callout.amber{border-left-color:var(--amber)} .callout.amber .ct{color:var(--amber)}
.callout.cyan{border-left-color:var(--cyan)} .callout.cyan .ct{color:var(--cyan)}
.callout.green{border-left-color:var(--green)} .callout.green .ct{color:var(--green)}
.callout.red{border-left-color:var(--red)} .callout.red .ct{color:var(--red)}

.fig{margin:16px 0 6px;background:var(--bg2);border:1px solid var(--line);border-radius:12px;padding:16px;text-align:center}
.fig svg{width:100%;height:auto;max-width:760px;display:block;margin:0 auto}
.fig .cap{margin-top:10px;font-size:12.5px;color:var(--muted);font-family:"JetBrains Mono",monospace}
.fig .cap b{color:var(--amber)}

.agrid{display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:14px; margin-top:16px}
.acard{background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:16px; border-top:3px solid var(--cyan); transition:.15s}
.acard:hover{border-color:var(--cyan); transform:translateY(-2px); box-shadow:0 8px 28px rgba(34,211,238,.16)}
.acard .ico{font-size:26px; line-height:1; margin-bottom:8px}
.acard h5{margin:0 0 4px; font-size:16px}
.acard .ana{font-family:"JetBrains Mono",monospace; font-size:12px; color:var(--amber); margin:0 0 8px}
.acard p{margin:0; font-size:13px; color:var(--muted); line-height:1.55}

.tblbox{margin:16px 0 6px; overflow:auto; border:1px solid var(--line); border-radius:12px}
table.dt{width:100%; border-collapse:collapse; font-size:13.5px; min-width:520px}
table.dt th{background:var(--panel2); color:var(--amber); text-align:left; padding:9px 12px; border-bottom:1px solid var(--line); font-weight:700; font-size:12.5px}
table.dt td{padding:9px 12px; border-bottom:1px solid var(--line); color:#d7e3f2; vertical-align:top}
table.dt tr:last-child td{border-bottom:none}
table.dt tr:nth-child(even) td{background:rgba(255,255,255,.02)}
table.dt td:first-child{color:var(--cyan); font-family:"JetBrains Mono",monospace; white-space:nowrap}
table.dt td.txt:first-child{color:#d7e3f2;font-family:inherit;white-space:normal}

.iv{background:var(--panel); border:1px solid var(--line); border-radius:16px; margin-top:18px; overflow:hidden}
.iv-head{display:flex; align-items:center; gap:12px; padding:14px 18px; background:linear-gradient(180deg,var(--panel2),transparent); border-bottom:1px solid var(--line)}
.iv-head .iv-ico{font-size:22px; line-height:1}
.iv-head .iv-t{flex:1}
.iv-head h3{margin:0; font-size:17px}
.iv-head .iv-s{font-size:12px; color:var(--muted); font-family:"JetBrains Mono",monospace; margin-top:2px}
.iv-head .iv-tag{font-family:"JetBrains Mono",monospace; font-size:11px; text-transform:uppercase; letter-spacing:.06em; color:var(--cyan); border:1px solid var(--line); border-radius:999px; padding:4px 10px;white-space:nowrap}
.iv-body{padding:18px}
.btn{cursor:pointer; font-family:inherit; font-size:13.5px; font-weight:600; border-radius:9px; padding:9px 16px; border:1px solid var(--line); background:var(--panel2); color:var(--ink); transition:.13s}
.btn:hover{border-color:var(--cyan); color:var(--cyan)}
.btn.primary{background:var(--cyan); color:#04222b; border-color:var(--cyan)}
.btn.primary:hover{filter:brightness(1.08); color:#04222b}
.btn:disabled{opacity:.45; cursor:not-allowed}
.btnrow{display:flex; gap:10px; flex-wrap:wrap; margin-top:14px}
.feed{margin-top:14px; font-size:13.5px; min-height:22px; font-family:"JetBrains Mono",monospace}
.feed.good{color:var(--green)} .feed.warn{color:var(--amber)} .feed.bad{color:var(--red)}

.errbox{margin-top:26px;padding:16px 18px;border:1px solid rgba(248,113,113,.4);border-radius:12px;background:rgba(248,113,113,.07);color:var(--red);font-size:13.5px;display:none}
.errbox.show{display:block}

/* ===== Tag Reference ===== */
.tag-ref{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px;margin-top:14px}
.tag-card{background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:12px;cursor:pointer;transition:.12s}
.tag-card:hover{border-color:var(--cyan)}
.tag-card .tc-name{font-family:"JetBrains Mono",monospace;font-size:14px;color:var(--cyan);font-weight:700}
.tag-card .tc-desc{font-size:12.5px;color:var(--muted);margin-top:4px;line-height:1.5}
.tag-card .tc-cat{font-family:"JetBrains Mono",monospace;font-size:10px;text-transform:uppercase;letter-spacing:.05em;padding:2px 7px;border-radius:6px;display:inline-block;margin-top:6px}
.tag-card .tc-cat.text{background:rgba(34,211,238,.1);color:var(--cyan);border:1px solid rgba(34,211,238,.3)}
.tag-card .tc-cat.struct{background:rgba(252,211,77,.1);color:var(--amber);border:1px solid rgba(252,211,77,.3)}
.tag-card .tc-cat.form{background:rgba(167,139,250,.1);color:var(--violet);border:1px solid rgba(167,139,250,.3)}
.tag-card .tc-cat.media{background:rgba(52,211,153,.1);color:var(--green);border:1px solid rgba(52,211,153,.3)}
.tag-card .tc-cat.seman{background:rgba(248,113,113,.1);color:var(--red);border:1px solid rgba(248,113,113,.3)}
.tag-filter{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.tag-filter .tf-btn{cursor:pointer;font-family:"JetBrains Mono",monospace;font-size:12px;padding:6px 14px;border-radius:8px;border:1px solid var(--line);background:var(--panel2);color:var(--muted);transition:.12s}
.tag-filter .tf-btn:hover{border-color:var(--cyan);color:var(--cyan)}
.tag-filter .tf-btn.active{border-color:var(--cyan);background:rgba(34,211,238,.1);color:var(--cyan)}

/* ===== Live Editor ===== */
.live-editor{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;min-height:400px}
.live-editor .le-code{background:var(--bg2);border-right:1px solid var(--line);display:flex;flex-direction:column}
.live-editor .le-tabs{display:flex;border-bottom:1px solid var(--line)}
.live-editor .le-tab{cursor:pointer;font-family:"JetBrains Mono",monospace;font-size:12px;padding:8px 16px;background:var(--panel);color:var(--muted);border:none;border-right:1px solid var(--line);transition:.1s}
.live-editor .le-tab:hover{color:var(--cyan)}
.live-editor .le-tab.active{background:var(--bg2);color:var(--cyan)}
.live-editor textarea{flex:1;width:100%;background:var(--bg2);color:var(--ink);border:none;padding:14px;font-family:"JetBrains Mono",monospace;font-size:13px;line-height:1.6;resize:none;outline:none;tab-size:2}
.live-editor .le-preview{background:#fff;display:flex;flex-direction:column}
.live-editor .le-preview-bar{background:var(--panel);padding:6px 12px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px}
.live-editor .le-preview-bar .dots{display:flex;gap:4px}
.live-editor .le-preview-bar .dot{width:8px;height:8px;border-radius:50%}
.live-editor .le-preview-bar .dot.r{background:var(--red)}
.live-editor .le-preview-bar .dot.y{background:var(--amber)}
.live-editor .le-preview-bar .dot.g{background:var(--green)}
.live-editor .le-preview-bar .url{font-family:"JetBrains Mono",monospace;font-size:11px;color:var(--muted);background:var(--bg2);border:1px solid var(--line);border-radius:6px;padding:3px 10px;flex:1}
.live-editor iframe{flex:1;border:none;width:100%;height:100%;min-height:350px}
@media(max-width:760px){.live-editor{grid-template-columns:1fr;grid-template-rows:1fr 1fr}}

/* ===== Color Table ===== */
.color-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;margin-top:14px}
.color-swatch{border-radius:10px;overflow:hidden;border:1px solid var(--line);cursor:pointer;transition:.12s}
.color-swatch:hover{transform:translateY(-2px);box-shadow:0 4px 16px rgba(0,0,0,.3)}
.color-swatch .cs-preview{height:60px}
.color-swatch .cs-info{background:var(--panel);padding:8px}
.color-swatch .cs-name{font-family:"JetBrains Mono",monospace;font-size:11px;color:var(--ink);font-weight:600}
.color-swatch .cs-hex{font-family:"JetBrains Mono",monospace;font-size:10px;color:var(--muted)}
.color-search{width:100%;background:var(--bg2);border:1px solid var(--line);border-radius:9px;padding:10px 14px;color:var(--ink);font-family:"JetBrains Mono",monospace;font-size:14px;outline:none;margin-bottom:14px}
.color-search:focus{border-color:var(--cyan)}

/* ===== Flexbox Playground ===== */
.flex-play{background:var(--bg2);border:1px solid var(--line);border-radius:12px;padding:16px}
.flex-controls{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.flex-controls .fc-group{display:flex;flex-direction:column;gap:4px}
.flex-controls .fc-label{font-family:"JetBrains Mono",monospace;font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.flex-controls select{background:var(--panel2);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:6px 10px;font-family:"JetBrains Mono",monospace;font-size:12px;outline:none}
.flex-controls select:focus{border-color:var(--cyan)}
.flex-demo{display:flex;gap:8px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px;min-height:200px;transition:.3s}
.flex-demo .fd-item{border-radius:8px;display:flex;align-items:center;justify-content:center;font-family:"JetBrains Mono",monospace;font-size:14px;font-weight:700;color:#fff;min-width:60px;min-height:60px;transition:.3s}
.flex-demo .fd-item:nth-child(1){background:var(--cyan);min-width:80px;min-height:80px}
.flex-demo .fd-item:nth-child(2){background:var(--amber);color:#04222b;min-width:60px;min-height:100px}
.flex-demo .fd-item:nth-child(3){background:var(--red);min-width:100px;min-height:60px}
.flex-demo .fd-item:nth-child(4){background:var(--green);min-width:70px;min-height:90px}
.flex-demo .fd-item:nth-child(5){background:var(--violet);min-width:90px;min-height:70px}
.flex-code{margin-top:12px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px;font-family:"JetBrains Mono",monospace;font-size:12px;color:var(--amber);line-height:1.6;overflow-x:auto}

/* ===== CSS Specificity ===== */
.spec-calc{background:var(--bg2);border:1px solid var(--line);border-radius:12px;padding:16px}
.spec-input{width:100%;background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:10px 14px;color:var(--cyan);font-family:"JetBrains Mono",monospace;font-size:14px;outline:none}
.spec-input:focus{border-color:var(--cyan)}
.spec-result{margin-top:14px;display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.spec-box{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px;text-align:center}
.spec-box .sb-val{font-family:"JetBrains Mono",monospace;font-size:24px;font-weight:700}
.spec-box .sb-label{font-family:"JetBrains Mono",monospace;font-size:10px;color:var(--muted);text-transform:uppercase;margin-top:4px}
.spec-box.inline .sb-val{color:var(--red)}
.spec-box.ids .sb-val{color:var(--amber)}
.spec-box.classes .sb-val{color:var(--cyan)}
.spec-box.types .sb-val{color:var(--green)}

/* ===== JS Console ===== */
.js-console{background:var(--bg2);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.js-console .jc-editor{border-bottom:1px solid var(--line)}
.js-console textarea{width:100%;min-height:120px;background:var(--bg2);color:var(--ink);border:none;padding:14px;font-family:"JetBrains Mono",monospace;font-size:13px;line-height:1.6;resize:vertical;outline:none;tab-size:2}
.js-console .jc-output{background:#020a14;min-height:100px;max-height:300px;overflow-y:auto;padding:12px;font-family:"JetBrains Mono",monospace;font-size:12px;line-height:1.6}
.js-console .jc-output .log-line{color:var(--ink);margin:2px 0}
.js-console .jc-output .log-line.error{color:var(--red)}
.js-console .jc-output .log-line.warn{color:var(--amber)}
.js-console .jc-output .log-line.info{color:var(--cyan)}

/* ===== Builder (page 8.4) ===== */
.builder-wrap{display:grid;grid-template-columns:280px 1fr;gap:0;border:1px solid var(--line);border-radius:14px;overflow:hidden;min-height:600px}
.builder-sidebar{background:var(--panel);border-right:1px solid var(--line);padding:14px;overflow-y:auto;max-height:700px}
.builder-sidebar h4{margin:0 0 10px;font-size:13px;color:var(--amber);font-family:"JetBrains Mono",monospace;text-transform:uppercase;letter-spacing:.05em}
.builder-sidebar .bs-cat{margin-bottom:16px}
.builder-sidebar .bs-cat-title{font-family:"JetBrains Mono",monospace;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px;padding-bottom:4px;border-bottom:1px solid var(--line)}
.bs-block{cursor:pointer;background:var(--bg2);border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin-bottom:6px;font-size:12px;color:var(--ink);transition:.12s;display:flex;align-items:center;gap:8px}
.bs-block:hover{border-color:var(--cyan);color:var(--cyan);background:rgba(34,211,238,.06)}
.bs-block .bs-ico{font-size:16px}
.bs-block .bs-name{flex:1}
.builder-main{display:flex;flex-direction:column;background:var(--bg2)}
.builder-toolbar{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.builder-toolbar .bt-case{font-family:"JetBrains Mono",monospace;font-size:12px;color:var(--amber);flex:1}
.builder-preview{flex:1;position:relative}
.builder-preview iframe{width:100%;height:100%;border:none;min-height:500px;background:#fff}
.builder-code-toggle{cursor:pointer;font-family:"JetBrains Mono",monospace;font-size:11px;padding:4px 10px;border-radius:6px;border:1px solid var(--line);background:var(--panel2);color:var(--muted)}
.builder-code-toggle:hover{border-color:var(--cyan);color:var(--cyan)}
.builder-code-panel{display:none;background:var(--bg2);border-top:1px solid var(--line);max-height:250px;overflow-y:auto}
.builder-code-panel.show{display:block}
.builder-code-panel pre{margin:0;padding:14px;font-family:"JetBrains Mono",monospace;font-size:12px;color:var(--amber);line-height:1.6;white-space:pre-wrap;word-break:break-all}
@media(max-width:760px){.builder-wrap{grid-template-columns:1fr;grid-template-rows:auto 1fr}.builder-sidebar{max-height:200px;border-right:none;border-bottom:1px solid var(--line)}}

/* ===== Case selector ===== */
.case-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin:14px 0}
.case-card{cursor:pointer;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px;transition:.15s;text-align:center}
.case-card:hover{border-color:var(--cyan);transform:translateY(-2px)}
.case-card.active{border-color:var(--cyan);background:rgba(34,211,238,.08)}
.case-card .cc-ico{font-size:32px;margin-bottom:8px}
.case-card .cc-title{font-size:15px;font-weight:700;color:var(--ink)}
.case-card .cc-desc{font-size:12px;color:var(--muted);margin-top:4px;line-height:1.5}

/* ===== Responsive width toggle ===== */
.width-toggle{display:flex;gap:6px;align-items:center}
.width-toggle .wt-btn{cursor:pointer;font-family:"JetBrains Mono",monospace;font-size:11px;padding:4px 10px;border-radius:6px;border:1px solid var(--line);background:var(--panel2);color:var(--muted);transition:.12s}
.width-toggle .wt-btn:hover{border-color:var(--cyan);color:var(--cyan)}
.width-toggle .wt-btn.active{border-color:var(--cyan);background:rgba(34,211,238,.1);color:var(--cyan)}

@media(max-width:560px){
  header h1{font-size:22px}
  .wrap{padding:0 13px}
  .sec-head h2{font-size:20px}
  .btn{padding:12px 18px;font-size:14px;min-height:44px}
  .btnrow{flex-direction:column}
  .btnrow .btn{width:100%}
  .tag-ref{grid-template-columns:1fr}
  .color-grid{grid-template-columns:repeat(auto-fill,minmax(90px,1fr))}
  .flex-controls{flex-direction:column}
  .spec-result{grid-template-columns:repeat(2,1fr)}
  .case-grid{grid-template-columns:1fr 1fr}
  .tblbox{margin-left:-13px;margin-right:-13px;border-radius:0;border-left:none;border-right:none}
}
@media(prefers-reduced-motion:reduce){
  *{animation:none !important; transition:none !important}
}
