/* Pub Quiz: brass accents, quiet surfaces, one clear primary action.
   Direction documented in DESIGN.md; compatible with existing theme tokens. */
body.pub-app{--pub-rule:color-mix(in srgb,var(--ink) 14%,transparent);--pub-soft:color-mix(in srgb,var(--ink) 5%,var(--parchment));--pub-radius:16px}
body.pub-app header{border-color:var(--pub-rule);box-shadow:0 6px 22px #0003}
body.pub-app #headerCity{border-color:transparent;background:transparent;border-radius:10px}
body.pub-app .hpill{border-color:var(--pub-rule);border-radius:12px}
body.pub-app .top-loc-btn{box-shadow:none!important;filter:none}
body.pub-app .detail-panel,body.pub-app .detail-panel.faved{background:var(--parchment);border:1px solid var(--pub-rule);border-radius:20px;box-shadow:0 12px 32px #0004}
body.pub-app .detail-panel .detail-toolbar{padding-top:16px;padding-bottom:14px;border-bottom-color:var(--pub-rule)}
body.pub-app .detail-panel .detail-toolbar .dp-title{font-size:30px!important;letter-spacing:.025em;line-height:1.1}
body.pub-app .detail-panel .detail-toolbar .dp-fav{border:0;box-shadow:none;background:var(--pub-soft);border-radius:12px}
body.pub-app .detail-panel .dp-inner{padding-top:16px}
body.pub-app .detail-date{font-size:15px;line-height:1.5;margin:0 0 6px;font-variant-numeric:tabular-nums}
body.pub-app .detail-panel .dp-addr{font-size:14px!important;line-height:1.5;margin-top:0;color:var(--muted2)}
body.pub-app .detail-panel .dp-daytags{border:0;padding-bottom:0;margin:14px 0 18px}
body.pub-app .detail-panel .dp-daytag{border:0!important;border-radius:6px;background:var(--pub-soft)!important;color:var(--muted2)!important;font-size:12px!important;padding:6px 10px;font-weight:550}
body.pub-app .detail-panel .dp-action{border:1px solid var(--pub-rule);border-radius:12px;box-shadow:none;background:var(--pub-soft);color:var(--ink);min-height:46px;font-weight:650}
body.pub-app .detail-panel .dp-action.navigate-primary{background:var(--gold);border-color:var(--gold);color:#241b0b}
body.pub-app .detail-panel .dp-mini-btn{border-color:var(--pub-rule);border-radius:10px;box-shadow:none;font-weight:550}
body.pub-app .detail-panel .dp-grid{gap:0;border-block:1px solid var(--pub-rule);margin:18px 0}
body.pub-app .detail-panel .dp-stat{border:0;border-radius:0;background:transparent;padding:14px 0;min-width:0}
body.pub-app .detail-panel .dp-stat:nth-child(even){padding-left:16px}
body.pub-app .detail-panel .dp-stat-lbl{font-size:10px!important;letter-spacing:.09em;margin-bottom:5px}
body.pub-app .detail-panel .dp-stat-val{font-size:14px!important;line-height:1.45;overflow-wrap:anywhere}
body.pub-app .detail-panel .dp-notes{background:transparent;border:0;padding:0;margin:18px 0;font-size:15px!important;line-height:1.65}
body.pub-app .detail-panel .dp-notes-lbl{font-size:10px!important;letter-spacing:.09em;margin-bottom:8px}
body.pub-app .detail-panel .dp-link{border-color:var(--pub-rule);background:transparent;border-radius:9px;min-height:40px}
body.pub-app .app-tabbar{border-color:var(--pub-rule);border-radius:22px;box-shadow:0 6px 24px #0003}
body.pub-app .app-tab:not(.map-main) .ico{background:transparent}
body.pub-app .quiz-evening{border-color:var(--pub-rule);box-shadow:0 6px 20px #0003}
body.pub-app :is(.detail-panel button,.detail-panel a,#headerCity,.hpill){transition:background-color .16s,border-color .16s,opacity .16s}
@media(hover:hover){body.pub-app .detail-panel .dp-action:hover,body.pub-app #headerCity:hover{background:var(--pub-soft);border-color:var(--gold)}body.pub-app .detail-panel .navigate-primary:hover{background:var(--gold);filter:brightness(1.05)}}
@media(prefers-reduced-motion:reduce){body.pub-app :is(.detail-panel button,.detail-panel a,#headerCity,.hpill){transition:none}}

/* Shared panel language: profile, social, statistics, shop, forms and games. */
body.pub-app :is(.modal-sheet,.sl-inner,.filt-sheet-inner,.room-sheet,.dq-sheet,.team-member-sheet,.profile-panel){border-color:var(--pub-rule);background-color:var(--parchment);color:var(--ink);box-shadow:0 12px 36px #0004}
body.pub-app :is(.modal-head,.sl-header,.social-head,.room-header,.pp-subpage-header,.team-member-head){background:var(--parchment);border-bottom:1px solid var(--pub-rule);padding:16px 20px;gap:12px}
body.pub-app :is(.modal-title,.sl-title,.stats-title,.social-title,.room-title,.pp-subpage-title,.team-member-title,.filt-sheet-title,.theme-store-title){font-family:'Bebas Neue',sans-serif!important;font-weight:400!important;font-size:28px!important;line-height:1.15;letter-spacing:.025em;min-width:0;overflow-wrap:anywhere;color:var(--ink)}
body.pub-app :is(.modal-x,.sl-close,.stats-close,.social-close,.pp-close,.pp-subpage-back,.pp-subpage-refresh,.pp-subpage-share,.team-member-close,.qr-close,.filt-sheet-close,.dq-close){width:44px;min-width:44px;height:44px;min-height:44px;border:0;border-radius:12px;background:var(--pub-soft);color:var(--ink);box-shadow:none;font:20px/1 system-ui!important;flex-shrink:0;cursor:pointer}
body.pub-app :is(.modal-body,.room-body){padding:20px;min-width:0}
body.pub-app :is(.pp-section-lbl,.stats-section-lbl,.form-label,.qr-label,.filt-sheet-lbl,.game-shelf-title){font-size:11px!important;letter-spacing:.09em;font-weight:650;line-height:1.5;color:var(--muted2)}
body.pub-app :is(.form-input,.form-select,.form-textarea,.pp-fc-input,.qr-input,.qr-member-input){min-width:0;max-width:100%;border:1px solid var(--pub-rule);border-radius:10px;background:var(--pub-soft);color:var(--ink);font:400 16px/1.45 system-ui!important;min-height:46px;box-shadow:none;accent-color:var(--gold)}
body.pub-app :is(.form-input,.form-select,.form-textarea,.pp-fc-input,.qr-input,.qr-member-input)::placeholder{color:var(--muted2);opacity:.8}
body.pub-app :is(.form-btn,.theme-pack-btn,.pp-fc-add-btn,.qr-save-btn,.filt-sheet-done){background:var(--gold);color:#241b0b;border:1px solid transparent;border-radius:12px;box-shadow:none;min-height:46px;font:650 14px/1.4 system-ui!important;padding:11px 14px}
body.pub-app :is(.form-btn.sec,.theme-pack-btn.secondary,.pp-fc-copy,.qr-member-add,.team-list-btn,.team-member-btn){background:var(--pub-soft);color:var(--ink);border:1px solid var(--pub-rule);border-radius:10px;min-height:44px;box-shadow:none;font-size:13px!important;font-weight:600}
body.pub-app :is(button:disabled,input:disabled,select:disabled){cursor:not-allowed}
body.pub-app :is(.form-err,.form-ok,.theme-status,.stats-empty,.lb-loading,.sl-msg,.pp-empty){font-size:14px!important;line-height:1.65;overflow-wrap:anywhere}
body.pub-app :is(.form-err,.form-ok):not(:empty){padding:12px;border-radius:10px}
body.pub-app .form-err:not(:empty){color:#ffaaa1;background:#d6403914}
:root.light body.pub-app .form-err:not(:empty){color:#a82925}
body.pub-app :is(.social-tab,.lb-tab,.admin-tab,.theme-mode-btn){min-width:0;min-height:44px;padding:10px 8px;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--muted2);font:600 13px/1.35 system-ui!important;white-space:normal;overflow-wrap:anywhere;cursor:pointer}
body.pub-app :is(.social-tab.act,.lb-tab.act,.admin-tab.act,.theme-mode-btn.act){background:var(--pub-soft);border-color:var(--pub-rule);color:var(--ink);box-shadow:inset 0 -2px var(--gold)}
body.pub-app :is(.social-tabs,.lb-tabs,.admin-tabs){gap:4px;background:transparent}
body.pub-app :is(.social-modal,.stats-inner){border:1px solid var(--pub-rule)!important;box-shadow:0 12px 36px #0004!important}
body.pub-app .stats-title{padding-right:52px}
body.pub-app #stats-tabs{padding:4px 12px 0}
body.pub-app #stats-tabs .lb-tab{font-size:12px!important;padding:10px 3px}
body.pub-app .stats-close{top:10px;right:12px}
body.pub-app .stats-grid{gap:1px;border-radius:14px;overflow:hidden;background:var(--pub-rule);border:1px solid var(--pub-rule)}
body.pub-app .stat-block{border:0;border-radius:0;background:var(--parchment);padding:18px 10px}
body.pub-app .stat-num{font:400 40px/1 'Bebas Neue',sans-serif!important;color:var(--ink);font-variant-numeric:tabular-nums}
body.pub-app .stat-lbl{font-size:10px;line-height:1.45;letter-spacing:.06em;margin-top:7px}
body.pub-app .badge-item{border:0;border-bottom:1px solid var(--pub-rule);border-radius:0;background:transparent;padding:14px 0;min-width:0}
body.pub-app .badge-item.locked{opacity:.72}
body.pub-app .badge-name{font-size:14px;line-height:1.4}
body.pub-app .badge-desc{font-size:12px;line-height:1.5}
body.pub-app .lb-row{border-color:var(--pub-rule);padding:14px 4px}
body.pub-app .lb-name{font-size:15px}
body.pub-app .lb-streak{font-variant-numeric:tabular-nums}
body.pub-app .pp-identity{padding:70px 20px 24px;gap:10px;background:var(--parchment);border-bottom:1px solid var(--pub-rule)}
body.pub-app .pp-avatar-btn{width:80px;height:80px;font-size:46px;border:1px solid var(--pub-rule);border-radius:24px;background:var(--pub-soft);box-shadow:none}
body.pub-app .pp-name-input{font:650 22px/1.4 system-ui!important;color:var(--ink);border:1px solid transparent;background:transparent;box-shadow:none;padding:5px 12px}
body.pub-app .pp-name-input:focus{border-color:var(--gold);background:var(--pub-soft)}
body.pub-app :is(.pp-name-hint,.pp-hero-email){color:var(--muted2);font-size:12px;line-height:1.5}
body.pub-app .pp-title{color:var(--ink);font:400 26px/1.2 'Bebas Neue',sans-serif!important;text-shadow:none}
body.pub-app .pp-section{border-color:var(--pub-rule)}
body.pub-app .pp-section-lbl{padding:18px 20px 8px}
body.pub-app .pp-row{padding:14px 20px;min-height:52px;font-size:15px!important}
body.pub-app .pp-row-label{min-width:0;overflow-wrap:anywhere}
body.pub-app .social-card{padding:16px 4px;margin:0;border:0;border-bottom:1px solid var(--pub-rule);border-radius:0;background:transparent;box-shadow:none}
body.pub-app .social-card .pp-section-lbl{padding:0 0 12px;font-size:11px!important}
body.pub-app .social-card .pp-friend-code-box{flex-direction:row;align-items:center;flex-wrap:wrap;gap:12px;padding:14px;background:var(--pub-soft);border:0;border-radius:12px}
body.pub-app .social-card .pp-fc-code{flex:1;min-width:0;font-size:24px;letter-spacing:.14em;text-align:left}
body.pub-app .social-card .pp-friend-code-box .pp-fc-copy{width:auto}
body.pub-app .pp-friend-remove{width:44px;height:44px;border:0;border-radius:10px}
body.pub-app :is(.pp-friend-name,.team-list-meta){overflow-wrap:anywhere}
body.pub-app .pp-friend-name{font-size:15px!important;line-height:1.4}
body.pub-app .pp-friend-status{font-size:12px!important;line-height:1.5}
body.pub-app .team-section-title{font-size:14px!important;letter-spacing:.04em;color:var(--ink)!important}
body.pub-app #social-teams-list .pp-friend-name{font-size:19px!important;font-weight:650!important;line-height:1.3}
body.pub-app #social-teams-list .team-list-meta{font-size:13px!important;line-height:1.5}
body.pub-app .pp-add-friend{min-width:0;flex-wrap:wrap}
body.pub-app .pp-add-friend .pp-fc-input{flex:1;min-width:120px}
body.pub-app .theme-pack{border:1px solid var(--pub-rule)!important;border-radius:14px;background:var(--pub-soft)}
body.pub-app .theme-pack-cover{height:100px}
body.pub-app .theme-pack-cover-word{background:var(--parchment);color:var(--muted2);border:1px solid var(--pub-rule);font-size:10px}
body.pub-app .theme-pack-name{font:400 23px/1.15 'Bebas Neue',sans-serif!important}
body.pub-app .theme-pack .theme-product-name{font:650 15px/1.35 system-ui!important;color:var(--ink)}
body.pub-app .theme-pack .theme-product-desc{font:400 13px/1.5 system-ui!important;color:var(--muted2)}
body.pub-app .theme-pack .theme-product-body{padding:14px!important;gap:10px!important}
body.pub-app .game-shelf-head{min-height:44px;margin-top:10px}
body.pub-app .theme-pack-btn.secondary{background:transparent}
body.pub-app .game-wallet{border-color:var(--pub-rule);background:var(--pub-soft);box-shadow:none;border-radius:16px}
body.pub-app .game-wallet-sub{font-size:13px;line-height:1.5}
body.pub-app .admin-tabs{flex-wrap:wrap;overflow:visible;gap:4px;padding-bottom:12px;border-bottom:1px solid var(--pub-rule)}
body.pub-app .admin-tab{flex:1 1 90px}
body.pub-app :is(.av-item,.pending-item,.restaurant-partner-card,.restaurant-test-panel){background:var(--pub-soft);border:1px solid var(--pub-rule);border-radius:12px;padding:14px}
body.pub-app :is(.pending-item-name,.av-name,.restaurant-partner-name){font-size:16px;line-height:1.4;overflow-wrap:anywhere}
body.pub-app :is(.pending-item-meta,.av-info,.pending-item-notes,.restaurant-partner-meta){font-size:13px;line-height:1.55;overflow-wrap:anywhere}
body.pub-app :is(.av-edit,.av-del,.btn-reject){min-width:44px;min-height:44px}
body.pub-app .pending-actions{flex-wrap:wrap}
body.pub-app #quiz-import-queue table{border-collapse:collapse;font-size:13px!important;line-height:1.5}
body.pub-app #quiz-import-queue :is(td,th){text-align:left;vertical-align:top;padding:10px 6px;border-bottom:1px solid var(--pub-rule)}
body.pub-app #quiz-import-queue pre{font-size:12px;line-height:1.6;max-width:100%;overflow:auto}
body.pub-app #quiz-import-queue details{margin:14px 0}
body.pub-app #quiz-import-queue summary{cursor:pointer;min-height:44px;align-content:center}
body.pub-app :is(.qr-sheet,.dq-sheet,.room-sheet){border-color:var(--pub-rule);box-shadow:0 12px 36px #0004}
body.pub-app :is(.qr-header,.qr-footer){border-color:var(--pub-rule)}
body.pub-app :is(.qr-team-chip,.qr-pos-btn){min-height:44px;border-radius:10px;border-color:var(--pub-rule)}
body.pub-app .qr-member-row{min-width:0;flex-wrap:wrap}
body.pub-app .qr-member-input{flex:1 1 140px}
body.pub-app #qpModal .dq-title{font:400 30px/1.15 'Bebas Neue',sans-serif!important;color:var(--ink)}
body.pub-app #qpBody{font-size:15px;line-height:1.6;overflow-wrap:anywhere}
body.pub-app .room-player-row{background:var(--pub-soft);padding:12px;border:1px solid var(--pub-rule)}
body.pub-app .room-player-name{color:var(--ink)}
body.pub-app .room-code{font:400 clamp(36px,9vw,52px)/1.2 'Bebas Neue',sans-serif;letter-spacing:.12em;overflow-wrap:anywhere}
body.pub-app #dqModal :is(.dq-question-card,.dq-opt,.dq-close){border-color:var(--pub-rule)}
body.pub-app #dqModal .dq-sheet{box-shadow:0 12px 36px #0004}
body.pub-app :is(.onboard-card,.onboard-point){border-color:var(--pub-rule);box-shadow:none}
body.pub-app .onboard-desc{font-size:15px;line-height:1.6}
body.pub-app .sl-trip-times{font:650 18px/1.3 system-ui!important;font-variant-numeric:tabular-nums}
body.pub-app .sl-trip-head{flex-wrap:wrap;gap:10px;padding:16px 20px}
body.pub-app .sl-trip-meta{padding-inline:20px}
:root.light body.pub-app :is(.room-sheet,.pp-identity,.modal-sheet,.social-head){background:var(--surface-card,#fffaf1);color:var(--ink)}
@media(min-width:601px){body.pub-app :is(.social-modal,.stats-inner,.modal-sheet,.room-sheet,.sl-inner){border-radius:22px!important}body.pub-app .social-modal{bottom:24px}body.pub-app .theme-store-grid{gap:14px}}
@media(max-width:360px){body.pub-app :is(.modal-body,.room-body){padding:16px}body.pub-app :is(.social-title,.stats-title){font-size:25px!important}body.pub-app #stats-tabs .lb-tab{font-size:10px!important}body.pub-app .social-head{padding:14px 16px}body.pub-app .theme-store-grid{grid-template-columns:minmax(0,1fr)}body.pub-app .social-card .pp-fc-code{font-size:21px}body.pub-app .qr-member-row>button{width:100%}}
@media(prefers-reduced-motion:reduce){body.pub-app :is(.profile-panel,.pp-body,.pp-subpage,.modal-overlay,.modal-sheet,.stats-modal,.stats-inner,.social-modal,.social-body,.sl-modal,.sl-inner,.room-sheet,.dq-sheet,.filt-sheet,.filt-sheet-inner){transition:none!important;scroll-behavior:auto!important}}
/* Filter controls need readable ink in light mode as well as dark mode. */
body.pub-app #fbar{background:transparent!important}
body.pub-app #fbar :is(.lbtn,select,input){color:var(--ink)!important;background:var(--pub-soft);border-color:var(--pub-rule)}
body.pub-app #fbar .lbtn{font-size:13px!important;white-space:normal;line-height:1.4}
body.pub-app #fbar select{font-size:14px!important;padding-left:9px;padding-right:24px}
body.pub-app #fbar .sinput{background:var(--pub-soft);font-size:16px!important}
body.pub-app #fbar .cbtn{color:var(--ink)!important;background:transparent}
body.pub-app .restaurant-mini-btn{background:var(--pub-soft);color:var(--ink);min-height:44px}
:root.light body.pub-app .form-input[type=date]{color-scheme:light!important}
@media(max-width:360px){body.pub-app .admin-tab{flex-basis:72px;font-size:12px!important}body.pub-app .av-item{display:grid;grid-template-columns:8px minmax(0,1fr) 44px;gap:10px}body.pub-app .av-item>div:nth-child(2){grid-column:2/-1}body.pub-app .av-item .av-edit{grid-column:2;justify-self:end}body.pub-app .av-item .av-del{grid-column:3}body.pub-app .av-item .av-dot{grid-row:1}}
/* Joining and preparing a game use the same theme, including light mode. */
body.pub-app #gameJoinOverlay{background:var(--parchment);color:var(--ink);overflow-y:auto;padding:24px}
body.pub-app #gameJoinOverlay input{min-width:0;max-width:100%;min-height:46px;background:var(--pub-soft)!important;color:var(--ink)!important;border-color:var(--pub-rule)!important;font-family:system-ui!important}
body.pub-app #gameJoinOverlay [style*="color:rgba(255,200,87"]{color:var(--muted2)!important}
body.pub-app :is(.gp-pre-title,.gp-countdown-title){font-family:'Bebas Neue',sans-serif!important;color:var(--ink)}
body.pub-app :is(.gp-pre-sub,.gp-pre-step){color:var(--muted2);font-size:14px;line-height:1.6}
body.pub-app .gp-pre-steps{background:var(--pub-soft);border-color:var(--pub-rule)}
body.pub-app .room-player-status[style*="rgba(255,255,255"]{color:var(--muted2)!important}
body.pub-app .onboard-close{width:44px;height:44px;min-width:44px;min-height:44px;border:0;border-radius:12px;background:var(--pub-soft);color:var(--ink);font:20px/1 system-ui!important}
body.pub-app :is(.onboard-btn,.city-btn,.city-loc){min-height:46px;border-radius:12px}
body.pub-app :is(.onboard-title,.city-title){font-family:'Bebas Neue',sans-serif!important;font-size:32px!important;font-weight:400!important;line-height:1.15;letter-spacing:.025em}
body.pub-app .onboard-desc{font-size:15px!important;line-height:1.6}
body.pub-app .theme-pack-cover .theme-product-meta{font:600 11px/1.4 system-ui!important;color:var(--ink)!important;left:10px!important;bottom:8px!important}
body.pub-app .game-shelf-title{font-family:system-ui!important;font-size:11px!important}
