/* Final public polish: family home, mobile admin and three named dialogs only. */
.public-surface .final-family-home {display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:24px;}
.public-surface .final-family-home .hall-summary {grid-row:1/3;grid-template-columns:44% 1fr;padding:0;gap:24px;background:#433a30;color:#f6ecdb;border-radius:6px;overflow:hidden;}
.public-surface .final-family-home .hall-summary img {height:100%;min-height:310px;border-radius:0;object-position:50% 45%;}
.public-surface .final-family-home .hall-summary > div {padding:26px 24px 26px 0;min-width:0;}
.public-surface .final-family-home .hall-summary h2 {font-family:var(--font-memorial);color:#fff7e9;font-size:var(--type-page-size);margin:16px 0 12px;}
.public-surface .final-family-home .hall-summary .eyebrow {color:#d4c1a4;letter-spacing:.05em;}
.public-surface .final-family-home .hall-summary .data-text {font-size:var(--type-label-size);line-height:1.7;color:#e0d3c0;}
.public-surface .final-family-home .hall-summary .data-text span {display:block;}
.public-surface .final-family-home .template-name {display:block;margin-top:12px;color:#cdbb9e;font-size:var(--type-caption-size);}
.public-surface .final-family-home .hall-summary .button {color:#f5e7d0;border-color:#9b8566;background:transparent;display:inline-flex;gap:16px;font-size:var(--type-label-size);margin-top:18px;}
.public-surface .final-family-home .overview-stats {grid-template-columns:1fr 1fr;margin:0;background:none;border:0;gap:20px;}
.public-surface .final-family-home .overview-stats > div {background:none;padding:4px 0 16px;gap:7px;border-bottom:1px solid #e2d9cb;}
.public-surface .final-family-home .overview-stats strong {order:-1;font-size:var(--type-metric-size);color:#30271e;}
.public-surface .final-family-home .overview-stats span {color:#766655;font-size:var(--type-caption-size);}
.public-surface .final-family-home .home-capacity {align-self:end;}
.public-surface .final-family-home .home-capacity .section-heading {margin-bottom:10px;gap:8px;}
.public-surface .final-family-home .home-capacity h3 {font-size:var(--type-label-size);}
#app.public-surface .final-family-home .home-capacity button {font-size:var(--type-caption-size);min-height:30px;padding:0;border:0;background:transparent;}
.public-surface .final-family-home .capacity-head > div {flex-direction:row;align-items:baseline;gap:8px;}
.public-surface .final-family-home .capacity-head strong {font-size:var(--type-subtitle-size);}
.public-surface .final-family-home .capacity-head > div > span {display:none;}
.public-surface .final-family-home .capacity-head > span,.public-surface .final-family-home .capacity-legend {font-size:var(--type-caption-size);}
.public-surface .final-family-home .capacity-view progress {height:5px;margin:10px 0 7px;}
.public-surface .final-family-home .home-shortcuts,.public-surface .final-family-home .home-activity {grid-column:1/-1;}
.public-surface .final-family-home .home-shortcuts h3,.public-surface .final-family-home .home-activity h3 {font-size:var(--type-subtitle-size);margin:0 0 12px;}
.public-surface .final-family-home .quick-actions {grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;}
#app.public-surface .final-family-home .quick-actions button {padding:14px 8px;gap:9px;border:0;background:#f1eadd;color:#57452f;}
#app.public-surface .final-family-home .quick-actions button:first-child {background:#e6d9c3;color:#513b24;}
.public-surface .final-family-home .quick-actions svg {width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;}
.public-surface .final-family-home .activity-list li {padding:12px 0;}
.public-surface .final-family-home .activity-list p {font-size:var(--type-caption-size);margin:3px 0 0;}
.public-surface .final-family-home .activity-list strong {font-size:var(--type-label-size);font-weight:500;}
.public-surface .final-family-home .activity-all summary {padding-top:14px;color:#6c5130;font-size:var(--type-label-size);}
.admin-mobile-nav,.admin-mobile-overview,.mobile-admin-only,.mobile-hall-meta {display:none;}
.admin-full-data {display:contents;}
/* No generic dialog styling: untouched forms and players keep their existing appearance. */
#dialog.public-surface:has(.purchase-sheet,.poster-sheet) {width:440px;max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);padding:26px;border:1px solid #ded2be;border-radius:8px;background:#fbf8f1;box-shadow:0 16px 45px #160f0926;}
#dialog.public-surface:has(.purchase-sheet,.poster-sheet) .close {top:16px;right:16px;width:36px;height:36px;min-height:36px;padding:0;border:0;color:#796449;}
.public-surface .memorial-dialog-heading {text-align:center;padding:0 18px;width:100%;}
.public-surface .memorial-dialog-heading h2 {font-family:var(--font-memorial);font-size:var(--type-section-size);margin:8px 0 0;color:#362b20;}
.public-surface .purchase-sheet {display:flex;flex-direction:column;align-items:stretch;padding:0;background:transparent;border:0;}
.public-surface .purchase-sheet .purchase-emblem {order:0;width:64px;height:64px;border-radius:50%;background:#ece2d1;padding:9px;margin:0 auto 14px;color:#89673c;}
.public-surface .purchase-sheet .memorial-dialog-heading {order:1;}
.public-surface .purchase-sheet .purchase-price {order:2;display:flex;align-items:baseline;justify-content:center;gap:5px;margin:18px 0 22px;color:#4b3824;font-variant-numeric:tabular-nums;}
.public-surface .purchase-price strong {font-size:calc(var(--type-metric-size) * 1.65);font-weight:500;letter-spacing:-.035em;line-height:1.1;}
.public-surface .purchase-price .currency {font-size:var(--type-section-size);}
.public-surface .purchase-sheet .purchase-rules {order:3;display:block;text-align:left;margin:0;padding:0;border:0;}
.public-surface .purchase-rules section {padding:16px 0;border-top:1px solid #e2d6c3;}
.public-surface .purchase-rules section > span {display:block;font-size:var(--type-caption-size);color:#78664f;margin-bottom:6px;}
.public-surface .purchase-rules strong {font-size:var(--type-subtitle-size);font-weight:500;}
.public-surface .purchase-rules p {font-size:var(--type-label-size);line-height:1.7;margin:0;color:#524535;}
.public-surface .purchase-sheet > .caption {order:7;font-size:var(--type-caption-size);line-height:1.7;color:#7c6b55;margin:16px 0;}
.public-surface .purchase-sheet #pay,.public-surface .poster-sheet #save-poster {order:8;display:block;width:100%;min-height:46px;margin:0;text-align:center;background:#745733;color:#fff8e9;border:1px solid #745733;border-radius:4px;}
.public-surface .annual-sheet .purchase-emblem {background:#4c4031;color:#d2b78c;border-radius:5px;}
.public-surface .annual-sheet .purchase-price {margin-bottom:14px;}
.public-surface .annual-sheet .annual-promise {order:3;font-size:var(--type-body-size);color:#4e3e2a;margin:0 0 18px;}
.public-surface .annual-benefits {order:4;display:flex;list-style:none;justify-content:space-between;gap:10px;padding:14px 0;margin:0;border-block:1px solid #ddcdb5;font-size:var(--type-caption-size);color:#665136;}
.public-surface .annual-benefits li {flex:1;}
.public-surface .annual-benefits li:before {content:'✓';display:block;margin-bottom:6px;color:#927247;font-size:var(--type-subtitle-size);}
.public-surface .annual-validity {order:5;background:#eee4d4;padding:16px;margin-top:20px;}
.public-surface .annual-validity span {display:block;font-size:var(--type-caption-size);color:#75624a;}
.public-surface .annual-validity strong {display:block;margin-top:6px;font-size:var(--type-subtitle-size);font-weight:500;font-variant-numeric:tabular-nums;color:#433521;}
.public-surface .annual-validity p {font-size:var(--type-caption-size);margin:6px 0 0;}
.public-surface .poster-sheet .memorial-dialog-heading {text-align:left;padding:0 30px 0 0;margin-bottom:20px;}
.public-surface .poster-sheet canvas {display:block;width:100%;height:auto;}
.public-surface .poster-sheet > p {font-size:var(--type-caption-size);line-height:1.7;color:#786953;margin:12px 0;}
@media(max-width:700px) {
 .public-page:has(.final-family-home) .top {padding:12px 18px;gap:8px;}
 .public-page:has(.final-family-home) #nav {display:none;}
 main#app.public-surface:has(.final-family-home) {padding:16px 18px 30px;}
 .public-surface:has(.final-family-home) > .heading {margin-bottom:12px;align-items:center;}
 .public-surface:has(.final-family-home) > .heading h1 {font-size:var(--type-section-size);}
 .public-surface:has(.final-family-home) > .heading .row > a {display:none;}
 .public-surface:has(.final-family-home) .sidebar #hall-select {min-height:36px;padding:6px 10px;font-size:var(--type-label-size);}
 .public-surface:has(.final-family-home) .sidebar .side-tabs {padding-bottom:0;}
 .public-surface:has(.final-family-home) .sidebar .side-tabs button {min-height:40px;padding-block:8px;font-size:var(--type-label-size);}
 .public-surface:has(.final-family-home) #family-panel {padding:0;background:transparent;}
 .public-surface .final-family-home {grid-template-columns:1fr;gap:14px;}
 .public-surface .final-family-home .hall-summary {grid-row:auto;grid-template-columns:38% 1fr;gap:20px;}
 .public-surface .final-family-home .hall-summary img {min-height:184px;height:100%;}
 .public-surface .final-family-home .hall-summary > div {padding:14px 16px 14px 0;}
 .public-surface .final-family-home .hall-summary .eyebrow {font-size:var(--type-caption-size);}
 .public-surface .final-family-home .hall-summary h2 {font-size:var(--type-page-size);margin:8px 0;}
 .public-surface .final-family-home .hall-summary .data-text {font-size:var(--type-caption-size);}
 .public-surface .final-family-home .template-name {margin-top:6px;}
 .public-surface .final-family-home .hall-summary .button {min-height:34px;margin-top:8px;padding:7px 12px;}
 .public-surface .final-family-home .overview-stats {grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:0;}
 .public-surface .final-family-home .overview-stats > div {padding:0 0 12px;gap:4px;border-color:#d9cbb7;}
 .public-surface .final-family-home .overview-stats strong {font-size:var(--type-metric-size);}
 .public-surface .final-family-home .home-shortcuts h3 {font-size:var(--type-label-size);margin-bottom:8px;}
 .public-surface .final-family-home .quick-actions {gap:8px;}
 #app.public-surface .final-family-home .quick-actions button {padding:10px 1px;gap:7px;font-size:var(--type-caption-size);background:transparent;}
 #app.public-surface .final-family-home .quick-actions button:first-child {background:#e6d9c3;}
 .public-surface .final-family-home .home-activity {margin-top:6px;}
 .public-surface .final-family-home .activity-list li {display:flex;gap:12px;}
 .public-surface .final-family-home .activity-list li > div {min-width:0;}
 .public-surface .final-family-home .activity-list time {font-size:var(--type-caption-size);max-width:92px;line-height:1.6;margin-top:0;}
 .admin-page.public-page .top {padding:10px 18px;}
 .admin-page.public-page #nav {display:none;}
 .admin-page .public-surface > .heading {margin:0 0 8px;}
 .admin-page .public-surface > .heading h1 {font-size:var(--type-section-size);}
 .admin-page .public-surface > .heading p {display:none;}
 .admin-page .public-surface .workspace {gap:14px;}
 .admin-page .admin-mobile-nav {display:flex;align-items:center;justify-content:space-between;color:#6a553b;font-size:var(--type-label-size);}
 .admin-page .public-surface #admin-menu-toggle {padding:6px 12px;min-height:34px;font-size:var(--type-label-size);}
 .admin-page .public-surface .sidebar .side-tabs {display:none;}
 .admin-page .public-surface .sidebar.menu-open .side-tabs {display:grid;grid-template-columns:1fr 1fr;background:#f6f0e5;padding:10px;margin-top:10px;max-height:55vh;overflow:auto;}
 .admin-page .public-surface .sidebar.menu-open .side-tabs button {text-align:left;min-height:40px;padding:10px;font-size:var(--type-label-size);}
 .admin-page .admin-full-data {display:none;}
 .admin-page .show-mobile-data .admin-full-data {display:contents;}
 .admin-page .admin-mobile-overview {display:block;}
 .admin-page .admin-mobile-overview .overview-stats {margin:0 0 18px;background:none;gap:10px;border:0;}
 .admin-page .admin-mobile-overview .overview-stats > div {padding:14px 16px;background:#faf7f1;gap:5px;}
 .admin-page .admin-mobile-overview .overview-stats strong {order:-1;color:#31281e;font-size:var(--type-metric-size);}
 .admin-page .admin-mobile-overview .overview-stats span {font-size:var(--type-caption-size);color:#715f49;}
 .admin-page .admin-mobile-overview :is(h2,.section-heading h2) {font-size:var(--type-subtitle-size);margin:0 0 12px;font-weight:600;}
 .admin-page .mobile-tasks {padding:18px;background:#e7dcc9;}
 .admin-page #app.public-surface .mobile-tasks button {display:flex;align-items:center;gap:12px;width:100%;border:0;border-top:1px solid #d9cab3;border-radius:0;padding:10px 0;min-height:42px;font-size:var(--type-label-size);color:#5b482f;text-align:left;}
 .admin-page .mobile-tasks button strong {margin-left:auto;color:#352819;font-size:var(--type-data-size);font-variant-numeric:tabular-nums;}
 .admin-page .mobile-recent {margin-top:20px;padding:18px;background:#fcfaf6;}
 .admin-page .mobile-recent .section-heading {margin-bottom:0;gap:8px;}
 .admin-page #app.public-surface .mobile-recent .section-heading button {min-height:30px;padding:0;border:0;background:transparent;font-size:var(--type-caption-size);}
 .admin-page .mobile-recent article {padding:13px 0;border-top:1px solid #e4d9c8;}
 .admin-page .mobile-recent article > div,.admin-page .mobile-recent article > p {display:flex;justify-content:space-between;gap:8px;font-size:var(--type-label-size);margin:4px 0;}
 .admin-page .mobile-recent article strong {font-weight:500;}
 .admin-page .mobile-recent time {font-size:var(--type-caption-size);color:#776955;}
 .admin-page .mobile-recent > p.caption {margin:8px 0 0;font-size:var(--type-caption-size);}
 .admin-page .public-surface #admin-more-data {display:block;width:100%;margin-top:18px;font-size:var(--type-label-size);}
 .admin-page .public-surface .card:has(#hall-filter) {padding:10px 16px;}
 .admin-page .card:has(#hall-filter) > h2 {display:none;}
 .admin-page .card:not(.compact-expanded) :is(#hall-filter,#hall-statistics,#user) {display:none;}
 .admin-page .public-surface [data-mobile-disclosure] {width:100%;text-align:left;border:0;padding:6px 0;min-height:34px;font-size:var(--type-label-size);}
 .admin-page .mobile-admin-only {display:inline-block;}
 .admin-page .public-surface .hall-row {display:grid;grid-template-columns:1fr auto;gap:10px;padding:18px 0;}
 .admin-page .public-surface .hall-row td {display:block;padding:0;}
 .admin-page .public-surface .hall-row td:before {display:none;}
 .admin-page .public-surface .hall-row td:first-child {grid-column:1;grid-row:1;}
 .admin-page .public-surface .hall-row td:nth-child(2) {grid-column:2;grid-row:1;text-align:right;}
 .admin-page .public-surface .hall-row td:nth-child(3) {grid-column:1/-1;font-size:var(--type-caption-size);}
 .admin-page .public-surface .hall-row td:nth-child(3) > .data-text:before {content:'已用 ';color:#74634b;}
 .admin-page .public-surface .hall-row td:nth-child(4) {display:none;}
 .admin-page .public-surface .hall-row td:nth-child(5) {grid-column:1/-1;}
 .admin-page .public-surface .hall-row .desktop-hall-meta,.admin-page .public-surface .hall-row td:nth-child(2) .hall-meta,.admin-page .public-surface .hall-actions > button {display:none;}
 .admin-page .mobile-hall-meta {display:block;margin-top:5px;font-size:var(--type-caption-size);color:#7b6b56;overflow-wrap:anywhere;}
 .admin-page .public-surface .hall-row td:nth-child(3) .hall-meta {display:inline;margin-left:12px;}
 .admin-page .public-surface .hall-row td:nth-child(3) .hall-meta br {display:none;}
 .admin-page .public-surface .hall-row td:nth-child(3) .hall-meta span {margin-right:10px;}
 .admin-page .public-surface .hall-actions {gap:16px;}
 .admin-page .hall-id-detail {grid-column:1/-1;font-size:var(--type-caption-size);overflow-wrap:anywhere;color:#7b6b56;}
 .admin-page .public-surface .order-row {padding:14px 0;gap:6px 10px;}
 .admin-page .desktop-order-id {display:none;}
 .admin-page .public-surface .order-meta .identity-details {margin:0;}
 .admin-page .public-surface .account-row {padding:16px 0;gap:8px 10px;}
 #dialog.public-surface:has(.purchase-sheet,.poster-sheet) {padding:22px;}
 .public-surface .poster-sheet .memorial-dialog-heading {margin-bottom:14px;}
 .public-surface .poster-sheet canvas {max-height:calc(100dvh - 255px);object-fit:contain;background:#f3eee3;}
}

@media(max-width:700px) {
 .admin-page #app .account-copy {border:0;padding:0;min-height:30px;color:#6b5134;font-size:var(--type-caption-size);}
}

/* Final check: only the approved mobile spacing, list actions and light captions. */
#app.public-surface:has(#family-panel) { --public-caption-ink:#6c6052; }
#app.public-surface #family-panel :is(.caption,.muted,.activity-list time,.capacity-head > span,.capacity-legend,.capacity-facts span,.pack-record dt,.quiet-details):not(.template-preview *, .memorial-audio *, .file-picker *) {color:var(--public-caption-ink);}
@media(max-width:700px) {
 main#app.public-surface:has(.final-family-home) {padding-top:8px;}
 #app.public-surface:has(.final-family-home) > .heading {margin-bottom:4px;}
 #app.public-surface:has(.final-family-home) .workspace {gap:8px;}
 #app.public-surface:has(.final-family-home) .sidebar .side-tabs {padding-top:0;}
 .admin-page #app.public-surface {--public-caption-ink:#6c6052;}
 .admin-page #app.public-surface :is(.caption,.mobile-hall-meta,.hall-meta,.order-meta,.mobile-recent time,.hall-id-detail,.identity-details summary) {color:var(--public-caption-ink);}
 .admin-page #app.public-surface .hall-actions > a.primary {display:inline-flex;align-items:center;justify-content:center;min-width:76px;min-height:40px!important;padding:8px 16px;border:1px solid #c9b99f;background:#f0e7d8;color:#60482c;border-radius:4px;text-decoration:none;}
 .admin-page #app.public-surface .hall-actions .row-more > summary {display:flex;align-items:center;justify-content:center;width:40px;min-height:40px;padding:0;border:1px solid transparent;border-radius:4px;background:transparent;color:#7b6953;font-size:0;line-height:0;}
 .admin-page #app.public-surface .hall-actions .row-more > summary::after {content:'⋯';font-family:var(--font-ui);font-size:22px;line-height:1;}
 .admin-page #app.public-surface .hall-actions > a.primary:hover {background:#e9ddca;border-color:#b59e7a;}
 .admin-page #app.public-surface .hall-actions .row-more > summary:hover {background:#eee6da;color:#60482c;}
 .admin-page #app.public-surface .hall-actions > a.primary:active {background:#dfd0b7;}
 .admin-page #app.public-surface .hall-actions .row-more > summary:active {background:#e4d7c3;}
 .admin-page #app.public-surface .hall-actions :is(a.primary,.row-more > summary):focus-visible {outline:2px solid #8a6c44;outline-offset:3px;}
}
/* Final typography: existing role tokens, restricted to public content. Brand and sanctuary tokens remain unchanged. */
.public-surface {
  --font-ui: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;
  --font-memorial: "Songti SC", "STSong", "Noto Serif SC", "Source Han Serif SC", serif;
  --type-page-size: 26px;
  --type-page-space: .05em;
  --type-section-size: 20px;
  --type-section-line: 1.5;
  --type-section-space: 0;
  --type-subtitle-weight: 500;
  --type-body-line: 1.65;
  --type-body-space: 0;
  --type-caption-line: 1.6;
  --type-caption-space: 0;
  --type-data-line: 1.5;
  --type-button-space: 0;
  font-family: var(--font-ui);
}
.public-surface :is(.caption,.muted,.data-text,.capacity-legend,.capacity-head,.activity-list,.overview-stats,.badge,table,code) {
  font-family: var(--font-ui);
}
.public-surface :is(time,.data-text,.metric,.overview-stats strong,.capacity-head,.capacity-legend,.capacity-summary,.plan-price,.purchase-price,.annual-validity,.pack-record dd,.audio-time,td,code) {
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
}
.public-surface :is(.caption,.activity-list time) {line-height:var(--type-caption-line);letter-spacing:var(--type-caption-space);}
.public-surface :is(h3,strong,b,th) {font-weight:var(--type-subtitle-weight);}
#visit-panel.public-surface {--type-body-line:1.8;}
#visit-panel.public-surface .entry p {line-height:1.7;}
#visit-panel.public-surface h2,.public-surface .memorial-dialog-heading h2,.public-surface .hall-summary h2 {letter-spacing:var(--type-page-space);}
.admin-page .public-surface {--type-page-space:0;}
.admin-page .public-surface :is(h1,h2,h3,th,td,.badge,input,select,button,.button) {font-family:var(--font-ui);letter-spacing:0;}
@media(max-width:580px) {
  .public-surface {--type-page-size:24px;--type-section-size:20px;}
}
/* Preserve native select metrics while retaining the same CJK sans fallbacks. */
.public-surface select:not([type=checkbox]):not([type=range]):not([type=file]) {font-family:"Segoe UI",var(--font-ui);}
