/* ============================================================
   诗泉别苑 · 视觉系统
   宣纸 / 水墨 / 朱印 —— 纸本美学，昼夜双主题
   ============================================================ */

:root{
  --paper:       #f4efe4;
  --paper-2:     #ece4d3;
  --paper-3:     #e3d9c4;
  --card:        rgba(255,253,248,.72);
  --card-solid:  #fbf8f1;
  --ink:         #16181d;
  --ink-soft:    #3c4149;
  --ink-faint:   #7c8088;
  --seal:        #a8322a;
  --seal-soft:   rgba(168,50,42,.1);
  --gold:        #a98a4b;
  --jade:        #4f7161;
  --line:        rgba(22,24,29,.13);
  --line-soft:   rgba(22,24,29,.07);
  --shadow:      0 18px 50px -22px rgba(30,26,18,.45);
  --shadow-sm:   0 8px 22px -14px rgba(30,26,18,.5);

  --font-display: "STSong","Songti SC","Noto Serif SC",Georgia,"SimSun",serif;
  --font-serif:   "Songti SC","STSong","Noto Serif SC","SimSun",Georgia,serif;
  --font-kai:     "STKaiti","Kaiti SC","KaiTi","楷体","Songti SC",serif;
  --font-sans:    system-ui,-apple-system,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;

  --radius:  16px;
  --radius-s: 10px;
  --shell:   1120px;
}

html[data-theme="dark"]{
  --paper:       #0f1218;
  --paper-2:     #151a22;
  --paper-3:     #1c222c;
  --card:        rgba(30,36,46,.62);
  --card-solid:  #1a2029;
  --ink:         #eae4d7;
  --ink-soft:    #c4bdae;
  --ink-faint:   #8a8477;
  --seal:        #d0574a;
  --seal-soft:   rgba(208,87,74,.14);
  --gold:        #c9a961;
  --jade:        #7ea593;
  --line:        rgba(234,228,215,.15);
  --line-soft:   rgba(234,228,215,.08);
  --shadow:      0 22px 60px -26px rgba(0,0,0,.85);
  --shadow-sm:   0 10px 26px -16px rgba(0,0,0,.8);
}

*{box-sizing:border-box;margin:0;padding:0}

/* 本样式表大量使用 flex/grid 布局，会覆盖浏览器默认的 [hidden]{display:none}，
   故在此统一兜底，确保 JS 通过 hidden 属性控制显隐始终生效。 */
[hidden]{display:none!important}

html{scroll-behavior:smooth}

body{
  font-family:var(--font-serif);
  color:var(--ink);
  background:var(--paper);
  min-height:100vh;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
  transition:background .5s ease,color .5s ease;
}

/* ── 纸纹与水墨氛围 ───────────────────────────── */
.grain{
  position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.5;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.32'/%3E%3C/svg%3E");
  mix-blend-mode:multiply;
}
html[data-theme="dark"] .grain{mix-blend-mode:screen;opacity:.22}

.wash{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.wash span{position:absolute;border-radius:50%;filter:blur(80px);opacity:.5}
.wash-1{width:52vw;height:52vw;left:-14vw;top:-16vw;background:radial-gradient(circle,rgba(168,50,42,.16),transparent 68%)}
.wash-2{width:46vw;height:46vw;right:-12vw;top:24vh;background:radial-gradient(circle,rgba(79,113,97,.2),transparent 68%)}
.wash-3{width:40vw;height:40vw;left:22vw;bottom:-18vw;background:radial-gradient(circle,rgba(169,138,75,.18),transparent 68%)}
html[data-theme="dark"] .wash span{opacity:.4}

/* ── 顶栏 ─────────────────────────────────────── */
.topbar{
  position:sticky;top:0;z-index:60;
  display:flex;align-items:center;gap:1rem;
  padding:.7rem clamp(.9rem,4vw,2.2rem);
  backdrop-filter:blur(14px) saturate(1.2);
  -webkit-backdrop-filter:blur(14px) saturate(1.2);
  background:color-mix(in srgb,var(--paper) 78%,transparent);
  border-bottom:1px solid var(--line-soft);
}

.brand{display:flex;align-items:center;gap:.62rem;text-decoration:none;color:inherit;flex-shrink:0}
.seal-mark{
  display:grid;place-items:center;width:38px;height:38px;border-radius:8px;
  background:var(--seal);color:#fdf8f0;font-family:var(--font-kai);
  font-size:23px;line-height:1;padding-bottom:2px;
  box-shadow:0 6px 16px -8px var(--seal);
  transition:transform .5s cubic-bezier(.16,1,.3,1);
}
.brand:hover .seal-mark{transform:rotate(-6deg) scale(1.05)}
.brand-text{display:flex;flex-direction:column;line-height:1.15}
.brand-text b{font-family:var(--font-display);font-size:1.02rem;letter-spacing:.16em;font-weight:600}
.brand-text i{font-family:var(--font-sans);font-style:normal;font-size:.55rem;letter-spacing:.34em;color:var(--ink-faint)}

.topnav{display:flex;gap:.15rem;margin-left:auto;flex-wrap:wrap}
.nav-btn{
  position:relative;border:0;background:none;cursor:pointer;color:var(--ink-faint);
  font-family:var(--font-serif);font-size:.94rem;letter-spacing:.14em;
  padding:.42rem .78rem;border-radius:var(--radius-s);
  display:inline-flex;align-items:center;gap:.34rem;transition:color .25s,background .25s;
}
.nav-btn:hover{color:var(--ink);background:var(--line-soft)}
.nav-btn.is-active{color:var(--ink);font-weight:600}
.nav-btn.is-active::after{
  content:"";position:absolute;left:50%;bottom:.02rem;transform:translateX(-50%);
  width:16px;height:2px;border-radius:2px;background:var(--seal);
}
.pill{
  font-family:var(--font-sans);font-style:normal;font-size:.62rem;line-height:1;
  min-width:17px;padding:.22rem .3rem;border-radius:99px;
  background:var(--seal-soft);color:var(--seal);border:1px solid color-mix(in srgb,var(--seal) 26%,transparent);
}

.topbar-actions{display:flex;gap:.4rem}
.icon-btn{
  width:36px;height:36px;display:grid;place-items:center;cursor:pointer;
  border:1px solid var(--line);border-radius:50%;background:transparent;color:var(--ink-soft);
  font-family:var(--font-kai);font-size:1rem;transition:.25s;
}
.icon-btn:hover{color:var(--ink);border-color:var(--ink);transform:translateY(-1px)}

/* ── 布局 ─────────────────────────────────────── */
.shell{position:relative;z-index:1;max-width:var(--shell);margin:0 auto;padding:0 clamp(.9rem,4vw,2rem) 4rem}

.view{display:none;animation:viewIn .55s cubic-bezier(.16,1,.3,1) both}
.view.is-active{display:block}
@keyframes viewIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

/* ── 首屏 ─────────────────────────────────────── */
.hero{position:relative;text-align:center;padding:clamp(2.6rem,8vw,5rem) 0 clamp(1.6rem,4vw,2.4rem)}
.couplet{
  position:absolute;right:0;top:2.4rem;
  font-family:var(--font-kai);font-size:1.02rem;line-height:2.3;letter-spacing:.34em;
  color:var(--ink);opacity:.16;writing-mode:vertical-rl;pointer-events:none;
}
.hero-kicker{
  display:flex;align-items:center;justify-content:center;gap:.85rem;
  font-family:var(--font-sans);font-size:.7rem;letter-spacing:.4em;color:var(--gold);
  text-transform:uppercase;margin-bottom:1.3rem;
}
.rule{display:block;width:clamp(20px,7vw,64px);height:1px;background:linear-gradient(90deg,transparent,var(--gold))}
.hero-kicker .rule:last-child{background:linear-gradient(90deg,var(--gold),transparent)}
.hero-title{
  font-family:var(--font-display);font-weight:600;
  font-size:clamp(2.5rem,8.4vw,4.6rem);line-height:1.12;letter-spacing:.1em;
  margin-bottom:.9rem;
}
.hero-title i{font-style:normal;color:var(--seal);font-size:.5em;vertical-align:.22em;margin:0 .1em}
.hero-sub{color:var(--ink-soft);font-size:clamp(.88rem,2.4vw,1.04rem);letter-spacing:.1em;max-width:36em;margin:0 auto}
.hero-stats{
  list-style:none;display:flex;justify-content:center;flex-wrap:wrap;
  gap:clamp(1.1rem,6vw,3.4rem);margin-top:2.6rem;
}
.hero-stats li{display:flex;flex-direction:column;align-items:center;gap:.1rem}
.hero-stats b{font-family:var(--font-display);font-size:clamp(1.3rem,4vw,1.85rem);font-weight:600;letter-spacing:.04em}
.hero-stats span{font-family:var(--font-sans);font-size:.68rem;letter-spacing:.24em;color:var(--ink-faint)}

/* ── 面板 ─────────────────────────────────────── */
.panel{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  padding:clamp(1rem,3vw,1.6rem);
}
.search-panel{display:flex;flex-direction:column;gap:1.05rem;position:relative}
.search-panel::before{
  content:"";position:absolute;inset:7px;border:1px solid var(--line-soft);border-radius:11px;pointer-events:none;
}

.search-row{display:flex;gap:.65rem;align-items:center}
.search-box{position:relative;flex:1;min-width:0}
.search-box .ico{position:absolute;left:1rem;top:50%;transform:translateY(-50%);color:var(--ink-faint);pointer-events:none}
.search-box input{
  width:100%;font-family:var(--font-serif);font-size:1rem;color:var(--ink);
  padding:1rem 2.6rem 1rem 2.95rem;border:1px solid var(--line);border-radius:var(--radius-s);
  background:color-mix(in srgb,var(--card-solid) 72%,transparent);outline:none;transition:.3s;
}
.search-box input::placeholder{color:var(--ink-faint)}
.search-box input:focus{border-color:var(--ink);box-shadow:0 0 0 3px var(--line-soft);background:var(--card-solid)}
.search-box input::-webkit-search-cancel-button{display:none}
.clear-btn{
  position:absolute;right:.6rem;top:50%;transform:translateY(-50%);
  border:0;background:none;color:var(--ink-faint);font-size:1.3rem;line-height:1;
  cursor:pointer;padding:.2rem .4rem;border-radius:6px;
}
.clear-btn:hover{color:var(--ink)}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.45rem;
  font-family:var(--font-serif);font-size:.95rem;letter-spacing:.12em;font-weight:500;
  padding:.92rem 1.5rem;border-radius:var(--radius-s);border:1px solid transparent;
  cursor:pointer;white-space:nowrap;transition:.28s cubic-bezier(.16,1,.3,1);
}
.btn:active{transform:translateY(1px) scale(.99)}
.btn-ink{background:var(--ink);color:var(--paper);box-shadow:var(--shadow-sm)}
.btn-ink:hover{transform:translateY(-2px);box-shadow:0 14px 28px -16px var(--ink)}
.btn-seal{background:var(--seal);color:#fdf8f0;box-shadow:var(--shadow-sm)}
.btn-seal:hover{transform:translateY(-2px);box-shadow:0 14px 28px -16px var(--seal)}
.btn-ghost{
  background:transparent;color:var(--ink);border-color:var(--line);
  border-radius:99px;padding:.72rem 2.6rem;
}
.btn-ghost:hover{background:var(--ink);color:var(--paper);border-color:var(--ink);transform:translateY(-2px)}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}

.filter-row{
  display:flex;gap:.9rem;flex-wrap:wrap;align-items:flex-end;
  border-top:1px dashed var(--line);padding-top:1.05rem;
}
.filter-group{display:flex;flex-direction:column;gap:.3rem;flex:1 1 150px;min-width:0}
.fl{font-family:var(--font-sans);font-size:.68rem;letter-spacing:.22em;color:var(--ink-faint)}
.filter-group input,.filter-group select{
  font-family:var(--font-serif);font-size:.92rem;color:var(--ink);
  padding:.58rem .8rem;border:1px solid var(--line);border-radius:8px;outline:none;
  background:color-mix(in srgb,var(--card-solid) 72%,transparent);transition:.25s;
  width:100%;-webkit-appearance:none;appearance:none;
}
.filter-group select{
  background-image:linear-gradient(45deg,transparent 50%,var(--ink-faint) 50%),linear-gradient(135deg,var(--ink-faint) 50%,transparent 50%);
  background-position:calc(100% - 17px) calc(50% - 2px),calc(100% - 12px) calc(50% - 2px);
  background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:2rem;
}
.filter-group input:focus,.filter-group select:focus{border-color:var(--ink);background:var(--card-solid)}
.link-btn{
  border:0;background:none;cursor:pointer;color:var(--ink-faint);
  font-family:var(--font-serif);font-size:.86rem;letter-spacing:.1em;
  padding:.58rem .5rem;border-bottom:1px dashed transparent;transition:.25s;
}
.link-btn:hover{color:var(--seal);border-bottom-color:var(--seal)}
.link-btn.danger:hover{color:#c0392b}
.toolbar{display:flex;gap:1.2rem;flex-wrap:wrap;margin-bottom:1.4rem}

/* ── 分类速览 ─────────────────────────────────── */
.chips-block{display:flex;flex-direction:column;gap:.85rem;margin:2.1rem 0 0}
.chips-line{display:flex;gap:.9rem;align-items:flex-start}
.chips-label{
  font-family:var(--font-sans);font-size:.68rem;letter-spacing:.24em;color:var(--gold);
  flex-shrink:0;padding-top:.42rem;width:2.6rem;
}
.chips{display:flex;gap:.45rem;flex-wrap:wrap;flex:1;min-width:0}
.chip{
  font-family:var(--font-serif);font-size:.85rem;letter-spacing:.08em;
  padding:.36rem .85rem;border:1px solid var(--line);border-radius:99px;
  background:transparent;color:var(--ink-soft);cursor:pointer;transition:.25s;
}
.chip:hover{color:var(--seal);border-color:var(--seal);background:var(--seal-soft);transform:translateY(-1px)}
.chip.is-on{background:var(--seal);border-color:var(--seal);color:#fdf8f0}

/* ── 每日一诗 ─────────────────────────────────── */
.featured{margin-top:2.4rem}
.daily{
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1.6rem;align-items:center;
  padding:clamp(1.5rem,4vw,2.4rem);border-radius:var(--radius);
  border:1px solid var(--line);background:var(--card);box-shadow:var(--shadow);
  position:relative;overflow:hidden;
}
.daily::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(120% 120% at 100% 0%,var(--seal-soft),transparent 55%);
}
.daily-tag{
  font-family:var(--font-sans);font-size:.66rem;letter-spacing:.3em;color:var(--seal);
  display:block;margin-bottom:.7rem;
}
.daily h3{
  font-family:var(--font-display);font-size:clamp(1.35rem,3.6vw,1.95rem);
  font-weight:600;letter-spacing:.1em;margin-bottom:.5rem;
}
.daily .meta{display:flex;gap:.7rem;flex-wrap:wrap;margin-bottom:1rem}
.daily .verse{
  font-size:clamp(1rem,2.6vw,1.22rem);line-height:2.1;letter-spacing:.14em;color:var(--ink-soft);
  max-width:34em;
}
.daily .verse p{margin:0}
.daily-seal{
  width:clamp(74px,15vw,104px);aspect-ratio:1;border-radius:10px;flex-shrink:0;
  display:grid;place-items:center;border:2px solid var(--seal);color:var(--seal);
  font-family:var(--font-kai);font-size:clamp(1.5rem,4vw,2.1rem);letter-spacing:.06em;
  writing-mode:vertical-rl;padding:.5rem;opacity:.9;position:relative;z-index:1;
  background:transparent;
}

/* ── 结果区 ───────────────────────────────────── */
.result-head{display:flex;align-items:baseline;gap:1rem;flex-wrap:wrap;margin:2.6rem 0 1.3rem}
.result-title{font-family:var(--font-display);font-size:1.3rem;font-weight:600;letter-spacing:.14em}
.result-meta{font-family:var(--font-sans);font-size:.76rem;letter-spacing:.14em;color:var(--ink-faint)}

.grid{display:grid;gap:1.25rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,290px),1fr));margin-top:1.6rem}
.grid:empty{display:none}

/* 诗笺卡片：卷轴意象 */
.card{
  position:relative;display:flex;flex-direction:column;
  padding:1.55rem 1.45rem 1.1rem;border-radius:var(--radius);
  border:1px solid var(--line);background:var(--card);box-shadow:var(--shadow-sm);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  cursor:pointer;overflow:hidden;
  transition:transform .45s cubic-bezier(.16,1,.3,1),box-shadow .45s,border-color .3s;
  animation:inkIn .7s cubic-bezier(.16,1,.3,1) both;
}
@keyframes inkIn{
  from{opacity:0;filter:blur(9px);transform:translateY(20px)}
  to{opacity:1;filter:blur(0);transform:none}
}
.card::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(180deg,var(--seal),var(--gold));opacity:.85;
}
.card::after{
  content:"";position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .45s;
  background:radial-gradient(90% 90% at 100% 100%,var(--seal-soft),transparent 60%);
}
.card:hover{transform:translateY(-5px);box-shadow:var(--shadow);border-color:color-mix(in srgb,var(--seal) 34%,var(--line))}
.card:hover::after{opacity:1}

.card-dynasty{
  position:absolute;right:.85rem;top:.85rem;
  font-family:var(--font-kai);font-size:.78rem;letter-spacing:.18em;
  color:var(--seal);writing-mode:vertical-rl;opacity:.7;
}
.card-title{
  font-family:var(--font-display);font-size:1.12rem;font-weight:600;letter-spacing:.08em;
  line-height:1.5;margin-bottom:.55rem;padding-right:1.4rem;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.card-meta{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}
.tag{
  font-family:var(--font-sans);font-size:.68rem;letter-spacing:.1em;line-height:1;
  padding:.3rem .6rem;border-radius:99px;border:1px solid var(--line-soft);
  color:var(--ink-soft);background:var(--line-soft);
}
.tag-d{color:var(--jade);border-color:color-mix(in srgb,var(--jade) 30%,transparent);background:transparent}
.tag-a{color:var(--seal);border-color:color-mix(in srgb,var(--seal) 28%,transparent);background:transparent}
.tag-t{color:var(--gold);border-color:color-mix(in srgb,var(--gold) 34%,transparent);background:transparent}

.card-verse{
  font-size:1.02rem;line-height:2.05;letter-spacing:.11em;color:var(--ink-soft);
  flex:1;overflow:hidden;position:relative;
  display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;
}
.card-verse p{margin:0}
.card-foot{
  display:flex;align-items:center;gap:.35rem;margin-top:1rem;padding-top:.8rem;
  border-top:1px dashed var(--line-soft);
}
.act{
  border:0;background:none;cursor:pointer;color:var(--ink-faint);
  font-family:var(--font-sans);font-size:.72rem;letter-spacing:.1em;
  padding:.28rem .5rem;border-radius:6px;display:inline-flex;align-items:center;gap:.28rem;transition:.22s;
}
.act:hover{color:var(--ink);background:var(--line-soft)}
.act.is-on{color:var(--seal)}
.act svg{width:13px;height:13px}
.card-foot .spacer{flex:1}

/* ── 状态 / 骨架屏 ────────────────────────────── */
.state{text-align:center;padding:clamp(2.6rem,8vw,4.5rem) 1rem;color:var(--ink-faint)}
.state-seal{
  display:grid;place-items:center;width:56px;height:56px;margin:0 auto 1.2rem;
  border:2px solid var(--line);border-radius:9px;color:var(--ink-faint);
  font-family:var(--font-kai);font-size:1.5rem;opacity:.7;
}
.state p{font-size:1rem;letter-spacing:.1em;color:var(--ink-soft);max-width:30em;margin:0 auto .4rem}
.state .state-hint{font-size:.84rem;color:var(--ink-faint);letter-spacing:.08em}

.skeleton-wrap{display:grid;gap:1.25rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,290px),1fr));margin-top:1.6rem}
.skeleton{
  height:190px;border-radius:var(--radius);border:1px solid var(--line-soft);
  background:linear-gradient(100deg,var(--line-soft) 30%,color-mix(in srgb,var(--line) 60%,transparent) 50%,var(--line-soft) 70%);
  background-size:220% 100%;animation:shim 1.4s linear infinite;
}
@keyframes shim{from{background-position:180% 0}to{background-position:-40% 0}}

.more-wrap{display:flex;justify-content:center;margin-top:2.4rem}
.sentinel{height:1px}

/* ── 区块标题 ─────────────────────────────────── */
.section-head{margin:3rem 0 1.4rem}
.section-head h2{font-family:var(--font-display);font-size:clamp(1.4rem,4vw,1.9rem);font-weight:600;letter-spacing:.14em}
.section-head p{color:var(--ink-faint);font-size:.88rem;letter-spacing:.08em;margin-top:.35rem}

/* ── 浮层 ─────────────────────────────────────── */
.modal{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:clamp(.6rem,3vw,2rem)}
.modal-mask{position:absolute;inset:0;background:color-mix(in srgb,var(--paper) 55%,rgba(0,0,0,.55));backdrop-filter:blur(6px);animation:fade .35s both}
@keyframes fade{from{opacity:0}to{opacity:1}}
.modal-body{
  position:relative;width:min(680px,100%);max-height:88vh;
  background:var(--card-solid);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:0 40px 90px -40px rgba(0,0,0,.7);overflow:hidden;
  animation:pop .5s cubic-bezier(.16,1,.3,1) both;
}
@keyframes pop{from{opacity:0;transform:translateY(26px) scale(.97)}to{opacity:1;transform:none}}
.modal-body::before{
  content:"";position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--seal),var(--gold),var(--jade));z-index:2;
}
.modal-scroll{max-height:88vh;overflow-y:auto;padding:clamp(1.6rem,5vw,3rem) clamp(1.2rem,4vw,2.6rem) 2rem}
.modal-close{
  position:absolute;right:.9rem;top:.9rem;z-index:3;
  width:34px;height:34px;border-radius:50%;border:1px solid var(--line);
  background:color-mix(in srgb,var(--card-solid) 80%,transparent);color:var(--ink-soft);
  font-size:1.3rem;line-height:1;cursor:pointer;transition:.25s;
}
.modal-close:hover{color:var(--seal);border-color:var(--seal);transform:rotate(90deg)}

.m-title{
  font-family:var(--font-display);font-size:clamp(1.5rem,4.6vw,2.1rem);font-weight:600;
  letter-spacing:.12em;line-height:1.4;text-align:center;margin-bottom:.9rem;
}
.m-meta{display:flex;justify-content:center;gap:.5rem;flex-wrap:wrap;margin-bottom:2rem}
.m-verse{
  font-size:clamp(1.08rem,3vw,1.32rem);line-height:2.35;letter-spacing:.16em;
  text-align:center;color:var(--ink);max-width:26em;margin:0 auto;
}
.m-verse p{margin:0 0 .15rem}
.m-divider{width:60px;height:1px;background:var(--line);margin:1.8rem auto}
.m-actions{display:flex;justify-content:center;gap:.5rem;flex-wrap:wrap}
.m-btn{
  display:inline-flex;align-items:center;gap:.4rem;
  border:1px solid var(--line);background:transparent;color:var(--ink-soft);
  font-family:var(--font-serif);font-size:.84rem;letter-spacing:.1em;
  padding:.5rem 1rem;border-radius:99px;cursor:pointer;transition:.25s;
}
.m-btn:hover{color:var(--seal);border-color:var(--seal);background:var(--seal-soft)}
.m-btn.is-on{color:#fdf8f0;background:var(--seal);border-color:var(--seal)}
.m-btn svg{width:14px;height:14px}
.m-note{
  margin-top:1.8rem;padding-top:1.2rem;border-top:1px dashed var(--line);
  font-family:var(--font-sans);font-size:.72rem;letter-spacing:.08em;color:var(--ink-faint);text-align:center;
}

/* ── Toast ────────────────────────────────────── */
.toast{
  position:fixed;left:50%;bottom:2rem;transform:translate(-50%,26px);
  z-index:200;opacity:0;pointer-events:none;
  padding:.72rem 1.4rem;border-radius:99px;
  background:var(--ink);color:var(--paper);font-family:var(--font-serif);font-size:.86rem;letter-spacing:.1em;
  box-shadow:var(--shadow);transition:.4s cubic-bezier(.16,1,.3,1);max-width:88vw;text-align:center;
}
.toast.is-on{opacity:1;transform:translate(-50%,0)}

/* ── 页脚 ─────────────────────────────────────── */
.footer{
  position:relative;z-index:1;text-align:center;
  padding:2.6rem 1rem 3.2rem;border-top:1px solid var(--line-soft);
  color:var(--ink-faint);font-size:.8rem;letter-spacing:.08em;
}
.footer a{color:var(--ink-soft);text-decoration:none;border-bottom:1px solid var(--line)}
.footer a:hover{color:var(--seal);border-bottom-color:var(--seal)}
.footer-lines{display:flex;justify-content:center;gap:.6rem;flex-wrap:wrap}
.footer-tip{margin-top:.8rem;font-size:.74rem}
kbd{
  font-family:var(--font-sans);font-size:.7rem;padding:.12rem .42rem;border-radius:5px;
  border:1px solid var(--line);background:var(--line-soft);color:var(--ink-soft);
}

/* ── 滚动条 ───────────────────────────────────── */
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--line);border-radius:9px;border:2px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:var(--ink-faint);background-clip:content-box}

:focus-visible{outline:2px solid var(--seal);outline-offset:2px}

/* ── 响应式 ───────────────────────────────────── */
@media (max-width:820px){
  .topbar{flex-wrap:wrap;row-gap:.5rem}
  .brand-text i{display:none}
  .topnav{order:3;width:100%;margin-left:0;justify-content:space-between;gap:0}
  .nav-btn{padding:.42rem .5rem;font-size:.88rem;letter-spacing:.06em}
  .topbar-actions{margin-left:auto}
  .couplet{display:none}
}

@media (max-width:640px){
  .search-row{flex-wrap:wrap}
  .search-box{flex:1 1 100%}
  .search-row .btn{flex:1}
  .daily{grid-template-columns:1fr;gap:1.2rem}
  .daily-seal{position:absolute;right:1.1rem;top:1.1rem;width:56px;font-size:1.15rem;opacity:.45}
  .hero-stats{gap:1.2rem 1.8rem}
  .grid{grid-template-columns:1fr;gap:1rem}
  .skeleton-wrap{grid-template-columns:1fr}
  .modal-body{max-height:92vh}
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important}
  html{scroll-behavior:auto}
}

@media print{
  .topbar,.footer,.panel,.chips-block,.featured,.more-wrap,.card-foot,.modal-mask,.modal-close,.grain,.wash{display:none!important}
  .modal{position:static;padding:0}
}