/* 2026-11-07: restrained reading scale, shared light palette. */
:root {
  --pub-bg: #f4f6f2;
  --pub-surface: #ffffff;
  --pub-ink: #263b30;
  --pub-muted: #5e6c61;
  --pub-accent: #3d6551;
  --pub-light: #e9eee6;
  --admin-bg: #eef2ed;
  --focus: #658b70;
  --type-display: 34px;
  --type-heading: 26px;
  --type-subheading: 20px;
  --type-body: 16px;
  --type-small: 14px;
  font-family: "Microsoft YaHei", "PingFang SC", "Noto Sans CJK SC", system-ui, sans-serif;
  font-synthesis: none;
  -webkit-font-smoothing: antialiased;
}

body { line-height: 1.65; }
button, input, select, textarea { line-height: 1.5; }
.public-site { min-height: 100svh; display: flex; flex-direction: column; font-size: var(--type-body); }
.public-site > main { flex: 1; }
.public-site h1 { font-size: var(--type-display); font-weight: 600; line-height: 1.3; letter-spacing: -.02em; }
.public-site h2 { font-size: var(--type-heading); line-height: 1.4; font-weight: 600; letter-spacing: 0; }
.public-site h3 { font-size: var(--type-subheading); line-height: 1.5; font-weight: 600; letter-spacing: 0; }
.public-header { background: #fcfdfb; padding-inline: max(28px, calc((100vw - 1160px) / 2)); }
.wordmark { font-size: 18px; font-weight: 600; letter-spacing: .03em; }
.public-nav { gap: 30px; }
.public-nav a { font-size: 15px; color: var(--pub-muted); }
.public-nav a:hover, .public-nav a[aria-current=page] { color: var(--pub-accent); }
.public-nav a[aria-current=page] { text-underline-offset: 7px; }
.solid-action, .public-site .primary-button {
  background: var(--pub-accent);
  color: #fff;
  font-size: 15px;
  font-weight: 500;
  min-height: 44px;
  padding: 0 22px;
}
.solid-action:hover, .public-site .primary-button:hover { background: #2f513f; color: #fff; transform: translateY(-1px); }
.text-action, .back-link { font-size: 14px; color: var(--pub-accent); }

.monument-hero {
  width: calc(100% - 56px);
  max-width: 1160px;
  min-height: 0;
  margin: 28px auto 0;
  padding: 40px;
  background: var(--pub-light);
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 18px;
  align-items: start;
}
.public-site .monument-hero h1 {
  position: static;
  grid-column: 1;
  grid-row: 1;
  width: auto;
  margin: 0;
  font-size: var(--type-display);
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: .06em;
  text-align: left;
  writing-mode: horizontal-tb;
  text-orientation: mixed;
  white-space: normal;
}
.hero-copy { position: static; grid-column: 1; grid-row: 2; max-width: 680px; min-width: 0; }
.hero-copy p { font-size: var(--type-body); line-height: 1.75; color: var(--pub-muted); max-width: none; margin: 0 0 24px; }
.has-hero-image { grid-template-columns: minmax(0, 1fr) minmax(240px, .85fr); align-items: center; }
.hero-photo {
  position: relative !important;
  grid-column: 2;
  grid-row: 1 / span 2;
  inset: auto;
  height: 240px !important;
  min-height: 240px;
  opacity: 1;
}
.section-frame { max-width: 1216px; padding: 52px 28px; }
.section-frame h2 { font-size: var(--type-heading); }
.intro-section { min-height: 0; grid-template-columns: minmax(160px, .36fr) 1fr; gap: 40px; }
.intro-section .section-head p { font-size: var(--type-body); }
.rich-body { font-size: var(--type-body); line-height: 1.85; }
.rich-body h2 { font-size: 22px; margin: 28px 0 12px; }
.empty-state { font-size: var(--type-body); padding: 20px 0; }
.entry-section {
  max-width: none;
  padding: 48px max(28px, calc((100vw - 1160px) / 2));
  background: var(--pub-light);
  color: var(--pub-ink);
}
.entry-section h2 { margin-bottom: 24px; }
.entry-list { gap: 16px; }
.entry-row { grid-template-columns: 80px 1fr auto; min-height: 112px; gap: 16px; padding: 16px; background: var(--pub-surface); }
.entry-row:hover { background: #f8faf6; transform: translateY(-2px); }
.entry-image { width: 80px; height: 80px !important; }
.entry-name { font-size: var(--type-subheading); letter-spacing: 0; font-weight: 600; }
.entry-detail { font-size: var(--type-small); color: var(--pub-muted); }
.entry-row > span:last-child { font-size: 18px; color: var(--pub-accent); }

.image-block, .detail-main-image { background: #e0e6dc; }
.image-empty, .image-block.failed { color: #53604f; }
.image-empty span, .image-fallback { font-size: 13px; letter-spacing: 0; }
.chapter-hero {
  width: calc(100% - 56px);
  max-width: 1160px;
  margin: 28px auto 0;
  min-height: 0;
  grid-template-columns: minmax(0, 1fr) 44%;
  background: var(--pub-light);
  color: var(--pub-ink);
}
.chapter-text { padding: 40px; justify-content: center; gap: 18px; }
.chapter-text h1 { margin: 0; max-width: none; }
.chapter-text p { font-size: var(--type-body); margin: 0; color: var(--pub-muted); }
.chapter-image { min-height: 240px; height: 240px; background: #e0e6dc; }
.chapter-image.image-empty { color: #53604f; }
.chapter-body { max-width: 1216px; }
.series-list { gap: 16px; }
.series-row { min-height: 124px; padding: 26px; align-items: center; gap: 24px; background: var(--pub-surface); }
.series-row:hover { background: #eaf0e6; }
.series-row h3 { font-size: 22px; letter-spacing: 0; }
.series-row p { font-size: var(--type-body); color: var(--pub-muted); }
.series-row div { gap: 10px; font-size: var(--type-small); }
.series-row .series-action { color: var(--pub-accent); }
.series-row small { color: var(--pub-muted); }
.list-hero {
  min-height: 0;
  padding: 40px max(28px, calc((100vw - 1160px) / 2));
  background: var(--pub-light);
  color: var(--pub-ink);
}
.list-hero h1 { font-size: var(--type-display); margin-bottom: 12px; }
.list-hero p { font-size: var(--type-body); color: var(--pub-muted); margin: 0; }
.catalogue { padding-top: 40px; }
.catalogue h2 { margin-bottom: 24px; }
.filter-line { gap: 10px; margin-bottom: 12px; }
.filter-chip { min-height: 40px; background: #e5ebe1; color: #455d49; font-size: var(--type-small); padding: 0 16px; }
.filter-chip:hover, .filter-chip.selected { background: var(--pub-accent); color: #fff; }
.product-list { margin-top: 28px; gap: 20px; }
.product-row { grid-template-columns: 128px 1fr auto; min-height: 152px; gap: 20px; background: #fff; }
.product-row:hover { background: #eaf0e6; }
.product-image { width: 128px; height: 128px !important; }
.product-row strong { font-size: var(--type-subheading); font-weight: 600; }
.product-row small { font-size: var(--type-small); margin-top: 8px; }
.row-go { color: var(--pub-accent); font-size: 18px; }
.pagination { margin-top: 30px; flex-wrap: wrap; }
.pagination a { background: #e5ebe1; color: var(--pub-ink); }
.pagination a[aria-current], .pagination a:hover { background: var(--pub-accent); color: #fff; }
.space-group { padding-bottom: 40px; }
.space-group h2 { margin-bottom: 24px; }
.space-group h2 small { font-size: var(--type-small); }
.space-list { gap: 18px; }
.space-row { grid-template-columns: 200px 1fr auto; gap: 24px; min-height: 184px; background: #fff; padding: 16px; }
.space-image { height: 152px !important; }
.space-row h3 { font-size: 22px; margin-bottom: 10px; }
.space-row p { font-size: 15px; color: var(--pub-ink); }
.space-row p a { color: var(--pub-accent); }
.space-row .text-action { margin-right: 8px; }
.public-site .detail-page { max-width: 1216px; padding: 100px 28px 64px; width: 100%; }
.detail-grid { gap: 48px; margin-top: 24px; }
.detail-copy h1 { font-size: 30px; margin-top: 0; margin-bottom: 18px; }
.detail-category { font-size: 15px; }
.detail-copy dl { margin: 28px 0; font-size: var(--type-body); gap: 12px; }
.detail-copy h2, .related-spaces h2 { font-size: 22px; }
.detail-copy .specs { margin-top: 28px; }
.detail-intro { margin-top: 28px; }
.related-spaces { margin-top: 48px; }
.public-site .error-page { min-height: 400px; padding: 110px max(28px, calc((100vw - 1160px) / 2)) 60px; }
.error-page h1 { font-size: 30px; }
.error-page p { font-size: var(--type-body); }
.public-footer {
  background: #e5ebe1;
  color: var(--pub-ink);
  padding: 34px max(28px, calc((100vw - 1160px) / 2)) 28px;
}
.footer-name { font-size: 22px; font-weight: 600; letter-spacing: .04em; line-height: 1.5; white-space: normal; }
.footer-bottom { margin-top: 18px; gap: 24px; }
.footer-bottom p, .footer-bottom a { font-size: 13px; color: #52634f; }
.preview-ribbon { background: #e1e9db; color: var(--pub-ink); font-size: 13px; }
dialog { background: #fff; color: var(--pub-ink); }
.dialog-close { background: var(--pub-light); color: var(--pub-ink); font-size: 14px; }
.will-enter { transform: translateY(12px); transition-duration: .4s; }

/* The existing maintenance layout and permission presentation stay intact. */
.manage-app { --ground: #eef2ed; --text: #263b30; --muted: #5e6c61; --border: #e0e7dc; --control: #c5d1c0; --active: #e1e8dc; --primary: #3d6551; font-size: 14px; }
.manage-top, .manage-sidebar { background: var(--ground); }
.manage-sheet { border-radius: 10px; }
.manage-title h1 { font-size: 22px; line-height: 1.5; }
.manage-brand { font-size: 16px; }
.manage-brand b { background: #3d6551; }
.manage-app .primary-button { background: var(--primary); color: #fff; font-weight: 500; }
.manage-app .primary-button:hover { background: #2f513f; }
.overview-strip strong { font-size: 24px; font-weight: 500; }
.quick-links a { font-size: 16px; }
.manage-panel h2 { font-size: 16px; }
.demo-notice { background: #e8eee4; color: #405b44; }
.manage-filter input, .manage-filter select, .form-field input, .form-field textarea, .form-field select { font-size: 14px; }
.manage-tabs a.active { border-bottom-color: var(--pub-accent); }
.settings-panel { border-radius: 8px; background: #f3f6f0; }
.auth-page { background: var(--pub-light); color: var(--pub-ink); }
.auth-box h1 { font-size: 24px; line-height: 1.4; margin-top: 28px; }
.auth-box .primary-button { background: var(--pub-accent); }
.auth-box .form-field { color: var(--pub-ink); }

@media (max-width: 1023px) {
  .entry-list { grid-template-columns: 1fr; }
  .series-row { grid-template-columns: minmax(140px, .6fr) 1fr; }
  .series-row > div { grid-column: 2; flex-direction: row; justify-content: space-between; }
  .space-row { grid-template-columns: 160px 1fr; }
  .space-row > .text-action { grid-column: 2; }
}
@media (max-width: 767px) {
  :root { --type-display: 28px; --type-heading: 22px; --type-subheading: 18px; }
  .public-header { padding-inline: 20px; }
  .wordmark { font-size: 17px; }
  .public-nav { background: #fcfdfb; gap: 0; padding: 10px 20px 18px; }
  .public-nav a { font-size: 16px; padding-block: 12px; }
  .monument-hero { width: calc(100% - 40px); margin-top: 20px; padding: 28px 24px; gap: 14px; }
  .public-site .monument-hero h1 { font-size: var(--type-display); writing-mode: horizontal-tb; line-height: 1.35; }
  .hero-copy { max-width: none; }
  .hero-copy p { font-size: 16px; margin-bottom: 20px; }
  .hero-copy .solid-action { font-size: 14px; min-height: 44px; padding-inline: 18px; }
  .has-hero-image { grid-template-columns: 1fr; }
  .hero-photo { grid-column: 1; grid-row: 3; width: 100%; min-height: 180px; height: 180px !important; }
  .section-frame { padding: 36px 20px; }
  .intro-section { grid-template-columns: 1fr; gap: 14px; }
  .section-head h2 { margin-bottom: 14px; }
  .entry-section { padding: 36px 20px; }
  .entry-row { min-height: 100px; grid-template-columns: 68px 1fr auto; padding: 14px; gap: 12px; }
  .entry-image { width: 68px; height: 68px !important; min-height: 68px; }
  .entry-name { font-size: 18px; }
  .entry-detail { font-size: 13px; }
  .chapter-hero { width: calc(100% - 40px); margin-top: 20px; grid-template-columns: 1fr; }
  .chapter-text { min-height: 0; padding: 28px 24px; gap: 14px; }
  .chapter-text h1 { font-size: var(--type-display); }
  .chapter-text p { font-size: 16px; }
  .chapter-image { min-height: 180px; height: 180px; aspect-ratio: auto; }
  .series-row { grid-template-columns: 1fr; padding: 22px; min-height: 0; gap: 12px; }
  .series-row h3 { font-size: 20px; }
  .series-row > div { grid-column: 1; text-align: left; gap: 12px; }
  .list-hero { padding: 30px 20px; }
  .list-hero h1 { font-size: var(--type-display); margin-bottom: 10px; }
  .list-hero p { font-size: 16px; }
  .filter-line { gap: 8px; }
  .filter-chip { min-height: 40px; padding: 0 12px; font-size: 13px; }
  .product-list { margin-top: 24px; gap: 14px; }
  .product-row { grid-template-columns: 94px minmax(0, 1fr) auto; min-height: 118px; gap: 12px; }
  .product-image { width: 94px; height: 94px !important; }
  .product-row strong { font-size: 18px; }
  .product-row small { font-size: 13px; }
  .space-row { grid-template-columns: 1fr; gap: 12px; padding: 14px; }
  .space-row > .text-action { grid-column: 1; }
  .space-image { height: 180px !important; }
  .space-row h3 { font-size: 20px; }
  .public-site .detail-page { padding: 84px 20px 44px; }
  .detail-grid { grid-template-columns: 1fr; gap: 24px; }
  .detail-copy h1 { font-size: 26px; }
  .detail-copy h2, .related-spaces h2 { font-size: 20px; }
  .public-site .error-page { padding: 90px 20px 44px; }
  .error-page h1 { font-size: 26px; }
  .public-footer { padding: 28px 20px 22px; }
  .footer-name { font-size: 20px; }
  .footer-bottom { margin-top: 16px; gap: 10px; }
  .footer-bottom p { width: 100%; }
  .manage-sheet { border-radius: 0; }
  .manage-title h1 { font-size: 22px; }
  .overview-strip strong { font-size: 24px; }
}
@media (prefers-reduced-motion: reduce) {
  .will-enter { opacity: 1; transform: none; }
}

/* Events extend the existing restrained public and maintenance layouts. */
.event-list { display: grid; gap: 18px; }
.event-row { display: grid; grid-template-columns: 116px 240px minmax(0, 1fr); align-items: center; gap: 28px; padding: 24px; background: var(--pub-surface); }
.event-date { align-self: start; color: var(--pub-accent); font-size: 14px; padding-top: 4px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.event-image { width: 100%; height: 164px; }
.event-image img { width: 100%; height: 100%; object-fit: cover; }
.event-copy { min-width: 0; }
.event-copy h3 { margin: 0 0 12px; font-size: 22px; font-weight: 600; overflow-wrap: anywhere; }
.event-copy p { color: var(--pub-muted); margin: 0 0 18px; line-height: 1.8; overflow-wrap: anywhere; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.event-row:hover .text-action { color: var(--pub-accent); }
.detail-event-date { color: var(--pub-muted); font-size: 15px; }
.detail-event-date time { margin-left: 10px; color: var(--pub-accent); font-variant-numeric: tabular-nums; }
.overview-strip, .quick-links:not(.settings-links) { grid-template-columns: repeat(5, minmax(0, 1fr)); }
@media (max-width: 1100px) {
  .event-row { grid-template-columns: 90px 180px minmax(0, 1fr); gap: 20px; }
  .event-copy h3 { font-size: 20px; }
  .overview-strip, .quick-links:not(.settings-links) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
  .event-row { grid-template-columns: 1fr; gap: 14px; padding: 18px; }
  .event-date { padding: 0; }
  .event-image { height: 190px; }
  .event-copy h3 { font-size: 20px; }
  .event-copy p { font-size: 15px; }
  .events-section .section-head { align-items: flex-start; gap: 8px; }
  .overview-strip, .quick-links:not(.settings-links) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .overview-strip > a:last-child, .quick-links:not(.settings-links) > a:last-child { grid-column: 1 / -1; }
}

/* Authorized restaurants belong to their dining series; spaces keep four content fields. */
.series-store-entries { display: grid; gap: 12px; }
.manage-nav-group .nav-child.active { color: var(--text); }
.series-store-entry { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 18px; background: #f3f6f0; }
.series-store-entry h3 { margin: 0; font-size: 16px; font-weight: 600; }
.series-store-entry p { margin: 4px 0 0; color: var(--muted); font-size: 13px; }
.store-entry-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; }
.series-edit-group { padding-block: 16px; }
.series-edit-group .series-store-entry { padding: 12px; gap: 12px; flex-wrap: wrap; }
.series-store-tabs { overflow-x: auto; }
.store-status-note { margin-block: 18px; line-height: 1.7; }
.authorized-store-row { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 20px; }
.authorized-store-row h2 { margin: 0 0 8px; font-size: 16px; font-weight: 600; }
.authorized-store-row p { margin: 4px 0; overflow-wrap: anywhere; }
.store-form-panel { max-width: 780px; }
.store-form-panel h2 { margin-bottom: 24px; }
.series-store-panel { background: var(--pub-surface); }
.series-store-panel > summary { list-style: none; cursor: pointer; }
.series-store-panel > summary::-webkit-details-marker { display: none; }
.series-store-panel > summary:focus-visible { outline: 2px solid var(--pub-accent); outline-offset: 3px; }
.series-store-panel .series-action::after { content: ' ＋'; }
.series-store-panel[open] .series-action::after { content: ' −'; }
.public-store-list { padding: 0 26px 26px; display: grid; gap: 16px; }
.authorized-store { padding: 20px; background: var(--pub-bg); overflow-wrap: anywhere; }
.authorized-store h4 { margin: 0 0 10px; font-size: 18px; font-weight: 600; }
.authorized-store p { margin: 0 0 8px; font-size: 16px; }
.authorized-store a { color: var(--pub-accent); font-size: 16px; }
.space-intro { overflow-wrap: anywhere; }
.store-form-layout { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 24px; align-items: start; }
.store-form-layout .store-form-panel { max-width: none; }
.store-photo-panel h2 { margin-bottom: 20px; }
.store-photo-preview { width: 100%; height: 220px; margin-bottom: 18px; }
.store-photo-preview img { width: 100%; height: 100%; object-fit: contain; }
.store-photo-name { font-size: 13px; color: var(--muted); overflow-wrap: anywhere; }
.authorized-store { display: grid; grid-template-columns: 180px minmax(0, 1fr); gap: 22px; align-items: center; }
.authorized-store .store-photo { width: 100%; height: 128px; }
.store-photo img { width: 100%; height: 100%; object-fit: cover; }
.store-contact { min-width: 0; }
@media (max-width: 1100px) {
  .store-form-layout { grid-template-columns: 1fr; gap: 0; }
  .store-photo-preview { max-width: 480px; }
}
@media (max-width: 767px) {
  .series-store-entry { align-items: flex-start; flex-direction: column; padding: 16px; gap: 12px; }
  .store-entry-actions { gap: 10px; width: 100%; }
  .store-entry-actions a { min-height: 44px; display: inline-flex; align-items: center; }
  .authorized-store-row { align-items: flex-start; padding: 16px 0; gap: 12px; }
  .authorized-store-row > div:first-child { min-width: 0; }
  .authorized-store-row .record-actions { flex-shrink: 0; }
  .public-store-list { padding: 0 16px 16px; }
  .authorized-store { padding: 16px; }
  .authorized-store { grid-template-columns: 1fr; gap: 16px; }
  .authorized-store .store-photo { height: 170px; }
  .series-store-panel .series-row > div { flex-wrap: wrap; }
}
