/* ============================================================
   Vogue Olive · 极简杂志风
   橄榄绿主调 · 陶土橘点缀 · 白底大留白 · 无边框 · 扁平化
   ============================================================ */

/* ----- 页面切换动画 ----- */
@keyframes pageEnter {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: translateY(0); }
}

.page-enter {
  animation: pageEnter 0.35s cubic-bezier(0.22, 1, 0.36, 1) both;
}

/* ----- GPU 加速层 ----- */
.gpu-layer {
  transform: translateZ(0);
  backface-visibility: hidden;
  perspective: 1000px;
}

/* ----- 悬浮返回按钮 ----- */
.float-back {
  position: fixed;
  right: 16px;
  bottom: calc(88px + env(safe-area-inset-bottom, 0px));
  z-index: 40;
  display: none;
  align-items: center;
  gap: 6px;
  padding: 10px 18px;
  border-radius: 999px;
  background: rgba(44, 36, 32, 0.42);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  color: #fff;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.04em;
  border: 1px solid rgba(255, 255, 255, 0.18);
  box-shadow: 0 4px 18px rgba(0, 0, 0, 0.18);
  cursor: pointer;
  user-select: none;
  transform: translateZ(0);
  transition: transform 0.25s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.25s ease, background 0.2s ease;
  opacity: 0;
  animation: floatBackIn 0.3s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

.float-back.show {
  display: flex;
}

.float-back:active {
  transform: translateZ(0) scale(0.92);
  background: rgba(44, 36, 32, 0.6);
}

.float-back-arrow {
  font-size: 16px;
  line-height: 1;
  margin-right: -2px;
}

.admin-shell .float-back {
  bottom: 24px;
  background: rgba(90, 107, 60, 0.5);
}

@keyframes floatBackIn {
  from { opacity: 0; transform: translateZ(0) translateY(8px); }
  to   { opacity: 1; transform: translateZ(0) translateY(0); }
}

:root {
  --bg: #f5f2ec;
  --paper: #ffffff;
  --ink: #2c2420;
  --muted: #8a7d6e;
  --line: #e0ddd5;
  --olive: #5a6b3c;
  --olive-light: #8a9b6c;
  --terra: #d45a3a;
  --terra-light: #e8a890;
  --cream: #f0ebe3;
  --shadow: none;
  --soft-shadow: none;
  --radius: 8px;
  --radius-lg: 16px;
  --serif: "Noto Serif SC", Georgia, "Times New Roman", serif;
  --safe-bottom: env(safe-area-inset-bottom, 0px);
  /* 旧变量别名（映射到新色板，避免内联引用失效） */
  --tomato: #d45a3a;
  --leaf: #5a6b3c;
  --sun: #f0ebe3;
  --pink: #f0e0d8;
  --sky: #dde8e0;
  font-family: -apple-system, "Segoe UI", "Noto Sans SC", sans-serif;
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
  overscroll-behavior-y: none;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

body {
  margin: 0;
  background: #e8e5df;
  color: var(--ink);
  font-family: -apple-system, "Segoe UI", "Noto Sans SC", sans-serif;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}

button,
input,
textarea,
select {
  font: inherit;
}

button {
  cursor: pointer;
}

a {
  color: inherit;
  text-decoration: none;
}

img,
video {
  max-width: 100%;
  display: block;
}

.phone {
  position: relative;
  width: 100%;
  max-width: 480px;
  min-height: 100vh;
  margin: 0 auto;
  background: var(--bg);
  overflow-x: hidden;
}

/* floating-bg 隐藏（杂志风格不需要装饰气泡） */
.floating-bg {
  display: none;
}

.floating-bg span {
  position: absolute;
  width: 160px;
  height: 160px;
  border: none;
  border-radius: 999px;
  opacity: 0;
  animation: floatBubble 9s ease-in-out infinite;
}

.floating-bg span:nth-child(1),
.floating-bg span:nth-child(2),
.floating-bg span:nth-child(3) {
  background: transparent;
}

.topbar {
  position: sticky;
  top: 0;
  z-index: 20;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 16px 20px;
  background: rgba(245, 242, 236, 0.92);
  border-bottom: 1px solid var(--line);
  backdrop-filter: blur(10px);
}

.brand {
  display: flex;
  align-items: center;
  gap: 4px;
  font-weight: 600;
  letter-spacing: 0.02em;
  font-family: "Noto Serif SC", Georgia, "Times New Roman", serif;
}

.brand-dot {
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
  color: #fff;
  background: var(--olive);
  border: none;
  border-radius: 999px;
  box-shadow: none;
  overflow: hidden;
  flex: 0 0 auto;
}

.brand-logo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.nav-btn {
  border: none;
  border-radius: 999px;
  background: transparent;
  color: var(--olive);
  padding: 8px 14px;
  font-weight: 600;
  box-shadow: none;
}

.page {
  padding: 24px 20px;
  padding-bottom: calc(96px + var(--safe-bottom));
}

.hero {
  display: grid;
  gap: 18px;
}

.card {
  border: none;
  border-radius: var(--radius-lg);
  background: var(--paper);
  box-shadow: none;
  padding: 24px;
  overflow: hidden;
  transform: translateZ(0);
  transition: transform 0.2s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.2s ease;
}

.card:active {
  transform: translateZ(0) scale(0.985);
  opacity: 0.88;
}

.btn:active,
.nav-btn:active,
.admin-tile:active,
.bottom-nav a:active {
  opacity: 0.7;
  transform: scale(0.96);
}

.card.clean {
  box-shadow: none;
}

.card.tomato {
  background: var(--olive);
  color: #fff;
}

.card.leaf {
  background: var(--terra);
  color: #fff;
}

.card.sun {
  background: var(--cream);
  color: var(--ink);
}

.label {
  color: var(--olive);
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.15em;
}

.tomato .label,
.leaf .label {
  color: #fff;
  opacity: 0.86;
}

.h1 {
  margin: 8px 0 14px;
  font-family: "Noto Serif SC", Georgia, "Times New Roman", serif;
  font-size: 36px;
  line-height: 1.1;
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--ink);
}

.h2 {
  margin: 4px 0 12px;
  font-family: "Noto Serif SC", Georgia, "Times New Roman", serif;
  font-size: 26px;
  line-height: 1.15;
  font-weight: 500;
  letter-spacing: -0.02em;
  color: var(--ink);
}

.h3 {
  margin: 0 0 8px;
  font-family: "Noto Serif SC", Georgia, "Times New Roman", serif;
  font-size: 18px;
  font-weight: 600;
  letter-spacing: -0.01em;
  color: var(--ink);
}

.p {
  margin: 0;
  color: var(--muted);
  line-height: 1.75;
  font-size: 15px;
  font-weight: 400;
}

.tomato .p,
.leaf .p {
  color: rgba(255, 255, 255, 0.9);
}

.actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 20px;
}

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 44px;
  border: none;
  border-radius: 4px;
  padding: 10px 18px;
  background: var(--cream);
  color: var(--ink);
  font-weight: 600;
  box-shadow: none;
  transition: opacity 0.2s ease, background 0.2s ease;
}

.btn.primary {
  background: var(--olive);
  color: #fff;
}

.btn.dark {
  background: var(--ink);
  color: #fff;
}

.btn.leaf {
  background: var(--terra);
  color: #fff;
}

.btn.sun {
  background: var(--cream);
  color: var(--ink);
}

/* 危险操作按钮点击时不缩放，避免“只弹动没反应”的错觉 */
.btn.danger:active,
.btn.danger.confirming {
  transform: none !important;
}
.btn.danger.confirming {
  background: var(--tomato, #d45a3a) !important;
  color: #fff !important;
}

.cover {
  position: relative;
  min-height: 260px;
  padding: 0;
}

.hero-card {
  position: relative;
  isolation: isolate;
  min-height: 300px;
  padding-top: 74px;
  background: var(--paper);
  color: var(--ink);
}

/* 杂志风格去掉装饰圆圈 */
.hero-card::after {
  display: none;
}

.hero-intro-content {
  display: grid;
  justify-items: end;
  margin-left: auto;
  max-width: 78%;
  text-align: right;
}

.hero-intro-content .h1 {
  max-width: 100%;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.hero-intro-content .p {
  max-width: 100%;
}

.hero-intro-content .actions {
  justify-content: flex-end;
}

.cover img,
.photo-thumb img,
.avatar img,
.video-cover img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.cover-badge {
  position: absolute;
  top: 14px;
  right: 14px;
  border: none;
  border-radius: 999px;
  background: var(--paper);
  padding: 8px 12px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--olive);
  box-shadow: none;
}

.grid {
  display: grid;
  gap: 16px;
}

.section {
  margin-top: 32px;
}

.photographer {
  display: grid;
  grid-template-columns: 86px 1fr;
  gap: 16px;
  align-items: center;
}

.avatar {
  width: 86px;
  height: 86px;
  border: none;
  border-radius: 50%;
  overflow: hidden;
  background: var(--cream);
}

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

.tag {
  border: none;
  border-radius: 999px;
  background: var(--cream);
  padding: 5px 12px;
  font-size: 12px;
  font-weight: 500;
  color: var(--ink);
}

.scroll-row {
  display: flex;
  gap: 14px;
  overflow-x: auto;
  padding: 4px 2px 12px;
  scroll-snap-type: x mandatory;
  cursor: grab;
  -webkit-overflow-scrolling: touch;
  user-select: none;
  touch-action: pan-y;
  scrollbar-width: none;
  overscroll-behavior-x: contain;
  will-change: scroll-position;
}

.scroll-row::-webkit-scrollbar {
  display: none;
}

.scroll-row.dragging {
  cursor: grabbing;
  scroll-snap-type: none;
}

.scroll-row > * {
  transform: translateZ(0);
  transition: transform 0.25s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.2s ease;
}

.scroll-row > *:active {
  transform: translateZ(0) scale(0.97);
}

.category-strip {
  position: sticky;
  top: 72px;
  z-index: 10;
  margin: 8px -20px 0;
  padding: 8px 20px 14px;
  background: rgba(245, 242, 236, 0.92);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--line);
}

.photo-thumb,
.video-cover {
  position: relative;
  flex: 0 0 78%;
  height: 260px;
  border: none;
  border-radius: var(--radius);
  background: var(--cream);
  overflow: hidden;
  scroll-snap-align: center;
  transform: translateZ(0);
  transition: transform 0.25s cubic-bezier(0.22, 1, 0.36, 1);
}

.photo-thumb:active,
.video-cover:active {
  transform: translateZ(0) scale(0.97);
}

.photo-thumb.small {
  flex-basis: 46%;
  height: 170px;
}

.photo-meta {
  position: absolute;
  left: 10px;
  right: 10px;
  bottom: 10px;
  border: none;
  border-radius: var(--radius);
  background: rgba(255, 255, 255, 0.94);
  padding: 8px 12px;
  font-weight: 600;
  box-shadow: none;
}

.bottom-nav {
  position: fixed;
  left: 50%;
  bottom: 0;
  z-index: 25;
  width: 100%;
  max-width: 480px;
  transform: translateX(-50%);
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 6px;
  padding: 10px 12px calc(12px + var(--safe-bottom));
  background: rgba(245, 242, 236, 0.95);
  border-top: 1px solid var(--line);
  backdrop-filter: blur(10px);
}

.bottom-nav a {
  display: grid;
  place-items: center;
  gap: 2px;
  min-height: 48px;
  border-radius: 12px;
  font-size: 11px;
  font-weight: 500;
  color: var(--muted);
  transition: opacity 0.2s ease, color 0.2s ease;
}

.bottom-nav a.active {
  background: transparent;
  color: var(--olive);
}

.admin-shell {
  min-height: 100vh;
  background: var(--bg);
}

.admin-grid {
  display: grid;
  gap: 14px;
}

.admin-tile {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 78px;
  border: none;
  border-bottom: 1px solid var(--line);
  border-radius: 0;
  background: var(--paper);
  padding: 20px 16px;
  box-shadow: none;
  font-weight: 600;
  transition: opacity 0.2s ease;
}

.flow-strip {
  margin-left: -20px;
  margin-right: -20px;
  overflow: hidden;
  border-top: none;
  border-bottom: none;
  background: transparent;
  padding: 20px 0;
}

.flow-track {
  display: flex;
  gap: 12px;
  width: max-content;
  animation: flowMove 28s linear infinite;
  will-change: transform;
}

.flow-strip:active .flow-track {
  animation-play-state: paused;
}

.flow-card {
  width: 150px;
  height: 190px;
  flex: 0 0 auto;
  border: none;
  border-radius: var(--radius);
  background: var(--paper);
  overflow: hidden;
  box-shadow: none;
  transform: translateZ(0);
  transition: transform 0.3s ease;
}

.flow-card:nth-child(even) {
  transform: translateZ(0) translateY(8px);
}

.flow-card img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.5s ease;
}

.flow-card:hover img,
.flow-card:active img {
  transform: scale(1.06);
}

@keyframes flowMove {
  from { transform: translateX(0); }
  to { transform: translateX(calc(-50% - 6px)); }
}

@keyframes floatBubble {
  0%, 100% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-24px) scale(1.06); }
}

@keyframes pulseTomato {
  0%, 100% { transform: scale(1); opacity: 0.65; }
  50% { transform: scale(1.12); opacity: 0.95; }
}

@media (prefers-reduced-motion: reduce) {
  .flow-track,
  .floating-bg span,
  .hero-card::after {
    animation: none;
  }
}

.form {
  display: grid;
  gap: 16px;
}

.field {
  display: grid;
  gap: 8px;
}

.field label {
  font-size: 11px;
  color: var(--olive);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.15em;
}

.field input,
.field textarea,
.field select {
  width: 100%;
  border: 1px solid #e8e5df;
  border-radius: var(--radius);
  background: var(--paper);
  padding: 14px 14px;
  color: var(--ink);
  outline: none;
  font-weight: 400;
  transition: border-color 0.2s ease;
}

.field input:focus,
.field textarea:focus,
.field select:focus {
  border-color: var(--olive-light);
}

.field textarea {
  min-height: 96px;
  resize: vertical;
}

.mini {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.5;
  font-weight: 400;
}

.list {
  display: grid;
  gap: 14px;
}

.list-card {
  border: none;
  border-radius: var(--radius-lg);
  background: var(--paper);
  padding: 18px;
}

.row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.status {
  display: inline-flex;
  align-items: center;
  border: none;
  border-radius: 999px;
  padding: 5px 12px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.08em;
  background: var(--cream);
  color: var(--ink);
}

.status.available {
  background: #e8ecd8;
  color: #4a5e30;
}

.status.booked {
  background: #f0ddd0;
  color: #9a4030;
}

.status.pending {
  background: #f5ecd8;
  color: #6b5a2a;
}

.status.rest {
  background: #e8e5df;
  color: var(--muted);
}

.login {
  min-height: 100vh;
  display: grid;
  align-items: center;
  padding: 24px;
}

.empty {
  border: 1px dashed #e8e5df;
  border-radius: var(--radius-lg);
  padding: 48px 24px;
  text-align: center;
  color: var(--muted);
}

.table-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}

th,
td {
  text-align: left;
  padding: 12px 10px;
  border-bottom: 1px solid var(--line);
}

th {
  color: var(--olive);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.1em;
}

.back-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--muted);
  font-size: 14px;
  margin-bottom: 16px;
}

/* Toast */
.toast {
  position: fixed;
  top: 20px;
  left: 50%;
  transform: translateX(-50%) translateY(-120%);
  z-index: 100;
  background: var(--ink);
  color: #fff;
  padding: 12px 22px;
  border-radius: 999px;
  font-size: 14px;
  font-weight: 500;
  opacity: 0;
  transition: transform 0.3s ease, opacity 0.3s ease;
  pointer-events: none;
  white-space: nowrap;
}

.toast.show {
  transform: translateX(-50%) translateY(0);
  opacity: 1;
}

/* 保存成功弹窗 */
.save-success-modal {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.35);
  opacity: 0;
  transition: opacity 0.25s ease;
  pointer-events: none;
}

.save-success-modal.active {
  opacity: 1;
}

.save-success-card {
  background: #fff;
  padding: 28px 36px;
  border-radius: 16px;
  text-align: center;
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.18);
  transform: scale(0.9);
  transition: transform 0.25s cubic-bezier(0.22, 1, 0.36, 1);
}

.save-success-modal.active .save-success-card {
  transform: scale(1);
}

.save-success-icon {
  width: 48px;
  height: 48px;
  margin: 0 auto 12px;
  border-radius: 50%;
  background: var(--olive);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
}

.save-success-text {
  font-size: 16px;
  font-weight: 600;
  color: var(--ink);
}

/* Lightbox */
.lightbox {
  position: fixed;
  inset: 0;
  z-index: 90;
  background: rgba(0, 0, 0, 0.92);
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s ease;
}

.lightbox.active {
  opacity: 1;
  pointer-events: auto;
}

.lightbox-backdrop {
  position: absolute;
  inset: 0;
  z-index: -1;
}

.lightbox-stage {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
}

.lightbox-hint {
  position: absolute;
  bottom: 48px;
  left: 50%;
  transform: translateX(-50%);
  color: rgba(255, 255, 255, 0.45);
  font-size: 12px;
  transition: opacity 0.5s ease;
}

.lightbox img,
.lightbox video {
  max-width: 94vw;
  max-height: 86vh;
  object-fit: contain;
  border-radius: 8px;
}

.lightbox-close {
  position: absolute;
  top: 16px;
  right: 16px;
  min-width: 40px;
  height: 40px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.15);
  border: none;
  color: #fff;
  font-size: 20px;
  display: grid;
  place-items: center;
  cursor: pointer;
  padding: 0 14px;
  z-index: 3;
}
.lightbox-close.lightbox-done {
  left: 16px;
  right: auto;
  font-size: 14px;
  font-weight: 500;
}

.lightbox-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 44px;
  height: 44px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.12);
  border: none;
  color: #fff;
  font-size: 18px;
  display: grid;
  place-items: center;
  cursor: pointer;
}

.lightbox-prev {
  left: 10px;
}

.lightbox-next {
  right: 10px;
}

.lightbox-counter {
  position: absolute;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%);
  color: rgba(255, 255, 255, 0.7);
  font-size: 13px;
  letter-spacing: 0.1em;
}

.lightbox-zoom-controls {
  position: absolute;
  bottom: 72px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 16px;
  z-index: 2;
}

.lightbox-zoom-btn {
  width: 44px;
  height: 44px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.12);
  border: 1px solid rgba(255, 255, 255, 0.2);
  color: #fff;
  font-size: 22px;
  line-height: 1;
  display: grid;
  place-items: center;
  cursor: pointer;
  backdrop-filter: blur(4px);
  -webkit-tap-highlight-color: transparent;
  transition: background 0.2s ease, transform 0.1s ease;
}

.lightbox-zoom-btn:active {
  background: rgba(255, 255, 255, 0.28);
  transform: scale(0.92);
}

/* ===== Admin ===== */
.admin-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 20px;
  background: rgba(245, 242, 236, 0.92);
  border-bottom: 1px solid var(--line);
  backdrop-filter: blur(10px);
  position: sticky;
  top: 0;
  z-index: 20;
}

.admin-title {
  font-family: "Noto Serif SC", Georgia, "Times New Roman", serif;
  font-size: 20px;
  font-weight: 600;
  color: var(--ink);
}

.admin-body {
  padding: 20px;
  padding-bottom: calc(96px + var(--safe-bottom));
}

.admin-tabs {
  display: flex;
  gap: 8px;
  margin-bottom: 16px;
  overflow-x: auto;
  padding-bottom: 4px;
}

.admin-tab {
  flex-shrink: 0;
  padding: 8px 16px;
  border-radius: 999px;
  background: var(--cream);
  color: var(--ink);
  font-size: 13px;
  font-weight: 600;
  border: none;
  cursor: pointer;
  white-space: nowrap;
}

.admin-tab.active {
  background: var(--olive);
  color: #fff;
}

/* ===== Canvas Editor ===== */
.cv-wrap {
  position: relative;
  width: 100%;
  min-height: 520px;
  background: var(--paper);
  border-radius: var(--radius);
  overflow: hidden;
  touch-action: none;
}

.cv-canvas {
  position: relative;
  width: 100%;
  min-height: 520px;
}

.cv-item {
  position: absolute;
  background: transparent;
  user-select: none;
  -webkit-user-select: none;
  touch-action: none;
  transition: left 0.18s ease, top 0.18s ease, width 0.18s ease, height 0.18s ease;
  border-radius: 8px;
  overflow: visible;
}

.cv-item img,
.cv-item video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border-radius: 8px;
  pointer-events: none;
}

.cv-item .cv-text {
  width: 100%;
  height: 100%;
  padding: 12px;
  font-size: 15px;
  line-height: 1.6;
  color: var(--ink);
  background: transparent;
  border: none;
  outline: none;
  resize: none;
  overflow: hidden;
  font-family: inherit;
}

.cv-item.selected {
  z-index: 10;
}

.cv-del-btn {
  position: absolute;
  top: -10px;
  right: -10px;
  width: 28px;
  height: 28px;
  border-radius: 999px;
  background: var(--terra);
  border: 2px solid var(--ink);
  display: none;
  place-items: center;
  z-index: 15;
  font-size: 14px;
  font-weight: 900;
  color: #fff;
  cursor: pointer;
  box-shadow: 1px 1px 0 var(--ink);
  transition: transform 0.12s ease;
}

.cv-item.selected .cv-del-btn {
  display: grid;
}

.cv-resize-handle {
  position: absolute;
  bottom: -6px;
  right: -6px;
  width: 18px;
  height: 18px;
  background: var(--olive);
  border: 2px solid var(--ink);
  border-radius: 999px;
  cursor: se-resize;
  display: none;
  z-index: 15;
}

.cv-item.selected .cv-resize-handle {
  display: block;
}

.cv-toolbar {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  padding: 12px 0;
}

.cv-toolbar button {
  padding: 8px 14px;
  border-radius: 999px;
  border: none;
  background: var(--cream);
  color: var(--ink);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
}

.cv-toolbar button.primary {
  background: var(--olive);
  color: #fff;
}

/* ===== 蔬菜超市 ===== */
.mkt-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
}

.mkt-item {
  break-inside: avoid;
  margin-bottom: 10px;
  border-radius: var(--radius);
  overflow: hidden;
  background: var(--paper);
  cursor: pointer;
  transition: opacity 0.2s ease;
}

.mkt-item:active {
  opacity: 0.8;
}

.mkt-item-img {
  width: 100%;
  display: block;
  aspect-ratio: 3/4;
  object-fit: cover;
}

.mkt-item-note {
  padding: 14px;
  font-size: 14px;
  line-height: 1.6;
}

.mkt-item-note-author {
  font-size: 12px;
  color: var(--muted);
  margin-top: 8px;
}

.mkt-sort-bar {
  display: flex;
  gap: 8px;
  margin-bottom: 16px;
  overflow-x: auto;
  padding-bottom: 4px;
}

.mkt-sort-btn {
  flex-shrink: 0;
  padding: 6px 14px;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: var(--paper);
  color: var(--muted);
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
}

.mkt-sort-btn.active {
  background: var(--olive);
  color: #fff;
  border-color: var(--olive);
}

.mkt-detail-panel {
  position: fixed;
  inset: 0;
  z-index: 80;
  background: var(--bg);
  overflow-y: auto;
  transform: translateY(100%);
  transition: transform 0.3s ease;
}

.mkt-detail-panel.active {
  transform: translateY(0);
}

.mkt-detail-header {
  position: sticky;
  top: 0;
  z-index: 5;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  background: rgba(245, 242, 236, 0.95);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--line);
}

.mkt-detail-close {
  width: 36px;
  height: 36px;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: var(--paper);
  font-size: 16px;
  cursor: pointer;
  z-index: 2;
  display: grid;
  place-items: center;
  color: var(--ink);
}

.mkt-detail-img {
  width: 100%;
  display: block;
  border-radius: 16px 16px 0 0;
}

.mkt-detail-info {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 16px 18px 0;
}

.mkt-detail-author {
  font-weight: 600;
  font-size: 15px;
  color: var(--ink);
}

.mkt-detail-meta {
  font-size: 12px;
  color: var(--muted);
}

.mkt-detail-text {
  padding: 12px 18px;
  font-size: 15px;
  line-height: 1.7;
  color: var(--ink);
  white-space: pre-wrap;
}

.mkt-detail-actions {
  padding: 8px 18px;
}

.mkt-like-btn {
  border: 1px solid var(--terra);
  background: transparent;
  color: var(--terra);
  padding: 6px 18px;
  border-radius: 999px;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s ease;
}

.mkt-like-btn.liked {
  background: var(--terra);
  color: #fff;
}

.mkt-detail-comments {
  padding: 0 18px 28px;
}

.mkt-comments-title {
  font-weight: 600;
  font-size: 14px;
  margin: 14px 0 10px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--line);
  color: var(--ink);
}

.mkt-comment {
  margin-bottom: 14px;
}

.mkt-comment strong {
  font-size: 13px;
  display: block;
  margin-bottom: 3px;
  color: var(--ink);
  font-weight: 600;
}

.mkt-comment p {
  font-size: 14px;
  color: var(--muted);
  margin: 0;
  line-height: 1.6;
}

.mkt-comment-form {
  margin-top: 14px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.mkt-comment-form input,
.mkt-comment-form textarea {
  width: 100%;
  padding: 12px 14px;
  border: 1px solid #e8e5df;
  border-radius: var(--radius);
  font-size: 14px;
  box-sizing: border-box;
  font-family: inherit;
  background: var(--paper);
  color: var(--ink);
  outline: none;
}

.mkt-comment-form textarea {
  resize: none;
}

/* ===== 蔬菜超市 · 瀑布流卡片 ===== */
.mkt-waterfall {
  column-count: 2;
  column-gap: 10px;
}

.mkt-card {
  break-inside: avoid;
  margin-bottom: 10px;
  border-radius: var(--radius);
  overflow: hidden;
  background: var(--paper);
  cursor: pointer;
  transition: opacity 0.2s ease;
}

.mkt-card:active {
  opacity: 0.8;
}

.mkt-card-img {
  width: 100%;
  display: block;
}

.mkt-card-img img {
  width: 100%;
  display: block;
  object-fit: cover;
}

.mkt-card-body {
  padding: 10px 12px;
}

.mkt-card-title {
  font-size: 14px;
  font-weight: 600;
  color: var(--ink);
  line-height: 1.4;
}

.mkt-card-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 12px 10px;
}

.mkt-card-author {
  font-size: 12px;
  color: var(--muted);
  font-weight: 500;
}

.mkt-card-likes {
  font-size: 11px;
  color: var(--muted);
}

.mkt-card-note {
  padding: 16px 14px 10px;
}

.mkt-card-note .mkt-card-body {
  padding: 0 0 10px;
  font-size: 14px;
  line-height: 1.6;
  color: var(--ink);
}

.mkt-note-pink { background: var(--pink); }
.mkt-note-leaf { background: #e8ecd8; }
.mkt-note-sun { background: var(--cream); }
.mkt-note-tomato { background: #f0ddd0; }
.mkt-note-sky { background: var(--sky); }
.mkt-note-cream { background: var(--cream); }

/* ===== 蔬菜超市 · 详情弹窗 ===== */
.mkt-detail-modal {
  position: fixed;
  inset: 0;
  z-index: 80;
}

.mkt-detail-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.4);
}

.mkt-detail-modal .mkt-detail-panel {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  max-height: 92vh;
 background: var(--bg);
  border-radius: var(--radius-lg) var(--radius-lg) 0 0;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  transform: translateY(100%);
  transition: transform 0.3s ease;
}

.mkt-detail-modal .mkt-detail-panel.active {
  transform: translateY(0);
}

/* ===== 留言弹窗 ===== */
.guest-note-modal {
  position: fixed;
  inset: 0;
  z-index: 80;
  display: flex;
  align-items: flex-end;
  justify-content: center;
}

.guest-note-modal .guest-note-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.4);
}

.guest-note-modal .guest-note-panel {
  position: relative;
  width: 100%;
  max-width: 480px;
  background: var(--bg);
  border-radius: var(--radius-lg) var(--radius-lg) 0 0;
  padding: 24px 20px;
  padding-bottom: calc(24px + var(--safe-bottom));
  z-index: 2;
  transform: translateY(100%);
  transition: transform 0.3s ease;
}

.guest-note-modal .guest-note-panel.active {
  transform: translateY(0);
}

/* ============================================================
   新版高端首页样式 · Home Page v2
   ============================================================ */

.home-page {
  padding: 0;
  padding-bottom: calc(96px + var(--safe-bottom));
}

/* ----- 全屏 Hero ----- */
.home-hero {
  position: relative;
  height: 85vh;
  min-height: 520px;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
}

.home-hero-bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center 30%;
  background-repeat: no-repeat;
  transform: scale(1.05);
  transition: transform 8s ease;
}

.home-hero-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to top,
    rgba(0, 0, 0, 0.55) 0%,
    rgba(0, 0, 0, 0.2) 40%,
    rgba(0, 0, 0, 0.05) 70%,
    transparent 100%
  );
}

.home-hero-content {
  position: relative;
  z-index: 2;
  padding: 32px 28px 48px;
  color: #fff;
  width: 100%;
}

.home-hero-label {
  font-size: 10px;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  opacity: 0.75;
  margin-bottom: 10px;
  font-weight: 500;
}

.home-hero-title {
  font-family: "Noto Serif SC", Georgia, "Times New Roman", serif;
  font-size: 32px;
  line-height: 1.15;
  font-weight: 600;
  letter-spacing: -0.01em;
  margin-bottom: 10px;
  text-shadow: 0 2px 20px rgba(0, 0, 0, 0.3);
}

.home-hero-sub {
  font-size: 14px;
  line-height: 1.7;
  opacity: 0.85;
  margin-bottom: 24px;
  max-width: 280px;
  text-shadow: 0 1px 10px rgba(0, 0, 0, 0.3);
}

.home-hero-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 12px 28px;
  background: var(--olive);
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  border-radius: 4px;
  transition: opacity 0.2s ease, transform 0.2s ease;
}

.home-hero-btn:active {
  opacity: 0.8;
  transform: scale(0.98);
}

/* ----- 品牌理念区 ----- */
.home-philosophy {
  padding: 64px 28px;
  text-align: center;
  background: var(--bg);
}

.home-phil-label {
  font-size: 10px;
  color: var(--olive);
  letter-spacing: 0.25em;
  text-transform: uppercase;
  font-weight: 600;
  margin-bottom: 18px;
}

.home-phil-title {
  font-family: "Noto Serif SC", Georgia, "Times New Roman", serif;
  font-size: 24px;
  color: var(--ink);
  line-height: 1.35;
  font-weight: 500;
  margin-bottom: 18px;
  letter-spacing: -0.01em;
}

.home-phil-text {
  font-size: 14px;
  color: var(--muted);
  line-height: 1.9;
}

/* ----- 精选作品大图展示 ----- */
.home-showcase {
  padding-bottom: 48px;
}

.home-showcase-item {
  margin-bottom: 8px;
  overflow: hidden;
  border-radius: var(--radius-lg);
  transform: translateZ(0);
  transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}

.home-showcase-item:last-child {
  margin-bottom: 0;
}

.home-showcase-item:active {
  transform: translateZ(0) scale(0.985);
}

.home-showcase-img {
  width: 100%;
  aspect-ratio: 4 / 5;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}

.home-showcase-item:active .home-showcase-img {
  transform: scale(1.03);
}

.home-showcase-info {
  padding: 18px 24px 28px;
  background: var(--bg);
}

.home-showcase-title {
  font-family: "Noto Serif SC", Georgia, "Times New Roman", serif;
  font-size: 18px;
  color: var(--ink);
  font-weight: 500;
  margin-bottom: 6px;
  letter-spacing: -0.01em;
}

.home-showcase-meta {
  font-size: 11px;
  color: var(--muted);
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

/* ----- 团队区域 ----- */
.home-team {
  padding: 48px 0;
  border-top: 1px solid var(--line);
  background: var(--bg);
}

.home-section-header {
  padding: 0 24px 24px;
}

.home-section-label {
  font-size: 10px;
  color: var(--olive);
  letter-spacing: 0.25em;
  text-transform: uppercase;
  font-weight: 600;
}

.home-section-title {
  font-family: "Noto Serif SC", Georgia, "Times New Roman", serif;
  font-size: 22px;
  color: var(--ink);
  margin-top: 8px;
  font-weight: 500;
  letter-spacing: -0.01em;
}

.home-team-scroll {
  display: flex;
  gap: 14px;
  padding: 0 24px;
  overflow-x: auto;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-x: contain;
  will-change: scroll-position;
  scroll-snap-type: x mandatory;
}

.home-team-scroll::-webkit-scrollbar {
  display: none;
}

.home-team-card {
  flex: 0 0 150px;
  text-decoration: none;
  color: inherit;
  transition: transform 0.25s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.2s ease;
  transform: translateZ(0);
  scroll-snap-align: start;
}

.home-team-card:active {
  transform: translateZ(0) scale(0.96);
  opacity: 0.85;
}

.home-team-card:active {
  opacity: 0.7;
}

.home-team-img {
  width: 150px;
  height: 190px;
  border-radius: var(--radius);
  background-size: cover;
  background-position: center;
  margin-bottom: 12px;
}

.home-team-name {
  font-family: "Noto Serif SC", Georgia, "Times New Roman", serif;
  font-size: 16px;
  color: var(--ink);
  font-weight: 500;
}

.home-team-role {
  font-size: 11px;
  color: var(--muted);
  margin-top: 4px;
  letter-spacing: 0.05em;
}

/* ----- 底部 CTA ----- */
.home-cta {
  background: var(--olive);
  padding: 56px 28px 64px;
  text-align: center;
  color: #fff;
}

.home-cta-label {
  font-size: 10px;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  opacity: 0.65;
  margin-bottom: 14px;
  font-weight: 500;
}

.home-cta-title {
  font-family: "Noto Serif SC", Georgia, "Times New Roman", serif;
  font-size: 24px;
  font-weight: 500;
  margin-bottom: 28px;
  line-height: 1.35;
  letter-spacing: -0.01em;
}

.home-cta-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 14px 36px;
  background: #fff;
  color: var(--olive);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.08em;
  border-radius: 4px;
  transition: opacity 0.2s ease, transform 0.2s ease;
}

.home-cta-btn:active {
  opacity: 0.85;
  transform: scale(0.98);
}

.home-cta-phone {
  margin-top: 18px;
  font-size: 13px;
  opacity: 0.6;
  letter-spacing: 0.05em;
}

/* ============================================================
   档期日历 · Schedule Calendar
   ============================================================ */
.cal-wrap {
  background: var(--paper);
  border-radius: var(--radius-lg);
  padding: 20px 16px 16px;
  margin-bottom: 8px;
}

.cal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 16px;
}

.cal-nav-btn {
  width: 36px;
  height: 36px;
  border: none;
  border-radius: 999px;
  background: var(--cream);
  color: var(--ink);
  font-size: 20px;
  font-weight: 600;
  display: grid;
  place-items: center;
  cursor: pointer;
  transition: opacity 0.2s ease;
  flex-shrink: 0;
}

.cal-nav-btn:active {
  opacity: 0.6;
}

.cal-title {
  font-family: "Noto Serif SC", Georgia, "Times New Roman", serif;
  font-size: 17px;
  font-weight: 600;
  color: var(--ink);
  text-align: center;
  letter-spacing: -0.01em;
}

.cal-lunar-month {
  font-size: 12px;
  color: var(--muted);
  font-weight: 400;
  margin-left: 4px;
}

.cal-weekdays {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 2px;
  margin-bottom: 8px;
}

.cal-wd {
  text-align: center;
  font-size: 11px;
  font-weight: 600;
  color: var(--muted);
  padding: 6px 0;
  letter-spacing: 0.05em;
}

.cal-wd.we {
  color: var(--terra);
}

.cal-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 2px;
}

.cal-day {
  position: relative;
  aspect-ratio: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius);
  cursor: default;
  transition: background 0.15s ease, transform 0.1s ease;
  padding: 2px;
}

.cal-day.other {
  opacity: 0.25;
}

.cal-day .cal-solar {
  font-size: 15px;
  font-weight: 600;
  color: var(--ink);
  line-height: 1;
}

.cal-day.we .cal-solar {
  color: var(--terra);
}

.cal-day .cal-lunar {
  font-size: 9px;
  color: var(--muted);
  line-height: 1;
  margin-top: 2px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}

.cal-day.today {
  border: 1px solid var(--olive-light);
}

.cal-day.today .cal-solar {
  color: var(--olive);
}

.cal-day.selected {
  background: var(--olive);
  cursor: pointer;
}

.cal-day.selected .cal-solar {
  color: #fff;
}

.cal-day.selected .cal-lunar {
  color: rgba(255, 255, 255, 0.8);
}

.cal-day.selected:active {
  transform: scale(0.94);
}

/* 前台可预约日期，有 hover/active 提示 */
.cal-day[data-action="sch-book-date"] {
  cursor: pointer;
}

.cal-day[data-action="sch-book-date"]:active {
  transform: scale(0.94);
  opacity: 0.85;
}

.cal-legend {
  display: flex;
  justify-content: center;
  gap: 20px;
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--line);
}

.cal-leg {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  color: var(--muted);
  font-weight: 500;
}

.cal-leg-dot {
  width: 12px;
  height: 12px;
  border-radius: 3px;
  flex-shrink: 0;
}

.cal-leg-dot.on {
  background: var(--olive);
}

.cal-leg-dot.off {
  background: var(--cream);
  border: 1px solid var(--line);
}

.cal-leg-dot.booked {
  background: var(--terra);
}

/* 已约满日期 */
.cal-day.booked {
  background: var(--terra);
  cursor: not-allowed;
  opacity: 0.7;
}

.cal-day.booked .cal-solar {
  color: #fff;
  text-decoration: line-through;
}

.cal-day.booked .cal-lunar {
  color: rgba(255, 255, 255, 0.7);
}

.cal-booked-tag {
  position: absolute;
  bottom: 2px;
  left: 50%;
  transform: translateX(-50%);
  font-size: 8px;
  color: #fff;
  background: rgba(0, 0, 0, 0.2);
  padding: 0 4px;
  border-radius: 3px;
  white-space: nowrap;
  line-height: 1.4;
}

/* ----- 后台档期管理 ----- */
.sch-pg-select {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 16px;
}

.sch-pg-select .btn {
  font-size: 12px;
  padding: 7px 14px;
}

.sch-selected-list {
  display: grid;
  gap: 8px;
}

.sch-selected-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  background: var(--paper);
  border-radius: var(--radius);
  border: 1px solid var(--line);
}

.sch-selected-date {
  font-size: 15px;
  font-weight: 600;
  color: var(--ink);
}

.sch-selected-lunar {
  font-size: 12px;
  color: var(--muted);
  margin-left: 8px;
}

.sch-remove-btn {
  border: none;
  border-radius: 999px;
  background: #f0ddd0;
  color: #9a4030;
  padding: 5px 14px;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  transition: opacity 0.2s ease;
  flex-shrink: 0;
}

.sch-remove-btn:active {
  opacity: 0.6;
}

/* ----- 前台摄影师档期选择 ----- */
.pg-sch-list {
  display: grid;
  gap: 12px;
}

.pg-sch-card {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 18px 16px;
  background: var(--paper);
  border-radius: var(--radius-lg);
  border: none;
  color: inherit;
  text-decoration: none;
  transition: opacity 0.2s ease;
}

.pg-sch-card:active {
  opacity: 0.7;
}

.pg-sch-avatar {
  width: 52px;
  height: 52px;
  border-radius: 999px;
  background: #e8ecd8;
  color: var(--olive);
  display: grid;
  place-items: center;
  font-family: "Noto Serif SC", Georgia, serif;
  font-weight: 600;
  font-size: 20px;
  flex-shrink: 0;
}

.pg-sch-info {
  flex: 1;
  display: grid;
  gap: 2px;
  min-width: 0;
}

.pg-sch-name {
  font-weight: 600;
  font-size: 16px;
  color: var(--ink);
}

.pg-sch-role {
  font-size: 12px;
  color: var(--muted);
}

.pg-sch-badge {
  background: var(--olive);
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  padding: 6px 12px;
  border-radius: 999px;
  flex-shrink: 0;
}

/* ----- 预约弹窗 ----- */
.sch-book-modal {
  position: fixed;
  inset: 0;
  z-index: 85;
  display: flex;
  align-items: flex-end;
  justify-content: center;
}

.sch-book-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.45);
  opacity: 0;
  transition: opacity 0.3s ease;
}

.sch-book-modal.active .sch-book-backdrop {
  opacity: 1;
}

.sch-book-panel {
  position: relative;
  width: 100%;
  max-width: 480px;
  background: var(--bg);
  border-radius: var(--radius-lg) var(--radius-lg) 0 0;
  padding: 28px 24px;
  padding-bottom: calc(28px + var(--safe-bottom));
  z-index: 2;
  transform: translateY(100%);
  transition: transform 0.3s ease;
}

.sch-book-modal.active .sch-book-panel {
  transform: translateY(0);
}

.sch-book-close {
  position: absolute;
  top: 12px;
  right: 16px;
  width: 32px;
  height: 32px;
  border: none;
  border-radius: 999px;
  background: var(--cream);
  font-size: 16px;
  color: var(--ink);
  cursor: pointer;
  display: grid;
  place-items: center;
}

.sch-book-date-display {
  text-align: center;
  margin-bottom: 20px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--line);
}

.sch-book-date-main {
  font-family: "Noto Serif SC", Georgia, "Times New Roman", serif;
  font-size: 22px;
  font-weight: 600;
  color: var(--ink);
}

.sch-book-date-lunar {
  font-size: 13px;
  color: var(--muted);
  margin-top: 4px;
}

.sch-book-date-pg {
  font-size: 12px;
  color: var(--olive);
  margin-top: 6px;
  font-weight: 600;
}

/* ============================================================
   分享页面样式
   ============================================================ */
.share-card {
  padding: 0;
  overflow: hidden;
}

.share-cover-preview {
  width: 100%;
  height: 180px;
  background-size: cover;
  background-position: center;
  background-color: var(--cream);
  cursor: pointer;
  transition: opacity 0.2s ease;
}

.share-cover-preview:active {
  opacity: 0.85;
}

.share-card-body {
  padding: 20px 16px;
}

.share-url-box {
  display: flex;
  gap: 8px;
  margin: 14px 0;
}

.share-url-input {
  flex: 1;
  min-width: 0;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--bg);
  font-size: 12px;
  color: var(--ink);
  -webkit-user-select: text;
  user-select: text;
}

.share-url-input:focus {
  outline: none;
  border-color: var(--olive-light);
}

.share-cover-form {
  border-top: 1px solid var(--line);
  padding-top: 14px;
}

/* ============================================================
   数据备份页面样式
   ============================================================ */
.backup-info-row {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
}

.backup-info-row .mini {
  background: var(--cream);
  padding: 4px 12px;
  border-radius: 999px;
  font-weight: 600;
  color: var(--olive);
}

.backup-warning-card {
 border: 1px solid var(--line);
}

.backup-steps {
  display: grid;
  gap: 16px;
  margin-top: 14px;
}

.backup-step {
  display: flex;
  align-items: flex-start;
  gap: 14px;
}

.backup-step-num {
  flex-shrink: 0;
  width: 30px;
  height: 30px;
  border-radius: 999px;
  background: var(--olive);
  color: #fff;
  font-size: 14px;
  font-weight: 700;
  display: grid;
  place-items: center;
}

.backup-step-text {
  padding-top: 5px;
  font-size: 14px;
  color: var(--ink);
  line-height: 1.6;
}

/* ===== 画布编辑器（作品编辑/文章编辑共用）===== */
.ae-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  padding: 12px 16px;
  background: var(--bg, #f5f2ec);
  position: sticky;
  top: 48px;
  z-index: 20;
  border-bottom: 1px solid var(--line, #e0dcd5);
}

.ae-toolbar .btn {
  font-size: 13px;
  padding: 8px 14px;
  border-radius: 8px;
}

/* 保存按钮：放在工具栏右侧，粘性跟随，不挡画布 */
.ae-toolbar .ae-save-btn {
  margin-left: auto;
  background: var(--olive, #5a6b3c);
  color: #fff;
  flex: 0 0 auto;
}

.ae-layout-tag {
  font-size: 11px;
  color: var(--muted, #8a7d6e);
  padding: 4px 8px;
  border-radius: 6px;
  background: var(--cream, #f0ebe3);
  letter-spacing: 0.04em;
  white-space: nowrap;
}

.ae-canvas {
  position: relative;
  min-height: 500px;
  background: var(--bg, #f5f2ec);
  /* 关键修复：允许垂直滚动浏览长画布，水平不滚动 */
  touch-action: pan-y;
  overflow: visible;
  padding-bottom: 120px;
}

.ae-canvas * {
  box-sizing: border-box;
}

/* overflow: visible —— 让定位在元素外部的删除/缩放手柄不被裁剪
   （与 .cv-item 保持一致的处理方式；圆角由内部媒体自带） */
.ae-item {
  position: absolute;
  background: #fff;
  border-radius: 8px;
  overflow: visible;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);
  transition: left 0.15s ease, top 0.15s ease, box-shadow 0.15s ease;
  user-select: none;
  -webkit-user-select: none;
  /* touch-action 由 JS 动态设置：选中时 none（拖拽），未选中时继承父级 pan-y */
}

.ae-item.selected {
  box-shadow: 0 0 0 2px var(--tomato, #d45a3a), 0 2px 12px rgba(212, 90, 58, 0.15);
}

/* 拖拽排序中：半透明 + 阴影 + 禁止文字选择 */
.ae-item.ae-dragging {
  opacity: 0.88;
  box-shadow: 0 8px 28px rgba(0, 0, 0, 0.18), 0 0 0 2px var(--olive, #5a6b3c);
  z-index: 100;
  pointer-events: none;
}
.ae-item.ae-dragging .ae-text {
  pointer-events: none;
}

.ae-item img,
.ae-item video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  pointer-events: none;
  border-radius: 8px;
}

/* 批量上传的懒加载占位：未加载原图前显示浅灰背景，避免空白或破图 */
.ae-item img.ae-lazy {
  background: #e8e4dc;
  min-height: 120px;
}

.ae-text {
  width: 100%;
  height: 100%;
  border: none;
  outline: none;
  resize: none;
  padding: 10px 12px;
  font-size: 14px;
  line-height: 1.6;
  color: var(--ink, #2c2420);
  background: transparent;
  font-family: inherit;
  border-radius: 8px;
}

/* 删除按钮：定位在元素右上角外侧（top/right:-8px）
   依赖 .ae-item 的 overflow:visible 才能完整显示 */
.ae-del {
  position: absolute;
  top: -8px;
  right: -8px;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: var(--tomato, #d45a3a);
  color: #fff;
  font-size: 13px;
  font-weight: 700;
  display: none;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  z-index: 10;
  line-height: 1;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
  transition: transform 0.1s ease;
}

.ae-item.selected .ae-del {
  display: flex;
}

.ae-del:active {
  transform: scale(0.9);
}

.ae-resize {
  position: absolute;
  bottom: 0;
  right: 0;
  width: 28px;
  height: 28px;
  cursor: nwse-resize;
  z-index: 5;
  opacity: 0;
  transition: opacity 0.15s;
}

.ae-item.selected .ae-resize {
  opacity: 1;
}

.ae-resize::after {
  content: '';
  position: absolute;
  bottom: 6px;
  right: 6px;
  width: 10px;
  height: 10px;
  border-right: 2px solid var(--tomato, #d45a3a);
  border-bottom: 2px solid var(--tomato, #d45a3a);
}

.ae-empty {
  text-align: center;
  padding: 80px 24px;
  color: var(--muted, #999);
  font-size: 14px;
  line-height: 2;
}

.ae-cover-preview {
  width: 100%;
  max-height: 160px;
  object-fit: cover;
  border-radius: 10px;
  margin-top: 10px;
  border: 1px solid var(--line, #e0dcd5);
}

/* ===== 上传进度条 ===== */
.upload-progress-bar{position:fixed;top:0;left:0;right:0;z-index:200;padding:12px 16px;background:rgba(44,36,32,.88);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:center;gap:12px;animation:slideDown .2s ease}
@keyframes slideDown{from{transform:translateY(-100%)}to{transform:translateY(0)}}
.upload-progress-track{flex:1;height:6px;background:rgba(255,255,255,.15);border-radius:3px;overflow:hidden}
.upload-progress-fill{height:100%;width:0;background:var(--olive,#5a6b3c);border-radius:3px;transition:width .15s ease}
.upload-progress-text{color:#fff;font-size:12px;font-weight:600;white-space:nowrap;min-width:90px;text-align:right}

/* ===== 封面裁剪弹窗 ===== */
.cover-crop-modal{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease;pointer-events:none}
.cover-crop-modal.active{opacity:1;pointer-events:auto}
.cover-crop-overlay{position:absolute;inset:0;background:rgba(0,0,0,.65)}
.cover-crop-box{position:relative;z-index:1;width:90%;max-width:400px;background:var(--paper,#fff);border-radius:16px;overflow:hidden;transform:translateY(20px);transition:transform .25s cubic-bezier(.22,1,.36,1)}
.cover-crop-modal.active .cover-crop-box{transform:translateY(0)}
.cover-crop-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--line,#e0ddd5);font-weight:600;font-size:15px}
.cover-crop-close{background:none;border:none;font-size:18px;cursor:pointer;color:var(--muted,#8a7d6e);padding:4px 8px}
.cover-crop-body{position:relative;width:100%;overflow:hidden;touch-action:none;background:#000;min-height:200px}
.cover-crop-body canvas{position:absolute;top:0;left:0;pointer-events:none}
.cover-crop-frame{position:absolute;left:0;border:2px solid rgba(255,255,255,.95);box-shadow:0 0 0 1px rgba(0,0,0,.3);touch-action:none;cursor:move;transition:none;z-index:3;pointer-events:none}
.cover-crop-controls{display:flex;align-items:center;gap:8px;padding:10px 16px;background:rgba(0,0,0,.03);border-top:1px solid var(--line,#e0ddd5)}
.cover-crop-controls input[type=range]{flex:1;min-width:0;height:36px;accent-color:var(--tomato,#d45a3a)}
.cc-zoom-btn{flex:0 0 auto;width:38px;height:38px;border-radius:50%;border:none;background:var(--tomato,#d45a3a);color:#fff;font-size:20px;font-weight:bold;cursor:pointer;display:grid;place-items:center;line-height:1}
.cc-zoom-btn:active{transform:scale(.92)}
.cover-crop-footer{display:flex;gap:10px;padding:14px 16px;justify-content:flex-end}
.cover-crop-footer .btn{min-height:40px;font-size:14px}

/* ----- Logo 图片 ----- */
.brand-logo-img{height:24px;width:auto;object-fit:contain;display:block;margin-top:1px}
.brand-tomato{font-size:22px;line-height:1;display:block;transform:translateY(-4px)}

/* ----- 后台顶栏新布局 ----- */
.admin-shell .topbar{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px}
.admin-home-link{display:flex;align-items:center;gap:5px;color:var(--olive);font-size:12px;font-weight:500;text-decoration:none;padding:6px 8px;border-radius:var(--radius);transition:background .15s ease}
.admin-home-link:active{background:rgba(90,107,60,.1)}
.admin-home-link svg{flex:0 0 auto}
.admin-topbar-title{font-family:"Noto Serif SC",Georgia,"Times New Roman",serif;font-size:14px;font-weight:600;color:var(--ink);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-logout-btn{border:none;border-radius:var(--radius);background:transparent;color:var(--muted);padding:6px 12px;font-size:12px;font-weight:500;cursor:pointer;transition:color .15s ease,background .15s ease}
.admin-logout-btn:active{color:var(--terra);background:rgba(212,90,58,.08)}

/* 封面预览行 */
.ae-cover-row{display:flex;align-items:center;gap:12px;margin-top:6px}
.ae-cover-placeholder{width:80px;height:60px;border-radius:8px;background:var(--cream,#f0ebe3);display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--muted,#8a7d6e);text-align:center;line-height:1.3;flex:0 0 80px;overflow:hidden}

/* ===== 内容块基础样式（作品详情等使用）===== */
.art-block{margin:0 16px 12px;border-radius:10px;overflow:hidden}.art-block img{width:100%;display:block;border-radius:10px}.art-block video{width:100%;display:block;border-radius:10px}.art-block .art-text{padding:12px 16px;font-size:15px;line-height:1.8;color:var(--ink,#2c2420);white-space:pre-wrap}

/* ===== Contact Modal (预约咨询弹窗) ===== */
.contact-modal{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,0.45);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);opacity:0;transition:opacity 0.25s ease}
.contact-modal.active{opacity:1}
.contact-backdrop{position:absolute;inset:0}
.contact-panel{position:relative;width:88%;max-width:360px;max-height:80vh;overflow-y:auto;background:var(--paper,#fff);border-radius:16px;padding:24px 20px;box-shadow:0 8px 32px rgba(0,0,0,0.18);transform:translateY(20px);transition:transform 0.25s cubic-bezier(0.22,1,0.36,1)}
.contact-modal.active .contact-panel{transform:translateY(0)}
.contact-panel .qr-wrap{text-align:center;margin:12px 0}
.contact-panel .qr-wrap img{width:160px;height:160px;object-fit:cover;border-radius:12px}
.contact-panel .list-card.row{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-radius:10px;background:var(--bg,#f5f2ec);margin-bottom:6px;font-size:14px}

/* ============================================================
   存档槽弹窗样式（slot-*）
   ============================================================ */
.slot-modal-overlay{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,0.45);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);opacity:0;animation:slotFadeIn 0.25s ease forwards}
@keyframes slotFadeIn{from{opacity:0}to{opacity:1}}
.slot-modal{position:relative;width:92%;max-width:400px;max-height:80vh;overflow-y:auto;background:var(--paper,#fff);border-radius:16px;padding:20px 18px;box-shadow:0 8px 32px rgba(0,0,0,0.18);transform:translateY(16px);animation:slotSlideIn 0.3s cubic-bezier(0.22,1,0.36,1) forwards;-webkit-overflow-scrolling:touch;will-change:scroll-position;overscroll-behavior:contain}
@keyframes slotSlideIn{from{transform:translateY(16px);opacity:0}to{transform:translateY(0);opacity:1}}
.slot-modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
.slot-modal-close{border:none;background:transparent;font-size:24px;line-height:1;color:var(--muted);padding:4px 8px;cursor:pointer;transition:color 0.2s}
.slot-modal-close:active{opacity:0.6}
.slot-list{display:grid;gap:10px}
.slot-loading{text-align:center;padding:24px 0;color:var(--muted);font-size:14px}
.slot-card{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px;background:var(--cream);border-radius:12px;transition:transform 0.2s,opacity 0.2s}
.slot-card:active{transform:scale(0.98);opacity:0.88}
.slot-card.empty{opacity:0.5}
.slot-card-info{flex:1;min-width:0}
.slot-card-num{font-size:13px;font-weight:600;color:var(--olive);letter-spacing:0.05em}
.slot-card-time{font-size:13px;color:var(--ink);font-weight:500;margin-top:2px}
.slot-card-meta{display:flex;gap:10px;margin-top:2px;font-size:11px;color:var(--muted)}
.slot-card-empty{font-size:13px;color:var(--muted);margin-top:2px}
.slot-card-actions{display:flex;gap:6px;flex-shrink:0}
.slot-btn{min-height:36px;padding:6px 14px;font-size:13px;border-radius:6px}
.slot-btn-del{background:transparent;color:var(--terra);border:1px solid var(--terra)}
.slot-btn-del:active{background:var(--terra);color:#fff}

/* ============================================================
   预约管理样式（bk-*）
   ============================================================ */
.bk-stats-card{margin-top:16px}
.bk-stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:12px}
.bk-stat-item{text-align:center;padding:12px 8px;background:var(--cream);border-radius:var(--radius)}
.bk-stat-num{font-family:"Noto Serif SC",Georgia,serif;font-size:24px;font-weight:600;color:var(--ink);line-height:1.2}
.bk-stat-label{font-size:11px;color:var(--muted);margin-top:4px;letter-spacing:0.05em}
.bk-type-bars{margin-top:16px}
.bk-type-bar{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.bk-type-bar-label{font-size:12px;color:var(--ink);min-width:70px}
.bk-type-bar-track{flex:1;height:8px;background:var(--cream);border-radius:4px;overflow:hidden}
.bk-type-bar-fill{height:100%;border-radius:4px;transition:width 0.4s ease}
.bk-type-bar-count{font-size:12px;color:var(--muted);min-width:30px;text-align:right}
.bk-toolbar{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap}
.bk-search{flex:1;min-width:140px;padding:10px 14px;border:1px solid var(--line);border-radius:var(--radius);font-size:14px;background:var(--paper)}
.bk-search:focus{border-color:var(--olive);outline:none}
.bk-filter{padding:10px 14px;border:1px solid var(--line);border-radius:var(--radius);font-size:13px;background:var(--paper)}
.bk-list{display:grid;gap:12px}
.bk-item{background:var(--paper);border-radius:var(--radius);padding:16px}
.bk-item-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.bk-item-name{font-size:15px;font-weight:600;color:var(--ink)}
.bk-item-meta{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-bottom:6px}
.bk-item-info{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.bk-item-notes{font-size:13px;color:var(--ink);margin-top:8px;padding:8px 12px;background:var(--cream);border-radius:6px;line-height:1.5}
.bk-item-actions{display:flex;gap:8px;margin-top:12px}
.bk-item-actions .btn.mini{padding:6px 12px;font-size:12px}
.bk-item-actions .btn.danger{background:var(--terra);color:#fff}
.bk-empty{text-align:center;padding:40px 20px;color:var(--muted);font-size:14px}
.bk-status-tag{display:inline-block;padding:2px 10px;border-radius:6px;font-size:11px;font-weight:500}
.bk-status-pending{background:#FFF4E6;color:#E8912B}
.bk-status-confirmed{background:#E8F0E0;color:var(--olive)}
.bk-status-completed{background:#E8F4FE;color:#2D8BDC}
.bk-status-cancelled{background:#FBEAEA;color:var(--terra)}
.bk-modal{position:fixed;inset:0;z-index:90;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity 0.25s ease}
.bk-modal.active{opacity:1}
.bk-modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,0.45)}
.bk-modal-panel{position:relative;width:100%;max-width:480px;max-height:90vh;overflow-y:auto;background:var(--bg);border-radius:var(--radius-lg);padding:24px 20px;z-index:2;transform:translateY(20px);transition:transform 0.25s ease}
.bk-modal.active .bk-modal-panel{transform:translateY(0)}
.bk-modal-sm{max-width:320px}
.bk-modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.bk-modal-close{width:32px;height:32px;border:none;border-radius:999px;background:var(--cream);font-size:20px;color:var(--ink);cursor:pointer;display:grid;place-items:center}
.bk-form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}
.bk-status-list{display:grid;gap:10px}
.bk-status-btn{text-align:center;padding:12px}

/* ============================================================
   档期管理增强样式（sch-*）
   ============================================================ */
.sch-stats-card{margin-top:16px}
.sch-stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.sch-stat-item{text-align:center;padding:12px 6px;background:var(--cream);border-radius:var(--radius)}
.sch-stat-num{font-family:"Noto Serif SC",Georgia,serif;font-size:22px;font-weight:600;color:var(--ink);line-height:1.2}
.sch-stat-label{font-size:10px;color:var(--muted);margin-top:4px;letter-spacing:0.05em}
.sch-type-bars{margin-top:16px}
.sch-type-bar{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.sch-type-bar-label{font-size:12px;color:var(--ink);min-width:70px}
.sch-type-bar-track{flex:1;height:8px;background:var(--cream);border-radius:4px;overflow:hidden}
.sch-type-bar-fill{height:100%;border-radius:4px;transition:width 0.4s ease}
.sch-type-bar-count{font-size:12px;color:var(--muted);min-width:30px;text-align:right}

/* 档期管理 - 竖屏布局（日历上方 + 详情下方） */
.sch-cal-section{display:block}
.sch-cal-section .cal-wrap{margin-bottom:16px}
.sch-admin-grid .cal-day{min-height:64px;padding:4px}
.sch-admin-grid .cal-day .cal-lunar{font-size:8px}
.sch-cal-events{margin-top:2px;display:flex;flex-direction:column;gap:1px}
.sch-cal-event{font-size:8px;padding:1px 4px;border-radius:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}
.sch-cal-event-more{font-size:8px;color:var(--muted);padding:0 4px}
.sch-selected{border:2px solid var(--olive)!important;background:var(--cream)!important}
.sch-leg-dot-event{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--terra);margin-right:4px;vertical-align:middle}

/* 档期管理 - 日期详情面板（竖屏在日历下方） */
.sch-cal-detail{background:var(--paper);border-radius:var(--radius-lg);padding:20px;min-height:120px}

/* 档期管理 - 点击日期弹窗（全屏铺满） */
.sch-day-modal{position:fixed;top:0;left:0;width:100%;height:100%;z-index:9999;display:none;align-items:stretch;justify-content:center}
.sch-day-modal.active{display:flex}
.sch-day-backdrop{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);opacity:0;transition:opacity .25s}
.sch-day-modal.active .sch-day-backdrop{opacity:1}
.sch-day-panel{position:relative;width:100%;max-width:480px;height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;background:var(--bg);padding:0 0 calc(20px + var(--safe-bottom));transform:translateY(100%);transition:transform .3s cubic-bezier(0.22,1,0.36,1)}
.sch-day-modal.active .sch-day-panel{transform:translateY(0)}
.sch-day-panel-inner{padding:0 20px}
.sch-day-close{position:absolute;top:14px;right:16px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;font-size:22px;color:var(--muted);background:rgba(255,255,255,.8);border-radius:50%;z-index:2;backdrop-filter:blur(8px)}
.sch-day-close:active{background:var(--cream);color:var(--terra)}
.sch-day-header{background:var(--paper);padding:56px 20px 20px;margin:0 -20px 16px;border-bottom:1px solid var(--line)}
.sch-day-date{font-family:"Noto Serif SC",Georgia,serif;font-size:32px;font-weight:600;color:var(--ink)}
.sch-day-sub{font-size:13px;color:var(--muted);margin-top:4px}
.sch-day-avail-row{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;background:var(--paper);border-radius:var(--radius);margin-bottom:16px}
.sch-day-avail-label{font-size:15px;font-weight:500;color:var(--ink)}
.sch-day-avail-btn{padding:10px 20px;border-radius:999px;font-size:14px;font-weight:600;border:none;cursor:pointer}
.sch-day-avail-btn.on{background:var(--olive);color:#fff}
.sch-day-avail-btn.off{background:var(--paper);color:var(--olive);border:1px solid var(--olive)}
.sch-day-section-title{font-size:15px;font-weight:600;color:var(--ink);margin-bottom:12px;display:flex;align-items:center;justify-content:space-between}
.sch-day-bookings{margin-bottom:20px}
.sch-day-booking-item{display:flex;gap:10px;align-items:flex-start;padding:12px 0;border-bottom:1px solid var(--line)}
.sch-day-booking-item:last-child{border-bottom:none}
.sch-day-booking-bar{width:3px;height:36px;border-radius:2px;flex-shrink:0;margin-top:2px}
.sch-day-booking-info{flex:1;min-width:0}
.sch-day-booking-name{font-size:14px;font-weight:500;color:var(--ink)}
.sch-day-booking-meta{font-size:12px;color:var(--muted);margin-top:3px}
.sch-day-form{margin-top:8px;background:var(--paper);padding:16px;border-radius:var(--radius-lg)}
.sch-day-form .field{margin-bottom:12px}
.sch-day-form .bk-form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}
.sch-detail-empty{text-align:center;padding:30px 16px;color:var(--muted);font-size:13px}
.sch-detail-empty-icon{font-size:32px;margin-bottom:8px;opacity:0.3}
.sch-detail-head{margin-bottom:14px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.sch-detail-date{font-family:"Noto Serif SC",Georgia,serif;font-size:28px;font-weight:600;color:var(--ink)}
.sch-detail-sub{font-size:12px;color:var(--muted);margin-top:4px}
.sch-detail-list{display:grid;gap:12px}
.sch-detail-item{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--line)}
.sch-detail-item:last-child{border-bottom:none}
.sch-detail-bar{width:3px;height:36px;border-radius:2px;flex-shrink:0;margin-top:2px}
.sch-detail-info{flex:1;min-width:0}
.sch-detail-name{font-size:14px;font-weight:500;color:var(--ink)}
.sch-detail-meta{font-size:12px;color:var(--muted);margin-top:3px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.sch-detail-pg{font-size:11px;color:var(--olive);margin-top:3px;font-weight:600}
.sch-detail-notes{font-size:12px;color:var(--ink);margin-top:6px;padding:6px 10px;background:var(--cream);border-radius:6px}

/* 移动端响应式 */
@media(max-width:480px){
  .bk-stats-grid,.sch-stats-grid{grid-template-columns:repeat(2,1fr)}
  .bk-form-row{grid-template-columns:1fr}
  .sch-day-form .bk-form-row{grid-template-columns:1fr}
  .sch-admin-grid .cal-day{min-height:56px}
  .sch-cal-event{font-size:7px}
}

/* ============================================================
   个人主页管理系统（Photographer Homepage）
   ============================================================ */

/* 摄影师选择器 */
.hp-pg-select {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  background: var(--cream);
  border-radius: var(--radius-lg);
  margin-bottom: 16px;
}
.hp-pg-select label {
  font-size: 13px;
  color: var(--muted);
  white-space: nowrap;
}
.hp-pg-select select {
  flex: 1;
  padding: 8px 12px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  font-size: 14px;
  color: var(--ink);
  background: #fff;
}

/* 仪表盘容器 */
.hp-dashboard {
  padding: 4px 0;
}

/* 个人资料卡片 */
.hp-profile-card {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 20px 16px;
  background: var(--cream);
  border-radius: var(--radius-lg);
  margin-bottom: 20px;
}
.hp-avatar {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  overflow: hidden;
  flex-shrink: 0;
  background: var(--olive-light);
}
.hp-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.hp-avatar-placeholder {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  font-weight: 700;
  color: #fff;
  background: var(--olive);
}
.hp-profile-info {
  flex: 1;
  min-width: 0;
}
.hp-profile-name {
  font-size: 18px;
  font-weight: 700;
  color: var(--ink);
  font-family: 'Noto Serif SC', serif;
}
.hp-profile-role {
  font-size: 13px;
  color: var(--olive);
  margin-top: 2px;
}
.hp-profile-intro {
  font-size: 12px;
  color: var(--muted);
  margin-top: 6px;
  line-height: 1.5;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}

/* 统计数据 */
.hp-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  margin-bottom: 20px;
}
.hp-stat-item {
  text-align: center;
  padding: 16px 4px;
  background: #fff;
  border-radius: var(--radius);
}
.hp-stat-num {
  font-size: 24px;
  font-weight: 700;
  color: var(--olive);
  font-family: 'Noto Serif SC', serif;
}
.hp-stat-label {
  font-size: 11px;
  color: var(--muted);
  margin-top: 4px;
  letter-spacing: 0.04em;
}

/* 操作按钮 */
.hp-actions {
  display: flex;
  gap: 10px;
  margin-bottom: 8px;
}
.hp-actions .btn {
  flex: 1;
}

/* 菜单网格 */
.hp-menu-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  margin-top: 10px;
}
.hp-menu-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 16px 4px;
  background: #fff;
  border-radius: var(--radius);
  text-decoration: none;
  transition: transform 0.15s ease, background 0.15s ease;
  cursor: pointer;
}
.hp-menu-item:active {
  transform: scale(0.95);
  background: var(--cream);
}
.hp-menu-icon {
  font-size: 26px;
  line-height: 1;
}
.hp-menu-text {
  font-size: 11px;
  color: var(--ink);
  text-align: center;
  letter-spacing: 0.02em;
}

/* 头像上传区 */
.hp-avatar-upload {
  width: 100px;
  height: 100px;
  border-radius: 50%;
  overflow: hidden;
  margin: 8px 0;
  background: var(--cream);
  border: 2px dashed var(--line);
}
.hp-avatar-upload img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.hp-avatar-upload .hp-avatar-placeholder {
  font-size: 32px;
}

/* 背景头图管理 */
.hp-header-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
  margin: 12px 0;
}
.hp-header-item {
  position: relative;
  border-radius: var(--radius);
  overflow: hidden;
  aspect-ratio: 4/3;
  background: var(--cream);
}
.hp-header-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.hp-header-del {
  position: absolute;
  top: 6px;
  right: 6px;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  border: none;
  background: rgba(0, 0, 0, 0.5);
  color: #fff;
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s ease;
}
.hp-header-del:active {
  background: var(--terra);
}

/* 精选排序 */
.hp-sort-section {
  margin-bottom: 24px;
}
.hp-sort-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 8px;
}
.hp-sort-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  background: #fff;
  border-radius: var(--radius);
  border: 1px solid var(--line);
  transition: border-color 0.15s ease;
}
.hp-sort-item.active {
  border-color: var(--olive);
  background: rgba(90, 107, 60, 0.04);
}
.hp-sort-thumb {
  width: 44px;
  height: 44px;
  border-radius: 6px;
  object-fit: cover;
  flex-shrink: 0;
}
.hp-sort-noimg {
  width: 44px;
  height: 44px;
  border-radius: 6px;
  background: var(--cream);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
  flex-shrink: 0;
}
.hp-sort-name {
  flex: 1;
  min-width: 0;
  font-size: 13px;
  color: var(--ink);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.hp-sort-toggle {
  flex-shrink: 0;
  font-size: 12px;
  padding: 6px 12px;
  white-space: nowrap;
}

/* 问题留言 */
.hp-feedback-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-top: 12px;
}
.hp-feedback-item {
  padding: 14px 16px;
  background: #fff;
  border-radius: var(--radius);
  border: 1px solid var(--line);
}
.hp-feedback-meta {
  font-size: 12px;
  color: var(--muted);
  margin-bottom: 6px;
}
.hp-feedback-item p {
  font-size: 14px;
  color: var(--ink);
  line-height: 1.6;
  margin: 0 0 8px 0;
}
.hp-feedback-del {
  font-size: 12px;
  padding: 4px 12px;
  color: var(--terra);
}

/* 移动端响应式 */
@media(max-width:480px){
  .hp-menu-grid{grid-template-columns:repeat(4,1fr);gap:6px}
  .hp-menu-item{padding:12px 2px}
  .hp-menu-icon{font-size:22px}
  .hp-menu-text{font-size:10px}
  .hp-stats{gap:6px}
  .hp-stat-item{padding:12px 2px}
  .hp-stat-num{font-size:20px}
  .hp-header-grid{gap:8px}
  .hp-profile-card{padding:16px 12px;gap:12px}
  .hp-avatar{width:56px;height:56px}
  .hp-profile-name{font-size:16px}
}

/* ============================================================
   作品 & 合集管理（Works & Collections）
   ============================================================ */

/* 工具栏 */
.wk-toolbar {
  margin: 12px 0 16px;
}

/* 作品/合集网格 */
.wk-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
}

/* 作品卡片 */
.wk-card {
  position: relative;
  border-radius: var(--radius);
  overflow: hidden;
  background: #fff;
}
.wk-card-body {
  display: block;
  text-decoration: none;
  transition: transform 0.15s ease;
  cursor: pointer;
}
.wk-card-body:active {
  transform: scale(0.97);
}
.wk-card-del {
  position: absolute;
  top: 6px;
  left: 6px;
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(212, 90, 58, 0.85);
  color: #fff;
  border: none;
  font-size: 11px;
  line-height: 1.4;
  cursor: pointer;
  z-index: 2;
  transition: background 0.15s ease, transform 0.15s ease;
  -webkit-tap-highlight-color: transparent;
}
.wk-card-del:active,
.wk-card-del.confirming {
  transform: none !important;
  background: rgba(180, 60, 40, 0.95);
}
.wk-card-del.confirming {
  background: rgba(212, 90, 58, 0.95);
  animation: none;
}
.wk-card-cover {
  position: relative;
  aspect-ratio: 1;
  background: var(--cream);
  overflow: hidden;
}
.wk-card-cover img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.wk-card-noimg {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 32px;
  color: var(--muted);
}
.wk-card-type {
  position: absolute;
  top: 6px;
  right: 6px;
  font-size: 16px;
  background: rgba(0,0,0,0.4);
  border-radius: 50%;
  width: 24px;
  height: 24px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.wk-card-title {
  font-size: 13px;
  color: var(--ink);
  padding: 8px 10px 2px;
  font-weight: 500;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.wk-card-meta {
  font-size: 11px;
  color: var(--muted);
  padding: 0 10px 8px;
}

/* 合集卡片 */
.col-card {
  display: block;
  text-decoration: none;
  border-radius: var(--radius);
  overflow: hidden;
  background: #fff;
  transition: transform 0.15s ease;
}
.col-card:active {
  transform: scale(0.97);
}
.col-card-cover {
  aspect-ratio: 4/3;
  background: var(--cream);
  overflow: hidden;
}
.col-card-cover img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.col-card-noimg {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 32px;
  color: var(--muted);
}
.col-card-title {
  font-size: 13px;
  color: var(--ink);
  padding: 8px 10px 2px;
  font-weight: 500;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.col-card-meta {
  font-size: 11px;
  color: var(--muted);
  padding: 0 10px 8px;
}

/* 类型切换标签 */
.wk-type-tabs {
  display: flex;
  gap: 8px;
}
.wk-type-tab {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 10px 8px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  font-size: 13px;
  color: var(--muted);
  cursor: pointer;
  transition: all 0.15s ease;
}
.wk-type-tab.active {
  border-color: var(--olive);
  color: var(--olive);
  background: rgba(90, 107, 60, 0.06);
  font-weight: 600;
}

/* 上传区 */
.wk-upload-area {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 10px;
}

/* 图片预览列表 */
.wk-img-list {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
}
.wk-img-preview {
  position: relative;
  aspect-ratio: 1;
  border-radius: 6px;
  overflow: hidden;
  background: var(--cream);
}
.wk-img-preview img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.wk-img-del {
  position: absolute;
  top: 3px;
  right: 3px;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  border: none;
  background: rgba(0,0,0,0.5);
  color: #fff;
  font-size: 14px;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
}

.wk-img-cover-btn {
  position: absolute;
  bottom: 4px;
  left: 4px;
  right: 4px;
  padding: 4px 6px;
  border: none;
  border-radius: 4px;
  background: rgba(0,0,0,0.55);
  color: #fff;
  font-size: 11px;
  font-weight: 600;
  cursor: pointer;
  line-height: 1.2;
}

.wk-img-preview.is-cover::after {
  content: "";
  position: absolute;
  inset: 0;
  border: 2px solid var(--olive);
  border-radius: 6px;
  pointer-events: none;
}

.wk-img-preview.is-cover .wk-img-cover-btn {
  background: var(--olive);
}

/* 封面预览 */
.wk-cover-preview,
.col-cover-preview {
  width: 100%;
  aspect-ratio: 4/3;
  border-radius: var(--radius);
  overflow: hidden;
  background: var(--cream);
  margin-bottom: 8px;
}
.wk-cover-preview img,
.col-cover-preview img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.wk-cover-preview .wk-card-noimg,
.col-cover-preview .col-card-noimg {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 36px;
  color: var(--muted);
  height: 100%;
}
.wk-cover-ratio {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
  font-size: 14px;
  color: var(--ink);
}
.wk-cover-ratio select {
  padding: 6px 10px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: #fff;
  font-size: 14px;
}

/* 表单操作按钮 */
.wk-form-actions {
  display: flex;
  gap: 8px;
  margin-top: 16px;
  flex-wrap: wrap;
}
.wk-form-actions .btn {
  flex: 1;
  min-width: 80px;
}

/* 合集内作品管理 */
.col-works-section {
  margin-top: 20px;
  border-top: 1px solid var(--line);
  padding-top: 16px;
}
.col-work-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 8px;
}
.col-work-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  background: #fff;
  border-radius: var(--radius);
  border: 1px solid var(--line);
}
.col-work-thumb {
  width: 40px;
  height: 40px;
  border-radius: 6px;
  object-fit: cover;
  flex-shrink: 0;
}
.col-work-noimg {
  width: 40px;
  height: 40px;
  border-radius: 6px;
  background: var(--cream);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  flex-shrink: 0;
}
.col-work-name {
  flex: 1;
  min-width: 0;
  font-size: 13px;
  color: var(--ink);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* 移动端响应式 */
@media(max-width:480px){
  .wk-grid{grid-template-columns:repeat(2,1fr);gap:8px}
  .wk-img-list{grid-template-columns:repeat(3,1fr);gap:4px}
  .wk-type-tab{font-size:12px;padding:8px 4px}
  .col-work-item{padding:6px 8px}
  .svc-price-range{flex-direction:column;gap:0}
}

/* ============================================================
   服务管理（Services）
   ============================================================ */

/* 服务卡片 */
.svc-card {
  display: flex;
  flex-direction: column;
  border-radius: var(--radius);
  overflow: hidden;
  background: #fff;
}
.svc-card-main {
  display: block;
  text-decoration: none;
  color: inherit;
  flex: 1;
  transition: transform 0.15s ease;
}
.svc-card-main:active {
  transform: scale(0.97);
}
.svc-featured-btn {
  width: 100%;
  border: none;
  border-top: 1px solid var(--line, #e8e0d4);
  background: var(--cream, #f5f2ec);
  color: var(--muted, #8a7d6e);
  font-size: 12px;
  padding: 8px;
  cursor: pointer;
  font-weight: 600;
  transition: background 0.2s ease, color 0.2s ease;
}
.svc-featured-btn.active {
  background: rgba(212, 90, 58, 0.1);
  color: var(--terra, #d45a3a);
}
.svc-card-cover {
  position: relative;
  aspect-ratio: 4/3;
  background: var(--cream);
  overflow: hidden;
}
.svc-card-cover img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.svc-card-title {
  font-size: 13px;
  color: var(--ink);
  padding: 8px 10px 2px;
  font-weight: 500;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.svc-card-meta {
  font-size: 11px;
  color: var(--olive);
  padding: 0 10px 8px;
  font-weight: 600;
}

/* 上架/下架状态标签 */
.svc-status {
  position: absolute;
  top: 6px;
  left: 6px;
  font-size: 10px;
  padding: 2px 8px;
  border-radius: 20px;
  font-weight: 600;
  letter-spacing: 0.5px;
}
.svc-status.online {
  background: rgba(90, 107, 60, 0.85);
  color: #fff;
}
.svc-status.offline {
  background: rgba(0, 0, 0, 0.5);
  color: #fff;
}

/* 价格区间输入 */
.svc-price-range {
  display: flex;
  gap: 12px;
}
.svc-price-range > * {
  flex: 1;
  min-width: 0;
}

/* ============================================================
   摄影师个人展示板块 · 前台公共主页（全屏沉浸式独立布局）
   ============================================================ */

/* ===== 全屏容器 ===== */
.pg-shell {
  position: relative;
  width: 100%;
  max-width: 480px;
  min-height: 100vh;
  margin: 0 auto;
  background: var(--cream, #f5f2ec);
  display: flex;
  flex-direction: column;
  overflow: visible;
}

/* ===== 沉浸式头图 ===== */
.pg-header {
  position: relative;
  width: 100%;
  height: 380px;
  overflow: hidden;
  flex-shrink: 0;
}
.pg-header-bg {
  position: absolute;
  inset: 0;
}
.pg-header-slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity 0.8s ease;
}
.pg-header-slide.active {
  opacity: 1;
}
.pg-header-slide img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.pg-header-placeholder {
  width: 100%;
  height: 100%;
  background: linear-gradient(135deg, var(--olive, #5a6b3c) 0%, var(--olive-light, #7a8b5c) 100%);
}
.pg-header-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(0,0,0,0.15) 0%,
    rgba(0,0,0,0.25) 40%,
    rgba(0,0,0,0.55) 75%,
    rgba(0,0,0,0.75) 100%
  );
  z-index: 1;
}

/* 返回按钮 */
.pg-back-btn {
  position: absolute;
  top: 16px;
  left: 16px;
  z-index: 5;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: rgba(0,0,0,0.3);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  text-decoration: none;
  transition: background 0.2s ease;
}
.pg-back-btn:active {
  background: rgba(0,0,0,0.5);
}

/* 轮播指示点 */
.pg-header-dots {
  position: absolute;
  top: 24px;
  right: 16px;
  display: flex;
  gap: 5px;
  z-index: 3;
}
.pg-header-dot {
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: rgba(255,255,255,0.4);
  cursor: pointer;
  transition: all 0.3s ease;
}
.pg-header-dot.active {
  background: #fff;
  width: 16px;
  border-radius: 3px;
}

/* 个人信息叠加层 */
.pg-header-info {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 0 20px 24px;
  z-index: 2;
  color: #fff;
}
.pg-header-avatar {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  overflow: hidden;
  border: 3px solid rgba(255,255,255,0.8);
  box-shadow: 0 2px 12px rgba(0,0,0,0.3);
  margin-bottom: 12px;
  background: rgba(255,255,255,0.1);
}
.pg-header-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.pg-header-avatar-placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 26px;
  font-weight: 700;
  color: rgba(255,255,255,0.8);
}
.pg-header-name {
  font-family: var(--serif);
  font-size: 24px;
  font-weight: 700;
  margin: 0 0 8px;
  text-shadow: 0 1px 4px rgba(0,0,0,0.3);
}
.pg-header-role {
  display: flex;
  gap: 8px;
  margin-bottom: 8px;
}
.pg-header-role-tag {
  font-size: 11px;
  padding: 2px 10px;
  border-radius: 20px;
  background: rgba(255,255,255,0.2);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  letter-spacing: 0.5px;
}
.pg-header-intro {
  font-size: 13px;
  line-height: 1.6;
  margin: 0 0 10px;
  opacity: 0.9;
  max-width: 280px;
}
.pg-header-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 12px;
}
.pg-header-tag {
  font-size: 10px;
  padding: 2px 8px;
  border-radius: 4px;
  background: rgba(255,255,255,0.15);
  letter-spacing: 0.3px;
}
.pg-header-stats {
  display: flex;
  align-items: baseline;
  gap: 4px;
  margin-bottom: 14px;
}
.pg-header-stat-num {
  font-size: 28px;
  font-weight: 800;
  font-family: "DIN Alternate", "Helvetica Neue", sans-serif;
}
.pg-header-stat-label {
  font-size: 13px;
  opacity: 0.8;
}
.pg-header-actions {
  display: flex;
  gap: 10px;
}
.pg-header-contact {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 20px;
  border-radius: 24px;
  border: 1.5px solid rgba(255,255,255,0.6);
  color: #fff;
  text-decoration: none;
  font-size: 14px;
  font-weight: 500;
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  background: rgba(255,255,255,0.1);
  transition: all 0.2s ease;
}
.pg-header-contact:active {
  background: rgba(255,255,255,0.25);
}

/* ===== 内容区 ===== */
.pg-content {
  flex: 1;
  overflow: visible;
  padding-bottom: 80px;
  scroll-margin-top: 0;
}

/* 通用 section */
.pg-section {
  padding: 20px 16px 0;
}
.pg-section-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 14px;
}
.pg-section-title {
  font-family: var(--serif);
  font-size: 18px;
  font-weight: 600;
  color: var(--ink, #2a2a2a);
  margin: 0;
}
.pg-section-more {
  font-size: 13px;
  color: var(--muted, #999);
  text-decoration: none;
  cursor: pointer;
}

/* ===== 精选合集 - 横向滑动 ===== */
.pg-col-scroll {
  display: flex;
  gap: 12px;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory;
  padding: 2px 0 4px;
  margin: 0 -16px;
  padding-left: 16px;
  padding-right: 16px;
}
.pg-col-card {
  flex-shrink: 0;
  width: 140px;
  scroll-snap-align: start;
  cursor: pointer;
  border-radius: var(--radius, 8px);
  overflow: hidden;
  background: #fff;
  box-shadow: 0 1px 4px rgba(0,0,0,0.06);
}
.pg-col-cover {
  width: 100%;
  aspect-ratio: 4/5;
  overflow: hidden;
  background: var(--cream, #f5f2ec);
}
.pg-col-cover img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.3s ease;
}
.pg-col-card:active .pg-col-cover img {
  transform: scale(0.97);
}
.pg-col-noimg {
  width: 100%;
  aspect-ratio: 4/5;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 32px;
  color: var(--muted, #999);
  background: var(--cream, #f5f2ec);
}
.pg-col-info {
  padding: 8px 10px;
}
.pg-col-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--ink, #2a2a2a);
  margin-bottom: 2px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.pg-col-meta {
  font-size: 11px;
  color: var(--muted, #999);
}

/* ===== 作品网格 ===== */
.pg-works-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 8px;
}
.pg-works-grid-full {
  grid-template-columns: repeat(2, 1fr);
}
.pg-work-card {
  position: relative;
  border-radius: var(--radius, 8px);
  overflow: hidden;
  cursor: pointer;
  background: var(--cream, #f5f2ec);
  aspect-ratio: 1;
  box-shadow: 0 1px 4px rgba(0,0,0,0.05);
}
.pg-work-card img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.3s ease;
}
.pg-work-card:active img {
  transform: scale(0.97);
}
.pg-work-noimg {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 32px;
  color: var(--muted, #999);
}
.pg-work-type {
  position: absolute;
  top: 6px;
  right: 6px;
  font-size: 12px;
  background: rgba(0,0,0,0.45);
  border-radius: 50%;
  width: 22px;
  height: 22px;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1;
}
.pg-work-count {
  position: absolute;
  top: 6px;
  left: 6px;
  font-size: 10px;
  color: #fff;
  background: rgba(0,0,0,0.45);
  border-radius: 4px;
  padding: 2px 6px;
  z-index: 1;
}
.pg-work-title {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 6px 8px;
  font-size: 11px;
  color: #fff;
  background: linear-gradient(transparent, rgba(0,0,0,0.65));
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ===== 精选服务 ===== */
.pg-svc-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.pg-svc-card {
  display: flex;
  gap: 12px;
  background: #fff;
  border-radius: var(--radius, 8px);
  overflow: hidden;
  padding: 12px;
  box-shadow: 0 1px 4px rgba(0,0,0,0.05);
}
.pg-svc-cover {
  width: 80px;
  height: 80px;
  border-radius: var(--radius, 8px);
  overflow: hidden;
  flex-shrink: 0;
}
.pg-svc-cover img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.pg-svc-info {
  flex: 1;
  min-width: 0;
}
.pg-svc-name {
  font-size: 15px;
  font-weight: 600;
  color: var(--ink, #2a2a2a);
  margin-bottom: 4px;
}
.pg-svc-desc {
  font-size: 12px;
  color: var(--muted, #999);
  line-height: 1.5;
  margin: 0 0 6px;
}
.pg-svc-price {
  font-size: 16px;
  color: var(--terra, #d45a3a);
  font-weight: 700;
  margin-bottom: 4px;
}
.pg-svc-meta {
  font-size: 11px;
  color: var(--muted, #999);
}

/* ===== 合集筛选条 ===== */
.pg-filter-bar {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-x: contain;
  padding: 12px 16px;
  margin: 0 -16px;
  border-bottom: 1px solid rgba(0,0,0,0.05);
}
.pg-filter-chip {
  flex-shrink: 0;
  font-size: 13px;
  padding: 6px 16px;
  border-radius: 20px;
  background: #fff;
  color: var(--muted, #999);
  text-decoration: none;
  cursor: pointer;
  border: 1px solid transparent;
  transition: all 0.2s ease;
}
.pg-filter-chip.active {
  background: var(--olive, #5a6b3c);
  color: #fff;
}

/* ===== 关于 Tab ===== */
.pg-bio {
  font-size: 14px;
  color: var(--ink, #2a2a2a);
  line-height: 1.8;
  background: #fff;
  border-radius: var(--radius, 8px);
  padding: 16px;
}
.pg-bio p {
  margin: 0 0 8px;
}
.pg-bio p:last-child {
  margin-bottom: 0;
}
/* ===== 联系方式 ===== */
.pg-contact-card {
  background: #fff;
  border-radius: var(--radius, 8px);
  padding: 16px;
  box-shadow: 0 1px 4px rgba(0,0,0,0.05);
}
.pg-contact-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 0;
  border-bottom: 1px solid var(--cream, #f5f2ec);
  text-decoration: none;
  color: var(--ink, #2a2a2a);
  cursor: pointer;
}
.pg-contact-row:last-of-type {
  border-bottom: none;
}
.pg-contact-icon {
  font-size: 18px;
}
.pg-contact-label {
  font-size: 13px;
  color: var(--muted, #999);
  width: 40px;
}
.pg-contact-value {
  flex: 1;
  font-size: 14px;
  color: var(--ink, #2a2a2a);
}
.pg-contact-copy {
  font-size: 11px;
  color: var(--olive, #5a6b3c);
  padding: 2px 8px;
  border: 1px solid var(--olive, #5a6b3c);
  border-radius: 4px;
}
.pg-contact-actions {
  display: flex;
  gap: 10px;
  margin-top: 14px;
}

/* 通用按钮 */
.pg-btn {
  flex: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 10px 16px;
  border-radius: var(--radius, 8px);
  font-size: 14px;
  font-weight: 500;
  text-decoration: none;
  border: none;
  cursor: pointer;
  transition: opacity 0.2s ease;
}
.pg-btn:active {
  opacity: 0.8;
}
.pg-btn-primary {
  background: var(--olive, #5a6b3c);
  color: #fff;
}
.pg-btn-dark {
  background: var(--ink, #2a2a2a);
  color: #fff;
}



/* ===== 摄影师主页动效（复用原有 pageEnter 动画）===== */
.pg-shell.page-enter {
  animation: pageEnter 0.35s cubic-bezier(0.22, 1, 0.36, 1) both;
}

/* 内容区 section 入场动画 */
.pg-section {
  animation: pgSectionEnter 0.4s cubic-bezier(0.22, 1, 0.36, 1) both;
  animation-delay: var(--pg-delay, 0s);
}

@keyframes pgSectionEnter {
  from { opacity: 0; transform: translateY(12px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Tab 切换内容渐入 */
.pg-content > * {
  animation: pgContentFade 0.3s cubic-bezier(0.22, 1, 0.36, 1) both;
}

@keyframes pgContentFade {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* 卡片按压效果（复用原有 .scroll-row > *:active 风格）*/
.pg-col-sq:active,
.pg-works-grid > *:active,
.pg-svc-grid-card:active {
  transform: translateZ(0) scale(0.97);
  transition: transform 0.25s cubic-bezier(0.22, 1, 0.36, 1);
}

/* Tab 栏切换动画 */
.pg-tab {
  transition: color 0.2s ease, transform 0.2s cubic-bezier(0.22, 1, 0.36, 1);
}

.pg-tab:active {
  transform: scale(0.92);
}

.pg-tab.active {
  transform: scale(1);
}

/* ===== 底部 Tab 栏 ===== */
.pg-tabbar {
  position: fixed;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 100%;
  max-width: 480px;
  display: flex;
  background: #fff;
  box-shadow: 0 -1px 8px rgba(0,0,0,0.06);
  z-index: 100;
  padding-bottom: var(--safe-bottom, env(safe-area-inset-bottom, 0px));
  box-sizing: border-box;
}
.pg-tab {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  padding: 8px 0;
  text-decoration: none;
  color: var(--muted, #999);
  font-size: 11px;
  cursor: pointer;
  transition: color 0.2s ease;
}
.pg-tab.active {
  color: var(--olive, #5a6b3c);
  font-weight: 600;
}
.pg-tab svg {
  transition: all 0.2s ease;
}
.pg-tab.active svg {
  stroke-width: 2.5;
}

/* ===== 空状态 ===== */
.pg-empty {
  text-align: center;
  padding: 60px 20px;
  color: var(--muted, #999);
  font-size: 14px;
}

/* ===== 留言弹窗 / 合集弹窗 ===== */
.pg-feedback-modal {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.5);
  z-index: 9999;
  align-items: center;
  justify-content: center;
  padding: 20px;
}
.pg-feedback-card,
.pg-col-modal-card {
  background: #fff;
  border-radius: var(--radius-lg, 16px);
  width: 100%;
  max-width: 360px;
  overflow: hidden;
  max-height: 80vh;
  display: flex;
  flex-direction: column;
}
.pg-col-modal-card {
  max-width: 340px;
}
.pg-feedback-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 20px;
  border-bottom: 1px solid var(--cream, #f5f2ec);
  font-size: 15px;
  font-weight: 600;
  color: var(--ink, #2a2a2a);
  flex-shrink: 0;
}
.pg-feedback-close {
  background: none;
  border: none;
  font-size: 24px;
  color: var(--muted, #999);
  cursor: pointer;
  padding: 0;
  line-height: 1;
}
.pg-feedback-card form {
  padding: 20px;
}
.pg-field {
  margin-bottom: 16px;
}
.pg-field label {
  display: block;
  font-size: 13px;
  color: var(--muted, #999);
  margin-bottom: 6px;
}
.pg-field input,
.pg-field textarea {
  width: 100%;
  padding: 10px 12px;
  border: 1px solid rgba(0,0,0,0.1);
  border-radius: var(--radius, 8px);
  font-size: 14px;
  font-family: inherit;
  color: var(--ink, #2a2a2a);
  background: var(--cream, #f5f2ec);
  outline: none;
  box-sizing: border-box;
}
.pg-field input:focus,
.pg-field textarea:focus {
  border-color: var(--olive, #5a6b3c);
}
.pg-col-modal-desc {
  padding: 12px 20px;
  font-size: 13px;
  color: var(--muted, #999);
  line-height: 1.5;
  margin: 0;
}
.pg-col-modal-works {
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding: 12px 16px 20px;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 8px;
}

/* ===== 灯箱 ===== */
.pg-lightbox {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.92);
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
}
.pg-lightbox-inner {
  position: relative;
  max-width: 100%;
  max-height: 100%;
}
.pg-lightbox-close {
  position: absolute;
  top: -36px;
  right: 0;
  background: none;
  border: none;
  font-size: 28px;
  color: #fff;
  cursor: pointer;
  padding: 0;
}
.pg-lightbox-img {
  max-width: 90vw;
  max-height: 70vh;
}
.pg-lightbox-img img {
  max-width: 100%;
  max-height: 70vh;
  object-fit: contain;
}
.pg-lightbox-nav {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 20px;
  margin-top: 16px;
}
.pg-lightbox-prev,
.pg-lightbox-next {
  background: rgba(255,255,255,0.2);
  border: none;
  color: #fff;
  font-size: 24px;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
}
.pg-lightbox-count {
  color: #fff;
  font-size: 14px;
}

/* ===== 作品详情视图（画布内容展示）===== */
.pg-lightbox-content {
  background: var(--cream, #f5f2ec);
  border-radius: 16px 16px 0 0;
  max-width: 480px;
  width: 100%;
  max-height: 85vh;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding: 20px 16px 40px;
}
.pg-work-detail-title {
  font-family: var(--serif, Georgia, serif);
  font-size: 22px;
  color: var(--ink, #2c2420);
  margin: 0 0 8px;
}
.pg-work-detail-desc {
  font-size: 14px;
  color: var(--muted, #8a7d6e);
  line-height: 1.6;
  margin: 0 0 16px;
}
.pg-work-detail-content {
  border-top: 1px solid var(--line, #e8e0d4);
  padding-top: 16px;
}
.pg-work-detail-content .art-block {
  margin-bottom: 8px;
}
.pg-work-detail-content .art-text {
  font-size: 14px;
  line-height: 1.7;
  color: var(--ink, #2c2420);
  white-space: pre-wrap;
  padding: 4px 0;
}

/* ===== 服务详情页 ===== */
.pg-sd-shell {
  background: var(--cream, #f5f2ec);
  min-height: 100vh;
}
.pg-sd-main {
  padding-bottom: calc(32px + var(--safe-bottom));
}
.pg-sd-cover {
  width: 100%;
  aspect-ratio: 4/3;
  background: var(--cream, #f5f2ec);
  overflow: hidden;
}
.pg-sd-cover img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.pg-sd-body {
  padding: 20px 16px;
  background: #fff;
}
.pg-sd-title {
  font-family: var(--serif, Georgia, serif);
  font-size: 22px;
  color: var(--ink, #2c2420);
  margin: 0 0 8px;
  line-height: 1.3;
}
.pg-sd-price {
  font-size: 20px;
  color: var(--terra, #d45a3a);
  font-weight: 700;
  margin-bottom: 12px;
}
.pg-sd-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 14px;
}
.pg-sd-tag {
  font-size: 12px;
  color: var(--olive, #5a6b3c);
  background: rgba(90, 107, 60, 0.08);
  padding: 4px 10px;
  border-radius: 20px;
}
.pg-sd-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  margin-bottom: 16px;
}
.pg-sd-meta-item {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.pg-sd-meta-label {
  font-size: 11px;
  color: var(--muted, #8a7d6e);
}
.pg-sd-meta-value {
  font-size: 14px;
  color: var(--ink, #2c2420);
  font-weight: 600;
}
.pg-sd-desc {
  font-size: 14px;
  line-height: 1.7;
  color: var(--ink, #2c2420);
  white-space: pre-wrap;
}
.pg-sd-gallery {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 8px;
  padding: 16px;
}
.pg-sd-gallery-img {
  aspect-ratio: 1;
  border-radius: var(--radius, 8px);
  overflow: hidden;
  background: var(--cream, #f5f2ec);
}
.pg-sd-gallery-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.pg-sd-contact {
  padding: 0 16px 16px;
}
.pg-sd-section-title {
  font-family: var(--serif, Georgia, serif);
  font-size: 18px;
  color: var(--ink, #2c2420);
  margin: 0 0 12px;
}
.pg-sd-actions {
  display: flex;
  gap: 12px;
  margin-top: 16px;
}
.pg-sd-actions .pg-btn {
  flex: 1;
}

/* ===== 动画 ===== */
.pg-show {
  animation: pgFadeIn 0.25s ease;
}
@keyframes pgFadeIn {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

/* ========================================
   摄影师主页改版新增样式
   ======================================== */

/* ===== 精选合集 - 4列正方形网格 ===== */
.pg-col-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
}
.pg-col-sq {
  position: relative;
  aspect-ratio: 1;
  border-radius: var(--radius, 8px);
  overflow: hidden;
  cursor: pointer;
  background: var(--cream, #f5f2ec);
  display: block;
}
.pg-col-sq img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.3s ease;
}
.pg-col-sq:active img {
  transform: scale(0.96);
}
.pg-col-sq-noimg {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  color: var(--muted, #999);
}
.pg-col-sq-mask {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 6px 4px 4px;
  background: linear-gradient(transparent, rgba(0,0,0,0.7));
}
.pg-col-sq-title {
  font-size: 10px;
  color: #fff;
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  text-align: center;
}
.pg-col-sq-meta {
  font-size: 9px;
  color: rgba(255,255,255,0.8);
  text-align: center;
}

/* ===== 精选服务 - 网格卡片 ===== */
.pg-svc-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
}
.pg-svc-grid-card {
  border-radius: var(--radius, 8px);
  overflow: hidden;
  background: #fff;
  box-shadow: 0 1px 4px rgba(0,0,0,0.05);
}
.pg-svc-grid-cover {
  width: 100%;
  aspect-ratio: 4/3;
  overflow: hidden;
  background: var(--cream, #f5f2ec);
}
.pg-svc-grid-cover img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.pg-svc-grid-noimg {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 28px;
  color: var(--muted, #999);
}
.pg-svc-grid-info {
  padding: 8px 10px 10px;
}
.pg-svc-grid-name {
  font-size: 13px;
  font-weight: 600;
  color: var(--ink, #2a2a2a);
  margin-bottom: 4px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.pg-svc-grid-price {
  font-size: 14px;
  color: var(--terra, #d45a3a);
  font-weight: 700;
}

/* ===== 合集已隐藏徽章 ===== */
.col-status {
  position: absolute;
  top: 6px;
  right: 6px;
  font-size: 10px;
  padding: 2px 6px;
  border-radius: 4px;
  z-index: 2;
}
.col-status.offline {
  background: rgba(0,0,0,0.5);
  color: #fff;
}

/* ===== 作品详情独立页 ===== */
.pg-wd-shell {
  background: var(--cream, #f5f2ec);
  overflow: visible;
}
.pg-wd-header {
  position: sticky;
  top: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  background: rgba(255,255,255,0.95);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid rgba(0,0,0,0.05);
}
.pg-wd-header .pg-back-btn {
  position: static;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--ink, #2a2a2a);
  background: none;
  box-shadow: none;
  font-size: 14px;
  padding: 4px 0;
}
.pg-wd-header .pg-back-btn span {
  font-size: 14px;
}
.pg-wd-pgname {
  font-size: 14px;
  color: var(--muted, #999);
  font-weight: 500;
}
.pg-wd-main {
  padding: 0;
  padding-bottom: 40px;
  overflow: visible;
}
.pg-wd-body {
  background: #fff;
  padding: 20px 16px;
  margin-bottom: 10px;
}
.pg-wd-title {
  font-family: var(--serif);
  font-size: 22px;
  font-weight: 700;
  color: var(--ink, #2a2a2a);
  margin: 0 0 10px;
  line-height: 1.3;
}
.pg-wd-desc {
  font-size: 14px;
  color: var(--muted, #888);
  line-height: 1.7;
  margin: 0 0 16px;
}
.pg-wd-gallery {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 16px;
}
.pg-wd-img {
  position: relative;
  width: 100%;
  border-radius: var(--radius, 8px);
  overflow: hidden;
  background: var(--cream, #f5f2ec);
}
.pg-wd-img img {
  width: 100%;
  display: block;
}
.pg-view-original {
  position: absolute;
  bottom: 12px;
  right: 12px;
  padding: 6px 12px;
  border-radius: 999px;
  background: rgba(0, 0, 0, 0.45);
  color: #fff;
  font-size: 12px;
  line-height: 1.4;
  pointer-events: none;
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  transition: opacity 0.2s ease;
}
.pg-wd-video {
  margin-top: 16px;
  border-radius: var(--radius, 8px);
  overflow: hidden;
}
.pg-wd-video video {
  width: 100%;
  display: block;
}
.pg-wd-content {
  margin-top: 16px;
}
.pg-wd-content .art-block {
  margin-bottom: 10px;
}
.pg-wd-content img {
  border-radius: var(--radius, 8px);
}

/* ===== 评论区 ===== */
.pg-wd-comments {
  background: #fff;
  padding: 20px 16px;
}
.pg-wd-comments-title {
  font-family: var(--serif);
  font-size: 17px;
  font-weight: 600;
  color: var(--ink, #2a2a2a);
  margin: 0 0 16px;
}
.pg-wd-comments-count {
  font-size: 13px;
  color: var(--muted, #999);
  font-weight: 400;
}
.pg-cmt-list {
  margin-bottom: 20px;
}
.pg-cmt-item {
  padding: 12px 0;
  border-bottom: 1px solid rgba(0,0,0,0.05);
}
.pg-cmt-item:last-child {
  border-bottom: none;
}
.pg-cmt-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 6px;
}
.pg-cmt-author {
  font-size: 14px;
  font-weight: 600;
  color: var(--ink, #2a2a2a);
}
.pg-cmt-time {
  font-size: 11px;
  color: var(--muted, #bbb);
}
.pg-cmt-text {
  font-size: 14px;
  color: var(--ink, #555);
  line-height: 1.6;
  margin: 0;
}
.pg-cmt-empty {
  text-align: center;
  padding: 30px 0;
  font-size: 13px;
  color: var(--muted, #ccc);
}
.pg-cmt-form {
  padding-top: 16px;
  border-top: 1px solid rgba(0,0,0,0.05);
}
.pg-cmt-form .pg-field {
  margin-bottom: 10px;
}
.pg-cmt-form input {
  width: 100%;
  padding: 10px 12px;
  border: 1px solid rgba(0,0,0,0.1);
  border-radius: var(--radius, 8px);
  font-size: 14px;
  background: var(--cream, #f5f2ec);
  box-sizing: border-box;
}
.pg-cmt-form textarea {
  width: 100%;
  padding: 10px 12px;
  border: 1px solid rgba(0,0,0,0.1);
  border-radius: var(--radius, 8px);
  font-size: 14px;
  background: var(--cream, #f5f2ec);
  box-sizing: border-box;
  resize: vertical;
  font-family: inherit;
}
