/* The restaurant workspace has one header; browsing controls belong to the list. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.header-identity{display:flex;align-items:center;gap:16px;min-width:0}
.dining-title{display:none}
.account-menu{position:relative;flex-shrink:0;z-index:1001}
.account-menu summary{display:flex;align-items:center;gap:8px;min-height:44px;padding:4px 8px;list-style:none;cursor:pointer;border-radius:9px;font-size:12px;color:var(--muted)}
.account-menu summary::-webkit-details-marker{display:none}
.account-menu summary:hover,.account-menu[open] summary{background:#ecefe6}
.account-menu summary:focus-visible{outline:3px solid #b28b50;outline-offset:2px}
.account-avatar{width:28px;height:28px;display:grid;place-items:center;border-radius:50%;background:#e8ecdf;color:var(--green);font-size:12px;font-weight:600}
.account-popover{position:absolute;right:0;top:calc(100% + 7px);width:210px;padding:14px;background:#fffefa;border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 36px #273e3620}
.account-popover p{margin:0 0 12px;color:var(--muted);font-size:12px;line-height:1.6}
.account-popover strong{display:block;color:var(--ink);font-size:15px;font-weight:500}
.account-popover button{width:100%;min-height:44px;text-align:left;font-size:13px}

.dining-page{height:100dvh;overflow:hidden}
.dining-page header{height:56px;padding:0 24px;max-width:none;background:#fffefa}
.dining-page header .brand{min-height:44px}
.dining-page .brand-name,.dining-page .brand-suffix{display:none}
.dining-page .monogram{width:30px;height:30px;font-size:21px;border-radius:9px}
.dining-page .dining-title{display:block;font-size:21px;font-weight:600;letter-spacing:-.7px;line-height:1.2;margin:0}
.dining-page main{height:calc(100dvh - 56px);min-height:0;max-width:1600px;padding:16px 24px 20px;display:flex;flex-direction:column}
.dining-page footer{display:none}
#dining:not([hidden]){display:flex;flex:1;min-height:0}
.dining-workspace{display:grid;grid-template-columns:clamp(320px,34vw,440px) minmax(0,1fr);gap:20px;flex:1;min-height:0;min-width:0;align-items:stretch}
.browse-column{display:flex;flex-direction:column;min-width:0;min-height:0}
.browse-controls{flex-shrink:0;padding-right:6px}
.dining-page .filters{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:0;border:0;border-radius:0}
.dining-page .filters label{min-width:0;font-size:12px;gap:6px}
.dining-page .search-control{position:relative;display:block}
.search-control svg{position:absolute;left:13px;top:13px;width:18px;height:18px;fill:none;stroke:var(--muted);stroke-width:1.6;pointer-events:none}
.dining-page input,.dining-page select{width:100%;min-width:0;height:44px;font-size:14px;padding:10px 12px;background:#fffefa}
.dining-page #search{padding-left:39px}
#filter-toggle{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:10px 14px;font-size:13px;background:#fffefa;white-space:nowrap}
#filter-toggle[aria-expanded=true]{border-color:#829580;background:#e8eddf}
.filter-options{display:none}
.filter-options.expanded{display:grid;grid-column:1/-1;grid-template-columns:1fr 1fr;gap:12px;padding:14px;background:#eeeee5;border:1px solid var(--line);border-radius:12px;max-height:35dvh;overflow-y:auto}
.filter-options label:last-child{grid-column:1/-1}
.results-toolbar{display:grid;grid-template-columns:minmax(0,1fr) minmax(200px,242px);align-items:center;gap:10px;padding:10px 0 12px}
.dining-page #catalog-message{font-size:12px;line-height:1.4;margin:0;color:var(--muted)}
.sort-control{display:block;min-width:0}
.dining-page .sort-control select{font-size:13px;height:40px;padding:8px 10px;background:transparent;border-color:transparent;cursor:pointer}
.dining-page .sort-control select:hover,.dining-page .sort-control select:focus-visible{background:#fffefa;border-color:var(--line)}
#view-toggle{display:none}
.restaurant-list{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-gutter:stable;padding:2px 6px 8px 2px;margin-left:-2px}
.restaurant-row{border:1px solid var(--line);border-radius:14px;background:#fffefa;margin-bottom:12px;transition:border-color .15s}
.restaurant-row:hover{border-color:#9aaa97}
.restaurant-row.selected{background:#edf0e7;box-shadow:inset 3px 0 #416453;border-color:#829580}
.restaurant-select{display:flex;align-items:center;gap:14px;width:100%;min-height:44px;padding:14px;text-align:left;border:0;border-radius:13px;background:transparent;color:var(--ink);cursor:pointer}
.restaurant-select:focus-visible{outline-offset:-3px}
.thumb,.photo-placeholder{width:78px;height:90px;border-radius:9px;object-fit:cover;flex-shrink:0}
.photo-placeholder{background:#e6e7dc;color:#89927b;display:grid;place-items:center;font-size:28px}
.row-copy{display:grid;gap:5px;min-width:0}
.row-copy strong{font-family:Manrope,sans-serif;font-size:15px;font-weight:600;letter-spacing:-.3px;line-height:1.35;overflow-wrap:anywhere}
.row-copy span,.row-copy small{font-size:11px;color:var(--muted);line-height:1.45}
.row-copy .saved-label{color:var(--green)}
.row-copy .our-rating-badge{color:#65418a;font-weight:600}
.row-arrow{margin-left:auto;flex-shrink:0;font-size:18px;color:#778777}

.explore-panel{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden;border:1px solid #d8ddd2;border-radius:16px;background:#fffefa}
.panel-toolbar{display:flex;align-items:center;gap:4px;padding:8px 12px;border-bottom:1px solid var(--line);flex-shrink:0;background:#fffefa}
.panel-toolbar button{font-size:12px;padding:8px 16px;border:0;border-radius:7px;min-height:36px;color:#6e7970;background:transparent;cursor:pointer}
.panel-toolbar button[aria-pressed=true]{background:#e8eddf;color:#273e36;font-weight:600}
#detail-back{display:none}
.map-column{display:flex;flex-direction:column;position:static;min-height:0;flex:1}
#map{flex:1;min-height:150px;background:#e4e8de;z-index:0}
#map-note{padding:8px 14px;margin:0;font-size:10px;background:#fffefa}
.dining-marker span{display:block;border-radius:50%;width:24px;height:24px;background:var(--green);border:4px solid #fff;box-shadow:0 2px 8px #273e3655}
.dining-marker.selected span{background:#ba8647;transform:scale(1.2)}
.marker-cluster-small,.marker-cluster-medium{background:#b8c4afaa}
.marker-cluster-small div,.marker-cluster-medium div{background:#416453;color:white}
.leaflet-container{font-family:'DM Sans',sans-serif}
.leaflet-control-attribution{font-size:10px!important}
.restaurant-detail{min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;flex:1}
.detail-photo,.photo-placeholder.large{display:block;height:240px;width:100%;object-fit:cover;border-radius:0}
.photo-placeholder.large{display:grid;font-size:100px;background:linear-gradient(135deg,#d9dece,#eae6d8)}
.detail-body{padding:26px 32px 32px}
.detail-body h2{font-size:32px;letter-spacing:-1px;line-height:1.15;margin:6px 0 12px;overflow-wrap:anywhere}
.detail-body p{font-size:14px;line-height:1.7}
.detail-body .eyebrow{font-size:10px;margin:0}
.detail-body p.small{font-size:12px}
.detail-links,.actions{display:flex;gap:12px;flex-wrap:wrap;margin:20px 0}
.detail-links a{font-size:13px;min-height:36px;display:flex;align-items:center}
.actions button[aria-pressed=true]{background:var(--ink);color:white}
.detail-body .actions button,.detail-body form button{font-size:13px;min-height:44px}
.detail-body form{padding-top:8px}
.detail-body form label{display:grid;gap:9px;font-size:13px}
.detail-body textarea{font:inherit;color:var(--ink);resize:vertical;background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:12px;min-width:0}
.detail-body form button{margin-top:10px}
textarea:focus-visible{outline:3px solid #b28b50;outline-offset:3px}
/* Shared score stays compact; personal voting opens only when requested. */
.detail-ratings{display:flex;align-items:center;flex-wrap:wrap;gap:8px 22px;margin:8px 0 12px}
.our-ratings{position:relative;color:#65418a}
.our-rating-toggle{display:flex;align-items:center;gap:8px;min-height:44px;padding:7px 11px;border:1px solid #ded5e8;border-radius:9px;background:#f7f4fa;color:#65418a;font:inherit;font-size:12px;cursor:pointer;white-space:nowrap}
.our-rating-toggle:hover,.our-rating-toggle[aria-expanded=true]{background:#eee7f5;border-color:#bba8cf}
.our-rating-icon{font-size:20px;line-height:1}
.our-rating-total{font-size:16px;font-weight:600;font-variant-numeric:tabular-nums}
.our-rating-count{font-size:11px;color:#806993}
.our-rating-count:empty{display:none}
.our-rating-editor{position:absolute;top:calc(100% + 8px);left:0;width:280px;max-width:calc(100vw - 40px);padding:8px 16px 12px;background:#fffefa;border:1px solid #d8cde9;border-radius:12px;box-shadow:0 10px 32px #34213f24;z-index:20;overflow-y:auto}
.our-rating-editor.opens-above{top:auto;bottom:calc(100% + 8px)}
.rating-editor-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px}
.rating-close{width:44px;height:44px;margin-right:-10px;border:0;background:transparent;color:#806993;font-size:24px;cursor:pointer}
.star-buttons{display:flex;gap:4px;margin:0;justify-content:space-between}
.star-buttons button{display:grid;place-items:center;flex:0 0 44px;width:44px;height:44px;padding:0;font:26px/1 Arial,sans-serif;color:#65418a;background:transparent;border:1px solid transparent;border-radius:8px;cursor:pointer}
.star-buttons button:hover,.star-buttons button[aria-pressed=true]{background:#eee7f5;border-color:#bba8cf}
.detail-body .rating-breakdown{font-size:12px;margin:7px 0 0;line-height:1.5;color:#806993}
.rating-clear{min-height:44px;margin:3px 0 -4px;padding:8px 0;border:0;background:transparent;color:#65418a;font-size:12px;text-decoration:underline;cursor:pointer}
.detail-body .rating-message{font-size:12px;line-height:1.5;margin:6px 0 0}
.rating-message:empty{display:none}

/* Public references remain gold; personal votes remain purple. */
.reference-rating{padding:18px;border:1px solid var(--line);border-radius:12px;background:#faf7f0;margin:20px 0}
.reference-rating.compact{padding:12px 14px;margin:0;border:0;border-top:1px solid var(--line);border-radius:0;background:transparent}
.reference-score{display:flex;align-items:center;gap:10px;line-height:1.3}
.reference-rating.compact .reference-score{flex-wrap:wrap}
.detail-body .reference-rating.detail-reference{margin:0;padding:0;border:0;border-radius:0;background:transparent}
.reference-score strong{font-size:18px;font-variant-numeric:tabular-nums}
.reference-stars{position:relative;display:inline-block;white-space:nowrap;font:20px/1.3 Arial,sans-serif;letter-spacing:2px;color:#ded4c3}
.reference-stars>span{position:absolute;left:0;top:0;overflow:hidden;color:#a97119;white-space:nowrap;letter-spacing:2px}
.reference-count{font-size:13px;color:var(--muted)}
.reference-meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;margin-top:7px;font-size:11px;color:var(--muted)}
.reference-meta a{font-size:12px;font-weight:400;letter-spacing:normal;white-space:nowrap;color:#5e5e5e;text-decoration:none}
.reference-meta a:hover{text-decoration:underline}
.reference-missing{font-size:12px;color:var(--muted);margin:0}
.reference-rating p.small{margin:9px 0 0}
.restaurant-row.selected .reference-rating{background:#f1f0e6}
.reference-scope{border:1px solid #cbbda4;padding:2px 6px;border-radius:4px;color:#735b34;font-size:10px}
.dining-page .status:not(:empty){position:fixed;bottom:18px;left:50%;transform:translateX(-50%);background:#273e36;color:#fff;padding:12px 20px;border-radius:12px;z-index:1200;box-shadow:0 6px 24px #273e3622;font-size:12px;max-width:90vw;pointer-events:none}
.dining-page .status:empty{margin:0}

@media(max-width:1000px) and (min-width:701px){
 .dining-page main{padding:14px 16px 16px}.dining-workspace{gap:16px}
 .detail-body{padding:22px}.detail-photo{height:200px}.detail-body h2{font-size:28px}
}
@media(max-width:700px), (max-height:500px) and (max-width:1000px){
 .dining-page{height:auto;overflow:auto}
 .dining-page header{height:56px;padding:0 max(16px,env(safe-area-inset-left)) 0 max(16px,env(safe-area-inset-right))}
 .header-identity{gap:12px}.dining-page .dining-title{font-size:20px;letter-spacing:-.6px}.account-label{display:none}
 .account-menu summary{padding:4px;gap:5px}
 .dining-page main{height:auto;min-height:calc(100dvh - 56px);padding:16px max(16px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}
 #dining:not([hidden]){display:block}.dining-workspace{display:block}.browse-column{display:block}.browse-controls{padding:0}
 .dining-page input,.dining-page select{font-size:16px;height:48px}
 .search-control svg{top:15px}
 #filter-toggle{min-height:48px;font-size:14px}
 .filter-options.expanded{max-height:none}
 .results-toolbar{grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;padding:10px 0 14px}
 #catalog-message{grid-column:1;grid-row:1}
 #view-toggle{display:block;grid-column:2;grid-row:1;min-height:44px;min-width:90px;font-size:13px;padding:9px 12px;background:#fffefa}
 .sort-control{grid-column:1/-1;grid-row:2}
 .dining-page .sort-control select{height:48px;font-size:16px;padding:10px 12px;border-color:var(--line);background:#fffefa}
 .restaurant-list{height:auto;overflow:visible;max-height:none;padding:0;margin:0}
 .restaurant-select{padding:14px;gap:12px}.thumb{width:76px;height:88px}
 .row-copy strong{font-size:16px}.row-copy span,.row-copy small{font-size:12px;line-height:1.5}
 .explore-panel{display:none}.map-view .explore-panel{display:flex;height:65dvh}.map-view .restaurant-list{display:none}.map-view .panel-toolbar{display:none}
 .details-open .explore-panel{display:flex;position:fixed;inset:0;border:0;border-radius:0;z-index:1100;height:100dvh}
 .details-open .panel-toolbar{display:flex;padding:8px 12px;padding-top:max(8px,env(safe-area-inset-top));padding-left:max(12px,env(safe-area-inset-left))}
 .details-open #panel-map,.details-open #panel-detail{display:none}
 .panel-toolbar #detail-back{display:block;min-height:44px;font-size:14px;padding:10px 12px}
 .detail-photo{height:230px}
 .detail-body{padding:22px max(20px,env(safe-area-inset-right)) max(28px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left));max-width:700px;margin-inline:auto}
 .detail-body h2{font-size:28px}.detail-body p{font-size:15px;line-height:1.65}.detail-body p.small{font-size:12px}
 .detail-links{gap:10px;margin:18px 0}.detail-links a{justify-content:center;min-height:44px;border:1px solid var(--line);border-radius:9px;padding:10px 14px;text-decoration:none;font-size:14px}
 .detail-body .actions button,.detail-body form button{font-size:14px;min-height:46px}.detail-body form label{font-size:14px}.detail-body textarea{font-size:16px}
 .detail-ratings{gap:6px 16px}.detail-ratings>[data-our-rating]{flex-basis:100%}.our-rating-editor{max-width:calc(100vw - 40px)}
 .reference-rating.compact{padding:10px 14px}.reference-meta{margin-top:3px;min-height:44px}.reference-meta a{min-height:44px;display:inline-flex;align-items:center}.reference-rating .reference-score{gap:8px}.reference-rating{margin:18px 0;padding:14px}.reference-rating p.small{font-size:12px;line-height:1.5}
 .dining-page .status:not(:empty){bottom:max(16px,env(safe-area-inset-bottom));width:max-content;max-width:calc(100vw - 32px)}
 .leaflet-control-zoom a{width:44px!important;height:44px!important;line-height:44px!important}
}
@media(max-height:500px) and (max-width:1000px){.detail-photo{height:160px}.map-view .explore-panel{height:75dvh}}
@media(prefers-reduced-motion:reduce){.restaurant-row{transition:none}}
