html {
  /* 375px = 16px 基准；320px 收紧至 14px；430px 以上不继续放大。 */
  font-size: clamp(14px, 4.2667vw, 16px);
}

:root {
  --primary: #98e52f;
  --primary-strong: #7dcc20;
  --primary-soft: #effbdc;
  --primary-tint: #f7fdec;
  --deep: #176b18;
  --surface: #ffffff;
  --surface-soft: #fbfdf8;
  --surface-muted: #f5f8f1;
  --ink: #171917;
  --muted: #666c63;
  --line: #e5eadf;
  --line-strong: #dce5d4;
  --danger: #c43c4c;
  --warning: #8a5a00;

  /* 375px design baseline. Visual tokens map 1px to 2rpx in uni-app. */
  --text-page-title: 1.375rem; /* 22px = 44rpx */
  --text-display: 1.625rem; /* 26px = 52rpx */
  --text-card-title: 1.125rem; /* 18px = 36rpx */
  --text-body: 0.9375rem; /* 15px = 30rpx */
  --text-meta: 0.75rem; /* 12px = 24rpx */
  --space-page-x: 1.25rem; /* 20px = 40rpx */
  --space-card-x: 1rem; /* 16px = 32rpx */
  --space-card-y: 0.875rem; /* 14px = 28rpx */
  --space-section: 1.75rem; /* 28px = 56rpx */
  --radius-card: 1.375rem; /* 22px = 44rpx */
  --radius-control: 1rem; /* 16px = 32rpx */
  --radius-pill: 999px;
  --shadow: 0 0.625rem 1.875rem rgb(28 43 20 / 7%);
  --shadow-card: 0 0.5rem 1.5rem rgb(45 71 30 / 7%);
  --shadow-float: 0 0.75rem 2rem rgb(58 91 35 / 10%);
  color: var(--ink);
  background: #eef1eb;
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif;
}

* { box-sizing: border-box; }
body {
  margin: 0;
  min-height: 100vh;
  color: var(--ink);
  background: radial-gradient(circle at 50% 0, #f8fbf4 0, #eef2eb 34rem);
  font-size: 1rem;
  line-height: 1.5;
  overscroll-behavior-y: contain;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
button, textarea, input, select { font: inherit; }
button { color: inherit; touch-action: manipulation; }
select { color: inherit; }
button.tap { min-height: 44px; }
.field { font-size: 16px; }

#app {
  width: min(100%, 430px);
  min-height: 100dvh;
  margin: 0 auto;
  background: var(--surface);
  box-shadow: 0 0 4.375rem rgb(22 35 16 / 9%);
}

.safe-top { padding-top: max(0.75rem, env(safe-area-inset-top)); }
.safe-bottom { padding-bottom: max(0.75rem, env(safe-area-inset-bottom)); }
.screen {
  min-height: 100dvh;
  padding-bottom: 6rem;
  background: linear-gradient(180deg, #fff 0, #fff 72%, #fcfdfb 100%);
}
.screen.subpage { padding-bottom: 8.75rem; }
.no-scrollbar::-webkit-scrollbar { display: none; }
.pill {
  border: 1px solid var(--line-strong) !important;
  background: rgb(255 255 255 / 96%);
  box-shadow: 0 0.25rem 0.875rem rgb(44 72 28 / 4%);
}
.card {
  border-color: var(--line-strong) !important;
  border-radius: var(--radius-card) !important;
  background: linear-gradient(155deg, #fff 0%, #fff 72%, #fbfdf8 100%) !important;
  box-shadow: var(--shadow-card) !important;
}

.tap {
  -webkit-tap-highlight-color: transparent;
  transition: opacity 160ms ease, border-color 180ms ease, background-color 180ms ease, box-shadow 180ms ease, transform 160ms ease;
}
.tap:focus-visible,
.field:focus-visible {
  outline: 3px solid rgb(152 229 47 / 36%);
  outline-offset: 2px;
}
.tap:active:not(:disabled) {
  opacity: 0.78;
  transform: scale(0.985);
}
button:disabled {
  cursor: not-allowed;
  opacity: 0.55;
}

.screen main > h2,
.screen main > h3,
.detail-section h3 {
  letter-spacing: -0.015em;
}
.screen main > h3 {
  font-size: var(--text-card-title);
  line-height: 1.35;
}

.app-header {
  isolation: isolate;
  height: 4.875rem !important;
  background: linear-gradient(180deg, rgb(255 255 255 / 99%) 0%, #fff 70%, #fbfdf8 100%);
  box-shadow: 0 0.75rem 1.5rem -1.35rem rgb(52 88 28 / 28%);
}
.app-header h1 {
  font-size: var(--text-page-title) !important;
  font-weight: 850;
  letter-spacing: -0.025em;
}
.app-header > button,
.app-header > div > button {
  min-width: 44px;
}
.home-header + .date-filter-bar { margin-top: 0.875rem !important; }

.date-filter-bar {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr)) 3.25rem;
  min-height: 3.375rem;
  overflow: hidden;
  border: 1px solid var(--line-strong);
  border-radius: 1rem;
  background: linear-gradient(180deg, #fff, #fdfefb);
  box-shadow: 0 0.375rem 1.125rem rgb(44 72 28 / 5%);
}
.date-filter-day,
.date-filter-action {
  min-width: 0;
  border: 0;
  background: transparent;
}
.date-filter-bar > button { min-width: 0; }
.date-filter-day {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.25rem;
  border-radius: 0;
  font-size: max(0.75rem, 11px);
  line-height: 1;
}
.date-filter-day small {
  color: var(--muted);
  font-size: max(0.625rem, 10px);
}
.date-filter-day.is-active {
  color: var(--deep);
  background: linear-gradient(180deg, #f4ffe4 0%, #eaf8d3 100%);
  font-weight: 700;
}
.date-filter-day.is-active small { color: var(--deep); }
.date-filter-action {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.1875rem;
  margin-left: 0.125rem;
  border-left: 1px solid var(--line);
  color: #444943;
  font-size: max(0.75rem, 11px);
}

.jelly-icon {
  position: relative;
  display: grid;
  flex: 0 0 auto;
  place-items: center;
  overflow: hidden;
  width: 5.375rem;
  height: 5.375rem;
  border: 1px solid rgb(255 255 255 / 90%);
  border-radius: 1.6875rem;
  color: var(--jelly-ink);
  background: var(--jelly-bg);
  box-shadow: inset 0 0.3125rem 0.625rem rgb(255 255 255 / 85%), inset 0 -0.3125rem 0.75rem rgb(39 107 7 / 8%), 0 0.5625rem 1.375rem var(--jelly-glow);
}
.jelly-icon::after {
  position: absolute;
  top: 0.5rem;
  left: 0.9375rem;
  width: 2.8125rem;
  height: 0.625rem;
  border-radius: 999px;
  background: rgb(255 255 255 / 60%);
  content: "";
  transform: rotate(-8deg);
}
.jelly-sm { width: 3.375rem; height: 3.375rem; border-radius: 1.0625rem; }
.jelly-lime { --jelly-bg: linear-gradient(145deg, #f5ffe8, rgb(152 229 47 / 54%)); --jelly-ink: #4d9d00; --jelly-glow: rgb(152 229 47 / 24%); }
.jelly-blue { --jelly-bg: linear-gradient(145deg, #eff9ff, rgb(86 169 255 / 48%)); --jelly-ink: #167bd7; --jelly-glow: rgb(86 169 255 / 22%); }
.jelly-pink { --jelly-bg: linear-gradient(145deg, #fff2f8, rgb(255 95 155 / 44%)); --jelly-ink: #e93378; --jelly-glow: rgb(255 95 155 / 20%); }
.jelly-amber { --jelly-bg: linear-gradient(145deg, #fffbe8, rgb(255 181 31 / 50%)); --jelly-ink: #d78900; --jelly-glow: rgb(255 181 31 / 22%); }

.category-asset {
  display: block;
  flex: 0 0 auto;
  width: 6.25rem;
  height: 6.25rem;
  object-fit: contain;
}
.category-asset-sm { width: 3.375rem; height: 3.375rem; }

.activity-card { border-color: var(--line) !important; box-shadow: var(--shadow); }
.home-card {
  margin-bottom: 0.75rem;
  border-color: var(--line-strong) !important;
  border-radius: var(--radius-card);
  background: linear-gradient(155deg, #fff 0%, #fff 75%, #fafdf7 100%);
  box-shadow: var(--shadow-card);
}
.home-card .activity-title {
  display: -webkit-box;
  overflow: hidden;
  max-height: 2.76em;
  margin: 0;
  color: var(--ink);
  font-size: 1.0625rem;
  font-weight: 800;
  letter-spacing: -0.018em;
  line-height: 1.38;
  overflow-wrap: anywhere;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
.activity-title-category {
  display: inline-flex;
  align-items: center;
  margin-right: 0.09375rem;
  padding: 0.0625rem 0.1875rem;
  border-radius: 0.25rem;
  color: var(--deep);
  background: #eef8df;
  font-size: 0.9375rem;
  font-weight: 800;
  line-height: 1;
  vertical-align: 0.05em;
  white-space: nowrap;
}
.activity-title-category i {
  margin: 0 0.0625rem;
  font-style: normal;
  opacity: .55;
}
.activity-info {
  display: grid;
  grid-template-rows: minmax(0, 1fr) 1.4375rem;
  align-content: stretch;
  height: 5.375rem;
  row-gap: 0.375rem;
}
.activity-labels {
  display: flex;
  min-width: 0;
  height: 1.4375rem;
  align-items: center;
  gap: 0.3125rem;
  overflow: hidden;
  white-space: nowrap;
}
.activity-tag {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  height: 1.4375rem;
  border-radius: 0.5rem;
  padding: 0 0.375rem;
  font-size: max(0.6875rem, 11px);
  line-height: 1.2;
}
.activity-status {
  display: inline-flex;
  align-items: center;
  min-height: 1.4375rem;
  padding: 0 0.5rem;
  border-radius: 0.5rem;
  font-size: max(0.6875rem, 11px);
  line-height: 1.2;
}
.activity-status { color: var(--deep); background: #eefadb; }
.activity-tag { color: #4d5a48; background: #f2f6ee; }
.activity-tag-more {
  display: inline-flex;
  flex: 0 0 auto;
  height: 1.3125rem;
  align-items: center;
  border-radius: 0.4375rem;
  color: #52604c;
  background: #f1f6ec;
  font-size: max(0.625rem, 9px);
  font-weight: 700;
}
.activity-tag-more[hidden],
.activity-tag[hidden] { display: none; }
.activity-meta-panel > span {
  display: flex;
  min-width: 0;
  align-items: center;
  gap: 0.25rem;
  white-space: nowrap;
}
.home-card-b { padding: 0.625rem 0.75rem; }
.home-card-b .activity-main { min-height: 5.375rem; gap: 0.6875rem !important; }
.home-card-b .jelly-icon:not(.jelly-sm),
.home-card-b .category-asset:not(.category-asset-sm) {
  width: 5.375rem;
  height: 5.375rem;
  border-radius: 1.5625rem;
}
.activity-meta-panel {
  display: grid;
  grid-template-columns: 1.25fr .8fr 1fr;
  min-height: 2.375rem;
  margin-top: 0.3125rem;
  border-radius: 0.75rem;
  color: #4f5b4b;
  background: linear-gradient(180deg, #f7faf4 0%, #f2f7ed 100%);
  font-size: max(0.75rem, 12px);
}
.activity-meta-panel > span {
  justify-content: center;
  border-left: 1px solid #e3e9de;
}
.activity-meta-panel > span:first-child {
  justify-content: flex-start;
  border-left: 0;
}
.activity-address,
.activity-host-status {
  display: flex;
  min-height: 2.125rem;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  font-size: max(0.8125rem, 12px);
}
.activity-address {
  margin-top: 0;
  color: #4f554d;
}
.activity-address > span {
  display: flex;
  min-width: 0;
  align-items: center;
  gap: 0.375rem;
}
.activity-address > span:first-child {
  flex: 1;
}
.activity-address b {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.activity-address > span:last-child {
  flex: 0 0 auto;
  color: var(--muted);
}
.activity-host-status {
  min-height: 2.375rem;
  padding-top: 0.1875rem;
  border-top: 1px solid var(--line);
}
.activity-host-status > span:first-child {
  display: flex;
  min-width: 0;
  align-items: center;
  gap: 0.5rem;
}

.detail-hero {
  display: flex;
  min-width: 0;
  align-items: flex-start;
  gap: 1rem;
}
.detail-title {
  display: -webkit-box;
  overflow: hidden;
  margin: 0;
  color: var(--ink);
  font-size: var(--text-page-title);
  font-weight: 900;
  line-height: 1.24;
  overflow-wrap: anywhere;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
.detail-title-category {
  display: inline-flex;
  align-items: center;
  margin-right: 0.09375rem;
  padding: 0.0625rem 0.1875rem;
  border-radius: 0.25rem;
  color: var(--deep);
  background: #eef8df;
  font-size: 1.125rem;
  font-weight: 800;
  line-height: 1;
  vertical-align: 0.05em;
  white-space: nowrap;
}
.detail-title-category i {
  margin: 0 0.0625rem;
  font-style: normal;
  opacity: .55;
}
.detail-jelly {
  display: grid;
  flex: 0 0 auto;
  place-items: center;
}
.detail-jelly .category-asset,
.detail-jelly .jelly-icon {
  width: 4.75rem;
  height: 4.75rem;
  border-radius: 1.5rem;
}
.detail-labels {
  height: auto;
  margin-top: 1rem;
  gap: 0.4375rem;
  flex-wrap: wrap;
  overflow: visible;
  white-space: normal;
}
.detail-labels .activity-tag { padding: 0 0.5rem; }
.detail-summary {
  margin-top: 1.5rem;
  padding: 0.375rem 1rem;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-card);
  background: linear-gradient(145deg, #fbfff6 0%, #f4f9ef 100%);
  box-shadow: inset 0 1px 0 rgb(255 255 255 / 92%), 0 0.5rem 1.5rem rgb(63 96 41 / 5%);
}
.detail-summary-row {
  display: flex;
  min-height: 4rem;
  align-items: center;
  gap: 0.75rem;
  border-top: 1px solid #e4eadf;
}
.detail-summary-row:first-child { border-top: 0; }
.detail-summary-icon {
  display: grid;
  flex: 0 0 auto;
  width: 2.25rem;
  height: 2.25rem;
  place-items: center;
  border-radius: 0.75rem;
  color: var(--deep);
  border: 1px solid rgb(152 229 47 / 18%);
  background: linear-gradient(145deg, #f5ffe9 0%, #e5f5cd 100%);
}
.detail-summary-row div { min-width: 0; }
.detail-summary-row small,
.detail-summary-row b,
.detail-summary-row div > span {
  display: block;
}
.detail-summary-row small {
  margin-bottom: 0.1875rem;
  color: var(--muted);
  font-size: max(0.6875rem, 11px);
}
.detail-summary-row b {
  overflow: hidden;
  font-size: var(--text-body);
  line-height: 1.35;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.detail-summary-row div > span {
  margin-top: 0.1875rem;
  overflow: hidden;
  color: var(--muted);
  font-size: 0.75rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.detail-summary-row em {
  flex: 0 0 auto;
  margin-left: auto;
  color: var(--muted);
  font-size: 0.75rem;
  font-style: normal;
}
.detail-section { margin-top: 1.5rem; }
.detail-section h3 {
  margin: 0 0 0.75rem;
  font-size: 1.125rem;
}
.detail-section > p {
  margin: 0;
  color: #495148;
  font-size: var(--text-body);
  line-height: 1.75;
}
.detail-host,
.detail-participants {
  display: flex;
  width: 100%;
  align-items: center;
  border: 0;
  color: var(--ink);
  background: transparent;
  text-align: left;
}
.detail-host {
  gap: 0.875rem;
  padding: 0.25rem 0;
}
.detail-host b,
.detail-participants b { display: block; font-size: 0.9375rem; }
.detail-host small,
.detail-participants small {
  display: block;
  margin-top: 0.25rem;
  color: var(--muted);
  font-size: 0.75rem;
  font-weight: 400;
}
.detail-participants {
  min-height: 4.25rem;
  margin-top: 1.125rem;
  padding: 0.75rem;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-control);
  background: linear-gradient(155deg, #fff, #fbfdf8);
  box-shadow: 0 0.375rem 1.25rem rgb(42 64 30 / 5%);
}
.detail-participants-inline {
  margin-top: 0;
  gap: 0.75rem;
}
.detail-participant-count {
  margin-left: auto;
  color: #4e584b;
  font-size: 0.875rem !important;
  white-space: nowrap;
}
.detail-safety {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  margin-top: 1.5rem;
  padding: 0.875rem;
  border: 1px solid #deedca;
  border-radius: var(--radius-control);
  color: var(--deep);
  background: #f1f9e6;
}
.detail-safety > span { min-width: 0; }
.detail-safety b,
.detail-safety small { display: block; }
.detail-safety b { font-size: 0.875rem; }
.detail-safety small {
  margin-top: 0.25rem;
  color: #557052;
  font-size: 0.75rem;
  line-height: 1.5;
}
.publish-card {
  margin-bottom: 0.75rem !important;
  padding: 0.75rem !important;
  border-radius: 1.375rem !important;
}
.publish-card .jelly-sm { width: 2.875rem; height: 2.875rem; border-radius: 0.9375rem; }
.publish-card .category-asset-sm { width: 2.875rem; height: 2.875rem; }
.publish-card .mt-3 { margin-top: .4rem !important; }
.publish-card .mt-4 { margin-top: .45rem !important; padding-top: .45rem !important; }
.publish-card button.h-10 { height: 2rem !important; }
.publish-page header { height: 4.375rem !important; }
.publish-page main > .mt-2 { margin-top: 0 !important; height: 3.25rem !important; }
.publish-page main > .mt-7 { margin-top: 1rem !important; }
.publish-page main > .mt-5 { margin-top: .8rem !important; }
.field {
  min-height: 44px;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-control);
  background: linear-gradient(180deg, #fcfef9 0%, #f9fcf5 100%);
  box-shadow: inset 0 1px 0 rgb(255 255 255 / 95%);
  transition: border-color 180ms ease, box-shadow 180ms ease, background-color 180ms ease;
}
.field:focus,
.field:focus-within {
  border-color: #8fd333;
  background: #fff;
  box-shadow: 0 0 0 3px rgb(152 229 47 / 15%);
}
input.field,
textarea.field,
select.field,
.field input,
.field textarea,
.field select { font-size: 16px; }
input::placeholder,
textarea::placeholder { color: #8a9087; opacity: 1; }
.category-choice.is-selected { box-shadow: inset 0 0 0 1px rgb(152 229 47 / 35%), 0 0.5rem 1.5rem rgb(126 203 27 / 10%); }
.create-page h2.mt-9 { margin-top: 1.1rem !important; font-size: 1.625rem !important; }
.create-page h2.mt-9 + p { font-size: 0.875rem; }
.create-page label { font-size: 0.875rem; }
.create-page .mt-8 { margin-top: .9rem !important; }
.create-page .mt-7 { margin-top: .8rem !important; }
.create-page .mt-3 { margin-top: .55rem !important; }
.create-page .h-28 { height: 5.5rem !important; }
.create-page .h-16 { height: 3.25rem !important; }
.create-page textarea.h-28 { height: 5.125rem !important; }
.create-page .category-choice {
  gap: 0.4375rem !important;
  border-color: var(--line-strong);
  border-radius: var(--radius-control) !important;
  background: linear-gradient(155deg, #fff 0%, #fbfdf8 100%) !important;
  box-shadow: 0 0.375rem 1.125rem rgb(44 72 28 / 5%);
}
.create-page .category-choice.is-selected {
  border-color: #91d733 !important;
  background: linear-gradient(155deg, #fff 0%, #f7fdec 100%) !important;
}
.create-page [data-action="toggle-tag"] { border-color: var(--line) !important; }
.create-page [data-action="toggle-tag"].tag-selected { border-color: #b7dfff !important; }
.create-page [data-action="choose-subcategory"] { border-color: #b7dfff !important; }
.create-page .divide-y { border-color: var(--line) !important; }
.create-page .divide-y > * + * { border-top-color: var(--line) !important; }
.notice-page .activity-card { padding: 0.875rem !important; }
.notice-page .jelly-sm { width: 3rem; height: 3rem; border-radius: 1rem; }
.notice-page .category-asset-sm { width: 3rem; height: 3rem; }
.avatar-image {
  display: block;
  flex: 0 0 auto;
  border-radius: 50%;
  object-fit: cover;
  box-shadow: 0 0.25rem 0.75rem rgb(44 72 28 / 8%);
}
.avatar-tiny { width: 1.75rem; height: 1.75rem; }
.avatar-medium { width: 3rem; height: 3rem; }
.avatar-detail { width: 4rem; height: 4rem; }
.avatar-profile { width: 5rem; height: 5rem; }
.avatar-large { width: 5.5rem; height: 5.5rem; }
.profile-entry-asset {
  display: block;
  flex: 0 0 auto;
  width: 3.5rem;
  height: 3.5rem;
  object-fit: contain;
}
.profile-entry-card {
  flex-direction: column;
  justify-content: center;
  gap: 0.25rem;
  overflow: hidden;
  padding: 0.75rem;
  text-align: center;
}
.profile-entry-copy { flex: 0 0 auto; }
.profile-entry-title {
  font-size: 0.875rem;
  white-space: nowrap;
}
.profile-entry-meta { margin-top: 0.1875rem; }
.profile-hero {
  border: 1px solid #dce9ce;
  background: radial-gradient(circle at 50% 0, #fbfff3 0%, #f5fbe9 58%, #f9fcf4 100%);
  box-shadow: inset 0 1px 0 rgb(255 255 255 / 95%), 0 0.75rem 2rem rgb(82 119 48 / 8%);
}
.avatar-option {
  width: 3.625rem;
  height: 3.625rem;
  box-shadow: 0 0.3125rem 0.875rem rgb(44 72 28 / 7%);
}
.avatar-option .avatar-image { width: 2.875rem; height: 2.875rem; }
.avatar-option.is-selected { box-shadow: 0 0 0 0.1875rem rgb(152 229 47 / 18%), 0 0.4375rem 1.125rem rgb(77 137 22 / 12%); }
.auth-page { background: #fff; }
.auth-page main {
  display: flex;
  flex-direction: column;
  min-height: 100dvh;
  padding: 5rem 1.75rem 2.5rem;
}
.auth-page main > div:first-child {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}
.auth-page main > div:last-child { width: 100%; margin-top: auto; }
.auth-page main > div:last-child > button { width: 100%; }
.auth-page .jelly-icon { width: 6.5rem; height: 6.5rem; border-radius: 2rem; }
.profile-form input,
.profile-form textarea,
.profile-form select { color: var(--ink); }
[data-report-reason],
[data-cancel-reason] { border-radius: 0.9375rem; }
.account-action { border-radius: 1.25rem; }
.jelly-button {
  position: relative;
  overflow: hidden;
  border: 1px solid rgb(140 214 37 / 55%);
  background: linear-gradient(180deg, #efffc7 0%, #caf277 58%, #b7ea5d 100%);
  box-shadow: inset 0 0.375rem 0.6875rem rgb(255 255 255 / 82%), inset 0 -0.1875rem 0.4375rem rgb(95 157 16 / 12%), 0 0.5625rem 1.375rem rgb(126 203 27 / 18%);
}
.jelly-button::after {
  position: absolute;
  top: 0.25rem;
  right: 12%;
  left: 12%;
  height: 0.375rem;
  border-radius: var(--radius-pill);
  background: linear-gradient(90deg, transparent, rgb(255 255 255 / 72%), transparent);
  content: "";
  pointer-events: none;
}
.bottom-bar {
  position: fixed;
  z-index: 30;
  right: max(0px, calc((100vw - 430px) / 2));
  bottom: 0;
  left: max(0px, calc((100vw - 430px) / 2));
  border-top: 1px solid var(--line-strong);
  background: rgb(255 255 255 / 96%);
  backdrop-filter: blur(1.125rem);
}
.main-tab-bar {
  border-top-color: rgb(216 225 207 / 82%);
  background: linear-gradient(180deg, rgb(255 255 255 / 94%) 0%, rgb(252 254 249 / 98%) 100%);
  box-shadow: 0 -0.625rem 1.75rem rgb(37 62 24 / 9%);
}
.bottom-bar button { min-height: 44px; font-size: max(0.6875rem, 11px); }
.main-tab-bar .publish-tab { transform: translateY(-0.5rem); }
.main-tab-bar .publish-tab:active { transform: translateY(-0.5rem) scale(0.97); }
.active-indicator { width: 1.375rem; height: 0.25rem; margin: 0.3125rem auto 0; border-radius: 6.1875rem; background: var(--deep); }

#toast {
  position: fixed;
  z-index: 100;
  top: 16%;
  left: 50%;
  max-width: 18.75rem;
  padding: 0.6875rem 1rem;
  border-radius: 999px;
  color: #fff;
  background: rgb(17 23 16 / 88%);
  opacity: 0;
  pointer-events: none;
  transform: translate(-50%, -0.5rem);
  transition: 180ms ease;
}
#toast.show { opacity: 1; transform: translate(-50%, 0); }

/* Shared page polish. These selectors keep existing information architecture intact. */
.screen main p,
.screen main small,
.screen main .text-muted {
  text-wrap: pretty;
}

.screen main > :is(h2, h3) + .card,
.screen main > :is(h2, h3) + section,
.screen main > :is(h2, h3) + div {
  scroll-margin-top: 5.5rem;
}

.activity-card:not(.home-card) {
  border-color: var(--line-strong) !important;
  border-radius: var(--radius-card) !important;
  background: linear-gradient(155deg, #fff 0%, #fff 76%, #fbfdf8 100%) !important;
  box-shadow: var(--shadow-card) !important;
}

.avatar-image {
  border: 1px solid rgb(255 255 255 / 92%);
}

.profile-entry-asset,
.category-asset {
  filter: drop-shadow(0 0.375rem 0.5rem rgb(86 131 47 / 9%));
}

.profile-entry-card {
  border-color: #dfe9d5 !important;
  background: radial-gradient(circle at 50% 8%, #fbfff4 0%, #fff 70%) !important;
  box-shadow: inset 0 1px 0 #fff, var(--shadow-card) !important;
}

.profile-entry-title {
  font-weight: 800;
  letter-spacing: -0.01em;
}

.notice-page .activity-card {
  border-radius: 1.5rem !important;
  box-shadow: var(--shadow-card) !important;
}

.notice-page article h3 {
  line-height: 1.4;
}

.notice-page article p {
  color: #626960 !important;
}

.notice-page article button {
  min-width: 44px;
  padding-inline: 0.25rem !important;
}

.records-page main > div:first-child {
  border: 1px solid var(--line);
  background: #f1f5ed !important;
}

.publish-card,
.records-page .activity-card,
.notice-page .activity-card {
  overflow: hidden;
}

.publish-card button[aria-label="组局管理菜单"] {
  width: 44px !important;
  min-width: 44px;
  margin-right: -0.375rem;
}

.publish-card button,
.records-page button,
.notice-page button,
.create-page button,
.profile-form button,
.detail-page button {
  min-height: 44px;
}

.screen [class*="bg-[#f3fae8]"],
.screen [class*="bg-[#f4fbe9]"],
.screen [class*="bg-[#f8fced]"] {
  border-color: #dcebc8 !important;
}

.screen [class*="bg-[#f6f7f4]"] {
  border: 1px solid #ecefe8;
}

.auth-page {
  background: radial-gradient(circle at 50% 24%, #fbfff2 0%, #fff 20rem) !important;
}

.auth-page h1 {
  letter-spacing: -0.04em;
  line-height: 1.16;
}

.auth-page main > div:last-child > button:not(.jelly-button) {
  border-color: var(--line-strong) !important;
  box-shadow: 0 0.375rem 1.125rem rgb(44 72 28 / 5%);
}

.auth-page main p button {
  min-width: 44px;
}

.account-action {
  border-color: var(--line-strong) !important;
  box-shadow: 0 0.375rem 1.125rem rgb(44 72 28 / 5%);
}

.screen textarea:not(.field) {
  border-color: var(--line-strong) !important;
  font-size: 16px !important;
  box-shadow: inset 0 1px 0 #fff, 0 0.375rem 1.125rem rgb(44 72 28 / 4%);
}

.screen textarea:not(.field):focus {
  border-color: #8fd333 !important;
  box-shadow: 0 0 0 3px rgb(152 229 47 / 15%);
}

.detail-page > aside {
  border-color: #a9d86a !important;
  background: linear-gradient(145deg, #fbfff5, #f5fbe9) !important;
}

.detail-page > button[data-route^="/report/"] {
  border-color: var(--line-strong) !important;
  background: #fdfefd !important;
}

.bottom-bar:not(.main-tab-bar) {
  box-shadow: 0 -0.625rem 1.75rem rgb(37 62 24 / 8%);
}

@media (hover: hover) and (pointer: fine) {
  .tap:hover:not(:disabled) {
    border-color: #cadbb9 !important;
    box-shadow: 0 0.5rem 1.5rem rgb(51 82 32 / 8%);
  }

  .jelly-button:hover:not(:disabled) {
    border-color: #80c927 !important;
    box-shadow: inset 0 0.375rem 0.6875rem rgb(255 255 255 / 86%), inset 0 -0.1875rem 0.4375rem rgb(95 157 16 / 14%), 0 0.75rem 1.625rem rgb(126 203 27 / 22%);
  }
}

@media screen and (max-width: 359px) {
  .date-filter-bar {
    grid-template-columns: repeat(6, minmax(44px, 1fr)) minmax(46px, 1fr);
    width: calc(100vw - 8px);
    margin-left: calc(50% - 50vw + 4px);
    overflow: hidden;
  }
  .date-filter-day,
  .date-filter-action { min-width: 44px; }
  .date-filter-action { min-width: 46px; }
  .activity-title-category { display: inline; }
  .detail-jelly .category-asset,
  .detail-jelly .jelly-icon {
    width: 4.25rem;
    height: 4.25rem;
  }
  .detail-title { font-size: 1.3125rem; }
  .detail-summary { padding-inline: 0.75rem; }
  .create-page h2.mt-9 { font-size: 1.5rem !important; }
  .profile-entry-card { gap: 0.1875rem; }
  .profile-entry-card .profile-entry-asset { width: 3rem; height: 3rem; }
}

@media screen and (min-width: 431px) {
  #app { overflow: hidden; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; }
}
