/* Explicit page opt-in: guest, admin and display share a brand, not a layout. */
body[data-wedding-ui] {
  --color-background:#faf7f5; --color-surface:#fff; --color-text:#3d3637;
  --color-muted:#706365; --color-brand:#853f4b; --color-brand-action:#853f4b;
  --color-brand-hover:#6d303c; --color-brand-subtle:#f6e8eb; --color-border:#eed9d7;
  --rose-gold:#853f4b; --dark:#3d3637; --gray:#706365;
  --wedding-heading:"Home Serif TC", "Noto Serif TC", serif;
}
body[data-wedding-ui="guest"] { background-color:#faf7f5; color:var(--color-text); }
body[data-wedding-ui="guest"] :is(h1,h2) { font-family:var(--wedding-heading); }
body[data-wedding-ui="guest"] > header:not(.invitation-header) {
  display:block; text-align:center; background:transparent; color:var(--color-text);
  box-shadow:none; border:0; padding:clamp(24px,5vw,48px) 20px 20px;
}
body[data-wedding-ui="guest"] > header h1 { color:var(--color-text); }
body[data-wedding-ui="guest"] :is(.card,.panel) { border-color:var(--color-border); border-radius:24px; }
body[data-wedding-ui] :is(.btn-primary,.btn-submit,.btn-bind,.btn-checkin) {
  background:#853f4b; color:#fff; border:1px solid #853f4b; border-radius:999px;
  min-height:48px; padding:10px 24px; line-height:1.5; white-space:normal;
}
body[data-wedding-ui="guest"] :is(.btn-primary,.btn-submit,.btn-bind,.btn-checkin) { min-height:52px; }
body[data-wedding-ui] :is(.btn-secondary,.wedding-secondary) {
  background:#fff; color:#853f4b; border:1px solid #c397a0; border-radius:999px;
  min-height:44px; padding:10px 20px;
}
body[data-wedding-ui] .btn-danger { background:#9f293a; color:#fff; border-color:#9f293a; }
body[data-wedding-ui] :is(button,.btn,summary) { min-height:44px; }
body[data-wedding-ui] :is(.btn-primary,.btn-submit,.btn-bind,.btn-checkin):disabled { background:#e9dce0; border-color:#cbb7bd; color:#67555b; cursor:not-allowed; }
body[data-wedding-ui] :is(input:not([type=checkbox],[type=radio],[type=range],[type=hidden]),select,textarea) { max-width:100%; font-size:1rem; }
body[data-wedding-ui] :is(a,button,input,select,textarea,summary):focus-visible { outline:3px solid #853f4b; outline-offset:3px; }
body[data-wedding-ui] :is(.wedding-page-nav,.wedding-actions) { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.wedding-page-nav { width:min(100% - 32px,1040px); margin:12px auto; }
.wedding-page-nav a { display:inline-flex; align-items:center; min-height:44px; padding:8px 12px; text-decoration:none; color:#853f4b; }
.wedding-time-note { margin:16px auto; padding:12px 16px; max-width:960px; color:#5e454e; background:#f6e8eb; border-radius:12px; }
.wedding-danger-zone { margin-top:24px; padding-top:20px; border-top:1px solid #d9a9b0; }
body[data-wedding-ui] dialog { width:min(92vw,560px); max-height:85dvh; overflow:auto; border:1px solid #eed9d7; border-radius:20px; padding:24px; color:#3d3637; }
body[data-wedding-ui] dialog form { width:100%; min-width:0; max-width:100%; }
body[data-wedding-ui] dialog::backdrop { background:rgba(35,20,25,.55); }
body[data-wedding-ui="admin"] :is(.card,.panel) { border-color:#eed9d7; }
.wedding-section-nav { margin:0 0 20px; padding:12px 16px; border:1px solid #eed9d7; border-radius:16px; background:#fff; }
.wedding-section-nav nav { display:flex; gap:8px 20px; flex-wrap:wrap; }
.wedding-section-nav a { display:inline-flex; align-items:center; min-height:44px; }
.wedding-table-scroll { overflow:auto; max-width:100%; }
.wedding-editor { min-width:0; }
.wedding-editor fieldset { min-width:0; margin:16px 0; padding:16px; border:1px solid #eed9d7; border-radius:16px; }
.wedding-editor legend { font-weight:700; padding:0 8px; }
.wedding-editor-fields { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.wedding-editor-field { display:flex; flex-direction:column; gap:6px; min-width:0; overflow-wrap:anywhere; }
.wedding-editor-field :is(input,select,textarea) { width:100%; }
.wedding-editor-field input[type=checkbox] { width:24px; height:24px; align-self:flex-start; }
.wedding-editor-field textarea { min-height:96px; }
.wedding-editor-summary { color:#5e454e; line-height:1.7; }
body[data-wedding-ui="display"] .wedding-display-toggle { position:fixed; right:80px; bottom:16px; z-index:100; border:1px solid #853f4b; background:#fff; color:#853f4b; border-radius:999px; padding:8px 18px; }
body[data-wedding-ui="display"][data-controls-collapsed] .wedding-display-control { display:none!important; }
@media(min-width:1200px) {
  body[data-wedding-ui="display"] .blessing-title { font-size:clamp(36px,3vw,60px); }
  body[data-wedding-ui="display"] .blessing-shell { padding-left:4vw; padding-right:4vw; }
}
@media(max-width:640px) {
  .wedding-editor-fields { grid-template-columns:1fr; }
  body[data-wedding-ui="admin"] .wedding-section-nav nav { display:grid; }
  body[data-wedding-ui] dialog .actions { display:flex; flex-wrap:wrap; gap:12px; }
}
@media(prefers-reduced-motion:reduce) { body[data-wedding-ui] { scroll-behavior:auto; } }
/* Legacy display rules must not reveal controls or forms marked hidden. */
body[data-wedding-ui] [hidden] { display:none!important; }
body[data-wedding-ui="guest"]:not([data-page="home"],[data-page="invitation"]) { background:#faf7f5; }
body[data-wedding-ui="admin"] > header,
body[data-wedding-ui="admin"] main > header { display:block; background:#faf7f5; color:#3d3637; border-bottom:1px solid #eed9d7; padding:24px; }
body[data-wedding-ui="admin"] :is(header h1,header p) { color:#3d3637; }
body[data-wedding-ui] .wedding-editor :is(input:not([type=checkbox]),select) { min-height:44px; padding:8px 10px; border:1px solid #c397a0; border-radius:10px; background:#fff; color:#3d3637; }
body[data-wedding-ui] .wedding-editor input[type=checkbox] { margin:10px 0; }
body[data-wedding-ui] .wedding-editor .wedding-editor-fields > fieldset { grid-column:1/-1; }
body[data-page="song-requests"] #request-form { background:#fff; border:1px solid #eed9d7; border-radius:24px; padding:20px; }
body[data-page="song-requests"] fieldset { border:0; padding:0; margin:0 0 20px; min-width:0; }
body[data-page="song-requests"] #request-form button { width:100%; margin-top:16px; }
body[data-page="song-requests"] #dedication { margin-top:8px; }
@media(max-width:420px) { .wedding-editor fieldset { padding:10px; } }
body[data-wedding-ui="guest"] main > header { display:block; background:transparent; color:#3d3637; }
body[data-wedding-ui="guest"] main > header :is(h1,p) { color:#3d3637; }

/* Stitch 14200357147083033210: shared identity, with task-specific layouts.
   Guest titles use serif; admin fields/tables and projected content stay sans.
   LINE, status/danger colors, seating geometry and media canvases are semantic. */
body[data-wedding-ui] {
  --color-background:#faf7f5;
  --color-background-alt:#f7eded;
  --color-surface:#fff;
  --color-surface-raised:#fff;
  --color-brand-hover:#702e39;
  --color-brand-subtle:#f7eded;
  --color-accent-decorative:#c77983;
  --color-muted:#706365;
  --ivory:var(--color-background);
  --light-gray:var(--color-border);
  --radius-lg:24px;
  --wedding-control-radius:12px;
  --wedding-card-radius:24px;
  --wedding-page-gap:24px;
  --shadow-sm:0 4px 16px rgb(133 63 75 / 6%);
  --shadow-md:0 8px 24px rgb(61 54 55 / 10%);
  font-family:var(--font-sans-tc);
}
body[data-wedding-ui="admin"],
body[data-wedding-ui="admin"].admin-shell-ready {
  --admin-ink:var(--color-text);
  --admin-muted:var(--color-muted);
  --admin-surface:var(--color-surface);
  --admin-rose:var(--color-brand);
  --admin-rose-deep:var(--color-brand-hover);
  --admin-border:var(--color-border);
  background:#faf7f5;
  color:var(--color-text);
}
body[data-wedding-ui="guest"]:not([data-page="home"],[data-page="invitation"],[data-page="wedding-album"]) h1 {
  font-family:var(--wedding-heading);
  font-size:clamp(1.75rem,4.5vw,2.5rem);
  font-weight:600;
  line-height:1.5;
  letter-spacing:.055em;
  color:var(--color-text);
  overflow-wrap:anywhere;
}
body[data-wedding-ui="admin"] :is(main,header,.container,.page-header) h1 {
  font-family:var(--wedding-heading);
  font-size:clamp(1.5rem,3vw,2rem);
  line-height:1.5;
  color:var(--color-text);
  overflow-wrap:anywhere;
}
body[data-wedding-ui="guest"]:not([data-page="home"],[data-page="invitation"]) :is(.page-header,.page-title) {
  background:transparent;
  border:0;
  box-shadow:none;
  padding:24px 16px;
  text-align:center;
}
body[data-wedding-ui="guest"] :is(.page-header,.page-title) > p {
  max-width:42rem;
  margin:8px auto 0;
  line-height:1.8;
  color:var(--color-muted);
}
body[data-wedding-ui="admin"].admin-shell-ready > header,
body[data-wedding-ui="admin"].admin-shell-ready > header.hero {
  background:#faf7f5;
  color:var(--color-text);
  border-bottom:1px solid var(--color-border);
  box-shadow:none;
}
body[data-wedding-ui="admin"].admin-shell-ready > header :is(h1,p) { color:var(--color-text); }
body[data-wedding-ui="admin"] .admin-navigation { background:#fff; }
body[data-wedding-ui="admin"] .admin-navigation a[aria-current="page"] {
  background:var(--color-brand-subtle);
  color:var(--color-brand);
  box-shadow:inset 3px 0 var(--color-brand);
}
body[data-wedding-ui="admin"] :is(.admin-menu-toggle,.admin-nav-mark) {
  background:var(--color-brand);
  color:#fff;
  box-shadow:var(--shadow-sm);
}
body[data-wedding-ui] :is(.btn-primary,.btn-submit,.btn-bind,.btn-checkin,.btn-send,.btn-upload,.primary-action),
body[data-wedding-ui="admin"].admin-shell-ready :is(.btn-primary,.primary,button[type="submit"]) {
  background:var(--color-brand);
  border-color:var(--color-brand);
  color:#fff;
  -webkit-text-fill-color:currentColor;
  box-shadow:none;
}
body[data-wedding-ui] :is(.btn-primary,.btn-submit,.btn-bind,.btn-checkin,.btn-send,.btn-upload,.primary-action):hover:not(:disabled) {
  background:var(--color-brand-hover);
}
body[data-wedding-ui] :is(.btn-primary,.btn-submit,.btn-bind,.btn-checkin,.btn-send,.btn-upload,.primary-action):disabled {
  background:#e9dce0;
  border-color:#cbb7bd;
  color:#67555b;
}
body[data-wedding-ui] :is(.btn-secondary,.wedding-secondary,.nav-btn) {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  border-radius:999px;
  background:#fff;
  color:var(--color-brand);
  text-decoration:none;
  line-height:1.5;
}
body[data-wedding-ui] :is(.card,.panel,.info-card,.form-card,.search-section,.venue-container,.guest-info,.result-card,.offline-card) {
  border-color:var(--color-border);
  border-radius:var(--wedding-card-radius);
  box-shadow:var(--shadow-sm);
}
body[data-wedding-ui="admin"].admin-shell-ready :is(.card,.panel,.section,.settings-section,.table-container) {
  border-radius:var(--wedding-card-radius);
  background:#fff;
}
body[data-wedding-ui] :is(input:not([type=checkbox],[type=radio],[type=range],[type=hidden],[type=file],[type=color]),select,textarea) {
  min-width:0;
  min-height:48px;
  padding:10px 12px;
  border:1px solid #c397a0;
  border-radius:var(--wedding-control-radius);
  background:#fff;
  color:var(--color-text);
  font-size:1rem;
  line-height:1.5;
}
body[data-wedding-ui="admin"] :is(input:not([type=checkbox],[type=radio],[type=range],[type=hidden],[type=file],[type=color]),select,textarea) { min-height:44px; }
body[data-wedding-ui] :is(input,select,textarea)[aria-invalid="true"],
body[data-wedding-ui] :is(input,select,textarea).invalid { border-color:var(--color-danger); }
body[data-wedding-ui] :is(.wedding-page-nav,.quick-nav,.nav-links) a {
  display:inline-flex;
  align-items:center;
  min-height:44px;
  line-height:1.5;
}
body[data-wedding-ui="admin"] th { background:#f7eded; color:var(--color-text); }
body[data-wedding-ui="admin"] :is(th,td) { border-color:var(--color-border); }
body[data-wedding-ui="admin"] tbody tr:hover td { background:#faf7f5; }
body[data-wedding-ui="admin"].admin-shell-ready :is(.btn-save,.btn-sync,.primary-action,.save) {
  border:1px solid var(--color-brand);
  background:var(--color-brand);
  color:#fff;
  -webkit-text-fill-color:currentColor;
  border-radius:999px;
}
body[data-wedding-ui] :is(.wedding-secondary,.nav-btn,button:not([class])) { min-height:44px; }
body[data-page="self-checkin"] #checkin-form button[type=submit],
body[data-page="self-checkin"] button:not(.secondary),
body[data-page="privacy"] button[type=submit] {
  background:var(--color-brand);
  color:#fff;
  border-radius:999px;
}
body[data-wedding-ui] .accessibility-mode-toggle { background:var(--color-brand); color:#fff; }
body[data-wedding-ui="admin"] :is(main,.card,.panel,form,fieldset,.grid,.form-grid,.form-group) { min-width:0; }
body[data-wedding-ui="admin"] :is(input,select,textarea) { max-width:100%; }
body[data-wedding-ui="admin"] :is(label,.row) { min-width:0; }
body[data-page="photo-frame"] :is(.controls,.controls > *) { min-width:0; }
body[data-page="photo-frame"] input[type="file"] { width:100%; }
body[data-page="seating-map"] #search-guest-btn,
body[data-page="game-center"] .play {
  min-height:52px;
  border-radius:999px;
  background:var(--color-brand);
  color:#fff;
}
body[data-page="seating-map"] .search-section { width:min(calc(100% - 32px),700px); padding:20px; }
body[data-page="seating-map"] .search-box input { min-width:0; }
body[data-page="seating-map"] #search-guest-btn:disabled { background:#e9dce0; color:#67555b; }
body[data-page="faq"] details,
body[data-page="privacy"] section,
body[data-page="coffee-list"] :is(.shop,.coffee-card) { border-radius:24px; background:#fff; }
body[data-page="game-shell"] main > section { min-width:0; max-width:100%; }
body[data-wedding-ui="display"]:not([data-page="lottery-display"],[data-page="photo-wall"]) {
  --blessing-ink:#3d3637; --blessing-muted:#706365; --blessing-rose:#853f4b;
  --blessing-rose-dark:#702e39; --blessing-paper:#fff; --blessing-line:#eed9d7;
  background:#faf7f5;
  color:#3d3637;
}
body[data-wedding-ui="display"]:not([data-page="lottery-display"],[data-page="photo-wall"]) :is(.blessing-hero,header) {
  background:transparent;
  color:#3d3637;
  box-shadow:none;
}
body[data-wedding-ui="display"]:not([data-page="lottery-display"],[data-page="photo-wall"]) :is(header h1,.blessing-title) { color:#3d3637; }
@media(max-width:640px) {
  body[data-wedding-ui="admin"] :is(.form-grid,.grid-2) { grid-template-columns:minmax(0,1fr); }
  body[data-page="seating-map"] .search-box { flex-direction:column; }
  body[data-page="seating-map"] #search-guest-btn { width:100%; }
}
body[data-page="admin-song-requests"] form { display:grid; gap:16px; }
body[data-page="admin-song-requests"] label:has(input:not([type=checkbox])) { display:grid; gap:8px; }
body[data-page="admin-song-requests"] form button[type=submit] { justify-self:start; }
body[data-page="admin-dashboard"] .action-card a { background:var(--color-brand); color:#fff; }
body[data-page="admin-dashboard"] .action-card a:hover { background:var(--color-brand-hover); }
body[data-page="direction"] .btn-nav { min-height:44px; border-radius:999px; }
body[data-page="oauth-result"] { max-width:680px; margin:40px auto; overflow-wrap:anywhere; }
body[data-page="oauth-result"] h2 { font-family:var(--wedding-heading); }
/* Older admin pages render their banner as a div instead of a header. */
body[data-wedding-ui="admin"].admin-shell-ready :is(.hero,.guests-hero,.logs-hero,.photos-hero,.settings-hero,.page-hero,.wedding-hero) {
  background:#faf7f5;
  color:var(--color-text);
  border-bottom:1px solid var(--color-border);
  box-shadow:none;
}
body[data-wedding-ui="admin"].admin-shell-ready :is(.hero,.guests-hero,.logs-hero,.photos-hero,.settings-hero,.page-hero,.wedding-hero) :is(h1,p,nav,nav a,nav span,.back-btn) {
  color:var(--color-text);
  -webkit-text-fill-color:currentColor;
}
body[data-wedding-ui="admin"].admin-shell-ready :is(.hero,.guests-hero,.logs-hero,.photos-hero,.settings-hero,.page-hero,.wedding-hero)::before,
body[data-wedding-ui="admin"].admin-shell-ready :is(.hero,.guests-hero,.logs-hero,.photos-hero,.settings-hero,.page-hero,.wedding-hero)::after { display:none; }
body[data-wedding-ui="admin"].admin-shell-ready h1 { font-family:var(--wedding-heading); }
body[data-page="admin-beginner-guide"] .btn-link { background:var(--color-brand); color:#fff; border-radius:999px; min-height:44px; display:inline-flex; align-items:center; }
body[data-page="game-shell"] .wedding-page-nav a { background:transparent; color:var(--color-brand); }
body[data-page="game-shell"] main a { background:var(--color-brand); color:#fff; border-radius:999px; }
body[data-page="lottery-display"] { --color-text:#fffaf9; --color-muted:#decfd2; }
body[data-page="lottery-display"] .page-header { background:transparent; box-shadow:none; }
body[data-page="lottery-display"] .page-header .subtitle { color:var(--color-muted); }
@media(max-width:1099px) {
  body[data-wedding-ui="admin"].admin-shell-ready > header { padding-left:136px; min-height:72px; }
  body[data-wedding-ui="admin"].admin-shell-ready main > header { padding-top:60px; }
  body[data-wedding-ui="admin"].admin-shell-ready main:has(> h1) { padding-top:72px; }
}
@media(max-width:479px) {
  body[data-wedding-ui="admin"].admin-shell-ready > header { padding:60px 16px 16px; min-height:104px; }
}

/* 逐頁比對：載入資料、分頁與表單元件也延用 Stitch 設計語言。 */
body[data-wedding-ui] input:is([type="checkbox"],[type="radio"],[type="range"]) { accent-color:var(--color-brand); }
body[data-wedding-ui] input:is([type="checkbox"],[type="radio"]) { width:20px; height:20px; min-height:0; padding:0; flex:0 0 auto; }
body[data-wedding-ui] label:has(> input:is([type="checkbox"],[type="radio"])):not(.wedding-editor-field) { display:inline-flex; align-items:center; gap:8px; }
body[data-wedding-ui] .wedding-editor :is(input:not([type="checkbox"]),select,textarea) { border-radius:12px; }
body[data-wedding-ui] .wedding-editor fieldset > button { margin:6px 8px 6px 0; }
body[data-wedding-ui="admin"] button:not([class]) { padding:10px 16px; }
body[data-wedding-ui="admin"] :is(.field-help,.field-desc,.help-text,.hint,.label-hint) { color:var(--color-muted); }
body[data-wedding-ui="admin"] form label:has(> :is(input:not([type="checkbox"],[type="radio"]),textarea,select)):not(.wedding-editor-field) { display:flex; flex-direction:column; gap:8px; }
body[data-wedding-ui="admin"] form label > :is(input:not([type="checkbox"],[type="radio"]),textarea,select),
body[data-wedding-ui="admin"] .form-group > :is(input:not([type="checkbox"],[type="radio"]),textarea,select) { width:100%; }
body[data-wedding-ui="admin"] .card::before { background:var(--color-border); }
body[data-wedding-ui="admin"] :is(header,.page-hero) > a { color:var(--color-brand); }
body[data-wedding-ui="admin"] :is(.btn-add,button#add,#add-item,#btn-add-guest,#btn-schedule-save,#btn-save-attendance-settings),
body[data-page="admin-messages"] #btnSync,
body[data-page="admin-music-playlists"] #save { background:var(--color-brand); color:#fff; border:1px solid var(--color-brand); border-radius:999px; }
body[data-page="admin-messages"] #btnImport { background:#fff; color:var(--color-brand); border:1px solid var(--color-brand); }
body[data-page="admin-guests"] #clear-all-filters { background:#fff; border:1px solid #c397a0; color:var(--color-brand); }
body[data-wedding-ui="admin"] :is(.btn-delete,.btn-danger),
body[data-page="admin-logs"] #btn-cleanup { background:#9f293a; border-color:#9f293a; color:#fff; -webkit-text-fill-color:#fff; }
body[data-page="admin-layout-config"] #btn-sync-guests { background:var(--color-brand); color:#fff; -webkit-text-fill-color:#fff; }
body[data-wedding-ui="admin"] :is(.tab-btn.active,.tab.active,.tab-btn[aria-selected="true"]) { background:var(--color-brand-subtle); color:var(--color-brand); border-color:var(--color-brand); box-shadow:inset 0 -3px var(--color-brand); }
body[data-wedding-ui="admin"] .toggle-switch input:checked + .toggle-slider { background:var(--color-brand); }
body[data-page="admin-faq"] main > .card:first-of-type { display:flex; align-items:center; flex-wrap:wrap; gap:12px; }
body[data-page="admin-faq"] main > .card:first-of-type label { margin:0; }
body[data-page="admin-faq"] .card .actions,
body[data-page="admin-announcements"] .card .actions { display:flex; gap:8px; flex-wrap:wrap; }
body[data-page="admin-game-control"] .card label { display:grid; gap:8px; }
body[data-page="admin-game-control"] .card :is(input,textarea) { width:100%; }
body[data-page="admin-song-requests"] #requests table { min-width:620px; }
body[data-page="admin-song-requests"] #requests button { margin:4px; white-space:nowrap; }
body[data-page="admin-settings"] .card-app .card-title { color:var(--color-text); }
body[data-page="admin-settings"] .card-app::before { background:var(--color-border); }
body[data-page="admin-vocab"] .add-row { align-items:stretch; }
body[data-page="admin-vocab"] .add-row label { display:grid; gap:8px; }
body[data-page="admin-vocab"] .add-row :is(input,select) { width:100%; }
body[data-page="admin-wedding"] .btn-save { box-shadow:var(--shadow-sm); }
body[data-page="admin-wedding"] #wedding-load-retry { background:#fff; }
.wedding-status-page { min-height:80dvh; display:grid; place-items:center; padding:24px 16px; }
.wedding-status-card { width:min(100%,640px); padding:clamp(24px,5vw,40px); text-align:center; }
.wedding-status-card p { color:var(--color-muted); margin:16px 0 24px; line-height:1.8; }
.wedding-status-card .wedding-actions { justify-content:center; }
@media(max-width:1099px) {
  body[data-wedding-ui="admin"].admin-shell-ready { padding-top:64px; }
  body[data-wedding-ui="admin"].admin-shell-ready > header { padding:24px 16px; min-height:0; }
  body[data-wedding-ui="admin"].admin-shell-ready main > header,
  body[data-wedding-ui="admin"].admin-shell-ready main:has(> h1) { padding-top:24px; }
}
@media(max-width:640px) {
  body[data-page="admin-dashboard"] .stats-grid,
  body[data-page="admin-guests"] .stats-bar { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
  body[data-page="admin-dashboard"] .stat-card { padding:16px 12px; }
  body[data-page="admin-vocab"] .add-row { display:grid; grid-template-columns:minmax(0,1fr); }
}

/* 來賓逐頁比對：選取狀態、問卷封面與投影可讀性。 */
body[data-page="game-center"] .game { border:1px solid var(--color-border); border-radius:24px; box-shadow:var(--shadow-sm); }
body[data-page="game-center"] .game strong { font-family:var(--wedding-heading); }
body[data-page="coffee-list"] .filters button[aria-pressed="true"],
body[data-page="coffee-list"] .actions a { background:var(--color-brand); color:#fff; border-color:var(--color-brand); }
body[data-page="coffee-list"] .actions :is(a,button) { border-radius:999px; }
body[data-page="coffee-list"] :is(.tag,.meta span) { background:var(--color-brand-subtle); color:var(--color-brand); }
body[data-page="line-join"] :is(.help-note,.footer-note,.qr-placeholder,.qr-note) { color:var(--color-muted); }
body[data-page="photo-wall"] .fab-upload { bottom:84px; background:var(--color-brand); color:#fff; box-shadow:var(--shadow-sm); }
body[data-page="lottery-display"] :is(.section-title,.no-winners,.prize-remaining,.winner-chip .wp,.disabled-page p,.disabled-page a,.page-footer,.page-footer a,.modal-prize-label,.loading-page) { color:#e9dadd; }
body[data-page="lottery-display"] .page-footer a { display:inline-flex; align-items:center; min-height:44px; }
body[data-page="message-board-wordcloud"] .blessing-kicker,
body[data-page="self-checkin"] .step { color:var(--color-brand); }
body[data-page="survey"] .hero-overlay,
body[data-page="liff-survey"] .hero-overlay { background:var(--color-brand-subtle); color:var(--color-text); }
body[data-page="survey"] .hero-overlay :is(h1,p),
body[data-page="liff-survey"] .hero-overlay :is(h1,p) { color:var(--color-text); -webkit-text-fill-color:currentColor; opacity:1; }
/* 桌機逐頁比對：避免清單操作隨卡片高度拉伸。 */
body[data-page="admin-announcements"] .actions,
body[data-page="admin-faq"] .actions { align-items:center; }
body[data-page="admin-games"] .row { border:1px solid var(--color-border); border-radius:24px; }
body[data-page="admin-games"] .move { display:flex; gap:8px; }
body[data-page="admin-ai-settings"] label { color:var(--color-text); }
body[data-page="admin-lottery"] > header { padding:0!important; min-height:0!important; border:0!important; }
body[data-page="admin-lottery"] .wedding-section-nav { grid-column:1/-1; }
body[data-page="admin-layout-config"] .add-form .form-row { align-items:start; }
body[data-page="admin-layout-config"] .add-form .form-row > button { align-self:start; margin-top:26px; }
body[data-page="admin-layout-config"] .add-form > div:last-child { display:grid; gap:8px; }
body[data-page="admin-layout-config"] .add-form input { width:100%; }
body[data-page="admin-layout-config"] td button { white-space:nowrap; min-width:64px; }
body[data-page="admin-layout-config"] #preview-canvas { width:100%!important; max-width:100%; min-width:0; }
body[data-page="ar-filter"] .stage { margin-inline:auto; }
body[data-page="admin-privacy"] label:has(> input[type=checkbox]) { margin-right:16px; }
body[data-page="game-shell"] .quiz-options button { background:var(--color-brand); color:#fff; }
body:is([data-page="survey"],[data-page="liff-survey"]) .step-actions button[id^="back-"],
body[data-page="photo-frame"] #clear,
body:is([data-page="love-brew"],[data-page="coffee-personality"]) .result button { background:#fff; border:1px solid #c397a0; color:var(--color-brand); }
body[data-wedding-ui][data-page="game-shell"] button.puzzle-piece { border-radius:0; padding:0; min-height:0; }
body[data-wedding-ui][data-page="game-shell"] button.rush-choice { border-radius:12px; padding:0; }
body[data-wedding-ui="admin"] :is(.modal-overlay,.modal-backdrop) { z-index:2000; }
body[data-page="seating-map"] .guest-info .table-badge { color:#fff; -webkit-text-fill-color:#fff; }
body[data-page="admin-survey"] .form-group { align-items:stretch; text-align:left; }
@media(max-width:640px) {
  body[data-page="admin-survey"] .form-row { display:grid; grid-template-columns:minmax(0,1fr); }
  body[data-page="admin-survey"] .q-item { flex-wrap:wrap; }
  body[data-page="admin-survey"] .q-item .q-actions { width:100%; margin-left:0; }
}
body[data-page="game-shell"] section { margin-inline:auto; }
body[data-page="game-shell"] .bingo-task input { margin-right:8px; max-width:100%; }
body[data-page="lottery-display"] .prize-card .p-remaining { color:#e9dadd; }
@media(min-width:768px) {
  body[data-page="checkin"] .search-card { grid-row:auto; }
  body[data-page="checkin"] .stats-bar { grid-row:1 / span 2; }
}

/* 管理者自訂封面文字保留原先深底，避免淺色設定在淺底失去對比。 */
body:is([data-page="survey"],[data-page="liff-survey"]) .hero-overlay.custom-title-color { background:#563c43; }
body:is([data-page="survey"],[data-page="liff-survey"]) .hero-overlay.custom-title-color p { color:#fff; }
/* Wedding details must contrast with both the default blush and custom dark header. */
body:is([data-page="survey"],[data-page="liff-survey"]) .wedding-info { color:#3d3637; -webkit-text-fill-color:currentColor; }
body:is([data-page="survey"],[data-page="liff-survey"]) .hero-overlay.custom-title-color .wedding-info { color:#fff; }

body[data-page="admin-survey"] .q-item > span:nth-child(3) { min-width:140px; }
body[data-page="admin-survey"] .form-group > * { margin-inline:0; }
body[data-page="oauth-result"] { min-height:0; width:calc(100% - 32px); margin:15vh auto; background:#fff; border:1px solid var(--color-border); border-radius:24px; box-shadow:var(--shadow-sm); text-align:center; }

/* 問卷標題用滿內容寬度後自然換行，不套用全站標題的均衡分行。 */
body:is([data-page="survey"],[data-page="liff-survey"]) #survey-title {
  width:100%; max-width:none; min-width:0;
  white-space:normal; word-break:normal; overflow-wrap:anywhere; text-wrap:wrap;
}
