
:root {
  --paper:#F3EFE6; --sheet:#FAF8F3; --ink:#1E1C19; --ink2:#4E4942;
  --mute:#857D72; --rule:#D6CDBE; --rule2:#E6DFD2;
  --accent:#7A2A21; --accent-ink:#FAF8F3; --tint:#EFE4DB; --ok:#46603E; --wait:#8A6A2E;
  --serif:"Noto Serif SC","Songti SC","STSong","SimSun",serif;
  --latin:"Cormorant Garamond","Noto Serif SC",Georgia,serif;
  --ui:-apple-system,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
  --plate:saturate(1.04) contrast(1.03);
  
  --bg:var(--sheet); --bg2:var(--paper); --panel:var(--sheet); --panel2:var(--paper);
  --line:var(--rule2); --line2:var(--rule); --text:var(--ink); --text2:var(--ink2); --muted:var(--mute);
  --accent2:var(--accent); --sea:var(--paper); --sea2:var(--rule2); --warn:var(--wait); --info:#4F6E80;
  --shadow:none; --radius:0; --sans:var(--ui); --mono:"SF Mono",Menlo,Consolas,monospace;
  color-scheme:light;
}
:root[data-theme="dark"] {
  --paper:#15140F; --sheet:#1C1A15; --ink:#EAE3D5; --ink2:#C2B9A9;
  --mute:#8E8678; --rule:#3B362D; --rule2:#2B2822;
  --accent:#C98371; --accent-ink:#15140F; --tint:#2D211D; --ok:#93AE88; --wait:#C9A866;
  --plate:saturate(1.02) contrast(1.03); --info:#91B6C6; color-scheme:dark;
}



* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  background: var(--bg);
  color: var(--text);
  font-family: var(--sans);
  font-size: 15px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
a:hover { color: var(--accent2); }
button { font: inherit; color: inherit; cursor: pointer; }
img { max-width: 100%; display: block; }
h1, h2, h3 { font-family: var(--serif); font-weight: 700; letter-spacing: .01em; margin: 0; }


.top {
  position: sticky; top: 0; z-index: 40;
  display: flex; align-items: center; gap: 18px;
  padding: 10px 22px;
  background: color-mix(in srgb, var(--bg) 88%, transparent);
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--line);
}
.brand { display: flex; align-items: center; gap: 10px; white-space: nowrap; }
.brand svg { width: 30px; height: 30px; }
.brand b { font-family: var(--serif); font-size: 18px; }
.brand small { color: var(--muted); font-size: 12px; display: block; line-height: 1.1; }
.nav { display: flex; gap: 2px; flex-wrap: wrap; flex: 1; }
.nav a { padding: 6px 11px; border-radius: 9px; color: var(--text2); font-size: 14px; }
.nav a:hover { background: var(--panel2); color: var(--text); }
.nav a.on { background: var(--panel2); color: var(--text); box-shadow: inset 0 -2px 0 var(--accent); }
.search { position: relative; }
.search input {
  width: 200px; padding: 7px 12px 7px 32px; border-radius: 10px;
  border: 1px solid var(--line); background: var(--panel); color: var(--text); font: inherit; font-size: 14px;
}
.search input:focus { outline: none; border-color: var(--accent); width: 260px; }
.search svg { position: absolute; left: 10px; top: 9px; width: 15px; height: 15px; color: var(--muted); }
.iconbtn { border: 1px solid var(--line); background: var(--panel); border-radius: 10px; padding: 6px 9px; }
.menu-toggle { display: none; }

main { max-width: 1280px; margin: 0 auto; padding: 26px 22px 80px; }
.foot { text-align: center; color: var(--muted); font-size: 12px; padding: 30px 16px 40px; border-top: 1px solid var(--line); }


.crumbs { color: var(--muted); font-size: 13px; margin-bottom: 14px; display: flex; gap: 6px; flex-wrap: wrap; }
.crumbs a { color: var(--text2); }
.crumbs span.sep { opacity: .5; }
.section { margin-top: 34px; }
.section > header { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.section > header h2 { font-size: 21px; }
.section > header .more { color: var(--muted); font-size: 13px; }
.lead { color: var(--text2); max-width: 760px; }
.muted { color: var(--muted); }
.small { font-size: 13px; }
.grid { display: grid; gap: 16px; }
.g2 { grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); }
.g3 { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.g4 { grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); }
.g6 { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
.g5 { grid-template-columns: repeat(auto-fill, minmax(185px, 1fr)); }
.g6x { grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); }
.card {
  background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius);
  overflow: hidden; transition: border-color .15s, transform .15s;
  display: flex; flex-direction: column;
}
a.card:hover, .card.click:hover { border-color: var(--line2); transform: translateY(-2px); color: inherit; }
.card .pad { padding: 14px 16px; }
.card h3 { font-size: 16px; line-height: 1.4; }
.card .meta { color: var(--muted); font-size: 12.5px; margin-top: 6px; }
.thumb {
  aspect-ratio: 16/9; background: var(--panel2); position: relative; overflow: hidden;
  display: flex; align-items: center; justify-content: center; color: var(--muted);
}
.thumb.tall { aspect-ratio: 3/4; }
.thumb img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.thumb .ph { font-family: var(--serif); font-size: 26px; opacity: .55; text-align: center; padding: 10px; }
.thumb .tag { position: absolute; left: 10px; top: 10px; }
.chip {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 12px; padding: 2px 9px; border-radius: 999px;
  background: var(--panel2); border: 1px solid var(--line); color: var(--text2); white-space: nowrap;
}
.chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; flex: none; }
.badge { font-size: 11.5px; padding: 2px 8px; border-radius: 6px; font-weight: 600; letter-spacing: .02em; white-space: nowrap; }
.b-pub { background: color-mix(in srgb, var(--ok) 22%, transparent); color: var(--ok); }
.b-rev { background: color-mix(in srgb, var(--warn) 20%, transparent); color: var(--warn); }
.b-draft { background: color-mix(in srgb, var(--info) 20%, transparent); color: var(--info); }
.b-plan { background: var(--panel2); color: var(--muted); border: 1px dashed var(--line2); }
.b-special { background: color-mix(in srgb, var(--accent) 20%, transparent); color: var(--accent2); }
.btn {
  display: inline-flex; align-items: center; gap: 7px; padding: 7px 13px; border-radius: 10px;
  border: 1px solid var(--line); background: var(--panel2); font-size: 13.5px; color: var(--text);
}
.btn:hover { border-color: var(--accent); color: var(--text); }
.btn.primary { background: var(--accent); border-color: var(--accent); color: #fff; }
.btns { display: flex; gap: 8px; flex-wrap: wrap; }
.empty { padding: 30px; text-align: center; color: var(--muted); border: 1px dashed var(--line2); border-radius: var(--radius); }
.stat-row { display: flex; gap: 10px; flex-wrap: wrap; }
.stat { background: var(--panel); border: 1px solid var(--line); border-radius: 12px; padding: 10px 16px; min-width: 112px; }
.stat b { font-family: var(--serif); font-size: 24px; display: block; line-height: 1.2; }
.stat span { color: var(--muted); font-size: 12.5px; }
.toolbar { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin-bottom: 14px; }
.seg { display: inline-flex; border: 1px solid var(--line); border-radius: 10px; overflow: hidden; }
.seg button { border: 0; background: var(--panel); padding: 6px 12px; font-size: 13px; color: var(--text2); }
.seg button.on { background: var(--panel2); color: var(--text); box-shadow: inset 0 -2px 0 var(--accent); }
.field { padding: 7px 11px; border-radius: 10px; border: 1px solid var(--line); background: var(--panel); color: var(--text); font: inherit; font-size: 13.5px; }
.pager { display: flex; gap: 6px; justify-content: center; margin-top: 18px; align-items: center; }
.list { border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; background: var(--panel); }
.row { display: flex; gap: 12px; align-items: center; padding: 10px 14px; border-top: 1px solid var(--line); }
.row:first-child { border-top: 0; }
.row:hover { background: var(--panel2); }
.row .grow { flex: 1; min-width: 0; }
.row .name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.row .ico { width: 30px; height: 30px; border-radius: 8px; display: flex; align-items: center; justify-content: center; background: var(--panel2); flex: none; font-size: 12px; color: var(--text2); }
.path { font-family: var(--mono); font-size: 11.5px; color: var(--muted); word-break: break-all; }


.hero { display: grid; grid-template-columns: 1fr auto; gap: 20px; align-items: end; margin-bottom: 18px; }
.hero h1 { font-size: 38px; line-height: 1.15; }
.hero h1 em { font-style: normal; color: var(--accent2); }
.hero p { color: var(--text2); margin: 8px 0 0; max-width: 640px; }
.mapwrap {
  position: relative; border-radius: 20px; overflow: hidden; border: 1px solid var(--line);
  background: radial-gradient(1200px 600px at 50% 40%, var(--sea2), var(--sea));
  box-shadow: var(--shadow);
}
.mapwrap svg { width: 100%; height: auto; display: block; }
.island { cursor: pointer; transition: transform .25s ease, filter .25s; transform-box: fill-box; transform-origin: center; }
.island:hover, .island.hl { transform: scale(1.035); filter: brightness(1.18) drop-shadow(0 0 14px rgba(255,255,255,.08)); }
.island text { pointer-events: none; }
.map-name { font-family: var(--serif); font-weight: 700; fill: var(--text); }
.map-en { font-size: 11px; letter-spacing: .18em; fill: var(--muted); text-transform: uppercase; }
.map-count { font-size: 12px; fill: var(--text2); }
.pinflag { cursor: pointer; }
.maptip {
  position: absolute; right: 16px; top: 16px; width: 280px; padding: 14px 16px;
  background: color-mix(in srgb, var(--panel) 92%, transparent); border: 1px solid var(--line); border-radius: 14px;
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); font-size: 13.5px; color: var(--text2);
  pointer-events: none; transition: opacity .2s;
}
.maptip h3 { color: var(--text); font-size: 18px; margin-bottom: 4px; }
.region-legend { display: none; }


.region-hero { border-radius: 20px; padding: 28px 30px; border: 1px solid var(--line); background: var(--panel); position: relative; overflow: hidden; }
.region-hero::before { content: ""; position: absolute; inset: 0; background: radial-gradient(600px 220px at 0% 0%, var(--rc), transparent 70%); opacity: .22; }
.region-hero > * { position: relative; }
.region-hero h1 { font-size: 34px; }
.region-hero .en { letter-spacing: .2em; text-transform: uppercase; font-size: 12px; color: var(--muted); }


.course-hero { display: grid; grid-template-columns: 260px 1fr; gap: 26px; align-items: start; }
.course-hero .thumb { border-radius: var(--radius); border: 1px solid var(--line); }
.course-hero h1 { font-size: 30px; }
.ep-num { font-family: var(--mono); font-size: 12px; color: var(--accent2); letter-spacing: .05em; }
.collapse { max-height: 220px; overflow: hidden; position: relative; }
.collapse::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 70px; background: linear-gradient(transparent, var(--panel)); }
.collapse.open { max-height: none; }
.collapse.open::after { display: none; }


.ep-layout { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 24px; align-items: start; }
.player { background: #000; border-radius: var(--radius); overflow: hidden; border: 1px solid var(--line); }
.player video { width: 100%; max-height: 72vh; display: block; background: #000; }
.player .err { color: #ddd; padding: 40px 20px; text-align: center; font-size: 14px; }
.side { position: sticky; top: 76px; display: flex; flex-direction: column; gap: 14px; }
.box { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); padding: 14px 16px; }
.box h3 { font-size: 15px; margin-bottom: 8px; }
.kv { display: grid; grid-template-columns: 76px 1fr; gap: 4px 10px; font-size: 13.5px; }
.kv dt { color: var(--muted); }
.kv dd { margin: 0; }
.tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--line); margin: 24px 0 16px; overflow-x: auto; }
.tabs button { border: 0; background: none; padding: 9px 14px; color: var(--text2); border-bottom: 2px solid transparent; white-space: nowrap; font-size: 14.5px; }
.tabs button.on { color: var(--text); border-bottom-color: var(--accent); }
.tabs button i { font-style: normal; color: var(--muted); font-size: 12px; margin-left: 4px; }
.note { background: var(--panel); border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; margin-bottom: 10px; }
.note.author { border-left: 3px solid var(--accent); }
.note.ai { border-left: 3px solid var(--info); }
.note header { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; font-size: 12.5px; color: var(--muted); margin-bottom: 6px; }
.note .txt { white-space: pre-wrap; font-size: 14px; color: var(--text2); max-height: 9.6em; overflow: hidden; }
.note .txt.open { max-height: none; }
.note .exp { font-size: 12.5px; color: var(--accent2); background: none; border: 0; padding: 4px 0 0; }
.clip { display: grid; grid-template-columns: 30px 1fr auto; gap: 10px; align-items: center; }


.md { font-size: 15px; line-height: 1.8; color: var(--text2); max-width: 820px; }
.md h1, .md h2, .md h3, .md h4 { color: var(--text); margin: 1.4em 0 .5em; line-height: 1.35; }
.md h1 { font-size: 26px; } .md h2 { font-size: 21px; } .md h3 { font-size: 17px; }
.md a { color: var(--accent2); text-decoration: underline; text-underline-offset: 3px; }
.md code { font-family: var(--mono); font-size: .88em; background: var(--panel2); padding: 1px 5px; border-radius: 5px; }
.md pre { background: var(--panel2); padding: 12px 14px; border-radius: 10px; overflow-x: auto; }
.md pre code { background: none; padding: 0; }
.md blockquote { margin: 1em 0; padding: 4px 16px; border-left: 3px solid var(--accent); color: var(--text2); background: var(--panel2); border-radius: 0 8px 8px 0; }
.md table { border-collapse: collapse; display: block; overflow-x: auto; font-size: 13.5px; }
.md th, .md td { border: 1px solid var(--line); padding: 6px 10px; text-align: left; vertical-align: top; }
.md th { background: var(--panel2); color: var(--text); }
.md img { border-radius: 8px; margin: 8px 0; }
.md hr { border: 0; border-top: 1px solid var(--line); margin: 2em 0; }
.reader { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: 28px; align-items: start; }
.reader aside { position: sticky; top: 76px; max-height: calc(100vh - 100px); overflow: auto; font-size: 13.5px; }
.reader aside a { display: block; padding: 5px 10px; border-radius: 8px; color: var(--text2); }
.reader aside a.on, .reader aside a:hover { background: var(--panel2); color: var(--text); }
.reader aside .gh { font-size: 12px; color: var(--muted); padding: 10px 10px 4px; letter-spacing: .05em; }


.modal { position: fixed; inset: 0; z-index: 100; background: rgba(5,6,8,.78); display: flex; align-items: center; justify-content: center; padding: 24px; }
.modal .inner { background: var(--panel); border: 1px solid var(--line); border-radius: 16px; width: min(1100px, 100%); max-height: 92vh; overflow: auto; box-shadow: var(--shadow); }
.modal .mhead { display: flex; align-items: center; gap: 12px; padding: 12px 16px; border-bottom: 1px solid var(--line); position: sticky; top: 0; background: var(--panel); z-index: 2; }
.modal .mhead h3 { flex: 1; font-size: 16px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.modal .mbody { padding: 16px; }
.modal video, .modal img, .modal iframe, .modal audio { width: 100%; max-height: 70vh; background: #000; border-radius: 10px; }
.modal img { object-fit: contain; background: transparent; }
.modal iframe { height: 72vh; border: 0; background: #fff; }
.toast { position: fixed; bottom: 22px; left: 50%; transform: translateX(-50%); background: var(--panel2); border: 1px solid var(--line2); padding: 8px 16px; border-radius: 10px; z-index: 200; font-size: 13.5px; }


.wall { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
.wall a { aspect-ratio: 1; border-radius: 10px; overflow: hidden; background: var(--panel2); border: 1px solid var(--line); }
.wall img { width: 100%; height: 100%; object-fit: cover; }


@media (max-width: 980px) {
  .ep-layout, .course-hero, .reader { grid-template-columns: 1fr; }
  .side, .reader aside { position: static; max-height: none; }
  .hero { grid-template-columns: 1fr; }
  .maptip { display: none; }
}
@media (max-width: 720px) {
  .top { flex-wrap: wrap; padding: 10px 16px; gap: 10px; }
  .menu-toggle { display: inline-flex; margin-left: auto; }
  .nav { display: none; order: 3; flex-basis: 100%; }
  .nav.open { display: flex; }
  .search { order: 4; flex-basis: 100%; }
  .search input, .search input:focus { width: 100%; }
  main { padding: 18px 16px 60px; }
  .hero h1 { font-size: 28px; }
  .region-legend { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 12px; }
  .g2, .g3 { grid-template-columns: 1fr; }
  .g4, .g5, .g6x { grid-template-columns: 1fr 1fr; }
}


.seg a.segb { display: inline-block; padding: 6px 12px; font-size: 13px; color: var(--text2); background: var(--panel); }
.seg a.segb.on { background: var(--panel2); color: var(--text); box-shadow: inset 0 -2px 0 var(--accent); }
.ldots { display: inline-flex; gap: 4px; vertical-align: middle; }
.ldots.legend span { font-size: 11px; color: var(--muted); white-space: nowrap; }
.trow .ldots { display: grid; grid-template-columns: repeat(6, 34px); justify-items: center; align-items: center; }
.trow .tmeta { width: 170px; }
.trow.thead { background: var(--bg2); }
.ld { width: 10px; height: 10px; border-radius: 50%; border: 1.5px solid var(--line2); display: inline-block; flex: none; }
.ld.half { background: color-mix(in srgb, var(--accent) 35%, transparent); border-color: color-mix(in srgb, var(--accent) 60%, transparent); }
.ld.full { background: var(--accent); border-color: var(--accent); }
.tree { border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel); overflow: hidden; }
.trow { display: flex; align-items: center; gap: 12px; padding: 7px 14px; border-top: 1px solid var(--line); }
.trow:first-child { border-top: 0; }
.trow:hover { background: var(--panel2); }
.trow .tname { flex: 1; min-width: 0; }
.trow .tcat { font-family: var(--serif); font-weight: 700; color: var(--accent2); font-size: 16px; }
.trow.d0 { background: var(--panel2); }
.trow.d1 { padding-left: 34px; } .trow.d2 { padding-left: 58px; } .trow.d3 { padding-left: 82px; } .trow.d4 { padding-left: 106px; }
.tmeta { display: inline-flex; gap: 6px; align-items: center; flex-wrap: wrap; justify-content: flex-end; }
.flow { display: flex; align-items: stretch; gap: 8px; flex-wrap: wrap; }
.flow i { font-style: normal; color: var(--muted); align-self: center; font-size: 18px; }
.fbox { flex: 1 1 150px; background: var(--panel); border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; }
.fbox b { display: block; font-family: var(--serif); font-size: 16px; }
.fbox span { font-size: 12.5px; color: var(--muted); }
.fbox.hl { border-color: var(--accent); box-shadow: inset 0 0 0 1px var(--accent); }
.lens > header { border-bottom: 1px solid var(--line); padding-bottom: 6px; }
@media (max-width: 720px) { .trow .ldots { display: none; } .flow i { display: none; } }


body.map-mode main { max-width: none; padding: 0; }
body.map-mode .foot { display: none; }
.mapapp { height: calc(100vh - 61px); display: flex; flex-direction: column; }
.mapbar { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; padding: 8px 16px; border-bottom: 1px solid var(--line); background: var(--bg2); }
.mapbar > div:first-child { flex: 1; min-width: 220px; }
.mapbody { flex: 1; display: flex; min-height: 0; }
.mapstage { flex: 1; position: relative; overflow: hidden; background: radial-gradient(1200px 700px at 40% 30%, #12304a, #07131f); cursor: grab; touch-action: none; }
.mapstage.dragging { cursor: grabbing; }
.maphint { position: absolute; left: 12px; bottom: 10px; font-size: 12px; color: #8fb3c8; background: rgba(4,14,24,.7); padding: 4px 10px; border-radius: 8px; pointer-events: none; }
.mapworld { position: absolute; left: 0; top: 0; transform-origin: 0 0; color: #dbe9f2; }
.mapworld.anim { transition: transform .45s cubic-bezier(.2,.7,.2,1); }
.mlane { position: absolute; top: 0; height: 100%; }
.mlanehead { font-size: 18px; color: #cfe6f3; padding: 18px 4px; border-top: 2px solid #2d6c87; }
.mlanehead b { color: #fff; }
.mcard { position: absolute; background: rgba(13,35,54,.92); border: 1.5px solid #2f6f8f; border-radius: 12px; padding: 12px 14px; cursor: pointer; transition: opacity .25s, box-shadow .2s, border-color .2s; }
.mcard:hover { border-color: #5fb3d6; box-shadow: 0 0 0 3px rgba(95,179,214,.15); }
.mcard.sel { border-color: #ff8a5c; box-shadow: 0 0 0 4px rgba(255,138,92,.25); }
.mcard.onroute { border-color: #e6c15a; }
.mcard.dim { opacity: .35; }
.mhead { display: flex; align-items: center; gap: 10px; }
.mid { color: #5fd0e6; font-family: var(--mono); font-size: 14px; }
.mtitle { font-size: 20px; font-weight: 700; color: #fff; flex: 1; }
.minit { font-size: 11.5px; color: #e6c15a; border: 1px solid rgba(230,193,90,.5); border-radius: 6px; padding: 1px 6px; }
.men { font-size: 11.5px; color: #7fa6bd; margin: 2px 0 8px; }
.mthumbs { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }
.mthumb { position: relative; aspect-ratio: 16/9; background: #0a1b2a; border: 1px solid #2a5870; border-radius: 4px; overflow: hidden; cursor: zoom-in; }
.mthumb img { width: 100%; height: 100%; object-fit: cover; }
.mthumb span { position: absolute; left: 0; right: 0; bottom: 0; font-size: 10px; background: rgba(3,10,18,.75); color: #cfe6f3; padding: 0 3px; font-family: var(--mono); }
.mthumb:hover { border-color: #ff8a5c; }
.mdeep { margin-top: 10px; font-size: 13px; color: #b9d3e2; border-top: 1px dashed #2a5870; padding-top: 8px; }
.mdeep b { color: #fff; }
.mbr { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
.mbr span { font-size: 11.5px; background: #12324b; border: 1px solid #2a5870; border-radius: 6px; padding: 1px 6px; }
.mfoot { font-size: 11.5px; color: #7fa6bd; margin-top: 8px; }
.mnote { position: absolute; font-size: 15px; color: #5fd0e6; line-height: 1.7; padding: 4px 8px; }

.mcard::after { content: attr(data-title); position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 46px; font-weight: 700; color: #fff; background: rgba(9,26,41,.86); border-radius: 12px; opacity: 0; pointer-events: none; transition: opacity .25s; letter-spacing: .02em; }
.z-low .mcard::after { opacity: 1; }
.medges { position: absolute; left: 0; top: 0; overflow: visible; pointer-events: none; }
.medge { fill: none; stroke: #3e88a8; stroke-width: 2; color: #3e88a8; opacity: .75; transition: opacity .25s, stroke .25s; }
.medge.t-克制 { stroke: #e0605a; color: #e0605a; stroke-dasharray: 8 6; }
.medge.t-对照 { stroke: #b48ce0; color: #b48ce0; stroke-dasharray: 2 6; }
.medge.out { stroke: #ff8a5c; color: #ff8a5c; stroke-width: 3.5; opacity: 1; }
.medge.route { stroke: #e6c15a; color: #e6c15a; stroke-width: 4; opacity: 1; }
.medge.dim { opacity: .12; }
.mlabel { position: absolute; transform: translate(-50%, -50%); display: none; font-size: 13px; background: rgba(40,18,8,.92); color: #ffd7c6; border: 1px solid #ff8a5c; border-radius: 8px; padding: 3px 8px; max-width: 220px; pointer-events: none; z-index: 3; }
.mlabel.show { display: block; }
.mapside { width: 430px; flex: none; overflow-y: auto; border-left: 1px solid var(--line); background: var(--bg); }
.mside-in { padding: 16px 18px 40px; }
.msec { margin-top: 16px; padding-top: 12px; border-top: 1px solid var(--line); font-size: 14px; color: var(--text2); }
.msec h4 { margin: 0 0 8px; font-size: 14px; color: var(--text); font-family: var(--serif); }
.mtwo { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.mside-card { background: var(--panel); border: 1px solid var(--line); border-radius: 10px; padding: 10px; }
.mside-card.me { border-color: var(--accent); box-shadow: inset 0 0 0 1px var(--accent); }
.msol { display: flex; gap: 10px; background: var(--panel); border: 1px solid var(--line); border-radius: 10px; padding: 10px; margin-bottom: 8px; cursor: pointer; }
.msol:hover { border-color: var(--accent); }
.msol-n { width: 24px; height: 24px; border-radius: 50%; background: var(--accent); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 13px; flex: none; }
.mini-thumbs { display: flex; gap: 4px; margin: 6px 0; flex-wrap: wrap; }
.mini-thumbs img { width: 64px; height: 36px; object-fit: cover; border-radius: 3px; cursor: zoom-in; border: 1px solid var(--line); }
.mgrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.mclip { cursor: pointer; }
.mthumb.big span { font-size: 11px; }
.mroute { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 12px; font-size: 13px; }
.mroute a { padding: 2px 8px; border-radius: 6px; background: var(--panel2); }
.mroute a.on { background: var(--accent); color: #fff; }
.mroute i { font-style: normal; color: #e6c15a; }
.mbranch { margin-bottom: 10px; }
.lt { display: inline-block; width: 22px; height: 0; border-top: 2px solid #3e88a8; vertical-align: middle; margin-right: 6px; }
.lt.t-克制 { border-top: 2px dashed #e0605a; } .lt.t-对照 { border-top: 2px dotted #b48ce0; }
@media (max-width: 900px) {
  .mapapp { height: auto; }
  .mapbody { flex-direction: column; }
  .mapstage { height: 62vh; flex: none; }
  .mapside { width: auto; border-left: 0; border-top: 1px solid var(--line); }
}


.mrulehead { position: absolute; font-size: 16px; color: #c9b3f0; letter-spacing: .05em; }
.mrule { position: absolute; background: rgba(48,32,78,.85); border: 1.5px solid #9a7fd1; border-radius: 10px; padding: 8px 10px; cursor: pointer; transition: box-shadow .2s, opacity .2s; }
.mrule:hover, .mrule.on { box-shadow: 0 0 0 3px rgba(154,127,209,.45); border-color: #c9b3f0; }
.mr-t { font-size: 13.5px; color: #fff; line-height: 1.35; }
.mr-s { font-size: 11.5px; color: #b9a6e0; margin-top: 4px; }
.norules .mrule, .norules .mrulehead { opacity: .12; pointer-events: none; }
.rline { fill: none; stroke: #b48ce0; stroke-width: 2.5; stroke-dasharray: 6 6; opacity: .9; }
.msec { margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--line); font-size: 14px; color: var(--text2); }
details.msec > summary { list-style: none; cursor: pointer; }
details.msec > summary::-webkit-details-marker { display: none; }
details.msec > summary h4::before { content: "▸ "; color: var(--muted); }
details.msec[open] > summary h4::before { content: "▾ "; }
.msec-in { margin-top: 8px; }
.msec h4 { display: inline; }
.msec.fixed h4 { display: block; margin-bottom: 8px; }
.rchip { border-color: #9a7fd1; color: #c9b3f0; }
.qchip { border-color: rgba(95,174,123,.6); color: #8fd1a5; }
details.lad { border: 1px solid var(--line); border-radius: 8px; padding: 6px 10px; margin-bottom: 6px; background: var(--panel); }
details.lad summary { cursor: pointer; }
.lad-in { margin-top: 6px; }
.kp { margin-bottom: 6px; font-size: 13.5px; }
.steps .step { display: flex; gap: 10px; margin-bottom: 10px; }
.steps .step > span { width: 24px; height: 24px; border-radius: 50%; background: var(--accent); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 13px; flex: none; }
.tour { position: absolute; left: 16px; bottom: 44px; width: min(420px, calc(100% - 32px)); background: var(--panel); border: 1.5px solid var(--accent); border-radius: 14px; padding: 14px 16px; box-shadow: var(--shadow); z-index: 5; color: var(--text); }
.lt.rl { border-top: 2px dashed #b48ce0; } .lt.gold { border-top: 3px solid #e6c15a; } .lt.orange { border-top: 3px solid #ff8a5c; }
.pstage { display: flex; gap: 16px; margin-top: 22px; padding-top: 18px; border-top: 1px solid var(--line); }
.pnum { width: 40px; height: 40px; border-radius: 50%; background: var(--accent); color: #fff; font-family: var(--serif); font-size: 20px; display: flex; align-items: center; justify-content: center; flex: none; }
.pstage h2 { font-size: 21px; }
.plist { margin-top: 10px; display: flex; flex-direction: column; gap: 6px; }
.pitem { display: flex; gap: 10px; align-items: flex-start; background: var(--panel); border: 1px solid var(--line); border-radius: 10px; padding: 8px 12px; cursor: pointer; font-size: 14px; }
.pitem input { margin-top: 4px; accent-color: var(--accent); }
.pitem.done { opacity: .6; }
.pitem.done > span > div:first-child { text-decoration: line-through; }
.ptech { margin-top: 12px; }
.pcrit { margin-top: 10px; font-size: 13px; color: var(--text2); background: var(--panel2); border-radius: 8px; padding: 8px 12px; }
.ringwrap { display: grid; grid-template-columns: minmax(280px, 520px) 1fr; gap: 26px; align-items: start; margin-top: 18px; }
.ringwrap svg.rings { width: 100%; height: auto; position: sticky; top: 80px; }
.ring { cursor: pointer; transition: fill-opacity .2s; }
.ring:hover { fill-opacity: .45; }
.ringlabel { fill: var(--text); font-size: 15px; font-weight: 700; cursor: pointer; font-family: var(--serif); }
.ringbox { margin-bottom: 12px; transition: box-shadow .3s; }
.ringbox.flash { box-shadow: 0 0 0 3px var(--accent); }
@media (max-width: 900px) { .ringwrap { grid-template-columns: 1fr; } .ringwrap svg.rings { position: static; } }


.mfoot { display: flex; align-items: center; gap: 8px; }
.mfoot .grow { flex: 1; }
.mexp { border: 1px solid #5fb3d6; background: rgba(95,179,214,.12); color: #bfe6f6; border-radius: 8px; padding: 3px 10px; font-size: 12.5px; cursor: pointer; white-space: nowrap; }
.mexp:hover { background: rgba(95,179,214,.28); }
.mcard.open { border-bottom-left-radius: 4px; }
.msub { position: absolute; background: rgba(16,44,66,.94); border: 1.3px solid #3d86a8; border-left: 3px solid #5fd0e6; border-radius: 9px; padding: 8px 12px; cursor: pointer;
  opacity: 0; visibility: hidden; transform: translateY(-14px) scale(.97); transform-origin: top left; transition: opacity .3s, transform .35s, visibility .3s, box-shadow .2s, border-color .2s; }
.msub.show { opacity: 1; visibility: visible; transform: none; }
.msub:hover { border-color: #8fd8f0; box-shadow: 0 0 0 3px rgba(95,179,214,.18); }
.msub.sel { border-color: #ff8a5c; border-left-color: #ff8a5c; box-shadow: 0 0 0 4px rgba(255,138,92,.25); }
.msub.dim { opacity: .35; }
.msub-t { display: flex; align-items: center; gap: 8px; font-size: 15.5px; color: #fff; }
.msub-t .mid { font-size: 12px; }
.msub-t b { flex: 1; }
.msub-d { font-size: 12.5px; color: #a9c8da; margin-top: 2px; }
.msub-n { font-size: 11.5px; color: #7fa6bd; margin-top: 3px; }
.gapw { color: #e6c15a; font-weight: 600; }
.msub::after { content: attr(data-title); position: absolute; inset: 0; display: flex; align-items: center; padding-left: 14px; font-size: 26px; font-weight: 700; color: #fff; background: rgba(12,34,52,.9); border-radius: 9px; opacity: 0; pointer-events: none; transition: opacity .25s; }
.z-low .msub.show::after { opacity: 1; }
.subline { fill: none; stroke: #5fd0e6; stroke-width: 2; opacity: .7; }
.lt.sb { border-top: 2px solid #5fd0e6; }
.mapworld.lay .mcard { transition: top .35s ease, opacity .25s, box-shadow .2s, border-color .2s, filter .3s; }
.mapworld.lay .msub { transition: top .35s ease, opacity .3s, transform .35s, visibility .3s, box-shadow .2s, border-color .2s, filter .3s; }
.mapworld.lay .mnote { transition: top .35s ease; }
.mapworld.moving .medges, .mapworld.moving .mlabel { opacity: 0; }
.medges { transition: opacity .25s; }

.gdot { width: 9px; height: 9px; border-radius: 50%; display: none; }
.mine .gdot { display: inline-block; background: #3a4b58; }
.mine [data-g="1"] .gdot { background: #e6c15a; }
.mine [data-g="2"] .gdot { background: #ffd56a; box-shadow: 0 0 8px #ffd56a; }
.mine .mcard[data-g="0"], .mine .msub[data-g="0"] { filter: grayscale(1) brightness(.72); border-style: dashed; }
.mine .mcard[data-g="0"] .mthumbs, .mine .mcard[data-g="0"] .mdeep { opacity: .18; }
.mine .mcard[data-g="1"], .mine .msub[data-g="1"] { border-color: #b8963c; border-style: dashed; }
.mine .mcard[data-g="2"], .mine .msub[data-g="2"] { border-color: #ffd56a; box-shadow: 0 0 0 2px rgba(255,213,106,.35), 0 0 26px rgba(255,213,106,.25); }
.mine .gnext { filter: none !important; animation: gpulse 1.6s ease-in-out infinite; }
@keyframes gpulse { 0%,100% { box-shadow: 0 0 0 2px rgba(255,213,106,.15); } 50% { box-shadow: 0 0 0 6px rgba(255,213,106,.45); } }
.gst.g2 { color: #ffd56a; } .gst.g1 { color: #e6c15a; } .gst.g0 { color: #7fa6bd; }
.gbtn { border-color: #b8963c; color: #ffd56a; }
.gblock .gseg button.on { box-shadow: inset 0 -2px 0 #e6c15a; }
.gblock.g2 { border-top-color: #b8963c; }
.badges { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px; }
.bdg { border: 1px dashed var(--line2); border-radius: 10px; padding: 8px 10px; opacity: .65; }
.bdg.ok { border: 1px solid #b8963c; background: color-mix(in srgb, #e6c15a 12%, transparent); opacity: 1; }
.bdg.ok b { color: #c9962a; }

.chain { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; font-size: 12.5px; padding: 8px 10px; background: var(--panel); border: 1px solid var(--line); border-radius: 10px; }
.chain i { font-style: normal; color: var(--muted); }
.chain b { color: var(--accent2); }
.chain a { padding: 1px 6px; border-radius: 6px; background: var(--panel2); }
.sibs { margin-top: 10px; }
.chip.on { border-color: var(--accent); color: var(--accent2); }
.subgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.subchip { display: flex; flex-direction: column; gap: 2px; border: 1px solid var(--line); border-left: 3px solid #5fb3d6; background: var(--panel); border-radius: 8px; padding: 6px 9px; font-size: 13.5px; }
.subchip:hover { border-color: var(--accent); }
.subchip.g2 { border-left-color: #e6c15a; }
.gapbox { font-size: 13px; color: var(--text2); background: color-mix(in srgb, #e6c15a 9%, transparent); border: 1px dashed #b8963c; border-radius: 8px; padding: 8px 10px; }
.qrow { display: flex; align-items: baseline; gap: 8px; margin-bottom: 6px; flex-wrap: wrap; }
.mchip i { color: var(--muted); font-size: 11.5px; }
table.mtab { width: 100%; border-collapse: collapse; font-size: 12.5px; }
table.mtab th, table.mtab td { text-align: left; padding: 5px 6px; border-bottom: 1px solid var(--line); vertical-align: top; }
table.mtab th { color: var(--muted); font-weight: 500; }
table.mtab td i { color: var(--text2); }

.pbar { height: 6px; border-radius: 4px; background: var(--panel2); overflow: hidden; margin-top: 8px; }
.pbar i { display: block; height: 100%; background: linear-gradient(90deg, var(--accent), #e6c15a); }
.pbar.big { height: 10px; margin: 10px 0 6px; max-width: 760px; }
.pstage.cur .pnum { box-shadow: 0 0 0 4px color-mix(in srgb, var(--accent) 35%, transparent); }
.pstage.back { background: color-mix(in srgb, #e6c15a 7%, transparent); border-radius: 12px; padding: 18px 12px 12px; }
.box.diag { border-color: #b8963c; }
#fbR button.on, #fbK .chip.on { background: var(--accent); color: #fff; border-color: var(--accent); }
#fbK .chip { cursor: pointer; font: inherit; font-size: 12.5px; }
#libHits [data-lbl] { word-break: break-all; }

.slath .chip { cursor: pointer; font: inherit; font-size: 12.5px; }
.slc .mthumb span { font-size: 10.5px; }
.mgrid.g6 { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
.slrow { display: grid; grid-template-columns: minmax(150px, 1.2fr) 2fr 40px; gap: 8px; align-items: center; padding: 3px 0; font-size: 13.5px; color: var(--text); }
.slrow.sub { font-size: 12.5px; color: var(--text2); padding-left: 10px; }
.slrow b { text-align: right; font-weight: 600; }
.slbar { height: 8px; background: var(--panel2); border-radius: 4px; overflow: hidden; }
.slbar i { display: block; height: 100%; background: linear-gradient(90deg, #3e88a8, #8fd1a5); }
.slchain { display: inline-flex; flex-wrap: wrap; gap: 4px; align-items: center; }
.slchain a { padding: 1px 7px; border-radius: 6px; background: var(--panel2); font-size: 12.5px; }
.slchain i { font-style: normal; color: #e6c15a; }
.athbadge { position: absolute; right: 10px; top: -12px; background: #1d4d3a; color: #bff0d0; border: 1px solid #5fae7b; border-radius: 8px; padding: 1px 8px; font-size: 13px; z-index: 2; }
.athbadge.sm { top: 8px; font-size: 11.5px; }
.athmode .mcard.athzero { opacity: .35; }
.medge.athon { stroke: #5fae7b; color: #5fae7b; opacity: 1; }
.athmiss { fill: none; stroke: #8fd1a5; color: #8fd1a5; stroke-dasharray: 7 6; opacity: .9; }
.mlabel.athl { border-color: #5fae7b; background: rgba(10,40,25,.92); color: #bff0d0; display: block; }
.mlabel.athl.miss { border-style: dashed; }

.starstage { background: radial-gradient(1400px 900px at 50% 45%, #0d1b33, #03060d); }
.starstage svg { width: 100%; height: 100%; display: block; }
.sl { stroke: #2b4a6a; stroke-width: .8; opacity: .55; }
.sl.k-tree { stroke: #3d6a92; }
.sl.k-flow { stroke: #ff8a5c; stroke-width: 1.4; opacity: .7; }
.sl.k-why { stroke: #b48ce0; stroke-dasharray: 3 3; }
.sl.k-use { stroke: #7fc4e8; opacity: .25; }
.sl.k-need { stroke: #5fae7b; opacity: .3; }
.sl.k-ath { stroke: #5fd0e6; opacity: .3; }
.sl.k-about, .sl.k-ref { stroke: #e6c15a; opacity: .15; }
.sn { cursor: pointer; stroke: rgba(255,255,255,.35); stroke-width: .6; transition: opacity .2s; }
.st { fill: #dbe9f2; font-size: 9px; pointer-events: none; text-anchor: middle; opacity: 0; transition: opacity .2s; paint-order: stroke; stroke: #03060d; stroke-width: 3px; }
.st.t-root, .st.t-hub, .st.t-weapon, .st.t-map, .st.t-phase { opacity: 1; font-size: 13px; font-weight: 700; }
.st.t-root { font-size: 18px; }
.zk1 .st.t-scene, .zk1 .st.t-rule, .zk1 .st.t-athlete, .zk1 .st.t-q, .zk1 .st.t-series, .zk1 .st.t-ring { opacity: .95; }
.zk1 .st.t-term { opacity: .8; }
.zk2 .st { opacity: .9; }
.focus .sn:not(.on) { opacity: .12; }
.focus .sl:not(.on):not(.chain) { opacity: .04; }
.focus .st.on { opacity: 1; }
.sl.on { opacity: .95; stroke-width: 1.6; }
.sl.chain { stroke: #ffd56a; stroke-width: 2.4; opacity: 1; }
.sn.sel { stroke: #fff; stroke-width: 2.5; }
.sn.chain { stroke: #ffd56a; stroke-width: 1.8; }
.stlayers { position: absolute; right: 12px; top: 12px; background: var(--panel); border: 1px solid var(--line); border-radius: 10px; padding: 8px 12px; display: flex; flex-direction: column; gap: 4px; font-size: 13px; z-index: 4; }
.stlayers i, .stchip i, .dotc { display: inline-block; width: 9px; height: 9px; border-radius: 50%; margin-right: 5px; vertical-align: middle; }
.nowrap { white-space: nowrap; margin-right: 6px; }

.vstrip { margin: 10px 0 4px; }
.vs-head { display: flex; align-items: center; gap: 8px; font-size: 13.5px; margin-bottom: 6px; }
.vs-head .btn { margin-left: auto; padding: 3px 10px; font-size: 12.5px; }
.vs-row { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 6px; scroll-snap-type: x proximity; }
.vs-item { flex: 0 0 132px; cursor: pointer; scroll-snap-align: start; }
.vs-item:hover .mthumb { border-color: var(--accent); }
.vs-l { line-height: 1.3; max-height: 2.6em; overflow: hidden; margin-top: 3px; }
.vs-s { font-size: 11px; line-height: 1.3; max-height: 2.6em; overflow: hidden; }
.vs-wait { font-size: 12.5px; color: var(--muted); padding: 6px 0; }
.stlayers[hidden] { display: none; }
.focus .st:not(.on) { opacity: 0 !important; }

.stdtab { overflow-x: auto; }
.stdtab table { border-collapse: collapse; font-size: 13px; min-width: 640px; width: 100%; }
.stdtab th, .stdtab td { border-bottom: 1px solid var(--line); padding: 4px 8px; text-align: center; }
.stdtab td:first-child, .stdtab th:first-child { text-align: left; }
.lv1 { color: #e6c15a; } .lv2 { color: #ffd56a; font-weight: 700; }

.tagwrap { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 16px; margin-top: 10px; }
.tagkeys { margin-top: 8px; color: var(--text2); background: var(--panel); border: 1px solid var(--line); border-radius: 10px; padding: 8px 12px; line-height: 1.8; }
.tlist { max-height: 46vh; overflow-y: auto; }
.tlist .row { cursor: pointer; padding: 6px 8px; }
.tlist .row.on { background: var(--panel2); box-shadow: inset 3px 0 0 var(--accent); }
.tlist .btn { padding: 1px 7px; font-size: 12px; }
@media (max-width: 900px) { .tagwrap { grid-template-columns: 1fr; } }

.backbtn { font-size: 16px; padding: 4px 10px; }
.scorebar { display: grid; grid-template-columns: 1fr auto 1fr; gap: 8px; margin-top: 8px; }
.scorebar .btn { padding: 12px 10px; font-size: 15px; }
.scorebar .sb-l { border-color: #e0605a; }
.scorebar .sb-r { border-color: #5fb3d6; text-align: right; }
.scorebar .sb-mid { display: flex; gap: 6px; }
.actbar, .scenebar { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.scenebar .btn { font-size: 12.5px; padding: 4px 8px; }
.pfit { margin-top: 8px; }
.pstage .grow { min-width: 0; } .pstage .vs-row { max-width: 100%; }


.tabs a.tab { padding: 9px 14px; color: var(--text2); border-bottom: 2px solid transparent; white-space: nowrap; font-size: 14.5px; text-decoration: none; }
.tabs a.tab.on { color: var(--text); border-bottom-color: var(--accent); }
.rvbar { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin: 12px 0; }
.rvprog { flex: 1 1 160px; height: 8px; background: var(--line); border-radius: 6px; overflow: hidden; }
.rvprog i { display: block; height: 100%; background: var(--accent); }
.rvrow { align-items: flex-start; gap: 10px; border-left: 3px solid transparent; }
.rvrow .rvbtns { display: flex; gap: 4px; flex-shrink: 0; }
.rvrow .rvbtns .btn { padding: 4px 10px; font-size: 13px; }
.rvrow.rv-ok { border-left-color: #4caf7d; }
.rvrow.rv-edit { border-left-color: #e6a23c; }
.rvrow.rv-no { border-left-color: #e05a5a; }
.rvnote { display: block; width: 100%; margin-top: 6px; min-height: 52px; }
.rvnote[hidden] { display: none; }
@media (max-width: 640px) { .rvrow { flex-direction: column; } }
.badge.b-warn { background: #e6a23c22; color: #c27c0e; border: 1px solid #e6a23c66; }
.prebox { border-left: 3px solid #e6a23c; }
.epimg { margin: 8px 0 0; }
.epimg img { max-width: 100%; border-radius: 8px; border: 1px solid var(--line); }
.eptree, .eptree ul { list-style: none; padding-left: 14px; margin: 4px 0; }
.eptree li { margin: 3px 0; border-left: 1px solid var(--line); padding-left: 8px; }


.epdiag { border: 1px solid var(--line); border-radius: 14px; padding: 16px; background: var(--panel); margin: 6px 0 18px; }
.epd-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 8px; }
.epd-row { display: grid; grid-template-columns: 120px 1fr; gap: 10px; align-items: start; }
.epd-lab { font-weight: 600; font-size: 14px; color: var(--dc, #c9a24c); }
.epd-lab span { display: block; font-weight: 400; font-size: 12px; color: var(--muted); }
.epd-cells { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 8px; }
.epd-cells.v { grid-template-columns: 1fr; }
.epd-split { display: grid; grid-template-columns: 1fr 1.6fr; gap: 14px; }
.epd-sub2 { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 6px; }
.epd-col .epd-lab { margin-bottom: 6px; }
.epd-arrow { text-align: center; color: var(--muted); font-size: 12.5px; margin: 10px 0; }
.epn { display: flex; flex-direction: column; gap: 2px; padding: 9px 11px; border-radius: 10px; border: 1px solid var(--line); background: var(--bg); color: var(--text); text-decoration: none; transition: border-color .2s; }
.epn:hover { border-color: var(--dc, #c9a24c); }
.epn.has { border-left: 3px solid var(--dc, #c9a24c); }
.epn.gap { border-style: dashed; opacity: .85; }
.epn.loop { justify-content: center; color: var(--muted); font-size: 13px; border-style: dotted; }
.epn-id { font-size: 11px; color: var(--muted); font-family: ui-monospace, monospace; }
.epn b { font-size: 14px; }
.epn-q { font-size: 12px; color: var(--text2); }
.epn-n { font-size: 11.5px; color: var(--dc, #c9a24c); }
.epn-n i { color: var(--muted); font-style: normal; }
.epd-base { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 8px; margin-top: 14px; padding-top: 12px; border-top: 1px dashed var(--line); }
.epd-order { margin-top: 14px; padding-top: 12px; border-top: 1px dashed var(--line); }
.epd-steps { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 8px; }
.epd-step { border: 1px solid var(--line); border-radius: 10px; padding: 8px 10px; position: relative; }
.epd-k { position: absolute; top: 6px; right: 8px; font-size: 18px; font-weight: 700; color: #c9a24c55; }
@media (max-width: 760px) { .epd-row { grid-template-columns: 1fr; } .epd-split { grid-template-columns: 1fr; } .epd-sub2 { grid-template-columns: 1fr; } }


.mapdiag { border: 1px solid var(--line); border-left: 3px solid var(--dc); border-radius: 14px; background: var(--panel); margin: 6px 0 18px; }
.mapdiag > summary { list-style: none; display: flex; align-items: center; gap: 12px; padding: 12px 16px; cursor: pointer; flex-wrap: wrap; }
.mapdiag > summary::-webkit-details-marker { display: none; }
.md-tw { transition: transform .2s; color: var(--muted); }
.mapdiag[open] .md-tw { transform: rotate(90deg); }
.md-t { display: flex; flex-direction: column; flex: 1 1 260px; gap: 2px; }
.md-p { display: flex; align-items: center; gap: 8px; }
.md-bar { width: 110px; height: 6px; background: var(--line); border-radius: 4px; overflow: hidden; }
.md-bar i { display: block; height: 100%; background: var(--dc); }
.md-body { padding: 4px 16px 16px; border-top: 1px dashed var(--line); }
.md-body .epd-row:first-child { margin-top: 12px; }
.segb.off { opacity: .45; }
.wseg { flex-shrink: 0; }


.pubhelp .small { margin-top: 4px; }
.publist { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; }
.pubrow { display: grid; grid-template-columns: 64px 1fr; gap: 12px; padding: 10px 12px; border: 1px solid var(--line); border-left: 3px solid transparent; border-radius: 12px; background: var(--panel); }
.pubrow.on { border-left-color: #4caf7d; }
.pubimg { width: 64px; height: 85px; border-radius: 8px; overflow: hidden; background: var(--bg); display: block; }
.pubimg img { width: 100%; height: 100%; object-fit: cover; }
.pubf { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 6px; }
.pubf .field { padding: 5px 8px; font-size: 13px; }
.pubf .purl { flex: 1 1 220px; min-width: 160px; }
.pubf.stats label { display: flex; align-items: center; gap: 4px; }
.pubf.stats input { width: 82px; }
.pubchk { display: flex; align-items: center; gap: 5px; font-size: 13.5px; font-weight: 600; cursor: pointer; }
.pubchk input { width: 16px; height: 16px; accent-color: #4caf7d; }
.autocov { position: absolute; right: 8px; bottom: 8px; font-size: 11px; padding: 2px 6px; border-radius: 6px; background: #0009; color: #fff; }
.pubst { color: #4caf7d; }
@media (max-width: 640px) { .pubrow { grid-template-columns: 48px 1fr; } .pubimg { width: 48px; height: 64px; } }


.dlbox { border-left: 3px solid var(--accent); }
.dlbox .dlrow { padding: 6px 2px; gap: 6px; }
.dlbox .dlrow .btn { padding: 4px 10px; font-size: 12.5px; }
.dltext { margin: 8px 0; padding: 8px 10px; border-radius: 10px; background: var(--bg); }
.dlbody { margin: 4px 0 6px; white-space: pre-line; }


.ep-layout > *, .btns > *, .side { min-width: 0; }
.path { overflow-wrap: anywhere; }
.local-backup { margin-bottom: 24px; }
.local-backup input[type="file"] { max-width: 100%; min-width: 0; }
@media (max-width:980px) { .ep-layout { grid-template-columns: minmax(0,1fr); } }


body { position:relative; isolation:isolate; min-height:100vh; background:var(--paper); color:var(--ink); font-family:var(--ui); line-height:1.7; }
body::before { content:""; position:absolute; z-index:-1; top:0; bottom:0; left:50%; transform:translateX(-50%); width:min(1240px,calc(100% - 32px)); background:var(--sheet); border-inline:1px solid var(--rule); pointer-events:none; }
h1,h2,h3,h4 { font-family:var(--serif); font-weight:500; letter-spacing:.01em; text-wrap:balance; margin:0; }
:focus-visible { outline:2px solid var(--accent); outline-offset:3px; }
input,textarea,select { max-width:100%; font-family:var(--ui); }
input[type="checkbox"],input[type="radio"] { accent-color:var(--accent); }
button,a { -webkit-tap-highlight-color:color-mix(in srgb,var(--accent) 12%,transparent); }
#app { background:var(--sheet); width:min(1120px,calc(100% - 32px)); max-width:1120px; margin-inline:auto; padding:28px clamp(18px,4vw,48px) 64px; min-width:0; }
#app > *, .grid > *, .ep-layout > *, .reader > *, .course-hero > *, .tagwrap > *, .ringwrap > * { min-width:0; }
#shell-top.top { position:relative; top:auto; z-index:40; display:block; width:min(1240px,calc(100% - 32px)); margin-inline:auto; padding:0; background:var(--sheet); border-bottom:1px solid var(--rule); backdrop-filter:none; -webkit-backdrop-filter:none; }
#shell-top .header-wrap { width:100%; max-width:1120px; margin-inline:auto; padding:14px clamp(18px,4vw,48px); min-height:78px; display:flex; align-items:center; gap:20px; flex-wrap:wrap; }
#shell-top .brand { gap:10px; flex-shrink:0; white-space:nowrap; text-decoration:none; }
#shell-top .brand svg { width:30px; height:30px; }
#shell-top .brand b { font-family:var(--serif); font-weight:500; font-size:21px; letter-spacing:.06em; color:var(--accent); }
#shell-top .brand small { font-size:12.5px; font-weight:400; line-height:1.5; letter-spacing:.05em; color:var(--mute); }
#shell-top .nav { display:flex; align-items:center; flex:1; gap:20px; min-width:0; flex-wrap:wrap; }
#shell-top .nav a { font-size:14.5px; color:var(--ink2); padding:4px 0; border-radius:0; border-bottom:1px solid transparent; white-space:nowrap; background:none; box-shadow:none; }
#shell-top .nav a:hover { color:var(--accent); }
#shell-top .nav a.on { color:var(--ink); border-bottom-color:var(--ink); }
#shell-top .hd-r { display:flex; align-items:center; gap:12px; font-size:13.5px; color:var(--ink2); min-width:0; flex-shrink:0; }
#shell-top .hd-r > a { white-space:nowrap; }
#shell-top .hd-r > a.on { color:var(--accent); }
#shell-top .search { position:relative; display:block; min-width:0; flex-basis:auto; order:initial; }
#shell-top .search input { width:142px; padding:6px 4px 6px 25px; border:0; border-bottom:1px solid var(--rule); border-radius:0; font-size:12.5px; color:var(--ink); background:transparent; }
#shell-top .search input:focus { width:142px; outline-offset:2px; }
#shell-top .search svg { left:2px; top:9px; width:14px; height:14px; }
#shell-top .iconbtn { display:inline-flex; align-items:center; justify-content:center; border:1px solid var(--rule); background:transparent; border-radius:0; width:30px; height:30px; padding:0; flex:none; }
#shell-top .menu-toggle { display:none; margin-left:0; }
#shell-foot.foot { width:min(1240px,calc(100% - 32px)); margin-inline:auto; padding:26px 0; background:transparent; border-top:3px double var(--rule); color:var(--mute); font-size:12.5px; text-align:left; }
#shell-foot .footer-wrap,#shell-foot .wrap { width:100%; max-width:1120px; margin-inline:auto; padding-inline:clamp(18px,4vw,48px); display:flex; justify-content:space-between; align-items:baseline; gap:16px; flex-wrap:wrap; }
#shell-foot a:hover { color:var(--accent); }

.card,.box,.list,.tree,.empty,.note,.fbox,.stat,.region-hero,.course-hero .thumb,
.mapwrap,.modal .inner,.toast,.wall a,.bdg,.chain,.subchip,.gapbox,.pitem,.pcrit,
.tagkeys,.epdiag,.epn,.epd-step,.mapdiag,.pubrow,.pubimg,.dltext { border-radius:0; box-shadow:none; }
a.card:hover,.card.click:hover { transform:none; border-color:var(--accent); }
.btn,.field,.seg,.chip,.badge,.row .ico,.reader aside a,.md pre,.md code,.md img,.md blockquote,.player { border-radius:0; }
.btn.primary { color:var(--accent-ink); }
.badge { font-weight:400; }
.card h3,.map-name,.trow .tcat,.fbox b,.ringlabel { font-weight:500; }
.md { max-width:720px; font-family:var(--serif); font-size:16.5px; line-height:2; color:var(--ink); overflow-wrap:anywhere; }
.md h1,.md h2,.md h3,.md h4 { font-weight:500; }
.md pre { max-width:100%; }
.md table,.stdtab,.tbl { max-width:100%; overflow-x:auto; }
table.mtab { display:block; max-width:100%; overflow-x:auto; }
.toolbar,.btns,.tabs,.seg,.pubf,.mapbar,.rvbar { max-width:100%; min-width:0; }
.tabs,.seg { overflow-x:auto; }
.seg button,.seg a.segb { flex-shrink:0; }
.row .grow,.kv dd,.pubrow > div,.clip > :nth-child(2),.rvrow > :first-child { min-width:0; overflow-wrap:anywhere; }
.kv { grid-template-columns:76px minmax(0,1fr); }
.grid.g2 { grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr)); }
.grid.g3 { grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr)); }
.grid.g4 { grid-template-columns:repeat(auto-fill,minmax(min(100%,210px),1fr)); }
.grid.g5 { grid-template-columns:repeat(auto-fill,minmax(min(100%,185px),1fr)); }
.grid.g6x { grid-template-columns:repeat(auto-fill,minmax(min(100%,170px),1fr)); }

body.map-mode #app { width:min(1240px,calc(100% - 32px)); max-width:1240px; padding:0; }
.mapapp,.mapbody,.mapstage,.mapside,.mside-in,.stdtab { min-width:0; max-width:100%; }
.mapapp { height:calc(100vh - 79px); }
.mapside { background:var(--sheet); }
.mapbar { gap:10px; }
.mapstage { overflow:auto; overscroll-behavior:contain; }
.starstage { overflow:hidden; }
@media (max-width:1150px) {
  #shell-top .header-wrap { gap:12px 20px; }
  #shell-top .nav { order:3; flex-basis:100%; justify-content:center; gap:26px; }
  #shell-top .hd-r { margin-left:auto; }
  .mapapp { height:calc(100vh - 114px); }
}
@media (max-width:900px) {
  .mapapp { height:auto; }
  .mapstage { height:62vh; min-height:360px; }
  .mapside { width:100%; }
}
@media (max-width:720px) {
  #shell-top .header-wrap { gap:12px; padding-block:13px; }
  #shell-top .brand b { font-size:19px; }
  #shell-top .brand small { font-size:11.5px; }
  #shell-top .brand svg { width:26px; height:26px; }
  #shell-top .hd-r { gap:8px; flex-wrap:wrap; justify-content:flex-end; }
  #shell-top .hd-r .search { order:5; width:100%; }
  #shell-top .search input,#shell-top .search input:focus { width:100%; }
  #shell-top .nav { display:none; order:4; flex-basis:100%; justify-content:flex-start; gap:10px 22px; border-top:1px solid var(--rule2); padding-top:12px; }
  #shell-top .nav.open { display:flex; }
  #shell-top .menu-toggle { display:inline-flex; }
  #shell-top .header-wrap > .search { order:5; flex-basis:100%; }
  #app { padding-top:20px; padding-bottom:48px; }
  .grid.g2,.grid.g3 { grid-template-columns:minmax(0,1fr); }
  .grid.g4,.grid.g5,.grid.g6x { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .section > header { flex-wrap:wrap; }
  .row { flex-wrap:wrap; }
  .row .grow { flex:1 1 160px; }
  .toolbar .field[style],.btns .field[style] { min-width:0 !important; }
  .trow .tmeta { width:auto; flex-basis:100%; justify-content:flex-start; }
  .trow { flex-wrap:wrap; }
  .trow.d3,.trow.d4 { padding-left:58px; }
  .scorebar { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
  .scorebar .sb-mid { grid-column:1/-1; grid-row:2; flex-wrap:wrap; }
  .scorebar .btn { padding:10px 6px; font-size:13px; }
  .slrow { grid-template-columns:minmax(0,1.2fr) minmax(0,2fr) 32px; }
}
@media (max-width:560px) {
  #shell-top .header-wrap > .backbtn { display:none; }
  #shell-top .hd-r { width:100%; justify-content:flex-start; margin-left:0; }
  #shell-top .hd-r .search { order:initial; flex:1; width:auto; }
  #shell-top .menu-toggle { margin-left:auto; }
  #shell-top .hd-r > a { font-size:12px; }
  #shell-top .hd-r .search input { min-width:0; }
  .pubrow { grid-template-columns:48px minmax(0,1fr); }
  .pubf .purl { min-width:0; flex-basis:100%; }
  .epd-cells,.epd-steps,.epd-base { grid-template-columns:minmax(0,1fr); }
}



.edition .eyebrow{font-size:12.5px;letter-spacing:.18em;color:var(--mute)}
.edition .eyebrow .lat{letter-spacing:.06em;font-size:14px}
.edition .btn{display:inline-flex;align-items:center;gap:8px;font-size:14.5px;padding:10px 20px;border:1px solid var(--ink);text-decoration:none;color:var(--ink);background:transparent;font-family:var(--ui);cursor:pointer}
.edition .btn.pri{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.edition .lnk{color:var(--accent);text-decoration:none;font-size:14.5px;border-bottom:1px solid currentColor;padding-bottom:1px}
.edition .tag{font-size:12px;letter-spacing:.12em;color:var(--accent)}
.edition .meta{font-size:12.5px;color:var(--mute)}
.edition .st{display:inline-block;font-size:11.5px;padding:0 6px;border:1px solid currentColor;letter-spacing:.05em;line-height:1.7}
.edition .st.ok{color:var(--ok)} .edition .st.wait{color:var(--wait)} .edition .st.mute{color:var(--mute)}
.edition .sec{padding-block:clamp(36px,6vw,64px);border-top:1px solid var(--rule2)}
.edition .sec-h{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:26px;flex-wrap:wrap}
.edition .sec-h h2{font-size:clamp(22px,2.6vw,28px)}
.edition .orn{display:flex;justify-content:center;padding-block:6px;color:var(--rule)}
.edition .orn svg{width:120px;height:14px}


.edition .plate{margin:0;border:1px solid var(--rule);padding:7px;background:var(--sheet)}
.edition .plate .img{position:relative;aspect-ratio:16/9;overflow:hidden;background:var(--rule2)}
.edition .plate img{width:100%;height:100%;object-fit:cover;display:block;filter:var(--plate)}
.edition .plate figcaption{display:flex;justify-content:space-between;gap:12px;font-size:12.5px;color:var(--mute);padding:8px 2px 1px;letter-spacing:.03em}
.edition .plate figcaption .lat{font-size:14px;color:var(--ink2)}
.edition .play{position:absolute;left:18px;bottom:16px;width:46px;height:46px;border-radius:50%;border:1px solid rgba(255,255,255,.85);display:grid;place-items:center;background:rgba(20,18,15,.25)}
.edition .play::after{content:"";border-left:12px solid #fff;border-top:7px solid transparent;border-bottom:7px solid transparent;margin-left:3px}
.edition .dur{position:absolute;right:12px;bottom:12px;font-size:12px;color:#fff;background:rgba(20,18,15,.55);padding:1px 7px;font-variant-numeric:tabular-nums}
@media (prefers-reduced-motion:reduce){.edition .plate img{transition:none}}


.edition .hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:clamp(24px,5vw,64px);align-items:center;padding-block:clamp(36px,6vw,72px) 28px}
.edition .hero h1{font-size:clamp(34px,5vw,56px);line-height:1.22;font-weight:500;margin:18px 0 18px;letter-spacing:.04em}
.edition .hero p.sub{font-family:var(--serif);font-size:17px;color:var(--ink2);max-width:28em}
.edition .hero .acts{display:flex;gap:22px;align-items:center;margin-top:30px;flex-wrap:wrap}
.edition .sig{margin-top:30px;font-family:var(--latin);font-style:italic;font-size:22px;color:var(--ink2)}
.edition .sig small{font-family:var(--serif);font-style:normal;font-size:14px;margin-left:6px}
.edition .piste{padding-block:6px 30px}
.edition .piste svg{width:100%;height:auto;display:block;color:var(--mute)}
.edition .qgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:clamp(18px,3vw,40px)}
.edition .q{display:block;text-decoration:none;padding:18px 0 20px;border-top:1px solid var(--rule)}
.edition .q h3{font-size:19px;line-height:1.5;margin:8px 0 10px;display:flex;justify-content:space-between;gap:12px}
.edition .q h3::after{content:"→";font-family:var(--ui);color:var(--accent);font-size:16px;flex:none;padding-top:3px}
.edition .q:hover h3{color:var(--accent)}
.edition .three{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(18px,3vw,36px)}
.edition .card-t{margin-top:14px}
.edition .card-t h3{font-size:18px;line-height:1.5;margin:6px 0 6px}
.edition .card-t p{font-size:14px;color:var(--ink2)}
.edition .essay{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:clamp(24px,5vw,64px);align-items:start}
.edition .essay h2{font-size:clamp(24px,3vw,32px);line-height:1.4;margin:10px 0 16px}
.edition .drop{font-family:var(--serif);font-size:16.5px;line-height:2;color:var(--ink2)}
.edition .drop::first-letter{float:left;font-size:3.2em;line-height:1;padding:6px 10px 0 0;color:var(--accent);font-family:var(--serif)}
.edition .aside-box{border-left:1px solid var(--rule);padding-left:22px}
.edition .aside-box h4{font-size:15px;margin-bottom:10px}
.edition .placeholder{font-family:var(--serif);color:var(--mute);border-bottom:1px dotted var(--rule);padding:6px 0;font-size:14.5px}
.edition .series{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 clamp(18px,3vw,40px)}
.edition .series a{display:flex;justify-content:space-between;align-items:baseline;gap:10px;text-decoration:none;padding:14px 0;border-top:1px solid var(--rule)}
.edition .series a b{font-family:var(--serif);font-weight:500;font-size:16px}
.edition .ft{border-top:3px double var(--rule);padding-block:26px;font-size:12.5px;color:var(--mute)}
.edition .ft .wrap{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}


.edition .crumb{font-size:13px;color:var(--mute);padding-top:28px}
.edition .crumb a{text-decoration:none}
.edition .qhead{padding-block:14px 30px;display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:clamp(24px,5vw,64px)}
.edition .qhead h1{font-size:clamp(30px,4vw,44px);line-height:1.3;margin:10px 0 18px;letter-spacing:.03em}
.edition .lead{font-family:var(--serif);font-size:17px;line-height:1.95;color:var(--ink2)}
.edition .cols{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:clamp(24px,5vw,64px);align-items:start}
.edition .steps{list-style:none;padding:0;margin:0;counter-reset:s;display:grid;gap:0}
.edition .steps li{display:grid;grid-template-columns:54px minmax(0,1fr);gap:10px;padding:16px 0;border-top:1px solid var(--rule2)}
.edition .steps li::before{counter-increment:s;content:counter(s,upper-roman);font-family:var(--latin);font-size:24px;color:var(--accent);line-height:1.2}
.edition .steps b{font-family:var(--serif);font-weight:500;font-size:17px;display:block}
.edition .steps span{color:var(--ink2);font-size:14.5px}
.edition .cases{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 30px;margin-top:6px}
.edition .cases div{font-family:var(--serif);font-size:15.5px;padding:10px 0;border-bottom:1px solid var(--rule2)}
.edition .cases i{font-style:normal;color:var(--accent);margin-right:8px}
.edition .mat{border-top:1px solid var(--ink)}
.edition .mat .row{display:grid;grid-template-columns:150px minmax(0,1fr) auto;gap:16px;padding:16px 0;border-bottom:1px solid var(--rule2);align-items:baseline}
.edition .mat .role{font-size:12.5px;letter-spacing:.08em;color:var(--accent)}
.edition .mat .what{font-family:var(--serif);font-size:16px}
.edition .mat .what small{display:block;font-family:var(--ui);font-size:13px;color:var(--mute);margin-top:2px}
.edition .side h4{font-size:14px;letter-spacing:.12em;color:var(--mute);font-family:var(--ui);font-weight:400;margin-bottom:10px}
.edition .side .blk{padding-bottom:22px;margin-bottom:22px;border-bottom:1px solid var(--rule2)}
.edition .side a.rel{display:block;font-family:var(--serif);font-size:15.5px;text-decoration:none;padding:7px 0;line-height:1.55}
.edition .side a.rel:hover{color:var(--accent)}
.edition .check{list-style:none;padding:0;margin:0}
.edition .check li{padding:8px 0 8px 26px;position:relative;font-family:var(--serif);font-size:15px;border-bottom:1px dotted var(--rule)}
.edition .check li::before{content:"";position:absolute;left:2px;top:15px;width:11px;height:11px;border:1px solid var(--ink2)}


.edition .ephead{padding-block:22px 22px}
.edition .ephead h1{font-size:clamp(28px,3.6vw,40px);line-height:1.35;margin:10px 0 12px}
.edition .gain{font-family:var(--serif);font-size:16.5px;color:var(--ink2)}
.edition .obs{counter-reset:o;list-style:none;padding:0;margin:0}
.edition .obs li{display:grid;grid-template-columns:30px minmax(0,1fr);padding:12px 0;border-bottom:1px solid var(--rule2);font-family:var(--serif);font-size:15.5px}
.edition .obs li::before{counter-increment:o;content:counter(o,decimal);font-family:var(--latin);font-size:20px;color:var(--accent);line-height:1.25}
.edition .prose{font-family:var(--serif);font-size:16.5px;line-height:2;color:var(--ink)}
.edition .prose p+p{margin-top:1em}
.edition .cond{border:1px solid var(--rule);padding:14px 18px;font-family:var(--serif);font-size:15px;color:var(--ink2);background:var(--paper)}
.edition .cond b{font-weight:500;color:var(--ink);margin-right:6px}
.edition details.ev{border-top:1px solid var(--rule2);padding:12px 0}
.edition details.ev summary{cursor:pointer;font-size:14px;color:var(--ink2);list-style:none;display:flex;justify-content:space-between}
.edition details.ev summary::after{content:"展开";color:var(--mute);font-size:12.5px}
.edition details.ev[open] summary::after{content:"收起"}
.edition details.ev ul{margin:10px 0 0;padding-left:18px;font-size:13.5px;color:var(--ink2)}
.edition .drawer{border:1px dashed var(--rule);padding:14px 16px;font-size:13.5px;color:var(--ink2)}
.edition .drawer b{font-weight:500}


.edition .ac-hero{padding-block:clamp(40px,6vw,70px) 20px;text-align:center}
.edition .ac-hero h1{font-size:clamp(32px,4.4vw,48px);letter-spacing:.12em;font-weight:500}
.edition .ac-hero p{font-family:var(--serif);color:var(--ink2);margin-top:12px;font-size:16.5px}
.edition .gates{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(12px,2.4vw,28px);padding-block:30px 10px}
.edition .gate{text-decoration:none;text-align:center;display:grid;justify-items:center;gap:10px;padding:10px 6px 18px}
.edition .gate svg{width:100%;max-width:150px;height:auto;color:var(--ink2);transition:color .3s}
.edition .gate:hover svg{color:var(--accent)}
.edition .gate b{font-family:var(--serif);font-weight:500;font-size:19px;letter-spacing:.14em}
.edition .gate span{font-size:13px;color:var(--mute)}
.edition .path{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;border-top:1px solid var(--ink)}
.edition .path div{padding:16px 16px 18px 0;border-bottom:1px solid var(--rule2)}
.edition .path div:not(:nth-child(4n+1)){padding-left:16px;border-left:1px solid var(--rule2)}
.edition .path .n{font-family:var(--latin);font-size:22px;color:var(--accent);line-height:1}
.edition .path b{display:block;font-family:var(--serif);font-weight:500;font-size:16px;margin:8px 0 4px}
.edition .path span{font-size:13px;color:var(--ink2);line-height:1.6;display:block}


.edition .lib{display:grid;grid-template-columns:minmax(0,1fr) 340px;border-top:1px solid var(--rule)}
.edition .lib-l{padding:22px clamp(18px,3vw,32px) 30px 0;border-right:1px solid var(--rule)}
.edition .lib-bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:18px}
.edition .lib-bar .in{flex:1;min-width:160px;border:1px solid var(--rule);padding:7px 12px;font-size:13.5px;color:var(--mute);background:var(--paper)}
.edition .chip{font-size:13px;padding:5px 12px;border:1px solid var(--rule);color:var(--ink2);text-decoration:none}
.edition .chip.on{border-color:var(--ink);color:var(--ink)}
.edition .cgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
.edition .course{text-decoration:none}
.edition .course .plate{padding:5px}
.edition .course h3{font-size:16.5px;line-height:1.5;margin:10px 0 4px}
.edition .course.sel h3{color:var(--accent)}
.edition .course.sel .plate{border-color:var(--accent)}
.edition .lib-r{padding:22px 0 30px clamp(18px,3vw,28px)}
.edition .lib-r h2{font-size:24px;margin:8px 0 6px}
.edition .toc{list-style:none;padding:0;margin:14px 0 22px;border-top:1px solid var(--rule2)}
.edition .toc li{display:grid;grid-template-columns:34px minmax(0,1fr);padding:9px 0;border-bottom:1px solid var(--rule2);font-family:var(--serif);font-size:14.5px;line-height:1.55}
.edition .toc li i{font-style:normal;font-family:var(--latin);color:var(--mute);font-size:16px}


.edition .unit{display:grid;grid-template-columns:220px minmax(0,1fr) 270px;gap:0;border-top:1px solid var(--rule)}
.edition .unit>div{padding:22px 22px 34px;min-width:0}
.edition .unit .u-toc{border-right:1px solid var(--rule);padding-left:0}
.edition .unit .u-note{border-left:1px solid var(--rule);padding-right:0}
.edition .u-toc a{display:grid;grid-template-columns:28px minmax(0,1fr);text-decoration:none;font-family:var(--serif);font-size:14px;padding:8px 0;line-height:1.5;color:var(--ink2)}
.edition .u-toc a i{font-style:normal;font-family:var(--latin);font-size:15px;color:var(--mute)}
.edition .u-toc a.on{color:var(--accent)}
.edition .u-toc a.on i{color:var(--accent)}
.edition .act{border-top:1px solid var(--rule2);padding:16px 0}
.edition .act .k{font-size:12px;letter-spacing:.14em;color:var(--accent)}
.edition .act h4{font-size:17px;margin:4px 0 8px}
.edition .pair{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.edition .pair div{border:1px solid var(--rule);padding:12px 14px;font-family:var(--serif);font-size:14.5px}
.edition .pair b{font-weight:500;display:block;margin-bottom:4px}
.edition .notearea{border:1px solid var(--rule);background:var(--paper);min-height:150px;padding:12px;font-family:var(--serif);font-size:14px;color:var(--mute);line-height:1.8}


.edition .studio{display:grid;grid-template-columns:220px minmax(0,1fr);border-top:1px solid var(--rule)}
.edition .studio nav{border-right:1px solid var(--rule);padding:20px 18px 30px 0}
.edition .studio nav a{display:flex;justify-content:space-between;text-decoration:none;padding:9px 0;font-size:14px;color:var(--ink2);border-bottom:1px solid var(--rule2)}
.edition .studio nav a.on{color:var(--accent)}
.edition .studio nav a span{font-variant-numeric:tabular-nums;color:var(--mute)}
.edition .studio main{padding:22px 0 30px clamp(18px,3vw,32px);min-width:0}
.edition .todo{border-top:1px solid var(--ink)}
.edition .todo .row{display:grid;grid-template-columns:120px minmax(0,1fr) auto;gap:14px;padding:14px 0;border-bottom:1px solid var(--rule2);align-items:baseline}
.edition .todo .row .k{font-size:12.5px;letter-spacing:.08em;color:var(--mute)}
.edition .todo .row .t{font-family:var(--serif);font-size:15.5px}


.edition .ia{padding-block:30px 40px}
.edition .ia h2{font-size:26px;margin-bottom:6px}
.edition .ia p.intro{font-family:var(--serif);color:var(--ink2);max-width:46em}
.edition .layers{margin-top:28px;display:grid;gap:0;border-top:1px solid var(--ink)}
.edition .layer{display:grid;grid-template-columns:150px minmax(0,1fr);gap:20px;padding:18px 0;border-bottom:1px solid var(--rule2);align-items:start}
.edition .layer .lname b{display:block;font-family:var(--serif);font-weight:500;font-size:17px}
.edition .layer .lname span{font-size:12.5px;color:var(--mute)}
.edition .nodes{display:flex;flex-wrap:wrap;gap:8px}
.edition .node{border:1px solid var(--rule);padding:6px 12px;font-family:var(--serif);font-size:14.5px;background:var(--sheet)}
.edition .node small{display:block;font-family:var(--ui);font-size:11.5px;color:var(--mute)}
.edition .node.key{border-color:var(--accent);color:var(--accent)}
.edition .node.grp{display:flex;flex-direction:column;gap:6px;padding:8px 12px 10px}
.edition .node.grp .sub{display:flex;flex-wrap:wrap;gap:6px}
.edition .node.grp .sub span{font-size:13px;border:1px solid var(--rule2);padding:2px 8px;color:var(--ink2)}
.edition .flow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-family:var(--serif);font-size:14.5px}
.edition .flow .arrow{color:var(--mute);font-family:var(--ui)}
.edition .hub{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:clamp(20px,4vw,48px);align-items:center;margin-top:12px}
.edition .hub svg{width:100%;height:auto;color:var(--ink2)}
.edition .hub svg text{font-family:var(--serif);fill:currentColor}
.edition .hub svg .r{fill:var(--accent)}
.edition .tbl{overflow-x:auto;margin-top:14px}
.edition table{border-collapse:collapse;width:100%;min-width:640px;font-size:14px}
.edition th,.edition td{text-align:left;padding:10px 12px 10px 0;border-bottom:1px solid var(--rule2);vertical-align:top}
.edition th{font-weight:400;color:var(--mute);font-size:12.5px;letter-spacing:.1em;border-bottom:1px solid var(--ink)}
.edition td code{font-family:ui-monospace,Menlo,monospace;font-size:12.5px;color:var(--ink2)}
.edition .phase{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;border-top:1px solid var(--ink);margin-top:14px}
.edition .phase div{padding:14px 14px 16px 0;border-bottom:1px solid var(--rule2)}
.edition .phase div+div{padding-left:14px;border-left:1px solid var(--rule2)}
.edition .phase .n{font-family:var(--latin);font-size:22px;color:var(--accent)}
.edition .phase b{display:block;font-family:var(--serif);font-weight:500;font-size:15.5px;margin:6px 0 4px}
.edition .phase span{font-size:13px;color:var(--ink2);display:block;line-height:1.6}
.edition pre.schema{font-family:ui-monospace,Menlo,monospace;font-size:12.5px;line-height:1.6;background:var(--paper);border:1px solid var(--rule2);padding:14px 16px;overflow-x:auto;color:var(--ink2);margin:14px 0 0}


.edition .sw{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px;margin-top:14px}
.edition .sw div{border:1px solid var(--rule);background:var(--sheet)}
.edition .sw i{display:block;height:64px}
.edition .sw span{display:block;padding:8px 10px;font-size:12.5px;color:var(--ink2)}
.edition .scale{display:grid;gap:10px;margin-top:14px}
.edition .scale div{display:grid;grid-template-columns:110px minmax(0,1fr);align-items:baseline;gap:16px;border-bottom:1px solid var(--rule2);padding-bottom:8px}
.edition .scale span{font-size:12.5px;color:var(--mute)}
.edition .dont{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:14px}
.edition .dont h4{font-size:16px;margin-bottom:8px}
.edition .dont ul{margin:0;padding-left:18px;font-size:14px;color:var(--ink2);line-height:1.9}



.edition .idx-h{padding-block:30px 6px}
.edition .idx-h h1{font-size:clamp(30px,4vw,40px);letter-spacing:.06em}
.edition .idx-h p{font-family:var(--serif);color:var(--ink2);margin-top:8px;font-size:16px}
.edition .filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding-block:18px 8px;border-bottom:1px solid var(--rule2)}
.edition .filters .lab{font-size:12.5px;color:var(--mute);letter-spacing:.1em;margin-right:4px}
.edition .filters .sp{width:18px}
.edition .qlist .grp{padding-top:26px}
.edition .qlist .grp>h2{font-size:15px;font-family:var(--ui);font-weight:400;letter-spacing:.16em;color:var(--mute);margin-bottom:6px}
.edition .qrow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 18px;text-decoration:none;padding:16px 0;border-bottom:1px solid var(--rule2)}
.edition .qrow b{font-family:var(--serif);font-weight:500;font-size:20px;line-height:1.5}
.edition .qrow p{grid-column:1/2;font-family:var(--serif);font-size:14.5px;color:var(--ink2)}
.edition .qrow .meta{grid-row:1/3;grid-column:2;align-self:center;text-align:right}
.edition .qrow:hover b{color:var(--accent)}
.edition .alt a{display:block;text-decoration:none;padding:10px 0;border-bottom:1px solid var(--rule2);font-family:var(--serif);font-size:15.5px}
.edition .alt a small{display:block;font-family:var(--ui);font-size:12.5px;color:var(--mute)}
.edition .wgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:34px clamp(18px,3vw,36px);padding-top:26px}
.edition .wgrid a{text-decoration:none}
.edition .wgrid h3{font-size:18px;line-height:1.5;margin:12px 0 4px}
.edition .wgrid .wm{display:flex;justify-content:space-between;gap:8px;font-size:12.5px;color:var(--mute)}
.edition .artl a{display:grid;grid-template-columns:110px minmax(0,1fr);gap:18px;padding:16px 0;border-bottom:1px solid var(--rule2);text-decoration:none}
.edition .artl a b{font-family:var(--serif);font-weight:500;font-size:18px}
.edition .artl a p{font-family:var(--serif);font-size:14.5px;color:var(--ink2)}
@media (max-width:900px){.edition .wgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.edition .wgrid{grid-template-columns:minmax(0,1fr)}.edition .qrow{grid-template-columns:minmax(0,1fr)}.edition .qrow .meta{grid-row:auto;grid-column:auto;text-align:left}.edition .artl a{grid-template-columns:minmax(0,1fr)}}


@media (max-width:900px){
  .edition .hero,.edition .qhead,.edition .cols,.edition .essay,.edition .hub{grid-template-columns:minmax(0,1fr)}
  .edition .qgrid,.edition .three,.edition .series,.edition .cgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .edition .gates,.edition .path{grid-template-columns:repeat(2,minmax(0,1fr))}
  .edition .path div:not(:nth-child(4n+1)){padding-left:0;border-left:0}
  .edition .lib,.edition .unit,.edition .studio{grid-template-columns:minmax(0,1fr)}
  .edition .lib-l,.edition .unit .u-toc,.edition .studio nav{border-right:0;border-bottom:1px solid var(--rule);padding-right:0}
  .edition .lib-r,.edition .unit .u-note,.edition .studio main{padding-left:0}
  .edition .unit .u-note{border-left:0;border-top:1px solid var(--rule)}
  .edition .unit>div{padding-inline:0}
  .edition .phase{grid-template-columns:repeat(2,minmax(0,1fr))}
  .edition .phase div+div{padding-left:0;border-left:0}
  .edition .nav{order:3;flex-basis:100%;gap:18px}
}
@media (max-width:560px){
  .edition .qgrid,.edition .three,.edition .series,.edition .cgrid,.edition .cases,.edition .pair,.edition .dont{grid-template-columns:minmax(0,1fr)}
  .edition .mat .row,.edition .todo .row{grid-template-columns:minmax(0,1fr)}
  .edition .layer{grid-template-columns:minmax(0,1fr);gap:8px}
  .edition .gates{grid-template-columns:repeat(2,minmax(0,1fr))}
}


#app.edition { padding-top:0; }
.edition .wrap { width:100%; max-width:100%; padding-inline:0; margin-inline:0; }
.edition p { margin:0; }
.edition h1,.edition h2,.edition h3,.edition h4 { font-weight:500; }
.edition .hero { margin-bottom:0; }
.edition .hero p { margin:0; max-width:none; }
.edition .hero p.sub { max-width:28em; }
.edition .hero h1 em { font-style:normal; color:inherit; }
.edition .btn { border-radius:0; line-height:1.7; justify-content:center; }
.edition .btn:hover { color:var(--accent); border-color:var(--accent); }
.edition .btn.pri:hover { color:var(--accent-ink); }
.edition .chip { border-radius:0; background:transparent; white-space:normal; font-weight:400; }
.edition .st { opacity:1; fill:none; stroke:none; paint-order:normal; pointer-events:auto; text-anchor:initial; transition:none; font-weight:400; vertical-align:baseline; }
.edition .path { font-family:var(--ui); color:var(--ink); word-break:normal; }
.edition .qrow { margin-bottom:0; align-items:initial; }
.edition .mat .row,.edition .todo .row { margin:0; border-top:0; background:transparent; border-radius:0; flex-wrap:initial; }
.edition .mat .row:first-child,.edition .todo .row:first-child { border-top:0; }
.edition .side { position:static; top:auto; display:block; gap:0; }
.edition .lead { max-width:none; }
.edition .studio main { width:auto; max-width:none; margin:0; }
.edition .plate { display:block; }
.edition .plate .img > .ph { display:grid; place-items:center; height:100%; padding:16px; color:var(--mute); font-family:var(--serif); }
.edition .plate video { display:block; width:100%; aspect-ratio:16/9; object-fit:contain; background:#000; }
.edition .player { border-radius:0; }
.edition .prose,.edition .md { max-width:720px; }
.edition .notearea { display:block; width:100%; border-radius:0; resize:vertical; color:var(--ink); }
.edition input.in { font-family:var(--ui); color:var(--ink); }
.edition .drawer { overflow-wrap:anywhere; }
.edition details.ev summary::-webkit-details-marker { display:none; }
.edition details.ev .tabs { margin-top:12px; }
.edition .read { max-width:720px; }
.edition .tbl { max-width:100%; }
.edition table { min-width:0; }
.edition .tbl > table { min-width:640px; }
.edition .piste { max-width:100%; }
.edition .filters select { max-width:100%; background:var(--sheet); border:1px solid var(--rule); padding:5px 10px; color:var(--ink2); font:inherit; font-size:13px; }
.edition .filters button.chip { cursor:pointer; font-family:var(--ui); }
.edition .mat .what a,.edition .prose a { text-decoration:underline; text-underline-offset:3px; }
@media (max-width:900px) { .edition .side { position:static; } }
@media (max-width:560px) {
  .edition .steps li { grid-template-columns:36px minmax(0,1fr); }
  .edition .mat .row,.edition .todo .row { gap:6px; }
  .edition .qrow { gap:6px; }
}


.badge,.chip { max-width:100%; white-space:normal; overflow-wrap:anywhere; }
.lat { font-family:var(--latin); font-style:italic; letter-spacing:.02em; }
.edition .plate .img { display:block; }
.edition .thumb.tall { aspect-ratio:16/9; }
.edition .drawer > summary { cursor:pointer; font-family:var(--serif); font-size:16px; }
.edition .drawer .dlbox { border:0; padding:0; margin-block:14px; }
.edition .drawer .dlrow { align-items:start; flex-wrap:wrap; }
.edition .drawer .dlrow .grow { flex-basis:100%; }
.edition .drawer .kv { overflow-wrap:anywhere; }
.edition .prose p { margin:0; }
.edition .prose p + p { margin-top:1em; }
.edition .bookmarkbtn { padding:4px 10px; font-size:12.5px; border-color:var(--rule); color:var(--ink2); }
.edition .bookmarkbtn[aria-pressed="true"] { color:var(--accent); border-color:var(--accent); }


#shell-top .search input:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }


[hidden] { display:none !important; }


.edition .academy-nav{display:flex;gap:10px 22px;flex-wrap:wrap;padding:20px 0 14px;border-bottom:1px solid var(--rule)}
.edition .academy-nav a{color:var(--ink2);text-decoration:none;font-size:14px;padding:4px 0}
.edition .academy-nav a[aria-current="page"]{color:var(--accent);border-bottom:1px solid var(--accent)}
.edition .lib-bar select{max-width:100%;background:var(--sheet);border:1px solid var(--rule);padding:6px 10px;color:var(--ink2);font:inherit;font-size:13px}
.edition .library-sort-note{margin-bottom:18px}
.edition .course-card{min-width:0}
.edition .course-card .course{display:block}
.edition .course-preview{display:block;margin-top:10px;padding:2px 0;border:0;border-bottom:1px solid var(--accent);background:var(--sheet);font:inherit;font-size:12px;text-align:left;white-space:normal;overflow-wrap:anywhere;cursor:pointer}
.edition .course-preview[aria-pressed="true"]{color:var(--ink)}
.edition .cgrid.course-list{grid-template-columns:minmax(0,1fr);gap:0}
.edition .course-list .course-card{padding:16px 0;border-bottom:1px solid var(--rule2)}
.edition .course-list .course{display:grid;grid-template-columns:150px minmax(0,1fr);gap:18px;align-items:start}
.edition .course-list .course h3{margin-top:0}
.edition .course-outline{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:32px;padding-top:28px}
.edition .course-outline>*{min-width:0}
.edition .outline-header{display:grid;grid-template-columns:200px minmax(0,1fr);gap:24px;align-items:start;padding-bottom:24px;border-bottom:1px solid var(--rule)}
.edition .outline-header h1{font-size:clamp(26px,3vw,36px);line-height:1.4;margin:6px 0 12px}
.edition .course-facts{display:grid;gap:10px;margin:18px 0}
.edition .course-facts>div{display:grid;grid-template-columns:110px minmax(0,1fr);gap:12px;font-size:13px;align-items:baseline}
.edition .course-facts dt{color:var(--mute)}
.edition .course-facts dd{margin:0;color:var(--ink2)}
.edition .course-action{margin-top:22px}
.edition .outline-state-note{margin-block:18px}
.edition .outline-units{padding:0;margin:0;list-style:none}
.edition .outline-units>li{border-top:1px solid var(--rule);padding:22px 0}
.edition .outline-units>li>header{display:grid;grid-template-columns:44px minmax(0,1fr);gap:12px}
.edition .outline-number{font-family:var(--latin);font-size:24px;font-style:italic;color:var(--accent)}
.edition .outline-units h2{font-size:20px;line-height:1.5;margin-bottom:8px}
.edition .outline-units h2 a{text-decoration:none}
.edition .outline-activities{list-style:none;padding:10px 0 0 56px;margin:0}
.edition .outline-activities li{display:grid;gap:4px;padding:10px 0;border-bottom:1px solid var(--rule2)}
.edition .outline-activities a{font-family:var(--serif);font-size:15px;text-decoration:none}
.edition .outline-empty{margin:16px 0 0 56px}
.edition .course-notes{border-left:1px solid var(--rule);padding-left:24px}
.edition .course-notes>details.ev{border-top:0;padding-top:0}
.edition .course-note{padding-block:18px;border-top:1px solid var(--rule2)}
.edition .course-note h3{font-size:16px;line-height:1.6;margin-bottom:10px}
.edition .course-note .prose{font-size:14px;white-space:pre-wrap;overflow-wrap:anywhere;margin-bottom:12px}
.edition .unit-links{display:grid;gap:14px;margin-top:26px;padding-top:20px;border-top:1px solid var(--rule)}
.edition .activity-state{margin-block:5px 12px}
@media(max-width:1100px){
  .edition .outline-header{grid-template-columns:minmax(0,1fr)}
  .edition .outline-header>.plate{max-width:300px}
  .edition .course-outline{grid-template-columns:minmax(0,1fr) 250px;gap:24px}
}
@media(max-width:900px){
  .edition .course-outline{grid-template-columns:minmax(0,1fr)}
  .edition .outline-header{grid-template-columns:200px minmax(0,1fr)}
  .edition .course-notes{border-left:0;border-top:1px solid var(--rule);padding:22px 0 0}
}
@media(max-width:560px){
  .edition .outline-header{grid-template-columns:minmax(0,1fr)}
  .edition .course-list .course{grid-template-columns:110px minmax(0,1fr);gap:12px}
  .edition .outline-activities{padding-left:0}
  .edition .outline-empty{margin-left:0}
  .edition .academy-nav{gap:8px 18px}
}


.edition .prep-steps,.edition .prep-edit-steps{list-style:none;padding:0;margin:22px 0}
.edition .prep-steps>li{display:grid;grid-template-columns:44px minmax(0,1fr);gap:16px;padding:24px 0;border-top:1px solid var(--rule)}
.edition .prep-number{font-family:var(--latin);font-style:italic;font-size:24px;color:var(--accent)}
.edition .prep-steps h2{font-size:22px;line-height:1.5;margin-block:8px}
.edition .prep-steps .prose{margin-top:12px}
.edition .prep-check{display:flex;gap:10px;align-items:baseline;margin-block:12px;font-size:14px;color:var(--ink2)}
.edition .prep-check input{flex:none}
.edition .prep-toolbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-block:18px}
.edition .prep-toolbar select{min-width:0;max-width:100%;border:1px solid var(--rule);background:var(--sheet);color:var(--ink);padding:8px;font:inherit;font-size:14px}
.edition #prepTarget{flex:1;min-width:180px}
.edition #prepPathSelect{max-width:min(100%,360px)}
.edition .prep-editor-fields>label,.edition #prepEditor>section>label,.edition .prep-edit-steps label{display:grid;gap:8px;margin-block:16px;color:var(--ink2);font-size:14px}
.edition #prepEditor .in{width:100%;max-width:100%;border:1px solid var(--rule);padding:10px;background:var(--sheet);color:var(--ink);font:inherit}
.edition .prep-edit-steps>li{padding:20px 0;border-top:1px solid var(--rule2)}
.edition .prep-edit-steps h3{font-size:18px;margin-block:10px;line-height:1.6}
.edition [data-prep-editor-message],.edition [data-prep-storage-note]{overflow-wrap:anywhere}
@media(max-width:560px){.edition .prep-steps>li{grid-template-columns:32px minmax(0,1fr);gap:10px}.edition .prep-toolbar select{width:100%}.edition #prepTarget{min-width:0}.edition .prep-steps h2{font-size:20px}}


.badge-art { display:inline-flex; align-items:center; justify-content:center; flex:none; width:30px; height:30px; line-height:0; vertical-align:middle; }
.badge-art svg { width:100%; height:100%; }
.badge-art [data-badge-theme="dark"] { display:none; }
:root[data-theme="dark"] .badge-art [data-badge-theme="light"] { display:none; }
:root[data-theme="dark"] .badge-art [data-badge-theme="dark"] { display:block; }
.edition h1.academy-title { display:flex; align-items:center; justify-content:center; gap:16px; }
.edition .academy-title > .badge-art { width:64px; height:64px; }
.edition .badge-academy { text-align:center; }

.edition .gate .academy-arch-frame { stroke:#A88A55; }
.edition .gate .academy-arch-laurel { color:#A88A55; }
.edition .gate .academy-gate-icon { stroke:var(--ink2); }
:root[data-theme="dark"] .edition .gate .academy-arch-frame { stroke:#C2A46E; }
:root[data-theme="dark"] .edition .gate .academy-arch-laurel { color:#C2A46E; }
@media(max-width:640px) {
  #shell-top .brand .badge-art { width:26px; height:26px; }
  .edition .academy-title > .badge-art { width:48px; height:48px; }
  .edition h1.academy-title { gap:10px; }
}


.edition .venue-photo{min-width:0;background:var(--paper)}
.edition .venue-photo .img{background:var(--paper)}
.edition .venue-photo img{object-fit:contain;filter:none}
.edition .venue-photo figcaption{display:block;overflow-wrap:anywhere}
.edition .venue-photo figcaption span{display:block}
.edition .venue-hero{margin-top:28px}
.edition .venue-hero .img{aspect-ratio:16/9}
.edition .venue-association{display:grid;grid-template-columns:minmax(0,1fr) minmax(160px,230px);align-items:start;gap:24px}
.edition .venue-logo .img{aspect-ratio:auto}
.edition .venue-logo img{height:auto}
.edition .venue-plaques{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:24px}
.edition .venue-plaques .img{aspect-ratio:4/3}
.edition .venue-results{display:grid;grid-template-columns:minmax(0,1fr) minmax(200px,300px);align-items:start;gap:24px}
.edition .venue-awards{display:grid;gap:18px}
.edition .venue-awards .img{aspect-ratio:3/4}
@media(max-width:680px){
  .edition .venue-association,.edition .venue-results{grid-template-columns:minmax(0,1fr)}
  .edition .venue-logo{max-width:220px}
  .edition .venue-plaques{grid-template-columns:repeat(2,minmax(0,1fr))}
  .edition .venue-awards{max-width:300px}
}
@media(max-width:420px){.edition .venue-plaques{grid-template-columns:minmax(0,1fr)}}


.edition .writing-tabs{display:flex;gap:32px;border-bottom:1px solid var(--rule);margin-top:16px}
.edition .writing-tabs>a{font-family:var(--serif);font-size:21px;text-decoration:none;padding:12px 2px 14px;color:var(--mute);border-bottom:2px solid transparent;margin-bottom:-1px}
.edition .writing-tabs>a[aria-current="page"]{color:var(--ink);border-color:var(--accent)}
.edition .writing-intro{padding:36px 0 26px;max-width:720px}
.edition .writing-intro h2{font-size:30px;margin-bottom:10px}
.edition .writing-intro .lead{font-size:15.5px}
.edition .writing-columns{display:grid;gap:20px}
.edition .writing-weapons{grid-template-columns:repeat(3,minmax(0,1fr))}
.edition .writing-themes{grid-template-columns:repeat(4,minmax(0,1fr));margin-top:20px}
.edition .writing-card{--writing-column:var(--ink2);border:1px solid var(--rule);border-top:2px solid var(--writing-column);padding:20px 22px;min-width:0;display:flex;flex-direction:column;align-items:flex-start}
.edition .writing-card h3{font-size:24px;line-height:1.4;margin-bottom:10px}
.edition .writing-card h3>a{text-decoration:none;color:inherit}
.edition .writing-card>p{font-family:var(--serif);font-size:14px;line-height:1.8;color:var(--ink2);margin-bottom:16px;flex:1}
.edition .writing-card.is-empty{border-top-color:var(--rule);color:var(--mute)}
.edition .writing-first{font-family:var(--serif);font-size:14px;line-height:1.7;text-decoration:none;margin-top:16px;padding-top:12px;border-top:1px solid var(--rule2);width:100%}
.edition .writing-recent{margin-top:38px;padding-block:28px}
.edition .writing-recent .sec-h{margin-bottom:10px}
.edition .writing-recent-row{display:grid;grid-template-columns:90px 45px minmax(0,1fr) auto;gap:16px;padding-block:12px;align-items:baseline;border-bottom:1px solid var(--rule2)}
.edition .writing-recent-row>a{text-decoration:none;font-family:var(--serif);font-size:16px}
.edition .writing-desk{border-top:1px solid var(--rule);padding:22px 0;margin-top:22px}
.edition .writing-empty{padding:30px 0}
.edition .writing-directory{border-top:1px solid var(--rule);margin-top:30px;max-width:960px}
.edition .writing-row{display:flex;gap:22px;padding:24px 0;border-bottom:1px solid var(--rule2);text-decoration:none;align-items:baseline}
.edition .writing-row>span:last-child{min-width:0}
.edition .writing-row b{font-family:var(--serif);font-size:21px;font-weight:400;line-height:1.65}
.edition .writing-row p{font-family:var(--serif);font-size:15px;color:var(--ink2);line-height:1.8;margin:7px 0 8px}
.edition .writing-number{font-family:var(--latin);font-style:italic;font-size:25px;color:var(--mute);flex:0 0 34px}
.edition .writing-shorts{margin-top:36px;border-top:1px solid var(--rule);padding:18px 0;max-width:960px}
.edition .writing-shorts>summary{font-family:var(--serif);font-size:17px;cursor:pointer}
.edition .writing-shorts>a{display:flex;gap:20px;align-items:baseline;text-decoration:none;padding:14px 0;border-bottom:1px solid var(--rule2);font-family:var(--serif);font-size:15px}
.edition .writing-layout{display:grid;grid-template-columns:200px minmax(0,720px);gap:clamp(32px,5vw,70px);align-items:start;justify-content:center;padding-top:24px}
.edition .writing-sidebar{position:sticky;top:94px;min-width:0}
.edition .writing-sidebar>.crumb{font-size:12.5px;line-height:1.8;padding:0 0 26px}
.edition .writing-toc>summary{font-family:var(--serif);font-size:15px;color:var(--ink2);list-style:none;cursor:default;padding-bottom:12px;border-bottom:1px solid var(--rule)}
.edition .writing-toc>summary::-webkit-details-marker{display:none}
.edition .writing-toc>summary>span{display:none}
.edition .writing-toc>nav{display:grid;gap:0;padding-top:10px}
.edition .writing-toc a{font-family:var(--serif);font-size:13.5px;line-height:1.65;text-decoration:none;padding:7px 0;color:var(--ink2)}
.edition .writing-toc a:hover{color:var(--accent)}
.edition .writing-essay{width:100%;min-width:0}
.edition .writing-essay>.ephead{padding-top:0;padding-bottom:28px;border-bottom:1px solid var(--rule)}
.edition .writing-essay h1{font-size:clamp(27px,3vw,38px);line-height:1.55;letter-spacing:.03em;margin:14px 0 20px;overflow-wrap:anywhere}
.edition .writing-claim{font-family:var(--serif);font-size:21px;line-height:1.9;color:var(--ink2);margin-bottom:20px;padding-left:18px;border-left:2px solid var(--accent)}
.edition .writing-associations{display:flex;gap:9px 20px;flex-wrap:wrap;margin-top:18px}
.edition .writing-associations a{font-family:var(--serif);font-size:13px;text-decoration:none;color:var(--ink2)}
.edition .writing-terms{margin:16px 0 0}
.edition .writing-section{padding-top:34px;scroll-margin-top:100px}
.edition .writing-section>h2{font-size:24px;line-height:1.6;margin-bottom:16px}
.edition .writing-section .prose{font-size:17px;line-height:2.05;overflow-wrap:anywhere}
.edition .writing-section .prose ul,.edition .writing-section .prose ol{padding-left:1.5em;margin-block:1em}
.edition .writing-section .prose h3{font-size:20px;margin-block:24px 12px}
.edition .writing-sources{margin:18px 0 8px}
.edition .writing-sources>summary{font-size:12.5px;color:var(--mute);text-align:right;cursor:pointer;list-style:none}
.edition .writing-sources>summary::after{content:" ▸"}
.edition .writing-sources[open]>summary::after{content:" ▾"}
.edition .writing-sources>summary::-webkit-details-marker{display:none}
.edition .writing-source-list{font-family:var(--serif);font-size:13.5px;line-height:1.8;margin-top:12px;padding:2px 16px;border-left:1px solid var(--rule)}
.edition .writing-source{padding:10px 0;border-bottom:1px solid var(--rule2)}
.edition .writing-source>div{display:flex;flex-wrap:wrap;gap:5px 18px;align-items:baseline}
.edition .writing-source a{text-decoration:none}
.edition .writing-copy{font:inherit;font-size:12px;color:var(--mute);background:none;border:0;border-bottom:1px solid var(--rule);padding:0;margin-top:6px;cursor:pointer}
.edition .writing-pending{border:1px solid var(--rule);padding:22px 24px;margin-top:38px;scroll-margin-top:100px}
.edition .writing-pending>h2{font-size:23px;margin-bottom:16px}
.edition .writing-pending>div+div{border-top:1px solid var(--rule2);padding-top:16px;margin-top:16px}
.edition .writing-pending h3{font-size:17px;line-height:1.8}
.edition .writing-pending p{font-family:var(--serif);font-size:14px;line-height:1.8;color:var(--ink2);margin-top:6px}
.edition .writing-continue{margin-top:38px;padding-block:26px}
.edition .writing-continue>h2{font-size:24px}
.edition .writing-continue .writing-row{padding:16px 0}
.edition .writing-continue .writing-row b{font-size:18px}
.edition .writing-pagination{display:grid;grid-template-columns:1fr 1fr;gap:24px;padding-top:24px;margin-top:30px;border-top:1px solid var(--rule)}
.edition .writing-pagination>div:last-child{text-align:right}
.edition .writing-pagination a{font-family:var(--serif);font-size:14px;line-height:1.9;text-decoration:none}
@media(min-width:1024px){.edition .writing-toc:not([open])>nav{display:grid}}
@media(max-width:1023px){
  .edition .writing-layout{grid-template-columns:minmax(0,720px);gap:20px;padding-top:12px}
  .edition .writing-sidebar{position:static}
  .edition .writing-sidebar>.crumb{padding-bottom:16px}
  .edition .writing-toc>summary{cursor:pointer;display:flex;justify-content:space-between;padding:12px 0}
  .edition .writing-toc>summary>span{display:inline}
  .edition .writing-toc>nav{padding:12px 16px;border-bottom:1px solid var(--rule)}
  .edition .writing-toc:not([open])>nav{display:none}
  .edition .writing-themes{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:600px){
  .edition .writing-weapons,.edition .writing-themes{grid-template-columns:minmax(0,1fr);gap:14px}
  .edition .writing-themes{margin-top:14px}
  .edition .writing-card{padding:18px 20px}
  .edition .writing-card>p{margin-bottom:10px}
  .edition .writing-first{margin-top:12px;padding-top:10px}
  .edition .writing-recent-row{grid-template-columns:90px 1fr auto;gap:6px 10px}
  .edition .writing-recent-row>a{grid-column:1/-1;grid-row:2;font-size:17px}
  .edition .writing-row{gap:12px;padding:20px 0}
  .edition .writing-row b{font-size:20px}
  .edition .writing-number{flex-basis:28px;font-size:23px}
  .edition .writing-essay h1{font-size:28px}
  .edition .writing-claim{font-size:19px;padding-left:14px}
  .edition .writing-section>h2{font-size:23px}
  .edition .writing-pending{padding:20px 18px}
  .edition .writing-pagination{gap:20px}
  .edition .writing-shorts>a{display:grid;gap:5px}
}

.public-video{display:block;width:100%;aspect-ratio:16/9;border:0}
