/* LAM shell β：統一 chrome、案件情境列、手機底欄（疊在既有 cream/teal 色票上） */

:root {
  --shell-top-h: 3.15rem;
  --shell-bottom-h: 3.65rem;
  --shell-chrome-z: 12;
  --shell-bottom-z: 40;
  --shell-elev: 0 1px 0 color-mix(in srgb, var(--ink) 6%, transparent);
  --shell-elev-up: 0 -1px 0 color-mix(in srgb, var(--ink) 8%, transparent);
  --shell-radius: var(--radius, 2px);
  --shell-gap: 0.65rem;
}

/* 桌機：工具列包裝不佔版面；手機泡泡扇再改成 flex */
.top-nav-meta-tools {
  display: contents;
}

/* —— 案件情境 chrome（總覽／試驗／匯出共用） —— */
.case-chrome {
  margin: 0 0 1rem;
  padding: 0 0 0.65rem;
  border-bottom: 1px solid color-mix(in srgb, var(--text) 10%, transparent);
}
.case-chrome .nav-back {
  margin: 0 0 0.35rem;
}
.case-chrome-heading {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.35rem 0.75rem;
  margin-bottom: 0.45rem;
}
.case-chrome .case-code-primary,
.case-chrome h1 {
  margin: 0;
  font-family: "IBM Plex Mono", ui-monospace, monospace;
  font-weight: 600;
  font-size: clamp(1.25rem, 2.5vw, 1.55rem);
  letter-spacing: 0.01em;
  line-height: 1.2;
}
.case-chrome-sub,
.case-chrome .case-chrome-meta {
  margin: 0;
  flex: 1 1 12rem;
}
.case-chrome .case-tabs {
  margin: 0.35rem 0 0;
  padding-bottom: 0;
  border-bottom: none;
}

/* 分頁：分段控制感，桌機橫列、手機三欄 tile 沿用 app.css */
.case-tabs {
  gap: 0.25rem;
}
.case-tabs a {
  border-radius: var(--shell-radius);
  padding: 0.35rem 0.7rem;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.case-tabs a:hover {
  color: var(--text);
  background: var(--ghost-hover);
}
.case-tabs a.is-active {
  border-bottom: none;
  color: var(--on-accent);
  background: var(--accent);
}
@media (min-width: 721px) {
  .case-tabs {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 0.25rem;
    padding: 0.15rem;
    border-radius: var(--radius, 2px);
    background: color-mix(in srgb, var(--ink) 4%, transparent);
    border-bottom: none;
  }
  .case-tabs a.is-active {
    box-shadow: none;
  }
}
@media (max-width: 720px) {
  /* 與試驗頁下拉／+菌株同殼：同高、同圓角、同線框，勿再混用底線／實心綠塊 */
  .case-chrome .case-tabs {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.35rem;
    padding: 0;
    border: 0;
    background: transparent;
  }
  .case-chrome .case-tabs a {
    min-height: 2.5rem;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0.35rem 0.4rem;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    background: var(--surface);
    color: var(--text);
    font-size: var(--fs-sm);
    font-weight: 600;
    box-shadow: none;
  }
  .case-chrome .case-tabs a.is-active {
    color: var(--text);
    background: color-mix(in srgb, var(--accent) 12%, var(--surface));
    border-color: var(--accent);
    border-bottom: 1px solid var(--accent);
    box-shadow: none;
  }
}

/* —— 株層切換：更清楚是「目前在哪一層」 —— */
.assay-layers:not(.assay-layers-select) {
  top: var(--shell-top-h);
  gap: 0.4rem;
  padding: 0.5rem 0;
  margin-bottom: 0.75rem;
  backdrop-filter: none;
  background: var(--bg);
}
.assay-layers-select {
  top: auto;
  backdrop-filter: none;
  background: transparent;
  border-bottom: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.55rem;
  margin: 0 0 0.85rem;
  position: static;
}
.assay-layers-select .assay-layer-toolbar {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.5rem;
  width: 100%;
}
.assay-layers-select .assay-isolate-select-label {
  display: grid;
  gap: 0.25rem;
  font-size: var(--fs-sm);
  font-weight: 600;
  min-width: 0;
  color: var(--text);
}
.assay-layers-select .assay-isolate-select-label select {
  font: inherit;
  width: 100%;
  min-height: 2.5rem;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--text);
  padding: 0.35rem 0.55rem;
  box-shadow: none;
}
.assay-layers-select .assay-layer-add-iso {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.45rem;
  margin: 0;
  margin-left: 0;
  width: 100%;
}
.assay-layers-select .assay-layer-add-iso .assay-copy-prev {
  display: flex;
  align-items: flex-start;
  gap: 0.4rem;
  margin: 0;
  color: var(--muted);
  line-height: 1.35;
}
.assay-layers-select .assay-layer-add-iso .btn {
  justify-self: start;
  min-height: 2.5rem;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  box-shadow: none !important;
  background: var(--surface);
  color: var(--text);
  padding: 0.35rem 0.75rem;
}
@media (min-width: 720px) {
  .assay-layers-select .assay-layer-toolbar {
    grid-template-columns: minmax(14rem, 1fr) auto;
    align-items: end;
  }
  .assay-layers-select .assay-layer-add-iso {
    grid-template-columns: auto auto;
    align-items: center;
    width: auto;
  }
  .assay-layers-select .assay-layer-add-iso .assay-copy-prev {
    align-items: center;
  }
}
.assay-layer-chip {
  border-radius: var(--radius);
  padding: 0.3rem 0.8rem;
  transition: border-color 0.15s ease, background 0.15s ease;
}
.assay-layer-chip:hover {
  border-color: var(--line-strong);
}
.assay-layer-chip.is-active {
  box-shadow: none;
}
/* chip 列才右推；下拉工具列改由 app.css grid 對齊 */
.assay-layers:not(.assay-layers-select) .assay-layer-add-iso {
  margin-left: auto;
}

/* 模組顯隱（邏輯仍用 is-module-hidden；舊 chip 列已併入檢核表） */
.assay-card.is-module-hidden {
  display: none !important;
}

.assay-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
  margin: 0 0 0.75rem;
}

/* 株摺疊標題強化 */
.iso-fold-summary {
  font-weight: 600;
}
.assay-layer-panel > .muted.tiny:first-child {
  margin-top: 0;
}

/* 頁底換筆（菌株／可選案件）固定感 */
.case-iso-nav,
.case-pager {
  position: sticky;
  bottom: calc(var(--shell-bottom-h) + var(--safe-bottom, 0px) + 0.35rem);
  z-index: 9;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
  justify-content: space-between;
  margin: 1.25rem 0 0.5rem;
  padding: 0.55rem 0.65rem;
  border: 1px solid var(--line);
  border-radius: var(--shell-radius);
  background: color-mix(in srgb, var(--panel) 92%, transparent);
  backdrop-filter: blur(8px);
  box-shadow: var(--shell-elev-up);
}
@media (min-width: 721px) {
  .case-iso-nav,
  .case-pager {
    bottom: 0.75rem;
  }
}

/* —— 手機底欄／底部 sheet／側欄 —— */
.bottom-nav,
.lam-fan,
.lam-sheet,
.lam-scrim {
  display: none;
}
body.has-bottom-nav {
  --safe-bottom: env(safe-area-inset-bottom, 0px);
}

@media (max-width: 720px) {
  /* 精簡頂欄：只留品牌；漢堡、固定語言／主題交給側欄 */
  body.has-bottom-nav .nav-toggle,
  body.has-bottom-nav .nav-toggle {
    display: none !important;
  }
  body.has-bottom-nav .chrome-toggles-fixed {
    display: none !important;
  }
  body.has-bottom-nav .top {
    padding: 0.4rem 0.85rem;
    padding-top: max(0.4rem, var(--safe-top, 0px));
  }
  body.has-bottom-nav .top-brand-row {
    width: 100%;
  }
  body.has-bottom-nav .brand {
    font-size: 0.95rem;
  }

  /* 選單／新增／近期共用：貼近既有 .btn 與面板，不要圓角膠囊漂浮感 */
  body.has-bottom-nav {
    --lam-pop-radius: var(--radius, 2px);
    --lam-pop-h: max(3.05rem, var(--touch-min, 2.75rem));
    --lam-pop-gap: 0.4rem;
    --lam-pop-pad: 0.45rem;
    --lam-pop-shadow: 0 1px 0 color-mix(in srgb, var(--ink) 5%, transparent),
      0 8px 22px color-mix(in srgb, var(--ink) 11%, transparent);
  }

  /* 選單：底欄上方的緊湊面板（不是漂浮圓泡） */
  body.has-bottom-nav .top nav,
  body.has-bottom-nav .top.is-nav-open nav {
    display: flex !important;
    flex-direction: column;
    align-items: stretch;
    gap: var(--lam-pop-gap);
    position: fixed;
    top: auto;
    right: auto;
    left: var(--fan-x, 82%);
    bottom: calc(var(--shell-bottom-h) + var(--safe-bottom) + 0.45rem);
    width: min(14.5rem, calc(100vw - 1.25rem));
    max-width: calc(100vw - 1.25rem);
    max-height: min(78vh, calc(100dvh - var(--shell-bottom-h) - 1.25rem));
    margin: 0;
    padding: var(--lam-pop-pad);
    border: 1px solid var(--line);
    border-radius: var(--lam-pop-radius);
    background: var(--surface, var(--panel));
    box-shadow: var(--lam-pop-shadow);
    z-index: calc(var(--shell-bottom-z) + 2);
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    transform: translate(-50%, 0.4rem);
    transform-origin: bottom center;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.15s ease, transform 0.16s ease;
    grid-template-columns: none;
  }
  /* 語言／外觀置頂：一開選單就看得到 */
  body.has-bottom-nav .top-nav-chrome-lead {
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    gap: var(--lam-pop-gap);
    width: 100%;
    margin: 0;
    padding: 0 0 0.35rem;
    border-bottom: 1px solid var(--line);
    flex: 0 0 auto;
  }
  body.has-bottom-nav .top-nav-chrome-lead .locale-switch,
  body.has-bottom-nav .top-nav-chrome-lead .theme-toggle {
    width: auto !important;
    min-height: 0 !important;
    margin: 0 !important;
  }
  body.has-bottom-nav .top-nav-chrome-lead .chrome-toggle,
  body.has-bottom-nav .top-nav-chrome-lead .theme-toggle,
  body.has-bottom-nav .top-nav-chrome-lead .locale-switch > summary.chrome-toggle,
  body.has-bottom-nav .top-nav-chrome-lead button.theme-toggle {
    width: 100% !important;
    height: auto !important;
    min-width: 0 !important;
    min-height: 2.65rem !important;
    padding: 0.35rem 0.3rem !important;
    border: 1px solid var(--line) !important;
    border-radius: var(--lam-pop-radius) !important;
    background: var(--input-bg, var(--panel)) !important;
    color: var(--ink, var(--text)) !important;
    display: inline-flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 0.1rem !important;
    box-shadow: none !important;
  }
  body.has-bottom-nav .top-nav-chrome-lead .chrome-toggle-label,
  body.has-bottom-nav .top-nav-chrome-lead .theme-toggle-label {
    display: block !important;
    font-size: 0.72rem !important;
    font-weight: 500;
    line-height: 1.15;
  }
  body.has-bottom-nav .top-nav-chrome-lead .chrome-toggle > svg,
  body.has-bottom-nav .top-nav-chrome-lead .theme-toggle > svg {
    width: 1.1rem !important;
    height: 1.1rem !important;
  }
  /* 語言清單改向下開，避免被裁切；開著時允許溢出可見 */
  body.has-bottom-nav .top-nav-chrome-lead .locale-switch {
    position: relative;
    display: block;
  }
  body.has-bottom-nav .top-nav-chrome-lead .locale-switch .locale-menu {
    left: 0;
    right: 0;
    top: calc(100% + 0.25rem);
    bottom: auto;
    transform: none;
    min-width: 0;
    width: 100%;
    z-index: 5;
    border: 1px solid var(--line);
    border-radius: var(--lam-pop-radius);
    background: var(--surface, var(--panel));
    padding: 0.25rem;
    box-shadow: var(--lam-pop-shadow);
  }
  body.has-bottom-nav .top-nav-chrome-lead .locale-switch .locale-menu a {
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--lam-pop-radius);
    padding: 0.5rem 0.55rem;
    text-align: center;
    min-height: 2.5rem;
  }
  body.has-bottom-nav .top-nav-meta-tools .inline {
    grid-column: 1 / -1;
  }
  body.has-bottom-nav .top nav:has(.top-nav-chrome-lead .locale-switch[open]) {
    overflow: visible;
  }
  body.has-bottom-nav .top-nav-primary {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
  }
  body.has-bottom-nav .top nav > a,
  body.has-bottom-nav .top-nav-primary > a {
    min-height: 2.65rem;
  }
  body.has-bottom-nav.is-drawer-open .top nav,
  body.has-bottom-nav .top.is-nav-open nav {
    opacity: 1;
    transform: translate(-50%, 0);
    pointer-events: auto;
  }
  body.has-bottom-nav .top-nav-primary,
  body.has-bottom-nav .top-nav-meta {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: var(--lam-pop-gap);
    width: 100%;
    max-width: none;
    margin: 0;
    padding: 0;
    border: none;
    grid-template-columns: none;
  }
  body.has-bottom-nav .top-nav-meta {
    margin-top: 0.15rem;
    padding-top: 0.45rem;
    border-top: 1px solid var(--line);
  }
  body.has-bottom-nav .top nav > a,
  body.has-bottom-nav .top-nav-primary > a {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-width: 0;
    min-height: var(--lam-pop-h);
    padding: 0.55rem 0.85rem;
    border: 1px solid var(--line);
    border-radius: var(--lam-pop-radius);
    background: var(--input-bg, var(--panel));
    color: var(--ink, var(--text));
    text-decoration: none;
    text-align: center;
    font-size: 0.95rem;
    font-weight: 500;
    letter-spacing: 0.01em;
    box-shadow: none;
    white-space: nowrap;
  }
  body.has-bottom-nav .top nav > a:hover,
  body.has-bottom-nav .top-nav-primary > a:hover,
  body.has-bottom-nav .top nav > a:focus-visible,
  body.has-bottom-nav .top-nav-primary > a:focus-visible {
    border-color: var(--accent);
    background: var(--head, var(--pill));
    outline: none;
  }
  body.has-bottom-nav.is-drawer-open .top-nav-primary > a {
    animation: none;
  }

  /* 帳號列：圖示鍵與文字鍵都加大到可安心點 */
  body.has-bottom-nav .top-nav-meta {
    gap: 0.35rem;
  }
  body.has-bottom-nav .top-nav-meta .who {
    max-width: none;
    width: 100%;
    margin: 0;
    padding: 0.15rem 0.25rem 0.25rem;
    color: var(--muted);
    font-size: 0.75rem;
    font-weight: 500;
    line-height: 1.35;
    text-align: center;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  body.has-bottom-nav .top-nav-meta-tools {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--lam-pop-gap);
    width: 100%;
  }
  /* 語言／外觀已置頂（.top-nav-chrome-lead）；勿再用 contents 拆掉網格 */
  body.has-bottom-nav .chrome-toggles-nav:not(.top-nav-chrome-lead) {
    display: none !important;
  }

  body.has-bottom-nav .top-nav-meta > a.btn,
  body.has-bottom-nav .top-nav-meta-tools > a.btn,
  body.has-bottom-nav .top-nav-meta .inline,
  body.has-bottom-nav .top-nav-meta .inline button,
  body.has-bottom-nav .top-nav-meta-tools .inline button {
    width: 100% !important;
    min-width: 0 !important;
    min-height: var(--lam-pop-h) !important;
    height: auto !important;
    margin: 0 !important;
    padding: 0.55rem 0.65rem !important;
    border: 1px solid var(--line) !important;
    border-radius: var(--lam-pop-radius) !important;
    background: var(--input-bg, var(--panel)) !important;
    color: var(--ink, var(--text)) !important;
    font-size: 0.9rem !important;
    font-weight: 500;
    box-shadow: none !important;
  }
  body.has-bottom-nav .top-nav-meta .inline,
  body.has-bottom-nav .top-nav-meta-tools .inline {
    display: block !important;
    border: none !important;
    background: transparent !important;
    box-shadow: none !important;
    padding: 0 !important;
    min-height: 0 !important;
  }
  body.has-bottom-nav .top-nav-meta > a.btn:hover,
  body.has-bottom-nav .top-nav-meta-tools > a.btn:hover,
  body.has-bottom-nav .top-nav-meta .inline button:hover,
  body.has-bottom-nav .top-nav-meta-tools .inline button:hover {
    border-color: var(--accent) !important;
    color: var(--ink, var(--text)) !important;
    background: var(--head, var(--pill)) !important;
  }

  /* 遮罩：淡一點，配合底欄彈出面板 */
  body.has-bottom-nav .lam-scrim {
    display: block;
    position: fixed;
    inset: 0;
    z-index: calc(var(--shell-bottom-z) + 1);
    background: color-mix(in srgb, var(--ink) 22%, transparent);
    border: 0;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.18s ease;
  }
  body.has-bottom-nav.is-drawer-open .lam-scrim,
  body.has-bottom-nav.is-sheet-open .lam-scrim {
    opacity: 1;
    pointer-events: auto;
  }

  /* 手機隱藏與底欄重複的首頁工具列 */
  body.has-bottom-nav .home-toolbar-actions {
    display: none !important;
  }
  body.has-bottom-nav .home-toolbar {
    margin-bottom: 0.35rem;
  }
  body.has-bottom-nav .home-title {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
  }

  /* 新增／近期：與選單同一套緊湊面板（扁平 .btn，非圓泡） */
  body.has-bottom-nav .lam-fan,
  body.has-bottom-nav .lam-sheet {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    position: fixed;
    left: var(--fan-x, 50%);
    bottom: calc(var(--shell-bottom-h) + var(--safe-bottom) + 0.45rem);
    z-index: calc(var(--shell-bottom-z) + 3);
    width: min(14.5rem, calc(100vw - 1.5rem));
    max-width: calc(100vw - 1.5rem);
    margin: 0;
    padding: var(--lam-pop-pad);
    border: 1px solid var(--line);
    border-radius: var(--lam-pop-radius);
    background: var(--surface, var(--panel));
    box-shadow: var(--lam-pop-shadow);
    transform: translate(-50%, 0.4rem);
    transform-origin: bottom center;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.15s ease, transform 0.16s ease;
  }
  body.has-bottom-nav .lam-fan.is-open,
  body.has-bottom-nav .lam-sheet.is-open {
    opacity: 1;
    transform: translate(-50%, 0);
    pointer-events: auto;
  }
  .lam-fan-bubbles {
    display: flex;
    flex-direction: column-reverse;
    align-items: stretch;
    gap: var(--lam-pop-gap);
    width: 100%;
  }
  .lam-add-level {
    display: none;
    flex-direction: column-reverse;
    align-items: stretch;
    gap: var(--lam-pop-gap);
    width: 100%;
  }
  .lam-add-level.is-active {
    display: flex;
  }
  .lam-bubble {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: var(--lam-pop-h);
    padding: 0.55rem 0.85rem;
    border: 1px solid var(--line);
    border-radius: var(--lam-pop-radius);
    background: var(--input-bg, var(--panel));
    color: var(--ink, var(--text));
    text-decoration: none;
    font: inherit;
    font-size: 0.95rem;
    font-weight: 500;
    letter-spacing: 0.01em;
    box-shadow: none;
    white-space: nowrap;
    cursor: pointer;
  }
  .lam-bubble:hover,
  .lam-bubble:focus-visible {
    border-color: var(--accent);
    background: var(--head, var(--pill));
    outline: none;
  }
  .lam-bubble-ghost {
    font-weight: 500;
    color: var(--ink, var(--text));
    background: var(--input-bg, var(--panel));
  }
  /* 目前層的第一個非 ghost 為主操作（階層選單用） */
  .lam-fan[data-lam-fan="add"] .lam-add-level.is-active > .lam-bubble:not(.lam-bubble-ghost) {
    background: var(--accent);
    border-color: var(--accent);
    color: var(--on-accent, #fff);
    font-weight: 500;
  }
  .lam-fan[data-lam-fan="add"] .lam-add-level.is-active > .lam-bubble:not(.lam-bubble-ghost) ~ .lam-bubble:not(.lam-bubble-ghost) {
    background: var(--input-bg, var(--panel));
    border-color: var(--line);
    color: var(--ink, var(--text));
    font-weight: 500;
  }
  .lam-fan[data-lam-fan="add"] .lam-add-level.is-active > .lam-bubble:not(.lam-bubble-ghost):hover,
  .lam-fan[data-lam-fan="add"] .lam-add-level.is-active > .lam-bubble:not(.lam-bubble-ghost):focus-visible {
    filter: brightness(1.04);
    background: var(--accent);
  }
  .lam-fan[data-lam-fan="add"] .lam-add-level.is-active > .lam-bubble:not(.lam-bubble-ghost) ~ .lam-bubble:not(.lam-bubble-ghost):hover,
  .lam-fan[data-lam-fan="add"] .lam-add-level.is-active > .lam-bubble:not(.lam-bubble-ghost) ~ .lam-bubble:not(.lam-bubble-ghost):focus-visible {
    filter: none;
    border-color: var(--accent);
    background: var(--head, var(--pill));
  }
  .lam-fan.is-open .lam-bubble,
  .lam-fan.is-open .lam-recent-list a,
  .lam-fan.is-open .lam-recent-empty {
    animation: lam-pop-in 0.16s ease both;
  }
  .lam-fan.is-open .lam-add-level.is-active > :nth-child(1) { animation-delay: 0.01s; }
  .lam-fan.is-open .lam-add-level.is-active > :nth-child(2) { animation-delay: 0.03s; }
  .lam-fan.is-open .lam-add-level.is-active > :nth-child(3) { animation-delay: 0.05s; }
  .lam-fan.is-open .lam-add-level.is-active > :nth-child(4) { animation-delay: 0.07s; }
  .lam-fan.is-open .lam-fan-bubbles > :nth-child(1) { animation-delay: 0.01s; }
  .lam-fan.is-open .lam-fan-bubbles > :nth-child(2) { animation-delay: 0.03s; }
  .lam-fan.is-open .lam-fan-bubbles > :nth-child(3) { animation-delay: 0.05s; }
  .lam-fan.is-open .lam-fan-bubbles > :nth-child(4) { animation-delay: 0.07s; }
  .lam-fan.is-open .lam-recent-list li:nth-child(1) a { animation-delay: 0.03s; }
  .lam-fan.is-open .lam-recent-list li:nth-child(2) a { animation-delay: 0.05s; }
  .lam-fan.is-open .lam-recent-list li:nth-child(3) a { animation-delay: 0.07s; }
  @keyframes lam-pop-in {
    from { opacity: 0; transform: translateY(0.35rem); }
    to { opacity: 1; transform: translateY(0); }
  }
  .lam-recent-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column-reverse;
    align-items: stretch;
    gap: var(--lam-pop-gap);
    max-height: 42vh;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
  }
  .lam-recent-list:empty {
    display: none;
  }
  .lam-recent-list a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    width: 100%;
    min-height: var(--lam-pop-h);
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--line);
    border-radius: var(--lam-pop-radius);
    background: var(--input-bg, var(--panel));
    color: var(--ink, var(--text));
    text-decoration: none;
    font-family: "IBM Plex Mono", ui-monospace, monospace;
    font-size: 0.9rem;
    font-weight: 500;
    box-shadow: none;
  }
  .lam-recent-list a:hover,
  .lam-recent-list a:focus-visible {
    border-color: var(--accent);
    background: var(--head, var(--pill));
    outline: none;
  }
  .lam-recent-list .lam-recent-when {
    font-family: inherit;
    font-weight: 500;
    font-size: 0.72rem;
    color: var(--muted);
    flex-shrink: 0;
  }
  .lam-recent-empty {
    margin: 0;
    padding: 0.55rem 0.65rem;
    min-height: 2.5rem;
    border: 1px dashed var(--line);
    border-radius: var(--lam-pop-radius);
    background: transparent;
    text-align: center;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .lam-sheet-handle,
  .lam-sheet-title,
  .lam-sheet-hint,
  .lam-sheet-dismiss {
    display: none !important;
  }

  /* 底欄（含上一頁／下一頁） */
  body.has-bottom-nav .bottom-nav {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: var(--shell-bottom-z);
    min-height: calc(var(--shell-bottom-h) + var(--safe-bottom));
    padding: 0.35rem 0.15rem calc(0.35rem + var(--safe-bottom));
    margin: 0;
    border-top: 1px solid var(--line);
    background: color-mix(in srgb, var(--panel) 94%, transparent);
    backdrop-filter: blur(12px);
    box-shadow: var(--shell-elev-up);
  }
  body.has-bottom-nav .wrap {
    margin-bottom: calc(2.25rem + var(--shell-bottom-h) + var(--safe-bottom));
  }
  body.has-bottom-nav .foot {
    margin-bottom: calc(var(--shell-bottom-h) + var(--safe-bottom));
  }
  .bottom-nav a,
  .bottom-nav button {
    appearance: none;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.15rem;
    min-height: 2.75rem;
    padding: 0.2rem 0.05rem;
    border: 0;
    background: transparent;
    color: var(--muted);
    text-decoration: none;
    font: inherit;
    font-size: 0.62rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    cursor: pointer;
    border-radius: var(--shell-radius);
  }
  .bottom-nav button:disabled {
    opacity: 0.35;
    cursor: not-allowed;
  }
  .bottom-nav a:hover,
  .bottom-nav button:hover,
  .bottom-nav a:focus-visible,
  .bottom-nav button:focus-visible {
    color: var(--text);
    background: var(--ghost-hover);
    outline: none;
  }
  .bottom-nav a.is-active,
  .bottom-nav button.is-active {
    color: var(--accent);
  }
  .bottom-nav-ico {
    width: 1.35rem;
    height: 1.35rem;
    display: block;
  }
  .assay-layers {
    top: 0;
  }
  .case-chrome {
    position: sticky;
    top: 0;
    z-index: var(--shell-chrome-z);
    margin-left: -0.15rem;
    margin-right: -0.15rem;
    padding: 0.35rem 0.15rem 0.55rem;
    background: color-mix(in srgb, var(--bg) 92%, transparent);
    backdrop-filter: blur(10px);
  }
  body.has-bottom-nav.is-drawer-open,
  body.has-bottom-nav.is-sheet-open {
    overflow: hidden;
  }
}

@media (min-width: 721px) {
  .bottom-nav,
  .lam-fan,
  .lam-sheet,
  .lam-scrim {
    display: none !important;
  }
  body.has-bottom-nav .wrap {
    margin-bottom: 2.5rem;
  }
}

[data-theme="dark"] .case-tabs a.is-active {
  color: var(--on-accent);
}
[data-theme="dark"] .bottom-nav,
[data-theme="dark"] .lam-sheet {
  background: color-mix(in srgb, var(--panel) 92%, transparent);
}
@media (max-width: 720px) {
  [data-theme="dark"] .case-tabs a.is-active {
    color: var(--text);
  }
}

@media print {
  .bottom-nav,
  .lam-sheet,
  .lam-scrim,
  .case-chrome .nav-back {
    display: none !important;
  }
  .case-chrome {
    position: static;
    background: transparent;
    backdrop-filter: none;
  }
}
