/* AURORA V2 — Page-specific layout language */

.search-hero {
  padding: var(--f-s7) 0 var(--f-s6);
}

.search-hero__eyebrow {
  margin-bottom: var(--f-s3);
  color: var(--f-accent);
  font-size: var(--f-text-xs);
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.search-hero__title {
  margin: 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-size: clamp(54px, 9vw, 112px);
  font-weight: 700;
  line-height: 0.96;
  letter-spacing: -0.06em;
  text-wrap: balance;
}

.search-hero__title--muted {
  color: var(--f-ink-2);
  font-style: italic;
  font-weight: 500;
}

.search-hero__sub {
  max-width: 48ch;
  margin: var(--f-s5) 0 0;
  color: var(--f-ink-2);
  font-size: clamp(16px, 2vw, 19px);
  line-height: var(--f-leading-base);
}

.search-main {
  display: grid;
  gap: var(--f-s4);
}

.search-console {
  display: grid;
  gap: 16px;
}

/* ============================================================
   Search · Page Head + Console Hero Bar + Filter Bar  [redesigned]
   ============================================================ */

/* —— Page Head —— */
.search-page-head .page-head__row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 24px;
  align-items: center;
}

.search-page-head__copy { display: grid; gap: 12px; max-width: 720px; }

.search-page-head__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--f-font-mono);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.30em;
  text-transform: uppercase;
  color: rgba(135, 70, 28, 0.92);
}
.search-page-head__dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: rgba(180, 80, 30, 0.85);
  box-shadow: 0 0 0 4px rgba(180, 80, 30, 0.18);
  animation: searchDotPulse 1.6s ease-in-out infinite;
}
@keyframes searchDotPulse {
  0%, 100% { box-shadow: 0 0 0 4px rgba(180, 80, 30, 0.18); }
  50%      { box-shadow: 0 0 0 8px rgba(180, 80, 30, 0.06); }
}

.search-page-head__title {
  margin: 0;
  font-family: var(--f-font-display);
  font-weight: 600;
  font-size: clamp(48px, 7vw, 88px);
  line-height: 0.94;
  letter-spacing: -0.05em;
  color: var(--f-ink-1);
  display: flex;
  align-items: baseline;
  gap: 18px;
  flex-wrap: wrap;
}
.search-page-head__title-em {
  font-family: var(--f-font-display);
  font-style: italic;
  font-weight: 400;
  font-size: 0.42em;
  color: rgba(145, 99, 39, 0.78);
  letter-spacing: -0.01em;
  position: relative;
}
.search-page-head__title-em::after {
  content: '';
  position: absolute;
  left: 0; right: 8px; bottom: 4px;
  height: 0.32em;
  background: linear-gradient(90deg, rgba(245, 200, 120, 0.55), rgba(245, 200, 120, 0));
  z-index: -1;
}

.search-page-head__sub {
  margin: 0;
  max-width: 56ch;
  color: var(--f-ink-2);
  font-size: 15px;
  line-height: 1.65;
}

.search-page-head__deco {
  width: clamp(110px, 14vw, 160px);
  height: clamp(110px, 14vw, 160px);
  color: rgba(145, 99, 39, 0.55);
  flex-shrink: 0;
}
.search-page-head__deco svg { width: 100%; height: 100%; display: block; }

@media (max-width: 720px) {
  .search-page-head .page-head__row { grid-template-columns: 1fr; }
  .search-page-head__deco { display: none; }
}

/* —— Console Card —— */
.search-console {
  display: grid;
  gap: 18px;
  padding: clamp(20px, 2.4vw, 30px);
  position: relative;
  overflow: hidden;
  isolation: isolate;
}
.search-console::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  background:
    radial-gradient(circle at 100% 0%, rgba(218, 184, 106, 0.12), transparent 38%),
    radial-gradient(circle at 0% 100%, rgba(155, 108, 42, 0.08), transparent 36%);
}
.search-console > * { position: relative; z-index: 1; }

/* —— Brand Toggle (大按鈕 + crest) —— */
/* —— Brand toggle：書本翻頁式雙向不對稱 pill（與 Market 同款）—— */
.search-brand-toggle {
  display: flex;
  gap: 0;
  max-width: 600px;
}

.search-brand-btn {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 20px;
  border: 1.5px solid rgba(120, 89, 37, 0.22);
  background: rgba(255, 255, 255, 0.66);
  text-align: left;
  cursor: pointer;
  transition: transform 160ms ease, border-color 160ms ease, background 160ms ease;
}
.search-brand-toggle .search-brand-btn:first-child {
  clip-path: polygon(0 0, calc(100% - 16px) 0, 100% 100%, 0 100%);
  border-radius: 22px 0 0 22px;
  padding-right: 32px;
}
.search-brand-toggle .search-brand-btn:last-child {
  clip-path: polygon(16px 0, 100% 0, 100% 100%, 0 100%);
  border-radius: 0 22px 22px 0;
  padding-left: 32px;
  margin-left: -10px;
}
.search-brand-btn:hover { transform: translateY(-1px); border-color: rgba(145, 99, 39, 0.55); background: #fff; }
.search-brand-btn.is-active {
  background: linear-gradient(180deg, #1a140f, #0d0a07);
  border-color: rgba(218, 184, 106, 0.85);
  color: #f7e9c5;
  box-shadow: 0 6px 18px rgba(20, 15, 10, 0.22);
}

.search-brand-btn__crest {
  display: grid;
  place-items: center;
  width: 38px; height: 38px;
  border-radius: 50%;
  background: rgba(255, 245, 220, 0.82);
  flex-shrink: 0;
}
.search-brand-btn__crest svg { width: 22px; height: 22px; }
.search-brand-btn__crest.is-onepiece { color: #b6452a; }
.search-brand-btn__crest.is-pokemon { color: #c4942a; }
.search-brand-btn.is-active .search-brand-btn__crest { background: rgba(218, 184, 106, 0.18); }

.search-brand-btn__copy { display: grid; gap: 1px; min-width: 0; }
.search-brand-btn__label {
  font-family: var(--f-font-mono);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.16em;
}
.search-brand-btn__sub {
  font-family: var(--f-font-display);
  font-size: 12px;
  color: rgba(135, 70, 28, 0.75);
}
.search-brand-btn.is-active .search-brand-btn__sub { color: rgba(247, 233, 197, 0.65); }

/* —— Hero Search Bar —— */
.search-hero-bar {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 12px;
  align-items: stretch;
}

.search-hero-bar__field {
  position: relative;
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 0 18px 0 22px;
  min-height: 84px;
  border: 1.5px solid rgba(120, 89, 37, 0.22);
  border-radius: 18px;
  background: linear-gradient(180deg, #fffdf6 0%, #faf2dc 100%);
  box-shadow: 0 1px 0 rgba(255,255,255,0.7) inset, 0 8px 18px rgba(70, 48, 16, 0.10);
  transition: border-color 200ms ease, box-shadow 200ms ease;
}
.search-hero-bar__field:focus-within {
  border-color: rgba(145, 99, 39, 0.85);
  box-shadow: 0 1px 0 rgba(255,255,255,0.7) inset, 0 0 0 4px rgba(229, 184, 95, 0.22), 0 8px 22px rgba(70, 48, 16, 0.14);
}

.search-hero-bar__icon {
  width: 30px; height: 30px;
  display: grid;
  place-items: center;
  color: rgba(135, 70, 28, 0.85);
  flex-shrink: 0;
}
.search-hero-bar__icon svg { width: 100%; height: 100%; }

.search-hero-bar__input {
  flex: 1;
  min-width: 0;
  border: 0;
  background: transparent;
  outline: none;
  font-family: var(--f-font-display);
  font-size: clamp(20px, 2.4vw, 26px);
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--f-ink-1);
  padding: 0;
}
.search-hero-bar__input::placeholder {
  font-style: italic;
  font-weight: 400;
  color: rgba(105, 78, 30, 0.55);
}

.search-hero-bar__clear {
  display: none;
  width: 32px; height: 32px;
  border-radius: 50%;
  border: 1px solid rgba(120, 89, 37, 0.22);
  background: rgba(255, 250, 240, 0.95);
  color: rgba(105, 78, 30, 0.7);
  font-size: 18px;
  cursor: pointer;
  transition: transform 160ms ease, border-color 160ms ease;
}
.search-hero-bar__clear:hover { transform: rotate(90deg); border-color: rgba(145, 99, 39, 0.55); color: var(--f-ink-1); }
.search-hero-bar.has-text .search-hero-bar__clear { display: inline-flex; align-items: center; justify-content: center; }

.search-hero-bar__submit {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 0 26px;
  min-height: 84px;
  border: 1.5px solid rgba(218, 184, 106, 0.55);
  border-radius: 18px;
  background: linear-gradient(180deg, #2a1f15, #15110c);
  color: #f7e9c5;
  font-family: var(--f-font-display);
  font-size: 17px;
  font-weight: 600;
  letter-spacing: -0.005em;
  cursor: pointer;
  white-space: nowrap;
  box-shadow: 0 8px 18px rgba(20, 15, 10, 0.28), 0 1px 0 rgba(255,255,255,0.05) inset;
  transition: transform 180ms ease, box-shadow 180ms ease;
}
.search-hero-bar__submit:hover { transform: translateY(-1px); box-shadow: 0 12px 24px rgba(20, 15, 10, 0.34); }
.search-hero-bar__submit:active { transform: translateY(0); }
.search-hero-bar__submit-icon {
  width: 22px; height: 22px;
  color: #dab86a;
  display: inline-flex;
}
.search-hero-bar__submit-icon svg { width: 100%; height: 100%; }

@media (max-width: 640px) {
  .search-hero-bar { grid-template-columns: 1fr; }
  .search-hero-bar__field { min-height: 72px; }
  .search-hero-bar__submit { min-height: 56px; justify-content: center; }
}

/* —— Hero meta row (hints + URL shortcut) —— */
.search-hero-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  padding-bottom: 4px;
  border-bottom: 1px dashed rgba(120, 89, 37, 0.24);
}
.search-hero-meta__hints {
  display: flex;
  gap: 18px;
  flex-wrap: wrap;
}
.search-hero-meta__hint {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--f-font-mono);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(105, 78, 30, 0.72);
}
.search-hero-meta__icon { width: 16px; height: 16px; color: rgba(135, 70, 28, 0.82); display: inline-flex; }
.search-hero-meta__icon svg { width: 100%; height: 100%; }
.search-hero-meta__hint kbd {
  font-family: var(--f-font-mono);
  font-size: 10px;
  padding: 2px 6px;
  border: 1px solid rgba(120, 89, 37, 0.32);
  border-radius: 4px;
  background: rgba(255, 250, 240, 0.85);
  color: var(--f-ink-1);
  margin-right: 2px;
  letter-spacing: 0;
  text-transform: none;
}
.search-hero-meta__shortcut {
  flex: 0 1 auto;
  min-width: 0;
}

/* —— Filter Bar (Mode / Rarity / Scope) —— */
.search-filterbar {
  display: grid;
  grid-template-columns: auto auto auto;
  gap: 22px 28px;
  align-items: end;
  flex-wrap: wrap;
}
@media (max-width: 820px) {
  .search-filterbar { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 540px) {
  .search-filterbar { grid-template-columns: 1fr; }
}

.search-filterbar__cell {
  display: grid;
  gap: 6px;
  min-width: 0;
}

.search-filterbar__label {
  font-family: var(--f-font-mono);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: rgba(105, 78, 30, 0.62);
}

/* mode toggle 重新樣式（取代舊的 search-mode-btn） */
.search-mode-toggle {
  display: inline-flex;
  gap: 4px;
  padding: 4px;
  border: 1px solid rgba(120, 89, 37, 0.22);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.62);
}
.search-mode-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 14px;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: rgba(70, 48, 16, 0.62);
  font-family: var(--f-font-ui);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: background 160ms ease, color 160ms ease;
}
.search-mode-btn:hover { color: var(--f-ink-1); background: rgba(255,255,255,0.85); }
.search-mode-btn.is-active {
  background: var(--f-ink-1);
  color: #f7e9c5;
}
.search-mode-btn__icon { width: 14px; height: 14px; display: inline-flex; }
.search-mode-btn__icon svg { width: 100%; height: 100%; }

.search-scope-tabs {
  width: max-content;
}

.search-workspace {
  display: grid;
  grid-template-columns: minmax(280px, 340px) minmax(0, 1fr);
  gap: 24px;
  align-items: start;
  margin-top: var(--f-s6);
}

.search-rail {
  position: sticky;
  top: calc(var(--f-top-h) + 24px);
  display: grid;
  gap: 14px;
}

.search-main-pane {
  min-width: 0;
  display: grid;
  gap: 18px;
}

/* ============================================================
   Search · Utility Rail cards (各自 SVG 背景特色)
   ============================================================ */

.search-rail-card {
  position: relative;
  display: grid;
  gap: 14px;
  padding: 18px;
  border: 1px solid rgba(120, 89, 37, 0.18);
  border-radius: 16px;
  background: rgba(255, 252, 245, 0.72);
  box-shadow: 0 1px 0 rgba(255,255,255,0.55) inset, 0 4px 10px rgba(70, 48, 16, 0.05);
  overflow: hidden;
  isolation: isolate;
  transition: transform 220ms ease, border-color 220ms ease, box-shadow 220ms ease;
}

.search-rail-card:hover {
  transform: translateY(-1px);
  border-color: rgba(145, 99, 39, 0.45);
  box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset, 0 8px 16px rgba(70, 48, 16, 0.08);
}

.search-rail-card > * { position: relative; z-index: 1; }

.search-rail-card--compact { gap: 10px; }

.search-rail-card__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}
.search-rail-card__head-l {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}
.search-rail-card__icon {
  width: 32px; height: 32px;
  display: grid; place-items: center;
  border-radius: 8px;
  background: rgba(255, 250, 240, 0.95);
  border: 1px solid rgba(120, 89, 37, 0.22);
  color: rgba(135, 70, 28, 0.85);
  flex-shrink: 0;
  box-shadow: 0 1px 0 rgba(255,255,255,0.5) inset;
}
.search-rail-card__icon svg { width: 18px; height: 18px; }

.search-rail-card__kicker {
  color: rgba(135, 70, 28, 0.85);
  font-family: var(--f-font-mono);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.20em;
  text-transform: uppercase;
}

.search-rail-card__title {
  margin: 2px 0 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-size: 16px;
  font-weight: 600;
  letter-spacing: -0.01em;
  line-height: 1.2;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.search-rail-card__sub {
  margin: 0;
  color: var(--f-ink-2);
  font-size: var(--f-text-sm);
  line-height: var(--f-leading-base);
}

/* —— Search Desk: radar 雷達同心圓背景 —— */
.search-rail-card--desk {
  background:
    radial-gradient(circle at 100% 0%, rgba(218, 184, 106, 0.18), transparent 42%),
    linear-gradient(180deg, #fffdf8, #f6efe0);
}
.search-rail-card--desk::before {
  content: '';
  position: absolute;
  top: -40px; right: -40px;
  width: 220px; height: 220px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 220 220' fill='none'%3E%3Ccircle cx='110' cy='110' r='100' stroke='%239b6c2a' stroke-width='1.2' opacity='.18'/%3E%3Ccircle cx='110' cy='110' r='75' stroke='%239b6c2a' stroke-width='1.2' opacity='.22'/%3E%3Ccircle cx='110' cy='110' r='50' stroke='%239b6c2a' stroke-width='1.2' opacity='.28'/%3E%3Ccircle cx='110' cy='110' r='25' stroke='%239b6c2a' stroke-width='1.2' opacity='.34'/%3E%3Cpath d='M110 110 L 195 60' stroke='%23b6452a' stroke-width='2.4' stroke-linecap='round' opacity='.4'/%3E%3Ccircle cx='110' cy='110' r='4' fill='%23b6452a' opacity='.55'/%3E%3C/svg%3E");
  background-size: contain;
  background-repeat: no-repeat;
  pointer-events: none;
  z-index: 0;
  opacity: .85;
}
.search-rail-card--desk.is-onepiece { background: radial-gradient(circle at 100% 0%, rgba(196, 80, 50, 0.14), transparent 42%), linear-gradient(180deg, #fff8f3, #f5e8de); }
.search-rail-card--desk.is-pokemon { background: radial-gradient(circle at 100% 0%, rgba(218, 184, 60, 0.16), transparent 42%), linear-gradient(180deg, #fffcec, #f5edcf); }

/* —— Recent: 鐘錶刻度同心圓 —— */
.search-rail-card--recent {
  background: linear-gradient(180deg, #fffdf6, #f5efe2);
}
.search-rail-card--recent::before {
  content: '';
  position: absolute;
  top: -30px; right: -30px;
  width: 180px; height: 180px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 180 180' fill='none'%3E%3Ccircle cx='90' cy='90' r='80' stroke='%239b6c2a' stroke-width='1' opacity='.20'/%3E%3Cg stroke='%239b6c2a' stroke-width='1.4' opacity='.32' stroke-linecap='round'%3E%3Cpath d='M90 18 V 30'/%3E%3Cpath d='M90 162 V 150'/%3E%3Cpath d='M18 90 H 30'/%3E%3Cpath d='M162 90 H 150'/%3E%3Cpath d='M40 40 L 48 48'/%3E%3Cpath d='M140 40 L 132 48'/%3E%3Cpath d='M40 140 L 48 132'/%3E%3Cpath d='M140 140 L 132 132'/%3E%3C/g%3E%3Cpath d='M90 90 L 90 50' stroke='%23b6452a' stroke-width='2' stroke-linecap='round' opacity='.45'/%3E%3Cpath d='M90 90 L 120 90' stroke='%23b6452a' stroke-width='1.6' stroke-linecap='round' opacity='.4'/%3E%3Ccircle cx='90' cy='90' r='3.5' fill='%23b6452a' opacity='.55'/%3E%3C/svg%3E");
  background-size: contain;
  background-repeat: no-repeat;
  pointer-events: none;
  z-index: 0;
  opacity: .55;
}

/* —— Shortcuts: 角色頭像剪影 grid —— */
.search-rail-card--shortcuts {
  background: linear-gradient(180deg, #fbf6e8, #efe5cc);
}
.search-rail-card--shortcuts::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 80' fill='none'%3E%3Ccircle cx='40' cy='32' r='10' fill='%239b6c2a' fill-opacity='.10'/%3E%3Cpath d='M22 60 C 22 50 30 44 40 44 S 58 50 58 60 V 64 H 22 Z' fill='%239b6c2a' fill-opacity='.10'/%3E%3C/svg%3E");
  background-size: 56px 56px;
  background-repeat: repeat;
  pointer-events: none;
  z-index: 0;
  opacity: .35;
  mask-image: linear-gradient(180deg, transparent 0%, black 30%, black 100%);
  -webkit-mask-image: linear-gradient(180deg, transparent 0%, black 30%, black 100%);
}

/* —— Catalog: 盒堆 isometric grid —— */
.search-rail-card--catalog {
  background: linear-gradient(180deg, #f6f0e0, #ece2c5);
}
.search-rail-card--catalog::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64' fill='none'%3E%3Crect x='8' y='14' width='22' height='18' fill='%239b6c2a' fill-opacity='.08' stroke='%239b6c2a' stroke-width='.5' stroke-opacity='.18'/%3E%3Crect x='34' y='14' width='22' height='18' fill='%239b6c2a' fill-opacity='.08' stroke='%239b6c2a' stroke-width='.5' stroke-opacity='.18'/%3E%3Crect x='8' y='34' width='22' height='18' fill='%239b6c2a' fill-opacity='.08' stroke='%239b6c2a' stroke-width='.5' stroke-opacity='.18'/%3E%3Crect x='34' y='34' width='22' height='18' fill='%239b6c2a' fill-opacity='.08' stroke='%239b6c2a' stroke-width='.5' stroke-opacity='.18'/%3E%3C/svg%3E");
  background-size: 64px 64px;
  background-repeat: repeat;
  pointer-events: none;
  z-index: 0;
  opacity: .55;
  mask-image: linear-gradient(180deg, transparent 0%, black 25%, black 100%);
  -webkit-mask-image: linear-gradient(180deg, transparent 0%, black 25%, black 100%);
}

/* —— Quick Start: 對角箭頭線條 —— */
.search-rail-card--quickstart {
  background: linear-gradient(180deg, #fffaf0, #f5ecd8);
}
.search-rail-card--quickstart::before {
  content: '';
  position: absolute;
  top: -20px; right: -20px;
  width: 160px; height: 160px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 160' fill='none'%3E%3Cg stroke='%23b6452a' stroke-width='1.6' stroke-linecap='round' opacity='.3'%3E%3Cpath d='M30 130 L 130 30'/%3E%3Cpath d='M50 130 L 130 50'/%3E%3Cpath d='M70 130 L 130 70'/%3E%3Cpath d='M90 130 L 130 90'/%3E%3C/g%3E%3Cpath d='M120 30 L 130 30 L 130 40' stroke='%23b6452a' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round' opacity='.55' fill='none'/%3E%3C/svg%3E");
  background-size: contain;
  background-repeat: no-repeat;
  pointer-events: none;
  z-index: 0;
  opacity: .85;
}

.search-rail-empty {
  color: var(--f-ink-3);
  font-size: var(--f-text-sm);
  line-height: var(--f-leading-base);
  font-style: italic;
}

.search-rail-hotline {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.search-panel-toggle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 0;
  text-align: left;
}

.search-panel-toggle__meta {
  display: grid;
  gap: 2px;
}

.search-panel-toggle__icon {
  width: 28px;
  height: 28px;
  display: grid;
  place-items: center;
  border: 1px solid var(--f-line);
  border-radius: 50%;
  color: var(--f-ink-2);
  font-size: 16px;
  flex-shrink: 0;
}

.search-rail-groups,
.search-catalog-groups {
  display: grid;
  gap: 14px;
}

.search-rail-groups {
  max-height: 420px;
  overflow: auto;
  padding-right: 4px;
}

.search-catalog-groups {
  max-height: 460px;
  overflow: auto;
  padding-right: 4px;
}

.search-rail-group,
.search-catalog-group {
  display: grid;
  gap: 10px;
}

.search-rail-group__label,
.search-catalog-group__label {
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
  font-weight: 800;
  letter-spacing: 0.10em;
  text-transform: uppercase;
}

.search-catalog-grid {
  display: grid;
  gap: 8px;
}

.search-catalog-chip {
  display: grid;
  gap: 2px;
  width: 100%;
  padding: 12px 14px;
  border: 1px solid var(--f-line);
  border-radius: 16px;
  background: rgba(255,255,255,0.66);
  text-align: left;
  transition: transform var(--f-dur-fast) var(--f-ease), border-color var(--f-dur-fast) var(--f-ease), background var(--f-dur-fast) var(--f-ease);
}

.search-catalog-chip:hover {
  transform: translateY(-1px);
  border-color: var(--f-ink-1);
  background: #fff;
}

.search-catalog-chip__code {
  color: var(--f-ink-1);
  font-family: var(--f-font-num);
  font-size: var(--f-text-sm);
  font-weight: 700;
}

.search-catalog-chip__title {
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
  line-height: var(--f-leading-snug);
}

.search-brand-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.search-console__bar {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 220px auto;
  gap: 12px;
  align-items: center;
}

.search-input-wrap--toolbar {
  min-width: 0;
}

.search-console__rarity {
  min-width: 0;
}

.search-rarity-select {
  width: auto;
  min-width: 160px;
  height: 38px;
  padding: 0 32px 0 14px;
  border: 1px solid rgba(120, 89, 37, 0.22);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.78);
  color: var(--f-ink-1);
  font-family: var(--f-font-ui);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0;
  appearance: none;
  cursor: pointer;
  background-image: linear-gradient(45deg, transparent 50%, rgba(120,89,37,0.55) 50%), linear-gradient(135deg, rgba(120,89,37,0.55) 50%, transparent 50%);
  background-position: calc(100% - 18px) 16px, calc(100% - 13px) 16px;
  background-size: 5px 5px;
  background-repeat: no-repeat;
  transition: border-color 160ms ease, background-color 160ms ease;
}

.search-rarity-select:hover { border-color: rgba(145, 99, 39, 0.55); }

.search-rarity-select:focus {
  border-color: rgba(145, 99, 39, 0.85);
  outline: none;
  box-shadow: 0 0 0 3px rgba(229, 184, 95, 0.22);
}

.search-inline-shortcut {
  width: 100%;
  height: 46px;
}

.search-mode-copy {
  display: grid;
  gap: 4px;
}

.search-mode-label {
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.search-mode-note {
  color: var(--f-ink-2);
  font-size: var(--f-text-sm);
}

.search-mode-toggle {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.search-mode-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: 40px;
  padding: 0 14px;
  border: 1px solid var(--f-line);
  border-radius: var(--f-r-pill);
  background: rgba(255, 255, 255, 0.6);
  color: var(--f-ink-2);
  font-size: var(--f-text-sm);
  font-weight: 700;
  transition: background var(--f-dur-fast) var(--f-ease), color var(--f-dur-fast) var(--f-ease), border-color var(--f-dur-fast) var(--f-ease);
}

.search-mode-btn.is-active {
  background: var(--f-ink-1);
  border-color: var(--f-ink-1);
  color: var(--f-ink-on);
}

/* legacy .search-input-* classes removed — superseded by .search-hero-bar__* */

.search-section {
  border: 1px solid var(--f-line);
  border-radius: 22px;
  background: rgba(255, 255, 255, 0.54);
  padding: clamp(18px, 3vw, 28px);
  box-shadow: var(--f-shadow-1);
}

.search-section--exact {
  border-color: rgba(179, 91, 51, 0.24);
  background: linear-gradient(180deg, rgba(179, 91, 51, 0.06), rgba(255, 255, 255, 0.58));
}

.search-section__title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--f-s3);
  margin-bottom: var(--f-s4);
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.search-section__title--results {
  padding-bottom: 12px;
  border-bottom: 1px solid var(--f-line);
}

.search-section__count {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: var(--f-text-xs);
  font-weight: 700;
  letter-spacing: 0;
}

.search-section__clear {
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
  font-weight: 700;
  letter-spacing: 0;
  text-transform: none;
}

.search-section__clear:hover {
  color: var(--f-accent);
}

.search-section__desc {
  margin: -6px 0 16px;
  color: var(--f-ink-3);
  font-size: var(--f-text-sm);
  line-height: var(--f-leading-base);
}

.search-recent-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.search-chip__label {
  display: inline-flex;
  align-items: center;
}

.search-chip__meta {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 11px;
  margin-left: 6px;
}

.search-card-context {
  color: var(--f-ink-3);
  font-size: 11px;
  font-weight: 700;
  line-height: var(--f-leading-snug);
}

.dashboard-actions {
  align-items: flex-end;
}

/* ============================================================
   Dashboard · Dealer's Field Creed (Editorial Pull-Quote)
   取代舊的 .dashboard-manifesto 盒子
   ============================================================ */

.dashboard-creed {
  position: relative;
  display: grid;
  gap: 10px;
  margin: 18px 0 0;
  padding: 0;
  max-width: 560px;
  isolation: isolate;
}

/* — Rule line: Mantra No.001 ✺ ──────── */
.dashboard-creed__rule {
  display: flex;
  align-items: center;
  gap: 10px;
  font-family: var(--f-font-mono);
  font-size: 10.5px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: rgba(105, 78, 30, 0.78);
}

.dashboard-creed__no i {
  font-family: var(--f-font-display);
  font-style: italic;
  letter-spacing: 0;
  text-transform: none;
}

.dashboard-creed__no sup {
  font-size: 0.7em;
  text-decoration: underline;
  text-underline-offset: 1px;
  margin: 0 1px;
}

.dashboard-creed__star {
  font-size: 13px;
  color: rgba(145, 99, 39, 0.85);
  transform: translateY(-1px);
}

.dashboard-creed__rule-line {
  flex: 1;
  height: 1px;
  background: linear-gradient(90deg, rgba(120, 89, 37, 0.55), rgba(120, 89, 37, 0));
  min-width: 60px;
}

/* — The quote block — */
.dashboard-creed__quote {
  position: relative;
  margin: 0;
  display: grid;
  gap: 4px;
  padding: 4px 0 6px;
  color: var(--f-ink-1);
}

.dashboard-creed__open,
.dashboard-creed__close {
  position: absolute;
  font-family: var(--f-font-display);
  font-style: italic;
  font-weight: 400;
  line-height: 1;
  color: rgba(145, 99, 39, 0.30);
  user-select: none;
  pointer-events: none;
}

.dashboard-creed__open {
  top: -14px;
  left: -28px;
  font-size: clamp(56px, 6vw, 88px);
}

.dashboard-creed__close {
  bottom: -36px;
  right: 4px;
  font-size: clamp(48px, 5vw, 72px);
}

/* Dream line — wistful, lighter, with strike on the "是夢想" bit */
.dashboard-creed__dream {
  font-family: var(--f-font-display);
  font-style: italic;
  font-weight: 400;
  font-size: clamp(17px, 1.9vw, 22px);
  letter-spacing: 0.01em;
  color: rgba(70, 48, 16, 0.55);
}

.dashboard-creed__dream s {
  text-decoration: line-through;
  text-decoration-color: rgba(145, 99, 39, 0.7);
  text-decoration-thickness: 1.5px;
  text-underline-offset: 4px;
}

/* Reality line — the punchline. Big, display, italic accent. */
.dashboard-creed__reality {
  display: flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 2px;
  font-family: var(--f-font-display);
  font-size: clamp(30px, 4vw, 46px);
  font-weight: 600;
  line-height: 1.02;
  letter-spacing: -0.045em;
  color: var(--f-ink-1);
}

.dashboard-creed__reality em {
  font-style: normal;
}

/* The highlighted "是日常啦" — italic + warm highlighter swipe */
.dashboard-creed__punch {
  position: relative;
  font-style: italic;
  font-weight: 500;
  color: rgba(135, 70, 28, 0.96);
  padding: 0 4px;
  z-index: 0;
}

.dashboard-creed__punch::before {
  content: '';
  position: absolute;
  left: -2px;
  right: -2px;
  bottom: 4px;
  height: 38%;
  background: linear-gradient(90deg, rgba(245, 200, 120, 0.78) 0%, rgba(245, 200, 120, 0.55) 75%, rgba(245, 200, 120, 0));
  transform: skewX(-6deg);
  z-index: -1;
  border-radius: 2px;
}

.dashboard-creed__punch::after {
  content: '';
  position: absolute;
  left: 0;
  right: 6px;
  bottom: -2px;
  height: 2px;
  background: rgba(135, 70, 28, 0.9);
  transform-origin: left;
  transform: rotate(-0.6deg);
  border-radius: 999px;
}

/* — Signature — */
.dashboard-creed__sig {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 28px;
  font-family: var(--f-font-mono);
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(105, 78, 30, 0.62);
}

.dashboard-creed__sig-line {
  width: 36px;
  height: 1px;
  background: rgba(120, 89, 37, 0.55);
}

@media (max-width: 640px) {
  .dashboard-creed__open { left: -16px; top: -8px; }
  .dashboard-creed__close { display: none; }
  .dashboard-creed { max-width: 100%; }
}

.dashboard-showcase,
.dashboard-wall-panel,
.dashboard-ribbon {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

.dashboard-showcase::before,
.dashboard-wall-panel::before,
.dashboard-ribbon::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
}

.dashboard-showcase::before {
  background:
    linear-gradient(180deg, rgba(255,248,238,0.92), rgba(247,240,228,0.96)),
    linear-gradient(135deg, rgba(24, 20, 15, 0.10), transparent 56%);
  background-repeat: no-repeat;
  background-position: center, center;
  background-size: cover, cover;
}

.dashboard-showcase::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background:
    radial-gradient(circle at 20% 20%, rgba(255, 216, 150, 0.18), transparent 24%),
    linear-gradient(90deg, rgba(14, 11, 8, 0.08) 0%, transparent 18%, transparent 82%, rgba(14, 11, 8, 0.08) 100%),
    linear-gradient(180deg, rgba(14, 11, 8, 0.10) 0%, transparent 18%, transparent 84%, rgba(14, 11, 8, 0.12) 100%);
}

.dashboard-showcase__rich {
  position: absolute;
  top: 18px;
  right: auto;
  left: 48%;
  width: min(740px, 60vw);
  max-width: 740px;
  border-radius: 28px;
  opacity: .34;
  transform: translateX(-20%) rotate(-7deg);
  box-shadow: 0 18px 40px rgba(20, 15, 11, 0.12);
  filter: saturate(.94) contrast(1.01);
  pointer-events: none;
  z-index: 0;
}

.dashboard-showcase {
  border: 1px solid rgba(120, 89, 37, 0.18);
  box-shadow:
    inset 0 0 0 2px rgba(201, 165, 96, 0.16),
    inset 0 0 0 10px rgba(255, 250, 242, 0.42),
    var(--f-shadow-2);
}

.dashboard-showcase__head::after {
  content: none;
}

.dashboard-wall-panel::before,
.dashboard-ribbon::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 520 240'%3E%3Cpath d='M368 0h152v64c-40 0-76-8-108-23-18-9-30-20-44-41Z' fill='%23eadbc6' fill-opacity='.64'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: top right;
  background-size: 160px auto;
}

/* ============================================================
   Dashboard · Heat Wall Panel — 「畫廊牆」背景
   兩個品牌共用結構，再用 #dbWallOnepiece / #dbWallPokemon 給品牌色差
   ============================================================ */

.dashboard-wall-panel {
  padding: clamp(22px, 2.6vw, 32px) clamp(20px, 2.4vw, 30px) clamp(24px, 2.6vw, 32px);
  border: 1px solid rgba(120, 89, 37, 0.16);
  /* 主基底：與 feature-card 同家族，疊上極淡的對角光與牆面紋理 */
  background:
    radial-gradient(circle at 100% 0%, var(--wall-tint, rgba(180, 140, 70, 0.10)), transparent 46%),
    radial-gradient(circle at 0% 100%, rgba(40, 28, 14, 0.06), transparent 38%),
    linear-gradient(180deg, rgba(255, 255, 255, 0.82), rgba(249, 245, 237, 0.98));
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.55),
    var(--f-shadow-1);
}

/* Gallery wall — 細網格 + 微噪點 */
.dashboard-wall-panel::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  background-image:
    /* 36px 棋盤格細線，像畫廊牆面 */
    linear-gradient(rgba(120, 89, 37, 0.045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(120, 89, 37, 0.045) 1px, transparent 1px);
  background-size: 36px 36px, 36px 36px;
  background-position: -1px -1px, -1px -1px;
  mix-blend-mode: multiply;
  opacity: .55;
}

.dashboard-wall-panel > * { position: relative; z-index: 1; }

/* Section head 變成「展牆吊牌」感 — 品牌色當左側軌道 */
.dashboard-wall-panel .section__head {
  position: relative;
  padding: 4px 0 14px 16px;
  margin-bottom: 6px;
  border-bottom: 1px dashed rgba(120, 89, 37, 0.28);
}

.dashboard-wall-panel .section__head::before {
  content: '';
  position: absolute;
  left: 0;
  top: 6px;
  bottom: 18px;
  width: 4px;
  border-radius: 999px;
  background: var(--wall-rail, linear-gradient(180deg, rgba(145, 99, 39, 0.85), rgba(208, 176, 109, 0.45)));
}

.dashboard-wall-panel .section__title {
  font-family: var(--f-font-display);
  letter-spacing: -0.02em;
}

.dashboard-wall-panel .section__action {
  font-family: var(--f-font-mono);
  font-size: 11px;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: rgba(105, 78, 30, 0.85);
}

/* 品牌色差 — ONE PIECE：暖紅金 */
#dbWallOnepiece {
  --wall-tint: rgba(196, 80, 50, 0.12);
  --wall-rail: linear-gradient(180deg, #b6452a 0%, #d98c5c 100%);
}

#dbWallOnepiece::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 520 240'%3E%3Cpath d='M368 0h152v64c-40 0-76-8-108-23-18-9-30-20-44-41Z' fill='%23e8b8a4' fill-opacity='.55'/%3E%3C/svg%3E");
}

/* 品牌色差 — Pokémon：奶黃 */
#dbWallPokemon {
  --wall-tint: rgba(218, 175, 60, 0.14);
  --wall-rail: linear-gradient(180deg, #c4942a 0%, #e8c46e 100%);
}

#dbWallPokemon::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 520 240'%3E%3Cpath d='M368 0h152v64c-40 0-76-8-108-23-18-9-30-20-44-41Z' fill='%23ecd9a6' fill-opacity='.62'/%3E%3C/svg%3E");
}

.dashboard-showcase__head {
  display: grid;
  gap: 10px;
  position: relative;
  z-index: 1;
}

.dashboard-showcase__wall-title {
  margin: 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-size: clamp(30px, 4.2vw, 50px);
  font-weight: 600;
  line-height: 0.94;
  letter-spacing: -0.05em;
  text-shadow: 0 1px 0 rgba(255,255,255,0.5);
}

/* ============================================================
   Dashboard · Today Spotlight headline + subtitle 造型
   ============================================================ */

/* Eyebrow 升級 — 加上 spotlight icon、橫線、日期戳 */
.dashboard-showcase__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: rgba(135, 70, 28, 0.95);
  font-family: var(--f-font-mono);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
}

.db-eyebrow-icon {
  width: 16px;
  height: 16px;
  color: rgba(145, 99, 39, 0.95);
  animation: dbSpotPulse 2.6s ease-in-out infinite;
  transform-origin: center;
}

@keyframes dbSpotPulse {
  0%, 100% { transform: scale(1); opacity: .9; }
  50%      { transform: scale(1.12); opacity: 1; }
}

.db-eyebrow-rule {
  width: 28px;
  height: 1px;
  background: linear-gradient(90deg, rgba(145, 99, 39, 0.6), rgba(145, 99, 39, 0));
}

.db-eyebrow-date {
  letter-spacing: 0.16em;
  color: rgba(105, 78, 30, 0.66);
  font-weight: 500;
}

/* Headline — 「這張卡」 + 有故事(放大主角) + starburst + handdrawn underline */
.db-headline {
  display: flex;
  align-items: flex-end;
  gap: 14px;
  flex-wrap: wrap;
  position: relative;
  margin-top: 6px !important;
  letter-spacing: -0.045em !important;
  line-height: 0.92 !important;
}

.db-headline__lead {
  display: inline-flex;
  align-items: baseline;
  font-family: var(--f-font-display);
  font-style: italic;
  font-weight: 400;
  font-size: clamp(20px, 2.2vw, 28px);
  letter-spacing: 0;
  color: rgba(70, 48, 16, 0.6);
  margin-bottom: 8px;
}

.db-headline__bracket {
  font-family: var(--f-font-display);
  font-style: normal;
  font-weight: 400;
  color: rgba(145, 99, 39, 0.55);
  font-size: 1.1em;
  line-height: 1;
  margin: 0 -1px;
}

.db-headline__main {
  position: relative;
  display: inline-block;
  font-family: var(--f-font-display);
  font-weight: 600;
  font-size: clamp(40px, 5.2vw, 64px);
  line-height: 0.95;
  color: var(--f-ink-1);
  padding: 0 8px 8px 4px;
}

.db-headline__word {
  position: relative;
  z-index: 1;
  background: linear-gradient(180deg, #2a1f15 0%, #1a140f 100%);
  -webkit-background-clip: text;
          background-clip: text;
  -webkit-text-fill-color: transparent;
}

/* Hand-drawn underline marker — wavy SVG */
.db-headline__underline {
  position: absolute;
  left: 0;
  right: 8px;
  bottom: -2px;
  width: calc(100% - 8px);
  height: 14px;
  color: rgba(196, 80, 50, 0.72);
  pointer-events: none;
  animation: dbUnderlineDraw 1.2s ease-out 0.2s both;
}

@keyframes dbUnderlineDraw {
  from { stroke-dashoffset: 320; opacity: 0; }
  to   { stroke-dashoffset: 0;   opacity: 1; }
}

.db-headline__underline path {
  stroke-dasharray: 320;
  stroke-dashoffset: 0;
}

/* Starburst floating top-right of "有故事" */
.db-headline__star {
  position: absolute;
  width: 32px;
  height: 32px;
  top: -10px;
  right: -22px;
  color: #c4942a;
  filter: drop-shadow(0 2px 4px rgba(145, 99, 39, 0.35));
  animation: dbStarSpin 8s linear infinite;
  transform-origin: center;
}

@keyframes dbStarSpin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

/* === Subtitle 改造 === */
.db-subline {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin-top: 14px !important;
  padding: 10px 16px 10px 14px;
  border-left: 3px solid rgba(145, 99, 39, 0.55);
  background:
    linear-gradient(90deg, rgba(245, 220, 150, 0.18) 0%, rgba(245, 220, 150, 0) 60%);
  border-radius: 0 12px 12px 0;
  max-width: 56ch !important;
  font-family: var(--f-font-display) !important;
  font-style: italic;
  font-weight: 400;
  font-size: clamp(15px, 1.6vw, 18px) !important;
  line-height: 1.55 !important;
  color: var(--f-ink-2) !important;
}

.db-subline__cup {
  flex-shrink: 0;
  width: 26px;
  height: 26px;
  margin-top: 1px;
  color: rgba(135, 70, 28, 0.78);
  filter: drop-shadow(0 1px 1px rgba(145, 99, 39, 0.18));
}

.db-subline__text {
  flex: 1;
  min-width: 0;
}

.db-subline__accent {
  position: relative;
  display: inline-block;
  font-style: italic;
  font-weight: 600;
  color: rgba(135, 70, 28, 0.96);
  padding: 0 3px;
  z-index: 0;
}

.db-subline__accent::before {
  content: '';
  position: absolute;
  left: -2px;
  right: -2px;
  bottom: 2px;
  height: 36%;
  background: linear-gradient(90deg, rgba(245, 200, 120, 0.78), rgba(245, 200, 120, 0));
  transform: skewX(-6deg);
  z-index: -1;
  border-radius: 2px;
}

.db-subline__sig {
  flex-shrink: 0;
  align-self: center;
  font-family: var(--f-font-mono);
  font-style: normal;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(105, 78, 30, 0.55);
  white-space: nowrap;
}

/* RWD */
@media (max-width: 720px) {
  .db-headline { gap: 6px; }
  .db-headline__star { width: 22px; height: 22px; top: -4px; right: -14px; }
  .db-subline__sig { display: none; }
  .db-subline { padding: 10px 12px; }
}

.dashboard-showcase__duo {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  margin-top: 18px;
  position: relative;
  z-index: 1;
}

.dashboard-spotlight-card {
  position: relative;
  padding: 16px;
  border: 1px solid rgba(23, 18, 13, 0.08);
  border-radius: 28px;
  background: linear-gradient(180deg, rgba(255,255,255,0.82), rgba(247,241,232,0.96));
  box-shadow: var(--f-shadow-2);
  overflow: hidden;
  cursor: pointer;
  transform: rotate(-0.8deg);
}

.dashboard-spotlight-card::before {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(255,255,255,0.14), transparent 42%);
}

.dashboard-spotlight-card::after {
  content: '';
  position: absolute;
  inset: auto 18px 16px auto;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(179,91,51,0.18), rgba(179,91,51,0.02));
  pointer-events: none;
}

.dashboard-spotlight-card.is-onepiece {
  background: linear-gradient(180deg, rgba(255,255,255,0.82), rgba(247,239,230,0.96));
  transform: rotate(-1.6deg);
}

.dashboard-spotlight-card.is-pokemon {
  background: linear-gradient(180deg, rgba(255,255,255,0.82), rgba(243,241,233,0.96));
  transform: rotate(1.2deg);
}

.dashboard-spotlight-card.is-onepiece .dashboard-spotlight-card__badge {
  background: rgba(245, 227, 194, 0.92);
}

.dashboard-spotlight-card.is-pokemon .dashboard-spotlight-card__badge {
  background: rgba(229, 236, 255, 0.9);
}

.dashboard-spotlight-card__tape {
  position: absolute;
  top: 14px;
  width: 74px;
  height: 18px;
  border-radius: 999px;
  background: rgba(235, 210, 184, 0.7);
  backdrop-filter: blur(2px);
  transform: rotate(-10deg);
}

.dashboard-spotlight-card__tape--left {
  left: 18px;
}

.dashboard-spotlight-card__tape--right {
  right: 18px;
  transform: rotate(12deg);
}

.dashboard-spotlight-card__body {
  display: grid;
  grid-template-columns: 172px minmax(0, 1fr);
  gap: 14px;
  align-items: center;
  position: relative;
  z-index: 1;
}

.dashboard-spotlight-card__media {
  position: relative;
  min-height: 240px;
}

.dashboard-spotlight-card__mat {
  position: absolute;
  inset: 12px;
  border-radius: 26px;
  background: linear-gradient(180deg, rgba(255,255,255,0.74), rgba(239,230,217,0.88));
  transform: rotate(-5deg);
}

.dashboard-spotlight-card__media img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 24px;
  box-shadow: 0 28px 60px rgba(20, 15, 11, 0.18);
}

.dashboard-spotlight-card__badge {
  position: absolute;
  left: 14px;
  bottom: 14px;
  display: inline-flex;
  align-items: center;
  padding: 6px 10px;
  border-radius: 999px;
  background: rgba(255,255,255,0.86);
  color: var(--f-ink-1);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.dashboard-spotlight-card__copy {
  display: grid;
  gap: 12px;
}

.dashboard-spotlight-card__title {
  margin: 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-size: clamp(22px, 2.6vw, 30px);
  font-weight: 600;
  line-height: 0.96;
  letter-spacing: -0.05em;
}

.dashboard-spotlight-card__story {
  display: grid;
  gap: 8px;
}

.dashboard-spotlight-card__story-tag {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  padding: 6px 10px;
  border-radius: 999px;
  background: rgba(23, 18, 13, 0.08);
  color: var(--f-accent);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  box-shadow: inset 0 0 0 1px rgba(23, 18, 13, 0.06);
}

.dashboard-spotlight-card__storyline {
  max-width: 24ch;
  margin: 0;
  color: var(--f-ink-2);
  font-size: 13px;
  line-height: var(--f-leading-base);
  text-wrap: balance;
}

.dashboard-showcase__capsules {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.dashboard-showcase__eyebrow {
  color: var(--f-accent);
  font-size: var(--f-text-xs);
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.dashboard-showcase__posterline {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.dashboard-showcase__code,
.dashboard-showcase__cond {
  display: inline-flex;
  align-items: center;
  padding: 6px 10px;
  border-radius: 999px;
  background: rgba(23, 18, 13, 0.06);
  color: var(--f-ink-2);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.dashboard-showcase__sub {
  max-width: 44ch;
  margin: 0;
  color: var(--f-ink-2);
  font-size: clamp(14px, 1.6vw, 16px);
  line-height: var(--f-leading-base);
}

.dashboard-showcase__stats {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
.dashboard-showcase__cta {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

.dashboard-showcase__strip {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
  margin-top: 16px;
}

.dashboard-poster-lane {
  display: flex;
  align-items: flex-end;
  gap: 10px;
  min-height: 110px;
  overflow: hidden;
  padding: 6px 2px;
}

.dashboard-poster-lane.is-pokemon {
  justify-content: flex-end;
}

.dashboard-poster-float {
  width: 72px;
  min-width: 72px;
  height: 96px;
  padding: 0;
  border: 1px solid rgba(23, 18, 13, 0.08);
  border-radius: 14px;
  background: rgba(255,255,255,0.56);
  box-shadow: 0 12px 26px rgba(20, 15, 11, 0.10);
  overflow: hidden;
  transition: transform var(--f-dur-fast) var(--f-ease), box-shadow var(--f-dur-fast) var(--f-ease), border-color var(--f-dur-fast) var(--f-ease);
}

.dashboard-poster-float.is-0 {
  transform: translateY(6px) rotate(-3deg);
}

.dashboard-poster-float.is-1 {
  transform: translateY(-2px) rotate(2deg);
}

.dashboard-poster-float.is-2 {
  transform: translateY(8px) rotate(-1.5deg);
}

.dashboard-poster-float.is-3 {
  transform: translateY(0) rotate(2.5deg);
}

.dashboard-poster-float.is-4 {
  transform: translateY(10px) rotate(-2deg);
}

.dashboard-poster-float:hover {
  transform: translateY(-4px) rotate(0deg);
  box-shadow: 0 18px 30px rgba(20, 15, 11, 0.16);
  border-color: var(--f-line-strong);
}

.dashboard-poster-float__img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 14px;
}

.dashboard-wall-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.dashboard-wall-card {
  position: relative;
  display: block;
  overflow: hidden;
  min-height: 240px;
  border: 1px solid var(--f-line);
  border-radius: 22px;
  background: #fffaf2;
  box-shadow: var(--f-shadow-1);
  text-align: left;
  transform: rotate(-1.2deg);
  transition: transform var(--f-dur-fast) var(--f-ease), box-shadow var(--f-dur-fast) var(--f-ease);
  padding: 0;
}

.dashboard-wall-card.is-1,
.dashboard-wall-card.is-4 {
  transform: rotate(1.4deg);
}

.dashboard-wall-card.is-2,
.dashboard-wall-card.is-5 {
  transform: rotate(-2deg);
}

.dashboard-wall-card:hover,
.dashboard-wall-card.is-1:hover,
.dashboard-wall-card.is-2:hover,
.dashboard-wall-card.is-3:hover,
.dashboard-wall-card.is-4:hover,
.dashboard-wall-card.is-5:hover {
  transform: rotate(0deg) translateY(-2px);
  box-shadow: var(--f-shadow-hover);
}

.dashboard-wall-card__img {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 240px;
  object-fit: cover;
}

.dashboard-wall-card__overlay {
  position: absolute;
  top: 12px;
  left: 12px;
  right: 12px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.dashboard-wall-card__rank,
.dashboard-wall-card__meta {
  display: inline-flex;
  align-items: center;
  padding: 5px 8px;
  border-radius: 999px;
  background: rgba(255, 250, 242, 0.9);
  color: var(--f-ink-1);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.dashboard-wall-card__copy {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  display: grid;
  gap: 4px;
  padding: 16px 16px 18px;
  background: linear-gradient(180deg, transparent, rgba(20, 15, 11, 0.78));
}

.dashboard-wall-card__copy strong {
  color: #fff;
  font-size: var(--f-text-sm);
  font-weight: 700;
  line-height: var(--f-leading-snug);
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
}

.dashboard-wall-card__copy span {
  color: rgba(255,255,255,0.82);
  font-size: var(--f-text-xs);
  font-weight: 700;
}

/* ============================================================
   Dashboard · AURORA Study Log (Recent Research)
   研究檔案 / 索引卡風格 — 取代舊的 ribbon chip 列表
   ============================================================ */

.studylog {
  padding: clamp(20px, 2.4vw, 32px) clamp(20px, 2.4vw, 36px) clamp(24px, 2.6vw, 36px);
  /* 主題對齊：以 feature-card 的乾淨米白基底為主，只加極淡的紙質暖度 */
  background:
    radial-gradient(circle at 6% 0%, rgba(180, 140, 70, 0.06), transparent 36%),
    radial-gradient(circle at 96% 100%, rgba(180, 140, 70, 0.05), transparent 42%),
    linear-gradient(180deg, rgba(255, 255, 255, 0.78), rgba(251, 248, 242, 0.98));
}

.studylog::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  /* 28px 橫線改成更淡，避免和主題反差 */
  background-image:
    repeating-linear-gradient(0deg, rgba(120, 89, 37, 0.030) 0 1px, transparent 1px 28px);
  mix-blend-mode: multiply;
  opacity: .42;
}

.studylog > * { position: relative; z-index: 1; }

.studylog__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
  padding-bottom: 18px;
  margin-bottom: 22px;
  border-bottom: 1px dashed rgba(120, 89, 37, 0.32);
}

.studylog__head-text { display: grid; gap: 6px; min-width: 0; }

.studylog__eyebrow {
  font-family: var(--f-font-mono);
  font-size: 11px;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: rgba(105, 78, 30, 0.78);
}

.studylog__title {
  margin: 0;
  font-family: var(--f-font-display);
  font-size: clamp(28px, 3.4vw, 42px);
  font-weight: 600;
  letter-spacing: -0.04em;
  line-height: 0.96;
  color: var(--f-ink-1);
}

.studylog__title em {
  font-style: italic;
  font-weight: 400;
  color: rgba(145, 99, 39, 0.9);
  position: relative;
  padding-right: 4px;
}

.studylog__title em::after {
  content: '';
  position: absolute;
  left: 2px; right: 6px; bottom: 2px;
  height: 6px;
  background: linear-gradient(90deg, rgba(208, 176, 109, 0.55), rgba(208, 176, 109, 0));
  z-index: -1;
}

.studylog__sub {
  margin: 0;
  font-family: var(--f-font-body, var(--f-font-ui));
  font-size: var(--f-text-sm);
  color: var(--f-ink-3);
}

.studylog__head-meta {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-shrink: 0;
}

.studylog__counter {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  padding: 8px 14px;
  background: rgba(20, 15, 10, 0.92);
  color: #f3e9d3;
  border-radius: 999px;
  font-family: var(--f-font-mono);
  letter-spacing: 0.12em;
  box-shadow: 0 4px 14px rgba(20, 15, 10, 0.18);
}

.studylog__counter > span {
  font-size: 18px;
  font-weight: 700;
}

.studylog__counter small {
  font-size: 10px;
  opacity: 0.72;
}

.studylog__cta {
  font-family: var(--f-font-mono);
  letter-spacing: 0.06em;
}

/* === Grid of notes (no horizontal scroll cropping) === */

.studylog__grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 14px;
  counter-reset: studynote;
}

@media (max-width: 1280px) { .studylog__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 760px)  { .studylog__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } }
@media (max-width: 460px)  { .studylog__grid { grid-template-columns: 1fr; } }

/* === Single note card === */

.studynote {
  --tilt: 0deg;
  position: relative;
  display: block;
  min-height: 232px;
}

.studynote__btn {
  position: relative;
  display: grid;
  grid-template-rows: auto 1fr auto;
  width: 100%;
  height: 100%;
  min-height: inherit;
  padding: 16px 14px 14px;
  text-align: left;
  cursor: pointer;
  background:
    linear-gradient(180deg, #fffdf6 0%, #f6efe0 100%);
  border: 1px solid rgba(120, 89, 37, 0.16);
  border-radius: 4px 14px 4px 14px;
  box-shadow:
    0 1px 0 rgba(255,255,255,0.6) inset,
    0 8px 18px rgba(70, 48, 16, 0.10),
    0 1px 2px rgba(70, 48, 16, 0.08);
  transform: rotate(var(--tilt));
  transition: transform 320ms cubic-bezier(.2,.8,.2,1), box-shadow 320ms ease, border-color 320ms ease;
  isolation: isolate;
  overflow: hidden;
}

/* Aged paper texture */
.studynote__btn::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(ellipse at 12% 8%, rgba(120, 89, 37, 0.10), transparent 40%),
    radial-gradient(ellipse at 90% 92%, rgba(120, 89, 37, 0.08), transparent 50%);
  pointer-events: none;
  z-index: 0;
}

/* Punched hole top-left like a pinned card */
.studynote__btn::after {
  content: '';
  position: absolute;
  top: 10px; left: 10px;
  width: 7px; height: 7px;
  border-radius: 50%;
  background: rgba(70, 48, 16, 0.18);
  box-shadow: inset 0 1px 1px rgba(0,0,0,0.25);
  z-index: 2;
}

.studynote__btn > * { position: relative; z-index: 1; }

.studynote__btn:hover,
.studynote__btn:focus-visible {
  transform: rotate(0deg) translateY(-3px);
  box-shadow:
    0 1px 0 rgba(255,255,255,0.7) inset,
    0 16px 28px rgba(70, 48, 16, 0.16),
    0 2px 4px rgba(70, 48, 16, 0.10);
  border-color: rgba(145, 99, 39, 0.55);
  outline: none;
}

.studynote__btn:hover .studynote__more,
.studynote__btn:focus-visible .studynote__more { opacity: 1; transform: translateX(0); }
.studynote__btn:hover .studynote__seq,
.studynote__btn:focus-visible .studynote__seq { color: rgba(145, 99, 39, 0.92); }

/* Big editorial sequence numeral */
.studynote__seq {
  display: flex;
  align-items: baseline;
  gap: 2px;
  font-family: var(--f-font-display);
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0.04em;
  color: rgba(70, 48, 16, 0.42);
  transition: color 240ms ease;
  margin-left: 22px;  /* avoid hole punch */
  margin-bottom: 8px;
}

.studynote__seq-deg {
  font-style: italic;
  font-size: 11px;
  vertical-align: super;
  margin-right: 6px;
  text-decoration: underline;
  text-underline-offset: 2px;
}

.studynote__seq-num {
  font-family: var(--f-font-display);
  font-size: clamp(28px, 2.4vw, 36px);
  font-weight: 600;
  letter-spacing: -0.04em;
  color: var(--f-ink-1);
  line-height: 1;
}

/* Photo slot — card thumb feels like a stuck photograph */
.studynote__photo {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: flex-end;
  padding: 8px 6px 14px;
  margin: 0 -2px 12px;
}

.studynote__tape {
  position: absolute;
  top: -2px;
  left: 50%;
  width: 56px;
  height: 14px;
  transform: translateX(-50%) rotate(-2deg);
  background:
    linear-gradient(180deg, rgba(245, 220, 150, 0.85), rgba(225, 195, 115, 0.82));
  border-left: 1px dashed rgba(255,255,255,0.55);
  border-right: 1px dashed rgba(255,255,255,0.55);
  box-shadow: 0 2px 4px rgba(70, 48, 16, 0.18);
  z-index: 3;
  border-radius: 1px;
}

.studynote__img {
  width: 100%;
  max-width: 110px;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  background: #efe3c8;
  border-radius: 2px;
  box-shadow:
    0 1px 0 rgba(255,255,255,0.7) inset,
    0 6px 12px rgba(70, 48, 16, 0.22),
    0 2px 3px rgba(70, 48, 16, 0.12);
  transform: rotate(calc(var(--tilt) * -0.6));
  transition: transform 320ms cubic-bezier(.2,.8,.2,1);
}

.studynote__img--blank {
  display: block;
  background:
    repeating-linear-gradient(45deg, rgba(120, 89, 37, 0.10) 0 6px, transparent 6px 12px),
    #efe3c8;
}

.studynote__btn:hover .studynote__img { transform: rotate(0deg) scale(1.02); }

/* Body */
.studynote__body { display: grid; gap: 6px; min-width: 0; }

.studynote__kicker {
  font-family: var(--f-font-mono);
  font-size: 9.5px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(105, 78, 30, 0.82);
}

.studynote__title {
  font-family: var(--f-font-display);
  font-size: 15px;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: -0.01em;
  color: var(--f-ink-1);
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
  word-break: break-word;
}

.studynote__meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-top: 2px;
  padding-top: 8px;
  border-top: 1px dashed rgba(120, 89, 37, 0.28);
}

.studynote__code {
  font-family: var(--f-font-mono);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.06em;
  padding: 3px 7px;
  background: rgba(20, 15, 10, 0.88);
  color: #f3e9d3;
  border-radius: 3px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 60%;
}

.studynote__more {
  font-family: var(--f-font-mono);
  font-size: 10px;
  letter-spacing: 0.08em;
  color: rgba(145, 99, 39, 0.95);
  opacity: 0;
  transform: translateX(-4px);
  transition: opacity 240ms ease, transform 240ms ease;
  white-space: nowrap;
}

/* === Empty state === */

.studylog__empty {
  display: grid;
  justify-items: center;
  gap: 10px;
  padding: 36px 16px;
  text-align: center;
  font-family: var(--f-font-body, var(--f-font-ui));
  color: var(--f-ink-3);
}

.studylog__empty-mark {
  font-family: var(--f-font-display);
  font-size: 56px;
  line-height: 1;
  color: rgba(120, 89, 37, 0.42);
}

.studylog__empty p { margin: 0; font-size: var(--f-text-sm); line-height: 1.6; }

/* === Skeleton placeholder before data lands === */

.studylog__skeleton {
  height: 232px;
  border-radius: 6px;
  background:
    linear-gradient(110deg, rgba(255,250,240,0) 30%, rgba(255,250,240,0.55) 50%, rgba(255,250,240,0) 70%),
    linear-gradient(180deg, rgba(255,250,240,0.6), rgba(247,238,217,0.6));
  background-size: 200% 100%, 100% 100%;
  animation: studylogShimmer 1.6s infinite linear;
}

@keyframes studylogShimmer {
  from { background-position: -150% 0, 0 0; }
  to   { background-position: 150% 0, 0 0; }
}

.arb-shell,
.arb-results-shell {
  display: grid;
  gap: 18px;
}

.arb-shell {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

.arb-shell::before,
.arb-results-shell::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
}

.arb-shell::before {
  background:
    linear-gradient(135deg, rgba(179, 91, 51, 0.06), transparent 46%),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 760 260'%3E%3Cpath d='M542 0h218v92c-60 0-112-11-154-30-24-11-40-28-64-62Z' fill='%23eadbc6' fill-opacity='.82'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center, top right;
  background-size: cover, 220px auto;
}

.arb-shell__top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}

.arb-control-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px 14px;
}

.arb-preview-card {
  display: grid;
  gap: 10px;
  padding: 14px;
  border: 1px solid var(--f-line);
  border-radius: 18px;
  background: rgba(255,255,255,0.5);
  text-align: left;
}

.arb-preview-card__thumb {
  width: 100%;
  aspect-ratio: 4 / 5;
  border-radius: 12px;
  object-fit: cover;
  background: var(--f-surface-3);
}

.arb-preview-card__copy {
  display: grid;
  gap: 4px;
}

.arb-preview-card__copy strong {
  color: var(--f-ink-1);
  font-size: var(--f-text-sm);
  font-weight: 700;
  line-height: var(--f-leading-snug);
}

.arb-preview-card__copy small {
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
}

.arb-results-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.arb-result-card {
  display: grid;
  gap: 12px;
  cursor: pointer;
  transition: transform var(--f-dur-fast) var(--f-ease), box-shadow var(--f-dur-fast) var(--f-ease);
}

.arb-result-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--f-shadow-hover);
}

.arb-result-card__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.arb-result-card__media {
  aspect-ratio: 4 / 5;
  border-radius: 16px;
  overflow: hidden;
  background: var(--f-surface-3);
}

.arb-result-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.arb-result-card__body {
  display: grid;
  gap: 10px;
}

.arb-result-card__title {
  margin: 0;
  color: var(--f-ink-1);
  font-size: var(--f-text-base);
  font-weight: 700;
  line-height: var(--f-leading-snug);
}

.arb-result-card__sub {
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
}

.arb-result-card__bridge {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.arb-result-card__bridge > div {
  display: grid;
  gap: 4px;
  padding: 10px 12px;
  border: 1px solid var(--f-line);
  border-radius: 14px;
  background: rgba(255,255,255,0.46);
}

.arb-result-card__bridge span {
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.arb-result-card__bridge strong {
  color: var(--f-ink-1);
  font-family: var(--f-font-num);
  font-size: var(--f-text-sm);
  font-weight: 700;
}

.arb-result-card__stats,
.arb-result-card__quality,
.arb-result-card__actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.dashboard-quick-tile {
  display: grid;
  gap: 6px;
  padding: 16px;
  border: 1px solid var(--f-line);
  border-radius: 18px;
  background: rgba(255,255,255,0.48);
  text-align: left;
  transition: transform var(--f-dur-fast) var(--f-ease), border-color var(--f-dur-fast) var(--f-ease), background var(--f-dur-fast) var(--f-ease);
}

.dashboard-quick-tile:hover {
  transform: translateY(-1px);
  border-color: var(--f-line-strong);
  background: rgba(255,255,255,0.72);
}

.dashboard-quick-tile strong {
  color: var(--f-ink-1);
  font-size: var(--f-text-base);
  font-weight: 700;
}

.dashboard-quick-tile span {
  color: var(--f-ink-3);
  font-size: var(--f-text-sm);
}

/* ============================================================
   Market · AURORA V2 editorial workspace  [redesigned]
   ============================================================ */

/* —— Page Head —— */
.market-page-head .page-head__row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 24px;
  align-items: center;
}
.market-page-head__copy { display: grid; gap: 12px; max-width: 720px; }
.market-page-head__eyebrow {
  display: inline-flex; align-items: center; gap: 10px;
  font-family: var(--f-font-mono);
  font-size: 11px; font-weight: 700; letter-spacing: 0.30em;
  text-transform: uppercase; color: rgba(135, 70, 28, 0.92);
}
.market-page-head__dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: rgba(180, 80, 30, 0.85);
  box-shadow: 0 0 0 4px rgba(180, 80, 30, 0.18);
  animation: marketDotPulse 1.6s ease-in-out infinite;
}
@keyframes marketDotPulse {
  0%, 100% { box-shadow: 0 0 0 4px rgba(180, 80, 30, 0.18); }
  50%      { box-shadow: 0 0 0 8px rgba(180, 80, 30, 0.06); }
}
.market-page-head__title {
  margin: 0;
  font-family: var(--f-font-display);
  font-weight: 600;
  font-size: clamp(48px, 7vw, 88px);
  line-height: 0.94;
  letter-spacing: -0.05em;
  color: var(--f-ink-1);
  display: flex; align-items: baseline; gap: 18px; flex-wrap: wrap;
}
.market-page-head__title-em {
  font-family: var(--f-font-display);
  font-style: italic; font-weight: 400;
  font-size: 0.42em; color: rgba(145, 99, 39, 0.78);
  letter-spacing: -0.01em; position: relative;
}
.market-page-head__title-em::after {
  content: ''; position: absolute;
  left: 0; right: 8px; bottom: 4px; height: 0.32em;
  background: linear-gradient(90deg, rgba(245, 200, 120, 0.55), rgba(245, 200, 120, 0));
  z-index: -1;
}
.market-page-head__sub {
  margin: 0; max-width: 56ch;
  color: var(--f-ink-2); font-size: 15px; line-height: 1.65;
}
.market-page-head__deco {
  width: clamp(120px, 14vw, 170px); height: clamp(120px, 14vw, 170px);
  color: rgba(145, 99, 39, 0.62);
}
.market-page-head__deco svg { width: 100%; height: 100%; display: block; }

@media (max-width: 720px) {
  .market-page-head .page-head__row { grid-template-columns: 1fr; }
  .market-page-head__deco { display: none; }
}

/* —— Brand toggle：書本翻頁式雙向不對稱 pill —— */
.market-brand-toggle {
  margin-top: 18px;
  display: flex;
  gap: 0;  /* 兩顆貼合，靠 clip-path 形成 V 型分隔 */
  max-width: 600px;
}
.market-brand-btn {
  flex: 1;
  display: flex; align-items: center; gap: 12px;
  padding: 14px 20px;
  border: 1.5px solid rgba(120, 89, 37, 0.22);
  background: rgba(255, 255, 255, 0.66);
  text-align: left; cursor: pointer;
  transition: transform 160ms ease, border-color 160ms ease, background 160ms ease;
}
.market-brand-toggle .market-brand-btn:first-child {
  /* 左半邊：右側內凹斜邊 */
  clip-path: polygon(0 0, calc(100% - 16px) 0, 100% 100%, 0 100%);
  border-radius: 22px 0 0 22px;
  padding-right: 32px;
}
.market-brand-toggle .market-brand-btn:last-child {
  /* 右半邊：左側內凹斜邊，與左半貼合 */
  clip-path: polygon(16px 0, 100% 0, 100% 100%, 0 100%);
  border-radius: 0 22px 22px 0;
  padding-left: 32px;
  margin-left: -10px;
}
.market-brand-btn:hover { transform: translateY(-1px); border-color: rgba(145, 99, 39, 0.55); background: #fff; }
.market-brand-btn.is-active {
  background: linear-gradient(180deg, #1a140f, #0d0a07);
  border-color: rgba(218, 184, 106, 0.85);
  color: #f7e9c5;
  box-shadow: 0 6px 18px rgba(20, 15, 10, 0.22);
}
.market-brand-btn__crest {
  display: grid; place-items: center;
  width: 38px; height: 38px;
  border-radius: 50%;
  background: rgba(255, 245, 220, 0.82);
  flex-shrink: 0;
}
.market-brand-btn__crest svg { width: 22px; height: 22px; }
.market-brand-btn__crest.is-onepiece { color: #b6452a; }
.market-brand-btn__crest.is-pokemon { color: #c4942a; }
.market-brand-btn.is-active .market-brand-btn__crest { background: rgba(218, 184, 106, 0.18); }
.market-brand-btn__copy { display: grid; gap: 1px; min-width: 0; }
.market-brand-btn__label {
  font-family: var(--f-font-mono);
  font-size: 13px; font-weight: 700; letter-spacing: 0.16em;
}
.market-brand-btn__sub {
  font-family: var(--f-font-display);
  font-size: 12px; color: rgba(135, 70, 28, 0.75);
}
.market-brand-btn.is-active .market-brand-btn__sub { color: rgba(247, 233, 197, 0.65); }

/* —— KPI grid (matches portfolio kpi) —— */
.market-kpi-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
  margin-top: 18px;
}
@media (max-width: 980px) { .market-kpi-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .market-kpi-grid { grid-template-columns: 1fr; } }

.market-kpi {
  position: relative;
  display: grid; gap: 8px;
  padding: 18px 18px 16px;
  border-radius: 14px;
  border: 1px solid rgba(120, 89, 37, 0.18);
  background:
    radial-gradient(circle at 100% 0%, rgba(218, 184, 106, 0.10), transparent 38%),
    linear-gradient(180deg, #fffdf6 0%, #f6efe0 100%);
  box-shadow: 0 1px 0 rgba(255,255,255,0.7) inset, 0 6px 14px rgba(70, 48, 16, 0.06);
  overflow: hidden;
  isolation: isolate;
  transition: transform 200ms ease, box-shadow 200ms ease;
}
.market-kpi:hover {
  transform: translateY(-2px);
  box-shadow: 0 1px 0 rgba(255,255,255,0.7) inset, 0 14px 26px rgba(70, 48, 16, 0.12);
}

/* —— 每張 KPI 用不同的圓角 + 切角，避免四個方塊感 —— */
.market-kpi:nth-child(1) {
  border-radius: 22px 6px 22px 6px;  /* 對角線圓 */
}
.market-kpi:nth-child(2) {
  border-radius: 6px 22px 6px 22px;  /* 反向對角圓 */
}
.market-kpi:nth-child(3) {
  border-radius: 22px 22px 6px 22px;  /* 缺右下 */
}
.market-kpi:nth-child(4) {
  border-radius: 22px 22px 22px 6px;  /* 缺左下 */
}
.market-kpi:hover .market-kpi__bg-icon { transform: rotate(6deg) scale(1.08); opacity: 0.15; }
.market-kpi:hover .market-kpi__spark { opacity: .55; }

/* 角落 radial 光暈 */
.market-kpi::after {
  content: '';
  position: absolute;
  right: -20px; bottom: -20px;
  width: 120px; height: 120px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(218, 184, 106, 0.18), transparent 70%);
  z-index: 0;
  pointer-events: none;
}
.market-kpi--up::after   { background: radial-gradient(circle, rgba(70, 130, 80, 0.22), transparent 70%); }
.market-kpi--down::after { background: radial-gradient(circle, rgba(180, 70, 50, 0.20), transparent 70%); }
.market-kpi--hot::after  { background: radial-gradient(circle, rgba(229, 130, 60, 0.28), transparent 70%); }
.market-kpi > * { position: relative; z-index: 1; }

/* —— 大張剪影 icon —— */
.market-kpi__bg-icon {
  position: absolute;
  top: -10px; right: -12px;
  width: 120px; height: 120px;
  z-index: 0;
  opacity: 0.10;
  pointer-events: none;
  transform: rotate(0deg);
  transition: transform 380ms cubic-bezier(.2,.8,.2,1), opacity 220ms ease;
  color: rgba(135, 70, 28, 0.95);
}
.market-kpi__bg-icon svg { width: 100%; height: 100%; }
.market-kpi--up   .market-kpi__bg-icon { color: #2c6b3c; opacity: 0.13; }
.market-kpi--down .market-kpi__bg-icon { color: #a13a26; opacity: 0.13; }
.market-kpi--hot  .market-kpi__bg-icon { color: #b6452a; opacity: 0.14; }

/* —— Sparkline 底部裝飾 —— */
.market-kpi__spark {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 36px;
  pointer-events: none;
  opacity: .42;
  transition: opacity 220ms ease;
  color: rgba(135, 70, 28, 0.85);
}
.market-kpi__spark svg { width: 100%; height: 100%; display: block; }
.market-kpi--up   .market-kpi__spark { color: #2c6b3c; }
.market-kpi--down .market-kpi__spark { color: #a13a26; }
.market-kpi--hot  .market-kpi__spark { color: #b6452a; }
.market-kpi--up   { background: radial-gradient(circle at 100% 0%, rgba(70, 130, 80, 0.12), transparent 40%), linear-gradient(180deg, #f6f9ed 0%, #e8efd4 100%); }
.market-kpi--down { background: radial-gradient(circle at 100% 0%, rgba(180, 70, 50, 0.12), transparent 40%), linear-gradient(180deg, #fbf0ea 0%, #f0d9cc 100%); }
.market-kpi--hot  { background: radial-gradient(circle at 100% 0%, rgba(229, 130, 60, 0.16), transparent 42%), linear-gradient(180deg, #fff6e6 0%, #f7e2c4 100%); }

.market-kpi__head { display: flex; align-items: center; gap: 8px; }
.market-kpi__icon { width: 18px; height: 18px; color: rgba(135, 70, 28, 0.85); display: inline-flex; }
.market-kpi__icon svg { width: 100%; height: 100%; }
.market-kpi__kicker {
  font-family: var(--f-font-mono);
  font-size: 9.5px; font-weight: 700;
  letter-spacing: 0.22em; text-transform: uppercase;
  color: rgba(105, 78, 30, 0.78);
}
.market-kpi__value {
  font-family: var(--f-font-display);
  font-size: clamp(26px, 3vw, 36px);
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--f-ink-1);
  line-height: 1.05;
}
.market-kpi__value small {
  font-family: var(--f-font-mono);
  font-size: 12px; font-weight: 700;
  color: var(--f-ink-3); margin-left: 4px;
}
.market-kpi--up .market-kpi__value { color: #2c6b3c; }
.market-kpi--down .market-kpi__value { color: #a13a26; }
.market-kpi--hot .market-kpi__value { color: #b6452a; }
.market-kpi__label {
  font-family: var(--f-font-mono);
  font-size: 11px; font-weight: 700;
  letter-spacing: 0.10em; text-transform: uppercase;
  color: rgba(105, 78, 30, 0.62);
}

/* —— Console / filter panel：不規則切角 + 頂部色帶 —— */
.market-console {
  position: relative;
  padding: clamp(20px, 2.4vw, 28px);
  overflow: hidden;
  isolation: isolate;
  border-radius: 28px 8px 28px 8px;  /* 對角圓角，跟 KPI 第一張呼應 */
}

/* 頂部斜向色條 — 像一條「波浪標示帶」 */
.market-console-ribbon {
  position: absolute;
  top: 0; left: 0; right: 0; height: 28px;
  pointer-events: none;
  z-index: 1;
}
.market-console-ribbon::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0; height: 100%;
  background:
    repeating-linear-gradient(
      -38deg,
      rgba(180, 80, 30, 0.10) 0 6px,
      transparent 6px 14px
    );
  -webkit-mask-image: linear-gradient(180deg, black 0%, transparent 100%);
          mask-image: linear-gradient(180deg, black 0%, transparent 100%);
}
.market-console-ribbon::after {
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: -2px;
  height: 3px;
  background: linear-gradient(90deg, transparent 0%, rgba(218, 184, 106, 0.85) 14%, rgba(180, 80, 30, 0.65) 50%, rgba(218, 184, 106, 0.85) 86%, transparent 100%);
  border-radius: 999px;
}
.market-console__bg {
  position: absolute;
  inset: auto 0 0 0;
  height: 80px;
  z-index: 0;
  pointer-events: none;
  color: rgba(135, 70, 28, 0.55);
  opacity: 0.55;
  mask-image: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.5) 60%, rgba(0,0,0,0.85) 100%);
  -webkit-mask-image: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.5) 60%, rgba(0,0,0,0.85) 100%);
}
.market-console__bg svg { width: 100%; height: 100%; display: block; }
/* 內容層級：bg + 4 corner 是絕對定位裝飾，其餘走文檔流 relative */
.market-console > *:not(.market-console__bg):not(.market-console__corner) { position: relative; z-index: 1; }
.market-console::before {
  content: '';
  position: absolute;
  top: -40px; right: -60px;
  width: 240px; height: 240px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(218, 184, 106, 0.22), transparent 70%);
  z-index: 0;
  pointer-events: none;
}

/* 四角 camera focus brackets */
.market-console__corner {
  position: absolute;
  width: 22px; height: 22px;
  color: rgba(135, 70, 28, 0.55);
  z-index: 2;
  pointer-events: none;
}
.market-console__corner svg { width: 100%; height: 100%; display: block; }
.market-console__corner--tl { top: 38px; left: 12px; }
.market-console__corner--tr { top: 38px; right: 12px; transform: rotate(90deg); }
.market-console__corner--bl { bottom: 12px; left: 12px; transform: rotate(-90deg); }
.market-console__corner--br { bottom: 12px; right: 12px; transform: rotate(180deg); }

/* LIVE 標籤 */
.market-console__live {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 2px 8px;
  margin-right: 10px;
  border-radius: 999px;
  background: rgba(180, 80, 30, 0.10);
  border: 1px solid rgba(180, 80, 30, 0.32);
  font-family: var(--f-font-mono);
  font-size: 9px; font-weight: 700;
  letter-spacing: 0.22em;
  color: #a13a26;
}
.market-console__live-dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: #a13a26;
  animation: marketLivePulse 1.4s ease-in-out infinite;
}
@keyframes marketLivePulse {
  0%, 100% { opacity: 0.4; box-shadow: 0 0 0 0 rgba(161, 58, 38, 0.5); }
  50%      { opacity: 1;   box-shadow: 0 0 0 5px rgba(161, 58, 38, 0); }
}

/* —— Brand toggle status pill —— */
.market-brand-btn { position: relative; }
.market-brand-btn__status {
  position: absolute;
  top: 8px; right: 10px;
  display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 7px;
  border-radius: 999px;
  background: rgba(180, 80, 30, 0.12);
  border: 1px solid rgba(180, 80, 30, 0.30);
  font-family: var(--f-font-mono);
  font-size: 8px; font-weight: 700;
  letter-spacing: 0.18em;
  color: #a13a26;
  opacity: 0;
  transform: translateY(-2px);
  transition: opacity 220ms ease, transform 220ms ease;
}
.market-brand-btn.is-active .market-brand-btn__status {
  opacity: 1; transform: translateY(0);
  background: rgba(245, 220, 150, 0.20);
  border-color: rgba(218, 184, 106, 0.50);
  color: #f0c75c;
}
.market-brand-btn__status-dot {
  width: 5px; height: 5px; border-radius: 50%;
  background: currentColor;
  animation: marketLivePulse 1.4s ease-in-out infinite;
}
.market-brand-btn__status-text { letter-spacing: 0.18em; }
.market-console__head {
  display: flex; align-items: flex-end; justify-content: space-between;
  gap: 16px; flex-wrap: wrap; margin-bottom: 18px;
  padding-bottom: 14px; border-bottom: 1px dashed rgba(120, 89, 37, 0.28);
}
.market-console__kicker {
  font-family: var(--f-font-mono);
  font-size: 11px; font-weight: 700; letter-spacing: 0.22em;
  text-transform: uppercase; color: rgba(135, 70, 28, 0.85);
}
.market-console__title {
  margin: 4px 0 0;
  font-family: var(--f-font-display);
  font-size: clamp(22px, 2.4vw, 28px);
  font-weight: 600; letter-spacing: -0.02em; color: var(--f-ink-1);
}

/* View toggle (Hot / Discover / Movers) */
.market-view-toggle {
  display: inline-flex; gap: 4px;
  padding: 4px;
  border: 1px solid rgba(120, 89, 37, 0.22);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.6);
}
.market-view-btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 14px;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: rgba(70, 48, 16, 0.62);
  font-family: var(--f-font-ui);
  font-size: 13px; font-weight: 600;
  cursor: pointer;
  transition: background 160ms ease, color 160ms ease;
}
.market-view-btn:hover { color: var(--f-ink-1); background: rgba(255,255,255,0.85); }
.market-view-btn.is-active { background: var(--f-ink-1); color: #f7e9c5; }
.market-view-btn__icon { width: 14px; height: 14px; display: inline-flex; }
.market-view-btn__icon svg { width: 100%; height: 100%; }

/* Filter bar — Pool (寬) / Mode (中) / Page (固定) 三欄不平均，避免 AI 感 */
.market-filterbar {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) auto;
  gap: 18px 22px;
  align-items: end;
  padding-top: 4px;
}
@media (max-width: 940px) {
  .market-filterbar {
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
      'pool pool'
      'mode page';
  }
  .market-filterbar__cell--pool { grid-area: pool; }
  .market-filterbar__cell--mode { grid-area: mode; }
  .market-filterbar__cell--page { grid-area: page; justify-self: end; }
}
@media (max-width: 540px) {
  .market-filterbar { grid-template-columns: 1fr; grid-template-areas: 'pool' 'mode' 'page'; }
  .market-filterbar__cell--page { justify-self: stretch; }
}

.market-filterbar__cell { display: grid; gap: 8px; min-width: 0; }
.market-filterbar__label {
  font-family: var(--f-font-mono);
  font-size: 10px; font-weight: 700;
  letter-spacing: 0.20em; text-transform: uppercase;
  color: rgba(105, 78, 30, 0.72);
  display: flex; align-items: center; gap: 6px;
}
.market-filterbar__label::before {
  content: '';
  width: 14px; height: 1px;
  background: linear-gradient(90deg, rgba(135, 70, 28, 0.65), transparent);
}

/* Pool chips */
.market-pool-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.market-pool-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 14px;
  border: 1px solid rgba(120, 89, 37, 0.22);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.72);
  color: rgba(70, 48, 16, 0.78);
  font-family: var(--f-font-ui);
  font-size: 13px; font-weight: 600;
  cursor: pointer;
  transition: all 160ms ease;
}
.market-pool-chip:hover { border-color: rgba(145, 99, 39, 0.65); color: var(--f-ink-1); }
.market-pool-chip.is-active {
  background: var(--f-ink-1);
  border-color: var(--f-ink-1);
  color: #f7e9c5;
}
.market-pool-chip__icon { width: 14px; height: 14px; display: inline-flex; }
.market-pool-chip__icon svg { width: 100%; height: 100%; }

/* Inline Pager — 可直接在 Hot Filters 翻頁的迷你 console */
.market-inline-pager {
  display: inline-flex; align-items: center;
  gap: 0;
  padding: 4px;
  border: 1.5px solid rgba(120, 89, 37, 0.28);
  border-radius: 999px;
  background: linear-gradient(180deg, rgba(255,255,255,0.92), rgba(248, 240, 222, 0.85));
  box-shadow: 0 1px 0 rgba(255,255,255,0.7) inset, 0 4px 10px rgba(70, 48, 16, 0.07);
}
.market-inline-pager__nav {
  width: 32px; height: 32px;
  display: grid; place-items: center;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: var(--f-ink-2);
  font-family: var(--f-font-display);
  font-size: 22px;
  font-weight: 600;
  line-height: 1;
  cursor: pointer;
  transition: all 160ms ease;
}
.market-inline-pager__nav:hover:not(:disabled) {
  background: var(--f-ink-1);
  color: #f7e9c5;
  transform: scale(1.06);
}
.market-inline-pager__nav:disabled {
  opacity: 0.28;
  cursor: not-allowed;
}
.market-inline-pager__meter {
  display: inline-flex; align-items: baseline;
  gap: 4px;
  padding: 0 14px;
  min-width: 64px;
  justify-content: center;
  font-family: var(--f-font-mono);
}
.market-inline-pager__current {
  font-family: var(--f-font-display);
  font-size: 22px;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--f-ink-1);
  line-height: 1;
  transition: transform 220ms cubic-bezier(.5,1.6,.4,1);
}
.market-inline-pager:hover .market-inline-pager__current { transform: scale(1.08); }
.market-inline-pager__divider {
  font-size: 14px;
  color: rgba(120, 89, 37, 0.45);
  font-weight: 400;
}
.market-inline-pager__max {
  font-size: 12px;
  color: var(--f-ink-3);
  font-weight: 700;
  letter-spacing: 0.06em;
}

/* Sort tabs (Discover) */
.market-sort-tabs {
  display: inline-flex; gap: 4px;
  padding: 4px;
  border: 1px solid rgba(120, 89, 37, 0.22);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.6);
}
.market-sort-btn {
  border: 0;
  padding: 6px 12px;
  border-radius: 999px;
  background: transparent;
  font-family: var(--f-font-ui);
  font-size: 12px; font-weight: 600;
  color: rgba(70, 48, 16, 0.62);
  cursor: pointer;
  transition: all 160ms ease;
}
.market-sort-btn:hover { color: var(--f-ink-1); background: rgba(255,255,255,0.85); }
.market-sort-btn.is-active { background: var(--f-ink-1); color: #f7e9c5; }

/* Mode badge */
.market-mode-badge {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 7px 14px;
  border: 1px solid rgba(218, 184, 106, 0.55);
  border-radius: 999px;
  background: linear-gradient(180deg, rgba(245, 220, 150, 0.32), rgba(245, 220, 150, 0.10));
  font-family: var(--f-font-mono);
  font-size: 11px; font-weight: 700;
  letter-spacing: 0.10em;
  color: rgba(135, 70, 28, 0.95);
}
.market-mode-badge svg { width: 14px; height: 14px; }

/* —— Hot Lead 三張卡 —— */
.market-lead-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}
@media (max-width: 880px) { .market-lead-grid { grid-template-columns: 1fr; } }

.market-lead-card {
  position: relative;
  display: grid;
  grid-template-columns: 132px minmax(0, 1fr);
  gap: 14px;
  align-items: stretch;
  padding: 16px 16px 18px;
  border: 1px solid rgba(120, 89, 37, 0.18);
  border-radius: 16px;
  background: linear-gradient(180deg, #fffdf6 0%, #f5efe2 100%);
  box-shadow: 0 1px 0 rgba(255,255,255,0.7) inset, 0 6px 14px rgba(70, 48, 16, 0.07);
  cursor: pointer;
  overflow: hidden;
  isolation: isolate;
  transition: transform 220ms cubic-bezier(.2,.8,.2,1), box-shadow 220ms ease, border-color 220ms ease;
}
.market-lead-card:hover {
  transform: translateY(-3px);
  border-color: rgba(145, 99, 39, 0.55);
  box-shadow: 0 1px 0 rgba(255,255,255,0.7) inset, 0 14px 26px rgba(70, 48, 16, 0.14);
}
.market-lead-card.is-crown {
  background:
    radial-gradient(circle at 100% 0%, rgba(218, 184, 106, 0.22), transparent 44%),
    linear-gradient(180deg, #fffcec 0%, #f5eacc 100%);
  border-color: rgba(218, 184, 106, 0.65);
}
.market-lead-card.is-runnerup {
  background:
    radial-gradient(circle at 100% 0%, rgba(180, 80, 30, 0.14), transparent 40%),
    linear-gradient(180deg, #fffaf0 0%, #f6e7d3 100%);
}
.market-lead-card.is-riser {
  background: linear-gradient(180deg, #fffdf6 0%, #f3ebd6 100%);
}

/* —— Hot Picks skeleton 狀態 —— */
.market-lead-card--skeleton {
  cursor: progress;
  position: relative;
}
.market-lead-card--skeleton:hover { transform: none; box-shadow: 0 1px 0 rgba(255,255,255,0.7) inset, 0 6px 14px rgba(70, 48, 16, 0.07); }
.market-lead-card__skeleton-overlay {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  pointer-events: none;
  z-index: 4;
}
.market-lead-card__skeleton-text {
  font-family: var(--f-font-mono);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.22em;
  color: rgba(135, 70, 28, 0.62);
  padding: 6px 12px;
  border: 1px dashed rgba(135, 70, 28, 0.42);
  border-radius: 999px;
  background: rgba(255, 250, 240, 0.85);
  animation: marketLeadPulse 1.6s ease-in-out infinite;
}
@keyframes marketLeadPulse {
  0%, 100% { opacity: 0.6; }
  50%      { opacity: 1; }
}

.market-lead-card__rank {
  position: absolute;
  top: 8px; right: 14px;
  font-family: var(--f-font-display);
  font-size: 84px; font-weight: 700;
  color: rgba(135, 70, 28, 0.08);
  line-height: 1;
  letter-spacing: -0.06em;
  pointer-events: none;
  z-index: 0;
}
.market-lead-card.is-crown .market-lead-card__rank { color: rgba(218, 184, 106, 0.40); }
.market-lead-card.is-runnerup .market-lead-card__rank { color: rgba(180, 80, 30, 0.18); }
.market-lead-card.is-riser .market-lead-card__rank { color: rgba(70, 130, 80, 0.18); }

/* Rank badge (crown / ribbon / rocket SVG) */
.market-lead-card__rank-badge {
  position: absolute;
  top: 12px; left: 12px;
  width: 36px; height: 30px;
  display: grid; place-items: center;
  z-index: 2;
  filter: drop-shadow(0 2px 4px rgba(70, 48, 16, 0.18));
}
.market-lead-card__rank-badge svg { width: 100%; height: 100%; }
.market-lead-card.is-crown .market-lead-card__rank-badge { color: #d4a437; }
.market-lead-card.is-runnerup .market-lead-card__rank-badge { color: #b6452a; }
.market-lead-card.is-riser .market-lead-card__rank-badge { color: #2c6b3c; }

.market-lead-card__rank-label {
  position: absolute;
  top: 18px; left: 56px;
  font-family: var(--f-font-mono);
  font-size: 10px; font-weight: 700;
  letter-spacing: 0.22em;
  color: rgba(135, 70, 28, 0.85);
  z-index: 1;
}
.market-lead-card.is-crown .market-lead-card__rank-label { color: #a07a20; }
.market-lead-card.is-runnerup .market-lead-card__rank-label { color: #8a3320; }
.market-lead-card.is-riser .market-lead-card__rank-label { color: #2c6b3c; }

/* Crown sparkles 飄浮金粉 */
.market-lead-card__sparkle {
  position: absolute;
  pointer-events: none;
  color: #f0c75c;
  filter: drop-shadow(0 1px 2px rgba(212, 164, 55, 0.5));
  z-index: 2;
}
.market-lead-card__sparkle svg { width: 100%; height: 100%; }
.market-lead-card__sparkle--1 { top: 14px; right: 80px; width: 10px; height: 10px; animation: leadSparkle 2.4s ease-in-out 0s infinite; }
.market-lead-card__sparkle--2 { top: 42px; right: 26px; width: 8px;  height: 8px;  animation: leadSparkle 2.6s ease-in-out 0.4s infinite; }
.market-lead-card__sparkle--3 { top: 64px; right: 100px; width: 12px; height: 12px; animation: leadSparkle 2.2s ease-in-out 0.8s infinite; }
@keyframes leadSparkle {
  0%, 100% { transform: scale(0.4) rotate(0deg);  opacity: 0.3; }
  50%      { transform: scale(1.1) rotate(45deg); opacity: 1; }
}

/* Crown 卡上方加金色光線條 */
.market-lead-card.is-crown::after {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0; height: 4px;
  background: linear-gradient(90deg, transparent, #f0c75c, #fff5dc, #f0c75c, transparent);
  z-index: 1;
}
.market-lead-card.is-runnerup::after {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0; height: 3px;
  background: linear-gradient(90deg, transparent, #c25538, transparent);
  z-index: 1;
}
.market-lead-card.is-riser::after {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0; height: 3px;
  background: linear-gradient(90deg, transparent, #4a8a5a, transparent);
  z-index: 1;
}

.market-lead-card__media {
  display: grid; place-items: center;
  margin-top: 18px;
}
.market-lead-card__thumb {
  width: 132px; height: 184px;
  border-radius: 6px;
  object-fit: cover;
  background: #1a140f;
  box-shadow: 0 6px 14px rgba(70, 48, 16, 0.22);
}
.market-lead-card__thumb--blank {
  background: repeating-linear-gradient(45deg, rgba(120,89,37,0.1) 0 6px, transparent 6px 12px);
}

.market-lead-card__copy {
  display: grid; gap: 10px;
  align-content: end;
  min-width: 0;
  position: relative;
  z-index: 1;
}

.market-lead-card__title {
  margin: 0;
  font-family: var(--f-font-display);
  font-size: 17px;
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: -0.01em;
  color: var(--f-ink-1);
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
}

.market-lead-card__meta {
  display: flex; gap: 6px;
  flex-wrap: wrap;
}

.market-lead-pill {
  display: inline-flex; align-items: center;
  padding: 3px 8px;
  border-radius: 999px;
  font-family: var(--f-font-mono);
  font-size: 10.5px; font-weight: 700;
  letter-spacing: 0.06em;
}
.market-lead-pill--hs { background: var(--f-ink-1); color: #f7e9c5; }
.market-lead-pill--up { background: #2c6b3c; color: #f0f7e8; }
.market-lead-pill--down { background: #a13a26; color: #fbe6dc; }
.market-lead-pill--ghost {
  background: rgba(120, 89, 37, 0.10);
  color: var(--f-ink-3);
}

.market-lead-card__price {
  display: flex; align-items: baseline; gap: 6px; flex-wrap: wrap;
  font-family: var(--f-font-mono);
  font-size: 18px; font-weight: 700;
  color: var(--f-ink-1);
}
.market-lead-card__cond {
  font-size: 10.5px; font-weight: 700;
  letter-spacing: 0.06em;
  color: var(--f-ink-3);
  padding: 2px 6px;
  background: rgba(120, 89, 37, 0.10);
  border-radius: 4px;
}

/* —— Movers shell —— */
.market-movers-shell {
  padding: clamp(20px, 2.4vw, 28px);
  display: grid;
  gap: 18px;
}
.market-movers-shell__head {
  display: flex; align-items: flex-end; justify-content: space-between;
  gap: 16px; flex-wrap: wrap;
  padding-bottom: 12px;
  border-bottom: 1px dashed rgba(120, 89, 37, 0.28);
}
.market-movers-shell__kicker {
  font-family: var(--f-font-mono);
  font-size: 11px; font-weight: 700; letter-spacing: 0.22em;
  text-transform: uppercase; color: rgba(135, 70, 28, 0.85);
}
.market-movers-shell__title {
  margin: 4px 0 4px;
  font-family: var(--f-font-display);
  font-size: clamp(22px, 2.4vw, 28px);
  font-weight: 600; letter-spacing: -0.02em; color: var(--f-ink-1);
}
.market-movers-shell__sub {
  margin: 0; font-size: 13px; color: var(--f-ink-3);
}

/* —— Movers Hero (今日最熱角色 hero 卡) —— */
.market-movers-hero {
  position: relative;
  display: grid;
  grid-template-columns: 200px minmax(0, 1fr);
  gap: 24px;
  align-items: center;
  padding: 22px 24px;
  margin-bottom: 4px;
  border: 1px solid rgba(218, 184, 106, 0.62);
  border-radius: 18px 4px 18px 4px;  /* 不對稱對角圓 */
  background:
    radial-gradient(circle at 100% 0%, rgba(218, 184, 106, 0.20), transparent 42%),
    linear-gradient(135deg, #fffdf6 0%, #f5e8c3 100%);
  overflow: hidden;
  isolation: isolate;
  cursor: pointer;
  transition: transform 240ms cubic-bezier(.2,.8,.2,1), border-color 240ms ease, box-shadow 240ms ease;
}
.market-movers-hero:hover {
  transform: translateY(-2px);
  border-color: rgba(218, 184, 106, 0.95);
  box-shadow: 0 14px 30px rgba(150, 120, 40, 0.20);
}
.market-movers-hero::before {
  content: '';
  position: absolute;
  top: -40px; right: -50px;
  width: 200px; height: 200px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(245, 200, 120, 0.42), transparent 70%);
  z-index: 0;
  pointer-events: none;
}
.market-movers-hero > * { position: relative; z-index: 1; }
@media (max-width: 720px) {
  .market-movers-hero { grid-template-columns: 1fr; text-align: center; padding: 20px; }
  .market-movers-hero__media { justify-self: center; }
}

.market-movers-hero__media {
  width: 200px; height: 270px;
  border-radius: 8px;
  overflow: hidden;
  background: #1a140f;
  box-shadow: 0 8px 22px rgba(70, 48, 16, 0.28);
  transform: rotate(-2deg);
}
.market-movers-hero__thumb {
  width: 100%; height: 100%;
  object-fit: cover;
}
.market-movers-hero__thumb--blank {
  background: repeating-linear-gradient(45deg, rgba(120,89,37,0.20) 0 8px, transparent 8px 16px);
}

.market-movers-hero__copy { display: grid; gap: 12px; min-width: 0; }
.market-movers-hero__kicker {
  display: inline-flex; align-items: center; gap: 8px;
  font-family: var(--f-font-mono);
  font-size: 11px; font-weight: 700;
  letter-spacing: 0.22em; text-transform: uppercase;
  color: rgba(135, 70, 28, 0.95);
}
.market-movers-hero__crown {
  font-size: 18px;
  filter: drop-shadow(0 1px 2px rgba(212, 164, 55, 0.5));
}
.market-movers-hero__name {
  margin: 0;
  font-family: var(--f-font-display);
  font-size: clamp(32px, 4vw, 48px);
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1;
  color: var(--f-ink-1);
}
.market-movers-hero__stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
  padding: 12px 14px;
  border: 1px dashed rgba(120, 89, 37, 0.32);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.55);
}
@media (max-width: 480px) { .market-movers-hero__stats { grid-template-columns: repeat(2, 1fr); } }

.market-movers-hero__stat { display: grid; gap: 2px; }
.market-movers-hero__stat-label {
  font-family: var(--f-font-mono);
  font-size: 9.5px; font-weight: 700;
  letter-spacing: 0.16em; text-transform: uppercase;
  color: rgba(105, 78, 30, 0.78);
}
.market-movers-hero__stat-value {
  font-family: var(--f-font-display);
  font-size: 22px;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--f-ink-1);
  line-height: 1;
}
.market-movers-hero__stat-value.is-up   { color: #2c6b3c; }
.market-movers-hero__stat-value.is-down { color: #a13a26; }

.market-movers-hero__tip {
  margin: 0;
  font-family: var(--f-font-ui);
  font-size: 12px;
  color: var(--f-ink-3);
  font-style: italic;
}

.market-movers-groups {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}
@media (max-width: 880px) { .market-movers-groups { grid-template-columns: 1fr; } }

.market-movers-group {
  position: relative;
  display: grid; gap: 10px;
  padding: 14px 16px 12px 22px;
  border: 1px solid rgba(120, 89, 37, 0.20);
  border-radius: 12px;
  background: rgba(255, 250, 240, 0.72);
  overflow: hidden;
  isolation: isolate;
  transition: transform 200ms ease, border-color 200ms ease, box-shadow 200ms ease;
}
.market-movers-group:hover {
  transform: translateY(-2px);
  border-color: rgba(145, 99, 39, 0.55);
  box-shadow: 0 8px 18px rgba(70, 48, 16, 0.10);
}

/* 左側色帶（依排名） */
.market-movers-group__rail {
  position: absolute;
  top: 8px; bottom: 8px; left: 0;
  width: 4px;
  border-radius: 0 4px 4px 0;
}
.market-movers-group.is-tier-gold .market-movers-group__rail   { background: linear-gradient(180deg, #f0c75c, #d4a437); }
.market-movers-group.is-tier-silver .market-movers-group__rail { background: linear-gradient(180deg, #c25538, #962a18); }
.market-movers-group.is-tier-bronze .market-movers-group__rail { background: linear-gradient(180deg, #4a8a5a, #2c6b3c); }
.market-movers-group.is-tier-default .market-movers-group__rail{ background: linear-gradient(180deg, rgba(120,89,37,0.55), rgba(120,89,37,0.32)); }

/* 角色名水印 — 大字背景 */
.market-movers-group__watermark {
  position: absolute;
  top: -10px;
  right: -8px;
  font-family: var(--f-font-display);
  font-style: italic;
  font-weight: 700;
  font-size: 78px;
  letter-spacing: -0.04em;
  color: rgba(120, 89, 37, 0.06);
  line-height: 1;
  pointer-events: none;
  z-index: 0;
  white-space: nowrap;
  max-width: 90%;
  overflow: hidden;
  text-overflow: ellipsis;
}
.market-movers-group.is-tier-gold .market-movers-group__watermark   { color: rgba(212, 164, 55, 0.14); }
.market-movers-group.is-tier-silver .market-movers-group__watermark { color: rgba(194, 85, 56, 0.10); }
.market-movers-group.is-tier-bronze .market-movers-group__watermark { color: rgba(74, 138, 90, 0.10); }

.market-movers-group > *:not(.market-movers-group__rail):not(.market-movers-group__watermark) {
  position: relative; z-index: 1;
}
.market-movers-group__head {
  display: flex; align-items: center; justify-content: space-between;
  gap: 10px;
  padding-bottom: 8px;
  border-bottom: 1px dashed rgba(120, 89, 37, 0.20);
}
.market-movers-group__head-l { display: flex; align-items: baseline; gap: 8px; min-width: 0; }
.market-movers-group__head-r { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
.market-movers-group__rank {
  font-family: var(--f-font-display);
  font-size: 18px; font-weight: 700;
  color: rgba(135, 70, 28, 0.65);
  letter-spacing: -0.02em;
}
.market-movers-group__name {
  font-family: var(--f-font-display);
  font-size: 16px; font-weight: 600;
  color: var(--f-ink-1);
  letter-spacing: -0.01em;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.market-movers-group__count {
  font-family: var(--f-font-mono);
  font-size: 10.5px; color: var(--f-ink-3);
}
.market-movers-group__hs {
  font-family: var(--f-font-mono);
  font-size: 10.5px; font-weight: 700;
  padding: 3px 8px;
  border-radius: 999px;
  background: var(--f-ink-1);
  color: #f7e9c5;
}

.market-movers-list { display: grid; gap: 0; }
.market-movers-item {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) auto;
  gap: 10px;
  align-items: center;
  padding: 8px 0;
  border: 0;
  border-bottom: 1px dashed rgba(120, 89, 37, 0.16);
  background: transparent;
  text-align: left;
  cursor: pointer;
  transition: background 140ms ease;
}
.market-movers-item:last-child { border-bottom: 0; }
.market-movers-item:hover { background: rgba(255, 255, 255, 0.65); border-radius: 6px; padding-left: 6px; padding-right: 6px; margin: 0 -6px; }
.market-movers-item__thumb {
  width: 44px; height: 58px;
  border-radius: 4px;
  object-fit: cover;
  background: rgba(120, 89, 37, 0.10);
  box-shadow: 0 2px 4px rgba(70, 48, 16, 0.15);
}
.market-movers-item__thumb--blank { background: repeating-linear-gradient(45deg, rgba(120,89,37,0.10) 0 6px, transparent 6px 12px); }
.market-movers-item__copy { min-width: 0; display: grid; gap: 2px; }
.market-movers-item__copy strong {
  font-family: var(--f-font-display);
  font-size: 13.5px; font-weight: 600;
  color: var(--f-ink-1);
  line-height: 1.2;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
}
.market-movers-item__copy small {
  font-family: var(--f-font-mono);
  font-size: 10.5px;
  color: var(--f-ink-3);
}
.market-movers-item__copy small em.is-up   { color: #2c6b3c; font-style: normal; font-weight: 700; }
.market-movers-item__copy small em.is-down { color: #a13a26; font-style: normal; font-weight: 700; }
.market-movers-item__aside {
  font-family: var(--f-font-mono);
  font-size: 13px; font-weight: 700;
  color: var(--f-ink-1);
  text-align: right;
}

/* —— Grid head (kicker + title + rank hint) —— */
.market-grid-head { display: block; }
.market-grid-head__inner {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  padding-bottom: 14px;
  border-bottom: 1px dashed rgba(120, 89, 37, 0.28);
}
.market-grid-head__kicker {
  display: inline-flex; align-items: center; gap: 8px;
  font-family: var(--f-font-mono);
  font-size: 11px; font-weight: 700;
  letter-spacing: 0.22em; text-transform: uppercase;
  color: rgba(135, 70, 28, 0.92);
}
.market-grid-head__rule {
  width: 22px; height: 1px;
  background: linear-gradient(90deg, rgba(135, 70, 28, 0.75), transparent);
}
.market-grid-head__title {
  margin: 6px 0 4px;
  font-family: var(--f-font-display);
  font-size: clamp(20px, 2vw, 24px);
  font-weight: 600; letter-spacing: -0.02em;
  color: var(--f-ink-1);
}
.market-grid-head__sub {
  margin: 0;
  font-family: var(--f-font-ui);
  font-size: 12.5px; color: var(--f-ink-3);
}
.market-grid-head__rankhint {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 6px 12px;
  border: 1px dashed rgba(218, 184, 106, 0.62);
  border-radius: 999px;
  background: linear-gradient(180deg, rgba(245, 220, 150, 0.22), rgba(245, 220, 150, 0.05));
  font-family: var(--f-font-ui);
  font-size: 12px;
  color: rgba(135, 70, 28, 0.92);
}
.market-grid-head__rankhint-icon { font-size: 14px; }
.market-grid-head__rankhint strong { color: var(--f-ink-1); font-weight: 700; }

/* —— Card tile rank badge (Hot view only) —— */
.card-tile { position: relative; }
.card-tile__rank {
  position: absolute;
  top: 8px; left: 8px;
  z-index: 3;
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 36px; height: 26px;
  padding: 0 10px;
  border-radius: 999px;
  background: rgba(20, 15, 10, 0.86);
  color: #f7e9c5;
  font-family: var(--f-font-mono);
  font-size: 12px; font-weight: 700;
  letter-spacing: 0.04em;
  box-shadow: 0 2px 6px rgba(20, 15, 10, 0.35), 0 0 0 1px rgba(218, 184, 106, 0.32) inset;
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}
.card-tile__rank.is-top3 {
  background: linear-gradient(180deg, #f0c75c, #d4a437);
  color: #1a140f;
  box-shadow: 0 4px 10px rgba(212, 164, 55, 0.5), 0 0 0 1px rgba(255, 245, 220, 0.55) inset;
}
.card-tile__rank.is-top10 {
  background: linear-gradient(180deg, #c25538, #962a18);
  color: #fff5dc;
  box-shadow: 0 4px 10px rgba(150, 42, 24, 0.4), 0 0 0 1px rgba(255, 245, 220, 0.4) inset;
}
.card-tile__rank.is-top30 {
  background: linear-gradient(180deg, #4a8a5a, #2c6b3c);
  color: #fff5dc;
}

/* —— Movers group: tier 徽章 + 漸層 —— */
.market-movers-group.is-tier-gold   { background: linear-gradient(180deg, #fffaf0, #f7e8c8); border-color: rgba(218, 184, 106, 0.45); }
.market-movers-group.is-tier-silver { background: linear-gradient(180deg, #fffaf0, #f4dccc); border-color: rgba(180, 80, 30, 0.30); }
.market-movers-group.is-tier-bronze { background: linear-gradient(180deg, #f7fcef, #e8f0d8); border-color: rgba(74, 138, 90, 0.34); }

/* —— Pagination —— */
.market-pagination { display: flex; justify-content: center; }
.market-pager {
  display: grid;
  justify-items: center;
  gap: 12px;
  padding: 14px 24px;
  border: 1px solid rgba(120, 89, 37, 0.18);
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.65);
}
.market-pager__meta {
  font-family: var(--f-font-mono);
  font-size: 10.5px; font-weight: 700;
  letter-spacing: 0.22em;
  color: rgba(105, 78, 30, 0.78);
}
.market-pager__row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: center; }
.market-pager__nav,
.market-pager__num {
  border: 1px solid rgba(120, 89, 37, 0.28);
  background: rgba(255, 255, 255, 0.85);
  color: var(--f-ink-2);
  font-family: var(--f-font-ui);
  font-size: 13px; font-weight: 600;
  cursor: pointer;
  transition: all 160ms ease;
}
.market-pager__nav { padding: 6px 14px; border-radius: 8px; }
.market-pager__num { width: 36px; height: 32px; border-radius: 8px; font-family: var(--f-font-mono); }
.market-pager__nav:hover:not(:disabled),
.market-pager__num:hover:not(:disabled):not(.is-active) {
  background: var(--f-ink-1); color: #f7e9c5; border-color: var(--f-ink-1);
}
.market-pager__num.is-active {
  background: linear-gradient(180deg, #f0c75c, #d4a437);
  border-color: rgba(145, 99, 39, 0.85);
  color: #1a140f;
  font-weight: 700;
}
.market-pager__nav:disabled,
.market-pager__num:disabled {
  opacity: 0.3;
  cursor: not-allowed;
}

.market-pagination .market-pager__nums { display: flex; gap: 4px; }

.market-status {
  margin-top: 18px;
  display: flex;
  justify-content: center;
}

/* —— Market 編輯感空狀態 / 錯誤狀態 —— */
.market-empty {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 24px;
  align-items: center;
  padding: 28px 32px;
  margin: 18px auto;
  max-width: 640px;
  border: 1px dashed rgba(120, 89, 37, 0.45);
  border-radius: 16px 4px 16px 4px;
  background:
    radial-gradient(circle at 100% 100%, rgba(218, 184, 106, 0.10), transparent 45%),
    linear-gradient(180deg, rgba(255, 250, 240, 0.85), rgba(245, 234, 205, 0.65));
}
.market-empty--error {
  border-color: rgba(180, 70, 50, 0.55);
  background:
    radial-gradient(circle at 100% 100%, rgba(180, 70, 50, 0.10), transparent 45%),
    linear-gradient(180deg, rgba(252, 240, 230, 0.85), rgba(245, 220, 210, 0.65));
}
.market-empty__mark {
  font-family: var(--f-font-display);
  font-size: 72px;
  line-height: 0.8;
  color: rgba(135, 70, 28, 0.42);
  letter-spacing: -0.04em;
}
.market-empty--error .market-empty__mark { color: rgba(161, 58, 38, 0.55); }
.market-empty__copy { display: grid; gap: 6px; }
.market-empty__kicker {
  font-family: var(--f-font-mono);
  font-size: 11px; font-weight: 700;
  letter-spacing: 0.22em; text-transform: uppercase;
  color: rgba(135, 70, 28, 0.92);
}
.market-empty--error .market-empty__kicker { color: #a13a26; }
.market-empty__title {
  font-family: var(--f-font-display);
  font-size: 22px;
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--f-ink-1);
}
.market-empty__sub {
  font-family: var(--f-font-ui);
  font-size: 13px;
  color: var(--f-ink-3);
  line-height: 1.55;
}
@media (max-width: 540px) {
  .market-empty { grid-template-columns: 1fr; padding: 22px; text-align: center; }
  .market-empty__mark { justify-self: center; }
}

.search-folds {
  display: grid;
  gap: 12px;
}

.search-fold {
  border: 1px solid var(--f-line);
  border-radius: 18px;
  background: rgba(255, 255, 255, 0.52);
  overflow: hidden;
}

.search-fold[open] {
  background: rgba(255, 255, 255, 0.74);
}

.search-fold__summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--f-s4);
  padding: 16px 18px;
  cursor: pointer;
  list-style: none;
}

.search-fold__summary::-webkit-details-marker {
  display: none;
}

.search-fold__meta {
  display: grid;
  gap: 4px;
}

.search-fold__title {
  color: var(--f-ink-1);
  font-size: var(--f-text-sm);
  font-weight: 800;
}

.search-fold__desc {
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
}

.search-fold__caret {
  color: var(--f-ink-3);
  font-size: 14px;
  transition: transform var(--f-dur-fast) var(--f-ease);
}

.search-fold[open] .search-fold__caret {
  transform: rotate(180deg);
}

.search-fold__body {
  padding: 0 18px 18px;
}

/* —— 角色快捷 / Box Quick Start chip 群（grid 排版，去掉長短不齊） —— */
.search-chips {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 6px;
}
@media (max-width: 720px) { .search-chips { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 460px) { .search-chips { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

.search-chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  width: 100%;
  height: 32px;
  padding: 0 8px;
  border: 1px solid rgba(120, 89, 37, 0.20);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.72);
  color: var(--f-ink-2);
  font-family: var(--f-font-ui);
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: -0.005em;
  cursor: pointer;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  transition:
    transform var(--f-dur-fast) var(--f-ease),
    background var(--f-dur-fast) var(--f-ease),
    color var(--f-dur-fast) var(--f-ease),
    border-color var(--f-dur-fast) var(--f-ease);
}

.search-chip:hover {
  transform: translateY(-1px);
  border-color: rgba(145, 99, 39, 0.85);
  background: var(--f-ink-1);
  color: var(--f-ink-on);
}

.search-chip--ghost {
  background: rgba(255, 255, 255, 0.42);
}

/* recent / hotline 用的橫排 chip（保留 flex wrap） */
.search-recent-chips,
.search-rail-hotline {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.search-recent-chips .search-chip,
.search-rail-hotline .search-chip {
  width: auto;
  min-width: 0;
  padding: 0 12px;
}

/* —— 補完價時的卡片淡入提示（取代整頁 re-render flicker） —— */
.card-tile.is-priced {
  animation: cardPricedFadeIn 320ms ease-out both;
}
@keyframes cardPricedFadeIn {
  0%   { background-color: rgba(229, 184, 95, 0.16); }
  100% { background-color: transparent; }
}

.search-filter-bar {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  padding-bottom: 8px;
}

.search-state-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}

.search-state-row__badges {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.search-results-panel {
  display: grid;
  gap: 18px;
  margin-top: 0;
}

.search-results-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--f-s4);
  flex-wrap: wrap;
}

.search-results-controls {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 12px;
  flex-wrap: wrap;
}

.search-results-summary {
  max-width: 70ch;
  margin: 8px 0 0;
  color: var(--f-ink-2);
  font-size: var(--f-text-sm);
  line-height: var(--f-leading-base);
}

.search-result-sections {
  display: grid;
  gap: var(--f-s6);
}

.search-card-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.search-pager {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  flex-wrap: wrap;
}

.search-pager__buttons {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: center;
}

.search-discover-copy {
  display: grid;
  gap: 12px;
  color: var(--f-ink-2);
  font-size: var(--f-text-sm);
  line-height: var(--f-leading-base);
}

.search-discover-copy p {
  margin: 0;
}

.search-discover-copy code {
  font-family: var(--f-font-num);
  font-size: 0.94em;
}

.search-status {
  padding: var(--f-s5);
  color: var(--f-ink-3);
  text-align: center;
  font-size: var(--f-text-sm);
  font-weight: 700;
}


/* ===============================================
   Card Lab — Editorial Hero (magazine cover style)
   • 巨型義式斜體浮水印背景字
   • SVG 紙紋顆粒
   • 左側垂直書脊文字
   • 上下雙線收邊（letterpress 風）
   =============================================== */
.analyze-hero {
  position: relative;
  margin: 0 0 var(--f-s5);
  padding: 38px 44px 32px 76px;
  border: 1px solid rgba(23,18,13,0.18);
  border-radius: 0;
  background: var(--f-bg);
  box-shadow:
    0 0 0 1px var(--f-bg) inset,
    0 0 0 2px rgba(23,18,13,0.10) inset,
    24px 24px 0 -20px rgba(23,18,13,0.06);
  overflow: hidden;
  isolation: isolate;
}
/* 巨型 italic watermark — 充滿背景的編輯設計詞 */
.analyze-hero__watermark {
  position: absolute;
  right: -6%;
  bottom: -28%;
  pointer-events: none;
  z-index: 0;
  font-family: var(--f-font-display);
  font-style: italic;
  font-weight: 600;
  font-size: clamp(180px, 28vw, 360px);
  line-height: 0.82;
  letter-spacing: -0.06em;
  color: transparent;
  -webkit-text-stroke: 1px rgba(23,18,13,0.07);
  text-stroke: 1px rgba(23,18,13,0.07);
  user-select: none;
  white-space: nowrap;
}
/* 紙紋顆粒 — SVG noise data URI */
.analyze-hero__grain {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 1;
  opacity: 0.35;
  mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml;utf8,<svg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.09  0 0 0 0 0.07  0 0 0 0 0.05  0 0 0 0.45 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  background-size: 220px 220px;
}
/* 左側垂直書脊（spine）+ 大寫 mono 文字 */
.analyze-hero__spine {
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 48px;
  background: var(--f-ink-1);
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
}
.analyze-hero__spine::before,
.analyze-hero__spine::after {
  content: '';
  position: absolute;
  left: 6px; right: 6px;
  height: 1px;
  background: rgba(255,255,255,0.20);
}
.analyze-hero__spine::before { top: 20px; }
.analyze-hero__spine::after { bottom: 20px; }
.analyze-hero__spine-text {
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  color: var(--f-bg);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.42em;
  text-transform: uppercase;
  white-space: nowrap;
}
/* 上下雙線收邊 — letterpress / 老雜誌封面常見手法 */
.analyze-hero__rules {
  position: relative;
  height: 6px;
  margin: -4px 0 14px;
}
.analyze-hero__rules::before,
.analyze-hero__rules::after {
  content: '';
  position: absolute;
  left: 0; right: 0;
  height: 1px;
  background: var(--f-ink-1);
}
.analyze-hero__rules::before { top: 0; }
.analyze-hero__rules::after  { bottom: 0; height: 2px; }
/* 返回連結改成 inline 編輯風格 */
.analyze-hero__back {
  display: inline-block;
  margin-bottom: 14px;
  padding: 0;
  background: transparent;
  border: none;
  color: var(--f-ink-2);
  font-family: var(--f-font-num);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  text-decoration: none;
  cursor: pointer;
  position: relative;
  z-index: 4;
}
.analyze-hero__back:hover { color: var(--f-ink-1); }
@keyframes analyze-hero-shine {
  0%   { background-position: 200% 0; }
  55%  { background-position: -120% 0; }
  100% { background-position: -120% 0; }
}
@keyframes analyze-hero-orb {
  0%   { transform: translate3d(-2%, -1%, 0) rotate(0deg); }
  50%  { transform: translate3d(3%, 2%, 0) rotate(8deg); }
  100% { transform: translate3d(-1%, 1%, 0) rotate(-4deg); }
}
@media (prefers-reduced-motion: reduce) {
  .analyze-hero::before, .analyze-hero__bg { animation: none; }
}
.analyze-hero__inner {
  position: relative;
  z-index: 3;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 28px;
  align-items: end;
}
.analyze-hero__left { display: block; }
.analyze-hero__eyebrow {
  display: flex;
  align-items: baseline;
  gap: 12px;
  margin-bottom: 8px;
  color: var(--f-ink-2);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.20em;
  text-transform: uppercase;
}
.analyze-hero__eyebrow-mark {
  padding: 3px 8px;
  background: var(--f-ink-1);
  color: var(--f-bg);
  letter-spacing: 0.24em;
}
.analyze-hero__eyebrow-text { color: var(--f-ink-3); }
.analyze-hero__sub {
  margin: 10px 0 0;
  padding-left: 14px;
  border-left: 2px solid var(--f-ink-1);
  color: var(--f-ink-2);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 14px;
  font-weight: 500;
  line-height: 1.55;
  max-width: 560px;
}
.analyze-hero__right {
  display: grid;
  gap: 12px;
  justify-items: end;
  align-content: end;
}
.analyze-hero__actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
@media (max-width: 720px) {
  .analyze-hero { padding: 26px 22px 22px 60px; }
  .analyze-hero__spine { width: 36px; }
  .analyze-hero__inner { grid-template-columns: 1fr; gap: 18px; }
  .analyze-hero__right { justify-items: start; }
  .analyze-hero__actions { justify-content: flex-start; }
  .analyze-hero__watermark { font-size: 140px; }
}

/* Card Lab — headline (精簡版：名稱不再 hero 字級，搭配稀有度膠囊與編號戳記) */
.analyze-headline {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  font-size: clamp(26px, 3.4vw, 38px);
  line-height: 1.12;
  letter-spacing: -0.025em;
}
.analyze-headline__name {
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-weight: 600;
  font-style: italic;
}
.analyze-headline__rarity {
  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  border-radius: 6px;
  background: rgba(23,18,13,0.08);
  color: var(--f-ink-2);
  font-family: var(--f-font-num);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.14em;
  vertical-align: middle;
  transform: translateY(-2px);
}
.analyze-headline__rarity--sr,
.analyze-headline__rarity--ssr,
.analyze-headline__rarity--sar  { background: linear-gradient(135deg, rgba(196,158,82,0.32), rgba(196,158,82,0.16)); color: #6e5118; box-shadow: inset 0 0 0 1px rgba(196,158,82,0.40); }
.analyze-headline__rarity--ar,
.analyze-headline__rarity--ur,
.analyze-headline__rarity--scr  { background: linear-gradient(135deg, rgba(182,69,42,0.26), rgba(182,69,42,0.12)); color: #9c3a23; box-shadow: inset 0 0 0 1px rgba(182,69,42,0.36); }
.analyze-headline__rarity--rr,
.analyze-headline__rarity--rrr  { background: linear-gradient(135deg, rgba(82,120,196,0.26), rgba(82,120,196,0.12)); color: #243f74; box-shadow: inset 0 0 0 1px rgba(82,120,196,0.34); }
.analyze-headline__rarity--r    { background: rgba(44,107,60,0.16); color: #2c6b3c; box-shadow: inset 0 0 0 1px rgba(44,107,60,0.30); }
.analyze-headline__rarity--promo,
.analyze-headline__rarity--pr   { background: rgba(120,75,180,0.16); color: #6a3fb0; box-shadow: inset 0 0 0 1px rgba(120,75,180,0.32); }
.analyze-headline__number {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 3px 10px;
  border-radius: 4px;
  background: var(--f-bg);
  color: var(--f-ink-2);
  font-family: var(--f-font-num);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.10em;
  vertical-align: middle;
  transform: translateY(-2px);
  border: 1px dashed rgba(23,18,13,0.28);
}
.analyze-headline__number::before {
  content: 'No.';
  color: var(--f-ink-3);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

.analyze-head-actions {
  align-items: flex-end;
}

.analyze-price-hero {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
  min-width: 180px;
}

.analyze-price-hero__label {
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
  font-weight: 800;
  letter-spacing: 0.10em;
  text-transform: uppercase;
}

.analyze-price-hero__value {
  color: var(--f-ink-1);
  font-size: clamp(26px, 3vw, 34px);
  font-weight: 700;
}

.analyze-nav {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: var(--f-s6);
}

.analyze-layout {
  display: grid;
  grid-template-columns: minmax(280px, 360px) minmax(0, 1fr);
  gap: clamp(24px, 4vw, 48px);
  align-items: start;
}

.analyze-sidebar {
  position: sticky;
  top: calc(var(--f-top-h) + 28px);
  display: grid;
  gap: var(--f-s4);
}

.analyze-content {
  display: grid;
  gap: var(--f-s5);
}

.analyze-media-card {
  overflow: hidden;
  border-radius: 24px;
}

.analyze-media-frame {
  aspect-ratio: 4 / 5;
  background: linear-gradient(180deg, #f8f3ea 0%, #ece2d3 100%);
}

.analyze-media-frame > img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
}

.analyze-side-panel {
  display: grid;
  gap: 12px;
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

.analyze-side-panel::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 340 220'%3E%3Cpath d='M236 0h104v52c-29 0-54-6-78-18-14-7-22-16-26-34Z' fill='%23eadcc7' fill-opacity='.78'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: top right;
  background-size: 144px auto;
}

.analyze-side-panel__kicker {
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.analyze-side-panel__meta {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.analyze-side-actions {
  display: grid;
  gap: 8px;
}

.analyze-meta-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.analyze-meta-card {
  display: grid;
  gap: 4px;
  padding: 10px 12px;
  border: 1px solid var(--f-line);
  border-radius: 14px;
  background: rgba(255,255,255,0.42);
}

.analyze-meta-card span {
  color: var(--f-ink-3);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.analyze-meta-card strong {
  color: var(--f-ink-1);
  font-family: var(--f-font-num);
  font-size: var(--f-text-sm);
  font-weight: 700;
}

.analyze-recent-list {
  display: grid;
  gap: 8px;
}

.analyze-recent-item {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr);
  gap: 10px;
  align-items: center;
  padding: 8px;
  border: 1px solid var(--f-line);
  border-radius: 14px;
  background: rgba(255,255,255,0.42);
  text-align: left;
  transition: transform var(--f-dur-fast) var(--f-ease), border-color var(--f-dur-fast) var(--f-ease), background var(--f-dur-fast) var(--f-ease);
}

.analyze-recent-item:hover {
  transform: translateY(-1px);
  border-color: var(--f-line-strong);
  background: rgba(255,255,255,0.7);
}

.analyze-recent-item__thumb {
  width: 44px;
  height: 58px;
  border-radius: 10px;
  object-fit: cover;
  background: var(--f-surface-3);
}

.analyze-recent-item__copy {
  min-width: 0;
  display: grid;
  gap: 4px;
}

.analyze-recent-item__copy strong {
  color: var(--f-ink-1);
  font-size: var(--f-text-xs);
  font-weight: 700;
  line-height: var(--f-leading-snug);
}

.analyze-recent-item__copy small {
  color: var(--f-ink-3);
  font-size: 10px;
  line-height: var(--f-leading-snug);
}

.analyze-fact-list {
  display: grid;
  gap: 10px;
}

.analyze-fact-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--f-line);
}

.analyze-fact-row:last-child {
  padding-bottom: 0;
  border-bottom: 0;
}

.analyze-fact-row__label {
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.analyze-fact-row__value {
  color: var(--f-ink-1);
  font-family: var(--f-font-num);
  font-size: var(--f-text-sm);
  font-weight: 700;
  text-align: right;
}

.analyze-block {
  scroll-margin-top: calc(var(--f-top-h) + 24px);
}

.analyze-block__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--f-s4);
  flex-wrap: wrap;
}

.analyze-block__head--split {
  align-items: center;
}

.analyze-block__title {
  margin: 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: clamp(26px, 3.4vw, 34px);
  font-weight: 600;
  letter-spacing: -0.025em;
  line-height: 1.05;
}

.analyze-block__sub {
  max-width: 60ch;
  margin: 10px 0 0;
  padding-left: 12px;
  border-left: 2px solid var(--f-ink-1);
  color: var(--f-ink-2);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 13px;
  font-weight: 500;
  line-height: 1.55;
}

/* 編輯式 bento — 第一張當 hero（左側拉滿高），其他 4 張 2x2 排列右側 */
.analyze-kpi-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr) minmax(0, 1fr);
  grid-template-rows: auto auto;
  gap: 12px;
  counter-reset: analyze-kpi-item;
}
.analyze-kpi-grid > .analyze-kpi-card:nth-child(1) {
  grid-column: 1 / 2;
  grid-row: 1 / 3;
}
.analyze-kpi-grid > .analyze-kpi-card:nth-child(2) { grid-column: 2 / 3; grid-row: 1; }
.analyze-kpi-grid > .analyze-kpi-card:nth-child(3) { grid-column: 3 / 4; grid-row: 1; }
.analyze-kpi-grid > .analyze-kpi-card:nth-child(4) { grid-column: 2 / 3; grid-row: 2; }
.analyze-kpi-grid > .analyze-kpi-card:nth-child(5) { grid-column: 3 / 4; grid-row: 2; }
@media (max-width: 960px) {
  .analyze-kpi-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: auto;
  }
  .analyze-kpi-grid > .analyze-kpi-card:nth-child(1) {
    grid-column: 1 / -1; grid-row: auto;
  }
  .analyze-kpi-grid > .analyze-kpi-card:nth-child(n) {
    grid-column: auto; grid-row: auto;
  }
  .analyze-kpi-grid > .analyze-kpi-card:nth-child(1) { grid-column: 1 / -1; }
}
@media (max-width: 520px) {
  .analyze-kpi-grid { grid-template-columns: 1fr; }
}

/* Editorial KPI card — 方角硬邊、頂部 tone bar、italic Fraunces 主數字 */
.analyze-kpi-card {
  position: relative;
  display: grid;
  gap: 8px;
  padding: 18px 18px 16px;
  border: 1px solid rgba(23,18,13,0.18);
  border-radius: 0;
  background: var(--f-bg);
  border-top: 3px solid var(--f-ink-1);
  overflow: hidden;
  counter-increment: analyze-kpi-item;
  transition: transform 0.18s var(--f-ease), box-shadow 0.18s var(--f-ease);
  min-width: 0;
}
.analyze-kpi-card:hover {
  transform: translateY(-2px);
  box-shadow: 8px 8px 0 -4px rgba(23,18,13,0.10);
}
.analyze-kpi-card::before {
  /* Nº 編號浮在右上 */
  content: 'Nº ' counter(analyze-kpi-item, decimal-leading-zero);
  position: absolute;
  top: 8px;
  right: 12px;
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  z-index: 2;
}

/* ── 第一張 hero card：左欄拉滿、巨型 italic 數字 + 浮水印背景數字 ── */
.analyze-kpi-grid > .analyze-kpi-card:nth-child(1) {
  padding: 26px 26px 22px;
  gap: 14px;
  border-top-width: 4px;
}
.analyze-kpi-grid > .analyze-kpi-card:nth-child(1)::after {
  /* 右下角浮水印「§」標記 — 雜誌封面式裝飾 */
  content: '§';
  position: absolute;
  right: -10px;
  bottom: -40px;
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 220px;
  font-weight: 600;
  line-height: 1;
  color: rgba(23,18,13,0.04);
  pointer-events: none;
}
.analyze-kpi-grid > .analyze-kpi-card:nth-child(1) .analyze-kpi-card__label {
  font-size: 11px;
  letter-spacing: 0.20em;
}
.analyze-kpi-grid > .analyze-kpi-card:nth-child(1) .analyze-kpi-card__value,
.analyze-kpi-grid > .analyze-kpi-card:nth-child(1) .analyze-kpi-card__metric {
  font-size: clamp(28px, 3.4vw, 44px);
  letter-spacing: -0.04em;
  position: relative;
  z-index: 1;
}
.analyze-kpi-grid > .analyze-kpi-card:nth-child(1) .analyze-kpi-card__sub {
  font-size: 13px;
  padding-top: 8px;
  border-top: 1px dashed var(--f-line);
  margin-top: 6px;
}

/* ── 右側 2x2 小卡：緊湊版 ── */
.analyze-kpi-grid > .analyze-kpi-card:not(:nth-child(1)) {
  padding: 14px 14px 12px;
  gap: 6px;
}
.analyze-kpi-grid > .analyze-kpi-card:not(:nth-child(1)) .analyze-kpi-card__label {
  font-size: 9px;
  padding-bottom: 6px;
}
.analyze-kpi-grid > .analyze-kpi-card:not(:nth-child(1)) .analyze-kpi-card__value,
.analyze-kpi-grid > .analyze-kpi-card:not(:nth-child(1)) .analyze-kpi-card__metric {
  font-size: clamp(17px, 1.7vw, 21px);
}
.analyze-kpi-grid > .analyze-kpi-card:not(:nth-child(1)) .analyze-kpi-card__sub {
  font-size: 11px;
  line-height: 1.35;
}

.analyze-kpi-card__label {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--f-line);
}

.analyze-kpi-card__value {
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: clamp(18px, 2vw, 24px);
  font-weight: 700;
  line-height: 1.05;
  letter-spacing: -0.03em;
  margin-top: 4px;
  font-variant-numeric: tabular-nums;
  /* 允許換行避免截掉數字尾巴；word-break 確保長數字也會 wrap */
  white-space: normal;
  overflow-wrap: anywhere;
  min-width: 0;
}

.analyze-kpi-card__metric {
  display: block;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: clamp(18px, 2vw, 24px);
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.05;
  white-space: normal;
  overflow-wrap: anywhere;
  min-width: 0;
  font-variant-numeric: tabular-nums;
}

.analyze-kpi-card__metric.is-up { color: #2c6b3c; }
.analyze-kpi-card__metric.is-down { color: #b6452a; }

.analyze-kpi-card__sub {
  color: var(--f-ink-3);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 12px;
  font-weight: 500;
  line-height: 1.4;
  margin-top: auto;
}

.analyze-note {
  padding: 14px 16px;
  border-left: 3px solid var(--f-accent);
  background: rgba(179, 91, 51, 0.06);
  color: var(--f-ink-2);
  font-size: var(--f-text-sm);
  line-height: var(--f-leading-base);
}

.analyze-chart {
  position: relative;
  min-height: 320px;
}

/* Conditions list — editorial ledger rows */
.cond-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--f-s4);
  padding: 14px 4px 14px 14px;
  border-bottom: 1px dashed var(--f-line);
  border-left: 3px solid transparent;
  transition: border-left-color var(--f-dur-fast) var(--f-ease), background var(--f-dur-fast) var(--f-ease), color var(--f-dur-fast) var(--f-ease);
  cursor: pointer;
}

.cond-row:last-child {
  border-bottom: 0;
}

.cond-row:hover {
  border-left-color: var(--f-ink-3);
  background: rgba(23,18,13,0.02);
}

.cond-row.is-active {
  border-left-color: var(--f-ink-1);
  background: rgba(23,18,13,0.04);
  color: var(--f-ink-1);
}

.cond-row__name {
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-weight: 600;
  font-size: 16px;
  letter-spacing: -0.01em;
}

.cond-row__count {
  margin-left: 8px;
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.10em;
  text-transform: uppercase;
}

.cond-row__price {
  font-family: var(--f-font-num);
  font-weight: 800;
  font-size: 14px;
  letter-spacing: -0.01em;
}
.cond-row.is-active .cond-row__price { color: var(--f-ink-1); }

.trade-row {
  display: grid;
  grid-template-columns: 72px 1fr auto;
  gap: var(--f-s3);
  align-items: center;
  padding: 12px 0;
  border-bottom: 1px solid var(--f-line);
}

.trade-row:last-child {
  border-bottom: 0;
}

.trade-row__time,
.trade-row__price {
  font-family: var(--f-font-num);
}

.trade-row__time {
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
}

.trade-row__cond {
  color: var(--f-ink-2);
  font-size: var(--f-text-sm);
  font-weight: 700;
}

.trade-row__price {
  text-align: right;
  font-weight: 700;
}

.trade-list-head {
  display: grid;
  grid-template-columns: 72px 1fr auto;
  gap: var(--f-s3);
  padding: 0 0 10px;
  border-bottom: 1px solid var(--f-line);
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
  font-weight: 800;
  letter-spacing: 0.10em;
  text-transform: uppercase;
}

.trade-list-head span:last-child {
  text-align: right;
}

.analyze-tape-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.analyze-tape-pill {
  display: grid;
  gap: 6px;
  padding: 12px 14px;
  border: 1px solid var(--f-line);
  border-radius: 14px;
  background: rgba(255,255,255,0.48);
}

.analyze-tape-pill span {
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.analyze-tape-pill strong {
  color: var(--f-ink-1);
  font-family: var(--f-font-num);
  font-size: var(--f-text-sm);
  font-weight: 700;
}

/* FX grid — editorial rate strip */
.analyze-fx-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0;
  border-top: 1px solid var(--f-ink-1);
  border-bottom: 1px solid var(--f-ink-1);
  padding: 12px 0;
  margin-bottom: var(--f-s4);
}

.analyze-rate-card {
  display: grid;
  gap: 4px;
  padding: 0 18px;
  position: relative;
  background: transparent;
  border: 0;
  border-radius: 0;
}
.analyze-rate-card:not(:last-child)::after {
  content: '';
  position: absolute;
  right: 0; top: 4px; bottom: 4px;
  width: 1px;
  background: var(--f-line);
}

.analyze-rate-card span {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.analyze-rate-card strong {
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: clamp(16px, 1.8vw, 22px);
  font-weight: 700;
  letter-spacing: -0.025em;
  line-height: 1;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.analyze-cost-layout,
.analyze-related-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

/* Inner card — editorial 卡片 */
.analyze-inner-card {
  display: grid;
  gap: 14px;
  padding: 22px;
  border: 1px solid rgba(23,18,13,0.18);
  border-radius: 0;
  background: var(--f-bg);
  position: relative;
}
.analyze-inner-card::before {
  /* 左上 corner stamp */
  content: '';
  position: absolute;
  top: -1px; left: -1px;
  width: 24px;
  height: 4px;
  background: var(--f-ink-1);
}

.analyze-inner-card__title {
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 18px;
  font-weight: 600;
  letter-spacing: -0.015em;
  padding-bottom: 10px;
  border-bottom: 2px solid var(--f-ink-1);
}

.analyze-inline-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.analyze-cost-summary,
.analyze-roi-summary {
  display: grid;
  gap: 0;
}

.analyze-cost-row,
.analyze-roi-summary__row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 0;
  border-bottom: 1px dashed var(--f-line);
  color: var(--f-ink-2);
  font-size: 13px;
  font-family: var(--f-font-num);
  font-variant-numeric: tabular-nums;
  min-width: 0;
}
.analyze-cost-row strong,
.analyze-roi-summary__row strong { flex: 0 0 auto; white-space: nowrap; }
.analyze-cost-row span:first-child,
.analyze-roi-summary__row span:first-child { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.analyze-cost-row span:first-child,
.analyze-roi-summary__row span:first-child {
  color: var(--f-ink-3);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.analyze-cost-row strong,
.analyze-roi-summary__row strong {
  color: var(--f-ink-1);
  font-family: var(--f-font-num);
  font-size: 14px;
  font-weight: 800;
}

.analyze-cost-row.is-total,
.analyze-roi-summary__row.is-total {
  color: var(--f-ink-1);
  border-bottom: 0;
  border-top: 2px solid var(--f-ink-1);
  padding-top: 12px;
  margin-top: 4px;
}
.analyze-cost-row.is-total strong,
.analyze-roi-summary__row.is-total strong {
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 22px;
  font-weight: 700;
  letter-spacing: -0.025em;
}

.analyze-cost-targets {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0;
  margin-top: 10px;
  border-top: 1px solid var(--f-ink-1);
  border-bottom: 1px solid var(--f-ink-1);
  padding: 14px 0;
}
.analyze-cost-targets .analyze-target-card {
  border: 0;
  border-radius: 0;
  background: transparent;
  padding: 0 18px;
  position: relative;
  display: grid;
  gap: 4px;
}
.analyze-cost-targets .analyze-target-card:not(:last-child)::after {
  content: '';
  position: absolute;
  right: 0; top: 2px; bottom: 2px;
  width: 1px;
  background: var(--f-line);
}
.analyze-cost-targets .analyze-target-card span {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.analyze-cost-targets .analyze-target-card strong {
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: clamp(16px, 1.8vw, 22px);
  font-weight: 700;
  letter-spacing: -0.025em;
  line-height: 1;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* === Card Lab v2 — extended polish === */

/* KPI tone variants */
/* Tone — 只改頂部 3px 條的顏色，不再用大面積背景漸層 */
.analyze-kpi-card--gold    { border-top-color: #8a6520; }
.analyze-kpi-card--gold    .analyze-kpi-card__value { color: #8a6520; }
.analyze-kpi-card--green   { border-top-color: #2c6b3c; }
.analyze-kpi-card--green   .analyze-kpi-card__value { color: #2c6b3c; }
.analyze-kpi-card--hot     { border-top-color: #b6452a; }
.analyze-kpi-card--hot     .analyze-kpi-card__value { color: #b6452a; }
.analyze-kpi-card--up      { border-top-color: #2c6b3c; background: rgba(44,107,60,0.04); }
.analyze-kpi-card--up      .analyze-kpi-card__value   { color: #2c6b3c; }
.analyze-kpi-card--down    { border-top-color: #b6452a; background: rgba(182,69,42,0.04); }
.analyze-kpi-card--down    .analyze-kpi-card__value   { color: #b6452a; }
.analyze-kpi-card--neutral { }

/* Chart legend */
.analyze-chart-legend {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: 12px;
  padding: 10px 14px;
  border: 1px dashed var(--f-line);
  border-radius: 14px;
  background: rgba(255,255,255,0.42);
}
.analyze-chart-legend__rows {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
}
.analyze-chart-legend__row {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: var(--f-text-xs);
}
.analyze-chart-legend__dot {
  width: 10px;
  height: 10px;
  border-radius: 999px;
  display: inline-block;
}
.analyze-chart-legend__label {
  color: var(--f-ink-1);
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.analyze-chart-legend__count {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
}
.analyze-chart-legend__note {
  margin: 0;
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
  line-height: 1.4;
}

/* Trade filter chips */
.analyze-trade-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 12px;
}
.analyze-trade-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  border: 1px solid var(--f-line);
  border-radius: 999px;
  background: rgba(255,255,255,0.56);
  color: var(--f-ink-2);
  font-size: var(--f-text-xs);
  font-weight: 700;
  letter-spacing: 0.04em;
  cursor: pointer;
  transition: background var(--f-dur-fast) var(--f-ease), color var(--f-dur-fast) var(--f-ease), border-color var(--f-dur-fast) var(--f-ease);
}
.analyze-trade-chip:hover { color: var(--f-ink-1); border-color: var(--f-ink-3); }
.analyze-trade-chip.is-active {
  background: var(--f-ink-1);
  color: var(--f-bg);
  border-color: var(--f-ink-1);
}
.analyze-trade-chip.tone-gold.is-active  { background: #b6452a; border-color: #b6452a; }
.analyze-trade-chip.tone-green.is-active { background: #2c6b3c; border-color: #2c6b3c; }

/* Trade row badges */
.trade-row__badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 56px;
  padding: 3px 8px;
  border-radius: 6px;
  background: rgba(23,18,13,0.08);
  color: var(--f-ink-2);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.trade-row__badge--psa10   { background: rgba(182,69,42,0.16);  color: #b6452a; }
.trade-row__badge--a       { background: rgba(44,107,60,0.16);  color: #2c6b3c; }
.trade-row__badge--box     { background: rgba(196,158,82,0.20); color: #8a6520; }
.trade-row__badge--pack    { background: rgba(82,120,196,0.18); color: #2c4d8a; }
.trade-row__badge--unknown { background: rgba(23,18,13,0.06);   color: var(--f-ink-3); }
.trade-row__badge--s       { background: rgba(120,75,180,0.16); color: #6a3fb0; }
.trade-row__badge--b       { background: rgba(82,120,196,0.16); color: #2c4d8a; }
.trade-row__badge--c       { background: rgba(140,129,113,0.16); color: #6e5f49; }

/* Trade price color by rarity */
.trade-row__price-cell--psa10  .trade-row__price { color: #b6452a; }
.trade-row__price-cell--a      .trade-row__price { color: #2c6b3c; }
.trade-row__price-cell--s      .trade-row__price { color: #6a3fb0; }
.trade-row__price-cell--b      .trade-row__price { color: #2c4d8a; }
.trade-row__price-cell--c      .trade-row__price { color: #6e5f49; }
.trade-row__price-cell--box    .trade-row__price { color: #8a6520; }
.trade-row__price-cell--pack   .trade-row__price { color: #2c4d8a; }
.trade-row__price-cell--unknown .trade-row__price { color: var(--f-ink-3); }

/* Trade pager */
.analyze-trade-pager {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--f-line);
}
.analyze-trade-pager .ui-btn[disabled] { opacity: 0.4; pointer-events: none; }

/* Samepack tile price stack */
.samepack-tile__meta {
  display: grid;
  gap: 4px;
}
.samepack-tile__row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  font-family: var(--f-font-num);
  font-size: var(--f-text-xs);
}
.samepack-tile__row small {
  color: var(--f-ink-3);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.samepack-tile__row--psa10 ui-price { color: #b6452a; font-weight: 700; }
.samepack-tile__row--a     ui-price { color: #2c6b3c; font-weight: 700; }
.samepack-tile__row--min   .samepack-tile__minprice { color: var(--f-ink-2); font-weight: 700; font-family: var(--f-font-num); }
.samepack-tile__title {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  margin-bottom: 2px;
}
.samepack-tile__name {
  color: var(--f-ink-1);
  font-size: var(--f-text-sm);
  font-weight: 700;
  line-height: 1.25;
  word-break: break-word;
}
.samepack-tile__rarity {
  display: inline-flex;
  align-items: center;
  padding: 2px 6px;
  border-radius: 4px;
  background: rgba(23,18,13,0.08);
  color: var(--f-ink-2);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.06em;
}
.samepack-tile__rarity--sr,
.samepack-tile__rarity--ssr,
.samepack-tile__rarity--sar { background: rgba(196,158,82,0.22); color: #8a6520; }
.samepack-tile__rarity--ar,
.samepack-tile__rarity--ur,
.samepack-tile__rarity--scr { background: rgba(182,69,42,0.16); color: #b6452a; }
.samepack-tile__rarity--rr,
.samepack-tile__rarity--rrr { background: rgba(82,120,196,0.18); color: #2c4d8a; }
.samepack-tile__rarity--r   { background: rgba(44,107,60,0.16); color: #2c6b3c; }
.samepack-tile__rarity--promo,
.samepack-tile__rarity--pr  { background: rgba(120,75,180,0.16); color: #6a3fb0; }
.samepack-tile__number {
  margin-bottom: 4px;
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
}
.samepack-skel {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.trade-row__price-cell {
  display: grid;
  justify-items: end;
  gap: 2px;
  text-align: right;
}
.trade-row__perunit {
  color: var(--f-ink-3);
  font-size: 11px;
  font-family: var(--f-font-num);
}
.trade-row__time strong {
  display: block;
  color: var(--f-ink-2);
  font-weight: 700;
}
.trade-row__time small {
  display: block;
  color: var(--f-ink-3);
  font-size: 10px;
}

/* Tape pill expanded */
.analyze-tape-pill__label {
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.analyze-tape-pill__value {
  color: var(--f-ink-1);
  font-family: var(--f-font-num);
  font-size: var(--f-text-sm);
  font-weight: 700;
}
.analyze-tape-pill__sub {
  color: var(--f-ink-3);
  font-size: 11px;
}

/* Cost calculator condition picker */
.analyze-calc-conditions {
  display: grid;
  gap: 8px;
}
.analyze-calc-kicker {
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.analyze-calc-chip-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.analyze-calc-chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  border: 1px solid var(--f-line);
  border-radius: 12px;
  background: rgba(255,255,255,0.56);
  cursor: pointer;
  transition: background var(--f-dur-fast) var(--f-ease), border-color var(--f-dur-fast) var(--f-ease);
}
.analyze-calc-chip:hover { border-color: var(--f-ink-3); }
.analyze-calc-chip.is-active {
  background: var(--f-ink-1);
  border-color: var(--f-ink-1);
}
.analyze-calc-chip.is-active .analyze-calc-chip__label,
.analyze-calc-chip.is-active .analyze-calc-chip__price {
  color: var(--f-bg);
}
.analyze-calc-chip__label {
  color: var(--f-ink-1);
  font-size: var(--f-text-xs);
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.analyze-calc-chip__price {
  color: var(--f-ink-2);
  font-family: var(--f-font-num);
  font-size: var(--f-text-xs);
  font-weight: 700;
}

/* Cost ROI panel */
.analyze-cost-roi {
  display: grid;
  gap: 8px;
  padding: 14px 16px;
  border-radius: 14px;
  border: 1px solid var(--f-line);
  background: rgba(255,255,255,0.48);
}
.analyze-cost-roi.is-up   { background: var(--f-up-soft);   border-color: rgba(44,107,60,0.28); }
.analyze-cost-roi.is-down { background: var(--f-down-soft); border-color: rgba(182,69,42,0.28); }
.analyze-cost-roi__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.analyze-cost-roi__label {
  color: var(--f-ink-2);
  font-size: var(--f-text-xs);
  font-weight: 700;
}
.analyze-cost-roi__row strong {
  color: var(--f-ink-1);
  font-family: var(--f-font-num);
  font-size: var(--f-text-sm);
  font-weight: 800;
}
.analyze-cost-roi.is-up   strong { color: var(--f-up); }
.analyze-cost-roi.is-down strong { color: var(--f-down); }

/* Grading arbitrage panel */
.analyze-cost-arb {
  display: grid;
  gap: 8px;
  padding: 14px 16px;
  border-radius: 14px;
  border: 1px dashed var(--f-accent);
  background: rgba(179,91,51,0.06);
}
.analyze-cost-arb.is-up   { border-color: rgba(44,107,60,0.40); }
.analyze-cost-arb.is-down { border-color: rgba(182,69,42,0.40); }
.analyze-cost-arb__title {
  color: var(--f-ink-1);
  font-size: var(--f-text-sm);
  font-weight: 800;
  letter-spacing: 0.04em;
}
.analyze-cost-arb__detail {
  color: var(--f-ink-2);
  font-size: var(--f-text-xs);
  line-height: 1.6;
}
.analyze-cost-arb__detail strong { font-family: var(--f-font-num); font-weight: 800; }
.analyze-cost-arb.is-up   .analyze-cost-arb__detail strong { color: var(--f-up); }
.analyze-cost-arb.is-down .analyze-cost-arb__detail strong { color: var(--f-down); }
.analyze-cost-arb__note {
  color: var(--f-ink-3);
  font-size: 11px;
  line-height: 1.5;
}

.analyze-target-card,
.analyze-metric-card {
  display: grid;
  gap: 6px;
  padding: 12px 14px;
  border: 1px solid var(--f-line);
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.48);
}

.analyze-target-card span,
.analyze-metric-card span {
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.analyze-target-card strong,
.analyze-metric-card strong {
  color: var(--f-ink-1);
  font-family: var(--f-font-num);
  font-size: var(--f-text-base);
  font-weight: 700;
}

.analyze-roi-groups {
  display: grid;
  gap: 10px;
}

.analyze-roi-group {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 0;
  border-top: 1px solid var(--f-line);
}

.analyze-roi-group__title {
  color: var(--f-ink-1);
  font-size: var(--f-text-sm);
  font-weight: 700;
}

.analyze-roi-group__sub {
  margin-top: 4px;
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
}

.analyze-roi-group__value {
  font-family: var(--f-font-num);
  font-size: var(--f-text-sm);
  font-weight: 700;
  white-space: nowrap;
}

.analyze-related-card {
  display: grid;
  gap: 14px;
  padding: 18px;
}

.analyze-signal {
  display: grid;
  gap: 6px;
  padding: 14px 16px;
  border-radius: 16px;
  background: rgba(23, 18, 13, 0.04);
}

.analyze-signal strong {
  font-size: var(--f-text-sm);
  font-weight: 800;
}

.analyze-signal span {
  color: var(--f-ink-2);
  font-size: var(--f-text-sm);
  line-height: var(--f-leading-base);
}

.analyze-signal--up {
  background: var(--f-up-soft);
}

.analyze-signal--up strong {
  color: var(--f-up);
}

.analyze-signal--down {
  background: var(--f-down-soft);
}

.analyze-signal--down strong {
  color: var(--f-down);
}

.analyze-signal--warn {
  background: var(--f-warn-soft);
}

.analyze-signal--warn strong {
  color: var(--f-warn);
}

.analyze-metric-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.grade-ladder {
  display: grid;
  gap: 8px;
}

.grade-ladder__row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: 10px;
  align-items: center;
  padding: 10px 0;
  border-top: 1px solid var(--f-line);
}

.grade-ladder__row:first-child {
  border-top: 0;
}

.grade-ladder__label,
.grade-ladder__count {
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
}

.grade-ladder__value {
  color: var(--f-ink-1);
  font-family: var(--f-font-num);
  font-size: var(--f-text-sm);
  font-weight: 700;
}

.analyze-verdict {
  display: grid;
  gap: 8px;
}

.analyze-verdict__title {
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
  font-weight: 800;
  letter-spacing: 0.10em;
  text-transform: uppercase;
}

.analyze-verdict__value {
  font-family: var(--f-font-num);
  font-size: var(--f-text-lg);
  font-weight: 700;
}

.analyze-verdict__note {
  color: var(--f-ink-2);
  font-size: var(--f-text-sm);
  line-height: var(--f-leading-base);
}

.analyze-samepack {
  display: grid;
  gap: 14px;
}

.analyze-samepack__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--f-s4);
  flex-wrap: wrap;
}

.analyze-samepack__toolbar {
  display: flex;
  align-items: center;
  gap: 8px;
}

.analyze-pageinfo {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: var(--f-text-xs);
}

.analyze-samepack__grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.samepack-tile {
  min-width: 0;
}

.samepack-tile .card-tile__title {
  min-height: 2.5em;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  font-size: var(--f-text-xs);
}

.rk-controls {
  display: flex;
  align-items: center;
  gap: var(--f-s3);
  flex-wrap: wrap;
  margin-top: var(--f-s5);
}

.rk-summary-card,
.rk-filter-panel,
.rk-table-shell {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

.rk-summary-card::before,
.rk-filter-panel::before,
.rk-table-shell::before {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: -1;
}

.rk-summary-card::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 320 180'%3E%3Cpath d='M236 0h84v48c-24 0-45-5-65-14-12-5-17-16-19-34Z' fill='%23e7d9c5' fill-opacity='.84'/%3E%3Ccircle cx='282' cy='62' r='4' fill='%23b35b33' fill-opacity='.16'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: top right;
  background-size: 180px auto;
}

.rk-filter-panel::before {
  background:
    linear-gradient(135deg, rgba(179, 91, 51, 0.05), transparent 42%),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 900 280'%3E%3Cpath d='M692 0h208v84c-54 0-102-9-146-26-28-11-45-26-62-58Z' fill='%23eadbc6' fill-opacity='.82'/%3E%3Crect x='778' y='120' width='78' height='16' rx='8' fill='%23e7d9c5' fill-opacity='.88'/%3E%3Ccircle cx='824' cy='150' r='3.5' fill='%23b35b33' fill-opacity='.18'/%3E%3Ccircle cx='846' cy='150' r='3.5' fill='%23d4c2a5' fill-opacity='.6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center, top right;
  background-size: cover, min(640px, 68%) auto;
}

.rk-table-shell::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1100 160'%3E%3Crect x='0' y='0' width='1100' height='1' fill='%23efe6d8'/%3E%3Crect x='0' y='52' width='1100' height='1' fill='%23efe6d8'/%3E%3Crect x='0' y='104' width='1100' height='1' fill='%23efe6d8'/%3E%3Cpath d='M980 0h120v44c-33 0-60-6-86-17-13-6-24-13-34-27Z' fill='%23eadbc5' fill-opacity='.55'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: top center;
  background-size: 100% auto;
  opacity: .72;
}

.rk-filter-panel {
  gap: 18px;
  padding: 20px 24px;
}

.rk-filter-panel__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
  flex-wrap: wrap;
}

.rk-filter-panel__eyebrow {
  color: var(--f-accent);
  font-size: var(--f-text-xs);
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.rk-filter-panel__title {
  margin: 4px 0 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-size: clamp(28px, 3vw, 36px);
  font-weight: 600;
  letter-spacing: -0.04em;
  line-height: 1.05;
}

.rk-filter-panel__note {
  color: var(--f-ink-3);
  font-size: var(--f-text-sm);
  font-weight: 700;
}

.rk-filter-panel__grid {
  display: grid;
  grid-template-columns: max-content minmax(0, 1fr);
  gap: 14px 18px;
  align-items: end;
}

.rk-filter-group {
  display: grid;
  gap: 10px;
}

.rk-filter-group--mode {
  justify-self: end;
  min-width: min(100%, 440px);
}

.rk-filter-group__label {
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
  font-weight: 800;
  letter-spacing: 0.10em;
  text-transform: uppercase;
}

.rk-thumb {
  width: 32px;
  height: 44px;
  border-radius: var(--f-r-sm);
  background: var(--f-surface-3);
  object-fit: cover;
}

.rk-thumb-btn {
  width: 40px;
  height: 52px;
  padding: 0;
  border-radius: 12px;
  overflow: hidden;
  flex-shrink: 0;
  background: transparent;
  transition: transform var(--f-dur-fast) var(--f-ease), box-shadow var(--f-dur-fast) var(--f-ease), border-color var(--f-dur-fast) var(--f-ease);
  border: 1px solid transparent;
}

.rk-thumb-btn:hover {
  transform: translateY(-1px);
  box-shadow: var(--f-shadow-2);
}

.rk-thumb-btn:focus-visible,
.rk-thumb-btn.is-active {
  border-color: var(--f-accent);
}

.rk-thumb-btn .rk-thumb {
  width: 100%;
  height: 100%;
}

.rk-card-cell {
  display: grid;
  grid-template-columns: 40px minmax(0, 1fr);
  align-items: center;
  gap: var(--f-s3);
  min-width: 0;
}

.rk-card-copy {
  min-width: 0;
  max-width: 100%;
  display: grid;
  gap: 5px;
}

.rk-card-cell__title {
  min-width: 0;
  display: block;
  color: var(--f-ink-1);
  font-size: var(--f-text-sm);
  font-weight: 700;
  line-height: var(--f-leading-snug);
  max-width: 100%;
}

.rk-card-cell__name {
  min-width: 0;
  max-width: 100%;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  overflow: hidden;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.rk-card-cell__meta {
  color: var(--f-ink-3);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}

.card-hover-preview {
  position: fixed;
  z-index: 80;
  width: 220px;
  display: grid;
  gap: 10px;
  padding: 12px;
  border: 1px solid rgba(23, 18, 13, 0.10);
  border-radius: 20px;
  background: #fffaf2;
  box-shadow: 0 16px 32px rgba(20, 15, 11, 0.14);
  pointer-events: none;
  contain: layout paint;
}

.card-hover-preview[hidden] {
  display: none !important;
}

.card-hover-preview__media {
  aspect-ratio: 4 / 5;
  overflow: hidden;
  border-radius: 14px;
  background: linear-gradient(180deg, #f8f3ea 0%, #ece2d3 100%);
}

.card-hover-preview__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.card-hover-preview__copy {
  display: grid;
  gap: 4px;
}

.card-hover-preview__copy strong {
  color: var(--f-ink-1);
  font-size: var(--f-text-sm);
  line-height: var(--f-leading-snug);
}

.card-hover-preview__copy span {
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.rk-filter-panel__side {
  display: grid;
  gap: 10px;
  justify-items: end;
}

.rk-layout-tabs {
  width: max-content;
}

.rk-table {
  table-layout: fixed;
}

.rk-table th:nth-child(1),
.rk-table td:nth-child(1) { width: 56px; }
.rk-table th:nth-child(2),
.rk-table td:nth-child(2) { width: 54%; }
.rk-table th:nth-child(3),
.rk-table td:nth-child(3) { width: 120px; }
.rk-table th:nth-child(4),
.rk-table td:nth-child(4) { width: 110px; }
.rk-table th:nth-child(5),
.rk-table td:nth-child(5) { width: 118px; }
.rk-table th:nth-child(6),
.rk-table td:nth-child(6) { width: 88px; }
.rk-table th:nth-child(7),
.rk-table td:nth-child(7) { width: 72px; }

.rk-table-shell .ftr-table th {
  position: static;
}

.rk-dock-preview {
  position: fixed;
  top: calc(var(--f-top-h) + 118px);
  left: 0;
  right: auto;
  z-index: 70;
  width: 236px;
  display: grid;
  gap: 10px;
  padding: 12px;
  border: 1px solid rgba(23, 18, 13, 0.10);
  border-radius: 20px;
  background: #fffaf2;
  box-shadow: 0 16px 32px rgba(20, 15, 11, 0.12);
  contain: layout paint;
  pointer-events: none;
}

.rk-dock-preview[hidden] {
  display: none !important;
}

.rk-dock-preview__media {
  aspect-ratio: 4 / 5;
  overflow: hidden;
  border-radius: 14px;
  background: linear-gradient(180deg, #f8f3ea 0%, #ece2d3 100%);
}

.rk-dock-preview__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.rk-dock-preview__copy {
  display: grid;
  gap: 4px;
}

.rk-dock-preview__copy strong {
  color: var(--f-ink-1);
  font-size: var(--f-text-sm);
  line-height: var(--f-leading-snug);
}

.rk-dock-preview__copy span {
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.rk-dock-preview::after {
  content: '點其他地方關閉';
  color: var(--f-ink-3);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.pv-thumb {
  width: 34px;
  height: 46px;
  border-radius: var(--f-r-sm);
  object-fit: cover;
  background: var(--f-surface-3);
}

.pv-card-cell {
  display: flex;
  align-items: center;
  gap: var(--f-s3);
  min-width: 220px;
  cursor: pointer;
}

.pv-card-copy {
  min-width: 0;
  display: grid;
  gap: 4px;
}

.pv-card-cell__title {
  max-width: 240px;
  color: var(--f-ink-1);
  font-size: var(--f-text-sm);
  font-weight: 700;
  line-height: var(--f-leading-snug);
  white-space: normal;
}

.pv-card-cell__meta {
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
  font-weight: 700;
  line-height: var(--f-leading-snug);
}

.src-listing { color: var(--f-ink-2); }
.src-sold { color: var(--f-ink-3); }
.src-fallback { color: var(--f-down); }
.src-cost { color: var(--f-ink-3); }
.pl--up { color: var(--f-up); }
.pl--down { color: var(--f-down); }

/* ============================================================
   Portfolio · AURORA V2 editorial workspace  [redesigned]
   ============================================================ */

/* —— Page Head —— */
.portfolio-page-head .page-head__row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 24px;
  align-items: center;
}
.portfolio-page-head__copy { display: grid; gap: 12px; max-width: 720px; }
.portfolio-page-head__eyebrow {
  display: inline-flex; align-items: center; gap: 10px;
  font-family: var(--f-font-mono);
  font-size: 11px; font-weight: 700; letter-spacing: 0.30em;
  text-transform: uppercase; color: rgba(135, 70, 28, 0.92);
}
.portfolio-page-head__dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: rgba(180, 80, 30, 0.85);
  box-shadow: 0 0 0 4px rgba(180, 80, 30, 0.18);
  animation: portfolioDotPulse 1.6s ease-in-out infinite;
}
@keyframes portfolioDotPulse {
  0%, 100% { box-shadow: 0 0 0 4px rgba(180, 80, 30, 0.18); }
  50%      { box-shadow: 0 0 0 8px rgba(180, 80, 30, 0.06); }
}
.portfolio-page-head__title {
  margin: 0;
  font-family: var(--f-font-display);
  font-weight: 600;
  font-size: clamp(48px, 7vw, 88px);
  line-height: 0.94;
  letter-spacing: -0.05em;
  color: var(--f-ink-1);
  display: flex; align-items: baseline; gap: 18px; flex-wrap: wrap;
}
.portfolio-page-head__title-em {
  font-family: var(--f-font-display);
  font-style: italic; font-weight: 400;
  font-size: 0.42em; color: rgba(145, 99, 39, 0.78);
  letter-spacing: -0.01em; position: relative;
}
.portfolio-page-head__title-em::after {
  content: ''; position: absolute;
  left: 0; right: 8px; bottom: 4px; height: 0.32em;
  background: linear-gradient(90deg, rgba(245, 200, 120, 0.55), rgba(245, 200, 120, 0));
  z-index: -1;
}
.portfolio-page-head__sub {
  margin: 0; max-width: 56ch;
  color: var(--f-ink-2); font-size: 15px; line-height: 1.65;
}
.portfolio-page-head__deco {
  width: clamp(110px, 14vw, 160px);
  height: clamp(110px, 14vw, 160px);
  color: rgba(145, 99, 39, 0.55);
}
.portfolio-page-head__deco svg { width: 100%; height: 100%; display: block; }

.portfolio-page-head__actions {
  margin-top: 18px;
  display: flex; gap: 8px; flex-wrap: wrap;
}

@media (max-width: 720px) {
  .portfolio-page-head .page-head__row { grid-template-columns: 1fr; }
  .portfolio-page-head__deco { display: none; }
}

/* —— Action buttons (page head + lot detail footer) —— */
.portfolio-action {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 16px;
  border: 1px solid rgba(120, 89, 37, 0.28);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.78);
  color: var(--f-ink-1);
  font-family: var(--f-font-ui);
  font-size: 13.5px; font-weight: 600;
  cursor: pointer;
  transition: transform 160ms ease, border-color 160ms ease, background 160ms ease;
}
.portfolio-action:hover { transform: translateY(-1px); border-color: rgba(145, 99, 39, 0.85); }
.portfolio-action--ghost { background: rgba(255, 255, 255, 0.5); }
.portfolio-action--primary {
  background: linear-gradient(180deg, #2a1f15, #15110c);
  color: #f7e9c5;
  border-color: rgba(218, 184, 106, 0.55);
  box-shadow: 0 6px 14px rgba(20, 15, 10, 0.18);
}
.portfolio-action--primary:hover { border-color: rgba(218, 184, 106, 0.92); }
.portfolio-action__icon { width: 16px; height: 16px; display: inline-flex; }
.portfolio-action__icon svg { width: 100%; height: 100%; }

/* —— KPI grid —— */
.portfolio-kpi-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
  margin-top: 14px;
}
@media (max-width: 980px) { .portfolio-kpi-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .portfolio-kpi-grid { grid-template-columns: 1fr; } }

.portfolio-kpi {
  position: relative;
  display: grid;
  gap: 8px;
  padding: 18px 18px 16px;
  border-radius: 14px;
  border: 1px solid rgba(120, 89, 37, 0.18);
  background:
    radial-gradient(circle at 100% 0%, rgba(218, 184, 106, 0.10), transparent 38%),
    linear-gradient(180deg, #fffdf6 0%, #f6efe0 100%);
  box-shadow: 0 1px 0 rgba(255,255,255,0.7) inset, 0 6px 14px rgba(70, 48, 16, 0.06);
}
.portfolio-kpi--up    { background: radial-gradient(circle at 100% 0%, rgba(70, 130, 80, 0.12), transparent 40%), linear-gradient(180deg, #f6f9ed 0%, #e8efd4 100%); }
.portfolio-kpi--down  { background: radial-gradient(circle at 100% 0%, rgba(180, 70, 50, 0.12), transparent 40%), linear-gradient(180deg, #fbf0ea 0%, #f0d9cc 100%); }

.portfolio-kpi__head {
  display: flex; align-items: center; gap: 8px;
}
.portfolio-kpi__icon {
  width: 18px; height: 18px;
  color: rgba(135, 70, 28, 0.8);
  display: inline-flex;
}
.portfolio-kpi__icon svg { width: 100%; height: 100%; }
.portfolio-kpi__kicker {
  font-family: var(--f-font-mono);
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: rgba(105, 78, 30, 0.78);
}
.portfolio-kpi__value {
  font-family: var(--f-font-display);
  font-size: clamp(28px, 3vw, 38px);
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--f-ink-1);
  line-height: 1;
}
.portfolio-kpi--up .portfolio-kpi__value { color: #2c6b3c; }
.portfolio-kpi--down .portfolio-kpi__value { color: #a13a26; }
.portfolio-kpi__label {
  font-family: var(--f-font-mono);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: rgba(105, 78, 30, 0.62);
}

/* —— Workspace section —— */
.portfolio-workspace { padding: clamp(20px, 2.4vw, 28px); }
.portfolio-workspace__head {
  display: flex; align-items: flex-end; justify-content: space-between;
  gap: 16px; flex-wrap: wrap; margin-bottom: 18px;
  padding-bottom: 14px;
  border-bottom: 1px dashed rgba(120, 89, 37, 0.28);
}
.portfolio-workspace__kicker {
  font-family: var(--f-font-mono);
  font-size: 11px; font-weight: 700; letter-spacing: 0.22em;
  text-transform: uppercase; color: rgba(135, 70, 28, 0.85);
}
.portfolio-workspace__title {
  margin: 4px 0 0;
  font-family: var(--f-font-display);
  font-size: clamp(22px, 2.4vw, 28px);
  font-weight: 600; letter-spacing: -0.02em; color: var(--f-ink-1);
}

.portfolio-stage-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.3fr) minmax(280px, 0.7fr);
  gap: 14px;
}
@media (max-width: 820px) { .portfolio-stage-grid { grid-template-columns: 1fr; } }

.portfolio-stage-card {
  display: grid; gap: 14px;
  padding: 18px 20px;
  border: 1px solid rgba(120, 89, 37, 0.18);
  border-radius: 14px;
  background: rgba(255, 250, 240, 0.65);
}
.portfolio-stage-card__head { display: grid; gap: 4px; }
.portfolio-stage-card__eyebrow {
  font-family: var(--f-font-mono);
  font-size: 10.5px; font-weight: 700; letter-spacing: 0.22em;
  text-transform: uppercase; color: rgba(135, 70, 28, 0.78);
}
.portfolio-stage-card__sub {
  font-family: var(--f-font-ui);
  font-size: 12.5px; color: var(--f-ink-3);
}

/* —— Allocation bar chart —— */
.portfolio-bar-row { margin-bottom: 12px; }
.portfolio-bar-row:last-child { margin-bottom: 0; }
.portfolio-bar-row__head {
  display: flex; justify-content: space-between; align-items: baseline;
  gap: 8px; margin-bottom: 6px;
}
.portfolio-bar-row__name {
  font-family: var(--f-font-display);
  font-size: 14px; font-weight: 600;
  color: var(--f-ink-1);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  max-width: 65%;
}
.portfolio-bar-row__value {
  font-family: var(--f-font-mono);
  font-size: 13px; font-weight: 700;
  color: var(--f-ink-1);
}
.portfolio-bar-row__delta {
  font-size: 11px; margin-left: 6px;
  color: var(--f-ink-3);
}
.portfolio-bar-row.is-up .portfolio-bar-row__delta { color: #2c6b3c; }
.portfolio-bar-row.is-down .portfolio-bar-row__delta { color: #a13a26; }
.portfolio-bar-row__track {
  position: relative; height: 12px;
  background: rgba(120, 89, 37, 0.08);
  border-radius: 6px; overflow: hidden;
}
.portfolio-bar-row__cost,
.portfolio-bar-row__now {
  position: absolute; top: 0; left: 0; height: 100%;
  border-radius: 6px;
  transition: width 280ms cubic-bezier(.2,.8,.2,1);
}
.portfolio-bar-row__cost {
  background: linear-gradient(90deg, rgba(120, 89, 37, 0.35), rgba(120, 89, 37, 0.18));
}
.portfolio-bar-row.is-up .portfolio-bar-row__now {
  background: linear-gradient(90deg, #4a8a5a, #2c6b3c);
}
.portfolio-bar-row.is-down .portfolio-bar-row__now {
  background: linear-gradient(90deg, #c25538, #962a18);
}

/* —— Insights list —— */
.portfolio-insight-list { display: grid; gap: 0; padding: 0; margin: 0; list-style: none; }
.portfolio-insight-row {
  display: grid;
  grid-template-columns: 96px minmax(0, 1fr);
  gap: 4px 14px;
  align-items: baseline;
  padding: 12px 0;
  border-bottom: 1px dashed rgba(120, 89, 37, 0.20);
}
.portfolio-insight-row:last-child { border-bottom: 0; }
.portfolio-insight-row__label {
  font-family: var(--f-font-mono);
  font-size: 10.5px; font-weight: 700;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: rgba(105, 78, 30, 0.72);
}
.portfolio-insight-row__strong {
  font-family: var(--f-font-display);
  font-size: 18px; font-weight: 700;
  color: var(--f-ink-1);
  letter-spacing: -0.01em;
}
.portfolio-insight-row__strong.is-up { color: #2c6b3c; }
.portfolio-insight-row__strong.is-down { color: #a13a26; }
.portfolio-insight-row__sub {
  grid-column: 2;
  font-family: var(--f-font-ui);
  font-size: 12px; color: var(--f-ink-3);
}

/* —— Holdings table —— */
.portfolio-holdings { padding: clamp(20px, 2.4vw, 28px); }
.portfolio-holdings__head {
  display: flex; align-items: flex-end; justify-content: space-between;
  gap: 16px; flex-wrap: wrap; margin-bottom: 18px;
  padding-bottom: 14px;
  border-bottom: 1px dashed rgba(120, 89, 37, 0.28);
}
.portfolio-holdings__kicker {
  font-family: var(--f-font-mono);
  font-size: 11px; font-weight: 700; letter-spacing: 0.22em;
  text-transform: uppercase; color: rgba(135, 70, 28, 0.85);
}
.portfolio-holdings__title {
  margin: 4px 0 4px;
  font-family: var(--f-font-display);
  font-size: clamp(22px, 2.4vw, 28px);
  font-weight: 600; letter-spacing: -0.02em; color: var(--f-ink-1);
}
.portfolio-holdings__sub {
  margin: 0; font-size: 13px; color: var(--f-ink-3);
}
.portfolio-holdings__status { font-family: var(--f-font-mono); font-size: 11px; }
.portfolio-status-pill {
  display: inline-flex; align-items: center;
  padding: 4px 12px;
  border: 1px solid rgba(120, 89, 37, 0.32);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.7);
  font-family: var(--f-font-mono);
  font-size: 10.5px; font-weight: 700;
  letter-spacing: 0.14em; text-transform: uppercase;
  color: rgba(70, 48, 16, 0.78);
}
.portfolio-status-pill.is-error {
  border-color: rgba(180, 70, 50, 0.45);
  color: #a13a26; background: rgba(245, 220, 215, 0.85);
}

/* ============================================
   Portfolio — Holdings table v2 (editorial ledger)
   ============================================ */
.portfolio-table-wrap, .pv-holdings__list-wrap {
  overflow-x: auto;
  border-top: 2px solid var(--f-ink-1);
  border-bottom: 2px solid var(--f-ink-1);
}
.portfolio-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
}
.portfolio-table thead th {
  padding: 12px 12px;
  background: transparent;
  font-family: var(--f-font-num);
  font-size: 10px; font-weight: 800;
  letter-spacing: 0.20em; text-transform: uppercase;
  color: var(--f-ink-3);
  text-align: left;
  border-bottom: 1px solid var(--f-ink-1);
  position: sticky; top: 0; z-index: 1;
  background: var(--f-bg);
}
.portfolio-table thead th.num { text-align: right; }
.portfolio-table__expander { width: 44px; }
.portfolio-table__actions { width: 210px; text-align: right; }

.portfolio-table tbody tr.portfolio-row {
  background: var(--f-bg);
  transition: background 160ms ease, border-left-color 160ms ease;
  position: relative;
}
.portfolio-table tbody tr.portfolio-row td:first-child {
  border-left: 3px solid transparent;
  transition: border-left-color 160ms ease;
}
.portfolio-table tbody tr.portfolio-row:hover { background: rgba(23,18,13,0.025); }
.portfolio-table tbody tr.portfolio-row:hover td:first-child { border-left-color: var(--f-ink-3); }
.portfolio-table tbody tr.portfolio-row.is-expanded { background: rgba(23,18,13,0.04); }
.portfolio-table tbody tr.portfolio-row.is-expanded td:first-child { border-left-color: var(--f-ink-1); }

.portfolio-table tbody td {
  padding: 14px 12px;
  border-bottom: 1px dashed var(--f-line);
  vertical-align: middle;
}
.portfolio-table tbody td.num { text-align: right; }
.portfolio-table tbody tr.portfolio-detail-row td { padding: 0; border-bottom: 2px solid var(--f-ink-1); background: var(--f-bg-elevated); }

.portfolio-row__expand {
  width: 26px; height: 26px;
  border: 1.5px solid var(--f-ink-1);
  border-radius: 50%;
  background: var(--f-bg);
  cursor: pointer;
  display: grid; place-items: center;
  color: var(--f-ink-1);
  transition: transform 200ms ease, background 160ms ease, color 160ms ease;
}
.portfolio-row.is-expanded .portfolio-row__expand,
.portfolio-row__expand:hover {
  background: var(--f-ink-1); color: var(--f-bg);
}
.portfolio-row__expand-icon { width: 14px; height: 14px; display: inline-flex; transition: transform 200ms ease; }
.portfolio-row__expand-icon svg { width: 100%; height: 100%; }
.portfolio-row.is-expanded .portfolio-row__expand-icon { transform: rotate(180deg); }

.portfolio-row__card {
  display: flex; align-items: center; gap: 14px;
  cursor: pointer; min-width: 0;
}
.portfolio-row__thumb {
  width: 44px; height: 60px;
  border-radius: 0;
  object-fit: contain;
  background:
    radial-gradient(ellipse at center, var(--f-bg) 0%, var(--f-bg-elevated) 100%);
  border: 1px solid var(--f-line);
  padding: 3px;
  flex-shrink: 0;
  filter: drop-shadow(0 3px 4px rgba(23,18,13,0.18));
}
.portfolio-row__thumb--blank {
  background: repeating-linear-gradient(45deg, rgba(23,18,13,0.08) 0 6px, transparent 6px 12px);
}
.portfolio-row__copy { display: grid; gap: 4px; min-width: 0; }
.portfolio-row__title {
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 15px; font-weight: 600;
  color: var(--f-ink-1);
  letter-spacing: -0.01em;
  line-height: 1.25;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  max-width: 280px;
}
.portfolio-row__meta {
  font-family: var(--f-font-num);
  font-size: 10px; font-weight: 800;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: var(--f-ink-3);
}

/* Condition badge — cream outline 風 */
.portfolio-cond-badge {
  display: inline-flex; align-items: center;
  padding: 4px 10px;
  border-radius: 0;
  background: var(--f-bg);
  color: var(--f-ink-1);
  border: 1px solid var(--f-ink-1);
  font-family: var(--f-font-num);
  font-size: 10px; font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

/* Numbers — italic Fraunces for primary cells, mono for qty */
.portfolio-num {
  font-family: var(--f-font-num);
  font-size: 14px; font-weight: 800;
  color: var(--f-ink-1);
  letter-spacing: -0.01em;
}
.portfolio-num.is-up { color: #2c6b3c; }
.portfolio-num.is-down { color: #b6452a; }

/* Source badge — tone-coded outline */
.portfolio-source-badge {
  display: inline-flex; align-items: center;
  padding: 2px 8px;
  border-radius: 0;
  font-family: var(--f-font-num);
  font-size: 9px; font-weight: 800;
  letter-spacing: 0.16em; text-transform: uppercase;
  background: transparent;
  color: var(--f-ink-3);
  border: 1px solid currentColor;
}
.portfolio-source-badge.src-listing { color: #2c6b3c; }
.portfolio-source-badge.src-sold    { color: #2c4d8a; }
.portfolio-source-badge.src-cost    { color: var(--f-ink-3); }

/* Action icon buttons — square editorial */
.portfolio-icon-btn {
  display: inline-grid; place-items: center;
  width: 28px; height: 28px;
  border: 1px solid var(--f-line);
  border-radius: 0;
  background: var(--f-bg);
  color: var(--f-ink-2);
  cursor: pointer;
  margin-left: 4px;
  transition: background 160ms ease, color 160ms ease, border-color 160ms ease, transform 160ms ease;
}
.portfolio-icon-btn svg { width: 14px; height: 14px; }
.portfolio-icon-btn:hover {
  transform: translateY(-1px);
  border-color: var(--f-ink-1);
  background: var(--f-ink-1);
  color: var(--f-bg);
}
.portfolio-icon-btn--edit:hover { background: #c49e52; border-color: #c49e52; color: var(--f-ink-1); }
.portfolio-icon-btn--add:hover  { background: #2c6b3c; border-color: #2c6b3c; color: var(--f-bg); }
.portfolio-icon-btn--del:hover  { background: #b6452a; border-color: #b6452a; color: var(--f-bg); }
.portfolio-icon-btn--xs { width: 22px; height: 22px; }
.portfolio-icon-btn--xs svg { width: 11px; height: 11px; }

/* Status pill (right of header) */
.portfolio-status-pill {
  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  border: 1px dashed var(--f-line);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--f-ink-3);
}
.portfolio-status-pill.is-error { border-color: #b6452a; color: #b6452a; }

/* —— Detail (expanded) row —— */
/* Lot detail expansion */
.portfolio-detail-row td {
  padding: 0 !important;
  background: var(--f-bg-elevated);
}
.portfolio-detail {
  padding: 20px 28px 22px;
  animation: portfolioDetailIn 220ms ease-out both;
  position: relative;
  border-top: 1px dashed var(--f-ink-1);
  border-bottom: 1px dashed var(--f-ink-1);
}
.portfolio-detail::before {
  /* 左側書脊般的標籤條 */
  content: '';
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 3px;
  background: var(--f-ink-1);
}
@keyframes portfolioDetailIn {
  from { transform: translateY(-4px); opacity: 0; }
  to   { transform: translateY(0); opacity: 1; }
}
.portfolio-detail__head {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: 12px; margin-bottom: 14px;
  padding-bottom: 10px;
  border-bottom: 1px dashed var(--f-line);
}
.portfolio-detail__kicker {
  font-family: var(--f-font-num);
  font-size: 10px; font-weight: 800;
  letter-spacing: 0.20em; text-transform: uppercase;
  color: var(--f-ink-2);
  position: relative;
}
.portfolio-detail__kicker::before {
  content: '◆ ';
  color: var(--f-accent);
  margin-right: 4px;
}
.portfolio-detail__count {
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 14px;
  font-weight: 600;
  color: var(--f-ink-1);
}
.portfolio-detail__list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 12px;
}
.portfolio-detail__foot {
  display: flex; gap: 8px; justify-content: flex-end;
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1px dashed var(--f-line);
}

/* Single lot mini card — editorial filing card */
.portfolio-lot-mini {
  position: relative;
  padding: 14px 16px;
  border: 1px solid rgba(23,18,13,0.18);
  border-radius: 0;
  background: var(--f-bg);
  transition: transform 0.16s var(--f-ease), box-shadow 0.16s var(--f-ease);
}
.portfolio-lot-mini::before {
  /* 左上角硬色條 — 像 filing card 的色標 */
  content: '';
  position: absolute;
  top: -1px; left: -1px;
  width: 24px; height: 3px;
  background: var(--f-accent);
}
.portfolio-lot-mini:hover {
  transform: translateY(-2px);
  box-shadow: 6px 6px 0 -3px rgba(23,18,13,0.10);
  border-color: var(--f-ink-1);
}
.portfolio-lot-mini__head {
  display: flex; align-items: center; gap: 8px;
  margin-bottom: 10px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--f-line);
}
.portfolio-lot-mini__index {
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 14px;
  font-weight: 600;
  letter-spacing: -0.01em;
  color: var(--f-ink-1);
}
.portfolio-lot-mini__date {
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--f-ink-3);
  margin-left: auto;
  margin-right: 4px;
}
.portfolio-lot-mini__grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px 12px;
}
.portfolio-lot-mini__cell {
  display: grid; gap: 3px;
}
.portfolio-lot-mini__cell span {
  font-family: var(--f-font-num);
  font-size: 9px; font-weight: 800;
  letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--f-ink-3);
}
.portfolio-lot-mini__cell strong {
  font-family: var(--f-font-num);
  font-size: 14px; font-weight: 800;
  color: var(--f-ink-1);
  letter-spacing: -0.01em;
  line-height: 1.1;
}
.portfolio-lot-mini__fees {
  display: flex; flex-wrap: wrap; gap: 4px;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px dashed var(--f-line);
}
.portfolio-lot-mini__fee {
  display: inline-flex; align-items: center;
  padding: 2px 8px;
  border-radius: 0;
  background: transparent;
  border: 1px solid var(--f-line);
  font-family: var(--f-font-num);
  font-size: 9px; font-weight: 800;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: var(--f-ink-2);
}

/* Empty state — editorial */
.portfolio-empty {
  display: grid; justify-items: center; gap: 10px;
  padding: 60px 16px;
  text-align: center;
  border: 1px dashed var(--f-line);
  margin: 24px;
}
.portfolio-empty__mark {
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 72px;
  font-weight: 700;
  line-height: 1;
  color: var(--f-ink-3);
}
.portfolio-empty__title {
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 22px; font-weight: 600;
  color: var(--f-ink-1);
  letter-spacing: -0.02em;
}
.portfolio-empty__sub {
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 13px;
  color: var(--f-ink-3);
  max-width: 360px;
  line-height: 1.5;
}

.form-row {
  display: grid;
  gap: var(--f-s2);
  margin-bottom: var(--f-s4);
}

.form-row label {
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
  font-weight: 800;
  letter-spacing: 0.10em;
  text-transform: uppercase;
}

.form-row input,
.form-row select {
  width: 100%;
  height: 42px;
  padding: 0 14px;
  border: 1px solid var(--f-line);
  border-radius: var(--f-r-md);
  background: rgba(255, 255, 255, 0.72);
  color: var(--f-ink-1);
}

.form-row input:focus,
.form-row select:focus {
  border-color: var(--f-accent);
  outline: none;
  box-shadow: var(--f-focus-ring);
}

.wl-list {
  display: grid;
  gap: 0;
  border-top: 1px solid var(--f-line);
}

.wl-row {
  display: grid;
  grid-template-columns: 56px minmax(0, 1fr) minmax(120px, auto) auto;
  gap: var(--f-s4);
  align-items: center;
  padding: 18px 0;
  border-bottom: 1px solid var(--f-line);
  cursor: pointer;
  transition: background var(--f-dur-fast) var(--f-ease);
}

.wl-row:hover {
  background: rgba(255, 255, 255, 0.42);
}

.wl-row__thumb {
  width: 56px;
  height: 72px;
  border-radius: var(--f-r-sm);
  object-fit: cover;
  background: var(--f-surface-3);
}

.wl-row__title {
  color: var(--f-ink-1);
  font-size: var(--f-text-sm);
  font-weight: 700;
  line-height: var(--f-leading-snug);
}

.wl-row__main {
  min-width: 0;
}

.wl-row__sub {
  margin-top: 4px;
  color: var(--f-ink-3);
  font-size: var(--f-text-xs);
}

.wl-row__market {
  display: grid;
  gap: 4px;
  justify-items: end;
}

.wl-row__price,
.wl-row__delta {
  font-family: var(--f-font-num);
}

.wl-row__price {
  font-weight: 700;
}

.wl-row__delta {
  min-width: 72px;
  text-align: right;
  font-size: var(--f-text-xs);
  font-weight: 700;
}

.wl-row__delta-note {
  font-size: 11px;
  font-weight: 700;
  text-align: right;
}

.wl-row__delta--up { color: var(--f-up); }
.wl-row__delta--down { color: var(--f-down); }

.wl-row__actions {
  display: flex;
  gap: 4px;
}

@media (max-width: 900px) {
  .analyze-layout {
    grid-template-columns: 1fr;
  }

  .analyze-sidebar {
    position: static;
    max-width: 100%;
  }

  .analyze-kpi-grid,
  .analyze-cost-layout,
  .analyze-related-grid,
  .analyze-samepack__grid,
  .portfolio-stage-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .rk-filter-panel__grid {
    grid-template-columns: 1fr;
  }

  .rk-filter-group--mode {
    justify-self: stretch;
    min-width: 0;
  }

  .rk-filter-panel__side {
    justify-items: start;
  }

  .rk-table th:nth-child(2),
  .rk-table td:nth-child(2) { width: auto; }

  .rk-dock-preview {
    display: none !important;
  }
}

@media (max-width: 768px) {
  .search-hero {
    padding-top: var(--f-s6);
  }

  .search-hero__title {
    font-size: clamp(40px, 13vw, 64px);
  }

  .search-input {
    min-height: 58px;
    font-size: var(--f-text-base);
  }

  .search-console__bar {
    grid-template-columns: 1fr;
  }

  .dashboard-showcase__duo {
    grid-template-columns: 1fr;
  }

  .dashboard-showcase__rich {
    width: min(520px, 88vw);
    left: 48%;
    top: 24px;
    opacity: .3;
  }

  .dashboard-spotlight-card__body {
    grid-template-columns: 1fr;
  }

  .dashboard-spotlight-card__media {
    min-height: 260px;
  }

  .dashboard-showcase__strip,
  .dashboard-wall-grid {
    grid-template-columns: 1fr;
  }

  .dashboard-poster-lane {
    justify-content: flex-start;
    min-height: 88px;
  }

  .dashboard-poster-float {
    width: 60px;
    min-width: 60px;
    height: 82px;
  }

  .arb-control-grid,
  .arb-results-grid {
    grid-template-columns: 1fr;
  }

  .market-lead-card__body {
    grid-template-columns: 72px minmax(0, 1fr);
  }

  .market-movers-groups {
    grid-template-columns: 1fr;
  }

  .market-lead-card__thumb {
    width: 72px;
    height: 94px;
  }

  .search-stage__top,
  .search-stage__mode,
  .search-stage__foot {
    justify-items: start;
    align-items: flex-start;
  }

  .search-stage__filters,
  .search-results-controls {
    justify-content: flex-start;
  }

  .search-workspace {
    grid-template-columns: 1fr;
  }

  .search-rail {
    position: static;
  }

  .search-rail-groups,
  .search-catalog-groups {
    max-height: none;
    overflow: visible;
    padding-right: 0;
  }

  .search-rarity-select,
  .search-submit-btn {
    height: 56px;
  }

  .search-results-head {
    align-items: flex-start;
  }

  .search-pager {
    flex-direction: column;
  }

  .search-state-row {
    align-items: flex-start;
  }

  .search-fold__summary {
    padding: 14px 16px;
  }

  .search-fold__body {
    padding: 0 16px 16px;
  }

  .analyze-head-actions {
    width: 100%;
    align-items: flex-start;
  }

  .analyze-price-hero {
    align-items: flex-start;
  }

  .trade-list-head,
  .trade-row {
    grid-template-columns: 64px 1fr auto;
  }

  .analyze-fx-grid,
  .analyze-kpi-grid,
  .analyze-tape-summary,
  .analyze-cost-layout,
  .analyze-related-grid,
  .analyze-cost-targets,
  .analyze-samepack__grid,
  .portfolio-stage-grid {
    grid-template-columns: 1fr;
  }

  .rk-card-cell__title,
  .pv-card-cell__title {
    max-width: 150px;
  }

  .rk-card-cell {
    min-width: 240px;
  }

  .card-hover-preview {
    display: none !important;
  }

  .wl-row {
    grid-template-columns: 48px minmax(0, 1fr) auto;
    gap: var(--f-s3);
    padding: 14px 0;
  }

  .wl-row__thumb {
    width: 48px;
    height: 62px;
  }

  .wl-row__market,
  .wl-row__actions {
    display: none;
  }
}

/* ============================================================
   Strategy (Arbitrage) page — A → PSA 10 grading workflow
   ============================================================ */
/* ===============================================
   Strategy — Editorial Hero (same magazine cover language as Card Lab)
   =============================================== */
.strat-hero {
  position: relative;
  margin: 0 0 var(--f-s5);
  padding: 42px 44px 32px 80px;
  border: 1px solid rgba(23,18,13,0.18);
  background: var(--f-bg);
  box-shadow:
    0 0 0 1px var(--f-bg) inset,
    0 0 0 2px rgba(23,18,13,0.10) inset,
    24px 24px 0 -20px rgba(23,18,13,0.06);
  overflow: hidden;
  isolation: isolate;
}
.strat-hero__watermark {
  position: absolute;
  right: -4%;
  bottom: -32%;
  pointer-events: none;
  z-index: 0;
  font-family: var(--f-font-display);
  font-style: italic;
  font-weight: 600;
  font-size: clamp(180px, 26vw, 340px);
  line-height: 0.82;
  letter-spacing: -0.06em;
  color: transparent;
  -webkit-text-stroke: 1px rgba(23,18,13,0.07);
  text-stroke: 1px rgba(23,18,13,0.07);
  user-select: none;
  white-space: nowrap;
}
.strat-hero__grain {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 1;
  opacity: 0.35;
  mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml;utf8,<svg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.09  0 0 0 0 0.07  0 0 0 0 0.05  0 0 0 0.45 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  background-size: 220px 220px;
}
.strat-hero__spine {
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 52px;
  background: var(--f-ink-1);
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
}
.strat-hero__spine::before,
.strat-hero__spine::after {
  content: '';
  position: absolute;
  left: 6px; right: 6px;
  height: 1px;
  background: rgba(255,255,255,0.20);
}
.strat-hero__spine::before { top: 24px; }
.strat-hero__spine::after { bottom: 24px; }
.strat-hero__spine-text {
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  color: var(--f-bg);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.42em;
  text-transform: uppercase;
  white-space: nowrap;
}
.strat-hero__rules {
  position: relative;
  height: 6px;
  margin: 0 0 16px;
}
.strat-hero__rules::before,
.strat-hero__rules::after {
  content: '';
  position: absolute;
  left: 0; right: 0;
  height: 1px;
  background: var(--f-ink-1);
}
.strat-hero__rules::before { top: 0; }
.strat-hero__rules::after  { bottom: 0; height: 2px; }
/* 右側手繪風蓋章 — 偏斜放置，有手作感 */
.strat-hero__stamp {
  position: relative;
  z-index: 3;
  width: 132px;
  height: 132px;
  display: flex;
  align-items: center;
  justify-content: center;
  transform: rotate(-9deg);
  align-self: start;
  margin-top: 4px;
}
.strat-hero__stamp-ring {
  position: absolute;
  inset: 0;
  border: 2px solid var(--f-ink-1);
  border-radius: 50%;
}
.strat-hero__stamp-ring::after {
  content: '';
  position: absolute;
  inset: 5px;
  border: 1px solid var(--f-ink-1);
  border-radius: 50%;
}
.strat-hero__stamp-text {
  position: relative;
  display: grid;
  gap: 2px;
  justify-items: center;
  color: var(--f-ink-1);
  font-family: var(--f-font-num);
  font-weight: 800;
  text-transform: uppercase;
  text-align: center;
}
.strat-hero__stamp-text span:first-child { font-size: 9px; letter-spacing: 0.20em; }
.strat-hero__stamp-text strong {
  font-family: var(--f-font-display);
  font-style: italic;
  font-weight: 700;
  font-size: 20px;
  letter-spacing: -0.01em;
  line-height: 1;
}
.strat-hero__stamp-text span:last-child {
  margin-top: 2px;
  padding: 2px 8px;
  background: var(--f-ink-1);
  color: var(--f-bg);
  font-size: 9px;
  letter-spacing: 0.20em;
}
.strat-hero__inner {
  position: relative;
  z-index: 3;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 32px;
  align-items: start;
}
.strat-hero__left { display: block; }
.strat-hero__eyebrow {
  display: flex;
  align-items: baseline;
  gap: 12px;
  margin-bottom: 8px;
  color: var(--f-ink-2);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.20em;
  text-transform: uppercase;
}
.strat-hero__eyebrow-mark {
  padding: 3px 8px;
  background: var(--f-ink-1);
  color: var(--f-bg);
  letter-spacing: 0.24em;
}
.strat-hero__eyebrow-text { color: var(--f-ink-3); }
.strat-hero__title {
  margin: 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: clamp(34px, 4.6vw, 56px);
  font-weight: 600;
  line-height: 1.02;
  letter-spacing: -0.035em;
}
.strat-hero__title-big {
  display: inline-block;
  font-size: 1.45em;
  font-weight: 700;
  letter-spacing: -0.05em;
  background: linear-gradient(180deg, var(--f-ink-1) 60%, var(--f-accent) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  margin: 0 4px;
}
.strat-hero__title em {
  font-style: italic;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-decoration-color: var(--f-accent);
  text-underline-offset: 6px;
}
.strat-hero__desc {
  margin: 14px 0 0;
  padding-left: 14px;
  border-left: 2px solid var(--f-ink-1);
  max-width: 640px;
  color: var(--f-ink-2);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 14px;
  font-weight: 500;
  line-height: 1.6;
}
.strat-mode-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin-top: 20px;
}
.strat-mode-card {
  display: grid;
  gap: 4px;
  padding: 14px 18px;
  border-radius: 16px;
  border: 1px solid rgba(23,18,13,0.12);
  background: rgba(255,255,255,0.55);
  cursor: pointer;
  text-align: left;
  transition: transform var(--f-dur-fast) var(--f-ease), background var(--f-dur-fast) var(--f-ease), border-color var(--f-dur-fast) var(--f-ease);
}
.strat-mode-card:hover { transform: translateY(-2px); border-color: var(--f-ink-3); }
.strat-mode-card.is-active {
  background: var(--f-ink-1);
  border-color: var(--f-ink-1);
  color: var(--f-bg);
}
.strat-mode-card.is-active strong, .strat-mode-card.is-active small { color: var(--f-bg); }
.strat-mode-card__icon { font-size: 20px; }
.strat-mode-card strong { color: var(--f-ink-1); font-size: 15px; font-weight: 800; }
.strat-mode-card small { color: var(--f-ink-3); font-size: 11px; font-weight: 700; letter-spacing: 0.04em; }

/* Panel */
.strat-panel { padding: 24px; display: grid; gap: 18px; }
.strat-panel__head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  flex-wrap: wrap;
}
.strat-panel__title {
  margin: 4px 0 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: clamp(22px, 2.4vw, 28px);
  font-weight: 600;
}
.strat-preset-groups { display: grid; gap: 14px; }
.strat-preset-group {
  padding: 14px;
  border-radius: 14px;
  background: rgba(255,255,255,0.50);
  border: 1px solid var(--f-line);
}
.strat-preset-group__head {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin-bottom: 10px;
}
.strat-preset-group__title { color: var(--f-ink-1); font-weight: 800; font-size: 14px; }
.strat-preset-group__sub { color: var(--f-ink-3); font-size: 11px; font-weight: 700; letter-spacing: 0.04em; }
.strat-chip-row { display: flex; flex-wrap: wrap; gap: 6px; }
.strat-chip {
  padding: 6px 12px;
  border-radius: 999px;
  border: 1px solid var(--f-line);
  background: rgba(255,255,255,0.72);
  color: var(--f-ink-2);
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
  transition: background var(--f-dur-fast) var(--f-ease), color var(--f-dur-fast) var(--f-ease), border-color var(--f-dur-fast) var(--f-ease);
}
.strat-chip:hover { border-color: var(--f-ink-3); color: var(--f-ink-1); }
.strat-chip.is-active {
  background: linear-gradient(135deg, #b6452a, #8a3220);
  border-color: #8a3220;
  color: var(--f-bg);
  box-shadow: 0 4px 12px -4px rgba(182,69,42,0.50);
}

/* Controls */
/* Controls — editorial filter row with vertical dividers */
.strat-controls {
  display: flex;
  flex-wrap: wrap;
  gap: 0;
  align-items: stretch;
  padding: 14px 0;
  background: transparent;
  border-top: 1px solid var(--f-ink-1);
  border-bottom: 1px solid var(--f-ink-1);
  position: relative;
}
.strat-controls::before {
  content: 'Filters';
  position: absolute;
  top: -8px;
  left: 14px;
  padding: 0 8px;
  background: var(--f-bg);
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.20em;
  text-transform: uppercase;
}
.strat-control {
  display: grid;
  gap: 6px;
  padding: 0 22px;
  position: relative;
}
.strat-control:not(:first-child)::before {
  content: '';
  position: absolute;
  left: 0; top: 4px; bottom: 4px;
  width: 1px;
  background: var(--f-line);
}
.strat-control:first-child { padding-left: 28px; }
.strat-control__label {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
/* 自訂下拉 — 去掉預設樣式，用 mono italic 風 */
.strat-select {
  -webkit-appearance: none;
  appearance: none;
  padding: 6px 28px 6px 4px;
  border: 0;
  border-bottom: 1.5px solid var(--f-ink-1);
  border-radius: 0;
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' fill='none' stroke='%2317120d' stroke-width='1.5'/></svg>") no-repeat right 6px center,
    transparent;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 16px;
  font-weight: 600;
  letter-spacing: -0.01em;
  cursor: pointer;
  min-width: 100px;
}
.strat-select:focus { outline: 0; border-bottom-color: var(--f-accent); }
.strat-pill-row {
  display: inline-flex;
  gap: 0;
  padding: 0;
  border-radius: 0;
  background: transparent;
  border: 0;
}
.strat-pill {
  padding: 6px 14px;
  border-radius: 0;
  background: transparent;
  border: 1px solid var(--f-line);
  border-right: 0;
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.04em;
  cursor: pointer;
  transition: background var(--f-dur-fast) var(--f-ease), color var(--f-dur-fast) var(--f-ease);
}
.strat-pill:last-child { border-right: 1px solid var(--f-line); }
.strat-pill:hover { color: var(--f-ink-1); border-color: var(--f-ink-2); }
.strat-pill.is-active { background: var(--f-ink-1); color: var(--f-bg); border-color: var(--f-ink-1); }

/* Meta cards */
.strat-meta-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin: 18px 0;
}
.strat-meta-card {
  padding: 16px 18px;
  border-radius: 18px;
  border: 1px solid var(--f-line);
  background: rgba(255,255,255,0.56);
  display: grid;
  gap: 6px;
}
.strat-meta-card--gold    { background: linear-gradient(180deg, rgba(196,158,82,0.10), rgba(255,255,255,0.60)); border-color: rgba(196,158,82,0.32); }
.strat-meta-card--green   { background: linear-gradient(180deg, rgba(44,107,60,0.08),  rgba(255,255,255,0.60)); border-color: rgba(44,107,60,0.28); }
.strat-meta-card--hot     { background: linear-gradient(180deg, rgba(182,69,42,0.08),  rgba(255,255,255,0.60)); border-color: rgba(182,69,42,0.28); }
.strat-meta-card__label { color: var(--f-ink-3); font-size: 11px; font-weight: 800; letter-spacing: 0.10em; text-transform: uppercase; }
.strat-meta-card__value { color: var(--f-ink-1); font-family: var(--f-font-num); font-size: 22px; font-weight: 700; line-height: 1.1; }
.strat-meta-card__sub { color: var(--f-ink-3); font-size: 12px; line-height: 1.4; }

/* Preview */
.strat-preview { padding: 18px 20px; display: grid; gap: 12px; }
.strat-preview__head { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.strat-preview__title { color: var(--f-ink-1); font-size: 14px; font-weight: 800; letter-spacing: 0.04em; }
.strat-preview__sub { color: var(--f-ink-3); font-size: 12px; }
.strat-preview__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: 10px;
}
.strat-preview-card {
  display: grid;
  gap: 6px;
  padding: 10px;
  border-radius: 12px;
  border: 1px solid var(--f-line);
  background: rgba(255,255,255,0.66);
  text-align: left;
  cursor: pointer;
  transition: transform var(--f-dur-fast) var(--f-ease), border-color var(--f-dur-fast) var(--f-ease);
}
.strat-preview-card:hover { transform: translateY(-2px); border-color: var(--f-ink-3); }
.strat-preview-card img { width: 100%; aspect-ratio: 5/7; object-fit: cover; border-radius: 8px; background: var(--f-line); }
.strat-preview-card__nothumb { aspect-ratio: 5/7; border-radius: 8px; background: var(--f-line); }
.strat-preview-card__name { color: var(--f-ink-1); font-size: 12px; font-weight: 700; line-height: 1.25; }
.strat-preview-card__num { color: var(--f-ink-3); font-family: var(--f-font-num); font-size: 10px; font-weight: 700; }

/* Note */
.strat-note {
  margin: 4px 0 14px;
  padding: 12px 16px;
  border-left: 3px solid var(--f-accent);
  background: rgba(179, 91, 51, 0.06);
  color: var(--f-ink-2);
  font-size: 13px;
  line-height: 1.6;
}

/* Results */
.strat-results-shell { display: grid; gap: 14px; }
.strat-results-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.strat-results-head__title { margin: 0; color: var(--f-ink-1); font-family: var(--f-font-display); font-style: italic; font-size: 22px; font-weight: 600; }
.strat-results-head__sub { color: var(--f-ink-3); font-size: 12px; font-weight: 700; letter-spacing: 0.04em; }
.strat-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 14px;
}
/* (舊版 v1 strat-card 樣式已移除 — 完整定義在下方 7470+) */

/* Empty */
.strat-empty {
  display: grid;
  gap: 10px;
  justify-items: center;
  padding: 48px 24px;
  border-radius: 18px;
  background: rgba(255,255,255,0.50);
  border: 1px dashed var(--f-line);
  text-align: center;
}
.strat-empty__icon { font-size: 36px; }
.strat-empty h3 { margin: 0; color: var(--f-ink-1); font-size: 16px; font-weight: 800; }
.strat-empty p { margin: 0; color: var(--f-ink-3); font-size: 13px; line-height: 1.6; max-width: 420px; }

/* Rules */
.strat-rules { padding: 24px; display: grid; gap: 16px; }
.strat-rules__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 12px;
}
.strat-rules__card {
  position: relative;
  padding: 18px;
  border-radius: 16px;
  border: 1px solid var(--f-line);
  background: rgba(255,255,255,0.56);
}
.strat-rules__card--warn { border-color: rgba(182,69,42,0.32); background: rgba(182,69,42,0.05); }
.strat-rules__num {
  display: inline-block;
  margin-bottom: 8px;
  padding: 3px 8px;
  border-radius: 4px;
  background: var(--f-ink-1);
  color: var(--f-bg);
  font-family: var(--f-font-num);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.10em;
}
.strat-rules__card h3 { margin: 0 0 6px; color: var(--f-ink-1); font-size: 14px; font-weight: 800; }
.strat-rules__card p { margin: 0; color: var(--f-ink-2); font-size: 13px; line-height: 1.6; }

@media (max-width: 900px) {
  .strat-hero__inner { grid-template-columns: 1fr; }
  .strat-hero__stamp { justify-self: end; }
  .strat-meta-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 600px) {
  .strat-hero { padding: 28px 22px 22px 60px; }
  .strat-hero__spine { width: 38px; }
  .strat-hero__watermark { font-size: 140px; }
  .strat-hero__stamp { width: 100px; height: 100px; }
  .strat-mode-grid { grid-template-columns: 1fr; }
  .strat-meta-grid { grid-template-columns: 1fr; }
}

/* ===============================================
   Strategy — Collapsible character pool
   =============================================== */
/* Strategy — Pool collapsible (vintage library card / editorial divider) */
.strat-pool {
  position: relative;
  border: 1px solid rgba(23,18,13,0.18);
  background: var(--f-bg);
  overflow: hidden;
  border-radius: 0;
}
.strat-pool::before {
  content: '';
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 6px;
  background: var(--f-ink-1);
}
.strat-pool.is-open { box-shadow: 8px 8px 0 -4px rgba(23,18,13,0.08); }
.strat-pool__head {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 16px 18px 16px 24px;
  background: transparent;
  border: 0;
  text-align: left;
  cursor: pointer;
  font: inherit;
  color: inherit;
  position: relative;
  transition: background var(--f-dur-fast) var(--f-ease);
}
.strat-pool__head:hover { background: rgba(23,18,13,0.03); }
.strat-pool__head::after {
  /* 下方 1px dashed 線（僅在收合狀態顯示，作為視覺收口） */
  content: '';
  position: absolute;
  left: 24px; right: 18px; bottom: 0;
  height: 1px;
  background-image: linear-gradient(to right, var(--f-line) 50%, transparent 50%);
  background-size: 6px 1px;
  opacity: 0;
  transition: opacity var(--f-dur-fast) var(--f-ease);
}
.strat-pool.is-open .strat-pool__head::after { opacity: 1; }
.strat-pool__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px; height: 38px;
  background: var(--f-ink-1);
  color: var(--f-bg);
  font-size: 18px;
  flex-shrink: 0;
}
.strat-pool__copy { flex: 1; display: grid; gap: 4px; min-width: 0; }
.strat-pool__title {
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 20px;
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: -0.01em;
}
.strat-pool__sub {
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
.strat-pool__count-pill {
  padding: 2px 7px;
  background: rgba(23,18,13,0.08);
  color: var(--f-ink-1);
  letter-spacing: 0.10em;
}
.strat-pool__caret {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px; height: 32px;
  border: 1.5px solid var(--f-ink-1);
  border-radius: 999px;
  color: var(--f-ink-1);
  font-family: var(--f-font-num);
  font-size: 12px;
  font-weight: 800;
  background: var(--f-bg);
  transition: background var(--f-dur-fast) var(--f-ease), color var(--f-dur-fast) var(--f-ease), transform var(--f-dur-fast) var(--f-ease);
}
.strat-pool__head:hover .strat-pool__caret { background: var(--f-ink-1); color: var(--f-bg); }
.strat-pool.is-open .strat-pool__caret { background: var(--f-ink-1); color: var(--f-bg); transform: rotate(180deg); }
.strat-pool__body {
  padding: 0 18px 18px 24px;
  display: grid;
  gap: 14px;
}
.strat-pool__body[hidden] { display: none; }  /* class > [hidden] UA default — must explicitly override */
.strat-pool__row { display: grid; gap: 8px; padding-top: 12px; }
.strat-pool__row-label {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
.strat-chip--star {
  border-color: rgba(196,158,82,0.55);
  background: linear-gradient(180deg, rgba(196,158,82,0.10), rgba(255,255,255,0.72));
}
.strat-chip--star.is-active {
  background: linear-gradient(135deg, #b6452a, #8a3220);
  border-color: #8a3220;
}

/* ===============================================
   Strategy — Results header + summary bar
   =============================================== */
.strat-results-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 16px;
  margin-bottom: 4px;
  padding-bottom: 14px;
  border-bottom: 2px solid var(--f-ink-1);
}
.strat-results-head__kicker {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.20em;
  text-transform: uppercase;
}
.strat-results-head__title {
  margin: 4px 0 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-size: 28px;
  font-weight: 600;
  letter-spacing: -0.02em;
}
.strat-results-head__title em {
  font-style: italic;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-decoration-color: var(--f-accent);
  text-underline-offset: 4px;
}
.strat-results-head__sub {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
}
/* Summary band — editorial table (cream + thin rules, no black bg) */
.strat-summary {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  align-items: stretch;
  padding: 0;
  margin: 14px 0 18px;
  background: transparent;
  border-top: 2px solid var(--f-ink-1);
  border-bottom: 1px solid var(--f-ink-1);
  flex-wrap: nowrap;
}
.strat-summary__item {
  display: grid;
  gap: 6px;
  padding: 14px 18px;
  min-width: 0;
  position: relative;
}
.strat-summary__item span {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.strat-summary__item span::before {
  /* 小數字標記 01-04 */
  content: counter(strat-summary-item, decimal-leading-zero);
  counter-increment: strat-summary-item;
  padding: 2px 5px;
  background: var(--f-bg-elevated);
  color: var(--f-ink-2);
  font-size: 9px;
}
.strat-summary {
  counter-reset: strat-summary-item;
}
.strat-summary__item strong {
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 26px;
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1;
}
.strat-summary__item strong.is-up   { color: #2c6b3c; }
.strat-summary__item strong.is-down { color: #b6452a; }
.strat-summary__divider {
  width: 1px;
  align-self: stretch;
  background: var(--f-line);
}

/* ===============================================
   Strategy — Result Cards v2 (editorial)
   =============================================== */
.strat-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 18px;
}
.strat-card {
  position: relative;
  display: grid;
  gap: 14px;
  padding: 18px 18px 16px;
  border: 1px solid rgba(23,18,13,0.18);
  background: var(--f-bg);
  cursor: pointer;
  transition: transform 0.22s var(--f-ease), box-shadow 0.22s var(--f-ease), border-color 0.22s var(--f-ease);
  border-radius: 0;
  overflow: hidden;
}
.strat-card:hover {
  transform: translateY(-4px);
  box-shadow: 14px 14px 0 -6px rgba(23,18,13,0.10), 0 2px 0 0 var(--f-ink-1) inset;
  border-color: var(--f-ink-1);
}
.strat-card--top {
  border-color: var(--f-ink-1);
  box-shadow: 6px 6px 0 -2px rgba(23,18,13,0.18);
}
.strat-card--top:hover { box-shadow: 16px 16px 0 -6px rgba(23,18,13,0.18), 0 2px 0 0 var(--f-ink-1) inset; }
/* TOP 3 加一個 ribbon 細節 — italic Fraunces 浮在右上 */
.strat-card--top::before {
  content: 'TOP 3';
  position: absolute;
  top: 14px;
  right: 30px;
  font-family: var(--f-font-num);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.24em;
  color: var(--f-accent);
  z-index: 3;
}
/* 左側 hairline 條 — 取代醜黑三角，像書脊書籤 */
.strat-card__corner {
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 4px;
  background: var(--f-line);
}
.strat-card--top .strat-card__corner { background: var(--f-ink-1); }
.strat-card--high .strat-card__corner { background: linear-gradient(180deg, #b6452a, #8a3220); }
.strat-card--mid  .strat-card__corner { background: linear-gradient(180deg, #c49e52, #8a6520); }
.strat-card--low  .strat-card__corner { background: var(--f-line); }
/* 右上一條 hairline 斜線（去掉粗黑切角） */
.strat-card::after {
  content: '';
  position: absolute;
  top: 14px; right: -8px;
  width: 26px;
  height: 1px;
  background: rgba(23,18,13,0.20);
  transform: rotate(-45deg);
  transform-origin: right center;
  pointer-events: none;
}
.strat-card--top::after { background: var(--f-ink-1); height: 1.5px; }
.strat-card__head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  position: relative;
  z-index: 2;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--f-line);
}
/* Rank — quiet typographic mark, no chunky italic that looks like a box */
.strat-card__rank {
  display: inline-flex;
  align-items: baseline;
  gap: 4px;
  color: var(--f-ink-2);
}
.strat-card__rank-no {
  font-family: var(--f-font-num);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.20em;
  text-transform: uppercase;
  color: var(--f-ink-3);
}
.strat-card__rank-num {
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 18px;
  font-weight: 500;
  line-height: 1;
  letter-spacing: -0.02em;
  color: var(--f-ink-2);
}
.strat-card--top .strat-card__rank-num { color: var(--f-ink-1); font-weight: 600; }
/* Grade — italic serif inside double ring */
.strat-card__grade {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px; height: 36px;
  border-radius: 50%;
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 18px;
  font-weight: 700;
  border: 1.5px solid currentColor;
  letter-spacing: -0.02em;
}
.strat-card__grade::before {
  /* 內圈雙環 */
  content: '';
  position: absolute;
  inset: 3px;
  border: 1px solid currentColor;
  border-radius: 50%;
  opacity: 0.45;
}
.strat-card__grade--s { color: #b6452a; background: rgba(196,158,82,0.18); }
.strat-card__grade--a { color: #2c6b3c; background: rgba(44,107,60,0.14); }
.strat-card__grade--b { color: #2c4d8a; background: rgba(82,120,196,0.14); }
.strat-card__grade--c { color: var(--f-ink-3); background: rgba(23,18,13,0.05); }

/* Media — cream paper backdrop + 內陰影 + 卡片浮在中央 */
.strat-card__media {
  position: relative;
  aspect-ratio: 4/3;
  overflow: hidden;
  background:
    radial-gradient(ellipse at center, var(--f-bg) 0%, var(--f-bg-elevated) 100%);
  border: 1px solid var(--f-line);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.40), inset 0 -12px 24px -16px rgba(23,18,13,0.18);
}
.strat-card__media img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  padding: 8px;
  filter: drop-shadow(0 6px 8px rgba(23,18,13,0.18));
  transition: transform 0.32s var(--f-ease);
}
.strat-card:hover .strat-card__media img { transform: scale(1.04) translateY(-2px); }
.strat-card__media-tag {
  position: absolute;
  left: 10px;
  bottom: 10px;
  padding: 4px 10px;
  background: var(--f-bg);
  color: var(--f-ink-1);
  border: 1px solid var(--f-ink-1);
  box-shadow: 2px 2px 0 0 rgba(23,18,13,0.18);
  font-family: var(--f-font-num);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
/* 卡圖右下角 — 一個小印章/角標，標 grading 路徑 */
.strat-card__media::after {
  content: '※';
  position: absolute;
  right: 10px;
  bottom: 8px;
  color: var(--f-ink-3);
  font-size: 14px;
  opacity: 0.5;
}
.strat-card__body { display: grid; gap: 12px; }
.strat-card__title {
  margin: 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 17px;
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: -0.01em;
}
.strat-card__num {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

/* Hero number — editorial double rule top/bottom, no boxy border */
.strat-card__hero {
  position: relative;
  padding: 14px 4px 14px 0;
  border-top: 1px solid var(--f-ink-1);
  border-bottom: 3px double var(--f-ink-1);
  display: grid;
  gap: 4px;
  background: transparent;
}
.strat-card__hero--up   { border-color: #2c6b3c; }
.strat-card__hero--down { border-color: #b6452a; }
.strat-card__hero-label {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.20em;
  text-transform: uppercase;
}
.strat-card__hero-value {
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 34px;
  font-weight: 700;
  line-height: 0.95;
  letter-spacing: -0.04em;
}
.strat-card__hero--up   .strat-card__hero-value { color: #2c6b3c; }
.strat-card__hero--down .strat-card__hero-value { color: #b6452a; }
.strat-card__hero-roi {
  position: absolute;
  top: 14px;
  right: 16px;
  display: inline-flex;
  align-items: baseline;
  gap: 4px;
  color: var(--f-ink-1);
  font-family: var(--f-font-num);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.02em;
  border-bottom: 2px solid var(--f-accent);
  padding-bottom: 1px;
  background: transparent;
}
.strat-card__hero-roi::before {
  content: 'ROI';
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.16em;
  color: var(--f-ink-3);
}
.strat-card__hero--up   .strat-card__hero-roi { color: #2c6b3c; border-bottom-color: #2c6b3c; }
.strat-card__hero--down .strat-card__hero-roi { color: #b6452a; border-bottom-color: #b6452a; }

/* Bridge — 雜誌「資訊對比」橫向比較 */
.strat-card__bridge {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: stretch;
  gap: 0;
  padding: 12px 0;
  border-top: 1px dashed var(--f-line);
  border-bottom: 1px dashed var(--f-line);
}
.strat-card__leg {
  display: grid;
  gap: 4px;
  padding: 0 4px;
}
.strat-card__leg--buy  { border-left: 2px solid #2c6b3c; padding-left: 10px; }
.strat-card__leg--sell { border-right: 2px solid #b6452a; padding-right: 10px; justify-items: end; text-align: right; }
.strat-card__leg-tag {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
.strat-card__leg--buy  .strat-card__leg-tag { color: #2c6b3c; }
.strat-card__leg--sell .strat-card__leg-tag { color: #b6452a; }
.strat-card__leg strong {
  color: var(--f-ink-1);
  font-family: var(--f-font-num);
  font-size: 17px;
  font-weight: 800;
  line-height: 1.05;
  letter-spacing: -0.01em;
}
.strat-card__leg small {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.04em;
}
.strat-card__arrow {
  display: grid;
  justify-items: center;
  align-content: center;
  gap: 4px;
  padding: 0 12px;
  color: var(--f-ink-2);
  border-left: 1px dotted var(--f-line);
  border-right: 1px dotted var(--f-line);
}
.strat-card__arrow svg { color: var(--f-accent); }
.strat-card__arrow-label {
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 10px;
  font-weight: 600;
  color: var(--f-ink-3);
  letter-spacing: 0.02em;
  text-transform: none;
}

/* Metrics — 3 欄編輯表格，去除 bridge 重複的 dashed border */
.strat-card__metrics {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0;
  margin: 0;
  padding: 0;
}
.strat-card__metric {
  display: grid;
  gap: 4px;
  padding: 4px 10px 4px 0;
  position: relative;
}
.strat-card__metric:not(:first-child) { padding-left: 12px; }
.strat-card__metric:not(:last-child)::after {
  content: '';
  position: absolute;
  right: 0; top: 6px; bottom: 6px;
  width: 1px;
  background: var(--f-line);
}
.strat-card__metric dt {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.strat-card__metric dd {
  margin: 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-num);
  font-size: 14px;
  font-weight: 800;
  line-height: 1.05;
  display: flex;
  align-items: baseline;
  gap: 4px;
  flex-wrap: wrap;
}
.strat-card__metric dd small {
  color: var(--f-ink-3);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0;
}

/* CTA — editorial link with arrow, no black button */
.strat-card__footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 4px;
  border-top: 1px solid var(--f-line);
  margin-top: 2px;
}
.strat-card__footer::before {
  content: 'Open in Lab';
  color: var(--f-ink-3);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 13px;
  font-weight: 500;
}
.strat-card__cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 0 8px 14px;
  background: transparent;
  color: var(--f-ink-1);
  border: 0;
  font-family: var(--f-font-num);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background var(--f-dur-fast) var(--f-ease), transform var(--f-dur-fast) var(--f-ease);
}
.strat-card__cta:hover { color: var(--f-accent); transform: translateX(4px); }
.strat-card__cta svg { transition: transform var(--f-dur-fast) var(--f-ease); }
.strat-card__cta:hover svg { transform: translateX(2px); }

/* 移除舊版 card 樣式覆寫不影響到 - 上面新的 class 名稱與舊的重疊不影響 layout */

/* ===============================================
   Strategy — Reading Key (editorial legend, no black bg)
   =============================================== */
.strat-legend {
  display: grid;
  gap: 16px;
  padding: 22px 24px;
  margin-bottom: 18px;
  background: var(--f-bg-elevated);
  border: 1px solid rgba(23,18,13,0.18);
  border-top: 3px double var(--f-ink-1);
  position: relative;
}
.strat-legend::before {
  /* 左上書角 */
  content: '✦';
  position: absolute;
  top: -12px;
  left: 22px;
  width: 22px;
  height: 22px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--f-bg-elevated);
  color: var(--f-ink-1);
  font-size: 12px;
}
.strat-legend__head {
  display: flex;
  align-items: baseline;
  gap: 12px;
  padding-bottom: 12px;
  border-bottom: 1px dashed var(--f-line);
}
.strat-legend__kicker {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.20em;
  text-transform: uppercase;
}
.strat-legend__title {
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 22px;
  font-weight: 600;
  letter-spacing: -0.015em;
}
.strat-legend__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
}
.strat-legend__col {
  display: grid;
  gap: 10px;
  position: relative;
}
.strat-legend__col:not(:last-child)::after {
  /* 欄位之間細直線 */
  content: '';
  position: absolute;
  top: 4px; bottom: 4px;
  right: -12px;
  width: 1px;
  background: var(--f-line);
}
.strat-legend__col-title {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
.strat-legend__items {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 10px;
}
.strat-legend__items li {
  display: grid;
  grid-template-columns: 28px 1fr;
  gap: 10px;
  align-items: start;
  color: var(--f-ink-2);
  font-size: 12px;
  line-height: 1.5;
}
.strat-legend__items strong {
  display: block;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-weight: 600;
  font-size: 13px;
  margin-bottom: 2px;
}
.strat-legend__items em {
  font-style: italic;
  color: var(--f-ink-1);
  font-weight: 700;
  border-bottom: 1px solid var(--f-accent);
  padding-bottom: 1px;
}
/* Grade dot — colored circle with letter (matches card grade pills) */
.strat-legend__dot {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  font-family: var(--f-font-num);
  font-size: 12px;
  font-weight: 800;
  border: 1.5px solid currentColor;
}
.strat-legend__dot--s { color: #b6452a; background: rgba(196,158,82,0.16); }
.strat-legend__dot--a { color: #2c6b3c; background: rgba(44,107,60,0.12); }
.strat-legend__dot--b { color: #2c4d8a; background: rgba(82,120,196,0.12); }
.strat-legend__dot--c { color: var(--f-ink-3); background: rgba(23,18,13,0.05); }
/* Terms column: no dot, use a thin square instead */
.strat-legend__items--terms li { grid-template-columns: 1fr; }
.strat-legend__items--tips .strat-legend__num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 18px;
  font-weight: 600;
  color: var(--f-accent);
  line-height: 1;
}

@media (max-width: 900px) {
  .strat-summary { grid-template-columns: repeat(2, 1fr); }
  .strat-legend__grid { grid-template-columns: 1fr; }
  .strat-legend__col:not(:last-child)::after { display: none; }
  .strat-legend__col:not(:last-child) {
    border-bottom: 1px dashed var(--f-line);
    padding-bottom: 14px;
  }
}

/* ===============================================
   Portfolio — Editorial Hero (magazine cover style)
   =============================================== */
.pv-hero {
  position: relative;
  margin: 0 0 var(--f-s5);
  padding: 38px 44px 28px 80px;
  border: 1px solid rgba(23,18,13,0.18);
  background: var(--f-bg);
  box-shadow:
    0 0 0 1px var(--f-bg) inset,
    0 0 0 2px rgba(23,18,13,0.10) inset,
    24px 24px 0 -20px rgba(23,18,13,0.06);
  overflow: hidden;
  isolation: isolate;
}
.pv-hero__watermark {
  position: absolute;
  right: -4%;
  bottom: -32%;
  pointer-events: none;
  z-index: 0;
  font-family: var(--f-font-display);
  font-style: italic;
  font-weight: 600;
  font-size: clamp(180px, 26vw, 340px);
  line-height: 0.82;
  letter-spacing: -0.06em;
  color: transparent;
  -webkit-text-stroke: 1px rgba(23,18,13,0.07);
  text-stroke: 1px rgba(23,18,13,0.07);
  user-select: none;
  white-space: nowrap;
}
.pv-hero__grain {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 1;
  opacity: 0.35;
  mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml;utf8,<svg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.09  0 0 0 0 0.07  0 0 0 0 0.05  0 0 0 0.45 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  background-size: 220px 220px;
}
.pv-hero__spine {
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 52px;
  background: var(--f-ink-1);
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
}
.pv-hero__spine::before,
.pv-hero__spine::after {
  content: '';
  position: absolute;
  left: 6px; right: 6px;
  height: 1px;
  background: rgba(255,255,255,0.20);
}
.pv-hero__spine::before { top: 24px; }
.pv-hero__spine::after { bottom: 24px; }
.pv-hero__spine-text {
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  color: var(--f-bg);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.42em;
  text-transform: uppercase;
  white-space: nowrap;
}
.pv-hero__rules {
  position: relative;
  height: 6px;
  margin: 0 0 16px;
}
.pv-hero__rules::before,
.pv-hero__rules::after {
  content: '';
  position: absolute;
  left: 0; right: 0;
  height: 1px;
  background: var(--f-ink-1);
}
.pv-hero__rules::before { top: 0; }
.pv-hero__rules::after  { bottom: 0; height: 2px; }
.pv-hero__inner {
  position: relative;
  z-index: 3;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 32px;
  align-items: start;
}
.pv-hero__left { display: block; }
.pv-hero__eyebrow {
  display: flex;
  align-items: baseline;
  gap: 12px;
  margin-bottom: 8px;
  color: var(--f-ink-2);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.20em;
  text-transform: uppercase;
}
.pv-hero__eyebrow-mark {
  padding: 3px 8px;
  background: var(--f-ink-1);
  color: var(--f-bg);
  letter-spacing: 0.24em;
}
.pv-hero__eyebrow-text { color: var(--f-ink-3); }
.pv-hero__title {
  margin: 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: clamp(34px, 4.6vw, 56px);
  font-weight: 600;
  line-height: 1.02;
  letter-spacing: -0.035em;
}
.pv-hero__title em {
  font-style: italic;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-decoration-color: var(--f-accent);
  text-underline-offset: 6px;
}
.pv-hero__desc {
  margin: 14px 0 0;
  padding-left: 14px;
  border-left: 2px solid var(--f-ink-1);
  max-width: 640px;
  color: var(--f-ink-2);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 14px;
  font-weight: 500;
  line-height: 1.6;
}
.pv-hero__stamp {
  position: relative;
  z-index: 3;
  width: 132px;
  height: 132px;
  display: flex;
  align-items: center;
  justify-content: center;
  transform: rotate(-7deg);
  align-self: start;
  margin-top: 4px;
}
.pv-hero__stamp-ring {
  position: absolute;
  inset: 0;
  border: 2px solid var(--f-ink-1);
  border-radius: 50%;
}
.pv-hero__stamp-ring::after {
  content: '';
  position: absolute;
  inset: 5px;
  border: 1px solid var(--f-ink-1);
  border-radius: 50%;
}
.pv-hero__stamp-text {
  position: relative;
  display: grid;
  gap: 2px;
  justify-items: center;
  color: var(--f-ink-1);
  font-family: var(--f-font-num);
  font-weight: 800;
  text-transform: uppercase;
  text-align: center;
}
.pv-hero__stamp-text span:first-child { font-size: 9px; letter-spacing: 0.20em; }
.pv-hero__stamp-text strong {
  font-family: var(--f-font-display);
  font-style: italic;
  font-weight: 700;
  font-size: 20px;
  letter-spacing: -0.01em;
  line-height: 1;
}
.pv-hero__stamp-text span:last-child {
  margin-top: 2px;
  padding: 2px 8px;
  background: var(--f-ink-1);
  color: var(--f-bg);
  font-size: 9px;
  letter-spacing: 0.20em;
}

/* Action row */
.pv-hero__actions {
  position: relative;
  z-index: 3;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px dashed var(--f-line);
}
.pv-action {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 9px 16px;
  background: transparent;
  border: 1px solid var(--f-ink-1);
  color: var(--f-ink-1);
  font-family: var(--f-font-num);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background var(--f-dur-fast) var(--f-ease), color var(--f-dur-fast) var(--f-ease), transform var(--f-dur-fast) var(--f-ease);
}
.pv-action:hover {
  background: var(--f-ink-1);
  color: var(--f-bg);
  transform: translateY(-1px);
}
.pv-action--ghost { border-color: rgba(23,18,13,0.40); color: var(--f-ink-2); }
.pv-action--ghost:hover { border-color: var(--f-ink-1); color: var(--f-bg); background: var(--f-ink-1); }
.pv-action--primary {
  background: var(--f-ink-1);
  color: var(--f-bg);
}
.pv-action--primary:hover { background: var(--f-accent); border-color: var(--f-accent); }
.pv-action__icon { width: 16px; height: 16px; display: inline-flex; }
.pv-action__icon svg { width: 100%; height: 100%; }

@media (max-width: 900px) {
  .pv-hero__inner { grid-template-columns: 1fr; }
  .pv-hero__stamp { justify-self: end; }
}
@media (max-width: 600px) {
  .pv-hero { padding: 28px 22px 22px 60px; }
  .pv-hero__spine { width: 38px; }
  .pv-hero__watermark { font-size: 140px; }
  .pv-hero__stamp { width: 100px; height: 100px; }
}

/* ===============================================
   Portfolio — KPI cards (editorial)
   =============================================== */
.pv-kpi-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
}
.pv-kpi {
  position: relative;
  display: grid;
  gap: 8px;
  padding: 20px 22px 18px;
  border: 1px solid rgba(23,18,13,0.18);
  background: var(--f-bg);
  overflow: hidden;
  transition: transform 0.18s var(--f-ease), box-shadow 0.18s var(--f-ease);
}
.pv-kpi:hover { transform: translateY(-3px); box-shadow: 10px 10px 0 -6px rgba(23,18,13,0.10); }
.pv-kpi__corner {
  position: absolute;
  top: 10px;
  right: 14px;
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 11px;
  font-weight: 600;
  color: var(--f-ink-3);
  letter-spacing: 0.02em;
}
.pv-kpi__corner::before {
  content: 'Nº ';
  font-family: var(--f-font-num);
  font-style: normal;
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--f-ink-3);
}
.pv-kpi__head {
  display: flex;
  align-items: center;
  gap: 10px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--f-line);
}
.pv-kpi__icon {
  width: 26px;
  height: 26px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--f-ink-1);
}
.pv-kpi__icon svg { width: 100%; height: 100%; }
.pv-kpi__kicker {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
.pv-kpi__value {
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 32px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: -0.035em;
}
.pv-kpi__label {
  color: var(--f-ink-2);
  font-family: var(--f-font-num);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

/* tone variants — 用上下 double rule + 漸層 hue 強調漲跌 */
.pv-kpi--up   { border-top: 3px solid #2c6b3c; }
.pv-kpi--down { border-top: 3px solid #b6452a; }
.pv-kpi--up   .pv-kpi__value { color: #2c6b3c; }
.pv-kpi--down .pv-kpi__value { color: #b6452a; }
.pv-kpi--neutral { border-top: 3px solid var(--f-ink-1); }

@media (max-width: 900px) {
  .pv-kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 480px) {
  .pv-kpi-grid { grid-template-columns: 1fr; }
}

/* ===============================================
   Portfolio — Workspace (Allocation × Insights)
   =============================================== */
.pv-workspace {
  margin-top: var(--f-s5);
  padding: 0;
  background: transparent;
  border: 0;
}
.pv-workspace__head {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 16px;
  padding-bottom: 14px;
  border-bottom: 2px solid var(--f-ink-1);
  margin-bottom: 18px;
}
.pv-workspace__kicker {
  display: block;
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.20em;
  text-transform: uppercase;
}
.pv-workspace__title {
  margin: 4px 0 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 28px;
  font-weight: 600;
  letter-spacing: -0.02em;
}
.pv-workspace__title-x { color: var(--f-ink-3); font-style: normal; }
.pv-workspace__title em {
  font-style: italic;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-decoration-color: var(--f-accent);
  text-underline-offset: 4px;
}

/* Editorial segmented sort */
.pv-segment {
  display: inline-flex;
  border: 1px solid var(--f-ink-1);
}
.pv-segment__btn {
  padding: 7px 14px;
  background: transparent;
  border: 0;
  border-right: 1px solid var(--f-ink-1);
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.10em;
  cursor: pointer;
  transition: background var(--f-dur-fast) var(--f-ease), color var(--f-dur-fast) var(--f-ease);
}
.pv-segment__btn:last-child { border-right: 0; }
.pv-segment__btn:hover { color: var(--f-ink-1); }
.pv-segment__btn.is-active { background: var(--f-ink-1); color: var(--f-bg); }

.pv-workspace__grid {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  gap: 18px;
}

/* ---- Allocation panel ---- */
.pv-allocation {
  padding: 22px;
  border: 1px solid rgba(23,18,13,0.18);
  background: var(--f-bg);
  position: relative;
}
.pv-allocation::before {
  /* corner stamp */
  content: 'A';
  position: absolute;
  top: -10px; left: 22px;
  width: 22px; height: 22px;
  background: var(--f-bg);
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 14px;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--f-ink-1);
  border-radius: 50%;
}
.pv-allocation__head {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 10px;
  margin-bottom: 14px;
  padding-bottom: 10px;
  border-bottom: 1px dashed var(--f-line);
}
.pv-allocation__kicker {
  display: block;
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.20em;
  text-transform: uppercase;
}
.pv-allocation__title {
  margin: 4px 0 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 20px;
  font-weight: 600;
}
.pv-allocation__legend {
  display: inline-flex;
  gap: 12px;
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
}
.pv-allocation__legend span { display: inline-flex; align-items: center; gap: 5px; }
.pv-allocation__sw {
  display: inline-block;
  width: 12px; height: 8px;
}
.pv-allocation__sw--now { background: #2c6b3c; }
.pv-allocation__sw--cost {
  background:
    repeating-linear-gradient(45deg, var(--f-ink-3) 0 3px, transparent 3px 6px);
  border: 1px solid var(--f-ink-3);
  opacity: 0.6;
}
.pv-allocation__list { display: grid; gap: 14px; }
.pv-allocation__empty {
  padding: 40px 20px;
  text-align: center;
  color: var(--f-ink-3);
  font-family: var(--f-font-display);
  font-style: italic;
  border: 1px dashed var(--f-line);
}

/* row */
.pv-alloc-row {
  display: grid;
  grid-template-columns: 56px 1fr;
  gap: 16px;
  padding: 10px 12px;
  background: transparent;
  border: 0;
  border-left: 3px solid transparent;
  text-align: left;
  width: 100%;
  cursor: pointer;
  transition: background var(--f-dur-fast) var(--f-ease), border-color var(--f-dur-fast) var(--f-ease);
}
.pv-alloc-row:hover { background: rgba(23,18,13,0.03); border-left-color: var(--f-ink-1); }
.pv-alloc-row.is-up   { border-left-color: rgba(44,107,60,0.30); }
.pv-alloc-row.is-down { border-left-color: rgba(182,69,42,0.30); }
.pv-alloc-row:hover.is-up   { border-left-color: #2c6b3c; }
.pv-alloc-row:hover.is-down { border-left-color: #b6452a; }
.pv-alloc-row__rank {
  display: grid;
  justify-items: center;
  align-content: center;
  gap: 0;
}
.pv-alloc-row__rank-no {
  font-family: var(--f-font-num);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.20em;
  text-transform: uppercase;
  color: var(--f-ink-3);
}
.pv-alloc-row__rank-num {
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 36px;
  font-weight: 700;
  line-height: 0.9;
  letter-spacing: -0.04em;
  color: var(--f-ink-1);
}
.pv-alloc-row__body { display: grid; gap: 6px; min-width: 0; }
.pv-alloc-row__head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
  min-width: 0;
}
.pv-alloc-row__name {
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.25;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  flex: 1 1 0;
  min-width: 0;
}
.pv-alloc-row__share {
  color: var(--f-ink-1);
  font-family: var(--f-font-num);
  font-size: 13px;
  font-weight: 800;
  letter-spacing: -0.01em;
  flex: 0 0 auto;
  font-variant-numeric: tabular-nums;
}
/* dual stacked tracks (cost = striped behind, now = solid in front) */
.pv-alloc-row__track {
  position: relative;
  height: 12px;
  background: var(--f-bg-elevated);
  border: 1px solid var(--f-line);
}
.pv-alloc-row__cost {
  position: absolute;
  top: 0; left: 0; bottom: 0;
  background:
    repeating-linear-gradient(45deg, rgba(23,18,13,0.30) 0 3px, transparent 3px 6px);
  border-right: 1px dashed var(--f-ink-3);
}
.pv-alloc-row__now {
  position: absolute;
  top: 0; left: 0; bottom: 0;
  background: #2c6b3c;
  border-right: 1px solid var(--f-ink-1);
}
.pv-alloc-row.is-down .pv-alloc-row__now { background: #b6452a; }
.pv-alloc-row__foot {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
  font-family: var(--f-font-num);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.02em;
  min-width: 0;
  font-variant-numeric: tabular-nums;
}
.pv-alloc-row__value {
  color: var(--f-ink-2);
  flex: 0 1 auto;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  min-width: 0;
}
.pv-alloc-row__delta {
  color: #2c6b3c;
  flex: 0 0 auto;
  white-space: nowrap;
}
.pv-alloc-row.is-down .pv-alloc-row__delta { color: #b6452a; }

/* ---- Insights panel ---- */
.pv-insights {
  padding: 22px;
  border: 1px solid rgba(23,18,13,0.18);
  background: var(--f-bg);
  position: relative;
}
.pv-insights::before {
  content: 'I';
  position: absolute;
  top: -10px; left: 22px;
  width: 22px; height: 22px;
  background: var(--f-bg);
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 14px;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--f-ink-1);
  border-radius: 50%;
}
.pv-insights__head {
  margin-bottom: 14px;
  padding-bottom: 10px;
  border-bottom: 1px dashed var(--f-line);
}
.pv-insights__kicker {
  display: block;
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.20em;
  text-transform: uppercase;
}
.pv-insights__title {
  margin: 4px 0 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 20px;
  font-weight: 600;
}
.pv-insights__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0;
  border-top: 1px solid var(--f-line);
  border-left: 1px solid var(--f-line);
}
.pv-insight {
  position: relative;
  display: grid;
  gap: 4px;
  padding: 16px 14px 14px;
  border-right: 1px solid var(--f-line);
  border-bottom: 1px solid var(--f-line);
  background: var(--f-bg);
  min-height: 130px;
}
.pv-insight__idx {
  position: absolute;
  top: 8px;
  right: 12px;
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.16em;
}
.pv-insight__kicker {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.pv-insight__value {
  margin-top: 6px;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: clamp(18px, 1.6vw, 24px);
  font-weight: 700;
  line-height: 1.1;
  letter-spacing: -0.025em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-variant-numeric: tabular-nums;
  min-width: 0;
}
.pv-insight--up   .pv-insight__value { color: #2c6b3c; }
.pv-insight--down .pv-insight__value { color: #b6452a; }
.pv-insight__label {
  color: var(--f-ink-2);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.pv-insight__meta {
  margin-top: auto;
  padding-top: 8px;
  color: var(--f-ink-3);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 12px;
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  border-top: 1px dashed var(--f-line);
}
.pv-insights__empty {
  grid-column: 1 / -1;
  padding: 40px 20px;
  text-align: center;
  color: var(--f-ink-3);
  font-family: var(--f-font-display);
  font-style: italic;
}

/* ===============================================
   Portfolio — Holdings header + view toggle
   =============================================== */
.pv-holdings {
  margin-top: var(--f-s5);
  padding: 0;
}
.pv-holdings__head {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 16px;
  padding-bottom: 14px;
  border-bottom: 2px solid var(--f-ink-1);
  margin-bottom: 18px;
  flex-wrap: wrap;
}
.pv-holdings__kicker {
  display: block;
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.20em;
  text-transform: uppercase;
}
.pv-holdings__title {
  margin: 4px 0 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 28px;
  font-weight: 600;
  letter-spacing: -0.02em;
}
.pv-holdings__sub {
  margin: 6px 0 0;
  color: var(--f-ink-3);
  font-size: 13px;
  font-style: italic;
  font-family: var(--f-font-display);
}
.pv-holdings__head-right {
  display: flex;
  align-items: center;
  gap: 14px;
}
.pv-holdings__status { color: var(--f-ink-3); font-size: 12px; font-family: var(--f-font-num); }

.pv-viewtoggle {
  display: inline-flex;
  border: 1px solid var(--f-ink-1);
}
.pv-viewtoggle__btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 12px;
  background: transparent;
  border: 0;
  border-right: 1px solid var(--f-ink-1);
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.10em;
  cursor: pointer;
  transition: background var(--f-dur-fast) var(--f-ease), color var(--f-dur-fast) var(--f-ease);
}
.pv-viewtoggle__btn:last-child { border-right: 0; }
.pv-viewtoggle__btn:hover { color: var(--f-ink-1); }
.pv-viewtoggle__btn.is-active { background: var(--f-ink-1); color: var(--f-bg); }

/* ===============================================
   Portfolio — Grid view (card-based)
   =============================================== */
.pv-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 18px;
}
.pv-grid__empty {
  grid-column: 1 / -1;
  display: grid;
  justify-items: center;
  gap: 10px;
  padding: 60px 20px;
  border: 1px dashed var(--f-line);
  color: var(--f-ink-3);
}
.pv-grid__empty-mark { font-size: 36px; }

.pv-card {
  position: relative;
  display: grid;
  gap: 0;
  border: 1px solid rgba(23,18,13,0.18);
  background: var(--f-bg);
  overflow: hidden;
  transition: transform 0.22s var(--f-ease), box-shadow 0.22s var(--f-ease), border-color 0.22s var(--f-ease);
}
.pv-card:hover {
  transform: translateY(-3px);
  border-color: var(--f-ink-1);
  box-shadow: 12px 12px 0 -6px rgba(23,18,13,0.10);
}
.pv-card__open {
  position: absolute;
  top: 10px; right: 10px;
  z-index: 5;
  width: 30px; height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--f-bg);
  color: var(--f-ink-1);
  border: 1px solid var(--f-ink-1);
  border-radius: 999px;
  cursor: pointer;
  transition: background var(--f-dur-fast) var(--f-ease), color var(--f-dur-fast) var(--f-ease);
}
.pv-card__open:hover { background: var(--f-ink-1); color: var(--f-bg); }
.pv-card__open svg { width: 14px; height: 14px; }
.pv-card__media {
  position: relative;
  aspect-ratio: 4/3;
  overflow: hidden;
  background:
    radial-gradient(ellipse at center, var(--f-bg) 0%, var(--f-bg-elevated) 100%);
  border-bottom: 1px solid var(--f-line);
  cursor: pointer;
}
.pv-card__media img {
  width: 100%; height: 100%; object-fit: contain;
  padding: 10px;
  filter: drop-shadow(0 6px 8px rgba(23,18,13,0.18));
  transition: transform 0.32s var(--f-ease);
}
.pv-card:hover .pv-card__media img { transform: scale(1.04) translateY(-2px); }
.pv-card__media-empty {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  color: var(--f-ink-3);
  font-size: 32px;
}
.pv-card__condbadge {
  position: absolute;
  left: 10px;
  bottom: 10px;
  padding: 3px 9px;
  background: var(--f-bg);
  color: var(--f-ink-1);
  border: 1px solid var(--f-ink-1);
  box-shadow: 2px 2px 0 0 rgba(23,18,13,0.18);
  font-family: var(--f-font-num);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.pv-card__body { padding: 14px 16px 14px; display: grid; gap: 10px; }
.pv-card__title {
  margin: 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 16px;
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: -0.01em;
  cursor: pointer;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.pv-card__meta {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.pv-card__hero {
  padding: 10px 0 8px;
  border-top: 1px solid var(--f-ink-1);
  border-bottom: 3px double var(--f-ink-1);
  display: grid;
  gap: 2px;
}
.pv-card__hero.is-up   { border-color: #2c6b3c; }
.pv-card__hero.is-down { border-color: #b6452a; }
.pv-card__hero-label {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.pv-card__hero-value {
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 24px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: -0.03em;
}
.pv-card__hero.is-up   .pv-card__hero-value { color: #2c6b3c; }
.pv-card__hero.is-down .pv-card__hero-value { color: #b6452a; }
.pv-card__hero-delta {
  font-family: var(--f-font-num);
  font-size: 11px;
  font-weight: 700;
}
.pv-card__hero-delta.is-up   { color: #2c6b3c; }
.pv-card__hero-delta.is-down { color: #b6452a; }

.pv-card__metrics {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0;
  margin: 0;
}
.pv-card__metrics > div {
  padding: 4px 8px 4px 0;
  border-right: 1px solid var(--f-line);
  display: grid;
  gap: 2px;
}
.pv-card__metrics > div:last-child { border-right: 0; padding-right: 0; }
.pv-card__metrics > div:not(:first-child) { padding-left: 8px; }
.pv-card__metrics dt {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.pv-card__metrics dd {
  margin: 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-num);
  font-size: 13px;
  font-weight: 800;
}
.pv-card__footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 8px;
  border-top: 1px solid var(--f-line);
  margin-top: 2px;
}
.pv-card__source {
  font-family: var(--f-font-num);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--f-ink-3);
  padding: 2px 6px;
  background: var(--f-bg-elevated);
}
.pv-card__source.src-listing { color: #2c6b3c; background: rgba(44,107,60,0.10); }
.pv-card__source.src-sold    { color: #2c4d8a; background: rgba(82,120,196,0.10); }
.pv-card__source.src-cost    { color: var(--f-ink-3); }
.pv-card__actions { display: inline-flex; gap: 4px; }

@media (max-width: 1100px) {
  .pv-workspace__grid { grid-template-columns: 1fr; }
}

/* ===============================================
   Global safety net for currency-sensitive numbers
   防止 USD→TWD/JPY 切換後文字溢出 / 重疊
   =============================================== */

/* 所有 ui-price 都有 tabular-nums + nowrap（ui.css 已定義）
   再加一層 inline-block min-width:0 讓 flex 子元素可正確截斷 */
ui-price {
  display: inline-block;
  max-width: 100%;
}

/* Portfolio insight tile - meta 副標也加 tabular */
.pv-insight__meta { font-variant-numeric: tabular-nums; }

/* Portfolio card hero (grid view) - 允許 wrap，避免 mid-number 截斷 */
.pv-card__hero-value {
  font-variant-numeric: tabular-nums;
  white-space: normal;
  overflow-wrap: anywhere;
  font-size: clamp(20px, 2.2vw, 24px);
  min-width: 0;
  line-height: 1.05;
}
.pv-card__hero-delta { font-variant-numeric: tabular-nums; }
.pv-card__metrics dd { font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }

/* Portfolio top KPI bar — wrap 不截斷 */
.pv-kpi__value {
  font-variant-numeric: tabular-nums;
  white-space: normal;
  overflow-wrap: anywhere;
  font-size: clamp(22px, 2.4vw, 28px);
  line-height: 1.05;
  min-width: 0;
}

/* Portfolio table rows — 表格內保留 nowrap（td 本身可水平捲動） */
.portfolio-num { font-variant-numeric: tabular-nums; white-space: nowrap; }

/* Strategy result cards */
.strat-card__hero-value {
  font-variant-numeric: tabular-nums;
  white-space: normal;
  overflow-wrap: anywhere;
  font-size: clamp(22px, 2.4vw, 30px);
  line-height: 1.05;
  min-width: 0;
}
.strat-card__leg strong, .strat-card__metric dd {
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}
.strat-summary__item strong {
  font-variant-numeric: tabular-nums;
  white-space: normal;
  overflow-wrap: anywhere;
  font-size: clamp(18px, 1.8vw, 24px);
  line-height: 1.1;
  display: block;
}

/* Card Lab hero price + tape pills — wrap 不截斷 */
.analyze-price-hero__value, .analyze-tape-pill__value {
  font-variant-numeric: tabular-nums;
  white-space: normal;
  overflow-wrap: anywhere;
  min-width: 0;
  max-width: 100%;
  line-height: 1.05;
}
.analyze-tape-pill { min-width: 0; }

/* Cond list price */
.cond-row__price {
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}


/* ===============================================
   Portfolio v3 — category tags · allocation thumb · insight icons
   =============================================== */

/* Unified category tag system — 用同一套 class 給 holdings 表 / grid / allocation */
.pv-tag {
  display: inline-flex;
  align-items: center;
  padding: 3px 9px;
  border: 1px solid currentColor;
  border-radius: 0;
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  white-space: nowrap;
  background: var(--f-bg);
}
.pv-tag--psa10   { color: #b6452a; background: rgba(196,158,82,0.10); }
.pv-tag--a       { color: #2c6b3c; background: rgba(44,107,60,0.08); }
.pv-tag--s       { color: #6a3fb0; background: rgba(120,75,180,0.10); }
.pv-tag--b       { color: #2c4d8a; background: rgba(82,120,196,0.10); }
.pv-tag--c       { color: var(--f-ink-3); background: rgba(23,18,13,0.05); }
.pv-tag--box     { color: #8a6520; background: rgba(196,158,82,0.16); }
.pv-tag--bulk    { color: #b6452a; background: rgba(182,69,42,0.10); }
.pv-tag--pack    { color: #2c4d8a; background: rgba(82,120,196,0.14); }
.pv-tag--unknown { color: var(--f-ink-3); background: rgba(23,18,13,0.04); }

/* Override the old .portfolio-cond-badge wrapper（保留向後相容） */
.portfolio-cond-badge {
  display: inline-flex; align-items: center;
  padding: 3px 9px;
  border: 1px solid var(--f-ink-1);
  background: var(--f-bg);
  color: var(--f-ink-1);
  font-family: var(--f-font-num);
  font-size: 10px; font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

/* Segment label (放在 segment 左邊的小標籤) */
.pv-segment {
  align-items: stretch;
}
.pv-segment__label {
  display: inline-flex;
  align-items: center;
  padding: 0 12px;
  border-right: 1px solid var(--f-ink-1);
  background: var(--f-bg-elevated);
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

/* ───────────────────────────────────────────────
   Allocation row v2 — 帶縮圖 + 第一名 hero treatment
   =────────────────────────────────────────────── */
.pv-alloc-row {
  display: grid;
  grid-template-columns: 56px 56px 1fr;
  gap: 14px;
  padding: 12px 14px;
  border-left: 3px solid transparent;
  background: transparent;
  border-top: 0;
  border-right: 0;
  border-bottom: 0;
  text-align: left;
  width: 100%;
  cursor: pointer;
  transition: background var(--f-dur-fast) var(--f-ease), border-left-color var(--f-dur-fast) var(--f-ease);
}
.pv-alloc-row:hover { background: rgba(23,18,13,0.03); border-left-color: var(--f-ink-1); }
.pv-alloc-row.is-up   { border-left-color: rgba(44,107,60,0.32); }
.pv-alloc-row.is-down { border-left-color: rgba(182,69,42,0.32); }
.pv-alloc-row.is-top {
  background: linear-gradient(90deg, rgba(196,158,82,0.12), transparent 60%);
  border-left: 3px solid #c49e52;
  padding: 16px 14px;
}
.pv-alloc-row.is-top .pv-alloc-row__rank-num { color: #8a6520; font-size: 44px; }

/* 縮圖 */
.pv-alloc-row__thumb {
  width: 56px;
  aspect-ratio: 5/7;
  overflow: hidden;
  background: radial-gradient(ellipse at center, var(--f-bg), var(--f-bg-elevated));
  border: 1px solid var(--f-line);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.pv-alloc-row__thumb img {
  width: 100%; height: 100%; object-fit: contain;
  padding: 3px;
  filter: drop-shadow(0 3px 4px rgba(23,18,13,0.18));
}
.pv-alloc-row__thumb-empty {
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 24px;
  color: var(--f-ink-3);
}

/* tag chip 對齊 head 右側 */
.pv-alloc-row__tag {
  flex-shrink: 0;
}

/* track 上面浮 share % */
.pv-alloc-row__track {
  position: relative;
  height: 14px;
  background: var(--f-bg-elevated);
  border: 1px solid var(--f-line);
}
.pv-alloc-row__share {
  position: absolute;
  right: 6px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--f-ink-1);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0;
  font-variant-numeric: tabular-nums;
  text-shadow: 0 0 4px var(--f-bg);
  z-index: 2;
  background: transparent;
  flex: none;
}

/* ───────────────────────────────────────────────
   Insight tile v2 — 多媒體視覺
   =────────────────────────────────────────────── */
.pv-insight {
  position: relative;
  display: grid;
  gap: 4px;
  padding: 16px 16px 14px;
  border-right: 1px solid var(--f-line);
  border-bottom: 1px solid var(--f-line);
  background: var(--f-bg);
  min-height: 150px;
  overflow: hidden;
}
.pv-insight__idx {
  position: absolute;
  top: 10px;
  right: 14px;
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.16em;
  z-index: 2;
}
.pv-insight__icon {
  position: absolute;
  top: 14px;
  right: 38px;
  width: 22px;
  height: 22px;
  color: var(--f-ink-3);
  opacity: 0.85;
}
.pv-insight__icon svg { width: 100%; height: 100%; display: block; }
.pv-insight--gold .pv-insight__icon { color: #c49e52; opacity: 1; }
.pv-insight--up   .pv-insight__icon { color: #2c6b3c; opacity: 1; }
.pv-insight--down .pv-insight__icon { color: #b6452a; opacity: 1; }
.pv-insight--ring .pv-insight__icon {
  width: 36px; height: 36px;
  top: 12px; right: 32px;
  color: var(--f-accent);
  opacity: 1;
}

/* gold tone wash for largest */
.pv-insight--gold {
  background: linear-gradient(160deg, rgba(196,158,82,0.10) 0%, transparent 60%), var(--f-bg);
}
.pv-insight--gold::after {
  content: '';
  position: absolute;
  top: 0; left: 0;
  width: 4px; height: 32px;
  background: #c49e52;
}

/* up / down tone wash */
.pv-insight--up {
  background: linear-gradient(160deg, rgba(44,107,60,0.08) 0%, transparent 60%), var(--f-bg);
}
.pv-insight--up::after {
  content: '';
  position: absolute;
  top: 0; left: 0;
  width: 4px; height: 32px;
  background: #2c6b3c;
}
.pv-insight--down {
  background: linear-gradient(160deg, rgba(182,69,42,0.08) 0%, transparent 60%), var(--f-bg);
}
.pv-insight--down::after {
  content: '';
  position: absolute;
  top: 0; left: 0;
  width: 4px; height: 32px;
  background: #b6452a;
}

.pv-insight--ring {
  background: var(--f-bg);
}
.pv-insight--ring::after {
  content: '';
  position: absolute;
  top: 0; left: 0;
  width: 4px; height: 32px;
  background: var(--f-accent);
}

/* ===============================================
   Watchlist — Editorial Diary (Tracking Pulse)
   =============================================== */

/* ── Hero (沿用 pv-hero 結構，重新命名) ── */
.wl-hero {
  position: relative;
  margin: 0 0 var(--f-s5);
  padding: 38px 44px 28px 80px;
  border: 1px solid rgba(23,18,13,0.18);
  background: var(--f-bg);
  box-shadow:
    0 0 0 1px var(--f-bg) inset,
    0 0 0 2px rgba(23,18,13,0.10) inset,
    24px 24px 0 -20px rgba(23,18,13,0.06);
  overflow: hidden;
  isolation: isolate;
}
.wl-hero__watermark {
  position: absolute;
  right: -4%;
  bottom: -32%;
  pointer-events: none;
  z-index: 0;
  font-family: var(--f-font-display);
  font-style: italic;
  font-weight: 600;
  font-size: clamp(180px, 26vw, 340px);
  line-height: 0.82;
  letter-spacing: -0.06em;
  color: transparent;
  -webkit-text-stroke: 1px rgba(23,18,13,0.07);
  text-stroke: 1px rgba(23,18,13,0.07);
  user-select: none;
  white-space: nowrap;
}
.wl-hero__grain {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 1;
  opacity: 0.35;
  mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml;utf8,<svg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.09  0 0 0 0 0.07  0 0 0 0 0.05  0 0 0 0.45 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  background-size: 220px 220px;
}
.wl-hero__spine {
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 52px;
  background: var(--f-ink-1);
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
}
.wl-hero__spine::before,
.wl-hero__spine::after {
  content: '';
  position: absolute;
  left: 6px; right: 6px;
  height: 1px;
  background: rgba(255,255,255,0.20);
}
.wl-hero__spine::before { top: 24px; }
.wl-hero__spine::after { bottom: 24px; }
.wl-hero__spine-text {
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  color: var(--f-bg);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.42em;
  text-transform: uppercase;
  white-space: nowrap;
}
.wl-hero__rules { position: relative; height: 6px; margin: 0 0 16px; }
.wl-hero__rules::before,
.wl-hero__rules::after {
  content: ''; position: absolute; left: 0; right: 0; height: 1px; background: var(--f-ink-1);
}
.wl-hero__rules::before { top: 0; }
.wl-hero__rules::after { bottom: 0; height: 2px; }
.wl-hero__inner {
  position: relative;
  z-index: 3;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 32px;
  align-items: start;
}
.wl-hero__eyebrow {
  display: flex;
  align-items: baseline;
  gap: 12px;
  margin-bottom: 8px;
  color: var(--f-ink-2);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.20em;
  text-transform: uppercase;
}
.wl-hero__eyebrow-mark {
  padding: 3px 8px;
  background: var(--f-ink-1);
  color: var(--f-bg);
  letter-spacing: 0.24em;
}
.wl-hero__eyebrow-text { color: var(--f-ink-3); }
.wl-hero__title {
  margin: 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: clamp(34px, 4.6vw, 56px);
  font-weight: 600;
  line-height: 1.02;
  letter-spacing: -0.035em;
}
.wl-hero__title em {
  font-style: italic;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-decoration-color: var(--f-accent);
  text-underline-offset: 6px;
}
.wl-hero__desc {
  margin: 14px 0 0;
  padding-left: 14px;
  border-left: 2px solid var(--f-ink-1);
  max-width: 640px;
  color: var(--f-ink-2);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 14px;
  font-weight: 500;
  line-height: 1.6;
}
.wl-hero__stamp {
  position: relative;
  z-index: 3;
  width: 132px;
  height: 132px;
  display: flex;
  align-items: center;
  justify-content: center;
  transform: rotate(-7deg);
  align-self: start;
  margin-top: 4px;
}
.wl-hero__stamp-ring {
  position: absolute; inset: 0;
  border: 2px solid var(--f-ink-1);
  border-radius: 50%;
}
.wl-hero__stamp-ring::after {
  content: ''; position: absolute; inset: 5px;
  border: 1px solid var(--f-ink-1);
  border-radius: 50%;
}
.wl-hero__stamp-text {
  position: relative;
  display: grid; gap: 2px; justify-items: center;
  color: var(--f-ink-1);
  font-family: var(--f-font-num);
  font-weight: 800;
  text-transform: uppercase;
  text-align: center;
}
.wl-hero__stamp-text span:first-child { font-size: 9px; letter-spacing: 0.20em; }
.wl-hero__stamp-text strong {
  font-family: var(--f-font-display);
  font-style: italic;
  font-weight: 700;
  font-size: 20px;
  letter-spacing: -0.01em;
  line-height: 1;
}
.wl-hero__stamp-text span:last-child {
  margin-top: 2px;
  padding: 2px 8px;
  background: var(--f-ink-1);
  color: var(--f-bg);
  font-size: 9px;
  letter-spacing: 0.20em;
}
.wl-hero__actions {
  position: relative; z-index: 3;
  display: flex; flex-wrap: wrap; gap: 8px;
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px dashed var(--f-line);
}
@media (max-width: 900px) {
  .wl-hero__inner { grid-template-columns: 1fr; }
  .wl-hero__stamp { justify-self: end; }
}
@media (max-width: 600px) {
  .wl-hero { padding: 28px 22px 22px 60px; }
  .wl-hero__spine { width: 38px; }
  .wl-hero__watermark { font-size: 140px; }
  .wl-hero__stamp { width: 100px; height: 100px; }
}

/* ── Mover Spotlight ── */
.wl-spotlight {
  margin-top: var(--f-s5);
}
.wl-spotlight__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 12px;
  width: 100%;
  padding: 0 0 14px;
  margin-bottom: 0;
  border: 0;
  border-bottom: 2px solid var(--f-ink-1);
  background: transparent;
  text-align: left;
  cursor: pointer;
  font: inherit;
  color: inherit;
  transition: opacity var(--f-dur-fast) var(--f-ease);
}
.wl-spotlight__head:hover { opacity: 0.78; }
.wl-spotlight__head-copy { display: grid; gap: 4px; }
.wl-spotlight__head-meta {
  display: flex;
  align-items: center;
  gap: 14px;
}
.wl-spotlight__caret {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px; height: 28px;
  border: 1.5px solid var(--f-ink-1);
  border-radius: 999px;
  color: var(--f-ink-1);
  background: var(--f-bg);
  font-family: var(--f-font-num);
  font-size: 12px;
  font-weight: 800;
  transition: transform var(--f-dur-fast) var(--f-ease), background var(--f-dur-fast) var(--f-ease), color var(--f-dur-fast) var(--f-ease);
}
.wl-spotlight__head:hover .wl-spotlight__caret { background: var(--f-ink-1); color: var(--f-bg); }
.wl-spotlight.is-open .wl-spotlight__caret { background: var(--f-ink-1); color: var(--f-bg); transform: rotate(180deg); }

.wl-spotlight__body {
  margin-top: 16px;
}
.wl-spotlight__body[hidden] { display: none; }
.wl-spotlight__kicker {
  display: block;
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.20em;
  text-transform: uppercase;
}
.wl-spotlight__title {
  margin: 4px 0 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 28px;
  font-weight: 600;
  letter-spacing: -0.02em;
}
.wl-spotlight__title em {
  font-style: italic;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-decoration-color: var(--f-accent);
  text-underline-offset: 4px;
}
.wl-spotlight__meta {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 11px;
  font-weight: 700;
}
.wl-spotlight__empty {
  display: grid;
  justify-items: center;
  gap: 10px;
  padding: 40px 20px;
  text-align: center;
  border: 1px dashed var(--f-line);
  color: var(--f-ink-3);
}
.wl-spotlight__empty-mark {
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 56px;
  color: var(--f-ink-3);
}
.wl-spotlight__empty p {
  margin: 0;
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 14px;
  line-height: 1.5;
}
.wl-spotlight__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}
@media (max-width: 900px) {
  .wl-spotlight__grid { grid-template-columns: 1fr; }
}

.wl-spot {
  position: relative;
  display: grid;
  grid-template-columns: 56px 88px 1fr;
  gap: 14px;
  padding: 18px;
  border: 1px solid rgba(23,18,13,0.18);
  background: var(--f-bg);
  cursor: pointer;
  overflow: hidden;
  transition: transform 0.18s var(--f-ease), box-shadow 0.18s var(--f-ease), border-color 0.18s var(--f-ease);
}
.wl-spot:hover {
  transform: translateY(-3px);
  border-color: var(--f-ink-1);
  box-shadow: 12px 12px 0 -6px rgba(23,18,13,0.10);
}
.wl-spot--up   { border-top: 4px solid #2c6b3c; }
.wl-spot--down { border-top: 4px solid #b6452a; }
.wl-spot::before {
  /* 浮水印箭頭 */
  content: '';
  position: absolute;
  right: -10px;
  top: -10px;
  width: 120px; height: 120px;
  pointer-events: none;
  opacity: 0.05;
  background-position: center;
  background-repeat: no-repeat;
}
.wl-spot--up::before {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' fill='none' stroke='%232c6b3c' stroke-width='3'><path d='M16 26 L 16 6 M 8 14 L 16 6 L 24 14'/></svg>");
}
.wl-spot--down::before {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' fill='none' stroke='%23b6452a' stroke-width='3'><path d='M16 6 L 16 26 M 8 18 L 16 26 L 24 18'/></svg>");
}
.wl-spot__rank { display: grid; justify-items: center; align-content: center; gap: 0; }
.wl-spot__rank-no {
  font-family: var(--f-font-num);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.20em;
  text-transform: uppercase;
  color: var(--f-ink-3);
}
.wl-spot__rank-num {
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 42px;
  font-weight: 700;
  line-height: 0.9;
  letter-spacing: -0.04em;
  color: var(--f-ink-1);
}
.wl-spot__media {
  width: 88px;
  aspect-ratio: 5/7;
  overflow: hidden;
  background: radial-gradient(ellipse at center, var(--f-bg), var(--f-bg-elevated));
  border: 1px solid var(--f-line);
  display: flex;
  align-items: center;
  justify-content: center;
}
.wl-spot__media img { width: 100%; height: 100%; object-fit: contain; padding: 4px; filter: drop-shadow(0 4px 6px rgba(23,18,13,0.18)); }
.wl-spot__media-empty { font-family: var(--f-font-display); font-style: italic; font-size: 28px; color: var(--f-ink-3); }
.wl-spot__body { display: grid; gap: 6px; min-width: 0; align-content: start; }
.wl-spot__tag { align-self: start; }
.wl-spot__title {
  margin: 4px 0 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 16px;
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: -0.01em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.wl-spot__delta {
  display: flex;
  align-items: baseline;
  gap: 6px;
  margin-top: 4px;
}
.wl-spot__arrow { font-size: 14px; line-height: 1; }
.wl-spot__pct {
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 32px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: -0.03em;
  font-variant-numeric: tabular-nums;
}
.wl-spot--up .wl-spot__arrow,
.wl-spot--up .wl-spot__pct { color: #2c6b3c; }
.wl-spot--down .wl-spot__arrow,
.wl-spot--down .wl-spot__pct { color: #b6452a; }
.wl-spot__metrics {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  margin: 8px 0 0;
  padding-top: 8px;
  border-top: 1px dashed var(--f-line);
}
.wl-spot__metrics > div { display: grid; gap: 2px; padding-right: 10px; position: relative; }
.wl-spot__metrics > div + div { padding-left: 12px; padding-right: 0; }
.wl-spot__metrics > div + div::before {
  content: '';
  position: absolute;
  left: 0; top: 2px; bottom: 2px;
  width: 1px;
  background: var(--f-line);
}
.wl-spot__metrics dt {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.wl-spot__metrics dd {
  margin: 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-num);
  font-size: 13px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}

/* ── Board (Tracking Ledger) ── */
.wl-board { margin-top: var(--f-s5); }
.wl-board__head {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 16px;
  padding-bottom: 14px;
  border-bottom: 2px solid var(--f-ink-1);
  margin-bottom: 18px;
  flex-wrap: wrap;
}
.wl-board__kicker {
  display: block;
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.20em;
  text-transform: uppercase;
}
.wl-board__title {
  margin: 4px 0 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 28px;
  font-weight: 600;
  letter-spacing: -0.02em;
}
.wl-board__sub {
  margin: 6px 0 0;
  color: var(--f-ink-3);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 13px;
}
.wl-board__head-right {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

/* ── Diary view (timeline grouped) ── */
.wl-diary { display: grid; gap: 24px; }
.wl-chapter { display: grid; gap: 0; }
.wl-chapter__head {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 14px;
  align-items: center;
  margin-bottom: 12px;
}
.wl-chapter__rule { height: 1px; background: var(--f-ink-1); opacity: 0.40; }
.wl-chapter__title {
  display: grid;
  gap: 2px;
  justify-items: center;
}
.wl-chapter__label {
  color: var(--f-ink-1);
  font-family: var(--f-font-num);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.30em;
  text-transform: uppercase;
}
.wl-chapter__sub {
  color: var(--f-ink-3);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 11px;
}
.wl-chapter__list {
  display: grid;
  gap: 0;
  border-top: 1px solid var(--f-line);
  border-bottom: 1px solid var(--f-line);
}

.wl-row {
  display: grid;
  grid-template-columns: 56px minmax(0, 1.5fr) minmax(0, 1fr) minmax(0, 1fr) auto;
  gap: 16px;
  padding: 14px 8px;
  border-bottom: 1px dashed var(--f-line);
  align-items: center;
  cursor: pointer;
  transition: background var(--f-dur-fast) var(--f-ease);
}
.wl-row:last-child { border-bottom: 0; }
.wl-row:hover { background: rgba(23,18,13,0.03); }
.wl-row__thumb {
  width: 56px;
  aspect-ratio: 5/7;
  overflow: hidden;
  background: radial-gradient(ellipse at center, var(--f-bg), var(--f-bg-elevated));
  border: 1px solid var(--f-line);
  display: flex; align-items: center; justify-content: center;
}
.wl-row__thumb img { width: 100%; height: 100%; object-fit: contain; padding: 3px; filter: drop-shadow(0 3px 4px rgba(23,18,13,0.18)); }
.wl-row__thumb-empty {
  font-family: var(--f-font-display); font-style: italic; font-size: 24px; color: var(--f-ink-3);
}
.wl-row__main { display: grid; gap: 6px; min-width: 0; }
.wl-row__title-line { display: flex; align-items: baseline; gap: 8px; min-width: 0; }
.wl-row__tag { flex: 0 0 auto; }
.wl-row__title {
  margin: 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 16px;
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: -0.01em;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  flex: 1 1 0; min-width: 0;
}
.wl-row__meta {
  display: flex; gap: 6px; flex-wrap: wrap;
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 11px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.wl-row__meta .is-up { color: #2c6b3c; }
.wl-row__meta .is-down { color: #b6452a; }
.wl-row__price {
  display: grid; gap: 2px; min-width: 0; justify-items: end; text-align: right;
}
.wl-row__price-label, .wl-row__delta-label {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
.wl-row__price-value, .wl-row__delta-value {
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 18px;
  font-weight: 600;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
}
.wl-row__delta {
  display: grid; gap: 2px; justify-items: end; text-align: right;
}
.wl-row__delta.is-up    .wl-row__delta-value { color: #2c6b3c; }
.wl-row__delta.is-down  .wl-row__delta-value { color: #b6452a; }
.wl-row__actions { display: flex; gap: 4px; }
@media (max-width: 900px) {
  .wl-row {
    grid-template-columns: 56px 1fr;
    grid-template-areas:
      'thumb main'
      'thumb price'
      'thumb delta'
      'actions actions';
    gap: 8px 14px;
  }
  .wl-row__thumb { grid-area: thumb; }
  .wl-row__main { grid-area: main; }
  .wl-row__price { grid-area: price; justify-items: start; text-align: left; flex-direction: row; }
  .wl-row__delta { grid-area: delta; justify-items: start; text-align: left; }
  .wl-row__actions { grid-area: actions; justify-self: end; padding-top: 6px; border-top: 1px dashed var(--f-line); width: 100%; justify-content: flex-end; }
}

/* ── Grid view ── */
.wl-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 16px;
}
.wl-card {
  position: relative;
  display: grid;
  gap: 0;
  border: 1px solid rgba(23,18,13,0.18);
  background: var(--f-bg);
  overflow: hidden;
  cursor: pointer;
  transition: transform 0.18s var(--f-ease), box-shadow 0.18s var(--f-ease), border-color 0.18s var(--f-ease);
}
.wl-card:hover {
  transform: translateY(-3px);
  border-color: var(--f-ink-1);
  box-shadow: 12px 12px 0 -6px rgba(23,18,13,0.10);
}
.wl-card__media {
  position: relative;
  aspect-ratio: 4/3;
  overflow: hidden;
  background: radial-gradient(ellipse at center, var(--f-bg), var(--f-bg-elevated));
  border-bottom: 1px solid var(--f-line);
}
.wl-card__media img {
  width: 100%; height: 100%; object-fit: contain;
  padding: 10px;
  filter: drop-shadow(0 6px 8px rgba(23,18,13,0.18));
  transition: transform 0.32s var(--f-ease);
}
.wl-card:hover .wl-card__media img { transform: scale(1.04) translateY(-2px); }
.wl-card__media-empty { display: flex; align-items: center; justify-content: center; height: 100%; color: var(--f-ink-3); font-size: 32px; }
.wl-card__tag {
  position: absolute;
  left: 10px;
  bottom: 10px;
}
.wl-card__body { padding: 14px 16px; display: grid; gap: 10px; }
.wl-card__title {
  margin: 0;
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 16px;
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: -0.01em;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.wl-card__meta {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.wl-card__hero {
  padding: 10px 0 8px;
  border-top: 1px solid var(--f-ink-1);
  border-bottom: 3px double var(--f-ink-1);
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 8px;
}
.wl-card__hero.is-up   { border-color: #2c6b3c; }
.wl-card__hero.is-down { border-color: #b6452a; }
.wl-card__hero-value {
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: clamp(20px, 2.2vw, 24px);
  font-weight: 700;
  letter-spacing: -0.03em;
  font-variant-numeric: tabular-nums;
}
.wl-card__hero-delta {
  color: var(--f-ink-3);
  font-family: var(--f-font-num);
  font-size: 13px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}
.wl-card__hero.is-up   .wl-card__hero-delta { color: #2c6b3c; }
.wl-card__hero.is-down .wl-card__hero-delta { color: #b6452a; }
.wl-card__actions {
  display: flex;
  gap: 4px;
  justify-content: flex-end;
}

/* ── Empty state ── */
.wl-empty {
  display: grid;
  justify-items: center;
  gap: 10px;
  padding: 80px 20px;
  border: 1px dashed var(--f-line);
  text-align: center;
}
.wl-empty__icon {
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 64px;
  color: var(--f-accent);
  line-height: 1;
}
.wl-empty__title {
  color: var(--f-ink-1);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 22px;
  font-weight: 600;
  letter-spacing: -0.02em;
}
.wl-empty__sub {
  color: var(--f-ink-3);
  font-family: var(--f-font-display);
  font-style: italic;
  font-size: 13px;
  line-height: 1.5;
  max-width: 360px;
}

/* ===============================================
   Global thumbnail fill fix
   • SNKRDUNK 卡圖 (5:7 透明背景 PNG) 用 contain + padding 會看起來縮一團
   • 小尺寸縮圖統一改成 cover + 無 padding，並把 background 改成單純 cream
   • 大尺寸 (aspect 4/3 卡圖) 保留 contain（要看完整卡）
   =============================================== */

/* Watchlist Spotlight 88x — 撐滿 */
.wl-spot__media {
  background: var(--f-bg-elevated);
  padding: 0;
}
.wl-spot__media img {
  width: 100%; height: 100%;
  object-fit: cover;
  padding: 0;
  filter: none;
  display: block;
}

/* Watchlist diary row 56x — 撐滿 */
.wl-row__thumb {
  background: var(--f-bg-elevated);
  padding: 0;
}
.wl-row__thumb img {
  width: 100%; height: 100%;
  object-fit: cover;
  padding: 0;
  filter: none;
  display: block;
}

/* Portfolio allocation row 56x — 撐滿 */
.pv-alloc-row__thumb {
  background: var(--f-bg-elevated);
  padding: 0;
}
.pv-alloc-row__thumb img {
  width: 100%; height: 100%;
  object-fit: cover;
  padding: 0;
  filter: none;
  display: block;
}

/* Portfolio table row thumb 44x60 — 撐滿 */
.portfolio-row__thumb {
  padding: 0;
  background: var(--f-bg-elevated);
  filter: none;
}
.portfolio-row__thumb:not(.portfolio-row__thumb--blank) {
  object-fit: cover;
}

/* Strategy preview card thumb — 撐滿 */
.strat-preview-card img {
  object-fit: cover;
  padding: 0;
}
