/* The Marvel Reading Syllabus
   Dark theme reads as terminal. Light theme reads as newsprint. */

/* ---------------- tokens ---------------- */
:root{
  --grot:'Space Grotesk',system-ui,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,monospace;
  --serif:'Newsreader',Georgia,serif;
  --body:var(--grot);
  --measure:70ch;
  --paper-tex:none;
}
[data-theme="dark"]{
  --bg:#0B0D10; --panel:#111419; --panel2:#161A21;
  --line:#242A34; --line2:#39424F;
  --fg:#E4E7EC; --fg2:#9CA7B6; --fg3:#5A6474;
  --acc:#FF5A1F; --acc2:#FFB020; --cy:#31C4E8;
  --req:#FF5A1F; --opt:#31C4E8; --skp:#5A6474;
  --pill-req-fg:#0B0D10; --pill-opt-fg:#0B0D10; --pill-skp-bg:#252B34; --pill-skp-fg:#9CA7B6;
  --spoil:#D6417F; --adapt:#3DBE7A; --shadow:0 1px 0 #ffffff08;
  --grid-op:.28; --body:var(--grot);
}
[data-theme="light"]{
  --bg:#F2EBDD; --panel:#EAE1CE; --panel2:#E5DAC3;
  --line:#CFC2A9; --line2:#B0A188;
  --fg:#191412; --fg2:#5B5148; --fg3:#877C6E;
  --acc:#C42B1C; --acc2:#B07C08; --cy:#0F7FA8;
  --req:#C42B1C; --opt:#0F7FA8; --skp:#8B8175;
  --pill-req-fg:#FFF8EA; --pill-opt-fg:#FFF8EA; --pill-skp-bg:#DDD2BB; --pill-skp-fg:#5B5148;
  --spoil:#B02B6B; --adapt:#2F6B4F; --shadow:none;
  --grid-op:0; --body:var(--serif);
  --paper-tex:radial-gradient(#00000014 .5px,transparent .5px);
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:70px}
body{
  background:var(--bg); color:var(--fg); font-family:var(--body);
  font-size:16px; line-height:1.62; -webkit-font-smoothing:antialiased;
  background-image:var(--paper-tex); background-size:4px 4px; background-attachment:fixed;
  transition:background-color .2s,color .2s;
}
[data-theme="dark"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;opacity:var(--grid-op);
  background:linear-gradient(var(--line) 1px,transparent 1px) 0 0/100% 34px,
             linear-gradient(90deg,var(--line) 1px,transparent 1px) 0 0/34px 100%;
  mask-image:radial-gradient(ellipse 120% 80% at 50% 0%,#000 20%,transparent 78%);
}
.skip{position:absolute;left:-9999px}
.skip:focus{left:8px;top:8px;z-index:99;background:var(--acc);color:#fff;padding:8px 14px}
:focus-visible{outline:2px solid var(--acc);outline-offset:2px}

/* ---------------- top bar ---------------- */
.bar{position:sticky;top:0;z-index:30;border-bottom:1px solid var(--line);
  background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(10px)}
.bar-in{max-width:1300px;margin:0 auto;padding:0 24px;height:54px;display:flex;align-items:center;gap:16px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--fg);flex:none}
.glyph{width:20px;height:20px;border:1.5px solid var(--acc);transform:rotate(45deg);position:relative}
.glyph::after{content:"";position:absolute;inset:3.5px;background:var(--acc)}
.brand b{font-family:var(--mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;font-weight:700}
.sep{width:1px;height:18px;background:var(--line);flex:none}
.meta{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--fg3);white-space:nowrap}
.bar .right{margin-left:auto;display:flex;align-items:center;gap:12px}

.srch-wrap{position:relative}
.srch{font-family:var(--mono);font-size:11px;background:var(--panel);border:1px solid var(--line);
  color:var(--fg);padding:6px 11px;width:180px;border-radius:2px}
.srch::placeholder{color:var(--fg3)}
.srch:focus{outline:none;border-color:var(--acc);width:260px}
.srch,.srch:focus{transition:width .18s}
.results{position:absolute;top:34px;right:0;width:520px;max-height:60vh;overflow-y:auto;
  background:var(--panel);border:1px solid var(--line2);box-shadow:0 12px 32px #0006;z-index:40}
.results a{display:grid;grid-template-columns:74px 1fr;gap:10px;padding:9px 12px;text-decoration:none;
  border-bottom:1px solid var(--line)}
.results a:last-child{border-bottom:0}
.results a:hover,.results a.sel{background:var(--panel2)}
.results .rb{color:var(--fg);font-size:13.5px;font-weight:600;font-family:var(--grot)}
.results .rn{color:var(--fg3);font-size:12px;font-family:var(--grot);line-height:1.4}
.results .ri{font-family:var(--mono);font-size:10.5px;color:var(--acc2)}
.results .none{padding:14px 12px;color:var(--fg3);font-family:var(--mono);font-size:11px}

.prog{display:flex;align-items:center;gap:9px}
.prog .n{font-family:var(--mono);font-size:11px;color:var(--acc);min-width:30px;text-align:right}
.track-bar{width:120px;height:4px;background:var(--panel2);position:relative;overflow:hidden}
.track-bar span{position:absolute;inset:0 auto 0 0;width:0;background:linear-gradient(90deg,var(--acc),var(--acc2));transition:width .25s}
.tbtn{width:28px;height:28px;border:1px solid var(--line2);background:transparent;cursor:pointer;
  border-radius:2px;color:var(--fg2);transition:.14s;display:grid;place-items:center;flex:none}
.tbtn:hover{color:var(--fg);border-color:var(--acc)}
.tbtn svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.4}
.tbtn .i-moon{fill:currentColor;stroke:none}
[data-theme="dark"] .tbtn .i-moon{display:none}
[data-theme="light"] .tbtn .i-sun{display:none}

/* ---------------- layout ---------------- */
.shell{max-width:1300px;margin:0 auto;padding:0 24px;display:grid;
  grid-template-columns:236px minmax(0,1fr) 186px;gap:0}
.rail{position:sticky;top:54px;align-self:start;height:calc(100vh - 54px);overflow-y:auto;
  border-right:1px solid var(--line);padding:22px 20px 30px 0}
.rail h2{font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--fg3);margin:0 0 9px}
.rail ol{list-style:none;margin-bottom:22px}
.rail a{display:grid;grid-template-columns:24px 1fr auto;gap:8px;align-items:center;padding:6px 9px;
  text-decoration:none;color:var(--fg2);font-size:13px;font-family:var(--grot);line-height:1.25;
  border:1px solid transparent;transition:.13s}
.rail a .num{font-family:var(--mono);font-size:10px;color:var(--fg3)}
.rail a .pc{font-family:var(--mono);font-size:9px;color:var(--fg3);opacity:0}
.rail a .pc.has{opacity:1}
.rail a:hover{color:var(--fg);background:var(--panel)}
.rail a.on{color:var(--fg);background:var(--panel2);border-color:var(--line2)}
.rail a.on .num{color:var(--acc)}
.rail a.done .pc{color:var(--cy)}
.reset{font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;
  background:transparent;border:1px solid var(--line);color:var(--fg3);padding:6px 10px;cursor:pointer;width:100%}
.reset:hover{border-color:var(--spoil);color:var(--spoil)}

main{padding:30px 0 100px 36px;min-width:0}
.toc{position:sticky;top:54px;align-self:start;padding:34px 0 0 22px;max-height:calc(100vh - 54px);overflow-y:auto}
.toc h3{font-family:var(--mono);font-size:9.5px;letter-spacing:.19em;text-transform:uppercase;color:var(--fg3);margin-bottom:10px}
.toc a{display:block;font-family:var(--grot);font-size:12.5px;color:var(--fg3);text-decoration:none;
  padding:5px 0 5px 11px;border-left:2px solid var(--line);line-height:1.35;transition:.13s}
.toc a:hover{color:var(--fg)}
.toc a.on{color:var(--acc);border-left-color:var(--acc)}

/* ---------------- chapter head ---------------- */
.head{border:1px solid var(--line);background:var(--panel);padding:24px 26px;position:relative;overflow:hidden}
.head::after{content:attr(data-n);position:absolute;right:24px;bottom:-30px;font-family:var(--mono);
  font-weight:700;font-size:140px;line-height:1;color:var(--acc);opacity:.06;pointer-events:none}
.head>*{position:relative;z-index:1}
.tagrow{display:flex;gap:7px;align-items:center;margin-bottom:14px;flex-wrap:wrap}
.tag{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;
  border:1px solid var(--line2);color:var(--fg2);padding:3px 9px;white-space:nowrap}
.tag.hot{border-color:var(--acc);color:var(--acc)}
.title{font-family:var(--grot);font-size:clamp(27px,3.7vw,40px);font-weight:700;line-height:1.07;
  letter-spacing:-.026em;max-width:24ch}
[data-theme="light"] .title{text-transform:uppercase;letter-spacing:-.015em;font-weight:700}

.stats{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-top:0;background:var(--panel)}
.stat{padding:12px 15px;border-right:1px solid var(--line)}
.stat:last-child{border-right:0}
.stat b{display:block;font-family:var(--mono);font-size:18px;color:var(--acc);letter-spacing:-.02em;line-height:1.2}
.stat i{font-family:var(--mono);font-style:normal;font-size:9px;letter-spacing:.15em;text-transform:uppercase;color:var(--fg3)}

/* ---------------- prose ---------------- */
.prose{margin-top:8px}
.prose h2{font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--fg2);
  margin:40px 0 14px;display:flex;align-items:center;gap:11px}
.prose h2::before{content:"";width:8px;height:8px;background:var(--acc);flex:none;transform:rotate(45deg)}
.prose h2::after{content:"";flex:1;height:1px;background:var(--line)}
.prose h3{font-family:var(--grot);font-size:17px;font-weight:600;letter-spacing:-.015em;margin:26px 0 8px;color:var(--fg)}
.prose h4{font-family:var(--grot);font-size:14.5px;font-weight:600;margin:18px 0 6px;color:var(--fg)}
.prose p{margin-bottom:14px;max-width:var(--measure);color:var(--fg2)}
.prose strong{color:var(--fg);font-weight:600}
[data-theme="light"] .prose strong{font-weight:600}
.prose em{color:var(--fg)}
.prose a{color:var(--acc);text-underline-offset:3px}
.prose ul,.prose ol{margin:0 0 14px 20px;max-width:var(--measure);color:var(--fg2)}
.prose li{margin-bottom:5px}
.prose code{font-family:var(--mono);font-size:.86em;background:var(--panel2);padding:1px 5px;border-radius:2px;color:var(--acc2)}
.prose pre{background:var(--panel);border:1px solid var(--line);padding:14px 16px;overflow-x:auto;margin-bottom:16px}
.prose pre code{background:none;padding:0;color:var(--fg2);font-size:12.5px;line-height:1.55}
.prose hr{border:0;border-top:1px solid var(--line);margin:26px 0}

/* ---------------- callouts ---------------- */
.call{margin:22px 0;border:1px solid var(--line);background:var(--panel);
  border-left:3px solid var(--fg3);padding:15px 19px;max-width:var(--measure)}
.clbl{font-family:var(--mono);font-size:9.5px;letter-spacing:.19em;text-transform:uppercase;
  color:var(--fg3);display:block;margin-bottom:8px}
.call .cbody p{margin:0;font-size:15.5px;color:var(--fg2);max-width:none}
.call .cbody p+p{margin-top:9px}
.call.why{border-left-color:var(--cy)} .call.why .clbl{color:var(--cy)}
.call.spoiler{border-left-color:var(--spoil)} .call.spoiler .clbl{color:var(--spoil)}
.call.retcon{border-left-color:var(--acc2)} .call.retcon .clbl{color:var(--acc2)}
.call.adapt{border-left-color:var(--adapt)} .call.adapt .clbl{color:var(--adapt)}
.call.moved{border-left-color:var(--fg3)}
.call.check{border-left-color:var(--acc);background:var(--panel2)} .call.check .clbl{color:var(--acc)}
.reveal{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;
  background:transparent;border:1px solid var(--spoil);color:var(--spoil);padding:4px 11px;
  cursor:pointer;margin-bottom:10px;transition:.14s;border-radius:2px}
.reveal:hover{background:var(--spoil);color:var(--bg)}
.spoiler-body{filter:blur(6px);user-select:none;transition:filter .3s}
.spoiler-body.open{filter:none;user-select:auto}

/* ---------------- filters ---------------- */
.filters{display:flex;gap:7px;align-items:center;margin:24px 0 4px;flex-wrap:wrap;
  position:sticky;top:54px;z-index:12;padding:9px 0;
  background:color-mix(in srgb,var(--bg) 94%,transparent);backdrop-filter:blur(6px)}
.fl{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--fg3);margin-right:3px}
.chip{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;background:transparent;
  border:1px solid var(--line2);color:var(--fg2);padding:5px 11px;cursor:pointer;transition:.13s;border-radius:2px}
.chip:hover{color:var(--fg);border-color:var(--fg3)}
.chip[aria-pressed="true"]{font-weight:700}
.chip.req[aria-pressed="true"]{background:var(--req);border-color:var(--req);color:var(--pill-req-fg)}
.chip.opt[aria-pressed="true"]{background:var(--opt);border-color:var(--opt);color:var(--pill-opt-fg)}
.chip.skp[aria-pressed="true"]{background:var(--skp);border-color:var(--skp);color:var(--bg)}
.chip.gh{margin-left:auto}
.chip.gh[aria-pressed="true"]{background:var(--fg);border-color:var(--fg);color:var(--bg)}

/* ---------------- tables ---------------- */
.tw{overflow-x:auto;margin-bottom:18px}
.prose table{width:100%;border-collapse:collapse;font-size:14px;font-family:var(--grot);border:1px solid var(--line)}
.prose thead th{font-family:var(--mono);font-size:9px;letter-spacing:.15em;text-transform:uppercase;text-align:left;
  color:var(--fg3);padding:9px 10px;background:var(--panel2);border-bottom:1px solid var(--line);font-weight:400;white-space:nowrap}
.prose td{padding:10px;border-bottom:1px solid var(--line);vertical-align:top;color:var(--fg2)}
.prose tbody tr:last-child td{border-bottom:0}
.prose tbody tr{transition:background .13s}
.prose tbody tr:hover{background:var(--panel)}
table.read tr.hide{display:none}
td.c{width:32px}
input[type=checkbox]{appearance:none;width:15px;height:15px;border:1px solid var(--line2);background:transparent;
  cursor:pointer;position:relative;top:2px;transition:.13s;flex:none}
input[type=checkbox]:hover{border-color:var(--acc)}
input[type=checkbox]:checked{background:var(--acc);border-color:var(--acc)}
input[type=checkbox]:checked::after{content:"";position:absolute;left:4px;top:.5px;width:4px;height:9px;
  border:solid var(--bg);border-width:0 2px 2px 0;transform:rotate(42deg)}
tr.done td.bk,tr.done td.is,tr.done td.nt{opacity:.4}
td.v{width:84px}
.pill{font-family:var(--mono);font-size:8.5px;letter-spacing:.12em;text-transform:uppercase;padding:3px 7px;
  display:inline-block;white-space:nowrap;font-weight:700}
.pill.req{background:var(--req);color:var(--pill-req-fg)}
.pill.opt{background:var(--opt);color:var(--pill-opt-fg)}
.pill.skp{background:var(--pill-skp-bg);color:var(--pill-skp-fg)}
td.bk{font-weight:600;color:var(--fg);min-width:150px}
td.is{font-family:var(--mono);font-size:12px;color:var(--acc2);white-space:nowrap}
td.nt{font-size:13.5px;line-height:1.45}

/* ---------------- pager ---------------- */
.pager{display:grid;grid-template-columns:1fr 1fr;gap:13px;margin-top:50px}
.pager a{border:1px solid var(--line);background:var(--panel);padding:14px 17px;text-decoration:none;transition:.14s}
.pager a:hover{border-color:var(--acc);background:var(--panel2)}
.pager i{font-family:var(--mono);font-style:normal;font-size:9px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--fg3);display:block;margin-bottom:4px}
.pager b{color:var(--fg);font-size:14.5px;font-weight:600;font-family:var(--grot)}
.pager .nx{text-align:right}

/* ---------------- responsive ---------------- */
@media(max-width:1140px){
  .shell{grid-template-columns:220px minmax(0,1fr)}
  .toc{display:none}
}
@media(max-width:880px){
  .shell{grid-template-columns:1fr;padding:0 16px}
  .rail{position:static;height:auto;border-right:0;border-bottom:1px solid var(--line);padding:14px 0}
  .rail ol{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:12px}
  .rail a{border:1px solid var(--line)}
  main{padding:22px 0 70px}
  .bar-in{padding:0 16px;gap:10px}
  .meta,.sep{display:none}
  .srch{width:120px} .srch:focus{width:150px}
  .results{width:min(92vw,460px)}
  .stats{grid-template-columns:repeat(2,1fr)}
  .filters{position:static}
}
@media print{
  .bar,.rail,.toc,.filters,.pager,.reset,td.c{display:none}
  .shell{display:block;padding:0} main{padding:0}
  body{background:#fff;color:#000}
}
