.cover {
  position: relative;
  height: 330px;
  overflow: hidden;
  background: var(--paper-deep);
  border-bottom: 1px solid var(--line-strong);
}

.cover-art {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.cover-scrim {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(34, 36, 30, 0.04) 30%, rgba(34, 36, 30, 0.62) 100%);
}

.cover-content {
  position: absolute;
  right: 18px;
  bottom: 18px;
  left: 18px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 8px;
  color: var(--paper-light);
}

.cover-status {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 26px;
  padding: 3px 11px;
  border: 1px solid rgba(250, 246, 236, 0.55);
  border-radius: 999px;
  background: rgba(34, 36, 30, 0.28);
  color: var(--paper-light);
  font-size: var(--text-micro);
  backdrop-filter: blur(6px);
}

.cover-status .icon {
  width: 14px;
  height: 14px;
}

.cover h1 {
  max-width: 340px;
  font-size: var(--text-display);
  color: var(--paper-light);
  text-shadow: 0 1px 12px rgba(34, 36, 30, 0.35);
  word-break: break-word;
}

.cover-dates {
  font-size: var(--text-small);
  color: rgba(250, 246, 236, 0.92);
  font-variant-numeric: tabular-nums;
}

.cover-people {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 2px;
}

.cover-people .avatar {
  width: 30px;
  height: 30px;
  font-size: 12px;
  border-color: rgba(250, 246, 236, 0.8);
}

.cover-people .people-caption {
  color: rgba(250, 246, 236, 0.85);
  font-size: var(--text-micro);
}

.route-map-frame {
  position: relative;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: var(--paper-light);
  box-shadow: var(--shadow-soft);
}

.route-map-frame img {
  width: 100%;
  height: 190px;
  object-fit: cover;
}

.route-stops {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 12px;
}

.route-stop {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 30px;
  padding: 3px 11px;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--paper-light);
  color: var(--ink-soft);
  font-size: var(--text-small);
}

.route-stop .icon {
  width: 15px;
  height: 15px;
  color: var(--cinnabar);
}

.route-stop.is-next {
  border-color: rgba(157, 64, 48, 0.45);
  background: var(--cinnabar-soft);
  color: var(--cinnabar-deep);
}

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

.today-grid .stat + .stat {
  padding-left: 12px;
  border-left: 1px solid var(--line);
}

.today-progress {
  padding: 13px 16px 15px;
  border-top: 1px solid var(--line);
}

.today-progress-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 8px;
  color: var(--ink-muted);
  font-size: var(--text-small);
}

.today-progress-head strong {
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}

.today-items {
  margin-top: 4px;
}

.expense-summary {
  padding: 14px 16px 16px;
}

.expense-total {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  padding-bottom: 10px;
}

.expense-total .stat-value {
  color: var(--cinnabar-deep);
}

.expense-categories {
  padding-top: 4px;
}

.expense-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 12px;
  padding-top: 10px;
  border-top: 1px dashed var(--line);
  color: var(--ink-muted);
  font-size: var(--text-small);
}

.expense-foot strong {
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}

/* 旅行账本：轻量手账感，不采用后台式表格布局 */
.itinerary-ledger-link {
  display: flex;
  align-items: center;
  gap: 11px;
  margin: 12px 0 4px;
  padding: 13px 14px;
  border: 1px solid rgba(157, 64, 48, 0.18);
  border-radius: 14px;
  background: rgba(250, 246, 236, 0.72);
  box-shadow: var(--shadow-soft);
  color: var(--ink);
}
.itinerary-ledger-link > span:first-child,
.ledger-entry-icon,
.ledger-category-icon {
  display: grid;
  flex: 0 0 auto;
  width: 32px;
  height: 32px;
  place-items: center;
  border-radius: 50%;
  background: var(--cinnabar-soft);
  color: var(--cinnabar-deep);
}
.itinerary-ledger-link > span:nth-child(2) { display: grid; flex: 1; gap: 2px; }
.itinerary-ledger-link small { color: var(--ink-muted); font-size: var(--text-small); }
.itinerary-ledger-link > .icon { width: 17px; color: var(--ink-faint); }

.ledger-head { margin-bottom: 16px; }
.ledger-hero {
  position: relative;
  overflow: hidden;
  padding: 20px;
  border: 1px solid rgba(255,255,255,.68);
  border-radius: 20px;
  background: linear-gradient(135deg, rgba(250,246,236,.92), rgba(235,219,202,.63));
  box-shadow: 0 14px 32px rgba(91,70,42,.11), inset 0 1px 0 rgba(255,255,255,.75);
  backdrop-filter: blur(14px);
}
.ledger-hero::after { content: ''; position: absolute; width: 145px; height: 145px; right: -55px; bottom: -80px; border-radius: 50%; background: rgba(157,64,48,.09); }
.ledger-hero > span { position: relative; color: var(--ink-muted); font-size: var(--text-small); }
.ledger-hero-main { position: relative; display: flex; align-items: end; justify-content: space-between; gap: 18px; margin: 18px 0; }
.ledger-hero small { display: block; color: var(--ink-muted); font-size: var(--text-micro); }
.ledger-hero h1 { margin-top: 3px; font-family: var(--font-serif); font-size: 38px; font-weight: 700; line-height: 1; color: var(--cinnabar-deep); letter-spacing: -.04em; }
.ledger-hero-main b { font-size: 20px; font-variant-numeric: tabular-nums; }
.ledger-remaining { position: relative; display: flex; justify-content: space-between; padding-top: 12px; border-top: 1px solid rgba(157,64,48,.16); color: var(--ink-muted); font-size: var(--text-small); }
.ledger-remaining strong { color: var(--jade); font-size: 16px; font-variant-numeric: tabular-nums; }
.ledger-remaining strong.is-over { color: var(--cinnabar); }
.ledger-budget-edit { position: absolute; z-index: 1; top: 14px; right: 14px; display: grid; width: 32px; height: 32px; place-items: center; border: 1px solid rgba(157,64,48,.15); border-radius: 50%; background: rgba(255,255,255,.42); color: var(--cinnabar-deep); }
.ledger-hero-unset { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.ledger-hero-unset h1 { margin: 5px 0 7px; font-size: 29px; }
.ledger-hero-unset p { max-width: 230px; color: var(--ink-muted); font-size: var(--text-small); line-height: 1.6; }
.ledger-setup-btn { position: relative; z-index: 1; flex: 0 0 auto; display: inline-flex; align-items: center; gap: 5px; padding: 9px 11px; border-radius: 999px; background: var(--cinnabar); color: #fff; font-size: var(--text-small); }
.ledger-setup-btn .icon { width: 14px; }

.ledger-dates { display: flex; gap: 8px; overflow-x: auto; margin: 18px -16px 0; padding: 0 16px 4px; scrollbar-width: none; }
.ledger-dates::-webkit-scrollbar { display: none; }
.ledger-date-pill { display: grid; min-width: 57px; gap: 1px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 13px; background: rgba(250,246,236,.58); color: var(--ink-muted); text-align: center; }
.ledger-date-pill b { color: var(--ink); font-size: var(--text-small); }
.ledger-date-pill span { font-size: var(--text-micro); white-space: nowrap; }
.ledger-date-pill.on { border-color: var(--cinnabar); background: var(--cinnabar); color: #fff; box-shadow: 0 6px 14px rgba(157,64,48,.2); }
.ledger-date-pill.on b { color: #fff; }

.ledger-section { margin-top: 26px; }
.ledger-section-head { display: flex; align-items: baseline; gap: 8px; margin-bottom: 11px; }
.ledger-section-head span { color: var(--cinnabar); font-family: var(--font-serif); font-size: var(--text-small); }
.ledger-section-head h2 { flex: 1; font-family: var(--font-serif); font-size: var(--text-heading); }
.ledger-section-head > b { color: var(--cinnabar-deep); font-size: var(--text-body); font-variant-numeric: tabular-nums; }
.ledger-day-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.ledger-day-tags span { padding: 4px 8px; border-radius: 999px; background: var(--paper-deep); color: var(--ink-muted); font-size: var(--text-micro); }
.ledger-entry-list { overflow: hidden; border: 1px solid rgba(217,205,182,.8); border-radius: 16px; background: rgba(250,246,236,.64); box-shadow: var(--shadow-soft); }
.ledger-entry { display: flex; width: 100%; align-items: center; gap: 10px; padding: 12px; border-bottom: 1px solid rgba(217,205,182,.66); color: var(--ink); text-align: left; }
.ledger-entry:last-child { border-bottom: 0; }
.ledger-entry:active { background: var(--paper-deep); }
.ledger-entry-main { display: grid; flex: 1; min-width: 0; gap: 3px; }
.ledger-entry-main b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--text-body); }
.ledger-entry-main small { overflow: hidden; color: var(--ink-muted); font-size: var(--text-micro); text-overflow: ellipsis; white-space: nowrap; }
.ledger-entry strong { font-size: var(--text-body); font-variant-numeric: tabular-nums; white-space: nowrap; }
.ledger-entry > .icon { width: 15px; color: var(--ink-faint); }
.ledger-receipt-dot { color: var(--gold); }
.ledger-receipt-dot .icon { width: 15px; }
.ledger-empty { padding: 25px 16px; color: var(--ink-muted); font-size: var(--text-small); text-align: center; }
.ledger-empty button { margin-left: 4px; color: var(--cinnabar); text-decoration: underline; }

.ledger-category-list { display: grid; gap: 8px; }
.ledger-category-card { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid rgba(217,205,182,.78); border-radius: 14px; background: rgba(250,246,236,.62); }
.ledger-category-card:nth-child(3n+2) .ledger-category-icon { background: var(--jade-soft); color: var(--jade); }
.ledger-category-card:nth-child(3n) .ledger-category-icon { background: var(--gold-soft); color: #806021; }
.ledger-category-card > div { display: grid; flex: 1; grid-template-columns: 1fr auto; align-items: center; gap: 3px 8px; }
.ledger-category-card b { font-size: var(--text-small); }
.ledger-category-card small { color: var(--ink-muted); font-size: var(--text-small); font-variant-numeric: tabular-nums; }
.ledger-category-card em { color: var(--ink-faint); font-size: var(--text-micro); font-style: normal; }
.ledger-progress { grid-column: 1 / -1; height: 3px; overflow: hidden; border-radius: 99px; background: var(--paper-deep); }
.ledger-progress i { display: block; height: 100%; border-radius: inherit; background: var(--cinnabar); }
.ledger-payer-stack { display: grid; gap: 7px; }
.ledger-payer-stack div { display: flex; justify-content: space-between; padding: 10px 12px; border-radius: 13px; background: rgba(221,229,216,.52); color: var(--jade); font-size: var(--text-small); }
.ledger-payer-stack b { font-variant-numeric: tabular-nums; }
.ledger-add { position: fixed; z-index: 5; right: max(18px, calc((100vw - var(--shell-max)) / 2 + 18px)); bottom: calc(var(--nav-height) + 14px); display: inline-flex; align-items: center; gap: 7px; padding: 13px 17px; border-radius: 999px; background: var(--cinnabar); box-shadow: 0 10px 22px rgba(125,49,37,.28); color: #fff; font-weight: 700; }
.ledger-add .icon { width: 17px; }

.ledger-overlay { z-index: 30; }
.ledger-sheet { max-height: min(82vh, 720px); overflow-y: auto; border-radius: 22px 22px 0 0; background: rgba(250,246,236,.96); backdrop-filter: blur(18px); }
.ledger-form, .ledger-budget-body, .ledger-detail { padding: 4px 16px 18px; }
.ledger-form { display: grid; gap: 14px; }
.ledger-form label, .ledger-form > div > .ledger-field-label, .ledger-budget-body label > span { display: grid; gap: 6px; color: var(--ink-muted); font-size: var(--text-small); }
.ledger-form input, .ledger-form select, .ledger-budget-input { width: 100%; min-height: 40px; border: 1px solid var(--line); border-radius: 10px; background: rgba(255,255,255,.56); color: var(--ink); padding: 0 10px; font-family: inherit; font-size: var(--text-body); }
.ledger-amount > div, .ledger-budget-input { display: flex; align-items: center; }
.ledger-amount i, .ledger-budget-input i { padding-left: 13px; color: var(--cinnabar); font-family: var(--font-serif); font-size: 25px; font-style: normal; }
.ledger-amount input { min-height: 57px; border: 0; background: transparent; padding: 0 10px; font-family: var(--font-serif); font-size: 35px; font-weight: 700; outline: 0; }
.ledger-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.ledger-category-picks { display: flex; flex-wrap: wrap; gap: 7px; }
.ledger-category-picks button { display: inline-flex; align-items: center; gap: 4px; padding: 7px 9px; border: 1px solid var(--line); border-radius: 999px; color: var(--ink-muted); font-size: var(--text-small); }
.ledger-category-picks button .icon { width: 14px; }
.ledger-category-picks button.on { border-color: rgba(157,64,48,.48); background: var(--cinnabar-soft); color: var(--cinnabar-deep); }
.ledger-participants { display: flex; flex-wrap: wrap; gap: 7px; }
.ledger-participants label { display: inline-flex; align-items: center; gap: 4px; padding: 5px 8px; border: 1px solid var(--line); border-radius: 99px; background: rgba(255,255,255,.4); color: var(--ink-soft); font-size: var(--text-small); }
.ledger-participants input { width: auto; min-height: 0; accent-color: var(--cinnabar); }
.ledger-receipt-upload { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.ledger-receipt-upload > button:first-of-type { display: inline-flex; align-items: center; gap: 5px; padding: 8px 10px; border: 1px dashed var(--line-strong); border-radius: 10px; color: var(--ink-muted); font-size: var(--text-small); }
.ledger-receipt-upload > button .icon { width: 15px; }
.ledger-receipt-upload img { width: 42px; height: 42px; border-radius: 8px; object-fit: cover; }
.ledger-receipt-remove { color: var(--cinnabar); font-size: var(--text-small); }
.ledger-form-error { min-height: 18px; color: var(--cinnabar); font-size: var(--text-small); }
.ledger-detail { text-align: center; }
.ledger-detail-icon { display: grid; width: 46px; height: 46px; place-items: center; margin: 3px auto 10px; border-radius: 50%; background: var(--cinnabar-soft); color: var(--cinnabar-deep); }
.ledger-detail h2 { font-family: var(--font-serif); font-size: 35px; color: var(--cinnabar-deep); }
.ledger-detail > p { margin: 5px 0 16px; color: var(--ink-muted); }
.ledger-detail dl { display: grid; gap: 0; margin-bottom: 15px; border: 1px solid var(--line); border-radius: 12px; text-align: left; overflow: hidden; }
.ledger-detail dl div { display: flex; justify-content: space-between; padding: 10px; border-bottom: 1px solid var(--line); font-size: var(--text-small); }
.ledger-detail dl div:last-child { border-bottom: 0; }
.ledger-detail dt { color: var(--ink-muted); }.ledger-detail dd { margin: 0; color: var(--ink); }
.ledger-detail-receipt { max-width: 100%; max-height: 200px; margin-bottom: 14px; border-radius: 12px; }
.ledger-budget-body { display: grid; gap: 15px; }.ledger-budget-body > p { color: var(--ink-muted); font-size: var(--text-small); line-height: 1.65; }
.ledger-budget-suggestions { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }.ledger-budget-suggestions button { padding: 11px 4px; border: 1px solid var(--line); border-radius: 11px; color: var(--cinnabar-deep); font-family: var(--font-serif); font-weight: 700; }
.ledger-budget-suggestions button:active { background: var(--cinnabar-soft); }
.ledger-budget-input input { flex: 1; min-width: 0; border: 0; background: transparent; outline: 0; font: inherit; }

@media (min-width: 720px) {
  .cover {
    height: 360px;
  }
}

/* 双账本：旅行手账首页、详情与快速记录 Sheet */
.app-main.ledger-modal-open {
  z-index: 40;
}

.app-main.ledger-modal-open + .bottom-nav {
  z-index: 20;
  pointer-events: none;
}

.ledger-page {
  position: relative;
  min-height: 100vh;
  margin: 0 -18px -108px;
  padding: 25px 18px 132px;
  overflow: hidden;
  background:
    linear-gradient(180deg, rgba(250, 246, 236, 0.52), rgba(239, 232, 218, 0.9) 44%, var(--paper) 78%),
    url('../../assets/images/journal-bg.png') center top / auto 700px no-repeat,
    var(--paper);
}

.ledger-page::before {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 82% 10%, rgba(255, 255, 255, 0.62), transparent 24%),
    linear-gradient(90deg, rgba(250, 246, 236, 0.24), transparent 45%, rgba(250, 246, 236, 0.2));
}

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

.ledger-title {
  padding: 5px 4px 18px;
}

.ledger-back {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  min-height: 34px;
  padding: 6px 11px 6px 8px;
  border: 1px solid rgba(184, 170, 142, 0.42);
  border-radius: 999px;
  background: rgba(250, 246, 236, 0.68);
  box-shadow: 0 6px 18px rgba(49, 43, 35, 0.06);
  color: var(--ink-soft);
  font-size: 12px;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

.ledger-back .icon {
  width: 15px;
  height: 15px;
}

.ledger-title h1 {
  margin: 24px 0 7px;
  font-family: var(--font-serif);
  font-size: clamp(43px, 13vw, 58px);
  font-weight: 600;
  line-height: 1;
  letter-spacing: -0.07em;
  color: var(--ink);
}

.ledger-title p {
  max-width: 310px;
  margin: 0;
  color: var(--ink-muted);
  font-family: var(--font-serif);
  font-size: 13px;
  line-height: 1.8;
}

.ledger-budget-card {
  position: relative;
  overflow: visible;
  padding: 21px 19px 18px;
  border: 1px solid rgba(255, 255, 255, 0.76);
  border-radius: 20px;
  background: linear-gradient(135deg, rgba(255, 252, 246, 0.88), rgba(240, 225, 209, 0.68));
  box-shadow: 0 15px 34px rgba(66, 52, 38, 0.11), inset 0 1px 0 rgba(255, 255, 255, 0.82);
  backdrop-filter: blur(18px) saturate(1.08);
  -webkit-backdrop-filter: blur(18px) saturate(1.08);
}

.ledger-paper-tape {
  position: absolute;
  top: -8px;
  left: 50%;
  width: 76px;
  height: 18px;
  transform: translateX(-50%) rotate(-1.5deg);
  background: rgba(203, 154, 121, 0.46);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.2);
  clip-path: polygon(3% 10%, 98% 0, 95% 92%, 1% 100%);
}

.ledger-budget-card > span,
.ledger-budget-card.is-unset > div:not(.ledger-paper-tape) > span {
  color: var(--cinnabar);
  font-family: var(--font-serif);
  font-size: 12px;
  letter-spacing: .08em;
}

.ledger-budget-primary {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 12px;
  margin: 12px 0 10px;
}

.ledger-budget-primary h2 {
  font-family: var(--font-serif);
  font-size: 34px;
  font-weight: 600;
  line-height: 1;
  letter-spacing: -.04em;
}

.ledger-budget-primary small {
  color: var(--ink-muted);
  font-size: 11px;
}

.ledger-budget-progress {
  height: 5px;
  overflow: hidden;
  border-radius: 99px;
  background: rgba(184, 170, 142, 0.24);
}

.ledger-budget-progress i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--cinnabar), #c97b5f);
}

.ledger-budget-numbers {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  margin-top: 14px;
}

.ledger-budget-numbers span {
  display: grid;
  gap: 3px;
}

.ledger-budget-numbers span:last-child {
  text-align: right;
}

.ledger-budget-numbers small {
  color: var(--ink-faint);
  font-size: 10px;
}

.ledger-budget-numbers b {
  color: var(--jade);
  font-family: var(--font-serif);
  font-size: 16px;
  font-variant-numeric: tabular-nums;
}

.ledger-budget-numbers b.is-over {
  color: var(--cinnabar);
}

.ledger-budget-edit {
  position: absolute;
  z-index: 2;
  top: 14px;
  right: 14px;
  display: grid;
  width: 31px;
  height: 31px;
  place-items: center;
  border: 1px solid rgba(157, 64, 48, .14);
  border-radius: 50%;
  background: rgba(255,255,255,.42);
  color: var(--cinnabar);
}

.ledger-budget-edit .icon {
  width: 14px;
  height: 14px;
}

.ledger-budget-card.is-unset {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
}

.ledger-budget-card.is-unset h2 {
  margin: 6px 0 4px;
  font-family: var(--font-serif);
  font-size: 20px;
}

.ledger-budget-card.is-unset p {
  max-width: 220px;
  margin: 0;
  color: var(--ink-muted);
  font-size: 11px;
  line-height: 1.65;
}

.ledger-pill-action,
.ledger-inline-add,
.ledger-save-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  border-radius: 999px;
  background: linear-gradient(135deg, #b95039, #8f3427);
  box-shadow: 0 9px 20px rgba(116, 48, 36, 0.22), inset 0 1px 0 rgba(255,255,255,.24);
  color: #fffaf1;
  font-family: var(--font-serif);
  font-weight: 600;
}

.ledger-pill-action {
  flex: none;
  min-height: 37px;
  padding: 7px 12px;
  font-size: 12px;
}

.ledger-pill-action .icon,
.ledger-inline-add .icon,
.ledger-save-pill .icon {
  width: 15px;
  height: 15px;
}

.ledger-book-stage {
  position: relative;
  height: 300px;
  margin: 23px -2px 2px;
  perspective: 900px;
}

.ledger-book-card {
  position: absolute;
  display: block;
  width: calc(100% - 34px);
  height: 250px;
  padding: 25px 20px 20px 30px;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.82);
  border-radius: 20px 25px 22px 24px;
  background:
    repeating-linear-gradient(0deg, transparent 0 25px, rgba(137, 119, 92, .035) 26px),
    rgba(250, 247, 239, .9);
  box-shadow: 0 18px 35px rgba(50, 43, 34, .15), inset 0 1px 0 #fff;
  color: var(--ink);
  text-align: left;
  transform-origin: center bottom;
  transition: transform .28s ease, filter .28s ease, opacity .28s ease;
  backdrop-filter: blur(15px);
  -webkit-backdrop-filter: blur(15px);
}

.ledger-book-card.is-shared {
  top: 0;
  left: 0;
  z-index: 2;
  width: 74%;
  transform: rotate(-1.7deg);
}

.ledger-book-card.is-personal {
  top: 35px;
  right: 0;
  z-index: 1;
  transform: rotate(2.2deg) scale(.95);
  background: rgba(242, 238, 228, .86);
}

.ledger-book-card.is-personal .ledger-book-copy {
  width: 92px;
  margin-left: auto;
  text-align: right;
}

.ledger-book-card.is-personal .ledger-book-copy strong {
  font-size: 21px;
  white-space: nowrap;
}

.ledger-book-card.is-personal .ledger-book-copy strong::after {
  margin-left: auto;
}

.ledger-book-card.is-personal .ledger-book-memory {
  right: auto;
  left: 18px;
  transform: rotate(-2deg);
}

.ledger-book-card.is-shared .ledger-book-memory {
  width: 86px;
  height: 94px;
  right: 12px;
}

.ledger-book-card.is-shared .ledger-book-copy {
  width: 68%;
}

.ledger-book-card.is-active {
  z-index: 4;
  transform: translateY(-2px) rotate(-.6deg) scale(1);
  filter: none;
}

.ledger-book-card:not(.is-active) {
  filter: saturate(.72);
  opacity: .88;
}

.ledger-book-holes {
  position: absolute;
  top: 38px;
  left: 7px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: rgba(154, 143, 124, .35);
  box-shadow: 0 32px rgba(154,143,124,.35), 0 64px rgba(154,143,124,.35), 0 96px rgba(154,143,124,.35), 0 128px rgba(154,143,124,.35);
}

.ledger-book-copy {
  display: grid;
  width: 62%;
  gap: 3px;
}

.ledger-book-copy small {
  color: var(--ink-faint);
  font-family: var(--font-serif);
  font-size: 10px;
}

.ledger-book-copy strong {
  margin: 4px 0 12px;
  font-family: var(--font-serif);
  font-size: 27px;
  font-weight: 600;
  letter-spacing: -.04em;
}

.ledger-book-copy strong::after {
  content: '';
  display: block;
  width: 22px;
  height: 2px;
  margin-top: 7px;
  background: var(--ink);
}

.ledger-book-copy b {
  font-family: var(--font-serif);
  font-size: 27px;
  font-weight: 500;
  line-height: 1.15;
  font-variant-numeric: tabular-nums;
}

.ledger-book-copy em {
  margin-top: 8px;
  color: var(--ink-muted);
  font-size: 11px;
  font-style: normal;
}

.ledger-book-memory {
  position: absolute;
  right: 17px;
  bottom: 18px;
  display: grid;
  width: 112px;
  height: 105px;
  place-items: center;
  padding: 8px;
  transform: rotate(2.2deg);
  border: 1px solid rgba(184,170,142,.34);
  background: rgba(255, 253, 248, .84);
  box-shadow: 0 7px 16px rgba(47,40,31,.09);
}

.ledger-book-memory::before {
  content: '';
  position: absolute;
  top: -7px;
  left: 33px;
  width: 46px;
  height: 13px;
  background: rgba(231, 211, 172, .55);
  transform: rotate(-3deg);
}

.ledger-book-memory img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.ledger-book-memory i {
  display: grid;
  width: 44px;
  height: 44px;
  place-items: center;
  border-radius: 50%;
  background: var(--cinnabar-soft);
  color: var(--cinnabar);
  font-style: normal;
}

.ledger-book-memory i .icon {
  width: 21px;
  height: 21px;
}

.ledger-book-memory small {
  color: var(--ink-faint);
  font-family: var(--font-serif);
  font-size: 10px;
}

.ledger-home-section,
.ledger-flow {
  margin-top: 25px;
  padding: 18px 16px;
  border: 1px solid rgba(255,255,255,.7);
  border-radius: 20px;
  background: rgba(250, 246, 236, .68);
  box-shadow: 0 12px 28px rgba(59,48,36,.08), inset 0 1px rgba(255,255,255,.7);
  backdrop-filter: blur(15px);
  -webkit-backdrop-filter: blur(15px);
}

.ledger-section-title {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 13px;
}

.ledger-section-title > div {
  display: grid;
  gap: 2px;
}

.ledger-section-title small {
  color: var(--cinnabar);
  font-size: 10px;
}

.ledger-section-title h2 {
  font-family: var(--font-serif);
  font-size: 21px;
  font-weight: 600;
}

.ledger-section-title > b {
  font-family: var(--font-serif);
  font-size: 17px;
}

.ledger-section-title a {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  color: var(--ink-muted);
  font-size: 11px;
}

.ledger-section-title a .icon {
  width: 13px;
  height: 13px;
}

.ledger-category-notes {
  display: grid;
  gap: 8px;
}

.ledger-category-note {
  display: grid;
  grid-template-columns: 32px minmax(0, 1fr) 44px;
  align-items: center;
  gap: 8px;
  min-width: 0;
}

.ledger-category-note .ledger-category-icon {
  width: 30px;
  height: 30px;
}

.ledger-category-note .ledger-category-icon .icon {
  width: 15px;
  height: 15px;
}

.ledger-category-note > span:nth-child(2) {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  min-width: 0;
}

.ledger-category-note b,
.ledger-category-note small,
.ledger-category-note em {
  font-size: 11px;
  font-style: normal;
}

.ledger-category-note small,
.ledger-category-note em {
  color: var(--ink-muted);
  white-space: nowrap;
}

.ledger-category-note .ledger-progress {
  grid-column: 2;
  height: 3px;
}

.ledger-category-note em {
  grid-column: 3;
  grid-row: 1 / span 2;
  text-align: right;
}

.ledger-category-notes.is-compact .ledger-category-note:nth-child(n+4) {
  display: none;
}

.ledger-memory-list {
  display: grid;
  gap: 9px;
}

.ledger-memory-entry {
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr) auto 14px;
  align-items: center;
  gap: 10px;
  width: 100%;
  min-width: 0;
  padding: 10px;
  border: 1px solid rgba(184,170,142,.28);
  border-radius: 14px;
  background: rgba(255,253,247,.72);
  color: var(--ink);
  text-align: left;
  box-shadow: 0 5px 13px rgba(49,41,32,.045);
}

.ledger-memory-photo,
.ledger-memory-stamp {
  display: grid;
  width: 46px;
  height: 46px;
  place-items: center;
  overflow: hidden;
  border-radius: 10px 8px 11px 7px;
  background: var(--cinnabar-soft);
  color: var(--cinnabar);
}

.ledger-memory-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.ledger-memory-stamp .icon {
  width: 19px;
  height: 19px;
}

.ledger-memory-copy {
  display: grid;
  min-width: 0;
  gap: 2px;
}

.ledger-memory-copy small,
.ledger-memory-copy em {
  overflow: hidden;
  color: var(--ink-faint);
  font-size: 9px;
  font-style: normal;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ledger-memory-copy b {
  overflow: hidden;
  font-family: var(--font-serif);
  font-size: 14px;
  font-weight: 600;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ledger-memory-entry > strong {
  font-family: var(--font-serif);
  font-size: 14px;
  white-space: nowrap;
}

.ledger-memory-entry > .icon {
  width: 14px;
  height: 14px;
  color: var(--ink-faint);
}

.ledger-soft-empty {
  padding: 25px 15px;
  color: var(--ink-muted);
  font-family: var(--font-serif);
  font-size: 12px;
  line-height: 1.9;
  text-align: center;
}

.ledger-inline-add {
  width: 100%;
  min-height: 50px;
  margin-top: 24px;
  font-size: 16px;
}

.ledger-detail-head {
  padding: 5px 3px 23px;
}

.ledger-detail-head > span {
  display: block;
  margin-top: 27px;
  color: var(--cinnabar);
  font-family: var(--font-serif);
  font-size: 11px;
}

.ledger-detail-head h1 {
  margin: 5px 0 15px;
  font-family: var(--font-serif);
  font-size: 42px;
  font-weight: 600;
  letter-spacing: -.06em;
}

.ledger-detail-head > div {
  display: flex;
  align-items: baseline;
  gap: 13px;
}

.ledger-detail-head strong {
  font-family: var(--font-serif);
  font-size: 29px;
  font-weight: 500;
}

.ledger-detail-head small {
  color: var(--ink-muted);
  font-size: 11px;
}

.ledger-detail-budget .ledger-budget-card {
  padding: 17px;
  border-radius: 17px;
}

.ledger-detail-budget .ledger-budget-primary h2 {
  font-size: 27px;
}

.ledger-date-group + .ledger-date-group {
  margin-top: 20px;
}

.ledger-date-heading {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  margin: 0 2px 9px;
  color: var(--ink-muted);
  font-size: 11px;
}

.ledger-date-heading b {
  color: var(--ink);
  font-family: var(--font-serif);
  font-size: 13px;
}

.ledger-detail-empty {
  padding: 45px 15px;
}

.ledger-overlay {
  z-index: 60;
  padding-top: max(18px, env(safe-area-inset-top));
  background: rgba(29, 29, 27, .48);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  animation: ledger-fade .2s ease both;
}

.ledger-sheet {
  max-height: calc(100dvh - max(18px, env(safe-area-inset-top)));
  padding: 9px 18px calc(24px + env(safe-area-inset-bottom));
  border: 1px solid rgba(255,255,255,.7);
  border-bottom: 0;
  border-radius: 26px 26px 0 0;
  background:
    linear-gradient(150deg, rgba(255,253,248,.96), rgba(244,237,226,.95)),
    var(--paper-light);
  box-shadow: 0 -18px 45px rgba(27, 25, 22, .2), inset 0 1px #fff;
  scrollbar-width: none;
  backdrop-filter: blur(22px);
  -webkit-backdrop-filter: blur(22px);
  animation: ledger-sheet-up .28s ease both;
}

.sheet.ledger-sheet {
  max-height: min(92dvh, 780px);
  padding: 9px 18px calc(24px + env(safe-area-inset-bottom));
  border-radius: 26px 26px 0 0;
  background:
    linear-gradient(150deg, rgba(255,253,248,.96), rgba(244,237,226,.95)),
    var(--paper-light);
}

.ledger-sheet::-webkit-scrollbar {
  display: none;
}

.ledger-sheet-grip {
  width: 42px;
  height: 4px;
  margin: 1px auto 12px;
  border-radius: 99px;
  background: rgba(97, 89, 78, .27);
}

.ledger-sheet .sheet-head {
  margin-bottom: 12px;
  color: var(--ink);
}

.ledger-sheet .sheet-head > div {
  display: grid;
  gap: 2px;
}

.ledger-sheet .sheet-head small {
  color: var(--cinnabar);
  font-size: 10px;
}

.ledger-sheet .sheet-head h3 {
  font-family: var(--font-serif);
  font-size: 27px;
  font-weight: 600;
}

.ledger-sheet .sheet-close {
  background: rgba(255,255,255,.54);
}

.ledger-form {
  display: grid;
  gap: 13px;
  padding: 0 0 2px;
}

.ledger-date-field {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 35px;
  padding: 4px 5px 4px 10px;
  border: 1px solid rgba(184,170,142,.36);
  border-radius: 999px;
  background: rgba(255,255,255,.44);
  color: var(--ink-muted);
  font-size: 11px;
}

.ledger-date-field span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

.ledger-date-field .icon {
  width: 13px;
  height: 13px;
  color: var(--cinnabar);
}

.ledger-date-field input {
  min-height: 27px;
  padding: 0 8px;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: var(--ink-soft);
  font: inherit;
}

.ledger-amount {
  display: grid;
  gap: 2px;
  padding: 6px 5px 9px;
  border-bottom: 1px dashed rgba(184,170,142,.45);
}

.ledger-amount > span,
.ledger-field-label {
  color: var(--ink-muted);
  font-size: 11px;
}

.ledger-amount > div {
  display: flex;
  align-items: center;
}

.ledger-amount i {
  color: var(--ink);
  font-family: var(--font-serif);
  font-size: 34px;
  font-style: normal;
}

.ledger-amount input {
  width: 100%;
  min-width: 0;
  height: 64px;
  padding: 0 9px;
  border: 0;
  background: transparent;
  color: var(--ink);
  font-family: var(--font-serif);
  font-size: clamp(48px, 15vw, 62px);
  font-weight: 500;
  letter-spacing: -.04em;
  outline: 0;
}

.ledger-field-group {
  display: grid;
  gap: 8px;
}

.ledger-category-picks {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 7px;
}

.ledger-category-picks button,
.ledger-book-picks button {
  display: inline-flex;
  min-width: 0;
  align-items: center;
  justify-content: center;
  gap: 4px;
  min-height: 37px;
  padding: 6px 5px;
  border: 1px solid rgba(184,170,142,.4);
  border-radius: 999px;
  background: rgba(255,255,255,.35);
  color: var(--ink-muted);
  font-size: 11px;
  white-space: nowrap;
}

.ledger-category-picks button .icon,
.ledger-book-picks button .icon {
  width: 14px;
  height: 14px;
}

.ledger-category-picks button.on,
.ledger-book-picks button.on {
  border-color: var(--cinnabar);
  background: linear-gradient(135deg, #c45f43, #a83f2e);
  box-shadow: 0 5px 12px rgba(157,64,48,.17);
  color: #fffaf2;
}

.ledger-book-picks {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 7px;
}

.ledger-select-row {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) 14px;
  align-items: center;
  gap: 8px;
  min-height: 48px;
  padding: 5px 12px;
  border: 1px solid rgba(184,170,142,.36);
  border-radius: 14px;
  background: rgba(255,255,255,.38);
  color: var(--ink-soft);
  font-size: 12px;
}

.ledger-select-row > span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.ledger-select-row .icon {
  width: 15px;
  height: 15px;
  color: var(--cinnabar);
}

.ledger-select-row > .icon:last-child {
  color: var(--ink-faint);
}

.ledger-select-row select {
  min-width: 0;
  border: 0;
  background: transparent;
  color: var(--ink);
  font: inherit;
  text-align: right;
  outline: 0;
  appearance: none;
}

.ledger-form-details {
  overflow: hidden;
  border: 1px solid rgba(184,170,142,.36);
  border-radius: 14px;
  background: rgba(255,255,255,.34);
}

.ledger-form-details summary {
  display: grid;
  grid-template-columns: minmax(0,1fr) auto 14px;
  align-items: center;
  gap: 7px;
  min-height: 48px;
  padding: 8px 12px;
  cursor: pointer;
  list-style: none;
}

.ledger-form-details summary::-webkit-details-marker {
  display: none;
}

.ledger-form-details summary > span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
  color: var(--ink-soft);
  font-size: 12px;
}

.ledger-form-details summary > span .icon {
  width: 15px;
  height: 15px;
  color: var(--cinnabar);
}

.ledger-form-details summary small {
  color: var(--ink-faint);
  font-size: 10px;
  white-space: nowrap;
}

.ledger-form-details summary > .icon {
  width: 14px;
  height: 14px;
  color: var(--ink-faint);
  transition: transform .2s ease;
}

.ledger-form-details[open] summary > .icon {
  transform: rotate(90deg);
}

.ledger-details-body {
  display: grid;
  gap: 12px;
  padding: 11px 12px 13px;
  border-top: 1px dashed rgba(184,170,142,.42);
}

.ledger-details-body label {
  display: grid;
  gap: 5px;
  color: var(--ink-muted);
  font-size: 10px;
}

.ledger-details-body select,
.ledger-details-body textarea {
  width: 100%;
  padding: 8px 10px;
  border: 1px solid rgba(184,170,142,.4);
  border-radius: 10px;
  background: rgba(255,253,248,.68);
  color: var(--ink);
  font: inherit;
  font-size: 12px;
}

.ledger-details-body textarea {
  min-height: 72px;
  line-height: 1.65;
  resize: vertical;
}

.ledger-participants {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

.ledger-participants label {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-height: 31px;
  padding: 5px 9px;
  border: 1px solid rgba(184,170,142,.4);
  border-radius: 999px;
  background: rgba(255,255,255,.45);
  color: var(--ink-soft);
  font-size: 11px;
}

.ledger-participants input {
  width: auto;
  accent-color: var(--cinnabar);
}

.ledger-inline-note {
  margin: 0;
  color: var(--ink-muted);
  font-size: 10px;
  line-height: 1.7;
}

.ledger-receipt-upload {
  display: grid;
  gap: 8px;
}

.ledger-receipt-pick {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 39px;
  border: 1px dashed rgba(157,64,48,.38);
  border-radius: 11px;
  color: var(--cinnabar);
  font-size: 11px;
}

.ledger-receipt-pick .icon {
  width: 15px;
  height: 15px;
}

.ledger-receipt-preview {
  display: grid;
  grid-template-columns: 48px 1fr auto;
  align-items: center;
  gap: 9px;
}

.ledger-receipt-preview img {
  width: 48px;
  height: 48px;
  border-radius: 9px;
  object-fit: cover;
}

.ledger-receipt-preview div {
  display: grid;
  gap: 2px;
}

.ledger-receipt-preview b {
  font-size: 11px;
}

.ledger-receipt-preview span,
.ledger-receipt-preview button {
  color: var(--ink-muted);
  font-size: 9px;
}

.ledger-receipt-preview button {
  color: var(--cinnabar);
}

.ledger-form-error {
  min-height: 17px;
  margin: 0;
  color: var(--cinnabar);
  font-size: 11px;
  line-height: 1.5;
}

.ledger-save-pill {
  width: 100%;
  min-height: 50px;
  font-size: 17px;
}

.ledger-save-pill:disabled,
.ledger-sheet button:disabled {
  opacity: .56;
}

.ledger-expense-detail {
  padding-bottom: calc(30px + env(safe-area-inset-bottom));
}

.ledger-detail-receipt {
  display: block;
  width: 100%;
  max-height: 270px;
  margin: 5px 0 15px;
  object-fit: cover;
  border: 8px solid rgba(255,255,255,.72);
  border-radius: 12px 10px 14px 9px;
  box-shadow: 0 8px 20px rgba(52,43,33,.11);
}

.ledger-detail-icon {
  display: grid;
  width: 58px;
  height: 58px;
  margin: 7px auto 13px;
  place-items: center;
  border-radius: 50%;
  background: var(--cinnabar-soft);
  color: var(--cinnabar);
}

.ledger-detail-copy {
  display: grid;
  gap: 4px;
  margin-bottom: 15px;
  text-align: center;
}

.ledger-detail-copy span {
  color: var(--ink-faint);
  font-size: 10px;
}

.ledger-detail-copy h2 {
  font-family: var(--font-serif);
  font-size: 22px;
  font-weight: 600;
}

.ledger-detail-copy strong {
  color: var(--cinnabar);
  font-family: var(--font-serif);
  font-size: 34px;
  font-weight: 500;
}

.ledger-expense-detail dl {
  margin: 0 0 16px;
  overflow: hidden;
  border: 1px solid rgba(184,170,142,.36);
  border-radius: 14px;
  background: rgba(255,255,255,.35);
}

.ledger-expense-detail dl div {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  padding: 10px 12px;
  border-bottom: 1px dashed rgba(184,170,142,.34);
  font-size: 11px;
}

.ledger-expense-detail dl div:last-child {
  border-bottom: 0;
}

.ledger-expense-detail dt {
  flex: none;
  color: var(--ink-muted);
}

.ledger-expense-detail dd {
  margin: 0;
  color: var(--ink);
  text-align: right;
}

.ledger-budget-body {
  display: grid;
  gap: 15px;
  padding: 0 0 6px;
}

.ledger-budget-body > p {
  margin: 0;
  color: var(--ink-muted);
  font-family: var(--font-serif);
  font-size: 12px;
  line-height: 1.75;
}

.ledger-budget-suggestions {
  display: grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  gap: 7px;
}

.ledger-budget-suggestions button {
  min-height: 42px;
  padding: 7px 3px;
  border: 1px solid rgba(184,170,142,.4);
  border-radius: 13px;
  background: rgba(255,255,255,.4);
  color: var(--cinnabar);
  font-family: var(--font-serif);
  font-size: 13px;
}

.ledger-budget-suggestions button.on {
  border-color: var(--cinnabar);
  background: var(--cinnabar-soft);
}

.ledger-budget-body label {
  display: grid;
  gap: 6px;
  color: var(--ink-muted);
  font-size: 11px;
}

.ledger-budget-input {
  display: flex;
  align-items: center;
  min-height: 52px;
  border: 1px solid rgba(184,170,142,.42);
  border-radius: 13px;
  background: rgba(255,255,255,.42);
}

.ledger-budget-input i {
  padding-left: 13px;
  color: var(--cinnabar);
  font-family: var(--font-serif);
  font-size: 23px;
  font-style: normal;
}

.ledger-budget-input input {
  flex: 1;
  min-width: 0;
  height: 50px;
  padding: 0 10px;
  border: 0;
  background: transparent;
  color: var(--ink);
  font: inherit;
  outline: 0;
}

/* ledger2 视觉校正：压缩首屏层级，保留双档案卡片并改用中央浮层 */
.ledger-page {
  --ledger-deep: #4a6460;
  --ledger-jade: #7a9387;
  --ledger-bamboo: #bfd0b8;
  --ledger-mist: #dde6d6;
  --ledger-blue-mist: #cbd8d8;
  --ledger-paper: #f3f1e6;
  --ledger-fog-ground: #b9c9be;
  --ledger-glass-edge: var(--glass-border);
  --ledger-paper-shadow: rgba(43, 59, 55, .07);
  padding-bottom: 168px;
  background: transparent;
  color: var(--glass-ink-strong);
  -webkit-tap-highlight-color: transparent;
}

.ledger-page button,
.ledger-page a,
.ledger-page label,
.ledger-overlay button,
.ledger-overlay label {
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
}

.ledger-page button,
.ledger-page a,
.ledger-overlay button,
.ledger-overlay label {
  -webkit-user-select: none;
  user-select: none;
}

.ledger-page :is(button, a, [role="button"]):focus-visible,
.ledger-overlay :is(button, a, [role="button"]):focus-visible {
  outline-color: rgba(74, 100, 96, .42);
}

.ledger-sheet,
.ledger-form,
.ledger-field-group,
.ledger-supplement-body,
.ledger-memory-copy {
  min-width: 0;
}

.ledger-sheet input,
.ledger-sheet select,
.ledger-sheet textarea {
  max-width: 100%;
  min-width: 0;
  -webkit-tap-highlight-color: transparent;
}

.ledger-sheet input,
.ledger-sheet textarea {
  -webkit-user-select: text;
  user-select: text;
}

.ledger-sheet input:focus,
.ledger-sheet input:focus-visible,
.ledger-sheet input:invalid,
.ledger-sheet select:focus,
.ledger-sheet select:focus-visible,
.ledger-sheet select:invalid,
.ledger-sheet textarea:focus,
.ledger-sheet textarea:focus-visible,
.ledger-sheet textarea:invalid {
  outline: none;
  border-color: rgba(74, 100, 96, .42);
}

.ledger-memory-copy b,
.ledger-memory-copy em {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ledger-page > .ledger-background {
  position: fixed;
  inset: 0 auto auto 50%;
  z-index: 0;
  width: min(100vw, var(--shell-max));
  max-width: 100vw;
  height: 100vh;
  height: 100lvh;
  overflow: hidden;
  pointer-events: none;
  background:
    url('../../assets/images/journal-bg-placeholder.webp') center top / auto 100% no-repeat,
    #aebdb3;
  transform: translateX(-50%);
}

.ledger-background::before,
.ledger-background::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.ledger-background::before {
  background: url('../../assets/images/journal-bg.png') center top / auto 100% no-repeat;
  background-image: image-set(
    url('../../assets/images/journal-bg.webp') type("image/webp"),
    url('../../assets/images/journal-bg.png') type("image/png")
  );
  background-position: center top;
  background-size: auto 100%;
  background-repeat: no-repeat;
  filter: saturate(.9) contrast(.98);
  opacity: 0;
  transition: opacity .32s ease;
}

.ledger-background.is-ready::before {
  opacity: 1;
}

.ledger-background::after {
  background:
    radial-gradient(ellipse 82% 46% at 24% 18%, rgba(221, 230, 214, .11), rgba(221, 230, 214, .035) 52%, transparent 78%),
    radial-gradient(ellipse 76% 52% at 82% 66%, rgba(203, 216, 216, .08), transparent 76%),
    linear-gradient(180deg, rgba(221, 230, 214, .035), rgba(74, 100, 96, .055) 58%, rgba(74, 100, 96, .09));
}

.ledger-page::before {
  content: none;
}

.ledger-back {
  border-color: var(--glass-border-soft);
  background: rgba(243, 241, 230, .7);
  box-shadow: 0 5px 14px rgba(43, 59, 55, .045), inset 0 1px rgba(255, 255, 255, .48);
  color: var(--glass-ink);
  backdrop-filter: blur(16px) saturate(.78);
  -webkit-backdrop-filter: blur(16px) saturate(.78);
}

.ledger-title {
  padding-bottom: 14px;
}

.ledger-title h1 {
  margin: 17px 0 5px;
  font-size: clamp(30px, 9vw, 38px);
  letter-spacing: -.045em;
  color: #263934;
  text-shadow: var(--glass-text-shadow);
}

.ledger-title p {
  max-width: 260px;
  color: var(--glass-ink-muted);
  font-size: 11px;
  line-height: 1.65;
}

.ledger-book-stage {
  position: relative;
  display: block;
  height: 164px;
  margin: 17px -1px 4px;
  perspective: 850px;
}

.ledger-book-card,
.ledger-book-card.is-shared,
.ledger-book-card.is-personal {
  position: absolute;
  width: 74%;
  height: 136px;
  padding: 17px 15px 14px 24px;
  border-color: var(--glass-border);
  border-radius: 16px 22px 18px 20px;
  background:
    repeating-linear-gradient(105deg, rgba(255, 255, 255, .024) 0 1px, rgba(74, 100, 96, .012) 1px 3px),
    repeating-linear-gradient(0deg, transparent 0 22px, rgba(74, 100, 96, .045) 23px),
    linear-gradient(145deg, rgba(243, 241, 230, .6), rgba(221, 230, 214, .4));
  box-shadow: 0 7px 17px rgba(43, 59, 55, .06), inset 0 1px var(--glass-highlight);
  backdrop-filter: blur(23px) saturate(.7) contrast(.97);
  -webkit-backdrop-filter: blur(23px) saturate(.7) contrast(.97);
  transform-origin: 12% 82%;
  transition: transform .26s cubic-bezier(.2,.72,.24,1), opacity .26s ease, filter .26s ease, box-shadow .26s ease;
}

.ledger-book-card::before {
  content: '';
  position: absolute;
  inset: 5px 4px 5px 8px;
  pointer-events: none;
  border: 1px solid var(--glass-border-soft);
  border-radius: 13px 18px 14px 17px;
}

.ledger-book-card::after {
  content: '';
  position: absolute;
  top: 8px;
  right: 5px;
  bottom: 8px;
  width: 4px;
  pointer-events: none;
  border-left: 1px solid rgba(74, 100, 96, .09);
  border-right: 1px solid var(--glass-border-soft);
  border-radius: 50%;
}

.ledger-book-card.is-shared {
  top: 0;
  left: 0;
  width: 76%;
  transform: rotate(-1.25deg);
}

.ledger-book-card.is-personal {
  top: 22px;
  right: 0;
  width: 70%;
  background:
    repeating-linear-gradient(105deg, rgba(255, 255, 255, .024) 0 1px, rgba(74, 100, 96, .012) 1px 3px),
    repeating-linear-gradient(0deg, transparent 0 22px, rgba(74, 100, 96, .04) 23px),
    linear-gradient(145deg, rgba(235, 241, 234, .57), rgba(203, 216, 216, .38));
  transform: rotate(1.35deg);
}

.ledger-book-card.is-active {
  z-index: 4;
  opacity: 1;
  filter: none;
  border-color: rgba(232, 239, 232, .46);
  box-shadow: 0 9px 19px rgba(43, 59, 55, .075), inset 0 1px rgba(255,255,255,.34);
}

.ledger-book-card.is-shared.is-active {
  transform: translateY(-4px) rotate(-.35deg) scale(1);
}

.ledger-book-card.is-personal.is-active {
  transform: translateY(-4px) rotate(.4deg) scale(1);
}

.ledger-book-card:not(.is-active) {
  z-index: 1;
  opacity: .74;
  filter: saturate(.55) contrast(.96);
}

.ledger-book-card.is-shared:not(.is-active) {
  transform: translateY(7px) rotate(-2.15deg) scale(.955);
}

.ledger-book-card.is-personal:not(.is-active) {
  transform: translateY(8px) rotate(2.2deg) scale(.955);
}

.ledger-book-holes {
  top: 27px;
  left: 7px;
  width: 6px;
  height: 6px;
  background: rgba(98, 116, 110, .24);
  box-shadow: 0 26px rgba(98,116,110,.24), 0 52px rgba(98,116,110,.24), 0 78px rgba(98,116,110,.24);
}

.ledger-book-copy,
.ledger-book-card.is-shared .ledger-book-copy {
  position: relative;
  z-index: 1;
  width: 66%;
  margin: 0;
  gap: 2px;
  text-align: left;
}

.ledger-book-card.is-personal .ledger-book-copy {
  position: relative;
  z-index: 1;
  width: 62%;
  margin-left: auto;
  text-align: right;
}

.ledger-personal-budget {
  position: absolute;
  z-index: 2;
  top: 15px;
  left: 17px;
  display: grid;
  gap: 1px;
  color: var(--glass-ink-muted);
  text-align: left;
}

.ledger-personal-budget small {
  font-family: var(--font-serif);
  font-size: 8px;
  font-weight: 400;
  letter-spacing: .04em;
}

.ledger-personal-budget b {
  color: var(--glass-ink);
  font-family: var(--font-serif);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.2;
}

.ledger-personal-budget b.is-over {
  color: var(--glass-cinnabar);
}

.ledger-book-copy small {
  overflow: hidden;
  color: var(--glass-ink-faint);
  font-size: 9px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ledger-book-copy strong,
.ledger-book-card.is-personal .ledger-book-copy strong {
  margin: 2px 0 7px;
  font-size: 16px;
  letter-spacing: -.02em;
  color: var(--glass-ink-strong);
}

.ledger-book-copy strong::after,
.ledger-book-card.is-personal .ledger-book-copy strong::after {
  width: 17px;
  height: 1px;
  margin: 5px 0 0;
  background: #667b76;
}

.ledger-book-card.is-personal .ledger-book-copy strong::after {
  margin-left: auto;
}

.ledger-book-copy b {
  color: #283d38;
  font-size: 26px;
  font-weight: 600;
  line-height: 1;
  text-shadow: var(--glass-text-shadow);
}

.ledger-book-copy em {
  overflow: hidden;
  margin-top: 5px;
  color: var(--glass-ink-muted);
  font-size: 9px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ledger-book-memory,
.ledger-book-card.is-personal .ledger-book-memory,
.ledger-book-card.is-shared .ledger-book-memory {
  right: 13px;
  bottom: 12px;
  left: auto;
  width: 55px;
  height: 61px;
  padding: 6px;
  transform: rotate(1.8deg);
  border-color: rgba(122, 147, 135, .24);
  border-radius: 7px 9px 8px 6px;
  background: rgba(243, 241, 230, .54);
  box-shadow: 0 4px 9px rgba(43, 59, 55, .045), inset 0 1px rgba(255, 255, 255, .26);
  backdrop-filter: blur(10px) saturate(.76);
  -webkit-backdrop-filter: blur(10px) saturate(.76);
}

.ledger-book-memory small {
  display: none;
}

.ledger-book-card.is-personal .ledger-book-memory {
  right: auto;
  left: 13px;
  transform: rotate(-1.7deg);
}

.ledger-book-memory::before {
  display: block;
  top: -5px;
  left: 15px;
  width: 27px;
  height: 9px;
  background: rgba(183, 199, 194, .5);
}

.ledger-book-memory i {
  width: 32px;
  height: 32px;
  background: rgba(199, 216, 211, .64);
  color: #536e68;
}

.ledger-book-memory i .icon {
  width: 16px;
  height: 16px;
}

.ledger-book-memory img {
  border-radius: 3px;
}

.ledger-page .ledger-home-section,
.ledger-page .ledger-flow {
  border-color: var(--glass-border);
  background:
    repeating-linear-gradient(108deg, rgba(255, 255, 255, .018) 0 1px, rgba(74, 100, 96, .009) 1px 3px),
    linear-gradient(145deg, rgba(243, 241, 230, .42), rgba(221, 230, 214, .25));
  box-shadow: var(--glass-shadow), inset 0 1px var(--glass-highlight);
  backdrop-filter: blur(23px) saturate(.68) contrast(.97);
  -webkit-backdrop-filter: blur(23px) saturate(.68) contrast(.97);
}

.ledger-page .ledger-section-title small,
.ledger-detail-head > span,
.ledger-sheet .sheet-head small {
  color: var(--glass-ink-muted);
}

.ledger-page .ledger-section-title > b {
  color: var(--glass-ink-strong);
  text-shadow: var(--glass-text-shadow);
}

.ledger-page .ledger-section-title h2,
.ledger-page .ledger-detail-head h1,
.ledger-sheet .sheet-head h3 {
  color: var(--glass-ink-strong);
  text-shadow: var(--glass-text-shadow);
}

.ledger-category-section {
  min-height: 0;
  margin-top: 18px;
  border-color: var(--glass-border-soft);
  background:
    repeating-linear-gradient(108deg, rgba(255, 255, 255, .014) 0 1px, rgba(74, 100, 96, .008) 1px 3px),
    rgba(243, 241, 230, .24);
  box-shadow: 0 4px 13px rgba(43, 59, 55, .028), inset 0 1px rgba(255,255,255,.24);
  backdrop-filter: blur(20px) saturate(.66) contrast(.97);
  -webkit-backdrop-filter: blur(20px) saturate(.66) contrast(.97);
}

.ledger-category-section .ledger-section-title {
  margin-bottom: 10px;
}

.ledger-category-section .ledger-section-title small {
  color: var(--glass-ink-muted);
}

.ledger-category-section .ledger-section-title h2 {
  font-size: 18px;
}

.ledger-page .ledger-category-icon {
  background: var(--glass-cinnabar-soft);
  color: var(--glass-cinnabar);
}

.ledger-page .ledger-progress {
  background: var(--glass-progress-track);
  box-shadow: inset 0 1px 2px rgba(35, 52, 48, .08);
}

.ledger-page .ledger-progress i {
  background: var(--glass-progress-fill);
}

.ledger-page .ledger-category-note b {
  color: var(--glass-ink-strong);
}

.ledger-page .ledger-category-note small {
  color: var(--glass-ink-strong);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  text-shadow: var(--glass-text-shadow);
}

.ledger-page .ledger-category-note em {
  color: var(--glass-ink-muted);
}

.ledger-date-overview {
  margin-top: 12px;
}

.ledger-date-overview-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin: 0 3px 6px;
}

.ledger-date-overview-head span {
  color: var(--glass-ink);
  font-family: var(--font-serif);
  font-size: 12px;
}

.ledger-date-overview-head small {
  color: var(--glass-ink-faint);
  font-size: 9px;
}

.ledger-date-capsules {
  display: flex;
  gap: 6px;
  padding: 1px 2px 3px;
  overflow-x: auto;
  scrollbar-width: none;
}

.ledger-date-capsules::-webkit-scrollbar {
  display: none;
}

.ledger-date-capsule {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 4px;
  min-height: 28px;
  padding: 4px 9px;
  border: 1px solid var(--glass-border-soft);
  border-radius: 999px;
  background: rgba(243, 241, 230, .26);
  color: #405650;
  font-size: 8px;
  box-shadow: inset 0 1px rgba(255, 255, 255, .22);
  backdrop-filter: blur(12px) saturate(.7);
  -webkit-backdrop-filter: blur(12px) saturate(.7);
}

.ledger-date-capsule b {
  color: inherit;
  font-family: var(--font-serif);
  font-size: 10px;
  font-weight: 600;
}

.ledger-date-capsule.is-active {
  border-color: rgba(74, 100, 96, .3);
  background: rgba(122, 147, 135, .9);
  box-shadow: 0 2px 6px rgba(43, 59, 55, .07), inset 0 1px rgba(255, 255, 255, .2);
  color: #f8f6ef;
}

.ledger-today-section {
  min-height: 210px;
  margin-top: 10px;
  padding: 21px 18px;
  border-color: var(--ledger-glass-edge);
  background:
    repeating-linear-gradient(108deg, rgba(255, 255, 255, .022) 0 1px, rgba(74, 100, 96, .01) 1px 3px),
    linear-gradient(145deg, rgba(243, 241, 230, .46), rgba(221, 230, 214, .29));
  box-shadow: 0 7px 18px var(--ledger-paper-shadow), inset 0 1px var(--glass-highlight);
  backdrop-filter: blur(29px) saturate(.68) contrast(.97);
  -webkit-backdrop-filter: blur(29px) saturate(.68) contrast(.97);
}

.ledger-today-section .ledger-section-title small {
  color: var(--glass-ink-muted);
}

.ledger-today-section .ledger-section-title h2 {
  font-size: 23px;
}

.ledger-today-section .ledger-soft-empty {
  display: grid;
  min-height: 112px;
  place-items: center;
  padding: 18px;
}

.ledger-page .ledger-budget-card {
  border-color: var(--ledger-glass-edge);
  background:
    repeating-linear-gradient(108deg, rgba(255, 255, 255, .022) 0 1px, rgba(74, 100, 96, .01) 1px 3px),
    linear-gradient(135deg, rgba(243, 241, 230, .48), rgba(221, 230, 214, .3));
  box-shadow: 0 7px 19px var(--ledger-paper-shadow), inset 0 1px var(--glass-highlight);
  backdrop-filter: blur(29px) saturate(.68) contrast(.97);
  -webkit-backdrop-filter: blur(29px) saturate(.68) contrast(.97);
}

.ledger-page .ledger-paper-tape {
  background: rgba(122, 147, 135, .34);
}

.ledger-page .ledger-budget-card > span,
.ledger-page .ledger-budget-card.is-unset > div:not(.ledger-paper-tape) > span {
  color: var(--glass-ink);
}

.ledger-page .ledger-budget-card.is-unset h2 {
  color: var(--glass-ink-strong);
  text-shadow: var(--glass-text-shadow);
}

.ledger-page .ledger-budget-card.is-unset p {
  color: var(--glass-ink-muted);
}

.ledger-page .ledger-budget-progress i {
  background: var(--glass-progress-fill);
  box-shadow: 0 0 7px rgba(74, 100, 96, .16);
}

.ledger-page .ledger-budget-progress {
  background: rgba(47, 66, 61, .23);
  box-shadow: inset 0 1px 2px rgba(35, 52, 48, .12);
}

.ledger-page .ledger-budget-primary h2 {
  color: #283d38;
  text-shadow: var(--glass-text-shadow);
}

.ledger-page .ledger-budget-primary small {
  color: var(--glass-ink);
  font-weight: 600;
}

.ledger-page .ledger-budget-numbers small {
  color: var(--glass-ink-muted);
}

.ledger-page .ledger-budget-numbers b {
  color: var(--glass-ink-strong);
  font-weight: 600;
  text-shadow: var(--glass-text-shadow);
}

.ledger-page .ledger-budget-numbers b.is-over {
  color: var(--glass-cinnabar);
}

.ledger-page .ledger-budget-edit {
  border-color: var(--glass-border-soft);
  background: rgba(243, 241, 230, .42);
  color: var(--glass-ink);
  box-shadow: inset 0 1px rgba(255, 255, 255, .36);
}

.ledger-page .ledger-pill-action {
  border: 1px solid rgba(78, 108, 103, .24);
  background: rgba(191, 208, 184, .58);
  box-shadow: 0 4px 11px rgba(43, 59, 55, .065), inset 0 1px rgba(255,255,255,.4);
  color: #405e58;
}

.ledger-budget-modes {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3px;
  padding: 3px;
  border: 1px solid var(--glass-border-soft);
  border-radius: 999px;
  background: rgba(221, 230, 214, .28);
  box-shadow: inset 0 1px rgba(255, 255, 255, .2);
}

.ledger-budget-modes button {
  min-height: 34px;
  padding: 5px 12px;
  border-radius: 999px;
  background: transparent;
  color: #71807c;
  font-family: var(--font-serif);
  font-size: 12px;
  transition: background .18s ease, color .18s ease, box-shadow .18s ease;
}

.ledger-budget-modes button.on {
  background: rgba(243, 241, 230, .52);
  box-shadow: 0 2px 7px rgba(43, 59, 55, .04), inset 0 1px rgba(255,255,255,.26);
  color: #405f59;
}

.ledger-budget-mode-content {
  display: grid;
  gap: 15px;
}

.ledger-budget-mode-content > p {
  margin: 0;
  color: #667671;
  font-family: var(--font-serif);
  font-size: 12px;
  line-height: 1.75;
}

.ledger-budget-sheet .ledger-budget-suggestions button {
  border-color: rgba(99, 126, 120, .24);
  background: rgba(243, 241, 230, .42);
  color: #52716a;
}

.ledger-budget-sheet .ledger-budget-suggestions button.on,
.ledger-budget-sheet .ledger-budget-suggestions button:active {
  border-color: rgba(70, 105, 98, .4);
  background: rgba(191, 208, 184, .56);
}

.ledger-budget-sheet .ledger-budget-input {
  border-color: rgba(99, 126, 122, .28);
  background: rgba(243, 241, 230, .46);
}

.ledger-budget-sheet .ledger-budget-input i {
  color: #55746d;
}

.ledger-entry-sheet .ledger-save-pill {
  background: rgba(74, 100, 96, .94);
  box-shadow: 0 5px 13px rgba(43, 59, 55, .12), inset 0 1px rgba(255,255,255,.16);
  color: #fbfbf5;
}

.ledger-budget-sheet .glass-button.glass-button--primary {
  border: 1px solid rgba(223, 235, 227, .38);
  background: var(--glass-surface-primary);
  box-shadow: 0 5px 14px rgba(35, 52, 48, .08), inset 0 1px rgba(255, 255, 255, .22);
  color: #f5f6ef;
  backdrop-filter: blur(16px) saturate(.76);
  -webkit-backdrop-filter: blur(16px) saturate(.76);
}

.ledger-budget-sheet .glass-button.glass-button--quiet {
  border: 1px solid transparent;
  background: rgba(221, 230, 214, .13);
  box-shadow: none;
  color: #52655f;
  backdrop-filter: blur(10px) saturate(.7);
  -webkit-backdrop-filter: blur(10px) saturate(.7);
}

.ledger-entry-sheet .ledger-select-row .icon,
.ledger-entry-sheet .ledger-form-details summary > span .icon,
.ledger-entry-sheet .ledger-date-field .icon {
  color: #5a7972;
}

.ledger-entry-sheet .ledger-receipt-pick {
  border-color: rgba(78, 111, 104, .34);
  color: #4f7169;
}

.ledger-page .ledger-memory-entry {
  border-color: var(--glass-border-soft);
  background: rgba(243, 241, 230, .28);
  box-shadow: 0 3px 10px rgba(43, 59, 55, .035), inset 0 1px rgba(255, 255, 255, .2);
  backdrop-filter: blur(12px) saturate(.66);
  -webkit-backdrop-filter: blur(12px) saturate(.66);
}

.ledger-page .ledger-memory-stamp {
  background: var(--glass-cinnabar-soft);
  color: var(--glass-cinnabar);
}

.ledger-page .ledger-memory-copy small,
.ledger-page .ledger-memory-copy em {
  color: var(--glass-ink-faint);
}

.ledger-page .ledger-memory-copy b {
  color: var(--glass-ink-strong);
}

.ledger-page .ledger-memory-entry > strong {
  color: var(--glass-ink-strong);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  text-shadow: var(--glass-text-shadow);
}

.ledger-page .ledger-memory-entry > .icon {
  color: var(--glass-ink-faint);
}

.ledger-page .ledger-soft-empty {
  color: var(--glass-ink-muted);
  text-shadow: var(--glass-text-shadow);
}

.ledger-page .ledger-detail-copy strong {
  color: var(--glass-ink-strong);
  text-shadow: var(--glass-text-shadow);
}

.ledger-page .ledger-detail-head strong {
  color: var(--glass-ink-strong);
  font-weight: 600;
  text-shadow: var(--glass-text-shadow);
}

.ledger-page .ledger-detail-head small,
.ledger-page .ledger-detail-copy span {
  color: var(--glass-ink-muted);
}

.ledger-page .ledger-participants input {
  accent-color: var(--ledger-jade);
}

.ledger-sheet .sheet-close,
.ledger-page .ledger-participants label,
.ledger-page .ledger-expense-detail dl {
  border-color: rgba(122, 147, 135, .2);
  background: rgba(243, 241, 230, .42);
  box-shadow: inset 0 1px rgba(255, 255, 255, .3);
}

.ledger-add-tool {
  position: fixed;
  right: max(18px, calc((100vw - var(--shell-max)) / 2 + 18px));
  bottom: calc(84px + env(safe-area-inset-bottom));
  z-index: 35;
  display: inline-flex;
  width: 100px;
  height: 42px;
  align-items: center;
  justify-content: center;
  gap: 7px;
  border: 1px solid var(--glass-border);
  border-radius: 16px 16px 17px 11px;
  background:
    linear-gradient(135deg, rgba(221, 230, 214, .5), rgba(203, 216, 216, .4)),
    rgba(243, 241, 230, .3);
  box-shadow: 0 5px 14px rgba(43, 59, 55, .055), inset 0 1px var(--glass-highlight);
  color: #385a56;
  backdrop-filter: blur(18px) saturate(.74);
  -webkit-backdrop-filter: blur(18px) saturate(.74);
  transition: opacity .18s ease, transform .18s ease, background .18s ease;
}

.ledger-add-tool::after {
  content: '';
  position: absolute;
  right: 7px;
  bottom: -3px;
  width: 13px;
  height: 6px;
  border-radius: 0 0 8px 8px;
  background: rgba(191, 208, 184, .54);
  transform: rotate(-8deg);
}

.ledger-add-tool > span {
  color: #557b75;
  font-size: 15px;
  line-height: 1;
}

.ledger-add-tool > b {
  font-family: var(--font-serif);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: .04em;
}

.ledger-add-tool:active {
  transform: translateY(1px) rotate(-.4deg);
  background: linear-gradient(135deg, rgba(221, 230, 214, .76), rgba(191, 208, 184, .6));
}

.app-main.ledger-modal-open .ledger-add-tool {
  opacity: 0;
  pointer-events: none;
  transform: translateY(7px) scale(.96);
}

.sheet-overlay.ledger-overlay {
  align-items: center;
  padding: max(18px, env(safe-area-inset-top)) 18px max(18px, env(safe-area-inset-bottom));
  background: rgba(34, 45, 44, .42);
  backdrop-filter: blur(10px) saturate(.7);
  -webkit-backdrop-filter: blur(10px) saturate(.7);
}

.ledger-sheet,
.sheet.ledger-sheet {
  width: min(100%, 448px);
  max-height: min(86dvh, 760px);
  padding: 18px 19px 20px;
  border: 1px solid var(--glass-border);
  border-radius: 24px;
  background:
    repeating-linear-gradient(108deg, rgba(255, 255, 255, .022) 0 1px, rgba(74, 100, 96, .01) 1px 3px),
    linear-gradient(145deg, rgba(243, 241, 230, .82), rgba(221, 230, 214, .7) 48%, rgba(235, 237, 226, .76));
  box-shadow: 0 18px 46px rgba(28, 39, 38, .2), inset 0 1px rgba(255,255,255,.3);
  backdrop-filter: blur(28px) saturate(.76);
  -webkit-backdrop-filter: blur(28px) saturate(.76);
  overscroll-behavior: contain;
  animation: ledger-dialog-in .22s ease both;
}

.sheet.ledger-entry-sheet.is-quick {
  display: grid;
  height: min(86dvh, 760px);
  grid-template-rows: auto minmax(0, 1fr) auto;
  overflow: hidden;
}

.ledger-entry-sheet.is-quick .sheet-head {
  margin-bottom: 8px;
}

.ledger-entry-head-actions,
.ledger-sheet .sheet-head > .ledger-entry-head-actions {
  display: flex;
  align-items: center;
  gap: 7px;
  margin-left: auto;
}

.ledger-edit-date {
  display: grid;
  gap: 1px;
  min-width: 126px;
  padding: 3px 8px 4px;
  overflow: hidden;
  border: 1px solid var(--glass-border-soft);
  border-radius: 11px;
  background: var(--glass-surface-control);
  box-shadow: inset 0 1px var(--glass-highlight);
  color: var(--glass-ink-muted);
  backdrop-filter: blur(var(--glass-blur-control)) saturate(.72);
  -webkit-backdrop-filter: blur(var(--glass-blur-control)) saturate(.72);
}

.ledger-edit-date span {
  font-size: 8px;
  line-height: 1;
}

.ledger-edit-date input {
  width: 108px;
  min-width: 0;
  height: 20px;
  padding: 0;
  border: 0;
  border-radius: 6px;
  outline: none;
  background: transparent;
  color: var(--glass-ink-strong);
  font: inherit;
  font-size: 10px;
}

.ledger-edit-date:focus-within {
  border-color: rgba(74, 100, 96, .4);
  box-shadow: 0 0 0 2px rgba(122, 147, 135, .1), inset 0 1px var(--glass-highlight);
}

.ledger-entry-scroll {
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  scroll-padding-bottom: 16px;
  scrollbar-width: none;
}

.ledger-entry-scroll::-webkit-scrollbar {
  display: none;
}

.ledger-quick-fields {
  display: grid;
  gap: 11px;
}

.ledger-supplement {
  margin-top: 18px;
  padding-top: 15px;
  border-top: 1px dashed rgba(122, 147, 135, .22);
}

.ledger-supplement h4 {
  margin: 0 0 11px;
  color: var(--glass-ink-muted);
  font-family: var(--font-serif);
  font-size: 13px;
  font-weight: 500;
}

.ledger-supplement-body {
  display: grid;
  gap: 12px;
}

.ledger-supplement-body > label:not(.ledger-select-row) {
  display: grid;
  gap: 5px;
  color: var(--glass-ink-muted);
  font-size: 10px;
}

.ledger-supplement-body select,
.ledger-supplement-body textarea {
  display: block;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  padding: 8px 10px;
  border: 1px solid rgba(122, 147, 135, .24);
  border-radius: 10px;
  background: rgba(243, 241, 230, .4);
  background-clip: padding-box;
  color: var(--glass-ink-strong);
  font: inherit;
  font-size: 12px;
}

.ledger-supplement-body select {
  height: 39px;
  min-height: 39px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  background-clip: padding-box;
}

.ledger-supplement-body textarea {
  min-height: 72px;
  overflow: auto;
  line-height: 1.65;
  overflow-wrap: anywhere;
  word-break: break-word;
  resize: none;
}

.ledger-entry-sheet.is-quick .ledger-supplement-body select:focus,
.ledger-entry-sheet.is-quick .ledger-supplement-body select:focus-visible,
.ledger-entry-sheet.is-quick .ledger-supplement-body select:invalid,
.ledger-entry-sheet.is-quick .ledger-supplement-body textarea:focus,
.ledger-entry-sheet.is-quick .ledger-supplement-body textarea:focus-visible,
.ledger-entry-sheet.is-quick .ledger-supplement-body textarea:invalid {
  border-color: rgba(74, 100, 96, .42);
  outline: none;
  box-shadow: 0 0 0 3px rgba(122, 147, 135, .11);
}

.ledger-location-field {
  overflow: hidden;
  border-radius: 10px;
}

.ledger-location-field select {
  border-radius: inherit;
}

.ledger-entry-sheet.is-quick .ledger-receipt-upload {
  gap: 7px;
}

.ledger-entry-sheet.is-quick .ledger-receipt-state:empty {
  display: none;
}

.ledger-entry-sheet.is-quick .ledger-receipt-status {
  display: flex;
  min-height: 38px;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 6px 7px 6px 10px;
  border: 1px solid rgba(122, 147, 135, .16);
  border-radius: 11px;
  background: rgba(221, 230, 214, .18);
  color: var(--glass-ink-muted);
}

.ledger-entry-sheet.is-quick .ledger-receipt-status > span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 10px;
}

.ledger-entry-sheet.is-quick .ledger-receipt-status > span .icon {
  width: 13px;
  height: 13px;
  color: var(--ledger-jade);
}

.ledger-entry-sheet.is-quick .ledger-receipt-status > div {
  display: flex;
  gap: 4px;
}

.ledger-entry-sheet.is-quick .ledger-receipt-status button,
.ledger-receipt-link {
  padding: 4px 7px;
  border: 1px solid rgba(122, 147, 135, .14);
  border-radius: 999px;
  background: rgba(243, 241, 230, .18);
  color: var(--glass-ink-faint);
  font-size: 9px;
}

.ledger-entry-sheet.is-quick .ledger-receipt-status [data-receipt-view],
.ledger-receipt-link {
  color: var(--glass-ink-muted);
}

.ledger-entry-sheet.is-quick .ledger-receipt-pick {
  display: inline-flex;
  min-height: 39px;
  align-items: center;
  justify-content: center;
  gap: 6px;
  border: 1px solid var(--glass-border-soft);
  border-radius: 11px;
  background:
    linear-gradient(145deg, rgba(243, 241, 230, .34), rgba(203, 216, 216, .24));
  box-shadow: inset 0 1px var(--glass-highlight);
  color: var(--glass-ink-muted);
  font-size: 11px;
  cursor: pointer;
  backdrop-filter: blur(var(--glass-blur-control)) saturate(.72);
  -webkit-backdrop-filter: blur(var(--glass-blur-control)) saturate(.72);
}

.ledger-entry-sheet.is-quick .ledger-receipt-pick:focus-visible {
  outline: 2px solid rgba(74, 100, 96, .38);
  outline-offset: 2px;
}

.ledger-entry-sheet.is-quick .ledger-receipt-upload.is-processing .ledger-receipt-pick {
  opacity: .62;
  pointer-events: none;
}

.ledger-entry-sheet.is-quick .ledger-receipt-preview {
  padding: 6px;
  overflow: hidden;
  border: 1px solid rgba(122, 147, 135, .16);
  border-radius: 11px;
  background: rgba(221, 230, 214, .18);
}

.ledger-entry-sheet.is-quick .ledger-receipt-preview button {
  padding: 4px 7px;
  border: 1px solid rgba(122, 147, 135, .14);
  border-radius: 999px;
  background: rgba(243, 241, 230, .18);
  color: var(--glass-ink-faint);
}

.ledger-entry-sheet.is-quick .ledger-receipt-preview button:focus-visible {
  outline: 2px solid rgba(74, 100, 96, .3);
  outline-offset: 1px;
}

.ledger-entry-sheet.is-quick .ledger-receipt-status button:focus-visible,
.ledger-receipt-link:focus-visible {
  outline: 2px solid rgba(74, 100, 96, .3);
  outline-offset: 1px;
}

.ledger-receipt-link {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin: 0 auto 10px;
  background: rgba(221, 230, 214, .2);
}

.ledger-receipt-link .icon {
  width: 13px;
  height: 13px;
}

.ledger-detail-memory {
  display: block;
  width: min(100%, 300px);
  max-height: 190px;
  margin: 0 auto 13px;
  border-radius: 12px;
  object-fit: cover;
}

.ledger-receipt-viewer {
  position: fixed;
  inset: 0 auto auto 50%;
  z-index: 90;
  display: grid;
  width: min(100vw, var(--shell-max));
  height: 100vh;
  height: 100dvh;
  padding: max(54px, env(safe-area-inset-top)) 18px max(24px, env(safe-area-inset-bottom));
  place-items: center;
  background: rgba(30, 42, 40, .68);
  backdrop-filter: blur(16px) saturate(.72);
  -webkit-backdrop-filter: blur(16px) saturate(.72);
  transform: translateX(-50%);
}

.ledger-receipt-viewer > button {
  position: absolute;
  top: max(14px, env(safe-area-inset-top));
  right: 16px;
  display: grid;
  width: 36px;
  height: 36px;
  place-items: center;
  border: 1px solid rgba(235, 241, 234, .24);
  border-radius: 50%;
  background: rgba(221, 230, 214, .2);
  color: #f4f5ef;
}

.ledger-receipt-viewer > button .icon {
  width: 17px;
  height: 17px;
}

.ledger-receipt-viewer > img {
  display: block;
  max-width: 100%;
  max-height: calc(100dvh - 110px);
  border-radius: 14px;
  box-shadow: 0 18px 46px rgba(18, 28, 26, .24);
  object-fit: contain;
}

.ledger-payer-field .ledger-field-label {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

.ledger-payer-field .ledger-field-label .icon {
  width: 14px;
  height: 14px;
  color: var(--glass-ink-muted);
}

.ledger-payer-options {
  display: flex;
  gap: 7px;
  padding: 1px 1px 4px;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  scrollbar-width: none;
  scroll-snap-type: x proximity;
}

.ledger-payer-options::-webkit-scrollbar {
  display: none;
}

.ledger-payer-field > select[hidden] {
  display: none;
}

.ledger-payer-options button {
  flex: 0 0 auto;
  min-height: 36px;
  padding: 6px 13px;
  border: 1px solid var(--glass-border-soft);
  border-radius: 999px;
  background: var(--glass-surface-control);
  box-shadow: inset 0 1px var(--glass-highlight);
  color: var(--glass-ink-muted);
  font-size: 11px;
  scroll-snap-align: start;
  backdrop-filter: blur(var(--glass-blur-control)) saturate(.72);
  -webkit-backdrop-filter: blur(var(--glass-blur-control)) saturate(.72);
}

.ledger-payer-options button.on {
  border-color: rgba(74, 100, 96, .36);
  background: rgba(122, 147, 135, .82);
  box-shadow: 0 2px 7px rgba(43, 59, 55, .06), inset 0 1px rgba(255,255,255,.18);
  color: #f6f6ef;
}

.ledger-payer-options button:focus-visible {
  outline: 2px solid rgba(74, 100, 96, .38);
  outline-offset: 2px;
}

.ledger-entry-actions {
  position: relative;
  z-index: 2;
  display: grid;
  gap: 6px;
  padding-top: 10px;
  border-top: 1px solid rgba(122, 147, 135, .16);
}

.ledger-entry-actions .ledger-form-error:empty {
  display: none;
}

.ledger-sheet-grip {
  display: none;
}

.ledger-entry-sheet .ledger-category-picks button.on,
.ledger-entry-sheet .ledger-book-picks button.on {
  border-color: rgba(70, 101, 96, .56);
  background: rgba(74, 100, 96, .92);
  box-shadow: 0 4px 10px rgba(43, 59, 55, .12);
  color: #fbfaf5;
}

.ledger-entry-sheet .ledger-category-picks button,
.ledger-entry-sheet .ledger-book-picks button {
  border-color: rgba(122, 147, 135, .22);
  background: rgba(243, 241, 230, .36);
}

.ledger-entry-sheet #expense-amount {
  appearance: textfield;
  -moz-appearance: textfield;
}

.ledger-entry-sheet #expense-amount::-webkit-inner-spin-button,
.ledger-entry-sheet #expense-amount::-webkit-outer-spin-button {
  margin: 0;
  -webkit-appearance: none;
}

.ledger-entry-sheet .ledger-date-field,
.ledger-entry-sheet .ledger-select-row,
.ledger-entry-sheet .ledger-form-details,
.ledger-entry-sheet .ledger-details-body select,
.ledger-entry-sheet .ledger-details-body textarea,
.ledger-entry-sheet .ledger-supplement-body select,
.ledger-entry-sheet .ledger-supplement-body textarea {
  border-color: rgba(122, 147, 135, .24);
  background: rgba(243, 241, 230, .4);
}

.ledger-page .ledger-amount,
.ledger-page .ledger-details-body,
.ledger-page .ledger-expense-detail dl div {
  border-color: rgba(122, 147, 135, .22);
}

@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .ledger-page .ledger-budget-card,
  .ledger-today-section,
  .ledger-page .ledger-home-section,
  .ledger-page .ledger-flow {
    background: rgba(243, 241, 230, .92);
  }

  .ledger-book-card,
  .ledger-book-card.is-shared {
    background:
      repeating-linear-gradient(0deg, transparent 0 22px, rgba(74, 100, 96, .045) 23px),
      rgba(243, 241, 230, .94);
  }

  .ledger-book-card.is-personal {
    background:
      repeating-linear-gradient(0deg, transparent 0 22px, rgba(74, 100, 96, .04) 23px),
      rgba(231, 237, 230, .94);
  }

  .ledger-page .ledger-memory-entry,
  .ledger-date-capsule {
    background: rgba(243, 241, 230, .86);
  }

  .ledger-add-tool {
    background: rgba(221, 230, 214, .94);
  }

  .ledger-sheet,
  .sheet.ledger-sheet {
    background: rgba(239, 240, 230, .96);
  }
}

@keyframes ledger-dialog-in {
  from { opacity: .72; transform: translateY(8px) scale(.975); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes ledger-fade {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes ledger-sheet-up {
  from { opacity: .7; transform: translateY(22px); }
  to { opacity: 1; transform: translateY(0); }
}

@media (max-width: 370px) {
  .ledger-edit-date {
    min-width: 112px;
    padding-right: 6px;
    padding-left: 6px;
  }

  .ledger-edit-date input {
    width: 98px;
    font-size: 9px;
  }

  .ledger-category-picks {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .ledger-book-stage {
    height: 158px;
  }

  .ledger-book-card,
  .ledger-book-card.is-shared,
  .ledger-book-card.is-personal {
    height: 130px;
    padding-right: 12px;
    padding-left: 21px;
  }

  .ledger-book-card.is-shared .ledger-book-copy {
    width: 62%;
  }

  .ledger-book-card.is-personal .ledger-book-copy {
    width: 58%;
  }

  .ledger-book-memory {
    width: 49px;
    height: 55px;
  }

  .ledger-budget-card.is-unset {
    align-items: flex-start;
    flex-direction: column;
  }
}

/* Exploration v0.1 — rain-mist travel archive pilot */
.exploration-page {
  --explore-ink: #293c37;
  --explore-muted: #5c6d67;
  --explore-line: rgba(222, 231, 221, .34);
  position: relative;
  min-height: calc(100vh - var(--nav-height));
  margin: -20px -20px -40px;
  padding: 34px 20px 116px;
  overflow: hidden;
  color: var(--explore-ink);
  background:
    radial-gradient(circle at 78% 8%, rgba(221, 230, 214, .42), transparent 34%),
    linear-gradient(165deg, #a8b5aa 0%, #81958b 38%, #667c73 100%);
}
.exploration-page::before { content: ''; position: absolute; inset: 0; pointer-events: none; opacity: .48; background: repeating-linear-gradient(102deg, rgba(255,255,255,.025) 0 1px, transparent 1px 5px), radial-gradient(ellipse at 18% 62%, rgba(242,239,224,.28), transparent 42%); }
.exploration-page > * { position: relative; z-index: 1; }
.explore-hero { padding: 4px 6px 24px; }
.explore-day { color: rgba(41,60,55,.74); font-size: 12px; letter-spacing: .08em; text-decoration: none; }
.explore-hero h1 { margin: 12px 0 7px; color: #233832; font: 500 34px/1.18 var(--font-serif); letter-spacing: .08em; }
.explore-hero p { max-width: 390px; margin: 0; color: rgba(41,60,55,.72); font-size: 13px; line-height: 1.75; }
.journey-state, .explore-place-card, .place-live-card { border: 1px solid var(--explore-line); background: linear-gradient(145deg, rgba(243,241,230,.58), rgba(221,230,214,.34)); box-shadow: inset 0 1px rgba(255,255,255,.26), 0 10px 28px rgba(31,52,46,.09); -webkit-backdrop-filter: blur(20px) saturate(.82); backdrop-filter: blur(20px) saturate(.82); }
.journey-state { display: grid; grid-template-columns: 42px minmax(0,1fr) auto; align-items: center; gap: 12px; padding: 17px; border-radius: 25px 11px 25px 18px; }
.journey-state-icon { display: grid; width: 42px; height: 42px; place-items: center; border-radius: 50%; color: #496a60; background: rgba(238,241,228,.42); border: 1px solid rgba(255,255,255,.27); }
.journey-state-icon .icon { width: 20px; height: 20px; }
.journey-state span, .explore-section-head span, .walked-trace > span, .place-live-card span { color: rgba(52,74,67,.65); font-size: 10px; letter-spacing: .12em; }
.journey-state h2, .explore-section-head h2, .place-live-card h2 { margin: 3px 0 2px; font: 500 18px/1.35 var(--font-serif); }
.journey-state p, .place-live-card p { margin: 0; color: var(--explore-muted); font-size: 11px; line-height: 1.6; }
.journey-state button, .explore-place-actions button, .place-live-card button { min-height: 36px; padding: 8px 13px; border: 1px solid rgba(74,100,96,.25); border-radius: 999px; color: #35574d; background: rgba(231,237,224,.48); font: 500 11px/1 var(--font-sans); box-shadow: inset 0 1px rgba(255,255,255,.25); }
.explore-places { margin-top: 27px; }
.explore-section-head { display: flex; align-items: end; justify-content: space-between; padding: 0 6px 11px; }
.explore-section-head h2 { margin-top: 5px; font-size: 20px; }
.explore-section-head > p { margin: 0 0 2px; color: rgba(51,71,65,.58); font-size: 10px; }
.explore-place-list { display: grid; gap: 9px; }
.explore-place-card { display: grid; grid-template-columns: 31px minmax(0,1fr) auto; gap: 10px; align-items: center; min-height: 91px; padding: 13px 13px 13px 11px; border-radius: 10px 24px 14px 22px; }
.explore-place-card.is-active { background: linear-gradient(145deg, rgba(229,238,224,.72), rgba(185,207,194,.48)); border-color: rgba(226,240,230,.55); }
.explore-place-card.is-visited { opacity: .78; }
.explore-place-index { align-self: stretch; padding-top: 3px; border-right: 1px solid rgba(74,100,96,.16); color: rgba(47,68,62,.47); font: 500 11px/1.2 var(--font-serif); }
.explore-place-copy { min-width: 0; }
.explore-place-copy a { color: inherit; text-decoration: none; }
.explore-place-copy h3 { margin: 0; font: 600 17px/1.35 var(--font-serif); }
.explore-place-copy p { margin: 4px 0 7px; overflow: hidden; color: var(--explore-muted); font-size: 10px; line-height: 1.45; text-overflow: ellipsis; white-space: nowrap; }
.explore-place-status { display: inline-flex; align-items: center; color: rgba(47,70,63,.66); font-size: 9px; }
.explore-place-status::before { content: ''; width: 5px; height: 5px; margin-right: 5px; border: 1px solid currentColor; border-radius: 50%; }
.is-active .explore-place-status::before { background: #5e8175; }
.is-visited .explore-place-status::before { border: 0; background: #82958d; }
.explore-place-actions { display: flex; align-items: center; gap: 5px; }
.explore-open { display: grid; width: 34px; height: 34px; place-items: center; border: 1px solid rgba(74,100,96,.18); border-radius: 50%; color: #4f6c63; background: rgba(243,241,230,.25); }
.explore-open .icon { width: 15px; height: 15px; }
.explore-travel-day { display: flex; align-items: center; gap: 12px; padding: 22px; border: 1px solid var(--explore-line); border-radius: 22px; background: rgba(243,241,230,.32); }
.explore-travel-day p { margin: 0; color: var(--explore-muted); font-size: 12px; line-height: 1.7; }
.walked-trace { margin: 22px 6px 0; padding-top: 15px; border-top: 1px solid rgba(230,237,227,.24); }
.walked-trace div { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; margin-top: 9px; }
.walked-trace b { font: 500 12px/1.4 var(--font-serif); }
.walked-trace i { width: 14px; border-top: 1px solid rgba(47,68,62,.3); }
.explore-dialog-layer { position: fixed; z-index: 80; inset: 0; display: grid; place-items: center; padding: 22px; background: rgba(26,40,36,.3); -webkit-backdrop-filter: blur(7px); backdrop-filter: blur(7px); }
.explore-dialog { position: relative; width: min(100%, 390px); max-height: min(72vh, 560px); padding: 25px 22px 20px; overflow: auto; border: 1px solid rgba(239,244,236,.35); border-radius: 28px 13px 26px 20px; color: var(--explore-ink); background: linear-gradient(145deg, rgba(236,239,226,.82), rgba(202,216,205,.72)); box-shadow: inset 0 1px rgba(255,255,255,.35), 0 20px 45px rgba(28,45,39,.18); -webkit-backdrop-filter: blur(26px); backdrop-filter: blur(26px); }
.explore-dialog-mark { display: grid; width: 39px; height: 39px; place-items: center; margin-bottom: 15px; border-radius: 50%; color: #496a60; background: rgba(255,255,255,.2); }
.explore-dialog-mark .icon { width: 18px; height: 18px; }
.explore-dialog h2 { margin: 0 28px 7px 0; font: 600 21px/1.35 var(--font-serif); }
.explore-dialog p { margin: 0 0 20px; color: var(--explore-muted); font-size: 12px; line-height: 1.7; }
.explore-dialog-actions { display: grid; gap: 8px; }
.explore-dialog-actions button { min-height: 43px; padding: 9px 15px; border-radius: 999px; font: 500 11px/1.35 var(--font-sans); }
.explore-primary { border: 1px solid rgba(224,236,226,.4); color: #f4f2e8; background: rgba(64,91,82,.78); }
.explore-quiet { border: 0; color: #516760; background: transparent; }
.explore-dialog-close { position: absolute; top: 16px; right: 16px; display: grid; width: 32px; height: 32px; place-items: center; border: 0; border-radius: 50%; color: #536b63; background: rgba(255,255,255,.16); }
.explore-dialog-close .icon { width: 15px; height: 15px; }
.explore-choice-list { display: grid; gap: 7px; }
.explore-choice-list button { display: flex; justify-content: space-between; min-height: 45px; align-items: center; padding: 10px 13px; border: 1px solid rgba(74,100,96,.15); border-radius: 15px; color: var(--explore-ink); background: rgba(245,243,232,.26); font: 500 12px var(--font-serif); }
.explore-choice-list .icon { width: 14px; height: 14px; }
.exploration-location { padding-top: 30px; }
.place-archive-head { padding: 0 7px 27px; }
.place-archive-head > a { display: inline-flex; align-items: center; gap: 6px; color: rgba(39,59,53,.75); font-size: 11px; text-decoration: none; }
.place-archive-head > a .icon { width: 14px; height: 14px; }
.place-archive-head > span { display: block; margin-top: 32px; color: rgba(45,66,60,.58); font-size: 10px; letter-spacing: .14em; }
.place-archive-head h1 { margin: 7px 0 4px; font: 500 39px/1.2 var(--font-serif); letter-spacing: .12em; }
.place-archive-head p { margin: 0; color: var(--explore-muted); font-size: 12px; }
.place-live-card { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 18px; border-radius: 24px 11px 25px 17px; }
.place-live-card h2 { font-size: 20px; }
.place-live-card p { max-width: 280px; }
.place-live-card button { flex: 0 0 auto; }
.place-paper-skeleton { min-height: 290px; margin-top: 18px; padding: 25px 24px; border: 1px solid rgba(238,241,229,.38); border-radius: 8px 28px 15px 24px; background: linear-gradient(120deg, rgba(244,241,227,.63), rgba(223,230,216,.39)); box-shadow: inset 0 1px rgba(255,255,255,.3), 0 12px 30px rgba(31,50,44,.08); -webkit-backdrop-filter: blur(18px); backdrop-filter: blur(18px); }
.place-paper-seal { display: inline-block; padding: 5px 9px; border: 1px solid rgba(124,86,75,.35); color: #79594f; font: 500 9px var(--font-serif); letter-spacing: .1em; transform: rotate(-1deg); }
.place-paper-skeleton h2 { margin: 42px 0 13px; font: 600 22px/1.45 var(--font-serif); }
.place-paper-skeleton p { max-width: 380px; margin: 0; color: var(--explore-muted); font: 13px/1.9 var(--font-serif); }
.place-paper-lines { display: grid; gap: 13px; margin-top: 34px; opacity: .33; }
.place-paper-lines i { border-top: 1px solid #61766e; }
.app-shell:has(.exploration-page) .bottom-nav { border-color: rgba(229,236,226,.28); background: rgba(231,235,222,.72); box-shadow: 0 -8px 28px rgba(34,52,46,.11), inset 0 1px rgba(255,255,255,.27); -webkit-backdrop-filter: blur(20px) saturate(.85); backdrop-filter: blur(20px) saturate(.85); }
.app-shell:has(.exploration-page) .bottom-nav a.is-active { color: #35584d; background: rgba(198,214,201,.58); }
.exploration-page :is(a, button) { -webkit-tap-highlight-color: transparent; touch-action: manipulation; }
@media (max-width: 370px) { .exploration-page { margin-inline: -16px; padding-inline: 15px; } .journey-state { grid-template-columns: 38px minmax(0,1fr); } .journey-state > button { grid-column: 2; justify-self: start; } .explore-place-card { grid-template-columns: 26px minmax(0,1fr); } .explore-place-actions { grid-column: 2; justify-self: start; } .place-live-card { align-items: flex-start; flex-direction: column; } }
@media (prefers-reduced-motion: no-preference) { .explore-place-card, .journey-state, .explore-dialog { animation: explore-rise .32s ease both; } @keyframes explore-rise { from { opacity: 0; transform: translateY(6px); } } }
@supports not ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) { .journey-state, .explore-place-card, .place-live-card, .place-paper-skeleton { background: rgba(230,235,222,.9); } }

@media (min-width: 720px) {
  .ledger-page {
    margin-right: -26px;
    margin-left: -26px;
    padding-right: 26px;
    padding-left: 26px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ledger-book-card,
  .ledger-add-tool,
  .ledger-overlay,
  .ledger-sheet,
  .ledger-background::before {
    animation: none;
    transition: none;
  }
}

/* 共同账本离线数据包：沿用账本玻璃纸张体系，不改变页面主体层级。 */
.ledger-title-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.ledger-shared-data-entry {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 34px;
  padding: 7px 11px;
  border: 1px solid var(--glass-border-soft);
  border-radius: 999px;
  background: rgba(221, 230, 214, .56);
  box-shadow: inset 0 1px rgba(255, 255, 255, .35), 0 4px 12px rgba(36, 51, 48, .045);
  color: var(--glass-ink-muted);
  font: inherit;
  font-size: 11px;
  backdrop-filter: blur(16px) saturate(.72);
  -webkit-backdrop-filter: blur(16px) saturate(.72);
}

.ledger-shared-data-entry .icon {
  width: 14px;
  height: 14px;
}

.ledger-shared-data-sheet {
  overflow: hidden;
}

.ledger-shared-data-body {
  display: grid;
  gap: 13px;
}

.ledger-shared-data-intro,
.ledger-shared-data-block p {
  margin: 0;
  color: var(--glass-ink-muted);
  font-size: 11px;
  line-height: 1.65;
}

.ledger-shared-code {
  display: grid;
  gap: 7px;
}

.ledger-shared-code > span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--glass-ink);
  font-size: 12px;
}

.ledger-shared-code .icon {
  width: 15px;
  height: 15px;
}

.ledger-shared-code input {
  width: 100%;
  min-height: 43px;
  padding: 0 13px;
  border: 1px solid var(--glass-border-soft);
  border-radius: 13px;
  background: rgba(243, 241, 230, .34);
  box-shadow: inset 0 1px var(--glass-highlight);
  color: var(--glass-ink);
}

.ledger-shared-data-block {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px 12px;
  padding: 13px;
  border: 1px solid var(--glass-border-soft);
  border-radius: 16px;
  background: rgba(221, 230, 214, .3);
  box-shadow: inset 0 1px rgba(255, 255, 255, .24);
}

.ledger-shared-data-block small {
  color: var(--glass-ink-faint);
  font-size: 9px;
}

.ledger-shared-data-block h4 {
  margin: 2px 0 3px;
  color: var(--glass-ink);
  font-family: var(--font-serif);
  font-size: 15px;
}

.ledger-shared-data-block .glass-button {
  min-height: 38px;
  padding: 8px 12px;
  white-space: nowrap;
}

.ledger-shared-data-block .glass-button .icon {
  width: 14px;
  height: 14px;
  margin-right: 4px;
}

.ledger-shared-file {
  grid-column: 1 / -1;
  display: block;
  min-width: 0;
  padding: 10px 12px;
  overflow: hidden;
  border: 1px dashed rgba(74, 100, 96, .25);
  border-radius: 12px;
  background: rgba(243, 241, 230, .24);
  color: var(--glass-ink-muted);
  font-size: 11px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ledger-shared-mode-note {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 11px 12px;
  border: 1px solid var(--glass-border-soft);
  border-radius: 13px;
  background: rgba(122, 147, 135, .13);
  color: var(--glass-ink-muted);
  font-size: 11px;
  line-height: 1.55;
}

.ledger-shared-mode-note .icon {
  flex: 0 0 auto;
  width: 14px;
  height: 14px;
  margin-top: 1px;
}

.ledger-shared-data-result {
  min-height: 18px;
  margin: 0;
}

.ledger-shared-data-result.is-success {
  color: #456b5d;
}

@media (max-width: 370px) {
  .ledger-shared-data-block {
    grid-template-columns: 1fr;
  }

  .ledger-shared-data-block .glass-button {
    width: 100%;
  }
}

/* 设置中心：低频管理入口，沿用旅行档案的纸张玻璃材质。 */
.settings-page {
  min-height: calc(100vh - 108px);
  padding: 26px 0 34px;
  color: var(--glass-ink, var(--ink));
}

.settings-head {
  padding: 0 2px 22px;
  border-bottom: 1px solid rgba(74, 100, 96, .16);
}

.settings-back {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-bottom: 24px;
  color: var(--glass-ink-muted, var(--ink-muted));
  font-size: 12px;
}

.settings-back .icon {
  width: 15px;
  height: 15px;
}

.settings-kicker,
.settings-section-label {
  color: var(--glass-ink-faint, var(--ink-faint));
  font-size: 10px;
  letter-spacing: .12em;
}

.settings-head h1 {
  margin: 7px 0 6px;
  font-family: var(--font-serif);
  font-size: 27px;
}

.settings-head p {
  margin: 0;
  color: var(--glass-ink-muted, var(--ink-muted));
  font-size: 12px;
  line-height: 1.65;
}

.settings-section {
  padding-top: 24px;
}

.settings-section-label {
  margin: 0 3px 9px;
}

.settings-row {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr) 18px;
  align-items: center;
  gap: 11px;
  padding: 15px;
  border-radius: 18px;
  color: var(--glass-ink, var(--ink));
}

.settings-row-icon {
  display: grid;
  width: 42px;
  height: 42px;
  place-items: center;
  border: 1px solid var(--glass-border-soft, rgba(74, 100, 96, .18));
  border-radius: 14px;
  background: rgba(122, 147, 135, .13);
  color: #4a6460;
}

.settings-row-icon .icon {
  width: 19px;
  height: 19px;
}

.settings-row-copy {
  display: grid;
  gap: 4px;
}

.settings-row-copy b {
  font-family: var(--font-serif);
  font-size: 16px;
}

.settings-row-copy small {
  color: var(--glass-ink-muted, var(--ink-muted));
  font-size: 11px;
  line-height: 1.45;
}

.settings-row > .icon {
  width: 17px;
  height: 17px;
  color: var(--glass-ink-faint, var(--ink-faint));
}

.settings-data-page {
  position: relative;
}

.settings-mode-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin: 18px 0 10px;
  padding: 7px 10px;
  border: 1px solid var(--glass-border-soft, rgba(74, 100, 96, .18));
  border-radius: 999px;
  background: rgba(221, 230, 214, .42);
  color: var(--glass-ink-muted, var(--ink-muted));
  font-size: 10px;
}

.settings-mode-chip .icon {
  width: 13px;
  height: 13px;
}

.settings-data-card {
  display: grid;
  gap: 14px;
  padding: 17px;
  border-radius: 20px;
}

.settings-data-card .ledger-shared-data-block {
  background: rgba(221, 230, 214, .24);
}

@media (max-width: 370px) {
  .settings-data-card {
    padding: 14px;
  }
}

/* AI 预设：纸张档案标签与轻量玻璃表单。 */
.settings-ai-page {
  --ai-danger: #96685f;
}

.ai-active-preset {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 4px 12px;
  margin: 18px 2px 13px;
  padding: 0 2px 12px;
  border-bottom: 1px dashed rgba(74, 100, 96, .18);
}

.ai-active-preset small {
  grid-column: 1 / -1;
  color: var(--glass-ink-faint);
  font-size: 9px;
  letter-spacing: .1em;
}

.ai-active-preset b {
  min-width: 0;
  overflow: hidden;
  color: var(--glass-ink-strong);
  font-family: var(--font-serif);
  font-size: 16px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ai-active-preset span {
  align-self: end;
  max-width: 170px;
  overflow: hidden;
  color: var(--glass-ink-muted);
  font-size: 10px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ai-preset-tabs {
  display: flex;
  gap: 8px;
  margin: 0 -18px 14px;
  padding: 1px 18px 5px;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  scrollbar-width: none;
}

.ai-preset-tabs::-webkit-scrollbar {
  display: none;
}

.ai-preset-ticket {
  display: grid;
  flex: 0 0 auto;
  width: clamp(164px, 48vw, 204px);
  min-height: 68px;
  padding: 0;
  overflow: hidden;
  border-radius: 10px 14px 10px 12px;
}

.ai-preset-ticket.is-selected {
  outline: 2px solid rgba(74, 100, 96, .2);
  outline-offset: 1px;
}

.ai-preset-tab-main {
  display: flex;
  min-width: 0;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  padding: 9px 11px 6px;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  font-size: 11px;
  text-align: left;
}

.ai-preset-tab-main span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ai-preset-tab-main small {
  flex: 0 0 auto;
  font-size: 8px;
  opacity: .82;
}

.ai-preset-tab-actions {
  display: flex;
  align-items: center;
  gap: 2px;
  padding: 3px 6px 6px;
  border-top: 1px dashed rgba(74, 100, 96, .12);
}

.ai-preset-tab-actions button {
  min-height: 24px;
  padding: 3px 6px;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: var(--glass-ink-faint);
  font: inherit;
  font-size: 9px;
}

.ai-preset-tab-actions button:active {
  background: rgba(122, 147, 135, .13);
  color: var(--glass-ink);
}

.ai-preset-tab-actions button:last-child {
  color: var(--ai-danger);
}

.ai-new-preset-button {
  display: inline-flex;
  flex: 0 0 auto;
  width: max-content;
  max-width: min(100%, 168px);
  min-height: 40px;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 9px 14px;
  border-color: rgba(74, 100, 96, .2);
  border-style: dashed;
  border-radius: 999px;
  background: linear-gradient(135deg, rgba(221, 230, 214, .34), rgba(203, 216, 216, .25));
  box-shadow: 0 4px 11px rgba(43, 59, 55, .045), inset 0 1px rgba(255, 255, 255, .28);
  color: var(--glass-ink-muted);
  font: inherit;
  font-size: 10px;
  white-space: nowrap;
}

.ai-new-preset-button .icon {
  width: 13px;
  height: 13px;
}

.ai-preset-form,
.ai-settings-empty {
  padding: 18px;
  border-radius: 20px 17px 21px 18px;
}

.ai-preset-form {
  display: grid;
  gap: 14px;
}

.ai-preset-form-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding-bottom: 12px;
  border-bottom: 1px dashed rgba(74, 100, 96, .18);
}

.ai-preset-form-head small {
  color: var(--glass-ink-faint);
  font-size: 9px;
  letter-spacing: .09em;
}

.ai-preset-form-head h2 {
  max-width: 240px;
  margin: 3px 0 0;
  overflow: hidden;
  font-family: var(--font-serif);
  font-size: 18px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ai-current-mark {
  flex: 0 0 auto;
  padding: 5px 8px;
  border: 1px solid rgba(74, 100, 96, .18);
  border-radius: 999px;
  background: rgba(122, 147, 135, .17);
  color: var(--glass-ink-muted);
  font-size: 9px;
}

.ai-setting-field {
  display: grid;
  gap: 7px;
  min-width: 0;
}

.ai-setting-field > span {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  color: var(--glass-ink);
  font-size: 11px;
}

.ai-setting-field > span small {
  color: var(--glass-ink-faint);
  font-size: 9px;
  font-weight: 400;
}

.ai-setting-field input {
  width: 100%;
  min-width: 0;
  min-height: 43px;
  padding: 0 12px;
  border: 1px solid var(--glass-border-soft);
  border-radius: 12px;
  outline: none;
  background: rgba(243, 241, 230, .3);
  box-shadow: inset 0 1px var(--glass-highlight);
  color: var(--glass-ink-strong);
  font: inherit;
  font-size: 12px;
  text-overflow: ellipsis;
}

.ai-setting-field input:focus {
  border-color: rgba(74, 100, 96, .34);
  box-shadow: 0 0 0 3px rgba(122, 147, 135, .1), inset 0 1px var(--glass-highlight);
}

.ai-setting-field input:invalid:not(:placeholder-shown) {
  border-color: rgba(150, 104, 95, .34);
}

.ai-model-field-row {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: stretch !important;
  gap: 8px !important;
}

.ai-model-field-row .ai-fetch-models {
  min-height: 43px;
  padding: 8px 11px;
  border-radius: 12px;
  color: var(--glass-ink-muted);
  font: inherit;
  font-size: 10px;
  white-space: nowrap;
}

.ai-model-field-row .ai-fetch-models:disabled {
  cursor: wait;
  opacity: .62;
}

.ai-session-note,
.ai-protocol-note {
  display: flex;
  align-items: flex-start;
  gap: 7px;
  color: var(--glass-ink-faint);
  font-size: 9px;
  line-height: 1.55;
}

.ai-session-note {
  margin-top: -7px;
}

.ai-session-note .icon {
  flex: 0 0 auto;
  width: 12px;
  height: 12px;
  margin-top: 1px;
}

.ai-protocol-note {
  justify-content: space-between;
  padding: 10px 11px;
  border: 1px solid rgba(74, 100, 96, .11);
  border-radius: 11px;
  background: rgba(221, 230, 214, .16);
}

.ai-protocol-note b {
  color: var(--glass-ink-muted);
  font-weight: 600;
}

.ai-settings-result {
  min-height: 18px;
  margin: 0;
  color: var(--ai-danger);
  font-size: 10px;
  line-height: 1.5;
}

.ai-settings-result.is-success {
  color: #456b5d;
}

.ai-preset-actions {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
  padding-top: 2px;
}

.ai-preset-actions .glass-button {
  min-height: 42px;
  padding: 9px 13px;
  border-radius: 12px;
  font: inherit;
  font-size: 11px;
}

.ai-preset-actions .glass-button .icon {
  width: 14px;
  height: 14px;
  margin-right: 5px;
  vertical-align: -2px;
}

.ai-delete-preset {
  grid-column: 1 / -1;
  justify-self: start;
  min-height: 34px !important;
  padding: 6px 8px !important;
  border-color: transparent !important;
  background: transparent !important;
  box-shadow: none !important;
  color: var(--ai-danger) !important;
}

.ai-settings-empty {
  display: grid;
  min-height: 230px;
  place-items: center;
  align-content: center;
  text-align: center;
}

.ai-settings-empty > .icon {
  width: 28px;
  height: 28px;
  color: var(--glass-ink-faint);
}

.ai-settings-empty h2 {
  margin: 12px 0 4px;
  font-family: var(--font-serif);
  font-size: 18px;
}

.ai-settings-empty p {
  max-width: 250px;
  margin: 0 0 16px;
  color: var(--glass-ink-muted);
  font-size: 11px;
  line-height: 1.65;
}

.ai-settings-empty .glass-button {
  min-height: 40px;
  padding: 8px 14px;
  border-radius: 12px;
}

.ai-settings-empty .ai-new-preset-button {
  width: min(100%, 168px);
  border-radius: 999px;
}

.settings-ai-page button,
.settings-ai-page input {
  -webkit-tap-highlight-color: transparent;
}

.settings-ai-page input {
  scroll-margin-block: 110px;
}

@media (max-width: 719px) {
  html.ai-settings-has-focus .bottom-nav {
    visibility: hidden;
    pointer-events: none;
    opacity: 0;
  }
}

@media (max-width: 370px) {
  .ai-preset-form,
  .ai-settings-empty {
    padding: 15px;
  }

  .ai-preset-actions {
    grid-template-columns: 1fr;
  }

  .ai-preset-actions .glass-button {
    width: 100%;
  }

  .ai-delete-preset {
    grid-column: auto;
    justify-self: stretch;
  }

  .ai-model-field-row {
    grid-template-columns: 1fr;
  }

  .ai-model-field-row .ai-fetch-models {
    min-height: 38px;
  }
}

/* AI 设置两级结构：紧凑的预设管理页与独立编辑页。 */
.settings-ai-manager-page,
.settings-ai-editor-page {
  padding-top: 18px;
}

.ai-manager-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: 8px 14px;
  padding: 0 2px 15px;
  border-bottom: 1px solid rgba(74, 100, 96, .14);
}

.ai-manager-head .settings-back {
  grid-column: 1 / -1;
  width: max-content;
  margin: 0 0 4px;
}

.ai-manager-title small,
.ai-editor-head > small {
  color: var(--glass-ink-faint);
  font-size: 9px;
  letter-spacing: .1em;
}

.ai-manager-title h1,
.ai-editor-head h1 {
  margin: 3px 0 0;
  color: var(--glass-ink-strong);
  font-family: var(--font-serif);
  font-size: 21px;
  line-height: 1.2;
}

.ai-manager-add {
  display: grid;
  width: 38px;
  height: 38px;
  place-items: center;
  padding: 0;
  border-radius: 999px;
  background: rgba(221, 230, 214, .36);
}

.ai-manager-add .icon {
  width: 17px;
  height: 17px;
}

.ai-manager-current {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: 12px;
  margin-top: 15px;
  padding: 13px 14px;
  border-radius: 15px 18px 14px 16px;
}

.ai-manager-current span {
  display: grid;
  min-width: 0;
  gap: 3px;
}

.ai-manager-current small,
.ai-manager-list-head small {
  color: var(--glass-ink-faint);
  font-size: 9px;
}

.ai-manager-current b {
  overflow: hidden;
  color: var(--glass-ink-strong);
  font-family: var(--font-serif);
  font-size: 15px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ai-manager-current em {
  max-width: 45vw;
  overflow: hidden;
  color: var(--glass-ink-muted);
  font-size: 10px;
  font-style: normal;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ai-manager-list-section {
  margin-top: 21px;
}

.ai-manager-list-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin: 0 3px 9px;
}

.ai-manager-list-head h2 {
  margin: 0;
  color: var(--glass-ink);
  font-family: var(--font-serif);
  font-size: 14px;
}

.ai-manager-list {
  display: grid;
  gap: 8px;
}

.ai-manager-item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: stretch;
  overflow: hidden;
  border-radius: 14px 17px 13px 15px;
}

.ai-manager-item.is-active {
  border-color: rgba(74, 100, 96, .24);
  background: linear-gradient(135deg, rgba(221, 230, 214, .4), rgba(203, 216, 216, .27));
}

.ai-manager-item > a {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  min-width: 0;
  min-height: 58px;
  padding: 10px 13px;
  color: var(--glass-ink);
}

.ai-manager-item > a > span {
  display: grid;
  min-width: 0;
  gap: 3px;
}

.ai-manager-item > a b,
.ai-manager-item > a small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ai-manager-item > a b {
  color: var(--glass-ink-strong);
  font-family: var(--font-serif);
  font-size: 14px;
}

.ai-manager-item > a small {
  color: var(--glass-ink-muted);
  font-size: 10px;
}

.ai-manager-item > a em {
  padding: 4px 7px;
  border: 1px solid rgba(74, 100, 96, .16);
  border-radius: 999px;
  background: rgba(122, 147, 135, .16);
  color: var(--glass-ink-muted);
  font-size: 8px;
  font-style: normal;
}

.ai-manager-item > a > .icon {
  width: 15px;
  height: 15px;
  color: var(--glass-ink-faint);
}

.ai-manager-use {
  align-self: center;
  min-width: 48px;
  min-height: 32px;
  margin-right: 10px;
  padding: 6px 10px;
  border-radius: 999px;
  font: inherit;
  font-size: 9px;
}

.ai-manager-empty {
  display: grid;
  min-height: 150px;
  place-items: center;
  align-content: center;
  gap: 12px;
  padding: 20px;
  border-radius: 17px;
  text-align: center;
}

.ai-manager-empty p {
  margin: 0;
  color: var(--glass-ink-muted);
  font-size: 11px;
}

.ai-manager-empty a {
  min-height: 38px;
  padding: 8px 14px;
  border-radius: 999px;
  font-size: 10px;
}

.ai-manager-result {
  min-height: 18px;
  margin: 12px 3px 0;
  color: var(--ai-danger, #96685f);
  font-size: 10px;
}

.ai-manager-result.is-success {
  color: #456b5d;
}

.ai-editor-head {
  padding: 0 2px 15px;
  border-bottom: 1px solid rgba(74, 100, 96, .14);
}

.ai-editor-head .settings-back {
  margin: 0 0 13px;
}

.ai-editor-form {
  display: grid;
  gap: 14px;
  margin-top: 14px;
  padding: 17px;
  border-radius: 18px 16px 20px 17px;
}

.ai-editor-test-row {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 9px;
  padding-top: 2px;
}

.ai-test-connection {
  min-width: 92px;
  min-height: 38px;
  padding: 8px 13px;
  border-radius: 999px;
  color: var(--glass-ink);
  font: inherit;
  font-size: 10px;
}

.ai-editor-test-row > small {
  color: var(--glass-ink-faint);
  font-size: 9px;
  line-height: 1.5;
}

.ai-editor-result {
  display: grid;
  min-height: 18px;
  gap: 3px;
  color: var(--ai-danger, #96685f);
  font-size: 10px;
  line-height: 1.5;
}

.ai-editor-result:empty {
  display: none;
}

.ai-editor-result.is-success {
  color: #456b5d;
}

.ai-editor-result b {
  font-weight: 500;
}

.ai-editor-result small {
  overflow-wrap: anywhere;
  color: var(--glass-ink-faint);
  font-size: 8px;
}

.ai-editor-save-row {
  display: flex;
  justify-content: flex-start;
  padding-top: 2px;
}

.ai-editor-save {
  width: auto;
  min-width: 124px;
  min-height: 42px;
  padding: 9px 17px;
  border-radius: 999px;
  font: inherit;
  font-size: 11px;
}

.ai-editor-save .icon {
  width: 14px;
  height: 14px;
  margin-right: 5px;
  vertical-align: -2px;
}

.ai-editor-secondary-actions {
  display: flex;
  align-items: center;
  gap: 7px 12px;
  padding-top: 4px;
  border-top: 1px dashed rgba(74, 100, 96, .13);
}

.ai-editor-secondary-actions .glass-button {
  min-height: 34px;
  padding: 6px 9px;
  border-radius: 999px;
  font: inherit;
  font-size: 9px;
}

.ai-editor-secondary-actions .ai-delete-preset {
  grid-column: auto;
  justify-self: auto;
  width: auto;
}

.settings-ai-manager-page :is(a, button),
.settings-ai-editor-page :is(a, button, input) {
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}

@media (max-width: 370px) {
  .ai-editor-form {
    padding: 14px;
  }

  .ai-editor-test-row {
    grid-template-columns: 1fr;
  }

  .ai-test-connection {
    width: max-content;
  }

  .ai-editor-secondary-actions {
    flex-wrap: wrap;
  }
}
