/* BitePrice design system.
   Every class is prefixed with bp- so it never collides with Bootstrap or the
   legacy page styles that still serve admin and account screens. */

:root {
    --bp-bg:#f6f5ee;
    --bp-surface:#ffffff;
    --bp-surface-2:#efeee5;
    --bp-surface-3:#e6e5da;
    --bp-line:#e2e1d6;
    --bp-line-strong:#cfcec2;
    --bp-text:#17181c;
    --bp-text-2:#5a5f58;
    --bp-text-3:#878c83;
    --bp-ink:#17181c;
    --bp-lime:#c9f25d;
    --bp-lime-soft:#eef9cf;
    --bp-lime-text:#3f5c00;
    --bp-orange:#ff5b30;
    --bp-orange-soft:#ffe6dc;
    --bp-orange-text:#c23a14;
    --bp-up:#c23a14;
    --bp-down:#2f7d18;
    --bp-on-accent:#17181c;
    --bp-overlay:rgba(18,20,17,.48);
    --bp-shadow-1:0 1px 2px rgba(23,24,28,.06),0 2px 8px rgba(23,24,28,.05);
    --bp-shadow-2:0 8px 28px rgba(23,24,28,.12),0 2px 6px rgba(23,24,28,.06);
    --bp-shadow-3:0 18px 50px rgba(23,24,28,.22);
    --bp-radius-s:10px;
    --bp-radius:16px;
    --bp-radius-l:24px;
    --bp-gutter:16px;
    --bp-max:1120px;
    --page-content-width:var(--bp-max);
    --page-gutter:var(--bp-gutter);
    --bp-topbar-h:60px;
    --bp-tabbar-h:64px;
    --bp-font:'DM Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
    --bp-mono:'DM Mono',ui-monospace,monospace;
    --bp-serif:'Playfair Display',Georgia,serif;
    --bp-ease:cubic-bezier(.2,.8,.2,1);
}
html[data-theme="dark"] {
    --bp-bg:#0c0c0e;
    --bp-surface:#151518;
    --bp-surface-2:#1d1d21;
    --bp-surface-3:#26262b;
    --bp-line:#232328;
    --bp-line-strong:#34343b;
    --bp-text:#f4f4f5;
    --bp-text-2:#a1a1aa;
    --bp-text-3:#71717a;
    --bp-lime-soft:rgba(201,242,93,.1);
    --bp-lime-text:#d4f77a;
    --bp-orange-soft:rgba(255,91,48,.14);
    --bp-orange-text:#ff8a66;
    --bp-up:#ff8a66;
    --bp-down:#b5ec5f;
    --bp-overlay:rgba(0,0,0,.66);
    --bp-shadow-1:0 1px 0 rgba(255,255,255,.03) inset,0 1px 2px rgba(0,0,0,.5);
    --bp-shadow-2:0 1px 0 rgba(255,255,255,.04) inset,0 12px 32px rgba(0,0,0,.55);
    --bp-shadow-3:0 1px 0 rgba(255,255,255,.05) inset,0 24px 64px rgba(0,0,0,.7);
}
@media (min-width:720px) { :root { --bp-gutter:28px; --bp-topbar-h:68px; } }

/* ---------- Base ---------- */
html { -webkit-text-size-adjust:100%; overflow-x:clip; }
body { background:var(--bp-bg) !important; color:var(--bp-text) !important; font-family:var(--bp-font); overflow-x:clip; -webkit-tap-highlight-color:transparent; }
.site-shell.bp-shell { overflow:visible; min-height:100dvh; display:flex; flex-direction:column; }
.bp-shell > main { flex:1; min-width:0; }
html[data-theme] .bp-shell a { color:inherit; }
.bp :is(h1,h2,h3,h4,p) { margin:0; max-width:none; letter-spacing:normal; line-height:1.25; }
.bp :is(button,input,select,textarea) { font-family:inherit; }
.bp button { -webkit-appearance:none; appearance:none; }
.bp img { max-width:100%; }
.bp :focus-visible { outline:3px solid var(--bp-orange); outline-offset:2px; }
.bp-sr { position:absolute !important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.bp-num { font-variant-numeric:tabular-nums; }

/* ---------- Page geometry ---------- */
@media (min-width:720px) { html { scrollbar-gutter:stable; } }
.bp-page { width:100%; max-width:calc(var(--bp-max) + 2 * var(--bp-gutter)); margin:0 auto; padding:16px var(--bp-gutter) 40px; }
.bp-page--flush { padding-top:0; }
.bp-stack { display:grid; gap:28px; }
@media (min-width:720px) { .bp-page { padding-top:28px; padding-bottom:64px; } .bp-stack { gap:44px; } }

/* ---------- Typography ---------- */
.bp-eyebrow { display:inline-flex; align-items:center; gap:6px; color:var(--bp-orange-text); font:600 .7rem/1.2 var(--bp-mono); letter-spacing:.09em; text-transform:uppercase; }
.bp-h1 { font-size:clamp(1.85rem,6.4vw,3.1rem) !important; font-weight:700; letter-spacing:-.04em !important; line-height:1.02 !important; }
.bp-h1 em,.bp-h2 em { font-family:var(--bp-serif); font-style:italic; font-weight:600; letter-spacing:-.02em; }
.bp-h2 { font-size:clamp(1.25rem,3.6vw,1.6rem) !important; font-weight:700; letter-spacing:-.03em !important; line-height:1.15 !important; }
.bp-h3 { font-size:1.02rem !important; font-weight:700; letter-spacing:-.015em !important; }
.bp-lead { color:var(--bp-text-2); font-size:1rem; line-height:1.5 !important; }
.bp-muted { color:var(--bp-text-2); }
.bp-faint { color:var(--bp-text-3); }
.bp-small { font-size:.8rem; }

/* ---------- Section ---------- */
.bp-section { display:grid; gap:14px; min-width:0; }
.bp-section-head { display:flex; align-items:flex-end; justify-content:space-between; gap:12px; }
.bp-section-head > div:first-child { display:grid; gap:4px; min-width:0; }
.bp-section-head .bp-seg { flex:none; }
.bp-link { display:inline-flex; align-items:center; gap:6px; color:var(--bp-text) !important; font-weight:700; font-size:.86rem; white-space:nowrap; text-decoration:underline; text-decoration-color:var(--bp-lime); text-decoration-thickness:2px; text-underline-offset:4px; }
.bp-link i { font-size:.75em; }

/* ---------- Buttons ---------- */
.bp-btn { display:inline-flex; align-items:center; justify-content:center; gap:9px; min-height:48px; padding:0 20px; border:1px solid transparent; border-radius:999px; background:var(--bp-surface-2); color:var(--bp-text) !important; font:700 .92rem/1 var(--bp-font); white-space:nowrap; cursor:pointer; text-decoration:none; transition:transform .15s var(--bp-ease),background .15s,box-shadow .15s,border-color .15s; }
.bp-btn:active { transform:scale(.97); }
.bp-btn:disabled,.bp-btn[aria-disabled="true"] { opacity:.5; cursor:not-allowed; transform:none; }
.bp-btn--primary { background:var(--bp-orange); color:#fff !important; box-shadow:0 6px 18px color-mix(in srgb,var(--bp-orange) 32%,transparent); }
.bp-btn--primary:hover { background:#ff6d47; }
.bp-btn--lime { background:var(--bp-lime); color:var(--bp-ink) !important; }
.bp-btn--ink { background:var(--bp-ink); color:#fff !important; }
html[data-theme="dark"] .bp-btn--ink { background:var(--bp-text); color:var(--bp-bg) !important; }
.bp-btn--ghost { background:transparent; border-color:var(--bp-line-strong); }
.bp-btn--ghost:hover { border-color:var(--bp-text-2); }
.bp-btn--block { width:100%; }
.bp-btn--sm { min-height:38px; padding:0 14px; font-size:.82rem; }
.bp-icon-btn { display:inline-grid; place-items:center; flex:none; width:44px; height:44px; padding:0; border:1px solid var(--bp-line); border-radius:999px; background:var(--bp-surface); color:var(--bp-text) !important; font-size:1rem; cursor:pointer; transition:transform .15s var(--bp-ease),background .15s; }
.bp-icon-btn:active { transform:scale(.92); }
.bp-icon-btn--float { border:0; background:color-mix(in srgb,var(--bp-surface) 88%,transparent); box-shadow:var(--bp-shadow-2); backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); }

/* ---------- Chips ---------- */
.bp-chip-row { display:flex; gap:8px; margin:0 calc(-1 * var(--bp-gutter)); padding:2px var(--bp-gutter) 6px; overflow-x:auto; scroll-snap-type:x proximity; scrollbar-width:none; -webkit-overflow-scrolling:touch; }
.bp-chip-row::-webkit-scrollbar { display:none; }
.bp-chip-row > * { scroll-snap-align:start; }
.bp-chip-row--wrap { flex-wrap:wrap; margin:0; padding:0; overflow:visible; }
.bp-chip { display:inline-flex; align-items:center; gap:7px; flex:none; min-height:40px; padding:0 15px; border:1px solid var(--bp-line); border-radius:999px; background:var(--bp-surface); color:var(--bp-text) !important; font:600 .86rem/1 var(--bp-font); white-space:nowrap; cursor:pointer; transition:background .15s,border-color .15s,transform .15s var(--bp-ease); }
.bp-chip:active { transform:scale(.96); }
.bp-chip:hover { border-color:var(--bp-line-strong); }
.bp-chip[aria-pressed="true"],.bp-chip.is-active { border-color:var(--bp-text); background:var(--bp-text); color:var(--bp-bg) !important; }
.bp-chip .bp-chip-emoji { font-size:1.05rem; line-height:1; }
.bp-chip .bp-chip-count { padding:3px 6px; border-radius:99px; background:var(--bp-surface-2); color:var(--bp-text-2); font:600 .68rem var(--bp-mono); }
.bp-chip[aria-pressed="true"] .bp-chip-count { background:color-mix(in srgb,var(--bp-bg) 18%,transparent); color:inherit; }
.bp-chip:disabled { opacity:.5; cursor:not-allowed; }
.bp-chip img { width:24px; height:24px; margin-left:-7px; border-radius:50%; object-fit:cover; }

/* ---------- Segmented ---------- */
.bp-seg { display:inline-flex; padding:4px; border-radius:999px; background:var(--bp-surface-2); }
.bp-seg button { display:inline-flex; align-items:center; gap:7px; min-height:36px; padding:0 14px; border:0; border-radius:999px; background:transparent; color:var(--bp-text-2); font:700 .82rem var(--bp-font); cursor:pointer; transition:background .15s,color .15s; }
.bp-seg button[aria-pressed="true"] { background:var(--bp-surface); color:var(--bp-text); box-shadow:var(--bp-shadow-1); }

/* ---------- Search field ---------- */
.bp-search { position:relative; display:flex; align-items:center; gap:10px; min-height:54px; padding:0 8px 0 18px; border:1.5px solid var(--bp-line); border-radius:999px; background:var(--bp-surface); box-shadow:var(--bp-shadow-1); transition:border-color .15s,box-shadow .15s; }
.bp-search:focus-within { border-color:var(--bp-text); box-shadow:0 0 0 4px color-mix(in srgb,var(--bp-lime) 55%,transparent); }
.bp-search > i { color:var(--bp-text-3); }
.bp-search input { flex:1; min-width:0; height:50px; padding:0 !important; border:0 !important; outline:0 !important; background:transparent; color:var(--bp-text); font:500 1rem var(--bp-font) !important; }
.bp-search input::placeholder { color:var(--bp-text-3); }
.bp-search input::-webkit-search-cancel-button { display:none; }
.bp-search .bp-search-clear { display:grid; place-items:center; width:32px; height:32px; border:0; border-radius:50%; background:var(--bp-surface-2); color:var(--bp-text-2); cursor:pointer; }
.bp-search .bp-search-go { display:grid; place-items:center; flex:none; width:40px; height:40px; border:0; border-radius:50%; background:var(--bp-orange); color:#fff; cursor:pointer; }
.bp-search--lg { min-height:60px; }
.bp-search--lg input { height:56px; font-size:1.05rem !important; }
.bp-search--lg .bp-search-go { width:46px; height:46px; }

.bp-suggest { position:absolute; z-index:60; top:calc(100% + 8px); right:0; left:0; display:grid; max-height:min(64vh,520px); overflow:auto; padding:6px; border:1px solid var(--bp-line); border-radius:var(--bp-radius-l); background:var(--bp-surface); box-shadow:var(--bp-shadow-3); animation:bp-pop .18s var(--bp-ease); }
.bp-suggest-label { padding:10px 12px 6px; color:var(--bp-text-3); font:600 .66rem var(--bp-mono); letter-spacing:.08em; text-transform:uppercase; }
.bp-suggest-item { display:grid; grid-template-columns:38px minmax(0,1fr) auto; align-items:center; gap:12px; min-height:56px; padding:8px 10px; border:0; border-radius:14px; background:transparent; color:var(--bp-text) !important; text-align:left; cursor:pointer; }
.bp-suggest-item:hover,.bp-suggest-item:focus-visible { background:var(--bp-surface-2); }
.bp-suggest-item > span:nth-child(2) { display:grid; gap:2px; min-width:0; }
.bp-suggest-item strong { overflow:hidden; font-size:.92rem; text-overflow:ellipsis; white-space:nowrap; }
.bp-suggest-item small { overflow:hidden; color:var(--bp-text-2); font-size:.76rem; text-overflow:ellipsis; white-space:nowrap; }
.bp-suggest-item b { font-size:.95rem; }
.bp-suggest-all { display:flex; align-items:center; justify-content:center; gap:8px; min-height:48px; margin-top:4px; border:0; border-radius:14px; background:var(--bp-lime); color:var(--bp-ink); font:700 .88rem var(--bp-font); cursor:pointer; }
.bp-suggest-empty { padding:16px 12px; color:var(--bp-text-2); font-size:.9rem; line-height:1.45; }

/* ---------- Icon tiles ---------- */
.bp-ico { display:grid; place-items:center; flex:none; width:38px; height:38px; border-radius:12px; background:var(--bp-lime-soft); color:var(--bp-lime-text); font-size:.95rem; }
.bp-ico--orange { background:var(--bp-orange-soft); color:var(--bp-orange-text); }
.bp-ico--plain { background:var(--bp-surface-2); color:var(--bp-text-2); }

/* ---------- Cards ---------- */
.bp-card { position:relative; display:block; min-width:0; padding:18px; border:1px solid var(--bp-line); border-radius:var(--bp-radius-l); background:var(--bp-surface); color:var(--bp-text) !important; }
.bp-card--tap { cursor:pointer; transition:transform .18s var(--bp-ease),box-shadow .18s,border-color .18s; }
.bp-card--tap:hover { border-color:var(--bp-line-strong); box-shadow:var(--bp-shadow-2); }
.bp-card--tap:active { transform:scale(.985); }

/* Horizontal carousel of cards */
.bp-rail { display:grid; grid-auto-flow:column; grid-auto-columns:minmax(232px,72%); gap:12px; margin:0 calc(-1 * var(--bp-gutter)); padding:4px var(--bp-gutter) 12px; overflow-x:auto; scroll-snap-type:x mandatory; scroll-padding-inline:var(--bp-gutter); scrollbar-width:none; }
.bp-rail::-webkit-scrollbar { display:none; }
.bp-rail > * { scroll-snap-align:start; }
@media (min-width:720px) { .bp-rail { grid-auto-columns:minmax(250px,1fr); } }
@media (min-width:1024px) { .bp-rail--4 { grid-auto-flow:row; grid-template-columns:repeat(4,minmax(0,1fr)); margin:0; padding:4px 0 0; overflow:visible; } }

/* Deal card: cheapest price for a popular item */
.bp-deal { display:grid; align-content:space-between; gap:18px; min-height:170px; padding:16px; border:1px solid var(--bp-line); border-radius:var(--bp-radius-l); background:var(--bp-surface); color:var(--bp-text) !important; transition:transform .18s var(--bp-ease),box-shadow .18s; }
.bp-deal a:hover { text-decoration:underline; text-underline-offset:3px; }
html[data-theme] .bp-shell .bp-deal--hero a.bp-deal-price { color:var(--bp-lime); }
html[data-theme="dark"] .bp-shell .bp-deal--hero a.bp-deal-price { color:var(--bp-ink); }
.bp-deal:hover { box-shadow:var(--bp-shadow-2); }
.bp-deal:active { transform:scale(.98); }
.bp-deal-top { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.bp-deal-name { display:-webkit-box; overflow:hidden; font-weight:700; font-size:1rem; line-height:1.25; -webkit-box-orient:vertical; -webkit-line-clamp:2; }
.bp-deal-from { color:var(--bp-text-3); font:600 .66rem var(--bp-mono); letter-spacing:.06em; text-transform:uppercase; }
.bp-deal-price { font-size:1.9rem; font-weight:800; letter-spacing:-.04em; line-height:1; font-variant-numeric:tabular-nums; }
.bp-deal-meta { display:flex; align-items:center; gap:6px; overflow:hidden; color:var(--bp-text-2); font-size:.78rem; white-space:nowrap; }
.bp-deal-meta span { overflow:hidden; text-overflow:ellipsis; }
.bp-deal--hero { background:var(--bp-ink); border-color:var(--bp-ink); color:#fff !important; }
.bp-deal--hero .bp-deal-from,.bp-deal--hero .bp-deal-meta { color:#c2c8bd; }
.bp-deal--hero .bp-deal-price { color:var(--bp-lime); }
html[data-theme="dark"] .bp-deal--hero { background:var(--bp-lime); border-color:var(--bp-lime); color:var(--bp-ink) !important; }
html[data-theme="dark"] .bp-deal--hero .bp-deal-from,html[data-theme="dark"] .bp-deal--hero .bp-deal-meta { color:#3d4a1c; }
html[data-theme="dark"] .bp-deal--hero .bp-deal-price { color:var(--bp-ink); }
html[data-theme="dark"] .bp-deal--hero .bp-ico { background:rgba(23,24,28,.1); color:var(--bp-ink); }

/* Place card with cover */
.bp-place { display:grid; grid-template-rows:auto 1fr; overflow:hidden; border:1px solid var(--bp-line); border-radius:var(--bp-radius-l); background:var(--bp-surface); color:var(--bp-text) !important; transition:transform .18s var(--bp-ease),box-shadow .18s; }
.bp-place:hover { box-shadow:var(--bp-shadow-2); }
.bp-place:active { transform:scale(.985); }
.bp-place-cover { position:relative; aspect-ratio:16/10; overflow:hidden; background:var(--bp-surface-2); }
.bp-place-cover img { width:100%; height:100%; object-fit:cover; transition:transform .5s var(--bp-ease); }
.bp-place:hover .bp-place-cover img { transform:scale(1.04); }
.bp-place-badge { position:absolute; top:10px; left:10px; display:inline-flex; align-items:center; gap:5px; padding:6px 9px; border-radius:99px; background:color-mix(in srgb,var(--bp-surface) 92%,transparent); color:var(--bp-text); font:700 .72rem var(--bp-font); backdrop-filter:blur(8px); }
.bp-place-badge--right { right:10px; left:auto; }
.bp-place-body { display:grid; align-content:start; gap:4px; padding:12px 14px 14px; }
.bp-place-name { overflow:hidden; font-weight:700; font-size:.98rem; text-overflow:ellipsis; white-space:nowrap; }
.bp-place-sub { overflow:hidden; color:var(--bp-text-2); font-size:.78rem; text-overflow:ellipsis; white-space:nowrap; }
.bp-place-meta { display:flex; flex-wrap:wrap; gap:6px 10px; margin-top:6px; color:var(--bp-text-2); font-size:.76rem; }
.bp-place-meta b { color:var(--bp-text); }
.bp-place--row { grid-template-columns:96px minmax(0,1fr); grid-template-rows:none; align-items:stretch; }
.bp-place--row .bp-place-cover { aspect-ratio:auto; height:100%; min-height:96px; }
.bp-place--row .bp-place-body { align-content:center; }
.bp-grid { display:grid; gap:12px; }
@media (min-width:640px) { .bp-grid--places { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (min-width:1024px) { .bp-grid--places { grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; } }

/* Price row (search results, comparisons) */
.bp-list { display:grid; gap:8px; }
.bp-price-row { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:12px; width:100%; min-height:76px; padding:14px 16px; border:1px solid var(--bp-line); border-radius:var(--bp-radius); background:var(--bp-surface); color:var(--bp-text) !important; text-align:left; cursor:pointer; transition:transform .15s var(--bp-ease),border-color .15s,box-shadow .15s; animation:bp-rise .35s var(--bp-ease) both; animation-delay:calc(min(var(--i,0),12) * 28ms); }
.bp-price-row:hover { border-color:var(--bp-line-strong); box-shadow:var(--bp-shadow-1); }
.bp-price-row:active { transform:scale(.985); }
.bp-price-row-main { display:grid; gap:4px; min-width:0; }
.bp-price-row-title { overflow:hidden; font-weight:700; font-size:.97rem; line-height:1.25; text-overflow:ellipsis; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; }
.bp-price-row-variant { color:var(--bp-text-2); font-size:.8rem; }
.bp-price-row-place { display:flex; align-items:center; gap:6px; min-width:0; color:var(--bp-text-2); font-size:.8rem; }
.bp-price-row-place span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bp-price-row-place i { color:var(--bp-orange); font-size:.72rem; }
.bp-price-row-side { display:grid; justify-items:end; gap:4px; }
.bp-price { font-size:1.28rem; font-weight:800; letter-spacing:-.03em; line-height:1; font-variant-numeric:tabular-nums; white-space:nowrap; }
.bp-price--xl { font-size:clamp(2.4rem,9vw,3.4rem); letter-spacing:-.05em; }
.bp-price-row.is-best { border-color:color-mix(in srgb,var(--bp-lime) 70%,var(--bp-line)); background:linear-gradient(100deg,var(--bp-lime-soft),var(--bp-surface) 70%); }
.bp-tag { display:inline-flex; align-items:center; gap:5px; padding:4px 8px; border-radius:99px; background:var(--bp-surface-2); color:var(--bp-text-2); font:700 .64rem/1 var(--bp-mono); letter-spacing:.05em; text-transform:uppercase; white-space:nowrap; }
.bp-tag--best { background:var(--bp-lime); color:var(--bp-ink); }
.bp-tag--warn { background:var(--bp-orange-soft); color:var(--bp-orange-text); }
.bp-tag--up { background:var(--bp-orange-soft); color:var(--bp-up); }
.bp-tag--down { background:var(--bp-lime-soft); color:var(--bp-down); }

/* ---------- Stats ---------- */
.bp-stats { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
@media (min-width:720px) { .bp-stats { grid-template-columns:repeat(4,minmax(0,1fr)); } }
.bp-stat { display:grid; gap:2px; padding:12px 14px; border-radius:var(--bp-radius); background:var(--bp-surface-2); }
.bp-stat strong { font-size:1.15rem; font-weight:800; letter-spacing:-.02em; font-variant-numeric:tabular-nums; }
.bp-stat span { color:var(--bp-text-2); font-size:.74rem; }

/* ---------- Bottom sheet / modal ---------- */
dialog.bp-sheet { position:fixed; inset:auto 0 0 0; width:100%; max-width:none; max-height:88dvh; margin:0; padding:0; overflow:auto; border:0; border-radius:28px 28px 0 0; background:var(--bp-surface); color:var(--bp-text); box-shadow:var(--bp-shadow-3); overscroll-behavior:contain; }
dialog.bp-sheet[open] { animation:bp-sheet-in .32s var(--bp-ease); }
dialog.bp-sheet::backdrop { background:var(--bp-overlay); backdrop-filter:blur(2px); animation:bp-fade .2s ease; }
.bp-sheet-inner { display:grid; gap:16px; padding:10px 20px calc(22px + env(safe-area-inset-bottom)); }
.bp-sheet-grab { justify-self:center; width:42px; height:5px; border-radius:99px; background:var(--bp-line-strong); }
.bp-sheet-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.bp-sheet-head > div { display:grid; gap:6px; min-width:0; }
.bp-sheet-close { display:grid; place-items:center; flex:none; width:38px; height:38px; border:0; border-radius:50%; background:var(--bp-surface-2); color:var(--bp-text); font-size:1rem; cursor:pointer; }
.bp-sheet-actions { display:grid; gap:8px; }
.bp-sheet-actions--row { grid-template-columns:repeat(auto-fit,minmax(0,1fr)); }
@media (min-width:720px) {
    dialog.bp-sheet { inset:0; width:min(520px,calc(100% - 48px)); max-height:min(86vh,760px); margin:auto; border-radius:28px; }
    dialog.bp-sheet[open] { animation:bp-pop .22s var(--bp-ease); }
    .bp-sheet-grab { display:none; }
    .bp-sheet-inner { padding:22px 26px 26px; }
}

/* ---------- Empty / skeleton ---------- */
.bp-empty { display:grid; align-content:center; justify-items:center; gap:10px; padding:36px 22px; border:1.5px dashed var(--bp-line-strong); border-radius:var(--bp-radius-l); text-align:center; }
.bp-empty > i { display:grid; place-items:center; width:56px; height:56px; margin-bottom:4px; border-radius:18px; background:var(--bp-surface-2); color:var(--bp-text-2); font-size:1.3rem; }
.bp-empty p { max-width:380px; color:var(--bp-text-2); line-height:1.5 !important; }
.bp-empty .bp-chip-row--wrap { justify-content:center; margin-top:4px; }
.bp-skel { position:relative; overflow:hidden; border-radius:var(--bp-radius); background:var(--bp-surface-2); }
.bp-skel::after { content:""; position:absolute; inset:0; transform:translateX(-100%); background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--bp-surface) 60%,transparent),transparent); animation:bp-shimmer 1.3s infinite; }
.bp-skel--row { height:76px; }
.bp-skel--deal { height:170px; border-radius:var(--bp-radius-l); }
.bp-skel--place { height:220px; border-radius:var(--bp-radius-l); }
.bp-skel--line { height:14px; border-radius:99px; }

/* ---------- Tabs ---------- */
.bp-tabs { position:sticky; z-index:30; top:calc(var(--bp-topbar-h) + env(safe-area-inset-top)); display:flex; gap:4px; margin:0 calc(-1 * var(--bp-gutter)); padding:8px var(--bp-gutter); overflow-x:auto; background:color-mix(in srgb,var(--bp-bg) 92%,transparent); backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px); scrollbar-width:none; }
.bp-tabs::-webkit-scrollbar { display:none; }
.bp-tabs button { position:relative; flex:none; min-height:40px; padding:0 16px; border:0; border-radius:99px; background:transparent; color:var(--bp-text-2); font:700 .9rem var(--bp-font); cursor:pointer; }
.bp-tabs button[aria-selected="true"] { background:var(--bp-surface-2); color:var(--bp-text); }
.bp-tabs button span { margin-left:4px; color:var(--bp-text-3); font:600 .72rem var(--bp-mono); }

/* ---------- Bars (price comparison) ---------- */
.bp-bar { position:relative; height:6px; overflow:hidden; border-radius:99px; background:var(--bp-surface-2); }
.bp-bar i { position:absolute; inset:0 auto 0 0; border-radius:99px; background:var(--bp-text-3); transform-origin:left; animation:bp-grow .7s var(--bp-ease) both; }
.bp-bar--best i { background:var(--bp-lime); }

/* ---------- Toast ---------- */
.bp-toast { position:fixed; z-index:1200; left:50%; bottom:calc(var(--bp-tabbar-h) + 18px + env(safe-area-inset-bottom)); max-width:calc(100% - 32px); padding:12px 18px; border-radius:999px; background:var(--bp-ink); color:#fff; font:600 .86rem var(--bp-font); box-shadow:var(--bp-shadow-3); transform:translateX(-50%); animation:bp-toast .25s var(--bp-ease); }
html[data-theme="dark"] .bp-toast { background:var(--bp-text); color:var(--bp-bg); }
@media (min-width:900px) { .bp-toast { bottom:28px; } }

/* ---------- Banner ---------- */
.bp-banner { display:grid; gap:14px; padding:22px; border-radius:var(--bp-radius-l); background:var(--bp-ink); color:#f4f6ef; overflow:hidden; position:relative; }
.bp-banner .bp-eyebrow { color:var(--bp-lime); }
.bp-banner p { color:#c3c8be; line-height:1.5 !important; }
html[data-theme="dark"] .bp-banner { background:var(--bp-surface-2); }
@media (min-width:720px) { .bp-banner { grid-template-columns:minmax(0,1fr) auto; align-items:center; padding:28px 32px; } }

/* ---------- Shell: top bar ---------- */
.bp-topbar { position:sticky; z-index:900; top:0; padding-top:env(safe-area-inset-top); background:color-mix(in srgb,var(--bp-bg) 90%,transparent); border-bottom:1px solid transparent; backdrop-filter:saturate(1.4) blur(14px); -webkit-backdrop-filter:saturate(1.4) blur(14px); transition:border-color .2s; }
.bp-topbar.is-scrolled { border-bottom-color:var(--bp-line); }
.bp-topbar-inner { display:flex; align-items:center; gap:10px; max-width:calc(var(--bp-max) + 2 * var(--bp-gutter)); height:var(--bp-topbar-h); margin:0 auto; padding:0 var(--bp-gutter); }
.bp-brand { display:flex; align-items:center; flex:none; }
.bp-brand img { display:block; width:auto; height:30px; }
.bp-brand-mark { display:none; }
.bp-nav { display:none; align-items:center; gap:2px; margin-left:18px; }
.bp-nav a { display:inline-flex; align-items:center; gap:8px; min-height:40px; padding:0 14px; border-radius:99px; color:var(--bp-text-2) !important; font:700 .9rem var(--bp-font); white-space:nowrap; }
.bp-nav a:hover { color:var(--bp-text) !important; background:var(--bp-surface-2); }
.bp-nav a.active { color:var(--bp-text) !important; background:var(--bp-surface-2); }
.bp-topbar-actions { display:flex; align-items:center; gap:8px; margin-left:auto; min-width:0; }
.bp-city { display:inline-flex; align-items:center; gap:7px; min-width:0; max-width:180px; min-height:40px; padding:0 12px 0 11px; border:1px solid var(--bp-line); border-radius:999px; background:var(--bp-surface); color:var(--bp-text); font:700 .84rem var(--bp-font); cursor:pointer; }
.bp-city > i:first-child { color:var(--bp-orange); }
.bp-city > i:last-child { color:var(--bp-text-3); font-size:.62rem; }
.bp-city span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bp-city.is-empty { border-color:var(--bp-orange); background:var(--bp-orange-soft); }
.bp-avatar { display:grid; place-items:center; flex:none; width:40px; height:40px; border-radius:50%; background:var(--bp-lime); color:var(--bp-ink) !important; font:700 .8rem var(--bp-mono); letter-spacing:-.04em; }
.bp-account { position:relative; }
.bp-account summary { list-style:none; cursor:pointer; border-radius:50%; }
.bp-account summary::-webkit-details-marker { display:none; }
.bp-menu { position:absolute; z-index:950; top:calc(100% + 10px); right:0; display:grid; min-width:230px; padding:8px; border:1px solid var(--bp-line); border-radius:18px; background:var(--bp-surface); box-shadow:var(--bp-shadow-3); animation:bp-pop .16s var(--bp-ease); }
/* Keep long account/admin menus inside the viewport and above mobile navigation. */
.bp-menu {
  --bp-menu-bottom-space:calc(var(--bp-tabbar-h) + env(safe-area-inset-bottom) + 12px);
  max-height:calc(100vh - var(--bp-topbar-h) - env(safe-area-inset-top) - 20px - var(--bp-menu-bottom-space));
  max-height:calc(100dvh - var(--bp-topbar-h) - env(safe-area-inset-top) - 20px - var(--bp-menu-bottom-space));
  overflow-y:auto;
  overscroll-behavior-y:contain;
  -webkit-overflow-scrolling:touch;
  grid-auto-rows:max-content;
}
@media (min-width:1024px) { .bp-menu { --bp-menu-bottom-space:12px; } }
.bp-menu-head { display:grid; gap:2px; padding:10px 12px 12px; border-bottom:1px solid var(--bp-line); margin-bottom:6px; }
.bp-menu-head strong { font-size:.95rem; }
.bp-menu-head small { color:var(--bp-text-3); font-size:.74rem; }
.bp-menu a,.bp-menu button { display:flex; align-items:center; gap:12px; min-height:42px; padding:0 12px; border:0; border-radius:12px; background:transparent; color:var(--bp-text) !important; font:600 .88rem var(--bp-font); text-align:left; cursor:pointer; }
.bp-menu a i,.bp-menu button i { width:18px; color:var(--bp-text-3); text-align:center; }
.bp-menu a:hover,.bp-menu button:hover { background:var(--bp-surface-2); }
.bp-menu hr { margin:6px 4px; border:0; border-top:1px solid var(--bp-line); opacity:1; }
.bp-menu .bp-menu-danger { color:var(--bp-orange-text) !important; }
.bp-topbar .bp-desktop-only { display:none; }
@media (min-width:900px) {
    .bp-nav { display:flex; }
    .bp-topbar .bp-desktop-only { display:inline-flex; }
    .bp-brand img { height:34px; }
    .bp-city { max-width:220px; }
}
@media (max-width:899.98px) {
    .bp-topbar .bp-theme { display:none; }
}
@media (max-width:380px) {
    .bp-brand img { height:26px; }
    .bp-city { max-width:130px; }
}

/* ---------- Shell: bottom tab bar (phones/tablets) ---------- */
.bp-tabbar { position:fixed; z-index:900; right:0; bottom:0; left:0; display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); height:calc(var(--bp-tabbar-h) + env(safe-area-inset-bottom)); padding:0 6px env(safe-area-inset-bottom); border-top:1px solid var(--bp-line); background:color-mix(in srgb,var(--bp-surface) 94%,transparent); backdrop-filter:saturate(1.4) blur(16px); -webkit-backdrop-filter:saturate(1.4) blur(16px); }
.bp-tabbar a { grid-column:auto !important; grid-row:1; position:relative; display:grid; place-items:center; align-content:center; gap:4px; min-width:0; color:var(--bp-text-3) !important; font:700 .66rem var(--bp-font); }
.bp-tabbar a i { display:grid; place-items:center; width:52px; height:30px; border-radius:99px; font-size:1.08rem; transition:background .2s,color .2s,transform .2s var(--bp-ease); }
.bp-tabbar a.active { color:var(--bp-text) !important; }
.bp-tabbar a.active i { background:var(--bp-lime); color:var(--bp-ink); }
.bp-tabbar a:active i { transform:scale(.9); }
.bp-shell > main { padding-bottom:0; }
@media (min-width:900px) {
    .bp-tabbar { display:none; }
}

/* ---------- Footer ---------- */
.site-shell.bp-shell > .bp-footer { padding:0 0 calc(var(--bp-tabbar-h) + env(safe-area-inset-bottom)); }
.bp-footer { display:block; border-top:1px solid var(--bp-line); }
.bp-footer-inner { display:none; }
.bp-footer .bp-footer-credit { padding:12px var(--bp-gutter); color:var(--bp-text-2); font-size:.8rem; line-height:1.5; text-align:center; }
.bp-footer-credit a { font-weight:700; text-decoration:underline; text-underline-offset:3px; }
.bp-footer-credit strong { white-space:nowrap; }
@media (min-width:900px) {
    .site-shell.bp-shell > .bp-footer { padding:0; }
    .bp-footer-inner { display:flex; align-items:center; flex-wrap:wrap; gap:8px 22px; max-width:calc(var(--bp-max) + 2 * var(--bp-gutter)); margin:0 auto; padding:22px var(--bp-gutter); color:var(--bp-text-3); font-size:.8rem; }
    .bp-footer-inner a,.bp-footer-inner button { padding:0; border:0; background:none; color:var(--bp-text-2) !important; font:inherit; cursor:pointer; }
    .bp-footer-inner a:hover,.bp-footer-inner button:hover { color:var(--bp-text) !important; }
    .bp-footer-inner span { margin-left:auto; }
}
.bp-shell.is-immersive .bp-footer-inner { display:none; }

/* ---------- City picker ---------- */
.bp-city-list { display:grid; gap:6px; }
.bp-city-option { display:grid; grid-template-columns:40px minmax(0,1fr) auto; align-items:center; gap:12px; min-height:60px; padding:8px 12px; border:1px solid var(--bp-line); border-radius:16px; background:var(--bp-surface); color:var(--bp-text); text-align:left; cursor:pointer; transition:border-color .15s,background .15s; }
.bp-city-option:hover { border-color:var(--bp-line-strong); }
.bp-city-option.is-current { border-color:var(--bp-text); background:var(--bp-surface-2); }
.bp-city-option > span:nth-child(2) { display:grid; gap:2px; min-width:0; }
.bp-city-option strong { font-size:.98rem; }
.bp-city-option small { color:var(--bp-text-2); font-size:.76rem; }
.bp-city-option > i:last-child { color:var(--bp-text-3); }
.bp-locate { display:flex; align-items:center; gap:12px; width:100%; min-height:56px; padding:0 16px; border:0; border-radius:16px; background:var(--bp-lime-soft); color:var(--bp-lime-text); font:700 .92rem var(--bp-font); text-align:left; cursor:pointer; }

/* ---------- Map ---------- */
.bp-map { position:relative; width:100%; height:100%; min-height:260px; overflow:hidden; border-radius:var(--bp-radius-l); background:var(--bp-surface-2); isolation:isolate; }
.bp-map .leaflet-container { width:100%; height:100%; background:var(--bp-surface-2); font-family:var(--bp-font); }
.bp-map-loading { position:absolute; inset:0; display:grid; place-items:center; color:var(--bp-text-3); font-size:.9rem; }
html[data-theme="dark"] .bp-map .leaflet-tile-pane { filter:invert(1) hue-rotate(180deg) brightness(.82) contrast(.88) saturate(.2); }
.bp-map .leaflet-control-attribution { background:color-mix(in srgb,var(--bp-surface) 82%,transparent) !important; color:var(--bp-text-3) !important; font-size:10px; }
.bp-map .leaflet-control-attribution a { color:var(--bp-text-2) !important; }
.bp-map .leaflet-control-zoom { border:0 !important; box-shadow:var(--bp-shadow-2) !important; border-radius:14px !important; overflow:hidden; }
.bp-map .leaflet-control-zoom a { width:38px !important; height:38px !important; line-height:38px !important; border-color:var(--bp-line) !important; background:var(--bp-surface) !important; color:var(--bp-text) !important; }
.bp-pin-wrap { background:none !important; border:0 !important; }
.bp-pin { position:absolute; bottom:0; left:50%; display:inline-flex; align-items:center; gap:5px; padding:6px 10px; border:2px solid var(--bp-surface); border-radius:999px; background:var(--bp-ink); color:#fff; font:800 .8rem/1 var(--bp-font); font-variant-numeric:tabular-nums; white-space:nowrap; box-shadow:0 4px 12px rgba(0,0,0,.28); transform:translate(-50%,0); transition:transform .18s var(--bp-ease),background .15s; cursor:pointer; }
.bp-pin::after { content:""; position:absolute; bottom:-7px; left:50%; width:10px; height:10px; border-right:2px solid var(--bp-surface); border-bottom:2px solid var(--bp-surface); background:inherit; transform:translateX(-50%) rotate(45deg); border-radius:0 0 3px 0; }
.bp-pin--dot { width:30px; height:30px; padding:0; justify-content:center; font-size:.78rem; }
.bp-pin--best { background:var(--bp-lime); color:var(--bp-ink); }
.bp-pin--l1 { background:#3d8b2a; }
.bp-pin--l2 { background:#c78a12; }
.bp-pin--l3 { background:#d4492a; }
.bp-pin.is-active { z-index:5; background:var(--bp-orange); color:#fff; transform:translate(-50%,-4px) scale(1.14); }
.bp-me-wrap { pointer-events:none !important; }
.bp-me { position:relative; display:grid; place-items:center; width:44px; height:44px; }
.bp-me::before,.bp-me::after { content:""; position:absolute; inset:-8px; border:1px solid rgba(43,124,255,.3); border-radius:50%; pointer-events:none; }
.bp-me::before { background:rgba(43,124,255,.14); box-shadow:0 0 0 8px rgba(43,124,255,.045); }
.bp-me::after { border:2px solid rgba(43,124,255,.4); animation:bp-me-pulse 3s ease-out infinite; }
.bp-me-dot { position:relative; z-index:1; display:block; width:26px; height:26px; border:4px solid #fff; border-radius:50%; background:#2475ee; box-shadow:0 2px 10px rgba(14,64,138,.38),0 0 0 1px rgba(14,64,138,.16); }
.bp-me-label { position:absolute; z-index:2; bottom:calc(100% + 8px); left:50%; display:flex; align-items:center; gap:7px; padding:8px 12px; transform:translateX(-50%); border:1px solid var(--bp-line); border-radius:999px; background:var(--bp-surface); color:var(--bp-text); box-shadow:0 4px 18px rgba(23,24,28,.16); font:700 12px/1.2 var(--bp-font); white-space:nowrap; }
.bp-me-label::before { content:""; flex:none; width:6px; height:6px; border-radius:50%; background:#2475ee; }
.bp-me-label::after { content:""; position:absolute; top:calc(100% - 4px); left:calc(50% - 4px); width:8px; height:8px; transform:rotate(45deg); border-right:1px solid var(--bp-line); border-bottom:1px solid var(--bp-line); background:var(--bp-surface); }
@keyframes bp-me-pulse { 0% { transform:scale(.8); opacity:.7; } 80%,100% { transform:scale(1.45); opacity:0; } }
@media (prefers-reduced-motion:reduce) { .bp-me::after { animation:none; opacity:0; } }
.bp-map-legend { display:flex; flex-wrap:wrap; gap:10px; color:var(--bp-text-2); font-size:.74rem; }
.bp-map-legend span { display:inline-flex; align-items:center; gap:6px; }
.bp-map-legend i { width:10px; height:10px; border-radius:50%; }

/* ---------- Animations ---------- */
@keyframes bp-rise { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:none; } }
@keyframes bp-fade { from { opacity:0; } to { opacity:1; } }
@keyframes bp-pop { from { opacity:0; transform:scale(.97) translateY(4px); } to { opacity:1; transform:none; } }
@keyframes bp-sheet-in { from { transform:translateY(100%); } to { transform:none; } }
@keyframes bp-shimmer { to { transform:translateX(100%); } }
@keyframes bp-grow { from { transform:scaleX(0); } to { transform:scaleX(1); } }
@keyframes bp-toast { from { opacity:0; transform:translate(-50%,10px); } to { opacity:1; transform:translate(-50%,0); } }
.bp-rise { animation:bp-rise .4s var(--bp-ease) both; }
@media (prefers-reduced-motion:reduce) {
    .bp *,.bp *::before,.bp *::after { animation-duration:.01ms !important; animation-delay:0ms !important; transition-duration:.01ms !important; }
}

/* Legacy pages rendered inside the new shell keep their own layout; give them
   the same page background and remove the old header/footer spacing. */
.bp-shell > main > :is(.directory,.profile-page,.discover-page,.ranking-page,.legal-page,.upload-page,.review-journey,.budget-page,.auth-page) { color:var(--bp-text); }

/* Leaflet divIcon anchor is the bottom of the pin's arrow. */
.bp-pin-wrap .bp-pin { bottom:9px; }
.bp-pin-wrap .bp-pin--dot { bottom:9px; }

/* ---------- Forms, disclosures, reviews ---------- */
.bp-up { color:var(--bp-up); }
.bp-down { color:var(--bp-down); }
.bp-disclosure { border:1px solid var(--bp-line); border-radius:var(--bp-radius); background:var(--bp-surface); }
.bp-disclosure > summary { display:flex; align-items:center; gap:10px; min-height:54px; padding:0 16px; font-weight:700; font-size:.92rem; list-style:none; cursor:pointer; }
.bp-disclosure > summary::-webkit-details-marker { display:none; }
.bp-disclosure > summary::after { content:"\f078"; margin-left:auto; color:var(--bp-text-3); font:900 .7rem "Font Awesome 6 Free"; transition:transform .2s; }
.bp-disclosure[open] > summary::after { transform:rotate(180deg); }
.bp-disclosure > summary i { color:var(--bp-orange); }
.bp-form { display:grid; gap:14px; padding:4px 16px 18px; }
.bp-form label,.bp-form-label { display:grid; gap:7px; margin:0 !important; color:var(--bp-text); font-size:.84rem !important; font-weight:700; }
.bp-form :is(input:not([type=checkbox]),select,textarea) { width:100%; min-height:48px; padding:12px 14px !important; border:1.5px solid var(--bp-line-strong) !important; border-radius:14px !important; background:var(--bp-bg); color:var(--bp-text); font:500 1rem var(--bp-font) !important; outline:0; }
.bp-form textarea { min-height:110px; resize:vertical; }
.bp-form :is(input,select,textarea):focus { border-color:var(--bp-text) !important; box-shadow:0 0 0 4px color-mix(in srgb,var(--bp-lime) 50%,transparent); }
.bp-form small { font-weight:500; font-size:.74rem; }
.bp-check { display:flex !important; align-items:center; gap:10px !important; font-weight:600 !important; }
.bp-check input { width:20px; height:20px; accent-color:var(--bp-orange); }
.bp-stars-pick { display:flex; gap:4px; }
.bp-stars-pick button { width:44px; height:44px; border:0; border-radius:12px; background:var(--bp-surface-2); color:var(--bp-text-3); font-size:1.4rem; cursor:pointer; transition:transform .12s var(--bp-ease),color .12s; }
.bp-stars-pick button.is-on { color:#f5b301; background:color-mix(in srgb,#f5b301 16%,var(--bp-surface)); }
.bp-stars-pick button:active { transform:scale(.88); }
.bp-form-msg { padding:12px 14px; border-radius:12px; font-size:.86rem; }
.bp-form-msg.success { background:var(--bp-lime-soft); color:var(--bp-lime-text); }
.bp-form-msg.error { background:var(--bp-orange-soft); color:var(--bp-orange-text); }
.bp-review { display:grid; gap:8px; padding:14px 16px; }
.bp-review-head { display:flex; align-items:center; gap:10px; }
.bp-review-head strong { font-size:.9rem; }
.bp-review-stars { margin-left:auto; color:#f5b301; letter-spacing:1px; }
.bp-review p { color:var(--bp-text-2); line-height:1.5 !important; }

/* Grid children must be allowed to shrink below their content width on phones. */
.bp-stack,.bp-section,.bp-list,.bp-sheet-inner { grid-template-columns:minmax(0,1fr); }

/* The wordmark PNG has a white backdrop: invert it in dark mode, keep the brand colours. */
html[data-theme="dark"] .bp-brand img { filter:invert(1) hue-rotate(180deg); mix-blend-mode:screen; }

/* On wide screens rows align with the content edge instead of bleeding to the viewport. */
@media (min-width:900px) {
    .bp-chip-row,.bp-rail { margin-inline:0; padding-inline:0; }
    .bp-home-hero .bp-chip-row { flex-wrap:wrap; overflow:visible; }
}

/* ---------- Pre-render shell (shown before Blazor boots) ---------- */
html[data-theme] .initial-app-shell { min-height:100dvh; background:var(--bp-bg) !important; color:var(--bp-text) !important; font-family:var(--bp-font); }
html[data-theme] .initial-app-shell > * { max-width:calc(var(--bp-max) + 2 * var(--bp-gutter)) !important; margin-inline:auto !important; padding-inline:var(--bp-gutter) !important; }
html[data-theme] .initial-app-header { display:flex; align-items:center; justify-content:space-between; height:var(--bp-topbar-h); background:none !important; }
html[data-theme] .initial-app-brand { color:var(--bp-text) !important; font:800 1.4rem var(--bp-font); letter-spacing:-.04em; }
html[data-theme] .initial-app-city { padding:8px 12px; border:1px solid var(--bp-line); border-radius:99px; color:var(--bp-text) !important; font:700 .82rem var(--bp-font); }
html[data-theme] .initial-app-intro { display:grid; gap:14px; padding-block:12px 24px; background:none !important; }
html[data-theme] .initial-app-eyebrow { margin:0; color:var(--bp-orange-text) !important; font:600 .7rem var(--bp-mono); letter-spacing:.09em; }
html[data-theme] .initial-app-title { margin:0; font-size:clamp(1.85rem,6.4vw,3.1rem) !important; letter-spacing:-.04em; line-height:1.02; }
html[data-theme] .initial-app-search { display:flex; align-items:center; gap:8px; max-width:720px; min-height:60px; margin:0; padding:0 8px 0 18px; border:1.5px solid var(--bp-line) !important; border-radius:999px; background:var(--bp-surface) !important; }
html[data-theme] .initial-app-search input { flex:1; min-width:0; padding:0 !important; border:0 !important; background:transparent; color:var(--bp-text) !important; font:500 1.05rem var(--bp-font) !important; outline:0; }
html[data-theme] .initial-app-search button { min-height:46px; padding:0 18px; border:0; border-radius:99px; background:var(--bp-orange); color:#fff; font:700 .9rem var(--bp-font); }
html[data-theme] .initial-app-popular { display:flex; gap:8px; overflow-x:auto; scrollbar-width:none; }
html[data-theme] .initial-app-popular a { flex:none; padding:10px 15px; border:1px solid var(--bp-line) !important; border-radius:99px; background:var(--bp-surface) !important; color:var(--bp-text) !important; font:600 .86rem var(--bp-font); }
html[data-theme] .initial-app-section { display:grid; gap:12px; padding-block:12px; }
html[data-theme] .initial-app-section h2 { margin:0; font-size:1.35rem; letter-spacing:-.03em; }
html[data-theme] .initial-app-status { color:var(--bp-text-3) !important; }
html[data-theme] :is(.initial-app-result,.initial-app-recent-card) { border:1px solid var(--bp-line) !important; border-radius:var(--bp-radius) !important; background:var(--bp-surface) !important; color:var(--bp-text) !important; }
html[data-theme] .initial-app-price { color:var(--bp-text) !important; font-weight:800; }

/* ---------- Dark theme polish: graphite surfaces, soft light edges, ambient glow ---------- */
html[data-theme="dark"] body { background:radial-gradient(1100px 520px at 85% -120px,rgba(201,242,93,.07),transparent 60%),radial-gradient(900px 480px at -10% 10%,rgba(255,91,48,.05),transparent 60%),var(--bp-bg) !important; background-attachment:fixed !important; }
html[data-theme="dark"] :is(.bp-card,.bp-deal,.bp-place,.bp-price-row,.bp-search,.bp-chip,.bp-city-option,.bp-home-action,.bp-place-menu-list,.bp-place-info,.bp-place-original,.bp-disclosure,.bp-mapa-card,.bp-product-rank-row,.bp-map-teaser) { box-shadow:var(--bp-shadow-1); }
html[data-theme="dark"] :is(.bp-card--tap,.bp-deal,.bp-place,.bp-price-row,.bp-map-teaser,.bp-product-rank-row):hover { border-color:#3a3a42; box-shadow:var(--bp-shadow-2); }
html[data-theme="dark"] .bp-topbar { background:rgba(12,12,14,.72); }
html[data-theme="dark"] .bp-topbar.is-scrolled { border-bottom-color:rgba(255,255,255,.06); }
html[data-theme="dark"] .bp-tabbar { background:rgba(18,18,21,.82); border-top-color:rgba(255,255,255,.06); }
html[data-theme="dark"] .bp-tabbar a.active i { box-shadow:0 0 24px rgba(201,242,93,.35); }
html[data-theme="dark"] .bp-chip[aria-pressed="true"],html[data-theme="dark"] .bp-chip.is-active { border-color:var(--bp-lime); background:var(--bp-lime); color:var(--bp-ink) !important; }
html[data-theme="dark"] .bp-seg button[aria-pressed="true"] { background:var(--bp-surface-3); }
html[data-theme="dark"] .bp-tabs button[aria-selected="true"] { background:var(--bp-surface-3); }
html[data-theme="dark"] .bp-price-row.is-best,html[data-theme="dark"] .bp-product-rank-row.is-best { border-color:rgba(201,242,93,.35); background:linear-gradient(100deg,rgba(201,242,93,.1),var(--bp-surface) 65%); }
html[data-theme="dark"] .bp-deal--hero { box-shadow:0 18px 50px rgba(201,242,93,.18); }
html[data-theme="dark"] .bp-search:focus-within { border-color:rgba(201,242,93,.7); box-shadow:0 0 0 4px rgba(201,242,93,.16); }
html[data-theme="dark"] .bp-banner { background:linear-gradient(135deg,#1a1a1e,#121214); border:1px solid var(--bp-line); }
html[data-theme="dark"] .bp-skel { background:var(--bp-surface-2); }
html[data-theme="dark"] .bp-sheet { border:1px solid var(--bp-line); }
html[data-theme="dark"] .bp-menu { background:rgba(24,24,28,.92); backdrop-filter:blur(18px); -webkit-backdrop-filter:blur(18px); }

/* ---------- Place peek: details shown when a map pin is tapped ---------- */
.bp-peek { position:absolute; z-index:620; right:8px; bottom:8px; left:8px; display:flex; flex-direction:column; max-height:min(60%,560px); overflow:hidden; border:1px solid var(--bp-line); border-radius:24px; background:var(--bp-surface); color:var(--bp-text); box-shadow:var(--bp-shadow-3); animation:bp-sheet-in .3s var(--bp-ease); }
.bp-peek-close { position:absolute; z-index:2; top:10px; right:10px; display:grid; place-items:center; width:36px; height:36px; border:0; border-radius:50%; background:rgba(0,0,0,.55); color:#fff; cursor:pointer; backdrop-filter:blur(6px); }
.bp-peek-media { flex:none; height:96px; overflow:hidden; background:var(--bp-surface-2); }
.bp-peek-media > img { width:100%; height:100%; object-fit:cover; }
.bp-peek-photos { display:flex; gap:4px; height:100%; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none; }
.bp-peek-photos::-webkit-scrollbar { display:none; }
.bp-peek-photos img { flex:none; width:62%; height:100%; object-fit:cover; scroll-snap-align:start; }
.bp-peek-photos img:only-child { width:100%; }
.bp-peek-body { display:grid; grid-template-columns:minmax(0,1fr); gap:12px; min-height:0; padding:12px 16px; overflow-x:hidden; overflow-y:auto; overscroll-behavior:contain; }
.bp-peek-head { display:flex; align-items:center; gap:12px; }
.bp-peek-head > div { display:grid; gap:2px; min-width:0; padding-bottom:2px; }
.bp-peek-head h2 { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:1.12rem !important; }
.bp-peek-logo { display:grid; place-items:center; flex:none; width:48px; height:48px; overflow:hidden; border-radius:15px; background:var(--bp-lime); color:var(--bp-ink); font:800 1rem var(--bp-font); box-shadow:var(--bp-shadow-1); }
.bp-peek-logo img { width:100%; height:100%; object-fit:cover; background:#fff; }
.bp-peek-level-1 { color:var(--bp-down); }
.bp-peek-level-3 { color:var(--bp-up); }
.bp-peek-match { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 14px; border:1.5px solid color-mix(in srgb,var(--bp-lime) 60%,var(--bp-line)); border-radius:16px; background:var(--bp-lime-soft); color:var(--bp-text) !important; }
.bp-peek-match > span { display:grid; gap:1px; min-width:0; }
.bp-peek-match small { color:var(--bp-text-2); font-size:.72rem; }
.bp-peek-match strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bp-peek-section { display:grid; gap:6px; }
.bp-peek-items { display:grid; grid-template-columns:minmax(0,1fr); gap:2px; margin:0; padding:0; list-style:none; }
.bp-peek-items li > b { flex:none; }
.bp-peek-items li { display:flex; align-items:baseline; justify-content:space-between; gap:12px; padding:7px 0; border-bottom:1px dashed var(--bp-line); font-size:.88rem; }
.bp-peek-items li:last-child { border-bottom:0; }
.bp-peek-items li span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bp-peek-items small { color:var(--bp-text-3); }
.bp-peek-description { display:-webkit-box; overflow:hidden; -webkit-box-orient:vertical; -webkit-line-clamp:3; }
.bp-peek-info p { display:flex; align-items:flex-start; gap:10px; color:var(--bp-text-2); font-size:.84rem; }
.bp-peek-info i { width:16px; margin-top:3px; color:var(--bp-orange); text-align:center; }
.bp-peek-info a { color:var(--bp-text) !important; font-weight:600; }
.bp-peek .bp-chip { min-height:36px; font-size:.8rem; }
.bp-peek-review { margin:0; padding:12px 14px; border-radius:16px; background:var(--bp-surface-2); }
.bp-peek-review blockquote { margin:0 0 6px; color:var(--bp-text); font-size:.86rem; line-height:1.45; }
.bp-peek-review figcaption { display:flex; align-items:center; gap:8px; color:var(--bp-text-3); font-size:.76rem; }
.bp-peek-review .bp-review-stars { margin:0; }
.bp-peek-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; flex:none; padding:10px 16px 14px; border-top:1px solid var(--bp-line); background:var(--bp-surface); }
.bp-peek-actions .bp-btn { min-width:0; padding:0 12px; }
@media (min-width:900px) {
    .bp-peek { top:16px; right:16px; bottom:16px; left:auto; width:390px; max-height:none !important; animation:bp-pop .22s var(--bp-ease); }
    .bp-peek-media { height:150px; }
}

/* ---------- Install invitation (PWA) ---------- */
.bp-install { position:fixed; z-index:950; right:12px; bottom:calc(var(--bp-tabbar-h) + 12px + env(safe-area-inset-bottom)); left:12px; display:grid; grid-template-columns:auto minmax(0,1fr); align-items:center; gap:12px 14px; padding:14px 14px 14px 14px; border:1px solid rgba(255,255,255,.08); border-radius:22px; background:radial-gradient(120% 140% at 0% 0%,rgba(201,242,93,.16),transparent 55%),#141417; color:#f4f4f5; box-shadow:0 18px 50px rgba(0,0,0,.35); animation:bp-install-in .45s var(--bp-ease) both; }
.bp-install-icon { width:52px; height:52px; border-radius:14px; box-shadow:0 6px 18px rgba(0,0,0,.35),0 0 0 1px rgba(255,255,255,.08); }
.bp-install-copy { display:grid; gap:3px; min-width:0; padding-right:26px; }
.bp-install-copy strong { font:800 .98rem/1.25 var(--bp-font); letter-spacing:-.01em; }
.bp-install-copy span { color:#a1a1aa; font-size:.84rem; line-height:1.35; }
.bp-install-actions { grid-column:1 / -1; display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.4fr); gap:8px; }
.bp-install .bp-btn--ghost { border-color:rgba(255,255,255,.16); color:#e4e4e7 !important; }
.bp-install .bp-btn--ghost:hover { border-color:rgba(255,255,255,.32); }
.bp-install .bp-btn--primary { background:var(--bp-lime); color:#17181c !important; box-shadow:0 6px 18px rgba(201,242,93,.22); }
.bp-install .bp-btn--primary:hover { background:#d6f77a; }
.bp-install-close { position:absolute; top:8px; right:8px; display:grid; place-items:center; width:32px; height:32px; border:0; border-radius:50%; background:transparent; color:#71717a; cursor:pointer; }
.bp-install-close:hover { background:rgba(255,255,255,.06); color:#e4e4e7; }
@keyframes bp-install-in { from { opacity:0; transform:translateY(18px) scale(.98); } to { opacity:1; transform:none; } }
@media (min-width:900px) {
    .bp-install { right:auto; bottom:24px; left:24px; width:420px; grid-template-columns:auto minmax(0,1fr); }
    .bp-install-actions { grid-template-columns:auto auto; justify-content:end; }
}
.bp-install-hero { display:flex; align-items:center; gap:14px; padding:16px; border-radius:20px; background:radial-gradient(120% 160% at 0% 0%,rgba(201,242,93,.18),transparent 60%),#141417; color:#f4f4f5; }
.bp-install-hero img { width:64px; height:64px; border-radius:16px; box-shadow:0 8px 22px rgba(0,0,0,.4); }
.bp-install-hero div { display:grid; gap:2px; }
.bp-install-hero strong { font:800 1.05rem var(--bp-font); }
.bp-install-hero span { color:#a1a1aa; font:500 .8rem var(--bp-mono,monospace); }
.bp-install-steps { display:grid; gap:10px; margin:0; padding:0; list-style:none; counter-reset:bp-step; }
.bp-install-steps li { position:relative; display:grid; grid-template-columns:auto minmax(0,1fr); align-items:center; gap:14px; padding:12px 14px; border:1px solid var(--bp-line); border-radius:18px; background:var(--bp-surface); counter-increment:bp-step; }
.bp-install-steps li > span:last-child { display:grid; gap:3px; }
.bp-install-steps strong { font:700 .95rem/1.3 var(--bp-font); }
.bp-install-steps small { color:var(--bp-text-2); font-size:.82rem; line-height:1.4; }
.bp-install-step-icon { position:relative; display:grid; place-items:center; width:46px; height:46px; border-radius:14px; background:var(--bp-lime-soft); color:var(--bp-lime-text); font-size:1.1rem; }
.bp-install-step-icon::after { content:counter(bp-step); position:absolute; top:-6px; left:-6px; display:grid; place-items:center; width:20px; height:20px; border:2px solid var(--bp-surface); border-radius:50%; background:var(--bp-ink); color:#fff; font:800 .68rem/1 var(--bp-font); }
/* Share invitation: same floating card as the install banner, with an orange glow and the story preview sheet. */
.bp-install--share { background:radial-gradient(120% 140% at 0% 0%,rgba(255,91,48,.2),transparent 55%),#141417; }
.bp-install-icon--glyph { display:grid; place-items:center; background:linear-gradient(140deg,#ff7a55,var(--bp-orange)); color:#fff; font-size:1.35rem; }
.bp-share-pitch { margin:0; color:var(--bp-text-2); font-size:.92rem; line-height:1.5; }
.bp-share-pitch strong { color:var(--bp-text); }
.bp-share-preview { display:grid; place-items:center; padding:14px; border-radius:22px; background:radial-gradient(90% 70% at 100% 0%,rgba(255,91,48,.16),transparent 70%),var(--bp-surface-2); }
.bp-share-preview img,.bp-share-preview .bp-skel { width:auto; height:min(46vh,420px); aspect-ratio:9 / 16; border-radius:16px; box-shadow:0 14px 40px rgba(0,0,0,.28); }
.bp-share-preview p { margin:24px 0; text-align:center; }
.bp-share-done { display:flex; align-items:center; gap:8px; margin:0; color:var(--bp-lime-text); font-weight:600; }
.bp-share-actions { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.6fr); gap:10px; }
.bp-share-actions .bp-btn--primary:disabled { opacity:.55; cursor:progress; }
html[data-theme="dark"] .bp-install-step-icon::after { background:var(--bp-lime); color:#17181c; }
html[data-theme="dark"] .bp-install { border-color:rgba(255,255,255,.1); box-shadow:0 1px 0 rgba(255,255,255,.05) inset,0 24px 64px rgba(0,0,0,.7); }
/* One floating card at a time: the update notice wins over the install invitation. */
.site-shell:has(.pwa-update-notice) .bp-install { display:none; }

/* Feed: generated news about places, with likes and comments. */
.bp-feed-hero { display:grid; gap:10px; justify-items:start; padding:8px 0 22px; }
.bp-feed-hero .bp-h1 { margin:0; }
.bp-feed-hero .bp-lead { max-width:560px; margin:0; color:var(--bp-text-2); }
.bp-feed-hero .bp-eyebrow i { color:var(--bp-orange); }
.bp-feed-list { display:grid; grid-template-columns:minmax(0,1fr); gap:18px; }
.bp-feed-sentinel { height:1px; }
.bp-feed-end { display:flex; align-items:center; justify-content:center; gap:8px; padding:18px 0 6px; color:var(--bp-text-3); font-size:.86rem; }
.bp-feed-end i { color:var(--bp-lime-text); }
.bp-skel--feed { height:420px; border-radius:var(--bp-radius-l); }

.bp-feed-card { position:relative; display:grid; grid-template-columns:minmax(0,1fr); overflow:hidden; border:1px solid var(--bp-line); border-radius:var(--bp-radius-l); background:var(--bp-surface); box-shadow:var(--bp-shadow-1); transition:transform .2s var(--bp-ease), box-shadow .2s var(--bp-ease), border-color .2s; }
.bp-feed-card:hover { border-color:var(--bp-line-strong); box-shadow:var(--bp-shadow-2); }
.bp-feed-card:active { transform:scale(.995); }
.bp-feed-stretch { position:absolute; z-index:1; inset:0; border-radius:inherit; }
.bp-feed-stretch:focus-visible { outline:3px solid var(--bp-lime); outline-offset:-3px; }
.bp-feed-head { display:flex; align-items:center; gap:11px; padding:14px 16px 12px; }
.bp-feed-logo { display:grid; place-items:center; flex:none; width:40px; height:40px; overflow:hidden; border-radius:12px; background:var(--bp-ink); color:var(--bp-lime); font:700 .78rem var(--bp-mono); letter-spacing:-.03em; }
.bp-feed-logo img { width:100%; height:100%; object-fit:cover; }
.bp-feed-logo--lg { width:58px; height:58px; border-radius:16px; font-size:1rem; }
.bp-feed-who { display:grid; min-width:0; flex:1; line-height:1.25; }
.bp-feed-who strong { overflow:hidden; color:var(--bp-text); font-size:.95rem; text-overflow:ellipsis; white-space:nowrap; }
.bp-feed-who small { color:var(--bp-text-3); font-size:.78rem; }
.bp-feed-kind { display:inline-flex; align-items:center; gap:6px; flex:none; padding:6px 10px; border-radius:999px; background:var(--bp-lime-soft); color:var(--bp-lime-text); font:700 .7rem var(--bp-font); letter-spacing:.01em; white-space:nowrap; }
.bp-feed-kind--menuupdated { background:var(--bp-surface-2); color:var(--bp-text-2); }
.bp-feed-kind--review { background:var(--bp-orange-soft); color:var(--bp-orange-text); }
.bp-feed-media { position:relative; aspect-ratio:16 / 9; overflow:hidden; background:var(--bp-surface-2); }
.bp-feed-media img { width:100%; height:100%; object-fit:cover; transition:transform .5s var(--bp-ease); }
.bp-feed-card:hover .bp-feed-media img { transform:scale(1.03); }
.bp-feed-media::after { content:""; position:absolute; inset:auto 0 0; height:45%; background:linear-gradient(transparent, rgb(11 11 13 / .55)); pointer-events:none; }
.bp-feed-from { position:absolute; z-index:1; left:14px; bottom:12px; display:grid; color:#fff; font:700 1.35rem/1.05 var(--bp-font); letter-spacing:-.02em; text-shadow:0 1px 10px rgb(0 0 0 / .35); }
.bp-feed-from small { font:600 .66rem var(--bp-mono); letter-spacing:.08em; text-transform:uppercase; opacity:.85; }
.bp-feed-body { display:grid; gap:8px; padding:14px 16px 6px; }
.bp-feed-title { margin:0; color:var(--bp-text); font:700 1.12rem/1.25 var(--bp-font); letter-spacing:-.02em; }
.bp-feed-lead { margin:0; color:var(--bp-text-2); font-size:.9rem; line-height:1.5; }
.bp-feed-dishes { display:flex; flex-wrap:wrap; gap:6px; margin:4px 0 0; padding:0; list-style:none; }
.bp-feed-dishes li { display:inline-flex; align-items:center; gap:7px; max-width:100%; padding:6px 10px; border-radius:10px; background:var(--bp-surface-2); color:var(--bp-text); font-size:.8rem; }
.bp-feed-dishes li i { color:var(--bp-text-3); font-size:.8rem; }
.bp-feed-dishes li span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bp-feed-dishes li b { color:var(--bp-lime-text); font:600 .78rem var(--bp-mono); white-space:nowrap; }
.bp-feed-actions { position:relative; z-index:2; display:flex; align-items:center; gap:4px; padding:6px 8px 8px; pointer-events:none; }
.bp-feed-action { display:inline-flex; align-items:center; gap:7px; min-height:42px; padding:0 12px; border:0; border-radius:999px; background:transparent; color:var(--bp-text-2) !important; font:600 .86rem var(--bp-font); text-decoration:none; cursor:pointer; pointer-events:auto; transition:background .15s, color .15s, transform .15s; }
.bp-feed-action:hover { background:var(--bp-surface-2); color:var(--bp-text) !important; }
.bp-feed-action:active { transform:scale(.92); }
.bp-feed-action i { font-size:1.08rem; }
.bp-feed-action.is-liked { color:var(--bp-orange) !important; }
.bp-feed-action.is-liked i { animation:bp-feed-pop .35s var(--bp-ease); }
.bp-feed-action--end { margin-left:auto; }
.bp-feed-action--end span:empty { display:none; }
@keyframes bp-feed-pop { 40% { transform:scale(1.35); } }
/* "Quero conhecer!": saves the place to the visitor's list, suggested back on the home page. */
.bp-feed-want { display:inline-flex; align-items:center; gap:7px; min-height:36px; margin-left:4px; padding:0 14px; border:1px solid var(--bp-line-strong); border-radius:999px; background:var(--bp-surface); color:var(--bp-text); font:700 .82rem var(--bp-font); white-space:nowrap; cursor:pointer; pointer-events:auto; transition:background .15s, border-color .15s, color .15s, transform .15s; }
.bp-feed-want:hover { border-color:var(--bp-text-3); }
.bp-feed-want:active { transform:scale(.94); }
.bp-feed-want.is-wanted { border-color:var(--bp-lime); background:var(--bp-lime); color:var(--bp-on-accent); }
.bp-feed-want.is-wanted i { animation:bp-feed-pop .35s var(--bp-ease); }
.bp-feed-want--lg { min-height:44px; margin-left:0; padding:0 18px; font-size:.9rem; }
.bp-feed-ask { position:relative; z-index:2; display:grid; grid-template-columns:auto minmax(0,1fr); gap:4px 12px; align-items:center; margin:0 12px 12px; padding:14px 44px 14px 14px; border:1px solid var(--bp-line); border-radius:var(--bp-radius); background:var(--bp-surface-2); }
.bp-feed-ask-icon { display:grid; place-items:center; width:40px; height:40px; border-radius:50%; background:var(--bp-lime); color:var(--bp-on-accent); }
.bp-feed-ask p { display:grid; gap:2px; margin:0; }
.bp-feed-ask strong { font-size:.92rem; }
.bp-feed-ask small { color:var(--bp-text-2); font-size:.8rem; line-height:1.4; }
.bp-feed-ask-actions { grid-column:1 / -1; display:flex; flex-wrap:wrap; gap:8px; margin-top:8px; }
.bp-feed-ask-close { position:absolute; top:8px; right:8px; display:grid; place-items:center; width:32px; height:32px; border:0; border-radius:50%; background:transparent; color:var(--bp-text-3); cursor:pointer; }
.bp-feed-ask-close:hover { background:var(--bp-surface-3); color:var(--bp-text); }
.bp-feed-detail .bp-feed-ask { margin:0; }
.bp-feed-want-note { display:flex; align-items:center; gap:8px; margin:0; color:var(--bp-text-2); font-size:.86rem; }
.bp-feed-want-note i { color:var(--bp-lime-text); }
.bp-want { position:relative; display:grid; }
/* Native-app feel on touch screens: no double-tap delay, no text selection or callouts on controls, and things give a little when pressed. */
html { touch-action:manipulation; }
@media (hover:none) {
  .bp-tabbar, .bp-btn, .bp-chip, .bp-icon-btn, .bp-seg button, .bp-feed-action, .bp-feed-want, .bp-feed-like, .bp-menu a, .bp-menu button, [role=tab], .bp-place, .bp-highlight, .bp-mapa-card, .bp-report-option { -webkit-user-select:none; user-select:none; -webkit-touch-callout:none; }
  .bp-tabbar img, .bp-place img, .bp-highlight img, .bp-mapa-card img { -webkit-user-drag:none; }
}
@media (hover:none) and (prefers-reduced-motion:no-preference) {
  .bp-place, .bp-highlight, .bp-mapa-card, .bp-report-option, .bp-chip, .bp-icon-btn, .bp-seg button, .bp-menu a, .bp-menu button, .profile-views-review { transition:transform .14s var(--bp-ease); }
  .bp-place:active, .bp-highlight:active, .bp-mapa-card:active, .bp-report-option:active { transform:scale(.975); }
  .bp-chip:active, .bp-icon-btn:active, .bp-seg button:active, .bp-menu a:active, .bp-menu button:active, .profile-views-review:active { transform:scale(.94); }
}
/* Installed app: no rubber-band pull on the page, like a native screen. */
@media (display-mode:standalone) { html, body { overscroll-behavior-y:none; } }

/* Highlights under the map: each place says why it is there. */
.bp-highlights { display:grid; gap:16px; width:100%; max-width:calc(var(--bp-max) + 2 * var(--bp-gutter)); margin:0 auto; padding:18px var(--bp-gutter) 32px; }
.bp-highlights-head { display:grid; gap:6px; }
.bp-highlights-head p.bp-small { margin:0; }
.bp-highlights-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr)); gap:14px; margin:0; padding:0; list-style:none; }
.bp-highlight { display:grid; grid-template-rows:auto 1fr; height:100%; overflow:hidden; border:1px solid var(--bp-line); border-radius:var(--bp-radius-l); background:var(--bp-surface); color:var(--bp-text) !important; text-decoration:none; transition:transform .18s var(--bp-ease), box-shadow .18s; }
@media (hover:hover) { .bp-highlight:hover { transform:translateY(-2px); box-shadow:var(--bp-shadow-2); } }
.bp-highlight-cover { position:relative; aspect-ratio:16/9; overflow:hidden; background:var(--bp-surface-2); }
.bp-highlight-cover img { width:100%; height:100%; object-fit:cover; }
.bp-highlight-reason { position:absolute; left:10px; top:10px; display:inline-flex; align-items:center; gap:6px; padding:6px 11px; border-radius:999px; background:var(--bp-ink); color:#fff; font:700 .74rem var(--bp-font); box-shadow:var(--bp-shadow-1); }
.bp-highlight--mostvisited .bp-highlight-reason i { color:var(--bp-lime); }
.bp-highlight--toprated .bp-highlight-reason i { color:#f5b301; }
.bp-highlight--mostcommented .bp-highlight-reason i { color:#7cc4ff; }
.bp-highlight--mostliked .bp-highlight-reason i { color:var(--bp-orange); }
.bp-highlight--mostwanted .bp-highlight-reason i { color:var(--bp-lime); }
.bp-highlight-body { display:grid; align-content:start; gap:4px; padding:12px 14px 14px; }
.bp-highlight-body strong { overflow:hidden; font-size:.98rem; text-overflow:ellipsis; white-space:nowrap; }
.bp-highlight-body small { color:var(--bp-text-2); font-size:.8rem; }
.bp-highlight-also { display:flex; flex-wrap:wrap; gap:6px; margin-top:4px; }
.bp-highlight-also span { padding:3px 9px; border-radius:999px; background:var(--bp-surface-2); color:var(--bp-text-2); font:600 .7rem var(--bp-font); }
@media (min-width:900px) { .bp-highlights { padding-block:24px 40px; } }
/* "Informar algo errado" on a place */
.bp-report-trigger { justify-self:center; display:inline-flex; align-items:center; gap:8px; min-height:40px; margin:0 auto; padding:0 14px; border:0; border-radius:999px; background:transparent; color:var(--bp-text-2); font:600 .84rem var(--bp-font); cursor:pointer; }
.bp-report-trigger:hover { background:var(--bp-surface-2); color:var(--bp-text); }
.bp-report-options { display:grid; gap:8px; margin:0; padding:0; list-style:none; }
.bp-report-option { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:12px; width:100%; padding:12px 14px; border:1px solid var(--bp-line); border-radius:var(--bp-radius); background:var(--bp-surface); color:var(--bp-text); font:inherit; text-align:left; cursor:pointer; transition:border-color .15s, background .15s; }
.bp-report-option:hover { border-color:var(--bp-line-strong); background:var(--bp-surface-2); }
.bp-report-option > span:nth-child(2) { display:grid; gap:2px; }
.bp-report-option strong { font-size:.92rem; }
.bp-report-option small { color:var(--bp-text-2); font-size:.78rem; line-height:1.35; }
.bp-report-option > i { color:var(--bp-text-3); font-size:.8rem; }
.bp-report-option-icon { display:grid; place-items:center; width:38px; height:38px; border-radius:12px; background:var(--bp-surface-2); color:var(--bp-text); }
.bp-report-form { padding:0; }
.bp-report-back { justify-self:start; display:inline-flex; align-items:center; gap:8px; padding:4px 0; border:0; background:none; color:var(--bp-text-2); font:600 .84rem var(--bp-font); cursor:pointer; }
.bp-report-note { margin:0; padding:12px 14px; border-radius:12px; background:var(--bp-surface-2); color:var(--bp-text-2); font-size:.84rem; line-height:1.45; }
.bp-report-note a { color:var(--bp-text); font-weight:700; }
.bp-report-done { display:grid; justify-items:center; gap:12px; padding:8px 0; text-align:center; }
.bp-report-done p { margin:0; color:var(--bp-text-2); line-height:1.5; }
.bp-report-done-icon { display:grid; place-items:center; width:56px; height:56px; border-radius:50%; background:var(--bp-lime); color:var(--bp-on-accent); font-size:1.4rem; }
.bp-want-remove { position:absolute; top:8px; right:8px; display:grid; place-items:center; width:32px; height:32px; border:0; border-radius:50%; background:rgba(18,20,17,.55); color:#fff; cursor:pointer; backdrop-filter:blur(6px); }
.bp-want-remove:hover { background:rgba(18,20,17,.8); }

.bp-feed-quote { position:relative; display:grid; gap:12px; margin:0 16px; padding:18px; border-radius:var(--bp-radius); background:linear-gradient(135deg, var(--bp-orange-soft), var(--bp-surface-2)); }
.bp-feed-quote p { margin:0; color:var(--bp-text); font:500 1.02rem/1.5 var(--bp-font); }
.bp-feed-quote--lg { margin:0; padding:22px; }
.bp-feed-quote--lg p { font-size:1.15rem; }
.bp-feed-quote footer { display:flex; align-items:center; justify-content:flex-start; gap:9px; margin:0; padding:0; border:0; background:none; color:var(--bp-text-2); font-size:.82rem; text-align:left; }
.bp-feed-stars { display:flex; gap:3px; color:var(--bp-line-strong); font-size:.8rem; }
.bp-feed-stars .is-on { color:var(--bp-orange); }
.bp-feed-author { display:grid; place-items:center; flex:none; width:32px; height:32px; overflow:hidden; border-radius:50%; background:var(--bp-lime); color:var(--bp-ink); font:700 .68rem var(--bp-mono); }
.bp-feed-author img { width:100%; height:100%; object-fit:cover; }
.bp-feed-card--review .bp-feed-body { padding-top:12px; }

/* Few liked places yet: keep cards card-sized instead of stretching across the row. */
@media (min-width:720px) and (max-width:1023px) { .bp-rail--popular { grid-auto-columns:calc((100% - 24px) / 3); } }
.bp-feed-invite { display:flex; align-items:center; gap:14px; padding:16px 18px; border:1px solid var(--bp-line); border-radius:var(--bp-radius-l); background:linear-gradient(120deg, var(--bp-surface), var(--bp-lime-soft)); color:var(--bp-text) !important; text-decoration:none; transition:border-color .2s, transform .2s var(--bp-ease); }
.bp-feed-invite:hover { border-color:var(--bp-line-strong); transform:translateY(-1px); }
.bp-feed-invite > span:nth-child(2) { display:grid; flex:1; gap:3px; }
.bp-feed-invite small { color:var(--bp-text-2); font-size:.84rem; line-height:1.4; }
.bp-feed-invite-icon { display:grid; place-items:center; flex:none; width:46px; height:46px; border-radius:14px; background:var(--bp-ink); color:var(--bp-orange); font-size:1.1rem; }

.bp-feed-detail-bar { display:flex; align-items:center; gap:10px; margin-bottom:14px; color:var(--bp-text-2); font-weight:600; }
.bp-feed-story { display:grid; grid-template-columns:minmax(0,1fr); gap:20px; }
.bp-feed-story-cover { position:relative; aspect-ratio:16 / 9; overflow:hidden; border-radius:var(--bp-radius-l); background:var(--bp-surface-2); box-shadow:var(--bp-shadow-2); }
.bp-feed-story-cover img { width:100%; height:100%; object-fit:cover; }
.bp-feed-story-cover .bp-feed-kind { position:absolute; top:14px; left:14px; box-shadow:var(--bp-shadow-1); }
.bp-feed-story-head { display:flex; align-items:center; gap:14px; }
.bp-feed-story-head .bp-eyebrow { margin:0 0 4px; }
.bp-feed-story-head .bp-h1 { margin:0; font-size:clamp(1.5rem, 5vw, 2.1rem); }
.bp-feed-story-lead { margin:0; color:var(--bp-text-2); font-size:1.02rem; line-height:1.6; }
.bp-feed-stats { display:grid; grid-template-columns:repeat(3, 1fr); overflow:hidden; border:1px solid var(--bp-line); border-radius:var(--bp-radius); }
.bp-feed-stats div { display:grid; gap:3px; padding:14px; }
.bp-feed-stats div + div { border-left:1px solid var(--bp-line); }
.bp-feed-stats b { color:var(--bp-text); font:700 1.15rem var(--bp-font); letter-spacing:-.02em; }
.bp-feed-stats span { color:var(--bp-text-3); font-size:.74rem; }
.bp-feed-like-bar { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.bp-feed-like { display:inline-flex; align-items:center; gap:8px; min-height:44px; padding:0 18px; border:1px solid var(--bp-line-strong); border-radius:999px; background:var(--bp-surface); color:var(--bp-text); font:700 .9rem var(--bp-font); cursor:pointer; transition:background .15s, color .15s, border-color .15s, transform .15s; }
.bp-feed-like:active { transform:scale(.95); }
.bp-feed-like.is-liked { border-color:var(--bp-orange); background:var(--bp-orange); color:#fff; }
.bp-feed-like.is-liked i { animation:bp-feed-pop .35s var(--bp-ease); }
.bp-feed-like-count { flex:1; color:var(--bp-text-2); font-size:.86rem; }
.bp-feed-section { display:grid; gap:12px; }
.bp-feed-section .bp-section-head { margin:0; }
.bp-feed-menu { display:grid; margin:0; padding:0; list-style:none; border:1px solid var(--bp-line); border-radius:var(--bp-radius); overflow:hidden; }
.bp-feed-menu li { display:flex; align-items:center; gap:12px; padding:12px 14px; }
.bp-feed-menu li + li { border-top:1px solid var(--bp-line); }
.bp-feed-menu li > span:nth-child(2) { display:grid; flex:1; min-width:0; }
.bp-feed-menu b { color:var(--bp-text); font-size:.92rem; }
.bp-feed-menu small { color:var(--bp-text-3); font-size:.74rem; }
.bp-feed-about { margin:0; color:var(--bp-text-2); line-height:1.6; }
.bp-feed-address { display:flex; align-items:flex-start; gap:8px; margin:0; color:var(--bp-text-2); font-size:.88rem; }
.bp-feed-address i { margin-top:3px; color:var(--bp-text-3); }
.bp-feed-photos { display:flex; gap:8px; margin:0 calc(-1 * var(--bp-gutter)); padding:0 var(--bp-gutter); overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none; }
.bp-feed-photos img { flex:none; width:min(62%, 260px); aspect-ratio:4 / 3; border-radius:var(--bp-radius); object-fit:cover; scroll-snap-align:start; }
.bp-feed-comments { padding-top:8px; }
.bp-feed-compose { display:grid; grid-template-columns:40px 1fr; gap:6px 12px; padding:14px; border:1px solid var(--bp-line); border-radius:var(--bp-radius-l); background:var(--bp-surface); }
.bp-feed-compose textarea { width:100%; min-height:64px; padding:10px 12px; border:1px solid var(--bp-line); border-radius:12px; background:var(--bp-bg); color:var(--bp-text); font:400 .95rem/1.45 var(--bp-font); resize:vertical; }
.bp-feed-compose textarea:focus { border-color:var(--bp-text); outline:none; }
.bp-feed-compose-foot { grid-column:2; display:flex; align-items:center; justify-content:space-between; gap:10px; }
.bp-feed-compose-foot small { color:var(--bp-text-3); font:500 .74rem var(--bp-mono); }
.bp-feed-compose .bp-form-msg { grid-column:2; margin:0; }
.bp-feed-login { display:flex; align-items:center; justify-content:center; gap:9px; min-height:52px; border:1.5px dashed var(--bp-line-strong); border-radius:var(--bp-radius-l); color:var(--bp-text) !important; font-weight:700; text-decoration:none; }
.bp-feed-login:hover { background:var(--bp-surface-2); }
.bp-feed-no-comments { margin:0; color:var(--bp-text-3); font-size:.9rem; text-align:center; }
.bp-feed-thread { display:grid; gap:4px; margin:0; padding:0; list-style:none; }
.bp-feed-thread li { display:flex; align-items:flex-start; gap:11px; padding:12px 4px; }
.bp-feed-thread li + li { border-top:1px solid var(--bp-line); }
.bp-feed-thread li > div { flex:1; min-width:0; }
.bp-feed-thread-meta { margin:0 0 3px; color:var(--bp-text-3); font-size:.78rem; }
.bp-feed-thread-meta b { color:var(--bp-text); font-size:.86rem; }
.bp-feed-thread-body { margin:0; color:var(--bp-text); font-size:.94rem; line-height:1.5; white-space:pre-line; overflow-wrap:anywhere; }
.bp-feed-thread-delete { display:grid; place-items:center; flex:none; width:34px; height:34px; border:0; border-radius:50%; background:transparent; color:var(--bp-text-3); cursor:pointer; }
.bp-feed-thread-delete:hover { background:var(--bp-surface-2); color:var(--bp-orange-text); }
@media (min-width:721px) {
  .bp-feed-list { gap:22px; }
  .bp-feed-body { padding:16px 20px 6px; }
  .bp-feed-head { padding:16px 20px 12px; }
  .bp-feed-actions { padding:6px 12px 10px; }
  .bp-feed-quote { margin:0 20px; }
}
@media (prefers-reduced-motion:reduce) {
  .bp-feed-card, .bp-feed-media img, .bp-feed-action i, .bp-feed-like i, .bp-feed-want, .bp-feed-want i { transition:none; animation:none; }
}

/* Conversation-style reviews and comments. */
.feed-review-conversation{padding:8px 18px 14px}.bp-feed-thread li{display:block;padding:18px 0}.comment-time{font:400 12px var(--bp-font);color:var(--bp-text-3)}.comment-like{display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:7px 10px;border:0;border-radius:9px;background:transparent;color:var(--bp-text-2);font:600 12px var(--bp-font);cursor:pointer}.comment-like.is-liked{color:var(--bp-orange-text)}.comment-like:hover{background:var(--bp-surface-2)}.comment-like:disabled{opacity:.55;cursor:wait}.bp-feed-thread-delete{width:44px;height:44px}.bp-feed-card--review .bp-feed-dishes{display:none}@media(max-width:600px){.feed-review-conversation{padding:8px 12px 14px}.bp-feed-card--review .bp-feed-actions{flex-wrap:wrap}}
