/* ============================================================
   理性之眼 · 西方哲学大系
   设计语言：夜版古典典籍（classical codex）——
   羊金刊口、大理石章牌、垂直题签、地层时间、回纹分隔。
   ============================================================ */
:root{
  --bg0:#08090d; --bg1:#0d0f15; --bg2:#12151e; --bg3:#181c28;
  --line:#282e3f; --hair:rgba(201,164,92,.16); --hair2:rgba(201,164,92,.34);
  --gold:#c9a45c; --gold-hi:#eed08c; --gold-dim:#8a7343;
  --verm:#b5433a; --azure:#6f93b8; --sage:#84a08c; --amber:#c07c4a;
  --ink:#e9e3d2; --ink-dim:#a49c88; --ink-mute:#6e695c;
  --serif:"Georgia","Times New Roman","Noto Serif SC","Source Han Serif SC","Songti SC",SimSun,serif;
  --kai:"Kaiti SC","STKaiti",KaiTi,"Noto Serif SC",serif;
  --rad:3px;
  --tab-h:56px; --rail-w:92px;
}
*{box-sizing:border-box; margin:0; padding:0}
html{scroll-behavior:smooth}
html.static,html.static *{scroll-behavior:auto!important}
body{
  font-family:var(--serif); color:var(--ink); background:var(--bg0);
  -webkit-font-smoothing:antialiased; overflow:hidden;
  height:100dvh; letter-spacing:.01em;
  background-image:radial-gradient(1200px 700px at 78% -10%, rgba(201,164,92,.055), transparent 60%),
                   radial-gradient(900px 600px at -10% 110%, rgba(111,147,184,.05), transparent 55%);
}
::selection{background:rgba(201,164,92,.28); color:#fff}
button{font-family:inherit; color:inherit; background:none; border:0; cursor:pointer}
input{font-family:inherit}
a{color:var(--gold); text-decoration:none}
ul{list-style:none}

/* 纸面颗粒 */
#grain{position:fixed; inset:0; z-index:999; pointer-events:none; opacity:.5; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='160' height='160' filter='url(%23n)' opacity='.055'/></svg>");}

/* ---------- 布局骨架：分页视图 ---------- */
#stage{position:fixed; inset:0 0 0 var(--rail-w);}
.view{position:absolute; inset:0; overflow-y:auto; overflow-x:hidden; -webkit-overflow-scrolling:touch;
  padding:34px 44px 84px; display:none; scrollbar-width:thin; scrollbar-color:var(--gold-dim) transparent}
.view.on{display:block}
.view::-webkit-scrollbar{width:8px}
.view::-webkit-scrollbar-thumb{background:var(--gold-dim); border-radius:4px}
.wrap{max-width:1120px; margin:0 auto}
.wrap.wide{max-width:1380px}

/* ---------- 桌面题栏（左侧竖排） ---------- */
#rail{position:fixed; left:0; top:0; bottom:0; width:var(--rail-w); z-index:40;
  border-right:1px solid var(--hair); background:linear-gradient(180deg,var(--bg1),var(--bg0));
  display:flex; flex-direction:column; align-items:center; padding:18px 0 14px}
#rail .logo{font-size:26px; color:var(--gold); line-height:1; margin-bottom:6px; font-family:var(--serif)}
#rail .logo-sub{font-size:9px; letter-spacing:.34em; color:var(--ink-mute); writing-mode:vertical-rl; margin-bottom:20px; text-indent:0}
#rail nav{display:flex; flex-direction:column; gap:2px; flex:1}
.rbtn{position:relative; width:var(--rail-w); padding:13px 0 11px; display:flex; flex-direction:column; align-items:center; gap:5px;
  color:var(--ink-dim); transition:color .22s}
.rbtn .zi{font-size:17px; line-height:1.15}
.rbtn .num{font-size:8.5px; letter-spacing:.18em; font-family:var(--serif); color:var(--ink-mute)}
.rbtn:hover{color:var(--ink)}
.rbtn.on{color:var(--gold-hi)}
.rbtn.on::after{content:""; position:absolute; left:0; top:18%; bottom:18%; width:2px; background:var(--gold)}
#rail .rail-foot{font-size:9px; color:var(--ink-mute); writing-mode:vertical-rl; opacity:.7}

/* ---------- 移动底栏 ---------- */
#tabbar{position:fixed; left:0; right:0; bottom:0; z-index:45; display:none;
  height:calc(var(--tab-h) + env(safe-area-inset-bottom)); padding-bottom:env(safe-area-inset-bottom);
  background:rgba(10,12,17,.92); backdrop-filter:blur(14px); border-top:1px solid var(--hair)}
#tabbar .t{flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; color:var(--ink-mute); font-size:11px}
#tabbar .t .g{font-size:15px; line-height:1}
#tabbar .t.on{color:var(--gold-hi)}
#tabbar .t.more.on{color:var(--gold-hi)}

/* ---------- 刊口标题体系 ---------- */
.plate{position:relative; isolation:isolate; overflow:hidden; padding:26px 0 10px; margin-bottom:22px}
.plate-art{position:absolute; inset:0 -2% 0 -2%; z-index:-1; overflow:hidden; pointer-events:none;
  -webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.96) 0%,rgba(0,0,0,.55) 58%,transparent 100%);
          mask-image:linear-gradient(180deg,rgba(0,0,0,.96) 0%,rgba(0,0,0,.55) 58%,transparent 100%)}
.plate-art img{width:100%; height:100%; object-fit:cover; object-position:52% 34%;
  filter:grayscale(.34) sepia(.26) contrast(1.06) brightness(.66); opacity:.4; mix-blend-mode:screen}
.plate-art::after{content:''; position:absolute; inset:0;
  background:linear-gradient(96deg, rgba(13,15,21,.93) 0%, rgba(13,15,21,.66) 34%, rgba(13,15,21,0) 72%)}
.plate-credit{display:block; margin-top:12px; font-style:normal; font-size:10.5px; letter-spacing:.16em; color:rgba(201,164,92,.42)}
@media (max-width:820px){.plate-art img{opacity:.26}}
.plate .kicker{font-size:10.5px; letter-spacing:.5em; color:var(--gold-dim); text-transform:uppercase; margin-bottom:10px}
.plate h1{font-size:clamp(30px,4.6vw,52px); font-weight:600; letter-spacing:.06em; line-height:1.12}
.plate h1 .ex{color:var(--verm)}
.plate .under{margin-top:14px; height:1px; background:linear-gradient(90deg,var(--gold) 0 84px,var(--hair) 84px 100%)}
.plate .lede{margin-top:14px; color:var(--ink-dim); font-size:14.5px; line-height:1.9; max-width:640px}
.era-mark{position:absolute; right:0; top:8px; writing-mode:vertical-rl; font-family:var(--kai);
  font-size:13px; letter-spacing:.5em; color:var(--ink-mute); border-left:1px solid var(--hair); padding-left:10px; height:150px}
@media (max-width:820px){.era-mark{display:none}}

/* 分隔饰线：断金线 + 中央菱形 */
.meander{position:relative; height:18px; margin:36px 0;
  background:linear-gradient(90deg, transparent 0, var(--hair) 8%, var(--hair) 45%, transparent 45%, transparent 55%, var(--hair) 55%, var(--hair) 92%, transparent 100%) no-repeat center/100% 1px}
.meander::after{content:""; position:absolute; left:50%; top:5px; width:8px; height:8px; margin-left:-4px;
  background:var(--gold-dim); transform:rotate(45deg); box-shadow:14px 0 0 -2.5px rgba(201,164,92,.35), -14px 0 0 -2.5px rgba(201,164,92,.35)}

/* ---------- 卡片与章牌 ---------- */
.card{position:relative; background:linear-gradient(175deg,var(--bg2),var(--bg1) 70%);
  border:1px solid var(--line); border-radius:var(--rad); padding:22px 24px;
  transition:transform .25s, border-color .25s, box-shadow .25s}
.card::before{content:""; position:absolute; inset:5px; border:1px solid var(--hair); border-radius:1px; pointer-events:none}
.card:hover{border-color:var(--hair2); transform:translateY(-3px); box-shadow:0 18px 44px -18px rgba(0,0,0,.75)}
.card h3{font-size:19px; letter-spacing:.05em; margin-bottom:8px}
.card .sub{font-size:11px; letter-spacing:.22em; color:var(--gold-dim); margin-bottom:10px}
.grid{display:grid; gap:18px}
.grid.c2{grid-template-columns:repeat(2,1fr)}
.grid.c3{grid-template-columns:repeat(3,1fr)}
.grid.c4{grid-template-columns:repeat(4,1fr)}
@media (max-width:1180px){.grid.c4{grid-template-columns:repeat(3,1fr)}}
@media (max-width:980px){.grid.c3,.grid.c4{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.grid.c2,.grid.c3,.grid.c4{grid-template-columns:1fr}}

.medal{position:relative; width:88px; height:88px; border-radius:50%; flex:none;
  background:radial-gradient(circle at 32% 28%, #2c3140, #14171f 70%);
  border:1px solid var(--hair2); box-shadow:inset 0 0 0 5px var(--bg1), inset 0 0 22px rgba(0,0,0,.65);
  display:flex; align-items:center; justify-content:center; overflow:hidden}
.medal img{width:100%; height:100%; object-fit:cover; filter:grayscale(.55) sepia(.22) contrast(1.04) brightness(.96)}
.medal .ini{font-family:var(--serif); font-size:30px; color:var(--gold); opacity:.9}
.medal::after{content:""; position:absolute; inset:0; border-radius:50%; box-shadow:inset 0 -14px 22px -14px rgba(0,0,0,.8)}

.quote{font-family:var(--kai); font-size:16.5px; line-height:2; color:var(--ink);
  border-left:2px solid var(--verm); padding:6px 0 6px 20px; margin:14px 0}
.quote .by{display:block; font-size:11.5px; color:var(--gold-dim); margin-top:8px; letter-spacing:.2em; font-family:var(--serif)}

.chip{display:inline-flex; align-items:center; gap:5px; padding:4px 12px; border:1px solid var(--line);
  border-radius:999px; font-size:12px; color:var(--ink-dim); cursor:pointer; transition:all .2s; background:var(--bg1); white-space:nowrap}
.chip:hover{color:var(--ink); border-color:var(--hair2)}
.chip.on{color:#141208; background:var(--gold); border-color:var(--gold); font-weight:600}
.chips{display:flex; flex-wrap:wrap; gap:8px}

.tag{display:inline-block; font-size:10.5px; letter-spacing:.14em; color:var(--gold); border:1px solid var(--hair2);
  padding:2px 8px; border-radius:2px; margin-right:6px}
.rnum{font-family:var(--serif); color:var(--gold-dim); font-size:12px; letter-spacing:.15em}

/* ---------- 首页 ---------- */
#v-home .hero{min-height:calc(100dvh - 170px); display:flex; flex-direction:column; justify-content:center; position:relative}
.hero-frame{position:relative; isolation:isolate; overflow:hidden; border:1px solid var(--hair2); outline:1px solid var(--hair); outline-offset:7px; padding:clamp(30px,6vw,64px) clamp(24px,5vw,56px); background:linear-gradient(160deg, rgba(201,164,92,.035), transparent 45%)}
.hero-frame h1{font-size:clamp(44px,8vw,96px); font-weight:650; letter-spacing:.08em; line-height:1.08}
.hero-frame h1 .ex{color:var(--verm); font-weight:600}
.hero-frame .lat{margin-top:16px; font-size:clamp(11px,1.4vw,14px); letter-spacing:.42em; color:var(--gold-dim); text-transform:uppercase}
.hero-frame .slogan{margin-top:22px; font-family:var(--kai); font-size:clamp(15px,2vw,19px); color:var(--ink-dim); line-height:2}
.hero-stats{display:flex; flex-wrap:wrap; gap:clamp(18px,4vw,44px); margin-top:30px; padding-top:22px; border-top:1px solid var(--hair)}
.hstat b{display:block; font-size:clamp(22px,3vw,34px); color:var(--gold-hi); font-weight:600}
.hstat span{font-size:11px; letter-spacing:.3em; color:var(--ink-mute)}
.hero-quote{margin-top:34px; min-height:74px}
.hero-quote .q-line{font-family:var(--kai); font-size:clamp(16px,2.2vw,22px); line-height:1.9; color:var(--ink); transition:opacity .6s}
.hero-quote .q-by{margin-top:8px; font-size:11.5px; letter-spacing:.3em; color:var(--verm)}
.dq{margin-top:26px; display:inline-flex; align-items:center; gap:14px; border:1px dashed var(--hair2); padding:14px 20px; border-radius:2px; background:rgba(201,164,92,.04)}
.dq .lab{font-size:10px; letter-spacing:.4em; color:var(--gold-dim)}
.dq .txt{font-family:var(--kai); font-size:16px; color:var(--ink)}
.dq button{border:1px solid var(--hair2); color:var(--gold); padding:7px 16px; font-size:12.5px; letter-spacing:.2em; transition:all .2s; border-radius:2px}
.dq button:hover{background:var(--gold); color:#141208}
.gate-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:20px}
@media (max-width:980px){.gate-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:620px){.gate-grid{grid-template-columns:1fr}}
.gate{position:relative; display:block; text-align:left; overflow:hidden}
.gate .zi{font-family:var(--kai); position:absolute; right:-6px; top:-18px; font-size:86px; color:rgba(201,164,92,.09); line-height:1; pointer-events:none; transition:color .3s}
.gate:hover .zi{color:rgba(201,164,92,.18)}
.gate p{color:var(--ink-dim); font-size:13px; line-height:1.85; margin-top:6px}
.gate .go{margin-top:14px; font-size:11px; letter-spacing:.3em; color:var(--gold)}
.foot-cred{margin-top:40px; font-size:11px; color:var(--ink-mute); line-height:1.9}

/* ---------- 时间轴（地层） ---------- */
.strata{position:relative; margin-top:10px}
.stratum{position:relative; margin:0 0 26px; padding:26px 28px 24px 66px; border:1px solid var(--line); border-radius:var(--rad);
  background:linear-gradient(180deg, var(--bg2), var(--bg1) 92%); cursor:pointer; transition:border-color .25s}
.stratum:hover{border-color:var(--hair2)}
.stratum .band{position:absolute; left:0; top:0; bottom:0; width:9px; border-radius:var(--rad) 0 0 var(--rad)}
.stratum .vert{position:absolute; left:26px; top:26px; writing-mode:vertical-rl; font-family:var(--kai); letter-spacing:.34em; font-size:14px; line-height:1}
.stratum h3{font-size:clamp(19px,2.4vw,24px); letter-spacing:.05em}
.stratum .span{font-size:11px; letter-spacing:.2em; color:var(--gold-dim); margin-left:12px}
.stratum .tagline{font-family:var(--kai); color:var(--gold); font-size:14.5px; margin:8px 0 2px}
.stratum .bq{font-size:13px; color:var(--ink-mute); margin-top:2px}
.stratum .open-hint{position:absolute; right:18px; top:26px; font-size:11px; letter-spacing:.25em; color:var(--gold-dim)}
.stratum .body{display:none; margin-top:16px; border-top:1px dashed var(--hair); padding-top:16px}
.stratum.open .body{display:block; animation:fadein .4s}
.stratum .cols{display:grid; grid-template-columns:1.3fr 1fr 1fr; gap:22px}
@media (max-width:900px){.stratum .cols{grid-template-columns:1fr}}
.stratum .summary{font-size:14px; line-height:2; color:var(--ink-dim)}
.mini-item{padding:9px 0; border-bottom:1px solid rgba(40,46,63,.5); font-size:13px; line-height:1.7}
.mini-item b{color:var(--ink); font-weight:600}
.mini-item span{color:var(--ink-mute)}
.ev-item{display:flex; gap:12px; padding:8px 0; font-size:13px; color:var(--ink-dim); line-height:1.7}
.ev-item .d{color:var(--gold); flex:none; font-size:12px; min-width:64px; letter-spacing:.05em}
.blk-t{font-size:10.5px; letter-spacing:.4em; color:var(--gold-dim); margin-bottom:8px}
.stratum .relay{margin-top:14px; padding:12px 16px; background:rgba(181,67,58,.07); border-left:2px solid var(--verm); font-size:13px; line-height:1.9; color:var(--ink-dim)}
.stratum .relay b{color:var(--verm)}

/* ---------- 哲学家图鉴 ---------- */
.th-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:18px}
@media (max-width:1280px){.th-grid{grid-template-columns:repeat(3,1fr)}}
@media (max-width:900px){.th-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.th-grid{grid-template-columns:repeat(2,1fr); gap:12px}}
.th-card{position:relative; text-align:left; padding:22px 18px 18px; display:flex; flex-direction:column; align-items:center; gap:10px; background:linear-gradient(175deg,var(--bg2),var(--bg1) 75%); border:1px solid var(--line); border-radius:var(--rad); transition:all .25s; cursor:pointer}
.th-card:hover{border-color:var(--hair2); transform:translateY(-3px); box-shadow:0 16px 40px -16px rgba(0,0,0,.7)}
.th-card .medal{width:clamp(64px,9vw,88px); height:clamp(64px,9vw,88px)}
.th-card .nm{font-size:17px; letter-spacing:.06em}
.th-card .en{font-size:10.5px; color:var(--ink-mute); letter-spacing:.08em; text-align:center; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.th-card .yrs{font-size:11px; color:var(--gold-dim); letter-spacing:.1em}
.th-card .ttl{font-family:var(--kai); font-size:12.5px; color:var(--ink-dim); text-align:center; line-height:1.6; min-height:2.2em}
.th-card .sc{position:absolute; top:10px; left:10px; font-size:9.5px; letter-spacing:.18em; color:var(--ink-mute); border:1px solid var(--line); padding:2px 7px; border-radius:999px}
.th-card.fav::after{content:"✦"; position:absolute; top:8px; right:10px; color:var(--gold)}
.searchbar{display:flex; gap:10px; align-items:center; margin:6px 0 18px}
.searchbar input{flex:1; background:var(--bg1); border:1px solid var(--line); border-radius:2px; color:var(--ink); padding:11px 16px; font-size:14px; outline:none}
.searchbar input:focus{border-color:var(--hair2)}

/* ---------- 详情抽屉（sheet） ---------- */
#scrim{position:fixed; inset:0; background:rgba(4,5,8,.7); backdrop-filter:blur(3px); opacity:0; pointer-events:none; transition:opacity .3s; z-index:59}
#scrim.on{opacity:1; pointer-events:auto}
#sheet{position:fixed; top:0; right:0; bottom:0; width:min(560px,92vw); z-index:60; background:var(--bg1);
  border-left:1px solid var(--hair2); transform:translateX(105%); transition:transform .38s cubic-bezier(.2,.7,.25,1);
  display:flex; flex-direction:column; box-shadow:-30px 0 60px rgba(0,0,0,.5)}
#sheet.on{transform:none}
@media (max-width:820px){#sheet{width:100%; border-left:0; top:6%}}
.sh-head{display:flex; align-items:center; gap:16px; padding:22px 26px 16px; border-bottom:1px solid var(--hair)}
.sh-head .x{margin-left:auto; font-size:22px; color:var(--ink-mute); padding:4px 10px}
.sh-head .x:hover{color:var(--verm)}
.sh-body{overflow-y:auto; padding:22px 26px 60px; flex:1}
.sh-body h4{font-size:10.5px; letter-spacing:.4em; color:var(--gold-dim); margin:22px 0 10px}
.sh-body p{font-size:14px; line-height:2; color:var(--ink-dim)}
.sh-body .ideas li{position:relative; padding:7px 0 7px 22px; font-size:14px; line-height:1.85; color:var(--ink-dim); border-bottom:1px solid rgba(40,46,63,.4)}
.sh-body .ideas li::before{content:"◆"; position:absolute; left:2px; color:var(--verm); font-size:9px; top:12px}
.sh-body .works li{display:flex; gap:10px; padding:6px 0; font-size:13.5px; color:var(--ink-dim)}
.sh-body .works li::before{content:"〔书〕"; color:var(--gold-dim); font-size:11px; letter-spacing:.1em}
.relate-row{display:flex; flex-wrap:wrap; gap:8px; margin-top:6px}
.relate-row .chip{cursor:pointer}
.favbtn{border:1px solid var(--hair2); color:var(--gold); padding:8px 18px; font-size:12.5px; letter-spacing:.2em; border-radius:2px; transition:all .2s}
.favbtn:hover,.favbtn.on{background:var(--gold); color:#141208}

/* ---------- 流派 ---------- */
.stream{margin-bottom:34px}
.stream-head{display:flex; align-items:baseline; gap:16px; padding-bottom:10px; border-bottom:1px solid var(--hair2)}
.stream-head h3{font-size:22px}
.stream-head .ess{font-size:12.5px; color:var(--ink-mute); line-height:1.7}
.sc-card{cursor:pointer}
.sc-card .period{font-size:11px; color:var(--gold-dim); letter-spacing:.18em}
.sc-card .theses{margin:10px 0 0}
.sc-card .theses li{font-size:13px; line-height:1.8; color:var(--ink-dim); padding:5px 0 5px 16px; position:relative}
.sc-card .theses li::before{content:"—"; position:absolute; left:0; color:var(--verm)}
.sc-card .founder{margin-top:10px; font-size:12px; color:var(--ink-mute)}
/* 思想之河 */
.riverbox{border:1px solid var(--line); background:var(--bg1); border-radius:var(--rad); padding:8px; margin:20px 0 8px; overflow:hidden}
.riverbox svg{display:block; width:100%; height:auto}
.river-node{cursor:pointer}
.river-node rect{fill:var(--bg2); stroke:var(--line); transition:all .25s}
.river-node:hover rect{stroke:var(--gold); filter:brightness(1.3)}
.river-node text{fill:var(--ink-dim); font-size:12.5px; font-family:var(--serif)}
.river-node.on rect{stroke:var(--gold); fill:rgba(201,164,92,.12)}
.river-node.on text{fill:var(--gold-hi)}

/* ---------- 词典 ---------- */
.lex-idx{display:flex; flex-wrap:wrap; gap:6px; margin:14px 0 22px; position:sticky; top:0; background:var(--bg1); padding:12px 0; z-index:5}
.lex-item{border-bottom:1px solid rgba(40,46,63,.55); padding:16px 6px; cursor:pointer; transition:background .2s}
.lex-item:hover{background:rgba(201,164,92,.035)}
.lex-item .t{font-size:17px; color:var(--ink); margin-right:10px}
.lex-item .en{font-size:11.5px; color:var(--gold-dim); font-style:italic}
.lex-item .def{margin-top:6px; font-size:13.5px; line-height:1.9; color:var(--ink-dim)}
.lex-item .see{margin-top:6px}
.letter-h{font-family:var(--serif); font-size:15px; letter-spacing:.3em; color:var(--verm); margin:26px 0 4px; border-bottom:1px solid var(--hair2); padding-bottom:6px}
.livebox{margin-top:34px; border:1px dashed var(--hair2); padding:20px 22px; border-radius:var(--rad); background:rgba(111,147,184,.04)}
.livebox .row{display:flex; gap:10px; margin-top:12px; flex-wrap:wrap}
.livebox input{flex:1; min-width:200px; background:var(--bg0); border:1px solid var(--line); color:var(--ink); padding:10px 14px; font-size:13.5px; outline:none; border-radius:2px}
.live-res{margin-top:14px; font-size:13px; line-height:1.9; color:var(--ink-dim)}
.live-res li{padding:9px 0; border-bottom:1px solid rgba(40,46,63,.4)}
.live-res b{color:var(--ink); font-weight:600}
.live-res .meta{color:var(--ink-mute); font-size:11.5px}
.netnote{font-size:11.5px; color:var(--ink-mute); margin-top:10px}

/* ---------- 工坊 ---------- */
.lab-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:20px}
@media (max-width:860px){.lab-grid{grid-template-columns:1fr}}
.lab-card{cursor:pointer; text-align:left}
.lab-card .no{font-family:var(--serif); font-size:34px; color:rgba(201,164,92,.28); position:absolute; right:18px; top:12px}
.lab-card .zi{font-family:var(--kai); font-size:20px; color:var(--gold-hi)}
.lab-card p{margin-top:10px; font-size:13px; color:var(--ink-dim); line-height:1.9}
.lab-stage{margin-top:10px}
.q-opts{display:grid; gap:10px; margin-top:18px}
.q-opt{text-align:left; border:1px solid var(--line); background:var(--bg2); padding:14px 18px; font-size:14px; line-height:1.7; border-radius:2px; transition:all .2s; color:var(--ink-dim)}
.q-opt:hover{border-color:var(--gold); color:var(--ink); background:rgba(201,164,92,.06)}
.rx{border-left:3px solid var(--gold); padding:4px 0 4px 18px; margin:14px 0}
.rx .k{font-size:10.5px; letter-spacing:.35em; color:var(--gold-dim); margin-bottom:6px}
.rx .v{font-size:14.5px; line-height:2; color:var(--ink)}
.soc-line{display:flex; gap:14px; margin:16px 0; animation:fadein .5s}
.soc-line .who{font-family:var(--kai); color:var(--verm); flex:none; width:52px; font-size:14px; padding-top:3px}
.soc-line .said{font-size:15px; line-height:1.95; color:var(--ink); font-family:var(--kai)}
.ex-progress{display:flex; gap:8px; margin:16px 0}
.ex-progress i{flex:1; height:3px; background:var(--line)}
.ex-progress i.done{background:var(--gold)}
.ex-q{font-family:var(--kai); font-size:clamp(18px,2.6vw,24px); line-height:1.9; color:var(--ink); margin:18px 0; animation:fadein .5s}
.ex-hint{font-size:13px; color:var(--ink-mute); line-height:1.9; border-top:1px dashed var(--hair); padding-top:14px}
.ex-nav{display:flex; gap:12px; margin-top:22px}
.btn{border:1px solid var(--hair2); color:var(--gold); padding:10px 22px; font-size:13px; letter-spacing:.25em; border-radius:2px; transition:all .2s}
.btn:hover{background:var(--gold); color:#141208}
.btn.dim{border-color:var(--line); color:var(--ink-mute)}
.btn.dim:hover{border-color:var(--hair2); background:transparent; color:var(--ink)}
.tool-item{padding:12px 4px; border-bottom:1px solid rgba(40,46,63,.55); cursor:pointer}
.tool-item b{font-size:15.5px; color:var(--ink)}
.tool-item .u{font-size:12px; color:var(--gold-dim); margin-left:10px; letter-spacing:.08em}
.tool-item p{font-size:13px; color:var(--ink-dim); line-height:1.8; margin-top:5px}
.quiz-opt{display:block; width:100%; text-align:left; border:1px solid var(--line); background:var(--bg2); color:var(--ink-dim); padding:12px 16px; margin:8px 0; font-size:14px; border-radius:2px; transition:all .2s}
.quiz-opt:hover{border-color:var(--hair2)}
.quiz-opt.right{border-color:var(--sage); color:var(--sage); background:rgba(132,160,140,.08)}
.quiz-opt.wrong{border-color:var(--verm); color:var(--verm); background:rgba(181,67,58,.07)}

/* ---------- 图谱（atlas） ---------- */
#atlas-box{border:1px solid var(--line); background:#0a0c11; border-radius:var(--rad); position:relative; overflow:hidden; height:min(760px,calc(100dvh - 260px)); min-height:480px}
#atlas-box svg{display:block}
.atlas-tip{position:absolute; pointer-events:none; background:rgba(13,15,21,.96); border:1px solid var(--hair2); padding:10px 14px; font-size:12px; line-height:1.7; max-width:280px; border-radius:2px; color:var(--ink-dim); z-index:6; opacity:0; transition:opacity .15s}
.atlas-legend{display:flex; flex-wrap:wrap; gap:14px; margin:14px 2px 0; font-size:11.5px; color:var(--ink-mute)}
.atlas-legend i{display:inline-block; width:18px; height:2px; margin-right:6px; vertical-align:middle}
.tour-list{margin-top:20px}
.tour-item{border:1px solid var(--line); background:var(--bg1); border-radius:2px; padding:14px 18px; margin-bottom:10px; cursor:pointer; transition:all .2s}
.tour-item:hover{border-color:var(--hair2)}
.tour-item b{color:var(--ink); font-size:14.5px}
.tour-item p{color:var(--ink-mute); font-size:12px; margin-top:4px; line-height:1.7}

/* ---------- 书单 ---------- */
.cls-card{cursor:pointer}
.cls-card .no{font-family:var(--serif); color:var(--gold-dim); font-size:12px; letter-spacing:.2em}
.cls-card .tt{font-size:17px; margin-top:6px}
.cls-card .au{font-size:12px; color:var(--ink-mute); margin-top:3px; letter-spacing:.1em}
.cls-card .tg{font-family:var(--kai); font-size:13px; color:var(--ink-dim); margin-top:8px; line-height:1.7}
.path-card .books li{padding:7px 0; border-bottom:1px dashed rgba(40,46,63,.6); font-size:13.5px; line-height:1.75; color:var(--ink-dim)}
.path-card .books b{color:var(--ink)}
.path-card .method{margin-top:12px; font-size:12.5px; color:var(--sage); line-height:1.8}
.path-card .pitfall{margin-top:6px; font-size:12.5px; color:var(--verm); line-height:1.8; opacity:.85}

/* ---------- 命令面板 ---------- */
#palette{position:fixed; inset:0; z-index:70; background:rgba(4,5,8,.66); backdrop-filter:blur(4px); display:none; align-items:flex-start; justify-content:center; padding-top:12vh}
#palette.on{display:flex}
.pl-box{width:min(640px,92vw); background:var(--bg1); border:1px solid var(--hair2); border-radius:4px; box-shadow:0 40px 90px rgba(0,0,0,.6)}
#pl-input{width:100%; background:transparent; border:0; border-bottom:1px solid var(--hair); color:var(--ink); font-size:16px; padding:16px 20px; outline:none; font-family:var(--serif)}
#pl-results{max-height:52vh; overflow-y:auto; padding:8px 0}
#pl-results li{padding:10px 20px; cursor:pointer; display:flex; gap:12px; align-items:baseline}
#pl-results li:hover,#pl-results li.sel{background:rgba(201,164,92,.1)}
#pl-results .kind{font-size:10px; letter-spacing:.2em; color:var(--gold-dim); flex:none; width:52px}
#pl-results .nm{color:var(--ink); font-size:14.5px}
#pl-results .sn{color:var(--ink-mute); font-size:11.5px; margin-left:auto; text-align:right; max-width:44%; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.kbd-hint{padding:8px 20px; border-top:1px solid var(--hair); font-size:10.5px; color:var(--ink-mute); letter-spacing:.1em}

/* ---------- toast ---------- */
#toasts{position:fixed; left:50%; transform:translateX(-50%); bottom:calc(var(--tab-h) + 26px); z-index:88; display:flex; flex-direction:column; gap:8px; align-items:center}
.toast{background:rgba(20,23,31,.96); border:1px solid var(--hair2); color:var(--ink); padding:10px 22px; font-size:13px; border-radius:2px; animation:fadein .3s}

@keyframes fadein{from{opacity:0; transform:translateY(8px)} to{opacity:1; transform:none}}
.reveal{opacity:0; transform:translateY(14px); transition:opacity .6s, transform .6s}
.reveal.vis{opacity:1; transform:none}
html.static .reveal{opacity:1; transform:none; transition:none}

/* ---------- 响应式：移动 ---------- */
@media (max-width:820px){
  body{--tab-h:60px}
  #rail{display:none}
  #stage{inset:0 0 calc(var(--tab-h) + env(safe-area-inset-bottom)) 0}
  #tabbar{display:flex}
  .view{padding:22px 18px 40px}
  .plate .kicker{letter-spacing:.34em}
  #sheet{top:0}
  .sh-body{padding:18px 18px 50px}
  .hero-frame{outline-offset:5px}
  .lex-idx{position:static}
}
@media (min-width:821px){ #tabbar{display:none!important} }
@media (max-width:560px){
  .th-card .ttl{display:none}
  .th-card{padding:16px 10px 12px}
  #v-home .hero{min-height:auto; padding:10px 0 0}
}
