/* ========== CSS Custom Properties ========== */
:root {
  --terra: #7B48F2;
  --terra-soft: #A35BE8;
  --terra-strong: #4D26D9;
  --terra-deep: #2E18B8;
  --terra-dim: rgba(123,72,242,.11);
  --terra-glow: rgba(123,72,242,.055);
  --forest: #3326D9;
  --forest-soft: #5D4DFF;
  --ifood: #7B48F2;
  --canvas: #F5F2FF;
  --card-bg: #FFFEFF;
  --body-bg: linear-gradient(135deg,#F9F7FF 0%,#F2ECFF 48%,#EEF1FF 100%);
  --text-primary: #261F3D;
  --text-secondary: #675D7D;
  --text-tertiary: #9A8FAF;
  --border-subtle: #E6DDF7;
  --border-muted: #D0C2EC;
  --surface-hover: rgba(123,72,242,.055);
  --grain-opacity: 0;
  --shadow-ring: 0 0 0 1px rgba(0,0,0,.06);
  --shadow-sm: 0 1px 2px rgba(0,0,0,.05);
  --shadow-md: 0 4px 16px rgba(0,0,0,.07);
  --shadow-lg: 0 8px 24px rgba(0,0,0,.09);
  --chart-grid: rgba(0,0,0,.08);
  --chart-text: #261F3D;
  --chart-legend: #675D7D;
  --chart-bar-fill: rgba(123,72,242,.42);
  --chart-bar-border: #7B48F2;
  --chart-alt-fill: rgba(51,38,217,.22);
  --chart-alt-border: #3326D9;
  --heat-start: #F1EAFF;
  --heat-mid: #B26AF0;
  --heat-strong: #7B48F2;
  --heat-peak: #4D26D9;
  --heat-max: #2E18B8;
  --tier-red: #E5484D;
  --tier-amber: #E8A33D;
  --tier-green: #2E9E6B;
  --tier-gray: #9A8FAF;
  --price-min-text: #2e7d5b;
  --price-min-bg: rgba(46,125,91,.08);
  --price-min-border: rgba(46,125,91,.22);
  --price-max-text: #EB0033;
  --price-max-bg: rgba(235,0,51,.08);
  --price-max-border: rgba(235,0,51,.22);
  --space-section: 1rem;
  --space-panel: 1rem;
  --leaflet-bg: #F5F2FF;
  --spinner-track: #E6DDF7;
  --range-track: #E6DDF7;
}
html.dark {
  --terra: #B06AFF;
  --terra-soft: #CB8CFF;
  --terra-strong: #7F51FF;
  --terra-deep: #3A22D2;
  --terra-dim: rgba(176,106,255,.15);
  --terra-glow: rgba(176,106,255,.08);
  --forest: #6D5BFF;
  --forest-soft: #9E8BFF;
  --ifood: #B06AFF;
  --canvas: #151127;
  --card-bg: #201B38;
  --body-bg: linear-gradient(135deg,#100E1E 0%,#17112E 48%,#0E1030 100%);
  --text-primary: #F5F0FF;
  --text-secondary: #B8ACCE;
  --text-tertiary: #857A9B;
  --border-subtle: #302747;
  --border-muted: #43355F;
  --surface-hover: rgba(176,106,255,.085);
  --grain-opacity: 0;
  --shadow-ring: 0 0 0 1px rgba(255,255,255,.1);
  --shadow-sm: 0 1px 2px rgba(0,0,0,.2);
  --shadow-md: 0 4px 16px rgba(0,0,0,.25);
  --shadow-lg: 0 8px 24px rgba(0,0,0,.3);
  --chart-grid: rgba(255,255,255,.08);
  --chart-text: #9E9E9E;
  --chart-legend: #9E9E9E;
  --chart-bar-fill: rgba(176,106,255,.42);
  --chart-bar-border: #B06AFF;
  --chart-alt-fill: rgba(109,91,255,.28);
  --chart-alt-border: #6D5BFF;
  --heat-start: #302747;
  --heat-mid: #7F51FF;
  --heat-strong: #B06AFF;
  --heat-peak: #CB8CFF;
  --heat-max: #F0D9FF;
  --tier-red: #FF6B70;
  --tier-amber: #FFC55C;
  --tier-green: #4CC38A;
  --tier-gray: #857A9B;
  --price-min-text: #6fcf9a;
  --price-min-bg: rgba(76,175,122,.16);
  --price-min-border: rgba(111,207,154,.3);
  --price-max-text: #ff7a90;
  --price-max-bg: rgba(255,77,106,.16);
  --price-max-border: rgba(255,122,144,.32);
  --leaflet-bg: #151127;
  --spinner-track: #302747;
  --range-track: #302747;
}

*{scrollbar-width:thin;scrollbar-color:var(--border-muted) var(--canvas)}
/* Consistent keyboard focus ring */
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--terra);outline-offset:2px}
::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:var(--canvas)}::-webkit-scrollbar-thumb{background:var(--border-muted);border-radius:2px}

/* Subtle paper grain */
body::after{content:'';position:fixed;inset:0;pointer-events:none;z-index:0;opacity:var(--grain-opacity);background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");background-repeat:repeat;background-size:128px 128px}
#app{position:relative;z-index:1}

/* Brand */
.brand-logo{display:block;width:auto;object-fit:contain}
.brand-logo--light{display:block}
.brand-logo--dark{display:none}
html.dark .brand-logo--light{display:none}
html.dark .brand-logo--dark{display:block}

#map{height:300px;border-radius:0.75rem;z-index:1}
.rest-map{height:300px;border-radius:0.75rem;z-index:1}
.leaflet-container{background:var(--leaflet-bg)}
.leaflet-popup-content-wrapper{background:var(--card-bg);color:var(--text-primary);border:none;border-radius:12px;box-shadow:var(--shadow-ring),var(--shadow-lg)}
.leaflet-popup-tip{background:var(--card-bg)}

/* SMaps map component: base pin, tier dots, clusters, control, legend chips */
.smaps-dot-wrap{background:transparent;border:none}
.smaps-dot{display:block;width:100%;height:100%;border-radius:50%;border:1.5px solid rgba(255,255,255,.85);box-shadow:0 1px 4px rgba(0,0,0,.25)}
.smaps-dot--red{background:var(--tier-red)}
.smaps-dot--amber{background:var(--tier-amber)}
.smaps-dot--green{background:var(--tier-green)}
.smaps-dot--gray{background:var(--tier-gray)}
.smaps-dot--ring{box-shadow:0 0 0 2.5px #fff,0 1px 4px rgba(0,0,0,.3)}
.smaps-base-pin-wrap{background:transparent;border:none}
.smaps-base-pin{position:relative;z-index:2;display:block;width:32px;height:44px;filter:drop-shadow(0 3px 6px rgba(0,0,0,.35))}
.smaps-base-pin__body{fill:var(--terra);stroke:#fff;stroke-width:1.5}
.smaps-base-pin__star{fill:#fff}
.smaps-base-pulse{position:absolute;left:50%;bottom:-6px;width:26px;height:26px;margin-left:-13px;border-radius:50%;background:var(--terra);opacity:.35;animation:smaps-pulse 2.2s ease-out infinite;z-index:1}
@keyframes smaps-pulse{0%{transform:scale(.35);opacity:.4}70%{transform:scale(1.6);opacity:0}100%{transform:scale(1.6);opacity:0}}
@media (prefers-reduced-motion:reduce){.smaps-base-pulse{animation:none;opacity:.18}}
.smaps-cluster{display:flex;align-items:center;justify-content:center;border-radius:50%;color:#fff;font-family:'Figtree',sans-serif;font-weight:700;border:2px solid rgba(255,255,255,.9);box-shadow:0 2px 8px rgba(0,0,0,.3)}
.smaps-cluster--small{font-size:11px}
.smaps-cluster--medium{font-size:12px}
.smaps-cluster--large{font-size:13px}
.smaps-cluster--red{background:var(--tier-red)}
.smaps-cluster--amber{background:var(--tier-amber)}
.smaps-cluster--green{background:var(--tier-green)}
.smaps-cluster--gray{background:var(--tier-gray)}
.smaps-fit-control{width:34px;height:34px;display:flex;align-items:center;justify-content:center;background:var(--card-bg);color:var(--text-primary);border:none;border-radius:8px;box-shadow:var(--shadow-ring),var(--shadow-sm);cursor:pointer;transition:color .2s ease}
.smaps-fit-control:hover{color:var(--terra)}
.smaps-fit-control svg{width:18px;height:18px}
.smaps-tooltip{background:var(--card-bg);color:var(--text-primary);border:none;border-radius:8px;box-shadow:var(--shadow-ring),var(--shadow-md);font-size:11px;font-weight:600;padding:4px 8px}
.smaps-tooltip::before{display:none}
.smaps-popup{display:flex;flex-direction:column;gap:3px;min-width:170px}
.smaps-popup__name{font-size:13px;font-weight:700;color:var(--text-primary)}
.smaps-popup__rating{font-size:12px;color:var(--text-secondary)}
.smaps-popup__chip{align-self:flex-start;padding:2px 8px;border-radius:999px;background:var(--terra-dim);color:var(--terra);font-size:10.5px;font-weight:600}
.smaps-popup__distance{font-size:11px;color:var(--text-secondary)}
.smaps-popup__note{color:var(--text-tertiary);font-size:10px}
.smaps-legend-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;border:1px solid var(--border-subtle);background:var(--card-bg);color:var(--text-secondary);font-size:11px;font-weight:600;cursor:pointer;transition:all .2s ease;opacity:.45}
.smaps-legend-chip.active{opacity:1;border-color:var(--border-muted);box-shadow:var(--shadow-sm)}
.smaps-legend-chip:hover{color:var(--text-primary)}
.smaps-legend-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.smaps-legend-dot--ring{background:var(--card-bg);border:2px solid var(--text-tertiary)}
.touch-scroll{overflow:auto;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y}
.view-stack{display:flex;flex-direction:column;gap:var(--space-section)}
.panel-stack{display:flex;flex-direction:column;gap:var(--space-panel)}
.view-stack.hidden,.panel-stack.hidden{display:none!important}
#restaurant-view.restaurant-loading{max-height:calc(100vh - 6rem);overflow:hidden}
#restaurant-view.restaurant-loading > *:not(#restaurant-skeleton){display:none!important}
#restaurant-view.restaurant-loading #restaurant-skeleton{display:flex!important}
.empty-state-icon{box-shadow:var(--shadow-ring),var(--shadow-lg)}

/* Nav */
.nav-item{transition:all .25s ease;border-left:2px solid transparent;letter-spacing:0.01em;min-height:2.5rem}
.nav-item:hover{color:var(--terra);background:var(--terra-glow)}
.nav-item.active{color:var(--terra);border-left-color:var(--terra);background:linear-gradient(90deg,var(--terra-dim),transparent);font-weight:600}

/* Sidebar shell: fixed header + scrollable middle + pinned footer */
.sidebar-heading{font-size:0.6875rem;line-height:1rem;text-transform:uppercase;letter-spacing:0.14em;font-weight:600;color:var(--text-tertiary)}
.sidebar-scroll{scrollbar-width:thin;scrollbar-color:var(--border-muted) transparent;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 14px,#000 calc(100% - 14px),transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 14px,#000 calc(100% - 14px),transparent 100%)}
.sidebar-scroll::-webkit-scrollbar{width:4px}
.sidebar-scroll::-webkit-scrollbar-track{background:transparent}
.sidebar-scroll::-webkit-scrollbar-thumb{background:var(--border-muted);border-radius:2px}
/* Collapsible section chevron (Análises): rotates via aria-expanded */
.sidebar-collapse-chevron{transition:transform .2s ease}
button[aria-expanded="false"] .sidebar-collapse-chevron{transform:rotate(-90deg)}

/* Cards */
.card{background:var(--card-bg);border:none;border-radius:0.875rem;transition:all .3s ease;position:relative;box-shadow:var(--shadow-ring),var(--shadow-sm)}
.card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--terra),transparent);opacity:0;transition:opacity .3s;border-radius:0.875rem 0.875rem 0 0}
.card:hover{box-shadow:var(--shadow-ring),var(--shadow-md)}
.card:hover::before{opacity:0.4}

/* Stat cards */
.stat-card{background:var(--card-bg);border:none;border-radius:0.875rem;position:relative;overflow:hidden;transition:all .35s ease;box-shadow:var(--shadow-ring),var(--shadow-sm)}
.stat-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent 10%,var(--terra) 50%,transparent 90%);opacity:0;transition:opacity .35s}
.stat-card::after{content:'';position:absolute;inset:0;background:linear-gradient(135deg,rgba(123,72,242,.045),rgba(51,38,217,.018) 42%,transparent 70%);pointer-events:none;opacity:0;transition:opacity .35s}
.stat-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-ring),var(--shadow-lg)}
.stat-card:hover::before{opacity:1}
.stat-card:hover::after{opacity:1}
.stat-card.tip-hero{background:linear-gradient(150deg,var(--terra-dim),var(--card-bg) 60%)}
.stat-card.tip-hero::before{opacity:1}

/* Animations */
.spinner{border:2px solid var(--spinner-track);border-top-color:var(--terra);border-radius:50%;width:2.5rem;height:2.5rem;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
:root{--skeleton-base:color-mix(in srgb,var(--border-subtle) 55%,var(--card-bg));--skeleton-sheen:rgba(255,255,255,.8)}
html.dark{--skeleton-sheen:rgba(255,255,255,.055)}
@keyframes skeleton-sweep{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}
#restaurant-skeleton .card::before,
#restaurant-skeleton .stat-card::before,
#restaurant-skeleton .stat-card::after{opacity:0!important}
#restaurant-skeleton .card:hover,
#restaurant-skeleton .stat-card:hover{transform:none;box-shadow:var(--shadow-ring),var(--shadow-sm)}
#restaurant-skeleton .card:hover::before{opacity:0}
.skeleton-block{
  background:var(--skeleton-base);
  position:relative;
  overflow:hidden;
  border-radius:.5rem;
  isolation:isolate;
}
.skeleton-block::after{
  content:'';
  position:absolute;
  inset:0;
  background:linear-gradient(90deg,transparent 0%,var(--skeleton-sheen) 50%,transparent 100%);
  transform:translateX(-100%);
  animation:skeleton-sweep 1.4s ease-in-out infinite;
  will-change:transform;
}
.skeleton-header{box-shadow:none}
/* Content-shaped skeleton pieces (metric cards, map area, table rows) */
.skeleton-metric{height:5.75rem;border-radius:0.875rem}
.skeleton-map{height:300px;border-radius:0.75rem}
.skeleton-row{height:2.25rem;border-radius:0.5rem}
.skeleton-rows{display:flex;flex-direction:column;gap:0.5rem}
.skeleton-status{display:flex;align-items:center;gap:0.65rem;color:var(--text-secondary);font-size:0.8125rem;font-weight:600;letter-spacing:0.01em}
@media (prefers-reduced-motion:reduce){
  .skeleton-block::after{animation:none;opacity:.35}
}

/* Inline error block with retry */
.inline-error{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0.75rem;text-align:center;border:1px solid var(--price-max-border);background:var(--price-max-bg);border-radius:0.875rem;padding:1.5rem 1.25rem;animation:fadeSlideUp .25s ease-out both}
.inline-error__message{color:var(--text-primary);font-size:0.8125rem;font-weight:600;max-width:32rem;line-height:1.5}
.inline-error__retry{background:linear-gradient(135deg,var(--terra-soft),var(--terra) 48%,var(--terra-deep));color:#fff;border:none;cursor:pointer;font-weight:600;font-size:0.8125rem;font-family:'Figtree',sans-serif;padding:0.5rem 1.25rem;border-radius:0.625rem;transition:box-shadow .2s ease-out,transform .2s ease-out;box-shadow:0 2px 10px rgba(123,72,242,.2)}
.inline-error__retry:hover{transform:translateY(-1px);box-shadow:0 6px 20px rgba(123,72,242,.26)}

/* Friendly empty state for lists/tables */
.list-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0.35rem;text-align:center;border:1px dashed var(--border-subtle);border-radius:0.875rem;background:var(--card-bg);padding:2rem 1.25rem;color:var(--text-secondary);font-size:0.8125rem;line-height:1.5;animation:fadeSlideUp .25s ease-out both}
.list-empty-state strong{color:var(--text-primary);font-weight:700}
@keyframes fadeUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
@keyframes fadeSlideUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@keyframes shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}
.fade-up{animation:fadeUp .5s ease-out both}
.reveal{animation:fadeSlideUp .45s ease-out both}
.reveal-1{animation-delay:0ms}
.reveal-2{animation-delay:60ms}
.reveal-3{animation-delay:120ms}
.reveal-4{animation-delay:180ms}
.reveal-5{animation-delay:240ms}
.reveal-6{animation-delay:300ms}
.stagger-1{animation-delay:.05s}
.stagger-2{animation-delay:.1s}
.stagger-3{animation-delay:.15s}
.stagger-4{animation-delay:.2s}

/* Tabs */
.tab-btn{transition:all .25s ease;letter-spacing:0.02em;font-size:0.75rem;min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tab-btn.active{background:linear-gradient(135deg,var(--terra-soft),var(--terra) 48%,var(--terra-deep));color:#fff;box-shadow:0 4px 16px rgba(123,72,242,.22)}
.tab-btn:not(.active){background:var(--card-bg);color:var(--text-secondary);box-shadow:var(--shadow-ring)}
.tab-btn:not(.active):hover{color:var(--text-primary);box-shadow:var(--shadow-ring),var(--shadow-sm)}

@media (min-width: 640px){
  #map{height:360px}
  .rest-map{height:360px}
  .skeleton-map{height:360px}
}

@media (min-width: 768px){
  #map{height:380px}
  .rest-map{height:380px}
  .skeleton-map{height:380px}
}

@media (min-width: 1024px){
  #map{height:420px}
  .rest-map{height:400px}
  .skeleton-map{height:420px}
}

/* Header */
.glass-header{background:color-mix(in srgb,var(--canvas) 88%,transparent);backdrop-filter:blur(20px);box-shadow:0 1px 0 var(--border-subtle)}

/* Filters */
.filter-bar{background:color-mix(in srgb,var(--card-bg) 70%,transparent);backdrop-filter:blur(8px);border:none;border-radius:0.875rem;padding:1rem 1.5rem;box-shadow:var(--shadow-ring)}
.filter-select{background:var(--card-bg);border:1px solid var(--border-subtle);border-radius:0.5rem;padding:0.4rem 1.75rem 0.4rem 0.5rem;color:var(--text-primary);font-size:0.75rem;font-family:'Figtree',sans-serif;cursor:pointer;transition:all .25s;outline:none;-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' fill='%237B48F2' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10l-5 5z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 0.5rem center;letter-spacing:0.01em}
.filter-select:hover{border-color:var(--border-muted)}
.filter-select:focus{border-color:var(--terra);box-shadow:0 0 0 2px rgba(123,72,242,.12)}
.filter-input{background:var(--card-bg);border:1px solid var(--border-subtle);border-radius:0.5rem;padding:0.4rem 0.5rem;color:var(--text-primary);font-size:0.75rem;font-family:'Figtree',sans-serif;transition:all .25s;outline:none;width:4.5rem}
.filter-input:hover{border-color:var(--border-muted)}
.filter-input:focus{border-color:var(--terra);box-shadow:0 0 0 2px rgba(123,72,242,.12)}
.filter-badge{background:var(--terra-dim);border:1px solid rgba(123,72,242,.16);border-radius:9999px;padding:0.2rem 0.75rem;font-size:0.6875rem;color:var(--terra);font-weight:600;letter-spacing:0.02em}
.filter-label{display:block;font-size:0.6875rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:0.1em;font-weight:600;font-family:'Figtree',sans-serif;margin-bottom:0.125rem}
.filter-select-full{display:block;width:100%;background:var(--card-bg);border:1px solid var(--border-subtle);border-radius:0.5rem;padding:0.5rem 1.75rem 0.5rem 0.625rem;color:var(--text-primary);font-size:0.8125rem;font-family:'Figtree',sans-serif;cursor:pointer;transition:all .25s;outline:none;-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' fill='%237B48F2' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10l-5 5z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 0.625rem center;letter-spacing:0.01em}
.filter-select-full:hover{border-color:var(--border-muted)}
.filter-select-full:focus{border-color:var(--terra);box-shadow:0 0 0 2px rgba(123,72,242,.12)}
.filter-tag{display:inline-flex;align-items:center;gap:0.25rem;background:rgba(123,72,242,.08);border:1px solid rgba(123,72,242,.16);border-radius:9999px;padding:0.2rem 0.625rem;font-size:0.6875rem;color:var(--terra);font-weight:600;cursor:pointer;transition:all .2s;letter-spacing:0.02em}
.filter-tag:hover{background:rgba(123,72,242,.13);border-color:rgba(123,72,242,.28)}
.filter-tag svg{width:9px;height:9px}

/* Tables */
.table-row{transition:background .2s ease}
.table-row:hover{background:var(--surface-hover)}
.highlight-row{background:var(--surface-hover)!important;border-left:2px solid var(--terra)}
/* Aligned digits in ranking/number cells */
#cat-table-body td,#cat-ranking-body td,#gen-ranking-body td,#rest-other-body td{font-variant-numeric:tabular-nums}
.tabular-nums{font-variant-numeric:tabular-nums}

/* Ranking card chrome */
.ranking-scroll-shell{position:relative;border-radius:0.5rem;box-shadow:0 0 0 1px rgba(0,0,0,.06)}
.ranking-scroll-shell::after{content:"";position:absolute;left:1px;right:1px;bottom:0;height:18px;border-radius:0 0 0.5rem 0.5rem;background:linear-gradient(to top,var(--card-bg),transparent);pointer-events:none;z-index:3;opacity:0;transition:opacity .2s ease}
.ranking-scroll-shell.has-fade-bottom::after{opacity:1}
.ranking-footer{margin-top:0.75rem;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:0.5rem 0.75rem}
.ranking-footer.hidden{display:none}
.ranking-footer-meta{flex:1 1 14rem;min-width:0;font-size:0.6875rem;line-height:1.5;color:var(--text-tertiary)}
.ranking-footer-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:0.5rem;margin-left:auto}
.btn-secondary{display:inline-flex;align-items:center;justify-content:center;gap:0.375rem;height:2rem;padding:0 0.75rem;background:var(--card-bg);border:1px solid var(--border-subtle);border-radius:0.5rem;color:var(--text-secondary);font-family:'Figtree',sans-serif;font-size:0.75rem;font-weight:600;line-height:1;white-space:nowrap;cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease}
.btn-secondary:hover:not(:disabled){background:var(--surface-hover);color:var(--text-primary);border-color:var(--border-muted,var(--border-subtle))}
.btn-secondary:focus-visible{outline:2px solid var(--terra);outline-offset:2px}
.btn-secondary:disabled{opacity:.55;cursor:not-allowed}
.btn-secondary svg{width:0.875rem;height:0.875rem;flex-shrink:0}
.btn-secondary.hidden{display:none}

/* Search */
.search-input{background:var(--card-bg);border:none;border-radius:0.625rem;padding:0.625rem 0.875rem;font-size:0.8125rem;color:var(--text-primary);font-family:'Figtree',sans-serif;transition:all .3s;outline:none;letter-spacing:0.01em;box-shadow:var(--shadow-ring),var(--shadow-sm)}
.search-input::placeholder{color:var(--text-tertiary)}
.search-input:focus{box-shadow:0 0 0 2px rgba(123,72,242,.13),var(--shadow-sm)}
/* Inputs with a leading/trailing icon: .search-input's shorthand padding loads after
   Tailwind's utilities and would override pl-10/pr-10, so re-assert them here. */
.search-input.pl-10{padding-left:2.5rem}
.search-input.pr-10{padding-right:2.5rem}
.search-btn{background:linear-gradient(135deg,var(--terra-soft),var(--terra) 48%,var(--terra-deep));color:#fff;font-weight:600;padding:0.625rem 1.5rem;border-radius:0.625rem;font-size:0.8125rem;font-family:'Figtree',sans-serif;transition:all .3s;border:none;cursor:pointer;letter-spacing:0.02em;box-shadow:0 2px 10px rgba(123,72,242,.2)}
.search-btn:hover{box-shadow:0 6px 20px rgba(123,72,242,.26);transform:translateY(-1px);background:linear-gradient(135deg,var(--terra-soft),var(--terra-strong) 58%,var(--forest))}
.search-btn:active{transform:translateY(0)}

/* Section titles */
.section-title{display:flex;align-items:center;gap:0.625rem;font-family:'Sora',sans-serif;font-size:0.9375rem;font-weight:700;color:var(--text-primary);letter-spacing:-0.01em}
.section-title svg{color:var(--terra);flex-shrink:0}
.section-divider{height:2px;background:linear-gradient(90deg,var(--terra),transparent);margin-top:0.375rem;width:48px;border-radius:1px}

/* Price tags */
.price-tag{background:var(--card-bg);border:none;border-radius:0.625rem;transition:all .25s;box-shadow:var(--shadow-ring),var(--shadow-sm)}
.price-tag:hover{transform:translateY(-1px);box-shadow:var(--shadow-ring),var(--shadow-md)}
.price-tag--min{background:var(--price-min-bg);border:1px solid var(--price-min-border)}
.price-tag--max{background:var(--price-max-bg);border:1px solid var(--price-max-border)}
.price-tag__label--min,.price-stat--min{color:var(--price-min-text)}
.price-tag__label--max,.price-stat--max{color:var(--price-max-text)}
.price-tag__value--min{color:var(--price-min-text)}
.price-tag__value--max{color:var(--price-max-text)}

/* Range slider */
input[type="range"]{-webkit-appearance:none;appearance:none;height:3px;background:var(--range-track);border-radius:2px;outline:none}
input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--terra);cursor:pointer;box-shadow:0 0 0 3px rgba(123,72,242,.16)}
input[type="range"]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--terra);cursor:pointer;border:none;box-shadow:0 0 0 3px rgba(123,72,242,.16)}

/* Menu analysis */
.menu-review-hero{display:grid;grid-template-columns:minmax(260px,320px) minmax(0,1fr);gap:1rem;align-items:stretch}
.menu-review-score-card{display:flex;flex-direction:column;align-items:center;text-align:center;background:linear-gradient(180deg,color-mix(in srgb,var(--card-bg) 96%,var(--terra) 4%),var(--card-bg));border-color:color-mix(in srgb,var(--border-subtle) 78%,var(--terra) 22%)}
.menu-review-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0.5rem;width:100%}
.menu-review-trend{display:flex;flex-direction:column;align-items:center;gap:.4rem;margin-top:.6rem}
.menu-review-trend-chip{display:inline-flex;align-items:center;font-family:'Sora',sans-serif;font-size:0.72rem;font-weight:700;line-height:1.2}
.menu-review-trend-chip--muted{color:var(--text-tertiary)}
.menu-review-trend-caption{color:var(--text-tertiary);font-size:0.7rem;font-weight:600}
.menu-review-sparkline{display:block}
.menu-review-metric{min-height:3rem;border:1px solid var(--border-subtle);background:var(--canvas);border-radius:0.5rem;padding:0.55rem 0.65rem;text-align:left}
.menu-review-metric span{display:block;color:var(--text-tertiary);font-size:0.625rem;text-transform:uppercase;letter-spacing:.12em;font-weight:700}
.menu-review-metric strong{display:block;margin-top:.2rem;color:var(--text-primary);font-family:'Sora',sans-serif;font-size:0.95rem;line-height:1.1}
.menu-review-pillar{position:relative;overflow:hidden}
.menu-review-pillar::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,var(--terra),var(--forest));opacity:.85}
.menu-review-progress{height:0.5rem;border-radius:999px;background:var(--canvas);overflow:hidden;border:1px solid var(--border-subtle)}
.menu-review-criterion,.menu-review-list-card,.menu-review-recommendation,.menu-review-benchmark{border-color:color-mix(in srgb,var(--border-subtle) 86%,var(--terra) 14%)}
.menu-review-chip{display:inline-flex;align-items:center;min-height:1.55rem;border-radius:0.45rem;background:var(--canvas);border:1px solid var(--border-subtle);color:var(--text-secondary);padding:0.25rem 0.5rem;font-size:0.625rem;font-weight:700;line-height:1.2}
.menu-review-chip-strong{background:var(--terra-dim);border-color:rgba(123,72,242,.18);color:var(--terra)}
/* Criterion score tones: 0-4 red, 5-7 amber, 8-10 green (both themes) */
.score-tone--low{color:var(--price-max-text)}
.score-tone--mid{color:#b45309}
html.dark .score-tone--mid{color:#fcd34d}
.score-tone--high{color:var(--price-min-text)}
.menu-review-evidence{margin-top:0.6rem;border-left:2px solid var(--border-muted);padding-left:0.65rem;color:var(--text-tertiary);font-size:0.75rem;line-height:1.5}
.menu-review-section-kicker{color:var(--text-tertiary);font-size:0.625rem;text-transform:uppercase;letter-spacing:.16em;font-weight:700}
.section-unlock-status{grid-column:1/-1;display:flex;align-items:center;gap:.5rem;border:1px solid var(--border-subtle);border-radius:.5rem;background:var(--card-bg);color:var(--text-secondary);font-size:.72rem;font-weight:600;padding:.5rem .7rem;margin-bottom:.65rem}
.section-unlock-status--ready{border-color:rgba(41,157,95,.22);background:color-mix(in srgb,var(--card-bg) 88%,var(--forest) 12%)}
.section-unlock-status--loading{border-color:rgba(123,72,242,.2);background:var(--terra-dim)}
.section-unlock-status--unavailable{border-color:var(--border-subtle);background:var(--canvas)}
.section-unlock-dot{width:.5rem;height:.5rem;border-radius:999px;background:var(--border-muted);flex-shrink:0}
.section-unlock-status--ready .section-unlock-dot{background:var(--forest)}
.section-unlock-status--loading .section-unlock-dot{background:var(--terra);box-shadow:0 0 0 3px rgba(123,72,242,.12)}
.section-unlock-label{color:var(--text-primary);font-weight:800;text-transform:uppercase;letter-spacing:.1em;font-size:.62rem}
.section-unlock-message{min-width:0}
.section-placeholder{display:flex;align-items:center;gap:.65rem;border:1px dashed var(--border-subtle);border-radius:.6rem;background:var(--canvas);color:var(--text-tertiary);font-size:.8rem;font-weight:600;padding:1rem}

@media (max-width: 1023px){
  .menu-review-hero{grid-template-columns:1fr}
}

@keyframes loading-bar{0%{width:5%;margin-left:0}50%{width:50%;margin-left:25%}100%{width:5%;margin-left:95%}}

/* Toast notifications */
.toast-container{position:fixed;bottom:1.25rem;right:1.25rem;z-index:9999;display:flex;flex-direction:column;gap:0.5rem;pointer-events:none}
.toast{pointer-events:auto;display:flex;align-items:center;gap:0.75rem;padding:0.75rem 1rem;border-radius:0.75rem;font-size:0.8125rem;font-family:'Figtree',sans-serif;max-width:24rem;animation:fadeSlideUp .3s ease-out both;box-shadow:var(--shadow-md)}
.toast--error{background:var(--price-max-bg);color:var(--price-max-text);border:1px solid var(--price-max-border)}
.toast--info{background:var(--card-bg);color:var(--text-primary);border:1px solid var(--border-subtle)}
.toast--warn{background:var(--terra-dim);color:var(--terra);border:1px solid rgba(123,72,242,.2)}
.toast__close{cursor:pointer;opacity:.5;transition:opacity .2s;flex-shrink:0}
.toast__close:hover{opacity:1}
.toast--exit{animation:toastExit .25s ease-in forwards}
@keyframes toastExit{to{opacity:0;transform:translateY(8px)}}

/* Collapsible sections */
.section-collapse-btn{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border-radius:0.5rem;color:var(--text-tertiary);background:transparent;border:1px solid transparent;transition:background .15s ease,color .15s ease,border-color .15s ease;cursor:pointer;flex-shrink:0}
.section-collapse-btn:hover{color:var(--text-primary);background:var(--surface-hover);border-color:var(--border-subtle)}
.section-collapse-btn:focus-visible{outline:2px solid var(--terra);outline-offset:2px}
.section-collapse-chevron{width:0.875rem;height:0.875rem;transition:transform .2s ease;transform-origin:center}
[data-collapsible-section].is-collapsed .section-collapse-chevron{transform:rotate(-90deg)}
[data-collapsible-section].is-collapsed [data-collapse-body]{display:none!important}
[data-collapsible-section].is-collapsed{padding-bottom:0}
[data-collapsible-section].is-collapsed .section-divider{margin-bottom:0}
[data-collapsible-section].is-collapsed .card{padding-bottom:0.9rem}

/* PDF capture-safe container: force light theme rendering */
.pdf-capture-mode{color-scheme:light}
.pdf-capture-mode #restaurant-view{background:#FAFAFB}

/* PDF report */
/* Off-screen A4 report composed by the PDF exports (794px = 210mm @96dpi).
   Every color below is the hardcoded LIGHT value of the design tokens: the
   node must never inherit html.dark overrides, so no var() is used here.
   Exception: the --pdf-* accent variables, defined locally with the light
   defaults and overridden inline by applyPdfBrandColor for agency branding. */
.pdf-report{position:absolute;top:0;left:-10000px;width:794px;box-sizing:border-box;padding:38px 44px 46px;background:#FFFFFF;color:#261F3D;font-family:'Figtree',Arial,sans-serif;font-size:12px;line-height:1.5;color-scheme:light;pointer-events:none;z-index:-1;--pdf-accent:#7B48F2;--pdf-accent-text:#7B48F2;--pdf-metric-accent:#E6DDF7}
.pdf-report *{box-shadow:none!important;animation:none!important;transition:none!important;text-shadow:none!important}
.pdf-report-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:14px;border-bottom:2px solid var(--pdf-accent);margin-bottom:18px}
.pdf-report-logo{display:block;height:30px;width:auto}
.pdf-report-agency{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0;text-align:center}
.pdf-report-agency-logo{display:block;max-height:42px;max-width:160px;width:auto;height:auto;object-fit:contain}
.pdf-report-agency-name{font-family:'Sora','Figtree',Arial,sans-serif;font-size:13px;font-weight:700;color:#261F3D;max-width:220px;overflow-wrap:break-word}
.pdf-report-titleblock{display:flex;align-items:center;gap:16px;margin:0 0 18px;padding:16px;border:1px solid #E6DDF7;border-radius:14px;background:linear-gradient(135deg,#FFFFFF 0%,#F9F7FF 100%)}
.pdf-report-titleblock--plain{display:block;padding:0;border:0;border-radius:0;background:transparent}
.pdf-report-identity-media{width:76px;height:76px;flex:0 0 76px;display:flex;align-items:center;justify-content:center;overflow:hidden;border:1px solid #E6DDF7;border-radius:16px;background:#F5F2FF}
.pdf-report-identity-image{display:block;width:100%;height:100%;object-fit:cover}
.pdf-report-identity-fallback{font-family:'Sora','Figtree',Arial,sans-serif;font-size:28px;font-weight:800;color:var(--pdf-accent-text)}
.pdf-report-identity-copy{min-width:0;flex:1}
.pdf-report-facts{margin:0 0 9px;font-size:10.5px;color:#675D7D;overflow-wrap:anywhere}
.pdf-report-title{margin:0 0 4px;font-family:'Sora','Figtree',Arial,sans-serif;font-size:24px;font-weight:800;line-height:1.2;letter-spacing:-0.01em;color:#261F3D}
.pdf-report-subtitle{margin:0 0 10px;font-size:13px;color:#675D7D}
.pdf-report-meta{display:flex;flex-wrap:wrap;gap:6px}
.pdf-report-chip{display:inline-block;padding:3px 10px;border-radius:999px;background:#F5F2FF;border:1px solid #E6DDF7;color:#4D26D9;font-size:10px;font-weight:600;letter-spacing:.02em}
.pdf-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:0 0 20px}
.pdf-section-body .pdf-metrics{margin-bottom:12px}
.pdf-metric{background:#F9F7FF;border:1px solid #E6DDF7;border-top:3px solid var(--pdf-metric-accent);border-radius:10px;padding:12px 10px;text-align:center}
.pdf-metric-label{display:block;margin-bottom:4px;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:#9A8FAF}
.pdf-metric-value{display:block;font-family:'Sora','Figtree',Arial,sans-serif;font-size:19px;font-weight:800;line-height:1.15;color:#261F3D}
.pdf-metric-hint{display:block;margin-top:3px;font-size:9px;color:#675D7D}
.pdf-section{margin:0 0 20px}
.pdf-section-head{margin-bottom:10px}
.pdf-section-title{margin:0;font-family:'Sora','Figtree',Arial,sans-serif;font-size:15px;font-weight:700;color:#261F3D}
.pdf-section-rule{height:2px;width:44px;margin-top:5px;border-radius:1px;background:linear-gradient(90deg,var(--pdf-accent),transparent)}
.pdf-section-note{margin:6px 0 0;font-size:10px;color:#9A8FAF}
.pdf-figure{overflow:hidden;border:1px solid #E6DDF7;border-radius:10px;background:#FFFFFF}
.pdf-figure img{display:block;width:100%;height:auto}
.pdf-figure-caption{margin:0;padding:7px 10px;border-top:1px solid #E6DDF7;background:#F9F7FF;font-size:10px;color:#675D7D}
.pdf-figure--matrix{max-width:360px;margin:10px auto 0}
.pdf-notice{margin:8px 0;padding:10px 12px;border:1px solid #E6DDF7;border-radius:10px;background:#F9F7FF;color:#675D7D;font-size:10.5px}
.pdf-notice--warn{border-color:#F3D38A;background:#FFF9E8;color:#8A5A00}
.pdf-table{width:100%;border-collapse:collapse;font-size:11px}
.pdf-table th{padding:7px 8px;background:#F5F2FF;border-bottom:1px solid #D0C2EC;color:#675D7D;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;text-align:left}
.pdf-table td{padding:6px 8px;border-bottom:1px solid #EFE9FB;color:#3E3554;vertical-align:top}
.pdf-table .pdf-cell-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.pdf-table .pdf-cell-accent{color:var(--pdf-accent-text);font-weight:700}
.pdf-table .pdf-cell-muted{color:#9A8FAF}
.pdf-table tr.pdf-row-highlight td{background:#F1EAFF;color:#261F3D;font-weight:600}
.pdf-cols-2{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0 0 12px}
.pdf-panel{background:#F9F7FF;border:1px solid #E6DDF7;border-radius:10px;padding:12px 14px}
.pdf-panel-title{margin:0 0 6px;font-family:'Sora','Figtree',Arial,sans-serif;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#4D26D9}
.pdf-list{margin:0;padding-left:16px}
.pdf-list li{margin:0 0 4px;color:#3E3554}
.pdf-score-banner{display:flex;align-items:center;gap:14px;margin:0 0 12px;padding:14px 16px;background:#F9F7FF;border:1px solid #E6DDF7;border-radius:10px}
.pdf-score-value{font-family:'Sora','Figtree',Arial,sans-serif;font-size:32px;font-weight:800;line-height:1;color:var(--pdf-accent-text)}
.pdf-score-status{display:block;font-family:'Sora','Figtree',Arial,sans-serif;font-size:14px;font-weight:700;color:#261F3D}
.pdf-score-scale{display:block;margin-top:2px;font-size:10px;color:#9A8FAF}
.pdf-score-banner--band{border-left:5px solid var(--pdf-score-color,var(--pdf-accent))}
.pdf-score-banner--band .pdf-score-value,.pdf-score-banner--band .pdf-score-status{color:var(--pdf-score-color,var(--pdf-accent-text))}
.pdf-score-ranges{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.pdf-score-range{padding:3px 9px;border:1px solid #E6DDF7;border-radius:8px;background:#FFFFFF;color:#675D7D;font-size:9px;font-weight:700}
.pdf-pillar{padding:12px 14px;border:1px solid #E6DDF7;border-radius:10px;background:#FFFFFF}
.pdf-pillar-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.pdf-pillar-score{font-family:'Sora','Figtree',Arial,sans-serif;font-size:16px;font-weight:800;color:#261F3D;white-space:nowrap}
.pdf-progress{height:5px;margin-top:8px;overflow:hidden;border-radius:999px;background:#E6DDF7}
.pdf-progress>span{display:block;height:100%;border-radius:999px;background:var(--pdf-accent)}
.pdf-criterion-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 12px}
.pdf-criterion{padding:12px 14px;border:1px solid #E6DDF7;border-radius:10px;background:#FFFFFF}
.pdf-criterion-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:7px}
.pdf-criterion-score{font-family:'Sora','Figtree',Arial,sans-serif;font-size:18px;font-weight:800;color:var(--pdf-accent-text);white-space:nowrap}
.pdf-mini-label{margin:8px 0 4px;font-size:8.5px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:#9A8FAF}
.pdf-compact-list{margin:0;padding-left:14px;font-size:10px;color:#675D7D}
.pdf-compact-list li{margin-bottom:2px}
.pdf-page-capture{position:absolute;top:0;left:-20000px;overflow:hidden;box-sizing:border-box;background:#FFFFFF;pointer-events:none;z-index:-2}
.pdf-page-capture .pdf-report{pointer-events:none}
.pdf-text{margin:0 0 12px;font-size:11.5px;line-height:1.55;color:#3E3554}
.pdf-subhead{margin:2px 0 8px;font-family:'Sora','Figtree',Arial,sans-serif;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#4D26D9}
.pdf-cols-3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:0 0 12px}
.pdf-panel-name{margin:0 0 4px;font-family:'Sora','Figtree',Arial,sans-serif;font-size:11.5px;font-weight:700;color:#261F3D}
.pdf-panel-text{margin:0;font-size:10.5px;line-height:1.5;color:#675D7D}
.pdf-panel-ok{margin-top:6px;color:#4D26D9;font-weight:600}
.pdf-panel-row{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:2px}
.pdf-panel-row .pdf-report-chip{flex-shrink:0}
.pdf-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}
.pdf-section-body>.pdf-list{margin:0 0 12px}
.pdf-list li strong{color:#261F3D;font-weight:600}
.pdf-list li .pdf-report-chip{margin-right:4px}
.pdf-section-intro{margin:6px 0 0;font-size:11px;color:#675D7D}
.pdf-priority-chip{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:999px;background:#F5F2FF;border:1px solid #E6DDF7;color:#675D7D;font-size:9.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}
.pdf-priority-chip::before{content:'';width:7px;height:7px;border-radius:999px;background:#9A8FAF}
.pdf-priority-chip--high{background:rgba(220,38,38,.08);border-color:rgba(220,38,38,.25);color:#B91C1C}
.pdf-priority-chip--high::before{background:#DC2626}
.pdf-priority-chip--mid{background:rgba(234,179,8,.10);border-color:rgba(202,138,4,.3);color:#A16207}
.pdf-priority-chip--mid::before{background:#EAB308}
.pdf-priority-chip--low{background:rgba(22,163,74,.08);border-color:rgba(22,163,74,.25);color:#15803D}
.pdf-priority-chip--low::before{background:#16A34A}
.pdf-summary-card{margin:14px 0 0;padding:12px 14px;background:#F5F2FF;border:1px solid #E6DDF7;border-left:3px solid var(--pdf-accent);border-radius:10px}
.pdf-summary-title{margin:0 0 6px;font-family:'Sora','Figtree',Arial,sans-serif;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:#4D26D9}

/* Theme transition */
html.transitioning,html.transitioning *,html.transitioning *::before,html.transitioning *::after{transition:none!important}
html.dark{color-scheme:dark}

/* Dark mode body/sidebar overrides that use Tailwind classes */
html.dark body{background:var(--body-bg);color:var(--text-primary)}
html.dark .bg-white,html.dark .bg-canvas-100,html.dark .bg-canvas-200,html.dark .bg-canvas-50{background:var(--card-bg)}
html.dark .bg-canvas-100\/90{background:color-mix(in srgb,var(--canvas) 90%,transparent)}
html.dark .text-bark-800{color:var(--text-primary)}
html.dark .text-bark-700{color:color-mix(in srgb,var(--text-primary) 85%,transparent)}
html.dark .text-bark-600{color:var(--text-secondary)}
html.dark .text-bark-500{color:var(--text-secondary)}
html.dark .text-bark-400{color:var(--text-tertiary)}
html.dark .text-bark-900{color:#f5f0ea}
html.dark .border-canvas-300{border-color:var(--border-subtle)}
html.dark .border-canvas-200{border-color:var(--border-subtle)}
html.dark .hover\:bg-canvas-100:hover{background:var(--border-subtle)}
html.dark .hover\:border-canvas-300:hover{border-color:var(--border-muted)}
html.dark .border-t{border-color:var(--border-subtle)}
html.dark .hover\:bg-canvas-200\/80:hover{background:var(--border-subtle)}
html.dark .hover\:bg-canvas-50:hover{background:var(--border-subtle)}
html.dark .bg-canvas-200{background:var(--border-subtle)}
html.dark .bg-canvas-300{background:var(--border-muted)}
html.dark thead.bg-canvas-100{background:var(--canvas)}

/* ========== Admin panel ========== */
.admin-kpi{position:relative}
.admin-kpi--accent::before{content:"";position:absolute;left:0;top:14%;bottom:14%;width:3px;border-radius:999px;background:#d97706}

/* Filter chips (segmented control) */
.admin-chip{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 14px;border-radius:999px;font-size:12px;font-weight:600;color:var(--text-secondary);background:rgba(0,0,0,.05);border:0;cursor:pointer;white-space:nowrap;transition:background .15s ease,color .15s ease}
html.dark .admin-chip{background:rgba(255,255,255,.07)}
.admin-chip:hover{background:rgba(0,0,0,.09)}
html.dark .admin-chip:hover{background:rgba(255,255,255,.12)}
.admin-chip:focus-visible{outline:2px solid var(--terra);outline-offset:2px}
.admin-chip[aria-selected="true"]{background:linear-gradient(135deg,var(--terra),var(--terra-strong));color:#fff;box-shadow:0 2px 8px rgba(123,72,242,.32),inset 0 1px 0 rgba(255,255,255,.18)}
.admin-chip[aria-selected="true"]:hover{filter:brightness(1.06)}
html.dark .admin-chip[aria-selected="true"]{background:linear-gradient(135deg,var(--terra-strong),var(--terra-deep));color:#fff;box-shadow:0 2px 12px rgba(176,106,255,.35),inset 0 1px 0 rgba(255,255,255,.12)}
.admin-chip-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;padding:1px 7px;border-radius:999px;background:rgba(0,0,0,.08);font-size:10px;font-weight:700;letter-spacing:.02em;font-variant-numeric:tabular-nums}
html.dark .admin-chip-count{background:rgba(255,255,255,.12)}
.admin-chip[aria-selected="true"] .admin-chip-count{background:rgba(255,255,255,.24);color:#fff}
html.dark .admin-chip[aria-selected="true"] .admin-chip-count{background:rgba(255,255,255,.22);color:#fff}

/* User rows */
.admin-row{display:grid;grid-template-columns:1fr auto auto auto;align-items:center;gap:16px;padding:14px 16px;border-radius:14px;border:1px solid var(--border-subtle);background:var(--card-bg);transition:box-shadow .15s ease,border-color .15s ease}
.admin-row:hover{box-shadow:var(--shadow-md);border-color:var(--border-muted)}
@media (max-width:1023px){
  .admin-row{grid-template-columns:1fr;grid-template-areas:"identity" "controls";row-gap:12px}
  .admin-row>.admin-identity{grid-area:identity}
  .admin-row>.admin-controls{grid-area:controls;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:12px}
  .admin-row>.admin-status,.admin-row>.admin-admin-toggle,.admin-row>.admin-menu-btn-wrap{display:none}
}

/* Metadata row */
.admin-meta{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;line-height:1.4;color:var(--text-tertiary)}
.admin-meta svg{flex-shrink:0}
.admin-meta-agency{padding:2px 8px;border-radius:999px;background:var(--terra-dim);color:var(--terra);font-weight:600}
.admin-meta-ok{padding:2px 8px;border-radius:999px;background:rgba(22,163,74,.12);color:#15803d;font-weight:600}
.admin-meta-pending{padding:2px 8px;border-radius:999px;background:rgba(217,119,6,.14);color:#92400e;font-weight:600}
html.dark .admin-meta-ok{background:rgba(74,222,128,.14);color:#6ee7b7}
html.dark .admin-meta-pending{background:rgba(251,191,36,.14);color:#fcd34d}
a.admin-meta:hover{color:var(--terra)}

/* Stats row: searches pill + last activity */
.admin-stat{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;line-height:1.4;color:var(--text-secondary)}
.admin-stat svg{flex-shrink:0;color:var(--terra)}
.admin-stat-num{font-weight:700;color:var(--text-primary)}
.admin-stat-sub{color:var(--terra);font-weight:600}
.admin-stat-muted{color:var(--text-tertiary)}
.admin-stat-muted svg{color:var(--text-tertiary)}

/* Status pills */
.admin-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:999px;font-size:10.5px;font-weight:700;letter-spacing:.01em;line-height:1.3;white-space:nowrap}
.admin-badge-ok{background:rgba(22,163,74,.12);color:#15803d}
.admin-badge-pending{background:rgba(217,119,6,.14);color:#92400e}
.admin-badge-danger{background:var(--price-max-bg);color:var(--price-max-text)}
html.dark .admin-badge-ok{background:rgba(74,222,128,.14);color:#6ee7b7}
html.dark .admin-badge-pending{background:rgba(251,191,36,.14);color:#fcd34d}

/* Admin toggle */
.admin-toggle-label{display:inline-flex;align-items:center;gap:8px;font-size:11px;font-weight:600;color:var(--text-secondary)}
.admin-switch{width:38px;height:22px;border-radius:999px;background:rgba(0,0,0,.14);position:relative;border:0;padding:0;cursor:pointer;flex-shrink:0;transition:background .18s ease}
html.dark .admin-switch{background:rgba(255,255,255,.18)}
.admin-switch::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:999px;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.15);transition:transform .18s ease}
.admin-switch[aria-checked="true"]{background:var(--terra)}
.admin-switch[aria-checked="true"]::after{transform:translateX(16px)}
.admin-switch:focus-visible{outline:2px solid var(--terra);outline-offset:2px}
.admin-switch[disabled]{opacity:.45;cursor:not-allowed}

/* Account page: agency toggle (mirrors .admin-switch, slightly larger) */
.agency-switch{width:44px;height:26px;border-radius:999px;background:rgba(0,0,0,.12);position:relative;transition:background .18s ease;flex-shrink:0}
html.dark .agency-switch{background:rgba(255,255,255,.18)}
.agency-switch::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:999px;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.15);transition:transform .18s ease}
.agency-switch[aria-checked="true"]{background:#7B48F2}
.agency-switch[aria-checked="true"]::after{transform:translateX(18px)}

/* Validation error state. .search-input has border:none, so a border-color
   alone is invisible — paint a red ring via box-shadow as well. */
.field-error{border-color:#dc2626!important;box-shadow:0 0 0 2px rgba(220,38,38,.45),var(--shadow-sm)!important}

/* Compact solid approve button (gradient stays reserved for the page's primary action) */
.admin-approve-btn{display:inline-flex;align-items:center;height:30px;padding:0 14px;border:0;border-radius:8px;background:var(--terra);color:#fff;font-family:'Figtree',sans-serif;font-size:11px;font-weight:700;letter-spacing:.02em;cursor:pointer;box-shadow:var(--shadow-sm);transition:background .15s ease}
.admin-approve-btn:hover{background:var(--terra-strong)}
.admin-approve-btn:focus-visible{outline:2px solid var(--terra);outline-offset:2px}
html.dark .admin-approve-btn{color:#1B1433}

/* Overflow menu */
.admin-menu-btn{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;border:0;background:transparent;color:var(--text-tertiary);cursor:pointer;transition:background .15s ease}
.admin-menu-btn:hover{background:rgba(0,0,0,.06)}
html.dark .admin-menu-btn:hover{background:rgba(255,255,255,.1)}
.admin-menu-btn:focus-visible{outline:2px solid var(--terra);outline-offset:2px}
.admin-menu-btn[disabled]{opacity:.35;cursor:not-allowed}
.admin-menu-popover{position:absolute;right:0;top:calc(100% + 4px);z-index:20;min-width:170px;padding:4px;border-radius:12px;background:var(--card-bg);border:1px solid var(--border-subtle);box-shadow:var(--shadow-lg)}
.admin-menu-popover button{width:100%;display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;border:0;background:transparent;text-align:left;font-size:12px;font-weight:600;color:var(--text-secondary);cursor:pointer}
.admin-menu-popover button:hover{background:var(--surface-hover)}
.admin-menu-popover button.is-danger{color:#dc2626}
html.dark .admin-menu-popover button.is-danger{color:#f87171}
.admin-menu-popover button.is-danger:hover{background:rgba(220,38,38,.08)}

/* Skeleton */
.admin-skeleton{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:16px;padding:14px 16px;border-radius:14px;border:1px solid var(--border-subtle);background:var(--card-bg)}
.skeleton-bar{background:rgba(0,0,0,.08);border-radius:6px}
html.dark .skeleton-bar{background:rgba(255,255,255,.08)}
.skeleton-pulse{animation:adminPulse 1.2s ease-in-out infinite}
@keyframes adminPulse{0%,100%{opacity:1}50%{opacity:.55}}
@media (prefers-reduced-motion:reduce){.skeleton-pulse{animation:none}.admin-row,.admin-chip,.admin-menu-btn,.admin-switch{transition:none}}

/* Empty state + solid modal buttons */
.admin-empty-icon{background:rgba(0,0,0,.06);color:var(--text-tertiary)}
html.dark .admin-empty-icon{background:rgba(255,255,255,.08)}
.admin-solid-danger{background:#dc2626}
.admin-solid-danger:hover{background:#b91c1c}
.admin-solid-warn{background:#b45309}
.admin-solid-warn:hover{background:#92400e}

/* Modal enter animation */
#admin-delete-modal[aria-hidden="false"] .admin-modal-card,
#admin-logout-modal[aria-hidden="false"] .admin-modal-card{animation:adminModalIn .18s ease-out}
@keyframes adminModalIn{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}
