@import url('fonts/fonts.css');
@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@300;400;600&display=swap');

/* ============================================================
   URANAI / Kairós — 暗金天体 · 双页面共用样式
   ============================================================ */

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

/* ═══════════════════════════════════════════════════════════
   KAIRÓS · Design Token System
   法餐级 — 颜色 间距 圆角 阴影 排版 动效 z-index
   ═══════════════════════════════════════════════════════════ */
:root{
  /* ── 基础色板 ── */
  --bg-deep:#0f0c29;--bg-mid:#141215;--bg-card:rgba(255,255,255,0.03);
  --border:rgba(255,255,255,0.08);--border-strong:rgba(255,255,255,0.14);
  --text:#d0d0e0;--text-dim:rgba(201,160,139,0.45);--text-faint:rgba(201,160,139,0.28);
  --accent:rgba(201,160,139,0.08);--accent-hov:rgba(201,160,139,0.14);--accent-soft:rgba(201,160,139,0.05);

  /* ── 金 · 品牌色 ── */
  --gold:#c9a08b;--gold-light:#f1d592;--gold-dark:#a08040;
  --gold-bg:rgba(201,160,139,0.06);--gold-bg-hover:rgba(201,160,139,0.12);
  --gold-border:rgba(201,160,139,0.18);--gold-border-strong:rgba(201,160,139,0.35);
  --gold-glow:0 0 24px rgba(201,160,139,0.25);
  --gold-glow-strong:0 0 48px rgba(201,160,139,0.40);

  /* ── 元素色（塔罗四元素）── */
  --fire:#e74c3c;--fire-bg:rgba(231,76,60,0.10);
  --water:#3498db;--water-bg:rgba(52,152,219,0.10);
  --air:#f1c40f;--air-bg:rgba(241,196,15,0.10);
  --earth:#2ecc71;--earth-bg:rgba(46,204,113,0.10);

  /* ── 玻璃材质 ── */
  --glass-bg:rgba(255,255,255,0.03);--glass-bg-heavy:rgba(21,16,31,0.85);
  --glass-border:rgba(255,255,255,0.08);--glass-blur:12px;

  /* ── 间距尺度（4px 基准）── */
  --space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--space-3xl:64px;

  /* ── 圆角尺度 ── */
  --radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:24px;--radius-full:9999px;

  /* ── 阴影层级 ── */
  --shadow-sm:0 0 0 1px rgba(201,160,139,0.04);
  --shadow-md:0 0 0 1px rgba(201,160,139,0.06);
  --shadow-lg:0 0 0 1px rgba(201,160,139,0.08),0 0 20px rgba(201,160,139,0.04);
  --shadow-gold:0 0 32px rgba(201,160,139,0.15);
  --shadow-card:0 0 0 1px rgba(201,160,139,0.06);

  /* ── 排版尺度 ── */
  --font-display:'Cinzel','Cormorant Garamond',serif;
  --font-body:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans SC",sans-serif;
  --text-xs:.68rem;--text-sm:.78rem;--text-base:.88rem;--text-md:1rem;--text-lg:1.2rem;--text-xl:1.5rem;--text-2xl:2rem;

  /* ── 动效令牌（法餐级 · Apple Spring 对标）── */
  --ease-out:cubic-bezier(0.25,1,0.5,1);          /* 平滑收尾 */
  --duration-fast:120ms;--duration-normal:250ms;--duration-slow:400ms;--duration-ritual:700ms;
  --spring-response:0.4;--spring-damping:0.8;        /* Apple Drawer 同款 */

  /* ── z-index 层级 ── */
  --z-bg:-1;--z-content:1;--z-dropdown:20;--z-drawer:999;--z-overlay:998;--z-modal:10000;--z-toast:10001;--z-loader:10002;
}

html,body{
  background-color:#070709;
  background-image:radial-gradient(circle at 50% 30%,#111219 0%,#070709 100%);
  background-attachment:fixed;
  min-height:100vh;margin:0;padding:0 0 70px 0;
}
body{
  font-family:var(--font-body);
  color:var(--text);overflow-x:hidden;position:relative;
  line-height:1.75;font-optical-sizing:auto;text-wrap:pretty;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
}
/* 消除中央容器的背景色块断层 */
#app,main,#main-wrapper,[class*=\"wrapper\"]{background:transparent!important;background-color:transparent!important;box-shadow:none!important;border:none!important}
/* GPU 加速：所有毛玻璃元素提升到独立合成层，避免每帧重绘 */
.card-slot, .chat-section, #result, .portal-card, .chat-bubble,
.hb-btn, .hb-drawer, .content-view-inner, textarea, .search-input { transform: translateZ(0); }
/* 固定背景星轨 — 放大慢转暗金底盘 + 呼吸泛光 */
.bg-rings{
  position:fixed;top:50%;left:50%;z-index:-1;pointer-events:none;
  animation:bg-breathe 8s ease-in-out infinite;
  mask-image:radial-gradient(circle at center, transparent 30%, black 80%);
  -webkit-mask-image:radial-gradient(circle at center, transparent 30%, black 80%);
}
@keyframes bg-breathe{
  0%,100%{opacity:.07}
  50%{opacity:.09}
}
.bg-ring{
  position:absolute;border-radius:50%;border-style:solid;
  border-color:rgba(255,243,209,0.15);
  box-shadow:
    0 0 1px rgba(255,223,140,0.3),
    0 0 4px rgba(241,213,146,0.15),
    0 0 8px rgba(201,160,139,0.08);
  transform-origin:center center;
}
.bg-r-outer{
  width:1000px;height:1000px;margin:-500px 0 0 -500px;
  border-width:1.5px;border-top-color:#fff3d1;border-right-style:dashed;border-left-style:dashed;
  animation:bg-spin-cw 70s linear infinite;
}
.bg-r-middle{
  width:700px;height:700px;margin:-350px 0 0 -350px;
  border-width:1.5px;border-bottom-color:#fff3d1;border-left-style:dotted;
  transform:rotateX(26.7deg);
  animation:bg-spin-ccw 42s linear infinite;
}
.bg-r-inner{
  width:420px;height:420px;margin:-210px 0 0 -210px;
  border-width:1.5px;border-style:dashed;border-color:#fff3d1;
  animation:bg-spin-cw 30s linear infinite;
}
@keyframes bg-spin-cw{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@keyframes bg-spin-ccw{from{transform:rotateX(26.7deg) rotate(0deg)}to{transform:rotateX(26.7deg) rotate(-360deg)}}

/* ── 汉堡菜单（全局常驻）── */
.hb-btn{position:fixed;top:16px;left:16px;z-index:1001;width:38px;height:38px;background:transparent;border:none;border-radius:0;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:0;transition:transform .35s cubic-bezier(0.25,1,0.5,1),background .35s,opacity .35s}
.hb-btn span{display:block;width:20px;height:1.5px;background:rgba(201,160,139,0.4);transition:transform .35s cubic-bezier(0.25,1,0.5,1),background .35s,opacity .35s;transform-origin:center}
.hb-btn:hover span{background:rgba(201,160,139,0.75)}
.hb-btn.active span:nth-child(1){transform:translateY(6.5px) rotate(45deg)}
.hb-btn.active span:nth-child(2){opacity:0}
.hb-btn.active span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg)}
.hb-overlay{position:fixed;inset:0;z-index:998;background:rgba(0,0,0,0.6);transition:opacity .35s ease;opacity:1}
.hb-overlay.hidden{opacity:0;pointer-events:none}
.hb-drawer{position:fixed;top:0;left:0;z-index:999;width:250px;height:100vh;background:rgba(11,12,16,0.97);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-right:1px solid rgba(201,160,139,0.1);transform:translateX(-100%);display:flex;flex-direction:column;padding:4rem 1.3rem 2rem;gap:2px}
.hb-drawer:not(.hidden){transform:translateX(0)}
.hb-close{position:absolute;top:14px;right:14px;width:28px;height:28px;border-radius:6px;background:rgba(201,160,139,0.06);border:1px solid rgba(201,160,139,0.15);color:rgba(201,160,139,0.45);font-size:.85rem;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .25s;padding:0}
.hb-close:hover{background:rgba(201,160,139,0.12);border-color:rgba(201,160,139,0.35);color:#f1d592}
.hb-item{background:transparent;border:none;color:rgba(200,185,160,0.45);opacity:0;font-size:.88rem;padding:.6rem .5rem;text-align:left;cursor:pointer;letter-spacing:.05em;transition:color .25s,background .25s;border-radius:6px;font-weight:500}
.hb-item:hover{color:#f1d592;background:rgba(201,160,139,0.06)}.hb-drawer:not(.hidden) .hb-item{animation:drawer-item-in .35s cubic-bezier(0.16,1,0.3,1) forwards}
.hb-drawer:not(.hidden) .hb-item:nth-child(1){animation-delay:.05s}
.hb-drawer:not(.hidden) .hb-item:nth-child(2){animation-delay:.08s}
.hb-drawer:not(.hidden) .hb-item:nth-child(3){animation-delay:.11s}
.hb-drawer:not(.hidden) .hb-item:nth-child(4){animation-delay:.14s}
.hb-drawer:not(.hidden) .hb-item:nth-child(5){animation-delay:.17s}
.hb-drawer:not(.hidden) .hb-item:nth-child(6){animation-delay:.20s}
.hb-drawer:not(.hidden) .hb-item:nth-child(7){animation-delay:.23s}
.hb-drawer:not(.hidden) .hb-item:nth-child(8){animation-delay:.26s}
.hb-drawer:not(.hidden) .hb-item:nth-child(9){animation-delay:.29s}
.hb-drawer:not(.hidden) .hb-item:nth-child(10){animation-delay:.32s}
.hb-drawer:not(.hidden) .hb-item:nth-child(11){animation-delay:.35s}
.hb-drawer:not(.hidden) .hb-item:nth-child(12){animation-delay:.38s}
.hb-drawer:not(.hidden) .hb-item:nth-child(13){animation-delay:.41s}
.hb-drawer:not(.hidden) .hb-item:nth-child(14){animation-delay:.44s}
.hb-drawer:not(.hidden) .hb-item:nth-child(15){animation-delay:.47s}
.content-view{position:fixed;inset:0;z-index:100;background:transparent!important;background-color:transparent!important;overflow-y:auto;display:flex;flex-direction:column;pointer-events:none;padding-top:6rem}
.content-view::before,.content-view::after{display:none!important}
.content-view:not(.hidden){pointer-events:auto}
.content-view-inner{max-width:720px;margin:5rem auto 2rem;padding:2rem 1.5rem calc(2rem + env(safe-area-inset-bottom,0px));width:100%;background:rgba(13,11,16,0.72)!important;border:1px solid rgba(201,160,139,0.2)!important;border-radius:8px;backdrop-filter:blur(16px)!important;-webkit-backdrop-filter:blur(16px)!important;box-shadow:0 0 0 1px rgba(201,160,139,0.08)!important;isolation:isolate!important}
.content-view{opacity:0;pointer-events:none;transition:opacity .3s cubic-bezier(0.16,1,0.3,1)}.content-view:not(.hidden){opacity:1;pointer-events:auto;animation:content-in .35s cubic-bezier(0.16,1,0.3,1) forwards}.content-view.hidden{opacity:0;pointer-events:none;animation:none}
.content-back{display:inline-flex;align-items:center;gap:.3rem;background:transparent;border:1px solid rgba(201,160,139,0.2);color:rgba(201,160,139,0.5);font-size:.82rem;padding:.4rem 1rem;border-radius:8px;cursor:pointer;transition:color .25s,border-color .25s;margin-bottom:2.5rem;letter-spacing:.04em}
.content-back:hover{border-color:#c9a08b;color:#f1d592}
.content-title{font-size:1.2rem;color:#c9a08b;font-weight:600;margin-bottom:1.5rem;letter-spacing:.06em;opacity:0;animation:drawer-item-in .35s cubic-bezier(0.16,1,0.3,1) .05s forwards}
.content-text{line-height:2;font-size:.9rem;color:rgba(210,200,185,0.7)}.content-text p{opacity:0;animation:drawer-item-in .3s cubic-bezier(0.16,1,0.3,1) forwards}.content-text p:nth-child(1){animation-delay:.1s}.content-text p:nth-child(2){animation-delay:.16s}.content-text p:nth-child(3){animation-delay:.22s}.content-text p:nth-child(4){animation-delay:.28s}.content-text p:nth-child(5){animation-delay:.34s}.content-text p:nth-child(n+6){animation-delay:.4s}
.content-text p{margin-bottom:1rem}
.content-text strong{color:#c9a08b;font-weight:600}
/* 订阅卡片悬停微交互 */
.content-text a[href="/subscribe"]:hover{transform:translateY(-2px)!important;box-shadow:0 0 0 1px rgba(201,160,139,.18),0 4px 20px rgba(201,160,139,.08)!important;border-color:rgba(201,160,139,.3)!important}
.activation-container{margin-top:2rem;padding-top:1.5rem;border-top:1px dashed rgba(201,160,139,0.15)}
.quantum-input{
  background:rgba(9,5,13,0.6);border:1px solid rgba(201,160,139,0.2);
  color:#e0d5c0;padding:.6rem 1rem;font-family:'Inter',sans-serif;
  font-size:.85rem;letter-spacing:1px;width:100%;outline:none;box-sizing:border-box;transition:border .3s ease;
}
.quantum-input:focus{border-color:#c9a08b;box-shadow:0 0 8px rgba(201,160,139,0.15)}
.quantum-btn{
  background:#c9a08b;color:#09050d;border:none;padding:.6rem 1.5rem;
  font-family:'Inter',sans-serif;font-weight:700;font-size:.8rem;
  letter-spacing:1.5px;cursor:pointer;width:100%;box-sizing:border-box;
  margin-top:.8rem;transition:opacity .3s ease;
}
.quantum-btn:hover{opacity:.85}
.sync-toast{
  margin-top:1rem;padding:.8rem 1rem;font-family:'Inter',sans-serif;
  font-size:.8rem;letter-spacing:1px;line-height:1.4;border-radius:0;
  animation:toastFadeIn .4s cubic-bezier(0.25,1,0.5,1) forwards;
  will-change:opacity,transform;
}
.sync-toast.success{
  background:rgba(14,25,20,0.8);border:1px solid rgba(201,160,139,0.3);color:#c9a08b;
}
.sync-toast.error{
  background:rgba(28,14,16,0.8);border:1px solid rgba(220,100,100,0.2);color:rgba(212,197,169,0.65);
}
@keyframes toastFadeIn{
  0%{opacity:0;transform:translateY(5px)}
  100%{opacity:1;transform:translateY(0)}
}
#main-wrapper{position:relative;z-index:2}
#main-wrapper.hidden{display:none}


#celestial-canvas{display:none}

#app{width:100%;max-width:960px;margin:0 auto;padding:2rem 1.5rem calc(4rem + env(safe-area-inset-bottom, 0px));position:relative;z-index:2}

/* ============================================================
   三大方舟区块 · 磨砂玻璃 + 极夜紫高低阻尼布局（仅塔罗）
   ============================================================ */
.intent-block,#selection-area,.manual-area{
  backdrop-filter:blur(20px);
  -webkit-backdrop-filter:blur(20px);
  border:1px solid rgba(241,213,146,0.1);
}
.intent-block{
  background:rgba(10,8,6,0.35);border-radius:16px;padding:1.5rem 1.2rem;margin-bottom:1.8rem;
}
#selection-area{
  background:rgba(10,8,6,0.3);border-radius:14px;padding:1.2rem 1rem;margin-bottom:1.8rem;
}
.manual-area{
  background:rgba(10,8,6,0.4);border-radius:14px;padding:1.2rem 1rem;margin-bottom:1.5rem;
}
.deck-area{margin-bottom:1.5rem}

/* ============================================================
   通用: Header / 返回链接
   ============================================================ */
header{text-align:center;margin-bottom:1.25rem;position:relative}
.home-link{
  position:absolute;left:0;top:.3rem;font-size:.8rem;color:var(--text-dim);
  text-decoration:none;opacity:.55;transition:opacity .25s;letter-spacing:.04em;
}
.home-link:hover{opacity:1;color:var(--accent-soft)}
h1{font-family:'Cinzel',serif;font-weight:700!important;font-size:2.2rem;letter-spacing:-.02em;line-height:1.15;margin-bottom:.3rem;color:#e8d5a3;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-optical-sizing:auto}
.subtitle{color:var(--text-dim);font-size:.85rem;letter-spacing:.05em}

/* ============================================================
   首页 Landing
   ============================================================ */
#app.landing{max-width:760px}
.landing-header{text-align:center;margin-bottom:2.5rem;padding-top:1.5rem}
.landing-title{font-family:'Cinzel',serif;font-style:italic;font-weight:700!important;font-size:3.2rem;letter-spacing:-.025em;line-height:1.08;margin-bottom:.15rem;color:#e8d5a3;text-shadow:0 0 20px rgba(201,160,139,0.25);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-optical-sizing:auto}
.landing-subtitle{font-size:1rem;color:rgba(180,150,70,0.45);letter-spacing:.24em;margin-bottom:.6rem}
.landing-tagline{font-size:.82rem;color:var(--text-dim);letter-spacing:.06em;opacity:.7}

.landing-main{display:flex;flex-direction:column;gap:2rem}
.landing-section{line-height:2;font-size:.92rem;color:rgba(210,210,230,0.82)}
.landing-section p{margin-bottom:1.25rem}
.landing-section p:last-child{margin-bottom:0}

/* 双术数编年史 */
.landing-section.dual{display:flex;gap:2rem}
.dual-col{flex:1;min-width:0}
.dual-col strong{color:#c9a08b;font-weight:700;font-size:.95rem}
.dual-col p{font-size:.88rem;line-height:1.95}

/* 分流入口 */
.landing-section.portals{display:flex;gap:1.5rem;justify-content:center;flex-wrap:wrap}
.portal-card{
  display:flex;flex-direction:column;align-items:center;gap:.65rem;
  padding:2rem 1.8rem;border-radius:16px;text-decoration:none;
  border:1px solid var(--gold-border);background:rgba(212,175,55,0.04);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  transition:transform .4s var(--ease-out),border-color .4s,box-shadow .4s,background .4s;
  min-width:220px;flex:1;max-width:300px;cursor:pointer;
}
.portal-card.active:hover{background:rgba(212,175,55,0.1);border-color:rgba(212,175,55,0.45);transform:translateY(-4px);box-shadow:0 8px 30px rgba(212,175,55,0.12)}
.portal-card.disabled{opacity:.45;cursor:not-allowed;pointer-events:none}
.portal-icon{font-size:2rem;color:rgba(212,175,55,0.45)}
.portal-title{font-size:1.05rem;font-weight:700;color:rgba(210,200,240,0.8);letter-spacing:.05em}
.portal-desc{font-size:.78rem;color:var(--text-dim);text-align:center;line-height:1.5}
.portal-card.disabled .portal-desc{color:rgba(255,255,255,0.25)}

/* ============================================================
   登录方舟 · 居中雾面悬浮模态框
   ============================================================ */
/* Gemini: 顶栏右侧 Flex 容器 — 消灭绝对定位重叠 */
.top-right-controls{
  position:absolute;top:1rem;right:1.5rem;
  display:flex;flex-direction:column;align-items:flex-end;gap:5px;
  z-index:100;
}
.top-right-controls>*{position:relative!important;top:auto!important;right:auto!important}
.auth-btn{
  position:absolute;top:.5rem;right:0;background:transparent;
  border:1px solid rgba(201,160,139,0.4);color:#e8c8b8;font-size:.78rem;
  padding:.35rem 1rem;border-radius:8px;cursor:pointer;
  letter-spacing:.04em;transition:color .35s,border-color .35s,background .35s;z-index:5;
}
.auth-btn:hover{border-color:#c9a08b;box-shadow:0 0 14px rgba(201,160,139,0.45);color:#f0d8cc}
.auth-btn.logged-in{border-color:rgba(201,160,139,0.5);color:#e8c8b8;padding:6px 2rem 6px 12px;display:inline-flex;flex-direction:column;align-items:flex-start;gap:1px;font-family:"Cinzel","Noto Serif SC",serif;font-size:.7rem;letter-spacing:.04em;line-height:1.35}
.auth-btn.logged-in::after{content:' ▼';font-size:.55rem;position:absolute;right:.55rem;top:50%;transform:translateY(-50%);opacity:.5}
.auth-balance{
  position:absolute;top:2.3rem;right:0;font-size:.75rem;
  color:#c9a08b;letter-spacing:.06em;z-index:5;text-align:right;
  font-weight:600;font-family:'Inter',sans-serif;
}
.lang-btn{
  position:absolute;top:2.8rem;right:0;background:transparent;
  border:1px solid rgba(201,160,139,0.25);color:rgba(212,197,169,0.65);font-size:.62rem;
  padding:.15rem .45rem;cursor:pointer;letter-spacing:.04em;z-index:5;
  transition:color .25s,border-color .25s;border-radius:0;
}
.lang-btn:hover{border-color:#c9a08b;color:#c9a08b}/* 免责声明弹窗 */
.disclaimer-overlay{position:fixed;inset:0;background:rgba(7,7,9,.94);z-index:10000;display:flex;align-items:center;justify-content:center;padding:20px}
.disclaimer-overlay.hidden{display:none}
.disclaimer-overlay:not(.hidden) .disclaimer-modal{animation:modalIn .4s var(--ease-out) both}
.disclaimer-modal{background:#0d0e12;border:1px solid rgba(201,160,139,.2);border-radius:8px;max-width:460px;width:100%;height:75vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 0 0 1px rgba(201,160,139,0.06),0 24px 64px rgba(0,0,0,.6)}
#disclaimer-body{flex:1 1 0;min-height:0;overflow-y:auto;padding:36px 32px 24px;color:rgba(212,197,169,.82);font-family:"Noto Serif SC","Source Han Serif SC","Songti SC",serif;font-size:.85rem;line-height:1.85;letter-spacing:.02em;text-align:left;text-wrap:pretty}
#disclaimer-body strong{color:#e8d5a3;font-weight:600}
#disclaimer-body p{margin-bottom:.9rem}
.disclaimer-footer{padding:16px 28px 24px;border-top:1px solid rgba(201,160,139,.12);text-align:center;flex-shrink:0;background:transparent}
.disclaimer-agree-btn{padding:12px 48px;border:1px solid rgba(201,160,139,.35);background:rgba(201,160,139,.08);color:rgba(201,160,139,.25);border-radius:30px;font-family:"Cinzel","Noto Serif SC",serif;font-size:.82rem;cursor:pointer;letter-spacing:.1em;transition:all .3s}
.disclaimer-agree-btn:disabled{opacity:.4;cursor:not-allowed;border-color:rgba(201,160,139,.12);color:rgba(201,160,139,.2);box-shadow:none}
.disclaimer-agree-btn:not(:disabled){background:rgba(201,160,139,.15);color:#f0e2c0;box-shadow:0 0 24px rgba(201,160,139,.2);animation:agreePulse 1.2s ease-in-out infinite;cursor:pointer}
.disclaimer-agree-btn:not(:disabled):hover{background:rgba(201,160,139,.25);box-shadow:0 0 36px rgba(201,160,139,.3);animation:none}
@keyframes agreePulse{0%,100%{box-shadow:0 0 24px rgba(201,160,139,.18)}50%{box-shadow:0 0 44px rgba(201,160,139,.35)}}
#disclaimer-body::-webkit-scrollbar{width:3px}
#disclaimer-body::-webkit-scrollbar-track{background:transparent}
#disclaimer-body::-webkit-scrollbar-thumb{background:rgba(201,160,139,.15);border-radius:3px}

.auth-overlay{
  position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;
  padding:2rem;
  background:transparent; pointer-events:none;
  transition:opacity .3s var(--ease-out);
}
.auth-overlay.hidden{display:none;opacity:0}
.auth-modal{
  background:rgba(13,11,14,0.92);border:1px solid rgba(201,160,139,0.25);border-radius:18px;
  padding:2rem;min-width:min(340px, calc(100vw - 40px));max-width:min(420px, calc(100vw - 24px));width:90%;
  max-height:min(90vh,660px);overflow-y:auto;   /* 2026-08-04：高度兜底防顶破屏幕（消费历史等长内容弹窗） */
  backdrop-filter:blur(24px) saturate(120%);-webkit-backdrop-filter:blur(24px) saturate(120%);
  box-shadow:0 0 0 1px rgba(201,160,139,0.15);
  position:relative;animation:modalIn .35s var(--ease-out);
  pointer-events:auto;
}
/* Apple: 自呼吸辉光 — 4s 循环，低透明度，不刺眼 */
.auth-modal-breath{
  animation:modalBreathe 4s ease-in-out infinite;
}
@keyframes modalBreathe{
  0%,100%{box-shadow:0 0 0 1px rgba(201,160,139,0.12),0 0 20px rgba(201,160,139,0.04)}
  50%{box-shadow:0 0 0 1px rgba(201,160,139,0.22),0 0 36px rgba(201,160,139,0.08)}
}
@media(prefers-reduced-motion:reduce){
  .auth-modal-breath{animation:none;box-shadow:0 0 0 1px rgba(201,160,139,0.18),0 0 16px rgba(201,160,139,0.06)}
}
@keyframes modalIn{from{opacity:0;transform:translateY(20px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes modalOut{from{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(12px) scale(.97)}}
.auth-modal.modal-exiting{animation:modalOut .25s var(--ease-out) forwards}
.auth-modal-close{
  position:absolute;top:.7rem;right:.9rem;
  width:44px;height:44px;border-radius:8px;
  background:rgba(201,160,139,0.08);border:1px solid rgba(201,160,139,0.25);
  color:rgba(201,160,139,0.7);font-size:.95rem;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;transition:all .25s;padding:0;
}
.auth-modal-close:hover{background:rgba(201,160,139,0.18);border-color:rgba(201,160,139,0.5);color:#f1d592}
.auth-title{font-family:'Cinzel',serif;font-size:1.3rem;color:#f1d592;letter-spacing:.08em;margin-bottom:1.5rem;text-align:center;text-shadow:0 0 10px rgba(241,213,146,0.35)}
.auth-input{
  display:block;width:100%;margin-bottom:.9rem;padding:.7rem .9rem;
  background:rgba(0,0,0,0.4);border:1px solid rgba(212,175,55,0.18);
  border-radius:10px;color:#f0e8f4;font-size:.88rem;outline:none;transition:border-color .3s;
}
.auth-input::placeholder{color:rgba(201,160,139,0.3);font-size:.82rem}
.auth-input:focus{border-color:#f1d592}
/* ============================================================
   KAIRÓS 极夜主题 UI 精化：表单输入框定点视觉清洗
   ============================================================ */
input:focus,textarea:focus,select:focus,
.login-panel input:focus,.archive-list input:focus{
  box-shadow:none!important;
  outline:none!important;
  border-color:#c9a08b!important;
  box-shadow:0 0 10px rgba(201,160,139,0.2)!important;
}
input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active,
textarea:-webkit-autofill,textarea:-webkit-autofill:hover,textarea:-webkit-autofill:focus,textarea:-webkit-autofill:active{
  -webkit-box-shadow:0 0 0 1000px #0f0c29 inset!important;
  -webkit-text-fill-color:#f0f0f0!important;
  box-shadow:none!important;
  transition:background-color 5000s ease-in-out 0s!important;
  background-color:transparent!important;
}
.auth-submit{
  display:block;width:100%;margin-top:1.2rem;padding:.75rem;
  background:rgba(201,160,139,0.1);border:1px solid rgba(201,160,139,0.3);
  border-radius:10px;color:#d4c5a9;font-size:.92rem;font-weight:600;
  cursor:pointer;letter-spacing:.06em;transition:background .3s,transform .3s,box-shadow .3s;
}
.auth-submit:hover{background:rgba(201,160,139,0.18);border-color:#c9a08b;box-shadow:0 0 20px rgba(201,160,139,0.12);color:#f1d592}
.auth-submit.ready{border-color:#f1d592;box-shadow:0 0 14px rgba(212,175,55,0.25);color:#f1d592}
.shake-error{
  animation:kairósRegisterShake .4s cubic-bezier(.36,.07,.19,.97) both;
  transform:translate3d(0,0,0);backface-visibility:hidden;perspective:1000px;
}
/* 个人中心 · 订阅计划卡片 */
.profile-sub-card{
  background:rgba(201,160,139,0.04);border:1px solid rgba(201,160,139,0.15);
  border-radius:8px;padding:14px 16px;margin-bottom:16px;
  transition:all .25s var(--ease-out);
}
.profile-sub-card:hover{background:rgba(201,160,139,0.08);border-color:rgba(201,160,139,0.25)}
/* 右上角 · 订阅徽章（CM 上方） */
#sub-badge{
  position:absolute;top:1rem;right:0;z-index:5;
  padding:2px 8px;border-radius:3px;
  background:rgba(201,160,139,0.1);border:1px solid rgba(201,160,139,0.25);
  color:#c9a08b;font-size:.6rem;letter-spacing:.08em;
  white-space:nowrap;text-align:center;
  font-family:"Cinzel","Noto Serif SC",serif;
}

@keyframes kairósRegisterShake{
  10%,90%{transform:translate3d(-1px,0,0)}
  20%,80%{transform:translate3d(2px,0,0)}
  30%,50%,70%{transform:translate3d(-4px,0,0)}
  40%,60%{transform:translate3d(4px,0,0)}
}
.auth-links{display:flex;justify-content:space-between;margin-top:.8rem}
.auth-link{background:none;border:none;color:rgba(255,255,255,0.35);font-size:.75rem;cursor:pointer;padding:.3rem 0;transition:color .2s;opacity:0.7}
.auth-link:hover{color:#f1d592}
.auth-err{color:#e74c3c;font-size:.75rem;text-align:center;margin-top:.6rem;min-height:1.1em}

/* 模式切换 */
.mode-switch{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.75rem}
.mode-tab{background:transparent;border:1.5px solid var(--border);color:var(--text-dim);font-size:.85rem;font-weight:600;padding:.45rem 1.1rem;border-radius:20px;cursor:pointer;letter-spacing:.04em;transition:color .25s,background .25s,border-color .25s,box-shadow .25s;align-self:center}
.mode-tab:hover{border-color:var(--accent-soft);color:#c9a08b}
.mode-tab.active{background:rgba(201,160,139,0.12);border-color:var(--accent);color:#fff;box-shadow:0 0 14px rgba(201,160,139,0.12)}
.mode-hint{font-size:.72rem;color:var(--text-dim);opacity:.7;line-height:1.5;flex:1 1 200px;margin-left:.5rem}

/* 牌数 */
.count-section{display:flex;align-items:center;gap:.7rem;margin-bottom:1rem}
.count-label{font-size:.85rem;color:var(--text-dim);font-weight:600;letter-spacing:.05em}
.count-group{display:flex;gap:.35rem}
.count-btn{background:transparent;border:1.5px solid var(--border);color:var(--text-dim);font-size:.82rem;font-weight:600;padding:.35rem .85rem;border-radius:16px;cursor:pointer;transition:color .25s,background .25s,border-color .25s,box-shadow .25s;letter-spacing:.03em}
.count-btn:hover{border-color:var(--accent-soft);color:#c9a08b}
.count-btn.active{background:rgba(201,160,139,0.12);border-color:var(--accent);color:#fff;box-shadow:0 0 10px rgba(201,160,139,0.09)}
.count-btn:disabled,.count-btn.locked{opacity:.4;cursor:not-allowed;pointer-events:none}
.spread-section{display:flex;align-items:center;gap:.7rem;margin-bottom:1rem}
.spread-label{font-size:.85rem;color:var(--text-dim);font-weight:600;letter-spacing:.05em}
.spread-group{display:flex;gap:.35rem}
.spread-btn{background:transparent;border:1.5px solid var(--border);color:var(--text-dim);font-size:.82rem;font-weight:600;padding:.35rem .85rem;border-radius:16px;cursor:pointer;transition:color .25s,background .25s,border-color .25s,box-shadow .25s;letter-spacing:.03em}
.spread-btn:hover{border-color:var(--accent-soft);color:#c9a08b}
.spread-btn.active{background:rgba(201,160,139,0.12);border-color:var(--accent);color:#fff;box-shadow:0 0 10px rgba(201,160,139,0.09)}
.spread-btn small{font-size:.65rem;font-weight:400;opacity:.55;margin-left:2px}
.style-section{display:flex;align-items:center;gap:.7rem;margin-bottom:1rem}
.style-label{font-size:.85rem;color:var(--text-dim);font-weight:600;letter-spacing:.05em}
.style-group{display:flex;flex-wrap:nowrap;gap:.35rem}
.style-btn{background:transparent;border:1.5px solid var(--border);color:var(--text-dim);font-size:.82rem;font-weight:600;padding:.35rem .85rem;border-radius:16px;cursor:pointer;transition:color .25s,background .25s,border-color .25s,box-shadow .25s;letter-spacing:.03em}
.style-btn:hover{border-color:var(--accent-soft);color:#c9a08b}
.style-btn.active{background:rgba(201,160,139,0.12);border-color:var(--accent);color:#fff;box-shadow:0 0 10px rgba(201,160,139,0.09)}

/* 语调维度 */
.tone-section{display:flex;align-items:center;gap:.7rem;margin-bottom:.85rem}
.tone-label{font-size:.85rem;color:var(--text-dim);font-weight:600;letter-spacing:.05em}
.tone-group{display:flex;gap:.35rem}
.tone-btn{background:transparent;border:1.5px solid var(--border);color:var(--text-dim);font-size:.8rem;font-weight:600;padding:.32rem .75rem;border-radius:16px;cursor:pointer;transition:color .4s,background .4s,border-color .4s,box-shadow .4s;letter-spacing:.03em}
.tone-btn:hover{border-color:var(--accent-soft);color:#c9a08b}
.tone-btn.active{background:rgba(201,160,139,0.10);border-color:var(--accent);color:#fff;box-shadow:0 0 10px rgba(201,160,139,0.09)}

/* 表单 */
form{display:flex;flex-direction:column;gap:.65rem;margin-bottom:1.25rem}
label{font-size:.95rem;color:rgba(212,197,169,0.7);position:relative;overflow:visible}
.chat-section h3{position:relative;overflow:visible}
textarea{width:100%;padding:.8rem 1rem;border:1px solid var(--glass-border);border-radius:12px;background:rgba(13,9,20,0.55);color:#f0f0f0;font-size:1rem;resize:vertical;outline:none;transition:border-color .25s;font-family:inherit}
textarea:focus{border-color:var(--accent)}
button{padding:.85rem 1.5rem;border:none;border-radius:12px;background:var(--accent);color:#fff;font-size:1rem;font-weight:600;cursor:pointer;transition:background .4s,transform .4s,box-shadow .4s,opacity .4s;letter-spacing:.06em;align-self:flex-start}
button:hover:not(:disabled){background:var(--accent-hov);transform:translateY(-1px)}
button:active:not(:disabled){transform:translateY(1px) scale(0.98);transition:transform 80ms var(--ease-out)}  /* 法餐级 · 按下凹陷 */
button:disabled{background:transparent;color:rgba(201,160,139,0.15);cursor:not-allowed;opacity:.5;transform:none}

/* ── 全部交互元素的物理质感 ── */
.count-btn:active:not(.active),.spread-btn:active:not(.active),
.style-btn:active:not(.active),.tone-btn:active:not(.active),
.hb-item:active,.auth-btn:active,
.quantum-btn:active{transform:scale(0.96);transition:transform 80ms var(--ease-out)}

.card-slot.filled:active{transform:translateY(0) scale(0.98)}

/* card flip 用 spring 替代 linear keyframe */
@keyframes card-flip-spring{0%{transform:rotateY(90deg) scale(0.88);opacity:.2;filter:blur(2px)}100%{transform:rotateY(0deg) scale(1);opacity:1;filter:blur(0)}}
.slot-img-wrap.flip-in{animation:card-flip-spring .55s cubic-bezier(0.16,1,0.3,1) both}
@keyframes card-flip-spring-rev{0%{transform:rotateY(90deg) rotate(180deg) scale(0.88);opacity:.2;filter:blur(2px)}100%{transform:rotateY(0deg) rotate(180deg) scale(1);opacity:1;filter:blur(0)}}
.slot-img-wrap.reversed.flip-in{animation:card-flip-spring-rev .55s cubic-bezier(0.16,1,0.3,1) both}

/* ── 解读按钮暗金潮汐 ── */
@keyframes goldPulse {
  0%,100%{box-shadow:0 0 8px rgba(212,175,55,0.18),inset 0 0 3px rgba(212,175,55,0.06);border-color:rgba(212,175,55,0.32)}
  25%{box-shadow:0 0 12px rgba(212,175,55,0.30),inset 0 0 4px rgba(212,175,55,0.10);border-color:rgba(212,175,55,0.42)}
  50%{box-shadow:0 0 14px rgba(212,175,55,0.38),inset 0 0 5px rgba(212,175,55,0.12);border-color:rgba(212,175,55,0.48)}
  75%{box-shadow:0 0 12px rgba(212,175,55,0.30),inset 0 0 4px rgba(212,175,55,0.10);border-color:rgba(212,175,55,0.42)}
}
#submit-btn.btn-pulse-active {animation:goldPulse 5s linear infinite;cursor:pointer}

/* 动态牌位 */
.selection-area{display:flex;flex-wrap:nowrap;gap:.8rem;justify-content:center;align-items:flex-start;margin-bottom:1.25rem}
.selection-area.grid-9{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem}
/* ═══ 凯尔特十字阵型布局（标准摆位：1中心 2交叉 3上 4下 5左 6右 + 7-10右柱下→上）═══ */
.selection-area.layout-celtic{display:grid;grid-template-columns:repeat(5,minmax(104px,1fr));grid-template-rows:repeat(5,auto);gap:1.5rem 1.1rem;max-width:840px;margin-left:auto;margin-right:auto;justify-items:center;align-items:start}
.selection-area.layout-celtic .card-slot{min-width:0;max-width:124px;padding:.4rem .3rem .6rem}
.selection-area.layout-celtic .slot-img-wrap{max-width:108px}
.selection-area.layout-celtic .card-slot[data-slot-index="4"]{grid-row:1;grid-column:3} /* 5过往影响 上 */
.selection-area.layout-celtic .card-slot[data-slot-index="2"]{grid-row:2;grid-column:1} /* 3理智目标 左 */
.selection-area.layout-celtic .card-slot[data-slot-index="0"]{grid-row:2;grid-column:3} /* 1当下现状 中心 */
.selection-area.layout-celtic .card-slot[data-slot-index="1"]{grid-row:2;grid-column:3;transform:translate(12px,10px) rotate(4deg);z-index:2;opacity:.95} /* 2核心阻碍 叠加交叉(微旋转强化交叉感) */
.selection-area.layout-celtic .card-slot[data-slot-index="5"]{grid-row:2;grid-column:4} /* 6近未来趋势 右 */
.selection-area.layout-celtic .card-slot[data-slot-index="3"]{grid-row:3;grid-column:3} /* 4潜意识根基 下 */
.selection-area.layout-celtic .card-slot[data-slot-index="9"]{grid-row:2;grid-column:5} /* 10最终结算 右柱顶 */
.selection-area.layout-celtic .card-slot[data-slot-index="8"]{grid-row:3;grid-column:5} /* 9希望或恐惧 */
.selection-area.layout-celtic .card-slot[data-slot-index="7"]{grid-row:4;grid-column:5} /* 8环境与他人 */
.selection-area.layout-celtic .card-slot[data-slot-index="6"]{grid-row:5;grid-column:5} /* 7自我状态 右柱底 */
/* ═══ 四季牌阵阵型布局（中央大阿卡纳 + 四元素方位：上星币 下圣杯 左权杖 右宝剑）═══ */
.selection-area.layout-seasons{display:grid;grid-template-columns:repeat(3,minmax(112px,1fr));grid-template-rows:auto auto auto;gap:1.1rem .9rem;max-width:620px;margin-left:auto;margin-right:auto;justify-items:center;align-items:start}
.selection-area.layout-seasons .card-slot{min-width:0;max-width:140px;padding:.4rem .3rem .6rem}
.selection-area.layout-seasons .slot-img-wrap{max-width:118px}
.selection-area.layout-seasons .card-slot[data-slot-index="4"]{grid-row:1;grid-column:2} /* 星币·现实留存 上 */
.selection-area.layout-seasons .card-slot[data-slot-index="1"]{grid-row:2;grid-column:1} /* 权杖·行动损耗 左 */
.selection-area.layout-seasons .card-slot[data-slot-index="0"]{grid-row:2;grid-column:2} /* 大阿卡纳·天时大局 中央 */
.selection-area.layout-seasons .card-slot[data-slot-index="3"]{grid-row:2;grid-column:3} /* 宝剑·认知卡点 右 */
.selection-area.layout-seasons .card-slot[data-slot-index="2"]{grid-row:3;grid-column:2} /* 圣杯·情感底噪 下 */
@media (max-width:640px){
  .selection-area.layout-celtic{grid-template-columns:repeat(3,1fr);max-width:460px;gap:.7rem .5rem}
  .selection-area.layout-celtic .card-slot{max-width:96px}
  .selection-area.layout-celtic .slot-img-wrap{max-width:82px}
  .selection-area.layout-celtic .card-slot[data-slot-index="4"]{grid-row:1;grid-column:2}
  .selection-area.layout-celtic .card-slot[data-slot-index="2"]{grid-row:2;grid-column:1}
  .selection-area.layout-celtic .card-slot[data-slot-index="0"]{grid-row:2;grid-column:2}
  .selection-area.layout-celtic .card-slot[data-slot-index="1"]{grid-row:2;grid-column:2;transform:translate(5px,5px)}
  .selection-area.layout-celtic .card-slot[data-slot-index="5"]{grid-row:2;grid-column:3}
  .selection-area.layout-celtic .card-slot[data-slot-index="3"]{grid-row:3;grid-column:2}
  .selection-area.layout-celtic .card-slot[data-slot-index="9"]{grid-row:3;grid-column:3}
  .selection-area.layout-celtic .card-slot[data-slot-index="8"]{grid-row:4;grid-column:3}
  .selection-area.layout-celtic .card-slot[data-slot-index="7"]{grid-row:5;grid-column:3}
  .selection-area.layout-celtic .card-slot[data-slot-index="6"]{grid-row:6;grid-column:3}
  .selection-area.layout-seasons{max-width:480px;gap:.7rem .5rem}
  .selection-area.layout-seasons .card-slot{max-width:112px}
  .selection-area.layout-seasons .slot-img-wrap{max-width:96px}
}
.card-slot{flex:1 1 170px;min-width:140px;max-width:240px;padding:.7rem .6rem .9rem;display:flex;flex-direction:column;align-items:center;gap:.4rem;cursor:default}

.card-slot.filled{cursor:pointer}
.card-slot.filled:hover{transform:translateY(-3px)}




.slot-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.14em;color:var(--text-dim);font-weight:700}
.slot-placeholder{font-size:.82rem;color:var(--text-dim);opacity:.55;padding:1.5rem 0}

/* 卡牌图片 + 3D */
.slot-img-wrap{position:relative;width:100%;max-width:160px;border-radius:6px;overflow:hidden;background:transparent;transform-style:preserve-3d}
.slot-frame-overlay{position:absolute;inset:0;z-index:1;pointer-events:none}
.slot-frame-overlay svg{width:100%;height:100%;display:block}
.slot-img-wrap.flip-in{animation:card-flip-in .55s cubic-bezier(.25,.46,.45,.94) both}
@keyframes card-flip-in{0%{transform:rotateY(90deg) scale(.85);opacity:.3}60%{transform:rotateY(-10deg) scale(1.02);opacity:1}100%{transform:rotateY(0deg) scale(1);opacity:1}}
.slot-img-wrap.reversed{transform:rotate(180deg)}
.slot-img-wrap.reversed.flip-in{animation:card-flip-in-rev .55s cubic-bezier(.25,.46,.45,.94) both}
@keyframes card-flip-in-rev{0%{transform:rotateY(90deg) rotate(180deg) scale(.85);opacity:.3}60%{transform:rotateY(-10deg) rotate(180deg) scale(1.02);opacity:1}100%{transform:rotateY(0deg) rotate(180deg) scale(1);opacity:1}}
.slot-card-img{display:block;width:100%;height:auto;aspect-ratio:5/7;object-fit:cover}

/* 防碎图 */
.slot-img-wrap.img-fallback{aspect-ratio:5/7;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;background:radial-gradient(ellipse at 50% 35%,rgba(201,160,139,0.08) 0%,transparent 60%),linear-gradient(160deg,#0f0c14 0%,#0a0810 50%,#06040a 100%);border:1.5px solid rgba(201,160,139,0.15);box-shadow:inset 0 0 30px rgba(201,160,139,0.04),0 0 0 1px rgba(255,255,255,0.03);position:relative;overflow:hidden}
.slot-img-wrap.img-fallback::before{content:'';position:absolute;inset:-1px;border-radius:inherit;box-shadow:inset 0 0 20px rgba(201,160,139,0.07);animation:fallback-glow 3s ease-in-out infinite;pointer-events:none}
@keyframes fallback-glow{0%,100%{opacity:.5}50%{opacity:1}}
.slot-img-wrap.img-fallback::after{content:'✦';color:rgba(201,160,139,0.35);font-size:1.6rem;text-shadow:0 0 12px rgba(201,160,139,0.12);order:-1;line-height:1}
.fallback-name{color:rgba(212,197,169,0.8);font-size:.82rem;font-weight:600;text-align:center;padding:0 .4rem;line-height:1.35;z-index:1}
.slot-img-wrap.img-fallback .slot-card-img{display:none}

.slot-info{text-align:center;width:100%}
.slot-card-name{font-size:1rem;font-weight:700;margin-bottom:.1rem}
.slot-card-en{font-size:.68rem;color:var(--text-dim);margin-bottom:.2rem}
.slot-orient{display:inline-block;font-size:.72rem;font-weight:700;padding:.1rem .5rem;border-radius:10px;margin-bottom:.2rem}
.slot-orient.upright{background:rgba(46,204,113,0.18);color:#2ecc71}
.slot-orient.reversed{background:rgba(231,76,60,0.18);color:#e74c3c}
.slot-detail{font-size:.65rem;color:var(--text-dim);opacity:.75}

/* 智能搜索 */
.search-wrap{flex:1;position:relative}
.search-input{width:100%;padding:.45rem .6rem;border:1px solid var(--glass-border);border-radius:10px;background:rgba(13,9,20,0.55);color:#f0f0f0;font-size:.82rem;outline:none;font-family:inherit;transition:border-color .25s}
.search-input:focus{border-color:var(--accent)}
.search-input::placeholder{color:var(--text-dim);opacity:.5}
.search-dropdown{position:absolute;top:100%;left:0;right:0;max-height:240px;overflow-y:auto;background:#0f0c10;border:1px solid var(--border);border-radius:6px;z-index:20;box-shadow:0 0 0 1px rgba(201,160,139,0.1)}
.search-dropdown::-webkit-scrollbar{width:4px}
.search-dropdown::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}
.search-item{padding:.45rem .65rem;font-size:.8rem;cursor:pointer;color:var(--text);transition:background .15s;border-bottom:1px solid rgba(255,255,255,0.03)}
.search-item:last-child{border-bottom:none}
.search-item:hover{background:rgba(201,160,139,0.10);color:#fff}
.search-item strong{color:#e0d8ff}
.search-item span{color:var(--text-dim);font-size:.7rem;margin-left:.4rem}
.search-item i{float:right;color:var(--text-dim);font-size:.65rem;font-style:normal;opacity:.6}

/* 自选行 */
.manual-area{margin-bottom:1.5rem}
.manual-intro{font-size:.8rem;color:var(--text-dim);margin-bottom:.65rem;opacity:.75}
.manual-slots{display:flex;flex-direction:column;gap:.55rem}
.manual-row{display:flex;align-items:center;gap:.5rem;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:.5rem .7rem}
.manual-pos-label{font-size:.75rem;font-weight:700;color:var(--text-dim);text-transform:uppercase;letter-spacing:.1em;min-width:3em}
.orient-btn{display:inline-flex;align-items:center;gap:.3rem;padding:.4rem .8rem;border-radius:8px;font-size:.78rem;font-weight:700;letter-spacing:.04em;cursor:pointer;flex-shrink:0;user-select:none;transition:background .22s,color .22s,border-color .22s,box-shadow .22s;font-family:inherit;border:2px solid transparent}
.orient-btn.upright{background:rgba(46,204,113,0.15);border-color:rgba(46,204,113,0.5);color:#2ecc71}
.orient-btn.upright:hover{background:rgba(46,204,113,0.25);border-color:#2ecc71;box-shadow:0 0 14px rgba(46,204,113,0.3)}
.orient-btn.reversed{background:rgba(231,76,60,0.15);border-color:rgba(231,76,60,0.5);color:#e74c3c}
.orient-btn.reversed:hover{background:rgba(231,76,60,0.25);border-color:#e74c3c;box-shadow:0 0 14px rgba(231,76,60,0.3)}

/* 盲抽 */
.deck-area{margin-bottom:1.5rem}
.deck-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.5rem;flex-wrap:wrap;gap:.5rem}
.deck-label{display:flex;align-items:baseline;gap:.6rem}
.deck-label-text{font-size:.95rem;font-weight:600;color:rgba(212,197,169,0.7)}
.deck-label-count{font-size:.8rem;color:var(--text-dim)}
.deck-label-count strong{color:var(--accent);font-size:1.05rem}
.deck-hint{font-size:.72rem;color:var(--text-dim);opacity:.65}
.shuffle-row{text-align:center;margin-bottom:.65rem}
.shuffle-btn{display:inline-block;background:transparent;border:1.5px solid var(--accent-soft);color:var(--accent-soft);font-size:.9rem;font-weight:600;padding:.55rem 2rem;border-radius:8px;cursor:pointer;letter-spacing:.06em;user-select:none;-webkit-user-select:none;touch-action:manipulation;transition:color .2s,background .2s,border-color .2s,box-shadow .2s}
.shuffle-btn:hover{background:rgba(201,160,139,0.07);border-color:var(--accent);color:#c9a08b}
.shuffle-btn.active{background:rgba(212,175,55,0.12);border-color:#c9a08b;color:#f1d592;box-shadow:0 0 22px rgba(212,175,55,0.25);animation:shuffle-pulse .4s ease-in-out infinite}
@keyframes shuffle-pulse{0%,100%{box-shadow:0 0 22px rgba(212,175,55,0.25)}50%{box-shadow:0 0 40px rgba(212,175,55,0.45)}}

.deck-grid{display:grid;grid-template-columns:repeat(13,1fr);gap:5px;padding:.75rem;background:var(--bg-mid);border:1px solid var(--border);border-radius:10px;max-height:420px;overflow-y:auto;scroll-behavior:smooth;will-change:transform;transform:translateZ(0);backface-visibility:hidden;-webkit-backface-visibility:hidden}
.deck-grid::-webkit-scrollbar{width:5px}
.deck-grid::-webkit-scrollbar-track{background:transparent}
.deck-grid::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}
.deck-grid.shuffling .card-back:not(.drawn){animation:shuffle-flicker .12s ease-in-out infinite}

/* 法餐级 · 洗牌停止时卡牌沉降 */
.deck-grid.settling .card-back:not(.drawn){animation:card-settle .45s cubic-bezier(0.16,1,0.3,1) forwards}
@keyframes card-settle{0%{transform:scale(0.96);opacity:.7}100%{transform:scale(1);opacity:1}}
@keyframes shuffle-flicker{0%{opacity:1;border-color:#1a1612}50%{opacity:.55;border-color:#2a241c}100%{opacity:1;border-color:#1a1612}}

.card-back{aspect-ratio:2.5/3.5;background:linear-gradient(145deg,#0f0c14 0%,#0a0810 60%,#06040a 100%);border:1.5px solid #1a1612;border-radius:4px;cursor:pointer;position:relative;transition:transform .25s cubic-bezier(0.25,0.8,0.25,1),box-shadow .25s ease,opacity .3s,border-color .25s;overflow:hidden;will-change:transform;transform:translateZ(0);backface-visibility:hidden;-webkit-backface-visibility:hidden}
.card-back::before{content:'';position:absolute;inset:4px;border:1px solid rgba(201,160,139,0.15);border-radius:2px;pointer-events:none}
.card-back-inner{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
.card-back-inner::after{content:'◆';font-size:clamp(.55rem,1.4vw,1rem);color:rgba(201,160,139,0.22);text-shadow:0 0 6px rgba(201,160,139,0.08)}
/* card-back hover-lift removed — mobile incompatible */
.card-back.drawn{opacity:.1;border-color:transparent;cursor:default;filter:grayscale(.8)}
.card-back.locked{cursor:default;opacity:.5;border-color:rgba(201,160,139,0.12)}

/* 结果 */
#result{padding:1.5rem;border-radius:16px;background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--glass-border);margin-bottom:1.5rem;will-change:transform;transform:translateZ(0);backface-visibility:hidden;-webkit-backface-visibility:hidden}
#result h2{font-size:1.05rem;color:rgba(212,197,169,0.85);margin-bottom:1rem;padding-bottom:.45rem;border-bottom:1px solid var(--border)}
#result-content{opacity:0;animation:report-fade-in .6s var(--ease-out) .3s forwards}
@keyframes report-fade-in{to{opacity:1}}

/* 法餐级 · 追问卷轴展开 */
.chat-history{opacity:0;animation:chat-reveal .5s var(--ease-out) forwards}
@keyframes chat-reveal{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.chat-bubble{opacity:0;animation:bubble-appear .4s cubic-bezier(0.16,1,0.3,1) forwards}
.chat-bubble:nth-child(1){animation-delay:.05s}
.chat-bubble:nth-child(2){animation-delay:.15s}
@keyframes bubble-appear{from{opacity:0;transform:translateY(12px) scale(0.97)}to{opacity:1;transform:translateY(0) scale(1)}}

/* 法餐级 · 模态框 morph 入场 */
#auth-modal-overlay:not(.hidden) .auth-modal{animation:modal-morph .45s cubic-bezier(0.16,1,0.3,1) forwards}
@keyframes modal-morph{from{opacity:0;transform:scale(0.92) translateY(16px)}to{opacity:1;transform:scale(1) translateY(0)}}

/* 深入探讨 */
.chat-section{margin-bottom:1.5rem;padding:1.25rem;border-radius:16px;background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--glass-border);will-change:transform;transform:translateZ(0);backface-visibility:hidden;-webkit-backface-visibility:hidden}
.chat-section h3{font-size:.95rem;color:rgba(212,197,169,0.85);margin-bottom:.75rem}
.chat-history{max-height:360px;overflow-y:auto;margin-bottom:.75rem;display:flex;flex-direction:column;gap:.65rem}
.chat-history::-webkit-scrollbar{width:4px}
.chat-history::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}
.chat-bubble{max-width:88%;padding:.7rem .9rem;border-radius:10px;font-size:.88rem;line-height:1.7;white-space:pre-wrap}
.chat-bubble.user{align-self:flex-end;background:rgba(201,160,139,0.06);border:1px solid rgba(201,160,139,0.12);color:#d4c5a9}
.chat-bubble.assistant{align-self:flex-start;background:rgba(13,9,20,0.55);border:1px solid var(--glass-border);color:var(--text)}
.chat-bubble.streaming{border-color:rgba(201,160,139,0.08);box-shadow:0 0 8px rgba(201,160,139,0.04)}
.typing-indicator{font-size:.75rem;color:rgba(201,160,139,0.5);padding:.3rem .5rem;margin-bottom:.5rem;letter-spacing:.04em;animation:typing-fade 2s ease-in-out infinite}
@keyframes typing-fade{0%,100%{opacity:.45}50%{opacity:.9}}
.chat-input-row{display:flex;gap:.5rem;align-items:flex-end}
.chat-input-row textarea{flex:1;padding:.6rem .8rem;border:1px solid var(--border);border-radius:8px;background:var(--bg-mid);color:#f0f0f0;font-size:.88rem;resize:none;outline:none;font-family:inherit;transition:border-color .25s}
.chat-input-row textarea:focus{border-color:var(--accent)}
.chat-input-row button{padding:.6rem 1.1rem;font-size:.88rem;align-self:stretch}
.chat-input-row textarea:disabled{opacity:.4}
.chat-status{margin-top:.5rem;font-size:.75rem;color:var(--text-dim);opacity:.7}
.chat-status.finished{color:rgba(201,160,139,0.7);opacity:.9;font-style:italic}
.archive-hint{margin-top:.35rem;font-size:.72rem;color:rgba(201,160,139,0.45);text-align:center;letter-spacing:.03em;line-height:1.5}
.archive-hint.hidden{display:none}

/* 操作行 */
.action-row{display:flex;flex-wrap:wrap;gap:.6rem;justify-content:center;margin-bottom:1rem}
#reset-btn,#export-btn{align-self:center;display:inline-block;background:transparent;border:1.5px solid var(--accent-soft);color:var(--accent-soft);font-size:.95rem;font-weight:600;padding:.7rem 2rem;border-radius:8px;cursor:pointer;letter-spacing:.06em;transition:background .25s,color .25s,border-color .25s,transform .15s,box-shadow .25s}
#reset-btn:hover,#export-btn:hover{background:rgba(201,160,139,0.09);border-color:var(--accent);color:#fff;transform:translateY(-2px);box-shadow:0 4px 18px rgba(201,160,139,0.10)}
#reset-btn:active,#export-btn:active{transform:translateY(0)}
#export-btn{border-color:rgba(201,160,139,0.3);color:rgba(212,197,169,0.8)}
#export-btn:hover{border-color:#c9a08b;color:#fff;background:rgba(201,160,139,0.07);box-shadow:0 4px 18px rgba(201,160,139,0.10)}

.toast{position:fixed;bottom:calc(2rem + env(safe-area-inset-bottom, 0px));left:50%;transform:translateX(-50%) translateY(20px);background:rgba(10,8,6,0.95);border:1px solid rgba(201,160,139,0.2);color:rgba(212,197,169,0.9);padding:.7rem 1.4rem;border-radius:10px;font-size:.85rem;pointer-events:none;opacity:0;transition:opacity .35s,transform .35s;z-index:100;max-width:90vw;text-align:center;letter-spacing:.03em}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ── Kairós 星轨交织加载动画 ── */
#kairos-loader{
  position:fixed;inset:0;z-index:99999!important;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:rgba(7,7,9,.92)!important;backdrop-filter:blur(8px);
  padding:3rem 1.5rem;opacity:0;pointer-events:auto;
}
#kairos-loader.hidden{display:none!important;opacity:0!important;pointer-events:none!important}
.kairos-rings{
  position:relative;width:140px;height:140px;margin-bottom:1.2rem;
}
.k-ring{
  position:absolute;top:50%;left:50%;border-radius:50%;
  border-style:solid;transform-origin:center center;
}

/* 外环 — 细线暗金，顺时针极慢 */
.k-ring.outer{
  width:130px;height:130px;margin:-65px 0 0 -65px;
  border-width:1.5px;border-color:rgba(212,175,55,0.3);
  border-top-color:rgba(212,175,55,0.15);
  border-right-style:dashed;border-left-style:dashed;
  animation:k-spin-cw 18s linear infinite;
}

/* 中环 — 26.7° 倾斜，逆时针中速 */
.k-ring.middle{
  width:94px;height:94px;margin:-47px 0 0 -47px;
  border-width:2px;border-color:rgba(200,160,50,0.28);
  border-bottom-color:rgba(200,160,50,0.12);
  border-left-style:dotted;
  transform:translate(-50%,-50%) rotateX(26.7deg);
  animation:k-spin-ccw 10s linear infinite;
}

/* 内环 — 暗金微光粒子虚线圈，顺时针快速 */
.k-ring.inner{
  width:58px;height:58px;margin:-29px 0 0 -29px;
  border-width:1.5px;border-color:rgba(220,190,80,0.35);
  border-style:dashed;
  box-shadow:0 0 14px rgba(212,175,55,0.15),inset 0 0 10px rgba(212,175,55,0.08);
  animation:k-spin-cw 5s linear infinite;
}

/* 核心呼吸灯 */
.k-ring.core{
  width:16px;height:16px;margin:-8px 0 0 -8px;
  background:radial-gradient(circle,rgba(220,190,80,0.6),rgba(180,140,40,0.15));
  border:none;border-radius:50%;
  box-shadow:0 0 18px rgba(212,175,55,0.35);
  animation:k-breathe 1.5s ease-in-out infinite;
}

@keyframes k-spin-cw{from{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(360deg)}}
@keyframes k-spin-ccw{from{transform:translate(-50%,-50%) rotateX(26.7deg) rotate(0deg)}to{transform:translate(-50%,-50%) rotateX(26.7deg) rotate(-360deg)}}
@keyframes k-breathe{0%,100%{opacity:.3;transform:translate(-50%,-50%) scale(.85)}50%{opacity:.8;transform:translate(-50%,-50%) scale(1.15)}}

.kairos-loader-text{
  font-size:.82rem;color:rgba(200,170,100,0.55);
  letter-spacing:.1em;font-weight:400;
  animation:k-text-pulse 2s ease-in-out infinite;
}
@keyframes k-text-pulse{0%,100%{opacity:.35}50%{opacity:.75}}

/* ── 追问微型星轨（底部原地，不触发行滚动） ── */
.followup-loader{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  padding:.6rem 0;opacity:1;transition:opacity .35s var(--ease-out);
}
.followup-loader.hidden{display:none!important;opacity:0}
.fl-rings{position:relative;width:54px;height:54px;flex-shrink:0}
.fl-ring{
  position:absolute;top:50%;left:50%;border-radius:50%;
  border-style:solid;transform-origin:center center;
}
.fl-ring.outer{
  width:50px;height:50px;margin:-25px 0 0 -25px;
  border-width:1.2px;border-color:rgba(212,175,55,0.28);
  border-top-color:rgba(212,175,55,0.12);
  border-right-style:dashed;border-left-style:dashed;
  animation:k-spin-cw 18s linear infinite;
}
.fl-ring.inner{
  width:34px;height:34px;margin:-17px 0 0 -17px;
  border-width:1.5px;border-color:rgba(200,160,50,0.25);
  border-bottom-color:rgba(200,160,50,0.10);
  border-style:dashed;
  animation:k-spin-ccw 10s linear infinite;
}
.fl-ring.core{
  width:8px;height:8px;margin:-4px 0 0 -4px;
  background:radial-gradient(circle,rgba(220,190,80,0.55),rgba(180,140,40,0.12));
  border:none;border-radius:50%;
  box-shadow:0 0 10px rgba(212,175,55,0.28);
  animation:k-breathe 1.5s ease-in-out infinite;
}
.fl-text{
  font-size:.72rem;color:rgba(200,170,100,0.45);
  letter-spacing:.08em;white-space:nowrap;
  animation:k-text-pulse 2s ease-in-out infinite;
}

/* ── Tooltip 悬停提示问号 ── */
.tooltip-trigger{
  display:inline-flex;align-items:center;justify-content:center;
  width:18px;height:18px;border-radius:50%;margin-left:8px;
  background:rgba(212,175,55,0.12);color:rgba(212,175,55,0.55);
  font-size:11px;font-weight:700;cursor:help;position:relative;
  vertical-align:middle;user-select:none;flex-shrink:0;
  animation:tooltip-breathe 2.5s ease-in-out infinite;
}
@keyframes tooltip-breathe{0%,100%{opacity:.45}50%{opacity:.85}}

/* 初始提问框气泡 — 斜右上方 45° 优雅浮现 */
.tooltip-bubble{
  position:absolute;bottom:120%;left:110%;
  transform:translate(-10px,10px);
  background:rgba(255,255,255,0.05);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border:1px solid rgba(255,255,255,0.1);color:#F8F9FA;font-size:13px;
  border-radius:8px;padding:12px;max-width:300px;width:max-content;
  z-index:999;pointer-events:none;white-space:normal;line-height:1.55;
  opacity:0;visibility:hidden;
  transition:opacity .4s cubic-bezier(0.25,1,0.5,1),visibility .4s;
  font-weight:400;letter-spacing:.02em;
}
.tooltip-trigger:hover .tooltip-bubble{
  transform:translate(0,0);
  opacity:1;visibility:visible;
}

/* 深入探讨气泡 — 正右方横向长条，两到三行平铺 */
.tooltip-bubble-wide{
  position:absolute;top:50%;left:105%;width:max-content;max-width:620px;
  transform:translateY(-50%) translateX(10px);
  background:rgba(255,255,255,0.05);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border:1px solid rgba(255,255,255,0.1);color:#F8F9FA;font-size:13px;
  border-radius:8px;padding:10px 18px;
  z-index:999;pointer-events:none;white-space:normal;line-height:1.6;
  opacity:0;visibility:hidden;
  transition:opacity .4s cubic-bezier(0.25,1,0.5,1),visibility .4s;
  font-weight:400;letter-spacing:.02em;
}
.tooltip-trigger:hover .tooltip-bubble-wide{
  transform:translateY(-50%) translateX(15px);
  opacity:1;visibility:visible;
}


.portal-card-v2:focus-visible{outline:2px solid rgba(201,160,139,0.4);outline-offset:2px}
.marginalia-trigger:focus-visible{outline:2px solid rgba(201,160,139,0.35);outline-offset:2px;border-radius:2px}
.hidden{display:none!important}

/* ── 响应式 ── */

/* ============================================================
   Le Miroir du Destin · 雷诺曼冷钢磨砂视觉微调
   ============================================================ */
/* 大盘底盘 + 卡槽 — 骨骼扩张 · 冰晶下沉 */
/* ── 雷诺曼 S4 冰银报告 ── */
/* S2 配置区冰银 */
/* ============================================================
   塔罗专属 — 盲抽底盘深空化 + 卡背降载
   ============================================================ */
body:not([data-system="lenormand"]) .deck-grid{
  gap:10px;padding:16px;border-radius:14px;
  background:transparent!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  border:1px solid rgba(201,160,139,0.08)!important;
  box-shadow:none!important;
}
body:not([data-system="lenormand"]) .card-back{
  background:rgba(13,9,20,0.45)!important;
  border:1px solid rgba(203,213,225,0.08)!important;border-radius:8px;
  box-shadow:none!important;
  backface-visibility:hidden;-webkit-backface-visibility:hidden;
  transition:background .25s,border-color .25s,box-shadow .25s,color .25s!important;
}
body:not([data-system="lenormand"]) .card-back::before{ border-color:rgba(201,160,139,0.1)!important; }
body:not([data-system="lenormand"]) .card-back-inner::after{
  color:rgba(201,160,139,0.3)!important;
  text-shadow:0 0 6px rgba(201,160,139,0.15)!important;
  transition:background .25s,border-color .25s,box-shadow .25s,color .25s!important;
}
body:not([data-system="lenormand"]) .card-back:not(.drawn):not(.locked):hover{
  border-color:rgba(203,213,225,0.5)!important;
  background:rgba(10,8,6,0.8)!important;
  box-shadow:0 0 16px rgba(203,213,225,0.15)!important;
}
body:not([data-system="lenormand"]) .card-back:not(.drawn):not(.locked):hover .card-back-inner::after{
  color:rgba(201,160,139,0.85)!important;
  text-shadow:0 0 10px rgba(201,160,139,0.4)!important;
}
body:not([data-system="lenormand"]) .deck-grid.shuffling .card-back:not(.drawn){animation:shuffle-flicker-tarot .12s ease-in-out infinite}
@keyframes shuffle-flicker-tarot{0%{opacity:1;border-color:rgba(203,213,225,0.08)}50%{opacity:.55;border-color:rgba(203,213,225,0.5)}100%{opacity:1;border-color:rgba(203,213,225,0.08)}}

/* ============================================================
   Tarot 追问总线 — 暗金深空底盘 · 冷钢银灰线框精化
   严格锁定 body[data-system="tarot"]，不触碰雷诺曼/主页
   ============================================================ */
body[data-system="tarot"] .chat-input-row textarea{
  background:rgba(10,7,16,0.5)!important;
  border:1px solid rgba(203,213,225,0.3)!important;
  color:#cbd5e1!important;
}
body[data-system="tarot"] .chat-input-row textarea::placeholder{
  color:rgba(203,213,225,0.4)!important;
  opacity:1!important;
}
body[data-system="tarot"] .chat-input-row textarea:focus{
  border-color:rgba(203,213,225,0.8)!important;
  box-shadow:0 0 10px rgba(203,213,225,0.15)!important;
  outline:none!important;
}
body[data-system="tarot"] .chat-input-row button{
  background:rgba(203,213,225,0.05)!important;
  border:1px solid rgba(203,213,225,0.3)!important;
  color:#cbd5e1!important;
  cursor:pointer!important;
  transition:background .25s,border-color .25s,box-shadow .25s,color .25s!important;
}
body[data-system="tarot"] .chat-input-row button:hover{
  background:rgba(203,213,225,0.15)!important;
  border-color:rgba(203,213,225,0.7)!important;
  box-shadow:0 0 12px rgba(203,213,225,0.15)!important;
}
body[data-system="tarot"] .chat-section h3{
  color:#cbd5e1!important;
}
body[data-system="tarot"] .chat-status{
  color:rgba(203,213,225,0.5)!important;
}
body[data-system="tarot"] .chat-input-row textarea:disabled{
  opacity:.4;
}

/* 塔罗三大容器 — 暗紫高奢玻璃化并网 */
body[data-system="tarot"] .intent-block,
body[data-system="tarot"] #result,
body[data-system="tarot"] .chat-section{
  background:rgba(10,8,6,0.65)!important;
  backdrop-filter:blur(16px) saturate(110%)!important;
  -webkit-backdrop-filter:blur(16px) saturate(110%)!important;
  border:1px solid rgba(212,175,55,0.25)!important;
  border-radius:16px!important;
}
/* 卡槽金线切边对齐容器 */
body[data-system="tarot"] .card-slot{}

/* 档案仪滚动条 — 暗色融入 */
.auth-modal::-webkit-scrollbar,
.auth-modal div::-webkit-scrollbar{width:3px}
.auth-modal::-webkit-scrollbar-track,
.auth-modal div::-webkit-scrollbar-track{background:transparent}
.auth-modal::-webkit-scrollbar-thumb,
.auth-modal div::-webkit-scrollbar-thumb{background:rgba(201,160,139,0.15);border-radius:2px}
.auth-modal::-webkit-scrollbar-thumb:hover,
.auth-modal div::-webkit-scrollbar-thumb:hover{background:rgba(201,160,139,0.3)}
/* 档案滚动条（2026-08-06 配色：蓝灰→金色系，对齐 .auth-modal 自带滚动条） */ .archive-scroll::-webkit-scrollbar{width:4px} .archive-scroll::-webkit-scrollbar-track{background:rgba(13,14,18,.85)} .archive-scroll::-webkit-scrollbar-thumb{background:rgba(201,160,139,.18);border-radius:2px} .archive-scroll::-webkit-scrollbar-thumb:hover{background:rgba(201,160,139,.3)} .archive-scroll{scrollbar-width:thin;scrollbar-color:rgba(201,160,139,.18) rgba(13,14,18,.85)}
/* 2026-08-06 配色重构：搜索框/分类按钮 内联旧紫 → 类（暗金极夜） */
.archive-search{width:100%;box-sizing:border-box;background:#0d0e12;border:1px solid rgba(201,160,139,.18);color:rgba(212,197,169,.85);padding:.4rem .6rem;border-radius:8px;font-size:.75rem;outline:none;caret-color:#f1d592}
.archive-search::placeholder{color:rgba(201,160,139,.3)}
.archive-search:focus{border-color:rgba(201,160,139,.55);box-shadow:0 0 0 3px rgba(201,160,139,.12)}
.archive-cat-btn{background:transparent;border:1px solid rgba(201,160,139,.15);color:rgba(201,160,139,.5);padding:.28rem .6rem;border-radius:14px;cursor:pointer;font-size:.7rem;white-space:nowrap;transition:color .2s,border-color .2s,background .2s}
.archive-cat-btn:hover{color:#f1d592;border-color:rgba(201,160,139,.45);background:rgba(201,160,139,.06)}
.archive-cat-btn.active{color:#f1d592;border-color:#c9a08b;background:rgba(201,160,139,.1)}
.archive-cat-btn:focus-visible{outline:1.5px solid rgba(241,213,146,.8);outline-offset:2px}

/* ═══════════════════════════════════════════
   无障碍 · Reduced Motion
   ═══════════════════════════════════════════ */
@media (prefers-reduced-motion: reduce){
  /* 仅禁止高频闪烁动画，保留背景装饰（环、星尘、加载日晷）*/
  .chat-bubble{animation-duration:0.01ms!important;animation-iteration-count:1!important}
  .shuffle-btn.active{animation:none!important}
}

/* ═══════════════════════════════════════════════════════════
   P0-1 · 暗金古籍风报告排版 + 自适应分隔符
   法餐级 — 解读报告暗金/玄墨质感，古籍版画风格
   纯 CSS 模块，不依赖 JS 改动
   ═══════════════════════════════════════════════════════════ */

/* ── 报告容器：暗金玄墨质感 ── */
#result {
  background-color: #0d0e12 !important;
  color: #d4c5a9;
  font-family: "Noto Serif SC", serif;
  line-height: 1.85;
  letter-spacing: 0.04em;
  border: 1px solid rgba(197, 160, 89, 0.15) !important;
  box-shadow: inset 0 0 30px rgba(0, 0, 0, 0.8), var(--shadow-gold);
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

/* ── 古典分隔符：防折行 ── */
.report-divider {
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 3rem 0;
  width: 100%;
  white-space: nowrap;
  user-select: none;
}

.report-divider::before,
.report-divider::after {
  content: "";
  flex: 1;
  height: 1px;
  background: linear-gradient(
    90deg,
    transparent,
    rgba(197, 160, 89, 0.35),
    transparent
  );
}

.report-divider-symbol {
  padding: 0 1.2rem;
  font-size: clamp(0.65rem, 1.8vw, 0.85rem);
  color: #c9a08b;
  letter-spacing: 0.2em;
  white-space: nowrap;
}

/* ── 报告标题 ── */
#result h2 {
  color: #c9a08b;
  font-family: "Cinzel", serif;
  border-bottom: 1px solid rgba(197, 160, 89, 0.2);
  letter-spacing: 0.08em;
}

/* ── 移动端适配 ── */



/* ═══════════════════════════════════════════════════
   双生古典拓片卡片 — 塔罗/雷诺曼介绍
   ═══════════════════════════════════════════════════ */
.lore-cards-section{max-width:1100px;margin:3rem auto;padding:0 1.5rem}
.lore-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:2.5rem}
@keyframes lore-card-in{from{opacity:0;transform:translateY(24px);filter:blur(4px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}
.lore-card{opacity:0;background:rgba(13,14,18,.7);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(201,160,139,.2);border-radius:4px;padding:2.5rem 2rem;box-shadow:0 0 0 1px rgba(201,160,139,0.06);transition:border-color .4s ease,transform .4s ease;animation:lore-card-in .7s cubic-bezier(0.16,1,0.3,1) forwards}
.lore-card:nth-child(1){animation-delay:.82s}
.lore-card:nth-child(2){animation-delay:.97s}
.lore-card:hover{border-color:rgba(201,160,139,.5);transform:translateY(-3px)}
.lore-card-header{text-align:center}
.lore-tag{font-size:.7rem;letter-spacing:.2em;color:#8c7853;text-transform:uppercase}
.lore-title{font-family:"Cinzel","Noto Serif SC",serif;font-size:1.5rem;color:#e5d8c0;margin:.4rem 0 .8rem 0}
.lore-keypoint{font-size:.85rem;color:#c9a08b;font-style:italic;letter-spacing:.05em;margin-bottom:1rem}
.lore-divider{text-align:center;color:rgba(201,160,139,.4);font-size:.75rem;margin:1.2rem 0;white-space:nowrap}
.lore-body p{font-size:.82rem;line-height:1.85;color:rgba(212,197,169,.75);margin-bottom:.8rem;text-align:start;letter-spacing:.03em}

/* S3 borderless stage — handled by tarot-ritual.css */


/* ── Sigil 提交 + 错误提示（从 P1 块恢复）── */
.sigil-submit{display:block;width:100%;padding:.7rem;background:rgba(201,160,139,.1);border:1px solid rgba(201,160,139,.3);border-radius:6px;color:#c9a08b;font-family:inherit;font-size:.85rem;font-weight:600;letter-spacing:.15em;cursor:pointer;transition:all .3s;margin-top:.2rem}
.sigil-submit:hover{background:rgba(201,160,139,.18);border-color:rgba(201,160,139,.45);color:#f1d592;box-shadow:0 0 24px rgba(201,160,139,.08)}
.sigil-err{color:#e74c3c;font-size:.7rem;text-align:center;min-height:1.2em;margin-top:.5rem}


/* ═══ 卡槽区域零容器痕迹（Gemini 方案）═══ */
#selection-area,
.selection-area,
.selection-area.grid-9,
.ritual-s3 .selection-area,
.card-slot,
.card-slot.empty,
.card-slot.filled,
.card-slot::before,
.card-slot::after,
body[data-system="tarot"] .card-slot,
body[data-system="lenormand"] .card-slot {
  background: transparent !important;
  background-color: transparent !important;
  border: none !important;
  box-shadow: none !important;
  outline: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}
.card-slot .slot-img-wrap img {
  border: 1px solid rgba(197,160,89,0.4) !important;
  border-radius: 4px !important;
  box-shadow: 0 4px 15px rgba(0,0,0,0.6) !important;
}

/* ── 反悔系统 ── */
.redo-hint {
  text-align: center;
  padding: 1.6rem 1rem 1.4rem;
  margin-top: 1.6rem;
  border-top: 1px solid rgba(201,160,139,.1);
  animation: redoFadeIn .45s cubic-bezier(0.22,0.61,0.36,1);
}
.redo-hint-inner {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: .35rem;
}
.redo-label {
  font-size: .72rem;
  color: rgba(201,160,139,.45);
  letter-spacing: .06em;
  font-family: "Cinzel","Noto Serif SC",serif;
}
.redo-link {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  background: rgba(201,160,139,.06);
  border: 1px solid rgba(201,160,139,.12);
  border-radius: 20px;
  color: rgba(201,160,139,.65);
  font-size: .78rem;
  cursor: pointer;
  letter-spacing: .04em;
  transition: all .2s ease;
  font-family: inherit;
  padding: .5rem 1.2rem;
  -webkit-tap-highlight-color: transparent;
  user-select: none;
}
.redo-link:hover {
  background: rgba(201,160,139,.1);
  border-color: rgba(201,160,139,.25);
  color: #c9a08b;
}
.redo-link:active {
  transform: scale(0.97);
  background: rgba(201,160,139,.14);
  transition: transform 80ms ease-out;
}
.redo-icon {
  font-size: .9rem;
  opacity: .7;
}
.redo-count-num {
  font-weight: 600;
  color: #c9a08b;
}
@keyframes redoFadeIn {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
.redo-modal-btn {
  padding: .55rem 1.8rem;
  border-radius: 10px;
  font-size: .82rem;
  cursor: pointer;
  letter-spacing: .04em;
  font-family: inherit;
  transition: all .2s ease;
  -webkit-tap-highlight-color: transparent;
}
.redo-modal-btn:active {
  transform: scale(0.97);
  transition: transform 80ms ease-out;
}
.redo-modal-yes {
  background: rgba(201,160,139,.08);
  border: 1.5px solid rgba(201,160,139,.35);
  color: #c9a08b;
}
.redo-modal-yes:hover {
  background: rgba(201,160,139,.16);
  border-color: rgba(201,160,139,.55);
}
.redo-modal-no {
  background: transparent;
  border: 1px solid rgba(201,160,139,.1);
  color: rgba(212,197,169,.35);
}
.redo-modal-no:hover {
  border-color: rgba(201,160,139,.2);
  color: rgba(212,197,169,.55);
}

/* ═══════════════════════════════════════════════
   KAIRÓS 主站 · 8/7 权益体系（暗色极夜版 · 2026-08-04）
   器物语言：浅宣纸=朱砂印 → 极夜底=泥金印（金泥压印，金石依据）
   材料链（暗底辉光序）：铜线 → 玉填 → 鎏金（唯一实底）
   与知几浅色版同构，色相按暗底物性重推，非简单换色
   铁律：信息性元素 ≥4.5:1，装饰性 ≥3:1；文字禁用 text-shadow
   ═══════════════════════════════════════════════ */

/* ── 徽章行 · 个人中心居中挂点 ── */
.profile-badges-row{display:flex;justify-content:center;gap:.35rem;margin:-.3rem 0 .55rem;min-height:1.6rem}

/* ── 荣誉文字佩 · 暗底材料链 ── */
.cbadge{
  display:inline-flex;align-items:center;line-height:1;vertical-align:middle;
  font-family:"Noto Serif SC","Cinzel",serif;font-weight:600;border-radius:2px;position:relative;
  white-space:nowrap;user-select:none;cursor:default;
}
.cbadge::after{content:'';position:absolute;inset:2px;pointer-events:none;
  border:1px solid transparent;border-radius:1px}
.cbadge-founder{  /* 创世旅人 · 铜线佩（素）：烛光铜线，最暗一档 */
  padding:.16rem .42rem;font-size:.6rem;letter-spacing:.12em;text-indent:.12em;
  color:#b08a5e;border:1px solid rgba(176,138,94,.5);background:transparent;
}
.cbadge-founder::after{border-color:rgba(176,138,94,.2)}
.cbadge-noble{  /* 尊享 · 玉填佩：青玉夜辉，克制的第四色 */
  padding:.16rem .44rem;font-size:.62rem;letter-spacing:.2em;text-indent:.2em;
  color:#7fb69d;border:1px solid rgba(127,182,157,.45);background:rgba(127,182,157,.07);
}
.cbadge-noble::after{border-color:rgba(127,182,157,.18)}
.cbadge-supreme{  /* 至尊 · 鎏金佩（唯一实底）：玫瑰金实体，极夜反白字 */
  padding:.16rem .44rem;font-size:.62rem;letter-spacing:.2em;text-indent:.2em;
  color:#0d0b12;border:1px solid rgba(241,213,146,.35);background:#c9a08b;
  box-shadow:0 0 10px rgba(201,160,139,.25);
}
.cbadge-supreme::after{border-color:rgba(13,11,18,.22)}  /* 包浆暗环 */

/* ── 累进账册 · 刻度量尺 ── */
.sealcard-ruler{position:relative;margin-bottom:1.1rem;padding:.75rem .85rem .7rem;
  border:1px solid rgba(201,160,139,.22);border-radius:10px;background:rgba(255,255,255,.02)}
.sealcard-ruler::after{content:'';position:absolute;inset:3px;pointer-events:none;
  border:1px solid rgba(201,160,139,.1);border-radius:6px}
.rg-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:.65rem}
.rg-title{font-size:.6rem;letter-spacing:.3em;text-indent:.3em;color:#c9a08b}
.rg-title::before{content:'';width:.34rem;height:.34rem;background:#d9a36b;border-radius:1px;  /* 泥金方点 · 凭帖题头同构 */
  flex:none;display:inline-block;margin-right:.5rem;vertical-align:.08rem}
.rg-total{font-family:"Cinzel",serif;font-size:1.1rem;font-weight:700;color:#f1d592;
  letter-spacing:.03em;font-variant-numeric:tabular-nums}
.rg-rule{position:relative;height:14px;margin:0 .2rem 1rem;border-bottom:1px solid rgba(201,160,139,.35)}
.rg-fill{position:absolute;left:0;bottom:-1px;height:2px;width:100%;
  background:linear-gradient(180deg,#e8c08a,#c9a08b);transform-origin:left;transform:scaleX(0);
  border-bottom:1px solid rgba(212,175,55,.55);
  box-shadow:0 0 4px rgba(241,213,146,.3);
  transition:transform .8s ease-out}
.rg-mark{position:absolute;bottom:-1px;transform:translateX(-50%)}
.rg-mark:last-child{transform:translateX(-100%)}  /* 末档标签不探出右缘 */
.rg-dot{display:block;width:7px;height:7px;margin:0 auto 4px;border-radius:50%;
  border:1px solid rgba(201,160,139,.55);background:transparent;box-sizing:border-box}
.rg-label{display:block;font-size:.55rem;color:#b8977c;letter-spacing:.05em;white-space:nowrap;
  font-variant-numeric:tabular-nums}
.rg-mark.is-done .rg-dot{background:#d9a36b;border-color:#d9a36b;  /* 泥金钤印：实心亮金+内刻暗环 */
  box-shadow:inset 0 0 0 2px rgba(13,11,18,.6)}
.rg-mark.is-done .rg-label{color:#d9a36b;font-weight:600}
.rg-foot{font-size:.7rem;color:#b8977c;letter-spacing:.06em;line-height:1.6}
.rg-foot b{color:#f1d592;font-weight:700;font-variant-numeric:tabular-nums}
.rg-chips{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.55rem}
.rg-chip{font-size:.55rem;letter-spacing:.12em;color:#d9a36b;line-height:1.5;
  border:1px solid rgba(217,163,107,.5);border-radius:2px;padding:.05rem .4rem;background:rgba(217,163,107,.06)}

/* ── 恩赏弹窗 · 盖印仪式（暗底金泥印）── */
.reward-modal{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:.6rem .3rem}
.rw-head{display:flex;flex-direction:column;align-items:center;gap:.4rem}
.rw-seal{width:2.7rem;height:2.7rem;border:1.5px solid #d9a36b;border-radius:3px;
  display:flex;align-items:center;justify-content:center;color:#d9a36b;
  font-family:"Noto Serif SC","Cinzel",serif;font-size:.9rem;font-weight:700;
  box-shadow:inset 0 0 0 1px rgba(217,163,107,.16),0 0 10px rgba(217,163,107,.15);
  background:rgba(217,163,107,.05)}
.rw-seal.stamp{animation:krSealStamp .26s cubic-bezier(0.34,1.56,0.64,1) both}
@keyframes krSealStamp{from{transform:translateY(-7px) rotate(-2.5deg) scale(1.06)}to{transform:translateY(0) rotate(0) scale(1)}}
.rw-annot{font-size:.72rem;letter-spacing:.3em;text-indent:.3em;color:#c9a08b;text-align:center}
.rw-rows{width:100%;border:1px solid rgba(201,160,139,.14);border-radius:10px;
  background:rgba(255,255,255,.02);padding:.3rem .8rem}
.rw-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;
  min-height:40px;border-bottom:1px dashed rgba(201,160,139,.14);font-size:.85rem;opacity:0}
.rw-row:last-child{border-bottom:none}
.rw-row.rw-in{animation:krRowIn .32s cubic-bezier(0.34,1.56,0.64,1) both}   /* 位移弹簧 + opacity both 填充 */
@keyframes krRowIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
.rw-name{font-family:"Noto Serif SC",serif;color:#f5e8d0;letter-spacing:.08em}
.rw-note{flex:none;font-size:.62rem;letter-spacing:.24em;text-indent:.24em;color:#d9a36b}
.rw-bonus{font-size:.62rem;color:#b8977c;letter-spacing:.06em;text-align:center}
/* 收讫 · 盖印按钮：方角基类 + 金泥盖印（印章必方，非胶囊） */
.auth-submit.seal-submit{
  background:rgba(201,160,139,.08);border:1px solid rgba(201,160,139,.4);color:#c9a08b;
  transition:background .3s ease-out,color .2s ease-out,border-color .3s ease-out,transform .3s ease-out;
}
.auth-submit.seal-submit:hover{background:#c9a08b;border-color:#d9a36b;color:#0b0c10;box-shadow:0 0 18px rgba(201,160,139,.25)}
.auth-submit.seal-submit:active{transform:translateY(1px) scale(.97);transition-duration:.07s}
.rw-ok{width:100%;margin-top:.2rem;min-height:44px}  /* 触控达标 */

@media (prefers-reduced-motion:reduce){
  .rg-fill{transition:none}
  .cbadge,.rw-seal,.rw-row{animation:none}
  .rw-row{opacity:1}
}

/* ════════════════════════════════════════════════════════════
   KAIRÓS 主站 · 消费历史 = 时空账册（2026-08-04 · 4 skill 综合）
   物性：双框界格 + 收支字(收/支/平) + 家族色类型章 + 结余列
   材料链：收=亮金 · 支=柔和红 · 退=玉 · 订=玫瑰金 · 未名=虚线存疑
   铁律：新增文字无 text-shadow；信息性文字 ≥4.5:1
   ════════════════════════════════════════════════════════════ */

/* ── 入口 · 账房行（量尺封面 → 正文页；账务区聚拢）── */
.profile-ledger-btn{display:flex;align-items:center;gap:.7rem;width:100%;min-height:48px;
  margin:.2rem 0 .9rem;padding:.55rem .7rem;background:rgba(13,14,18,.6);
  border:1px solid rgba(201,160,139,.2);border-radius:4px;color:rgba(212,197,169,.85);
  font-family:'Noto Serif SC',serif;font-size:.8rem;letter-spacing:.08em;cursor:pointer;
  transition:border-color .25s,color .25s,background .25s;text-align:left}
.profile-ledger-btn:hover{border-color:rgba(201,160,139,.6);color:#f5e8d0;background:rgba(201,160,139,.1)}
.profile-ledger-btn:active{transform:scale(.97);transition:transform 80ms ease-out}
.profile-ledger-btn:focus-visible{outline:2px solid rgba(201,160,139,.5);outline-offset:2px}
.plb-seal{flex:none;width:1.7rem;height:1.7rem;border:1px solid rgba(201,160,139,.45);border-radius:3px;
  display:flex;align-items:center;justify-content:center;font-size:.8rem;color:#c9a08b;
  box-shadow:inset 0 0 0 1px rgba(201,160,139,.1)}   /* 2026-08-04 apple：账字→◈ 菱形字形光学补偿 .68→.8rem */
.plb-name{flex:1;min-width:0}
.plb-note{flex:none;font-size:.62rem;color:rgba(201,160,139,.55);letter-spacing:.18em}

/* ── 账册页 · 页头注 ── */
.hist-title{font-size:1.05rem;margin-bottom:.9rem}
.hist-title:focus{outline:none}


/* ── 账册框 · 双框界格 ── */
.hist-book{position:relative;max-height:min(44vh,340px);overflow-y:auto;overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;border:1px solid rgba(201,160,139,.22);border-radius:8px;
  background:rgba(255,255,255,.02);padding:0 .85rem}   /* 2026-08-04：52vh/420px→44vh/340px 窗口收缩防顶屏 */
.hist-book::after{content:'';position:absolute;inset:3px;pointer-events:none;
  border:1px solid rgba(201,160,139,.1);border-radius:5px}
.hist-book::-webkit-scrollbar{width:3px}
.hist-book::-webkit-scrollbar-thumb{background:rgba(201,160,139,.15);border-radius:3px}

/* ── 账目行 · 两栏（左类型/右收支）── */
.hist-row{display:flex;align-items:center;justify-content:space-between;gap:.9rem;
  padding:.68rem .1rem;border-bottom:1px solid rgba(201,160,139,.09);
  opacity:0;animation:histRowIn .24s cubic-bezier(.25,1,.5,1) forwards}
.hist-row:last-child{border-bottom:none}
@keyframes histRowIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.hist-main{flex:1;min-width:0}
.hist-line1{display:flex;align-items:center;gap:.45rem;min-width:0}
.hist-tag{flex:none;position:relative;font-size:.62rem;letter-spacing:.14em;text-indent:.14em;
  padding:.14rem .44rem;border:1px solid;border-radius:2px;white-space:nowrap}
.hist-tag::after{content:'';position:absolute;inset:2px;pointer-events:none;border:1px solid transparent;border-radius:1px}
.hist-tag-in{color:#d9a36b;border-color:rgba(217,163,107,.5);background:rgba(217,163,107,.05)}
.hist-tag-in::after{border-color:rgba(217,163,107,.18)}
.hist-tag-out{color:#b08a5e;border-color:rgba(176,138,94,.45);background:transparent}
.hist-tag-out::after{border-color:rgba(176,138,94,.16)}
.hist-tag-back{color:#7fb69d;border-color:rgba(127,182,157,.45);background:rgba(127,182,157,.06)}
.hist-tag-back::after{border-color:rgba(127,182,157,.18)}
.hist-tag-sub{color:#c9a08b;border-color:rgba(201,160,139,.4);background:rgba(201,160,139,.05)}
.hist-tag-sub::after{border-color:rgba(201,160,139,.14)}
.hist-tag-unknown{color:#a2959e;border:1px dashed rgba(162,149,158,.4);background:transparent}
.hist-tag-unknown::after{border-color:transparent}
.hist-note{flex:1;min-width:0;font-size:.6rem;color:#ab9a82;letter-spacing:.04em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hist-time{font-size:.62rem;color:#9c8a76;letter-spacing:.04em;margin-top:.18rem;font-variant-numeric:tabular-nums}

/* ── 右栏 · 收支字 + 金额衬底章 + 结余 ── */
.hist-amt-cell{flex:none;padding-left:.85rem;border-left:1px solid rgba(201,160,139,.08);text-align:right}
.hist-amt{display:inline-flex;align-items:baseline;gap:.3rem;font-family:"Noto Serif SC","Cinzel",serif;
  padding:.14rem .5rem;border:1px solid;border-radius:2px}
.hist-sign{font-size:.62rem;letter-spacing:.1em}
.hist-num{font-size:1rem;font-weight:700;font-variant-numeric:tabular-nums}
.hist-bal{font-size:.6rem;color:#9c8a76;letter-spacing:.06em;margin-top:.16rem;font-variant-numeric:tabular-nums}
.hist-in .hist-amt{color:#f1d592;border-color:rgba(217,163,107,.35);background:rgba(217,163,107,.06)}
.hist-out .hist-amt{color:#e57373;border-color:rgba(229,115,115,.35);background:rgba(229,115,115,.05)}
.hist-flat .hist-amt{color:#c9a08b;border-color:rgba(201,160,139,.28);background:rgba(201,160,139,.04)}
.hist-flat .hist-num{font-weight:600}

/* ── 骨架屏 ── */
.hist-skel{padding:.4rem 0;display:flex;flex-direction:column;gap:.6rem}
.hist-skel-row{height:2.5rem;border-radius:4px;
  background:linear-gradient(90deg,rgba(201,160,139,.05) 25%,rgba(201,160,139,.13) 50%,rgba(201,160,139,.05) 75%);
  background-size:200% 100%;animation:histShimmer 1.2s linear infinite}
@keyframes histShimmer{from{background-position:200% 0}to{background-position:-200% 0}}

/* ── 空态 · 虚印候记 ── */
.hist-empty{display:flex;flex-direction:column;align-items:center;gap:.75rem;padding:2.2rem .5rem 2.4rem;text-align:center}
.hist-empty-seal{width:2.6rem;height:2.6rem;border:1.5px dashed rgba(201,160,139,.35);border-radius:3px;
  display:flex;align-items:center;justify-content:center;color:rgba(201,160,139,.35);
  font-family:"Noto Serif SC","Cinzel",serif;font-size:1.15rem}   /* 2026-08-04 apple：册→◇ 空心菱（favicon 同源）光学补偿 .95→1.15rem */
.hist-empty-main{font-family:"Noto Serif SC",serif;font-size:.85rem;color:#d4b896;letter-spacing:.14em;text-indent:.14em}
.hist-empty-hint{font-size:.68rem;color:#9c8a76;letter-spacing:.06em;line-height:1.8}

/* ── 页脚 · 续账 / 账底 / 错误 ── */
.hist-foot{padding:.85rem 0 .1rem}
.hist-more{display:block;width:100%;min-height:44px;border:1px solid rgba(201,160,139,.3);border-radius:4px;
  background:rgba(201,160,139,.05);color:#c9a08b;font-family:"Noto Serif SC",serif;font-size:.78rem;
  letter-spacing:.16em;text-indent:.16em;cursor:pointer;transition:background .25s,color .2s,border-color .25s,transform .25s;
  opacity:0;animation:histRowIn .24s cubic-bezier(.25,1,.5,1) forwards}
.hist-more:hover{background:#c9a08b;border-color:#d9a36b;color:#0b0c10}
.hist-more:active{transform:translateY(1px) scale(.98);transition-duration:.07s}
.hist-more:disabled{opacity:.45;cursor:default;background:rgba(201,160,139,.03)}
.hist-spin{display:inline-block;width:10px;height:10px;border:1.5px solid rgba(201,160,139,.25);
  border-top-color:rgba(201,160,139,.8);border-radius:50%;margin-right:.45rem;vertical-align:-1px;
  animation:histSpin .7s linear infinite}
@keyframes histSpin{to{transform:rotate(360deg)}}
.hist-end{width:100%;min-height:44px;display:flex;align-items:center;justify-content:center;
  color:#9c8a76;font-size:.66rem;letter-spacing:.24em;text-indent:.24em}
.hist-err{text-align:center;padding:1.8rem .5rem .4rem;font-size:.75rem;color:#e57373;line-height:1.8}

@media (prefers-reduced-motion:reduce){
  .hist-row,.hist-more{opacity:1;animation:none}
  .hist-skel-row{animation:none;opacity:.8}
  .hist-spin{animation-duration:1.4s}
}

/* ════════════════════════════════════════════════════════════
   时空档案仪 · 批量删除（KR_ARCHIVE_BATCH · 2026-08-04 4 skill 综合）
   真 input checkbox + 泥金填充深色对勾(对比度修正) + 行让位 + 底部操作条
   ════════════════════════════════════════════════════════════ */

/* 入口 toggle 胶囊 */
.kab-toggle{background:transparent;border:1px solid rgba(197,165,91,.3);color:#c5a55b;
  padding:.28rem .7rem;border-radius:14px;cursor:pointer;font-size:.7rem;
  white-space:nowrap;letter-spacing:.06em;min-height:32px;font-family:inherit;transition:all .2s;flex-shrink:0;margin-left:.6rem}
.kab-toggle:hover{border-color:rgba(197,165,91,.55);color:#f1d592}
.kab-toggle.on{background:rgba(197,165,91,.1);border-color:#c5a55b;color:#f1d592}
.kab-toggle:focus-visible{outline:1.5px solid rgba(241,213,146,.8);outline-offset:2px}
.kab-toggle:disabled{opacity:.35;cursor:default}

/* 行 · 勾选框（真 input + 视觉盒） */
.kab-row{position:relative}
#auth-modal-body.kab-mode .kab-row{padding-left:2.5rem!important}
.kab-cb-wrap{display:none;position:absolute;left:.5rem;top:50%;transform:translateY(-50%);
  width:22px;height:22px;align-items:center;justify-content:center;cursor:pointer}
#auth-modal-body.kab-mode .kab-cb-wrap{display:flex}
.kab-cb-wrap .kab-cb{position:absolute;inset:0;width:22px;height:22px;opacity:0;cursor:pointer;margin:0}
.kab-box{width:20px;height:20px;border-radius:6px;border:1.5px solid rgba(197,165,91,.4);
  background:transparent;display:flex;align-items:center;justify-content:center;
  transition:background .15s,border-color .15s;pointer-events:none;box-sizing:border-box}
.kab-box svg{width:11px;height:11px;fill:none;stroke:#16140d;stroke-width:2.5;
  stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:14;stroke-dashoffset:14;
  transition:stroke-dashoffset .18s ease .02s}
.kab-cb:checked + .kab-box{background:#c9a08b;border-color:#c9a08b}   /* 2026-08-06 金统一：黄铜 #c5a55b→玫瑰金 #c9a08b */
.kab-cb:checked + .kab-box svg{stroke-dashoffset:0}
.kab-cb:focus-visible + .kab-box{outline:1.5px solid rgba(241,213,146,.8);outline-offset:2px}
.kab-cb-wrap:hover .kab-box{border-color:rgba(197,165,91,.7)}

/* 行选中态 + ✕ 隐藏 */
.kab-row.kab-selected{border-color:rgba(197,165,91,.45)!important;background:rgba(197,165,91,.06)!important}
#auth-modal-body.kab-mode .kab-del{display:none}

/* 底部操作条 */
.kab-bar{display:flex;align-items:center;justify-content:space-between;gap:.6rem;
  margin-top:.6rem;padding:.5rem .8rem calc(.5rem + env(safe-area-inset-bottom,0));
  background:rgba(13,11,14,.95);border:1px solid rgba(197,165,91,.14);border-radius:10px;
  transform:translateY(6px);opacity:0;pointer-events:none;
  transition:transform .2s var(--ease-out),opacity .2s var(--ease-out);
  position:sticky;bottom:0;z-index:2}   /* 2026-08-04：sticky 粘弹窗底，选择模式时操作条始终可见 */
.kab-bar.on{transform:translateY(0);opacity:1;pointer-events:auto}
#auth-modal-body.kab-mode .archive-scroll{padding-bottom:6rem}   /* 2026-08-04：列表底部预留，最后一行可滚出操作条之上 */
#auth-modal-body.kab-mode .archive-scroll{max-height:calc(62vh - 90px)!important}   /* 2026-08-04：选择模式压缩列表高度，bar+内容不超弹窗 90vh（防双层滚动末行被裁） */
.kab-bar[hidden]{display:none}
.kab-count{color:#c9a08b;font-size:.75rem;font-weight:500;font-variant-numeric:tabular-nums;letter-spacing:.04em}
.kab-btn{min-height:36px;border-radius:8px;padding:.25rem .9rem;font-size:.75rem;cursor:pointer;
  letter-spacing:.04em;font-family:inherit;transition:all .2s;background:transparent}
.kab-btn:focus-visible{outline:1.5px solid rgba(241,213,146,.8);outline-offset:2px}
.kab-btn-ghost{border:1px solid rgba(197,165,91,.25);color:#c9a08b}
.kab-btn-ghost:hover:not(:disabled){background:rgba(197,165,91,.08);color:#f1d592}
.kab-btn-danger{border:1px solid rgba(220,120,110,.35);color:rgba(220,120,110,.85)}
.kab-btn-danger:hover:not(:disabled){background:rgba(220,120,110,.1);color:#e0a08a;border-color:rgba(220,120,110,.55)}
.kab-btn:disabled{opacity:.35;cursor:not-allowed}

@media (prefers-reduced-motion:reduce){
  .kab-row,#auth-modal-body.kab-mode .kab-row,.kab-box,.kab-box svg,.kab-bar{transition:none}
}

/* 批量删除 · 悬浮确认层（KR_ARCHIVE_BATCH · 悬于档案弹窗之上，不替换列表 DOM） */
#kab-confirm-layer{
  position:fixed;inset:0;z-index:10001;display:flex;align-items:center;justify-content:center;
  padding:2rem;background:rgba(8,6,10,.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  opacity:0;pointer-events:none;transition:opacity .2s var(--ease-out);
}
#kab-confirm-layer.on{opacity:1;pointer-events:auto}
#kab-confirm-card{
  background:rgba(13,14,18,.97);border:1px solid rgba(201,160,139,.25);border-radius:18px;   /* 2026-08-06：危险红收束到按钮，卡片回归中性金边 */
  padding:2rem;min-width:min(320px,calc(100vw - 48px));max-width:min(380px,calc(100vw - 48px));
  box-shadow:0 0 0 1px rgba(201,160,139,.1),0 24px 80px rgba(0,0,0,.6);
  transform:translateY(14px) scale(.96);transition:transform .25s cubic-bezier(0.16,1,0.3,1);
  max-height:min(80vh,560px);overflow-y:auto;
}
#kab-confirm-layer.on #kab-confirm-card{transform:translateY(0) scale(1)}
.kab-confirm-preview{margin:0 0 .8rem;padding:.5rem .7rem;border:1px solid rgba(201,160,139,.12);border-radius:8px;background:rgba(0,0,0,.18)}
#kab-confirm-card button{
  display:block;width:100%;padding:.65rem;margin-bottom:.5rem;border-radius:8px;
  background:transparent;font-size:.85rem;cursor:pointer;text-align:center;
  transition:all .2s;min-height:44px;letter-spacing:.04em;font-family:inherit;
}
#kab-confirm-ok{border:1px solid rgba(220,120,110,.4);color:rgba(220,120,110,.85)}
#kab-confirm-ok:hover{background:rgba(220,120,110,.12);color:#e8a090;border-color:rgba(220,120,110,.6)}
#kab-confirm-ok:disabled{opacity:.5;cursor:default}
#kab-confirm-cancel{border:1px solid rgba(201,160,139,.18);color:rgba(201,160,139,.4)}
#kab-confirm-cancel:hover{background:rgba(201,160,139,.05);color:rgba(201,160,139,.65)}
#kab-confirm-card button:focus-visible{outline:1.5px solid rgba(241,213,146,.8);outline-offset:2px}
@media (prefers-reduced-motion:reduce){#kab-confirm-layer,#kab-confirm-card{transition:opacity .1s}}

/* ═══════════════════════════════════════════
   邀请有礼 · 烫金信笺 + 盖印（2026-08-06 4设计skill综合）
   容器8px / 印面2px / 墨字槽6px 三档圆角；印章金只出现在盖印瞬间
   ═══════════════════════════════════════════ */
.invite-wrap{max-width:520px;margin:0 auto;padding:.4rem 0 .8rem;text-align:center}
.invite-hero-title{font-family:'Cinzel','Noto Serif SC',serif;font-size:1.15rem;line-height:1.6;letter-spacing:.06em;color:rgba(212,197,169,.94);margin:0}
.invite-hero-sub{font-size:.78rem;line-height:1.8;letter-spacing:.04em;color:rgba(201,160,139,.6);margin:.5rem 0 0}
.invite-divider{font-size:.7rem;color:rgba(197,165,91,.28);letter-spacing:.5em;text-indent:.5em;margin:.9rem 0;user-select:none}
.invite-letter{position:relative;background:rgba(26,22,16,.55);border:1px solid rgba(197,165,91,.28);box-shadow:inset 0 0 0 1px rgba(197,165,91,.05);border-radius:8px;padding:1.3rem 1.2rem 1.2rem;margin:1.1rem 0 1.3rem;text-align:left}
.invite-letter::before{content:"";position:absolute;left:1.2rem;right:1.2rem;top:0;height:1px;background:linear-gradient(90deg,transparent,rgba(197,165,91,.22),transparent)}
.invite-letter-label{font-family:'Cinzel','Noto Serif SC',serif;font-size:.6rem;letter-spacing:.24em;color:rgba(197,165,91,.6);margin:0 0 .85rem}
.invite-letter-row{display:flex;align-items:stretch;gap:.55rem;flex-wrap:wrap}
.invite-link{flex:1;min-width:200px;background:rgba(13,14,18,.75);border:1px solid rgba(197,165,91,.2);border-radius:6px;padding:.72rem .85rem;color:rgba(212,197,169,.85);font-size:.76rem;letter-spacing:.02em;font-family:'Cinzel','Noto Serif SC',serif;outline:none;caret-color:#f1d592;transition:border-color .25s ease-out;touch-action:manipulation}
.invite-link:focus{border-color:rgba(197,165,91,.5)}
.invite-link:focus-visible{outline:1.5px solid rgba(241,213,146,.8);outline-offset:2px}
.invite-letter-actions{display:flex;gap:.55rem}
.invite-seal{border:1px solid rgba(197,165,91,.4);border-radius:2px;background:transparent;color:rgba(197,165,91,.85);font-family:'Cinzel','Noto Serif SC',serif;font-size:.74rem;font-weight:600;letter-spacing:.14em;white-space:nowrap;padding:.72rem 1.1rem;min-width:7.5em;min-height:44px;cursor:pointer;touch-action:manipulation;transition:background .18s ease-out,color .18s ease-out,border-color .18s ease-out,transform 80ms ease-out}
.invite-seal:hover{border-color:#c9a08b;color:#f1d592;background:rgba(197,165,91,.07)}
.invite-seal:active{transform:scale(.965)}
.invite-seal:focus-visible{outline:1.5px solid rgba(241,213,146,.8);outline-offset:2px}
.invite-seal.ghost{border-color:rgba(197,165,91,.3);color:rgba(212,197,169,.75);font-weight:400;letter-spacing:.1em}
.invite-seal.ghost:hover{border-color:rgba(197,165,91,.5);color:#f1d592;background:rgba(197,165,91,.06)}
.invite-seal.stamped{background:#C5A059;border-color:#C5A059;color:#14100a}
.invite-seal-mark{display:inline-block;width:4px;height:4px;border-radius:50%;background:#C5A059;margin-left:.5rem;vertical-align:2px;animation:seal-mark 1.8s ease-out forwards}
@keyframes seal-mark{0%{opacity:0;transform:scale(.4)}18%{opacity:1;transform:scale(1)}78%{opacity:1}100%{opacity:0;transform:scale(.9)}}
.invite-stats{display:flex;gap:.8rem;justify-content:center;margin:0 0 1.4rem}
.invite-stat{flex:1;max-width:148px;background:rgba(26,22,16,.4);border:1px solid rgba(197,165,91,.15);border-radius:8px;padding:.85rem .4rem .8rem}
.invite-stat-num{display:block;font-family:'Cinzel','Noto Serif SC',serif;font-size:1.3rem;line-height:1.15;font-weight:500;letter-spacing:.04em;color:#c9a08b;font-variant-numeric:tabular-nums}
.invite-stat-label{display:block;margin-top:.34rem;font-size:.65rem;letter-spacing:.18em;color:rgba(201,160,139,.55)}
.invite-terms{position:relative;background:rgba(197,165,91,.04);border:1px solid rgba(197,165,91,.12);border-top:1px solid rgba(197,165,91,.26);border-radius:2px;padding:.85rem 1.1rem;margin-bottom:1.4rem;text-align:left}
.invite-term{font-size:.74rem;line-height:2.05;letter-spacing:.03em;color:rgba(212,197,169,.62);margin:0}
.invite-term-no{font-family:'Cinzel','Noto Serif SC',serif;font-weight:500;font-size:.66rem;letter-spacing:.12em;color:rgba(197,165,91,.75);margin-right:.55em}
.invite-disclaimer{font-size:.6rem;color:rgba(201,160,139,.3);letter-spacing:.06em;text-align:center;margin:0}
.invite-msg{font-size:.8rem;line-height:1.8;text-align:center;padding:1.5rem 0}
.invite-msg.error{color:rgb(220,120,110)}
.invite-msg.hint{color:rgba(212,197,169,.6)}
.invite-skeleton{display:flex;flex-direction:column;gap:1rem;padding:1rem 0}
.invite-skeleton div{height:44px;border-radius:8px;background:rgba(197,165,91,.07);animation:invite-pulse 1.4s ease-in-out infinite}
.invite-skeleton div:nth-child(2){height:72px}
.invite-skeleton div:nth-child(3){height:88px}
@keyframes invite-pulse{0%,100%{opacity:.5}50%{opacity:1}}
@media (max-width:560px){
  .invite-letter-row{flex-direction:column;gap:.55rem}
  .invite-link{min-width:0;width:100%;font-size:16px}
  .invite-letter-actions{display:grid;grid-template-columns:1fr 1fr;gap:.55rem;width:100%}
  .invite-seal{min-width:0;width:100%;padding:.68rem .4rem}
  .invite-stat{max-width:none}
  .invite-hero-title{font-size:1.05rem}
}
