@font-face{font-family:'Public Sans';font-style:normal;font-weight:300;font-display:swap;src:url('public-sans-300.woff2') format('woff2');}
@font-face{font-family:'Public Sans';font-style:normal;font-weight:400;font-display:swap;src:url('public-sans-400.woff2') format('woff2');}
@font-face{font-family:'Public Sans';font-style:normal;font-weight:500;font-display:swap;src:url('public-sans-500.woff2') format('woff2');}
@font-face{font-family:'Public Sans';font-style:normal;font-weight:600;font-display:swap;src:url('public-sans-600.woff2') format('woff2');}
@font-face{font-family:'Public Sans';font-style:normal;font-weight:700;font-display:swap;src:url('public-sans-700.woff2') format('woff2');}
/* Suppress the browser's default blue focus outline on Leaflet's
   interactive SVG markers (circle markers, clusters) — without this,
   clicking/touching a marker shows a blue focus-ring artifact around
   it that has no meaning in this app. */
.leaflet-interactive:focus,
.leaflet-marker-icon:focus,
.leaflet-container path:focus{outline:none!important;}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html,body{height:100%;overflow:hidden;font-family:'Public Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;}
:root{--navy:#233f67;--navy-dark:#233f67;--navy-light:#2a4f7f;--green:#16a34a;--red:#dc2626;--amber:#b45309;--border:#e2e8f0;--text:#1e293b;--muted:#64748b;--topnav-h:86px;
  --color-pro-orange:#f59e0b;--color-dark-orange:#78350f;--color-light-orange:#fef9ec;--color-light-orange-border:#fde68a;
  --color-favorites-red:#e11d48;--color-onboarding-accent:#546988;
  --border-width-standard:1.5px;}
.top-nav{position:fixed;top:0;left:0;right:0;z-index:1500;padding:12px 16px;background:var(--navy-dark);display:flex;align-items:center;padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right));gap:12px;box-sizing:border-box;}
.top-nav-logo{height:22px;width:auto;flex-shrink:0;}
.top-nav-version{font-size:9px;color:rgba(255,255,255,0.3);flex-shrink:0;align-self:flex-end;}
@media(max-width:767px){.top-nav-version{display:none;}}
.top-nav-divider{width:1px;height:26px;background:rgba(255,255,255,0.15);flex-shrink:0;}
.top-nav-spacer{flex:1;}
.mobile-nav-spacer{flex:1;display:none;}
.search-wrap{position:relative;flex:1;max-width:420px;}
.search-input{width:100%;padding:8px 14px 8px 36px;background:rgba(255,255,255,0.1);border:1px solid rgba(255,255,255,0.2);border-radius:var(--radius-standard);color:#fff;font-size:14px;font-family:inherit;outline:none;}
.search-input::placeholder{color:rgba(255,255,255,0.4);}
.search-input:focus{background:rgba(255,255,255,0.15);border-color:rgba(255,255,255,0.4);}
.search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);font-size:14px;pointer-events:none;color:rgba(255,255,255,0.4);}
.search-dropdown{position:absolute;top:calc(100% + 6px);left:0;right:0;background:#fff;border-radius:var(--radius-10);box-shadow:0 8px 30px rgba(0,0,0,0.18);max-height:260px;overflow-y:auto;z-index:2000;display:none;}
.search-dropdown.open{display:block;}
.search-item{padding:10px 14px;font-size:14px;color:#1e293b;cursor:pointer;border-bottom:1px solid #f1f5f9;display:flex;flex-direction:column;gap:2px;}
.search-item:last-child{border-bottom:none;}
.search-item:hover,.search-item.active{background:#f0f9ff;}
.search-item-name{font-weight:600;}
.search-item-meta{font-size:11px;color:#94a3b8;}
.search-no-result{padding:12px 14px;font-size:13px;color:#94a3b8;text-align:center;}
.nav-right-desktop{display:flex;align-items:center;gap:16px;flex-shrink:0;}
#navAuthArea{display:flex;align-items:center;gap:16px;}
#navAuthAreaMobile{display:flex;align-items:center;gap:8px;}
.nav-upgrade-btn{display:flex;align-items:center;justify-content:center;gap:5px;height:36px;background:var(--color-pro-orange);color:var(--color-dark-orange);font-size:13px;font-weight:600;font-family:inherit;border:none;padding:0 16px;border-radius:var(--radius-standard);cursor:pointer;white-space:nowrap;box-sizing:border-box;}
.nav-upgrade-btn:hover{background:#fbbf24;}
.nav-login-btn{background:rgba(255,255,255,0.1);border:1px solid rgba(255,255,255,0.25);color:#fff;font-size:13px;font-weight:500;font-family:inherit;padding:6px 14px;border-radius:var(--radius-standard);cursor:pointer;}
.nav-star{font-size:12px;}
.mobile-nav-bug{display:none;height:28px;width:28px;object-fit:contain;flex-shrink:0;}
.mobile-nav-logo-mark{display:none;height:auto;width:clamp(100px,28vw,138px);object-fit:contain;flex-shrink:0;}
.mobile-nav-upgrade{display:none;align-items:center;justify-content:center;gap:4px;height:36px;background:var(--color-pro-orange);color:var(--color-dark-orange);font-size:13px;font-weight:700;font-family:inherit;border:none;padding:0 14px;border-radius:var(--radius-standard);cursor:pointer;white-space:nowrap;box-sizing:border-box;}
.mobile-nav-signin{display:none;align-items:center;justify-content:center;height:36px;background:transparent;color:#fff;border:1px solid rgba(255,255,255,0.5);font-size:12.5px;font-weight:700;font-family:inherit;padding:0 14px;border-radius:var(--radius-standard);cursor:pointer;white-space:nowrap;box-sizing:border-box;}
.drawer-upgrade-btn{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;height:42px;background:var(--color-pro-orange);color:var(--color-dark-orange);font-size:14px;font-weight:700;font-family:inherit;border:none;padding:0 12px;border-radius:var(--radius-standard);cursor:pointer;box-sizing:border-box;}
.drawer-logout-btn{display:block;width:100%;background:#fff;color:var(--navy);font-size:14px;font-weight:700;font-family:inherit;border:none;padding:12px;border-radius:var(--radius-10);cursor:pointer;margin-top:10px;}
.mobile-nav-hamburger{display:none;flex-direction:column;justify-content:center;gap:5px;background:none;border:none;cursor:pointer;padding:6px;flex-shrink:0;}
.ham-line{display:block;width:20px;height:2px;background:rgba(255,255,255,0.8);border-radius:var(--radius-1);}
.layout{position:fixed;top:var(--topnav-h);left:0;right:0;bottom:0;display:flex;background:var(--navy);}
#map{flex:1;height:100%;touch-action:pan-x pan-y pinch-zoom;border-top-left-radius:var(--radius-10);overflow:hidden;}
.leaflet-top{margin-top:8px;}
.sidebar{width:300px;min-width:300px;background:var(--navy);display:flex;flex-direction:column;overflow:hidden;z-index:1000;flex-shrink:0;height:100%;}
.sidebar-logo-wrap{padding:0 18px;background:var(--navy);flex-shrink:0;}
.sidebar-sub{font-size:12px;color:rgba(255,255,255,0.45);margin-top:5px;line-height:1.4;}
.sidebar-frozen{padding:0 12px 12px;background:var(--navy);flex-shrink:0;display:flex;flex-direction:column;gap:14px;}
.sidebar-scroll{flex:1;overflow-y:auto;padding:0 12px 24px;display:flex;flex-direction:column;gap:14px;}
.sidebar-scroll::-webkit-scrollbar{width:4px;}
.sidebar-scroll::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.15);border-radius:var(--radius-2);}
.match-box{background:rgba(255,255,255,0.08);border-radius:var(--radius-10);padding:10px 14px;text-align:center;}
.match-num{font-size:30px;font-weight:700;color:#fff;line-height:1;}
.match-label{font-size:12px;color:rgba(255,255,255,0.5);margin-top:2px;}
.fav-btn-sidebar{width:100%;padding:9px 14px;background:rgba(255,255,255,0.1);border:1px solid rgba(255,255,255,0.2);border-radius:var(--radius-standard);color:#fff;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit;display:flex;align-items:center;justify-content:center;gap:8px;}
.fav-count-badge{background:var(--color-favorites-red);color:white;font-size:11px;font-weight:700;padding:1px 7px;border-radius:var(--radius-10);min-width:22px;text-align:center;}
.filter-section-card{border-radius:var(--radius-10);padding:14px 14px 16px;background:#f8fafc;border-left:4px solid;}
.fsc-territory{border-color:#475569;}
.fsc-disaster{border-color:#dc2626;}
.fsc-climate{border-color:#059669;}
.fsc-population{border-color:#7c3aed;}
.fsc-elevation{border-color:#b45309;}
.fsc-homeprice{border-color:#0369a1;}
.section-head{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:0.08em;margin-bottom:12px;display:block;}
.fsc-territory .section-head{color:#475569;}
.fsc-disaster .section-head{color:#dc2626;}
.fsc-climate .section-head{color:#059669;}
.fsc-population .section-head{color:#7c3aed;}
.fsc-elevation .section-head{color:#b45309;}
.fsc-homeprice .section-head{color:#0369a1;}

.territory-row{display:flex;align-items:center;justify-content:space-between;padding:2px 0;}
.territory-label{font-size:14px;color:#1e293b;}
.toggle-switch{position:relative;width:42px;height:24px;flex-shrink:0;}
.toggle-switch input{opacity:0;width:0;height:0;}
.toggle-track{position:absolute;inset:0;background:rgba(0,0,0,0.15);border-radius:var(--radius-24);cursor:pointer;transition:background 0.2s;}
.toggle-track:before{content:"";position:absolute;width:18px;height:18px;left:3px;top:3px;background:white;border-radius:50%;transition:transform 0.2s;box-shadow:0 1px 3px rgba(0,0,0,0.3);}
.toggle-switch input:checked+.toggle-track{background:var(--green);}
.toggle-switch input:checked+.toggle-track:before{transform:translateX(18px);}
.disaster-intro{font-size:12px;color:#64748b;line-height:1.5;margin-bottom:10px;}
.disaster-lever{display:flex;flex-direction:column;gap:8px;padding:10px 0;border-bottom:1px solid rgba(0,0,0,0.06);}
.disaster-lever:last-of-type{border-bottom:none;}
.disaster-lever-label{font-size:13px;font-weight:600;color:#1e293b;}
.disaster-tol-val{font-size:11px;font-weight:600;padding:2px 8px;border-radius:var(--radius-tag);display:inline-block;width:fit-content;margin-bottom:6px;}
.rating-very-low{background:#dcfce7;color:#166534;}.rating-rel-low{background:#d1fae5;color:#065f46;}.rating-rel-mod{background:#fef9c3;color:#854d0e;}.rating-rel-high{background:#ffedd5;color:#9a3412;}.rating-very-high{background:#fee2e2;color:#991b1b;}.rating-any{background:#e2e8f0;color:#64748b;}
input.d-range{-webkit-appearance:none;width:100%;height:5px;border-radius:var(--radius-3);outline:none;cursor:pointer;margin:8px 0;
  background-color: rgba(0,0,0,0.1);
  background-image: linear-gradient(to right,
    transparent 0, transparent calc(20% - 0.75px), rgba(0,0,0,0.22) calc(20% - 0.75px), rgba(0,0,0,0.22) calc(20% + 0.75px), transparent calc(20% + 0.75px),
    transparent calc(40% - 0.75px), rgba(0,0,0,0.22) calc(40% - 0.75px), rgba(0,0,0,0.22) calc(40% + 0.75px), transparent calc(40% + 0.75px),
    transparent calc(60% - 0.75px), rgba(0,0,0,0.22) calc(60% - 0.75px), rgba(0,0,0,0.22) calc(60% + 0.75px), transparent calc(60% + 0.75px),
    transparent calc(80% - 0.75px), rgba(0,0,0,0.22) calc(80% - 0.75px), rgba(0,0,0,0.22) calc(80% + 0.75px), transparent calc(80% + 0.75px));
}
input.d-range::-webkit-slider-thumb{-webkit-appearance:none;box-sizing:border-box;width:22px;height:22px;border-radius:50%;background:var(--color-favorites-red);cursor:pointer;border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,0.3);}
.d-range-labels{display:flex;justify-content:space-between;align-items:center;font-size:9px;color:#64748b;}
.disaster-insuf-note{font-size:11px;color:#94a3b8;font-style:italic;line-height:1.4;margin-top:8px;}
.lever{display:flex;flex-direction:column;gap:9px;padding:10px 0;border-bottom:1px solid rgba(0,0,0,0.06);}
.lever input[type=range]{margin:8px 0;}
.lever-label{font-size:13px;font-weight:600;color:#1e293b;}
.lever-val{font-size:20px;font-weight:700;color:var(--navy);line-height:1.2;overflow:visible!important;white-space:nowrap!important;}
.lever-unit{font-size:12px;color:#64748b;font-weight:400;}
.lever-range-row{display:flex;justify-content:space-between;font-size:10px;color:#64748b;}
input[type=range]{-webkit-appearance:none;width:100%;height:5px;border-radius:var(--radius-3);outline:none;cursor:pointer;background-color:rgba(0,0,0,0.1);}
input[type=range]::-webkit-slider-runnable-track{height:5px;background:transparent;}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;box-sizing:border-box;width:22px;height:22px;border-radius:50%;background:#fff;cursor:pointer;border:2px solid var(--navy);box-shadow:0 1px 4px rgba(0,0,0,0.25);margin-top:-8.5px;}
input[type=range]::-moz-range-thumb{box-sizing:border-box;width:22px;height:22px;border-radius:50%;background:#fff;cursor:pointer;border:2px solid var(--navy);box-shadow:0 1px 4px rgba(0,0,0,0.25);}
#price-slider{position:relative;z-index:2;}
#price-slider::-webkit-slider-thumb{background-color:#fff!important;}
#price-slider::-moz-range-thumb{background-color:#fff!important;}
.dual-range-wrap{position:relative;height:22px;}
.dual-range-wrap input[type=range]{position:absolute;width:100%;pointer-events:none;background:transparent;height:5px;top:8.5px;}
.dual-range-wrap input[type=range]::-webkit-slider-thumb{pointer-events:all;opacity:0;}

.custom-thumb{position:absolute;top:50%;transform:translateY(-50%);width:22px;height:22px;border-radius:50%;background:#fff;border:2px solid var(--navy);box-shadow:0 1px 4px rgba(0,0,0,0.25);box-sizing:border-box;pointer-events:none;z-index:2;}
.dual-track{position:absolute;top:50%;transform:translateY(-50%);left:0;right:0;height:5px;border-radius:var(--radius-3);background-color:rgba(0,0,0,0.1);}
.range-tick{position:absolute;top:50%;transform:translate(-50%,-50%);width:1.5px;height:5px;background:rgba(0,0,0,0.28);pointer-events:none;z-index:1;}
.dual-fill{position:absolute;top:50%;transform:translateY(-50%);height:5px;background:var(--navy);border-radius:var(--radius-3);pointer-events:none;}
.dual-val-row{display:flex;justify-content:space-between;font-size:13px;font-weight:600;color:var(--navy);}
.reset-btn{width:100%;padding:10px 0;border:1px solid rgba(255,255,255,0.2);border-radius:var(--radius-standard);background:transparent;color:rgba(255,255,255,0.6);font-size:14px;font-weight:600;cursor:pointer;font-family:inherit;}
.reset-btn:hover{background:rgba(220,38,38,0.25);border-color:rgba(220,38,38,0.5);color:#fff;}
.footer-note{font-size:10px;color:rgba(255,255,255,0.22);line-height:1.7;}
#loading{position:fixed;inset:0;background-color:var(--navy);background-image:var(--splash-desktop-url,none);background-size:cover;background-position:bottom center;background-repeat:no-repeat;z-index:9999;transition:opacity 0.6s ease;}
@media(max-width:767px){#loading{background-image:var(--splash-mobile-url,none);}}
:root{--splash-navy-h-desktop:max(22.222vh,12.5vw);--splash-navy-h-mobile:max(20.833vh,37.037vw);}
@supports (height:100dvh){:root{--splash-navy-h-desktop:max(22.222dvh,12.5dvw);--splash-navy-h-mobile:max(20.833dvh,37.037dvw);}}
.splash-bar-wrap{position:absolute;left:0;right:0;bottom:var(--splash-navy-h-desktop);width:100%;height:14px;background:rgba(0,0,0,0.32);border-radius:0;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,0.25);}
@media(max-width:767px){.splash-bar-wrap{bottom:var(--splash-navy-h-mobile);}}
.splash-error{position:absolute;left:50%;transform:translateX(-50%);bottom:calc(var(--splash-navy-h-desktop) + 22px);width:min(80vw,360px);text-align:center;font-size:12px;color:#fff;background:rgba(0,0,0,0.45);padding:8px 12px;border-radius:var(--radius-2);display:none;}
@media(max-width:767px){.splash-error{bottom:calc(var(--splash-navy-h-mobile) + 22px);}}
.splash-bar{height:100%;width:0%;background:var(--color-pro-orange);border-radius:var(--radius-2);transition:width 0.3s;}
@keyframes spin{to{transform:rotate(360deg);}}
.city-popup{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;width:380px;max-width:380px;box-sizing:border-box;max-height:calc(100vh - var(--topnav-h) - 40px);overflow-y:auto;}
.city-popup h3{font-size:16px;font-weight:700;color:#0f172a;margin-bottom:1px;}
.city-popup .sub{font-size:12px;color:#94a3b8;margin-bottom:6px;}
.popup-top{display:flex;align-items:flex-start;gap:8px;margin-bottom:6px;padding-right:34px;position:sticky;top:0;background:#fff;z-index:2;padding-top:1px;}
.popup-name-wrap{flex:1;}
.heart-btn-inline{background:none;border:none;cursor:pointer;font-size:24px;line-height:1;padding:2px 2px 0 0;flex-shrink:0;transition:transform 0.15s;margin-top:1px;}
.heart-btn-inline:hover{transform:scale(1.15);}
.badge{font-size:11px;font-weight:600;padding:3px 8px;border-radius:var(--radius-tag);display:inline-block;margin-bottom:8px;}
.s-match{background:#dcfce7;color:#166534;}
.popup-section{font-size:11px;font-weight:700;color:#64748b;text-transform:uppercase;letter-spacing:0.06em;margin:8px 0 4px;}
.city-popup table{font-size:13px;width:100%;border-collapse:collapse;}
.city-popup td{padding:3px 0;color:#475569;border-bottom:1px solid #f8fafc;vertical-align:top;}
.rhs-tile{display:flex;align-items:center;gap:12px;background:var(--navy);border-radius:var(--radius-standard);padding:10px 14px;box-sizing:border-box;}
.rhs-tile-score{font-size:28px;font-weight:700;color:var(--color-pro-orange);line-height:1;flex-shrink:0;}
.rhs-tile-info{display:flex;flex-direction:column;gap:2px;min-width:0;}
.rhs-tile-label{font-size:13px;font-weight:700;color:#fff;line-height:1.3;}
.rh-tm{font-size:0.62em;vertical-align:super;line-height:0;}
.rhs-tile-sub{font-size:11px;color:#c3d1e5;line-height:1.3;}
.rhs-tile-pending{display:flex;align-items:center;gap:12px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:var(--radius-standard);padding:10px 14px;box-sizing:border-box;}
.rhs-tile-pending-info{display:flex;flex-direction:column;gap:2px;min-width:0;}
.rhs-tile-pending-label{font-size:13px;font-weight:700;color:var(--navy);line-height:1.3;}
.rhs-tile-pending-sub{font-size:11px;color:#64748b;line-height:1.3;}
.rhs-tile.compact{gap:8px;padding:6px 10px;}
.rhs-tile.compact .rhs-tile-score{font-size:19px;}
.rhs-tile.compact .rhs-tile-label{font-size:11px;}
.rhs-tile.compact .rhs-tile-sub{font-size:10px;}
.rhs-tile-pending.compact{gap:8px;padding:6px 10px;}
.rhs-tile-pending.compact .rhs-tile-pending-label{font-size:11px;}
.rhs-tile-pending.compact .rhs-tile-pending-sub{font-size:10px;}
.rhs-tile-slot{margin:8px 0 10px;min-height:0;}
.rhs-tile-slot:empty{margin:0;}
.rhs-pro-slot:empty{margin:0;}
.rhs-pro-header{display:flex;align-items:center;gap:6px;margin-bottom:10px;}
.rhs-pro-title{font-size:13px;font-weight:700;color:#0f172a;}
.rhs-pro-pill{font-size:9px;font-weight:700;color:var(--navy);background:var(--color-pro-orange);padding:2px 6px;border-radius:var(--radius-tag);letter-spacing:0.03em;}
.rhs-dim-bars{display:flex;flex-direction:column;gap:8px;margin-bottom:14px;}
.rhs-dim-row{display:flex;align-items:center;gap:10px;}
.rhs-dim-label{width:155px;font-size:10px;color:#475569;white-space:nowrap;flex-shrink:0;}
.rhs-dim-track{flex:1;height:5px;background:#e2e8f0;border-radius:var(--radius-3);}
.rhs-dim-fill{height:100%;background:var(--navy);border-radius:var(--radius-3);}
.rhs-review{border-top:1px solid #f1f5f9;padding-top:10px;margin-bottom:10px;}
.rhs-review-head{display:flex;align-items:center;justify-content:space-between;}
.rhs-review-type{font-size:11px;font-weight:700;color:var(--navy);}
.rhs-review-date{font-size:10px;color:#94a3b8;}
.rhs-review-text{font-size:11.5px;color:#334155;line-height:1.4;margin:4px 0 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.rhs-review-grid{display:flex;gap:20px;}
.rhs-review.wide{flex:1;margin-bottom:0;}
.rhs-review.wide .rhs-review-text{display:block;-webkit-line-clamp:unset;overflow:visible;}
.rhs-see-all-btn{width:100%;text-align:center;background:none;border:none;padding:6px 0 14px;font-size:11.5px;font-weight:700;color:var(--navy);cursor:pointer;font-family:inherit;}
.rhs-pro-pending{font-size:12px;color:#64748b;line-height:1.5;margin-bottom:14px;}
.rhs-free-teaser{display:flex;flex-direction:column;background:var(--color-light-orange);border:1px solid var(--color-light-orange-border);border-radius:var(--radius-standard);padding:12px 14px;margin-bottom:14px;box-sizing:border-box;}
.rhs-free-teaser-header{display:flex;align-items:center;gap:6px;margin-bottom:6px;}
.rhs-free-teaser-lock{font-size:13px;}
.rhs-free-teaser-title{font-size:13px;font-weight:700;color:#0f172a;}
.rhs-free-teaser-copy{font-size:12px;color:var(--color-dark-orange);line-height:1.5;margin:0 0 10px;flex:1;}
.rhs-free-teaser-btn{align-self:stretch;background:var(--color-pro-orange);border:none;border-radius:var(--radius-standard);color:var(--color-dark-orange);font-size:12.5px;font-weight:700;font-family:inherit;padding:9px 12px;cursor:pointer;}
.city-popup td:last-child{font-weight:600;color:#1e293b;text-align:right;}
.city-popup tr:last-child td{border-bottom:none;}
.risk-very-low{color:#16a34a;font-weight:600;}.risk-rel-low{color:#65a30d;font-weight:600;}.risk-rel-mod{color:#d97706;font-weight:600;}.risk-rel-high{color:#ea580c;font-weight:600;}.risk-very-high{color:#dc2626;font-weight:700;}.risk-na{color:#94a3b8;}.risk-insuf{color:#94a3b8;font-style:italic;}
.leaflet-popup-content-wrapper{border-radius:var(--radius-10);box-shadow:0 4px 20px rgba(0,0,0,0.12);}
.leaflet-popup-content{margin:16px 15px 13px;}
.leaflet-popup-close-button{
  font-size:20px!important;font-weight:700!important;
  width:32px!important;height:32px!important;
  line-height:32px!important;
  border-radius:50%!important;
  background:#f1f5f9!important;
  color:#1e293b!important;
  top:10px!important;right:10px!important;
  text-align:center!important;
  transition:background 0.15s;
}
.leaflet-popup-close-button:hover{background:#e2e8f0!important;color:#1e293b!important;}
#fav-panel{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:8000;align-items:flex-start;justify-content:center;padding:16px;overflow-y:auto;}
#fav-panel.open{display:flex;}
.fav-inner{background:#fff;border-radius:var(--radius-14);width:100%;max-width:700px;height:calc(100vh - 32px);max-height:calc(100vh - 32px);display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(0,0,0,0.2);overflow:hidden;margin:auto;flex-shrink:0;}
.compare-scroll-hint{text-align:center;padding:8px 16px;font-size:12px;color:#94a3b8;background:#f8fafc;border-bottom:1px solid #e2e8f0;}
/* fav/compare mobile overrides moved below main mobile block for correct cascade order */
.fav-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:var(--navy);flex-shrink:0;gap:8px;flex-wrap:wrap;}
.fav-header h2{color:#fff;font-size:17px;font-weight:700;margin:0;}
.fav-header-actions{display:flex;align-items:center;gap:10px;}
.fav-action-link{height:36px;padding:0 12px;font-size:12.5px;color:#fff;font-weight:600;background:rgba(255,255,255,0.12);border:1px solid rgba(255,255,255,0.3);border-radius:var(--radius-standard);cursor:pointer;font-family:inherit;box-sizing:border-box;}
.fav-clear-btn{height:36px;padding:0 12px;font-size:12.5px;color:#fff;font-weight:600;background:rgba(255,255,255,0.12);border:1px solid rgba(255,255,255,0.3);border-radius:var(--radius-standard);cursor:pointer;font-family:inherit;box-sizing:border-box;}
.fav-close-btn{width:32px;height:32px;min-width:32px;border-radius:50%;background:rgba(255,255,255,0.2);border:none;cursor:pointer;font-size:15px;font-weight:700;color:#fff;display:flex;align-items:center;justify-content:center;transition:background 0.15s;}
.fav-close-btn:hover{background:var(--navy-light);}
.fav-body{overflow-y:auto;height:100%;padding:12px 16px;display:flex;flex-direction:column;gap:10px;-webkit-overflow-scrolling:touch;touch-action:pan-y;}
.fav-footer{padding:10px 16px 14px;border-top:1px solid #e2e8f0;flex-shrink:0;display:flex;flex-direction:column;gap:8px;background:#fff;z-index:2;}
.fav-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:var(--radius-10);padding:12px 14px;display:flex;align-items:center;gap:12px;}
.fav-card.pending-remove{opacity:0.45;}
.fav-card-heart{font-size:22px;cursor:pointer;flex-shrink:0;border:none;background:none;padding:0;line-height:1;}
.fav-card-info{flex:1;min-width:0;}
.fav-card-name{font-size:15px;font-weight:700;color:#0f172a;}
.fav-card-meta{font-size:12px;color:#64748b;margin-top:2px;}
.fav-card-stats{font-size:12px;color:#475569;margin-top:4px;display:flex;flex-wrap:wrap;gap:6px;}
.fav-stat{background:#e2e8f0;padding:2px 7px;border-radius:var(--radius-tag);font-size:11px;}
.fav-card-checkbox{width:20px;height:20px;cursor:pointer;flex-shrink:0;accent-color:var(--navy);}
.fav-select-hint{font-size:12px;color:#94a3b8;text-align:center;padding:4px 0;}
.fav-compare-btn{width:100%;padding:12px;background:var(--navy);color:#fff;border:none;border-radius:var(--radius-standard);font-size:15px;font-weight:600;cursor:pointer;font-family:inherit;margin-top:4px;}
.fav-compare-btn:disabled{background:#cbd5e1;cursor:not-allowed;}
.fav-pending-note{font-size:11px;color:#94a3b8;text-align:center;font-style:italic;}
.fav-empty{text-align:center;padding:40px 20px;color:#94a3b8;font-size:15px;}
.fav-empty-icon{font-size:38px;display:block;margin-bottom:10px;}
.fav-list-header{display:flex;justify-content:space-between;align-items:center;padding:4px 14px 8px;border-bottom:1px solid #e2e8f0;margin-bottom:4px;}
.fav-list-city-head,.fav-list-compare-head{font-size:10px;font-weight:700;color:#64748b;text-transform:uppercase;letter-spacing:0.08em;}
#compare-panel{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:9000;align-items:flex-start;justify-content:center;padding:16px;overflow-y:auto;}
#compare-panel.open{display:flex;}
.compare-inner{background:#fff;border-radius:var(--radius-14);width:100%;max-width:1040px;height:calc(100vh - 32px);max-height:calc(100vh - 32px);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,0.2);margin:auto;flex-shrink:0;position:relative;}
.compare-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:var(--navy);flex-shrink:0;gap:8px;min-height:56px;}
.compare-header h2{font-size:17px;font-weight:700;color:#fff;}
.compare-close-btn{width:32px;height:32px;min-width:32px;min-height:32px;flex-shrink:0;border-radius:50%;background:rgba(255,255,255,0.2);border:none;cursor:pointer;font-size:18px;font-weight:700;color:#fff;display:flex;align-items:center;justify-content:center;transition:background 0.15s;}
.compare-close-btn:hover{background:rgba(255,255,255,0.32);}
.compare-header-right{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.export-pdf-btn{display:flex;align-items:center;justify-content:center;gap:6px;height:42px;background:#fff;border:var(--border-width-standard) solid var(--color-pro-orange);color:var(--color-dark-orange);font-size:13px;font-weight:700;font-family:inherit;padding:0 14px;border-radius:var(--radius-standard);cursor:pointer;white-space:nowrap;transition:background 0.15s;box-sizing:border-box;}
.export-pdf-btn:hover{background:var(--color-light-orange);}
.export-pdf-btn.active{background:#b45309;border-color:#b45309;color:#fff;}
.fav-actions-row-mobile{display:none;align-items:center;gap:8px;padding:14px 18px 12px;border-bottom:1px solid #e2e8f0;flex-shrink:0;}
.share-pdf-btn-m{display:flex;align-items:center;gap:5px;height:32px;padding:0 11px;border-radius:var(--radius-standard);background:#fff;border:var(--border-width-standard) solid var(--color-pro-orange);color:var(--color-dark-orange);font-size:12.5px;font-weight:700;font-family:inherit;cursor:pointer;white-space:nowrap;box-sizing:border-box;}
.share-pdf-btn-m.active{background:#b45309;color:#fff;}
.icon-btn-m{display:flex;align-items:center;justify-content:center;gap:4px;height:32px;padding:0 10px;border-radius:var(--radius-standard);background:#fff;border:1px solid #e2e8f0;color:#475569;font-size:12px;font-weight:700;font-family:inherit;cursor:pointer;white-space:nowrap;}
.lbl-mobile{display:none;}
.export-options-scrim{display:none;position:fixed;inset:0;background:rgba(15,23,42,0.45);z-index:9500;}
.export-options-scrim.open{display:block;}
.export-options-panel{display:none;position:fixed;z-index:9600;width:290px;background:#fff;border:1px solid #e2e8f0;border-radius:var(--radius-12);box-shadow:0 16px 40px rgba(15,23,42,0.18);padding:16px;}
.export-options-panel.open{display:block;}
.export-options-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:3px;}
.export-options-title{font-size:14px;font-weight:700;color:#1e293b;margin:0;}
.export-options-close{width:22px;height:22px;border-radius:50%;background:#f1f5f9;border:none;color:#64748b;font-size:11px;font-weight:700;cursor:pointer;flex-shrink:0;}
.export-options-sub{font-size:12px;color:#64748b;margin:2px 0 14px;line-height:1.5;}
.export-check-row{display:flex;align-items:flex-start;gap:9px;padding:10px 0;border-top:1px solid #e2e8f0;border-bottom:1px solid #e2e8f0;margin-bottom:16px;cursor:pointer;}
.export-check-row input{width:17px;height:17px;margin-top:1px;accent-color:var(--navy);cursor:pointer;flex-shrink:0;}
.export-check-text{display:flex;flex-direction:column;gap:2px;}
.export-check-label{font-size:13px;font-weight:600;color:#1e293b;}
.export-check-hint{font-size:11.5px;color:#64748b;line-height:1.4;}
.export-options-actions{display:flex;gap:8px;}
.export-cancel-btn{flex:1;background:none;border:1px solid #e2e8f0;color:#64748b;font-size:13px;font-weight:600;font-family:inherit;padding:9px 0;border-radius:var(--radius-standard);cursor:pointer;}
.export-confirm-btn{flex:1.4;background:var(--color-pro-orange);border:none;color:var(--color-dark-orange);font-size:13px;font-weight:700;font-family:inherit;padding:9px 0;border-radius:var(--radius-standard);cursor:pointer;}
.export-confirm-btn:disabled{background:#cbd5e1;color:#64748b;cursor:not-allowed;}
.compare-body{overflow-y:auto;flex:1;min-height:0;-webkit-overflow-scrolling:touch;touch-action:pan-y pan-x;overscroll-behavior:contain;}
.compare-body-inner{overflow-x:auto;-webkit-overflow-scrolling:touch;min-width:100%;}

/* ── Simplified favorite cards (no checkbox, full width) ── */
.fav-card2{background:#f8fafc;border:1px solid #e2e8f0;border-radius:var(--radius-10);padding:12px 14px;width:100%;}
.fav-card2-top{display:flex;align-items:flex-start;gap:12px;}
.fav-card2.pending-remove{opacity:0.45;}
.fav-card2-heart{font-size:22px;cursor:pointer;flex-shrink:0;border:none;background:none;padding:0;line-height:1;}
.fav-card2-info{flex:1;min-width:0;}
.fav-card2-name{font-size:15px;font-weight:700;color:#0f172a;}
.fav-card2-meta{font-size:12px;color:#64748b;margin-top:2px;}
.fav-card2-stats-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px;}
.fav-card2-stats{display:flex;flex-wrap:wrap;gap:6px;}
.view-map-link{display:flex;align-items:center;gap:5px;padding:6px 10px;border-radius:var(--radius-standard);font-size:11.5px;font-weight:700;flex-shrink:0;background:#eff6ff;color:var(--navy);white-space:nowrap;cursor:pointer;border:none;font-family:inherit;}
.fav-stat2{background:#e2e8f0;padding:2px 8px;border-radius:var(--radius-tag);font-size:11px;color:#475569;}
.fav-card2-dims{display:flex;flex-wrap:wrap;gap:13px;margin-top:9px;padding-left:34px;}
.fav-card2-dim{font-size:11px;color:#475569;white-space:nowrap;}
.fav-card2-row3{display:flex;align-items:stretch;gap:12px;margin-top:10px;padding-left:34px;}
.fav-card2-row3 .rhs-tile-slot{flex:1;margin:0;}
.fav-card2-row4{display:flex;align-items:flex-start;gap:10px;margin-top:8px;padding-left:34px;}
.fav-fixed-btn{flex-shrink:0;width:118px;height:42px;display:flex;align-items:center;justify-content:center;text-align:center;background:#fff;border-radius:var(--radius-standard);font-size:12px;font-weight:700;font-family:inherit;cursor:pointer;box-sizing:border-box;line-height:1.25;white-space:nowrap;}
.fav-view-map-btn{border:var(--border-width-standard) solid var(--navy);color:var(--navy);}
.fav-note-btn{border:var(--border-width-standard) solid var(--color-pro-orange);color:var(--color-dark-orange);}
.fav-note-preview{flex:1;font-size:12px;font-style:italic;color:#64748b;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;align-self:center;}
.fav-pro-accordion{margin-top:10px;border-top:1px solid #e2e8f0;padding-top:10px;}
.fav-pro-toggle{display:flex;align-items:center;gap:6px;background:none;border:none;font-family:inherit;cursor:pointer;padding:0;font-size:12.5px;font-weight:700;color:#0f172a;width:100%;}
.fav-pro-toggle .fav-pro-chevron{margin-left:auto;font-size:11px;color:#64748b;transition:transform 0.15s;}
.fav-pro-toggle.open .fav-pro-chevron{transform:rotate(180deg);}
.fav-pro-body{display:none;margin-top:10px;}
.fav-pro-body.open{display:block;}
.rhs-dim-label.narrow{width:148px;}

/* ── Compare table — dropdown-slot version ── */
.compare-table2{width:100%;border-collapse:collapse;font-size:12.5px;table-layout:fixed;}
.compare-table2 th{padding:0;border-bottom:2px solid #e2e8f0;text-align:left;vertical-align:top;background:var(--navy-light);height:1px;}
.compare-table2 th.cat-th{background:var(--navy-light);color:#fff;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:0.06em;padding:12px 13px;position:sticky;left:0;z-index:2;vertical-align:middle;}
.compare-table2 td{padding:8px 13px;border-bottom:1px solid #f1f5f9;color:#334155;}
.compare-table2 td.cat-td{position:sticky;left:0;background:#eff6ff;z-index:2;font-weight:600;color:#475569;white-space:normal;word-break:break-word;}
.compare-table2 td.city-val2{text-align:center;font-weight:600;color:#1e293b;}
.compare-table2 .section-row2 td{background:#f1f5f9;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:0.06em;color:#64748b;padding:5px 13px;}
.rhs-compare-badge{display:inline-block;padding:4px 10px;border-radius:var(--radius-6);font-size:13px;font-weight:700;}
.rhs-compare-badge.eligible{background:var(--navy);color:var(--color-pro-orange);}
.rhs-compare-badge.pending{background:#f1f5f9;color:#94a3b8;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:0.03em;}

.city-dropdown-btn{width:calc(100% - 5px);height:calc(100% - 16px);background:#fff;color:var(--navy);border:none;border-radius:var(--radius-standard);padding:10px 26px 9px 8px;font-family:inherit;cursor:pointer;display:flex;flex-direction:column;align-items:center;text-align:center;box-shadow:0 1px 3px rgba(0,0,0,0.15);position:relative;margin:8px 2.5px;justify-content:center;}
.city-dropdown-btn:hover{background:#f0f9ff;}
.city-btn-name{font-size:11.5px;font-weight:700;line-height:1.25;word-break:break-word;}
.city-btn-state{font-size:9.5px;font-weight:600;color:#64748b;margin-top:2px;letter-spacing:0.03em;}
.th-chevron-big{position:absolute;top:6px;right:6px;font-size:16px;color:var(--color-pro-orange);font-weight:800;}
.empty-slot-btn{background:rgba(255,255,255,0.15);color:rgba(255,255,255,0.85);box-shadow:none;border:1.5px dashed rgba(255,255,255,0.4);}
.empty-slot-btn .city-btn-name{color:rgba(255,255,255,0.85);font-weight:600;}
.empty-slot-btn .th-chevron-big{color:rgba(255,255,255,0.5);}
.locked-slot-btn{background:var(--color-pro-orange);box-shadow:none;border:none;padding:10px 8px;}
.locked-slot-btn .city-btn-name{color:var(--color-dark-orange);font-weight:700;}
.locked-slot-btn:hover{background:#e08e0a;}

.city-slot-dropdown{position:absolute;background:#fff;border-radius:var(--radius-standard);box-shadow:0 8px 24px rgba(0,0,0,0.22);z-index:9500;border:1px solid #e2e8f0;}
.dropdown-scroll-inner{max-height:220px;overflow-y:scroll;scrollbar-width:auto;scrollbar-color:#94a3b8 #f1f5f9;}
.dropdown-scroll-inner::-webkit-scrollbar{width:11px;}
.dropdown-scroll-inner::-webkit-scrollbar-track{background:#f1f5f9;}
.dropdown-scroll-inner::-webkit-scrollbar-thumb{background:#94a3b8;border-radius:var(--radius-6);border:2px solid #f1f5f9;}
.dropdown-scroll-inner::-webkit-scrollbar-thumb:hover{background:#64748b;}
.dropdown-fade-hint{position:absolute;bottom:0;left:0;right:11px;height:22px;background:linear-gradient(to bottom, rgba(255,255,255,0), rgba(255,255,255,0.97));pointer-events:none;}
.city-slot-dropdown-item{padding:9px 12px;font-size:11.5px;font-weight:700;color:var(--navy);border-bottom:1px solid #f1f5f9;cursor:pointer;}
.city-slot-dropdown-item:last-child{border-bottom:none;}
.city-slot-dropdown-item:hover{background:#f0f9ff;}

/* ── Empty-state popup: Favorite One More City ── */
.empty-compare-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:9200;align-items:center;justify-content:center;padding:16px;}
.empty-compare-overlay.open{display:flex;}
.empty-compare-modal{background:#fff;border-radius:var(--radius-14);padding:30px 26px;text-align:center;max-width:320px;box-shadow:0 20px 60px rgba(0,0,0,0.25);}
.empty-compare-icon{font-size:32px;margin-bottom:14px;}
.empty-compare-title{font-size:16px;font-weight:800;color:#1e293b;margin-bottom:8px;}
.empty-compare-text{font-size:13px;color:#64748b;line-height:1.6;margin-bottom:18px;}
.empty-compare-btn{background:var(--navy);color:#fff;font-size:13px;font-weight:700;padding:10px 20px;border-radius:var(--radius-standard);cursor:pointer;border:none;font-family:inherit;}

/* ── Share modal (desktop fallback — mobile uses native share sheet) ── */
.share-modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:9300;align-items:center;justify-content:center;padding:16px;}
.share-modal-overlay.open{display:flex;}
.share-modal{background:#fff;border-radius:var(--radius-14);width:100%;max-width:360px;box-shadow:0 20px 60px rgba(0,0,0,0.25);overflow:hidden;}
.share-modal-header{background:var(--navy);padding:16px 18px;display:flex;align-items:center;justify-content:space-between;}
.share-modal-title{font-size:15px;font-weight:800;color:#fff;}
.share-modal-close{width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,0.18);color:#fff;font-size:14px;font-weight:700;display:flex;align-items:center;justify-content:center;cursor:pointer;}
.share-modal-body{padding:18px;}
.share-modal-summary{font-size:13px;color:#64748b;margin-bottom:16px;line-height:1.5;}
.share-name-label{font-size:11px;font-weight:700;color:#64748b;text-transform:uppercase;letter-spacing:0.05em;display:block;margin-bottom:5px;}
.share-name-input{width:100%;padding:9px 11px;border:1px solid #e2e8f0;border-radius:var(--radius-standard);font-size:13px;font-family:inherit;}
.share-name-hint{font-size:10.5px;color:#94a3b8;margin-top:4px;}
.share-link-input{flex:1;padding:10px 12px;border:1px solid #e2e8f0;border-radius:var(--radius-standard);font-size:12px;color:#64748b;background:#f8fafc;font-family:inherit;min-width:0;}
.share-copy-btn{background:var(--navy);color:#fff;border:none;border-radius:var(--radius-standard);padding:0 18px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;white-space:nowrap;}
.share-copy-btn:hover{background:var(--navy-light);}
.share-copy-status{font-size:11.5px;color:#16a34a;margin-top:8px;text-align:center;min-height:14px;}

/* ── Recipient landing screen ── */
.recip-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.6);z-index:9600;align-items:center;justify-content:center;padding:16px;overflow-y:auto;}
.recip-overlay.open{display:flex;}
.recip-frame{background:#fff;border-radius:var(--radius-16);box-shadow:0 20px 60px rgba(0,0,0,0.3);overflow:hidden;width:100%;max-width:400px;margin:auto;}
.recip-header{background:var(--navy);padding:22px 22px 20px;text-align:center;}
.recip-logo{display:block;height:44px;width:auto;margin:0 auto 8px;}
.recip-shared-by{font-size:14px;color:rgba(255,255,255,0.7);margin-bottom:4px;}
.recip-shared-by strong{color:#fff;}
.recip-headline{font-size:19px;font-weight:800;color:#fff;line-height:1.3;}
.recip-explainer{background:#eff6ff;padding:12px 22px;font-size:12.5px;color:#475569;line-height:1.5;text-align:center;border-bottom:1px solid #dbeafe;}
.recip-date-note{font-size:10.5px;color:#94a3b8;text-align:center;padding:8px 22px 0;}
.recip-cities{padding:16px 20px;display:flex;flex-direction:column;gap:10px;}
.recip-city-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:var(--radius-12);padding:14px 16px;}
.recip-city-name{font-size:16px;font-weight:800;color:#0f172a;margin-bottom:2px;}
.recip-city-meta{font-size:12px;color:#94a3b8;margin-bottom:8px;}
.recip-city-stats{display:flex;gap:8px;flex-wrap:wrap;}
.recip-stat{background:#fff;border:1px solid #e2e8f0;padding:5px 10px;border-radius:var(--radius-6);font-size:12px;color:#334155;font-weight:600;}
.recip-actions{padding:8px 20px 22px;display:flex;flex-direction:column;gap:10px;}
.recip-btn-primary{width:100%;padding:15px 0;background:var(--navy);color:#fff;font-size:15px;font-weight:800;border:none;border-radius:var(--radius-11);cursor:pointer;font-family:inherit;}
.recip-btn-secondary{width:100%;padding:14px 0;background:#fff;color:var(--navy);font-size:14.5px;font-weight:700;border:2px solid var(--navy);border-radius:var(--radius-11);cursor:pointer;font-family:inherit;}
.recip-footer-note{text-align:center;padding:0 20px 20px;font-size:11px;color:#94a3b8;line-height:1.5;}
.compare-section-row td:first-child{position:sticky;left:0;background:#dbeafe;z-index:2;}
.compare-section-row td{background:#f1f5f9;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:0.07em;color:#64748b;padding:6px 14px;}
.risk-pill{font-size:11px;font-weight:600;padding:2px 8px;border-radius:var(--radius-tag);white-space:nowrap;}
.back-btn{background:none;border:none;color:rgba(255,255,255,0.7);font-size:13px;cursor:pointer;padding:0;font-family:inherit;flex-shrink:0;}
.drawer-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:4000;opacity:0;transition:opacity 0.3s;}
.drawer-overlay.open{display:block;opacity:1;}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(320px,90vw);background:var(--navy);z-index:4001;transform:translateX(100%);transition:transform 0.32s cubic-bezier(0.4,0,0.2,1);display:flex;flex-direction:column;overflow:hidden;}
.drawer.open{transform:translateX(0);}
.drawer-header{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 14px;border-bottom:1px solid rgba(255,255,255,0.1);flex-shrink:0;}
.drawer-close{background:rgba(255,255,255,0.15);border:none;width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:20px;font-weight:700;cursor:pointer;}
.drawer-section{padding:16px 18px;}
.drawer-section-label{font-size:10px;font-weight:700;color:rgba(255,255,255,0.4);text-transform:uppercase;letter-spacing:0.1em;margin-bottom:10px;}
.drawer-divider{height:1px;background:rgba(255,255,255,0.08);margin:0 18px;}
.drawer-search-wrap{position:relative;}
.drawer-search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);font-size:15px;color:rgba(255,255,255,0.4);}
.drawer-search-input{width:100%;padding:10px 14px 10px 38px;background:rgba(255,255,255,0.08);border:1px solid rgba(255,255,255,0.15);border-radius:var(--radius-standard);color:#fff;font-size:14px;font-family:inherit;outline:none;}
.drawer-search-input::placeholder{color:rgba(255,255,255,0.35);}
.drawer-item{display:flex;align-items:center;gap:12px;color:rgba(255,255,255,0.8);font-size:15px;padding:10px 0;text-decoration:none;cursor:pointer;border-bottom:1px solid rgba(255,255,255,0.06);}

.drawer-footer{margin-top:auto;padding:16px 18px;border-top:1px solid rgba(255,255,255,0.08);}
.drawer-footer-text{font-size:11px;color:rgba(255,255,255,0.2);}
.mobile-bar{display:none;}
.filter-sheet{display:none!important;}

/* Mobile walkthrough — desktop-hidden, self-contained mini-stage */
.qsw-scrim{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.72);z-index:9998;align-items:center;justify-content:center;}
.qsw-scrim.open{display:flex;}
.qsw-modal{width:calc(100vw - 32px);max-width:340px;position:relative;}
.qsw-skip{position:absolute;top:-22px;right:2px;font-size:11px;color:rgba(255,255,255,0.65);text-decoration:underline;}
.qsw-stage{background:var(--navy);height:250px;border-radius:var(--radius-14) var(--radius-14) 0 0;position:relative;box-shadow:0 14px 34px rgba(0,0,0,0.4);overflow:hidden;}
.qsw-topbar{height:28px;display:flex;align-items:center;padding:0 8px;gap:5px;}
.qsw-logo{width:10px;height:10px;background:#fff;border-radius:var(--radius-2);}
.qsw-title{font-size:7.5px;font-weight:800;color:#fff;flex:1;}
.qsw-pro{background:var(--color-pro-orange);color:var(--color-dark-orange);font-size:6px;font-weight:800;padding:1px 5px;border-radius:var(--radius-6);}
.qsw-map{position:absolute;top:28px;left:0;right:0;bottom:32px;overflow:hidden;background:#a8d8e8;}
.qsw-scatter{position:absolute;width:9px;height:9px;background:#16a34a;border:1px solid #fff;border-radius:50%;opacity:1;transition:opacity 0.6s;}
.qsw-scatter.faded{opacity:0;}
.qsw-hero{position:absolute;left:32%;top:38%;width:15px;height:15px;background:#16a34a;border:var(--border-width-standard) solid #fff;border-radius:50%;box-shadow:0 1px 3px rgba(0,0,0,0.3);opacity:0;transition:opacity 0.4s;transform:translate(-50%,-50%);}
.qsw-hero.show{opacity:1;}
.qsw-hero.pulse{animation:qswPulse 0.6s ease-out;}
@keyframes qswPulse{0%{box-shadow:0 0 0 0 rgba(22,163,74,0.6);}100%{box-shadow:0 0 0 10px rgba(22,163,74,0);}}
.qsw-herolabel{position:absolute;left:32%;top:calc(38% + 12px);transform:translateX(-50%);font-size:11px;font-weight:700;color:#1e293b;background:rgba(255,255,255,0.85);padding:1px 5px;border-radius:var(--radius-3);white-space:nowrap;opacity:0;transition:opacity 0.4s;}
.qsw-herolabel.show{opacity:1;}
.qsw-bottombar{position:absolute;bottom:0;left:0;right:0;height:32px;background:var(--navy);display:flex;align-items:center;justify-content:space-between;padding:0 8px;z-index:2;}
.qsw-count{color:#fff;font-size:13px;font-weight:800;transition:color 0.3s;}
.qsw-count.pulsing{color:#4ade80;}
.qsw-pill{background:#fff;color:var(--navy);font-size:9.5px;font-weight:800;padding:5px 11px;border-radius:var(--radius-12);}
.qsw-sheet{position:absolute;left:0;right:0;bottom:0;background:#2c4a75;border-radius:var(--radius-12) var(--radius-12) 0 0;padding:6px 12px 42px;transform:translateY(calc(100% - 16px));transition:transform 0.6s cubic-bezier(.4,0,.2,1);box-shadow:0 -4px 14px rgba(0,0,0,0.35);z-index:1;}
.qsw-sheet.peek{transform:translateY(0);}
.qsw-handle{width:24px;height:3px;background:rgba(255,255,255,0.3);border-radius:var(--radius-2);margin:0 auto 7px;}
.qsw-card{background:#f8fafc;border-radius:var(--radius-standard);padding:9px;transition:box-shadow 0.4s;}
.qsw-card.highlight{box-shadow:0 0 0 2px var(--color-onboarding-accent);}
.qsw-card-head{font-size:11.5px;font-weight:800;text-transform:uppercase;color:#dc2626;margin-bottom:5px;}
.qsw-card-label{font-size:12.5px;font-weight:600;color:#1e293b;margin-bottom:5px;}
.qsw-track{height:4px;background:rgba(0,0,0,0.1);border-radius:var(--radius-2);position:relative;}
.qsw-thumb{position:absolute;top:-5px;width:13px;height:13px;background:#fff;border-radius:50%;box-shadow:0 1px 2px rgba(0,0,0,0.25);border:var(--border-width-standard) solid var(--navy);left:100%;margin-left:-13px;transition:left 1.4s cubic-bezier(.4,0,.2,1);}
.qsw-citypopup{position:absolute;left:44%;top:32%;background:#fff;border-radius:var(--radius-standard);padding:11px 13px;width:165px;opacity:0;transform:translateY(4px);transition:opacity 0.35s,transform 0.35s;box-shadow:0 4px 14px rgba(0,0,0,0.3);z-index:1;}
.qsw-citypopup.show{opacity:1;transform:translateY(0);}
.qsw-city-name{font-size:14px;font-weight:800;color:#0f172a;}
.qsw-city-sub{font-size:10.5px;color:#94a3b8;margin-bottom:4px;}
.qsw-city-row{font-size:11px;color:#475569;}
.qsw-city-pill{display:inline-block;font-size:9.5px;font-weight:700;padding:1px 5px;border-radius:var(--radius-3);background:#dcfce7;color:#166534;margin-top:4px;}
.qsw-caption{background:#1e293b;border-radius:0 0 var(--radius-14) var(--radius-14);padding:14px 15px 13px;height:140px;display:flex;flex-direction:column;align-items:flex-start;}
.qsw-caption-text{font-size:11.5px;color:#e2e8f0;line-height:1.5;}
.qsw-caption-text strong{color:#8ba3bd;font-weight:700;}
.qsw-dots{display:flex;gap:4px;justify-content:center;width:100%;margin-top:auto;padding-top:8px;}
.qsw-dot{width:5px;height:5px;border-radius:50%;background:rgba(255,255,255,0.2);}
.qsw-dot.active{background:var(--color-onboarding-accent);}
.qsw-dot.done{background:rgba(74,222,128,0.6);}
.qsw-floatbtn{position:absolute;left:50%;bottom:-32px;transform:translateX(-50%) scale(1);opacity:1;background:var(--color-onboarding-accent);color:#fff;border:none;padding:10px 20px;border-radius:var(--radius-standard);font-size:12px;font-weight:800;font-family:inherit;box-shadow:0 5px 14px rgba(0,0,0,0.32);white-space:nowrap;transition:opacity 0.35s,transform 0.35s;}
.qsw-floatbtn.vanished{opacity:0;transform:translateX(-50%) scale(0.7) translateY(8px);pointer-events:none;}
.qsw-floatbtn.entering{opacity:0;transform:translateX(-50%) scale(0.7) translateY(8px);}
.qsw-finalrow{display:none;gap:8px;justify-content:center;position:absolute;left:50%;bottom:-32px;transform:translateX(-50%);}
.qsw-finalrow.show{display:flex;}
.qsw-btn{border:none;padding:10px 15px;border-radius:var(--radius-standard);font-size:11px;font-weight:800;font-family:inherit;white-space:nowrap;box-shadow:0 5px 14px rgba(0,0,0,0.32);}
.qsw-btn.primary{background:var(--color-onboarding-accent);color:#fff;}
.qsw-btn.secondary{background:#fff;color:#475569;}
@media(min-width:768px){.qsw-scrim{display:none!important;}}
@media(max-width:767px){
  .top-nav{height:52px;}
  .layout{top:52px;}
  .mobile-nav-bug{display:none!important;}
  .mobile-nav-logo-mark{display:block!important;}
  .mobile-nav-spacer{display:flex!important;}
  .mobile-nav-upgrade{display:flex!important;}
  .mobile-nav-signin{display:flex!important;}
  .mobile-account-btn{display:flex!important;}
  .mobile-nav-hamburger{display:flex!important;}
  .top-nav-logo{display:none!important;}
  .top-nav-divider{display:none!important;}
  .top-nav-spacer{display:none!important;}
  .search-wrap{display:none!important;}
  .nav-right-desktop{display:none!important;}
  .layout{bottom:64px;flex-direction:column;}
  .sidebar{display:none!important;}
  #map{height:100%;width:100%;flex:1;}
  .mobile-bar{display:flex!important;position:fixed;bottom:0;left:0;right:0;z-index:2000;background:var(--navy);padding:10px 20px;padding-left:max(20px,env(safe-area-inset-left));padding-right:max(20px,env(safe-area-inset-right));align-items:center;justify-content:space-between;box-shadow:0 -4px 20px rgba(0,0,0,0.2);padding-bottom:calc(10px + env(safe-area-inset-bottom));height:64px;gap:10px;}
  .filter-sheet{display:none;position:fixed;inset:0;z-index:3000;background:rgba(0,0,0,0.5);flex-direction:column;justify-content:flex-end;cursor:pointer;}
  .filter-sheet.open{display:flex!important;}
  .lever-label{font-size:14px;}.lever-val{font-size:21px;}.section-head{font-size:11px;}.territory-label{font-size:14px;}
  input[type=range]::-webkit-slider-thumb{box-sizing:border-box;width:32px;height:32px;margin-top:-13.5px;}
  input.d-range::-webkit-slider-thumb{width:32px;height:32px;}
  .disaster-tol-val{margin-bottom:14px;}
  .dual-range-wrap{height:22px;}.dual-range-wrap input[type=range]{top:8px;}.dual-track{top:8px;}.dual-fill{top:8px;}.custom-thumb{width:32px;height:32px;}.dual-range-wrap .range-tick{top:8px;}
  #fav-panel{padding:0!important;align-items:flex-end!important;}
  .fav-inner{border-radius:var(--radius-18) var(--radius-18) 0 0!important;max-width:100%!important;width:100%!important;height:92vh!important;max-height:92vh!important;height:92dvh!important;max-height:92dvh!important;margin:0!important;}
  #compare-panel{padding:0!important;align-items:flex-end!important;}
  .compare-inner{border-radius:var(--radius-18) var(--radius-18) 0 0!important;max-width:100%!important;width:100%!important;height:92vh!important;max-height:92vh!important;height:92dvh!important;max-height:92dvh!important;margin:0!important;}
  .reviews-screen-overlay{padding:0!important;align-items:flex-end!important;}
  .reviews-screen-inner{border-radius:var(--radius-18) var(--radius-18) 0 0!important;max-width:100%!important;width:100%!important;height:92vh!important;max-height:92vh!important;height:92dvh!important;max-height:92dvh!important;margin:0!important;}
  .lbl-desktop{display:none!important;}
  .lbl-mobile{display:inline!important;}
  #fav-export-pdf-btn,#fav-share-btn{display:none!important;}
  .fav-actions-row-mobile{display:flex!important;}
  .compare-header .export-pdf-btn{padding:8px 10px;font-size:12.5px;}
  .export-options-panel{
    left:0!important;right:0!important;bottom:0!important;top:auto!important;
    width:100%!important;border-radius:var(--radius-18) var(--radius-18) 0 0!important;
    padding:16px 18px 22px!important;box-shadow:0 -8px 30px rgba(0,0,0,0.22)!important;
  }
  .export-options-actions{flex-direction:column-reverse;}
  .export-cancel-btn,.export-confirm-btn{padding:12px 0;font-size:14px;}
}
@media(min-width:768px){
  .mobile-bar{display:none!important;}
  .filter-sheet{display:none!important;}
  .sidebar{display:flex!important;}
}
.mobile-bar-left{display:flex;flex-direction:column;align-items:flex-start;flex-shrink:0;}
.mobile-match-label{font-size:10px;color:rgba(255,255,255,0.5);text-transform:uppercase;letter-spacing:0.05em;}
.mobile-match-big{font-size:22px;font-weight:700;color:#fff;line-height:1.1;}
.mobile-bar-right{display:flex;align-items:center;gap:10px;flex-shrink:0;}
.mobile-filter-btn{background:#fff;color:var(--navy);border:none;border-radius:var(--radius-standard);padding:9px 16px;font-size:14px;font-weight:700;cursor:pointer;font-family:inherit;}
.mobile-fav-btn{display:flex;align-items:center;gap:6px;background:transparent;color:#fff;border:none;padding:8px 4px;cursor:pointer;font-family:inherit;}
/* City detail drawer — mobile only */
.city-drawer{
  position:fixed;bottom:0;left:0;right:0;z-index:3500;
  background:#fff;border-radius:var(--radius-18) var(--radius-18) 0 0;
  box-shadow:0 -8px 40px rgba(0,0,0,0.18);
  transform:translateY(100%);
  transition:transform 0.3s cubic-bezier(0.4,0,0.2,1);
  max-height:80vh;display:flex;flex-direction:column;
  padding-bottom:env(safe-area-inset-bottom);
}
.city-drawer.open{transform:translateY(0);}
.city-drawer-handle{width:40px;height:4px;background:#e2e8f0;border-radius:var(--radius-2);margin:12px auto 0;flex-shrink:0;}
.city-drawer-header{display:flex;align-items:flex-start;justify-content:space-between;padding:10px 18px 6px;flex-shrink:0;}
.city-drawer-name{font-size:18px;font-weight:700;color:#0f172a;line-height:1.2;}
.city-drawer-sub{font-size:13px;color:#94a3b8;margin-top:2px;}
.city-drawer-close{background:#e2e8f0;border:none;border-radius:50%;width:44px;height:44px;font-size:22px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#1e293b;}
.city-drawer-heart-btn{background:none;border:none;font-size:28px;cursor:pointer;padding:2px 4px 0 0;line-height:1;flex-shrink:0;}
.city-drawer-badge{margin:0 18px 10px;font-size:12px;font-weight:600;padding:4px 10px;border-radius:var(--radius-6);display:inline-block;}
.city-drawer-scroll{overflow-y:auto;flex:1;padding:0 18px 16px;-webkit-overflow-scrolling:touch;touch-action:pan-y;overscroll-behavior:contain;}
.city-drawer-section{font-size:11px;font-weight:700;color:#64748b;text-transform:uppercase;letter-spacing:0.06em;margin:12px 0 6px;}
.city-drawer table{font-size:14px;width:100%;border-collapse:collapse;}
.city-drawer td{padding:6px 0;color:#475569;border-bottom:1px solid #f1f5f9;vertical-align:top;}
.city-drawer td:last-child{font-weight:600;color:#1e293b;text-align:right;}
.city-drawer tr:last-child td{border-bottom:none;}
.mobile-fav-heart{font-size:22px;line-height:1;color:#fff;}
.mobile-fav-num{font-size:17px;font-weight:700;color:#fff;}
.filter-sheet-inner{background:var(--navy);border-radius:var(--radius-20) var(--radius-20) 0 0;max-height:96vh;max-height:96dvh;display:flex;flex-direction:column;overflow:hidden;}
.filter-sheet-handle{width:40px;height:4px;background:rgba(255,255,255,0.25);border-radius:var(--radius-2);margin:12px auto 0;flex-shrink:0;}
.filter-sheet-header{display:flex;align-items:center;justify-content:space-between;padding:10px 18px 8px;flex-shrink:0;border-bottom:1px solid rgba(255,255,255,0.1);}
.filter-sheet-title{font-size:16px;font-weight:700;color:#fff;}
.filter-sheet-close{width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,0.1);border:none;color:#fff;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;}
.filter-sheet-frozen{padding:10px 16px 8px;flex-shrink:0;border-bottom:1px solid rgba(255,255,255,0.12);display:flex;flex-direction:row;gap:10px;}
.filter-sheet-frozen .match-box,.filter-sheet-frozen .fav-btn-sidebar{flex:1;min-width:0;}
.filter-sheet-scroll{flex:1;overflow-y:auto;overflow-x:hidden;padding:12px 16px 8px;display:flex;flex-direction:column;gap:12px;-webkit-overflow-scrolling:touch;touch-action:pan-y;overscroll-behavior:contain;}
.filter-sheet-scroll::-webkit-scrollbar{display:none;}
.filter-sheet-footer{padding:10px 16px calc(10px + env(safe-area-inset-bottom));border-top:1px solid rgba(255,255,255,0.1);flex-shrink:0;}
.apply-btn{width:100%;padding:14px 0;background:var(--green);border:none;border-radius:var(--radius-10);color:#fff;font-size:16px;font-weight:700;cursor:pointer;font-family:inherit;}

/* ── Feedback FAB ── */
.feedback-fab{position:fixed;right:20px;bottom:24px;z-index:2500;padding:11px 18px;border-radius:var(--radius-standard);background:var(--navy);color:#fff;border:none;box-shadow:0 4px 16px rgba(0,0,0,0.25);cursor:pointer;font-size:13px;font-weight:700;font-family:inherit;}
@media(max-width:767px){.feedback-fab{bottom:80px;right:16px;padding:10px 16px;font-size:12.5px;}}
.qs-dark-scrim{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.75);z-index:9999;align-items:center;justify-content:center;}
.qs-dark-scrim.open{display:flex;}
.qs-movie-modal{width:440px;position:relative;max-width:calc(100vw - 40px);}
.qs-movie-skip{position:absolute;top:-30px;right:0;color:rgba(255,255,255,0.5);font-size:11px;text-decoration:underline;cursor:pointer;}
.qs-movie-stage{background:var(--navy);height:280px;display:flex;padding:18px;gap:16px;border-radius:var(--radius-16) var(--radius-16) 0 0;box-shadow:0 20px 50px rgba(0,0,0,0.4);}
.qs-movie-sidebar{width:170px;flex-shrink:0;}
.qs-movie-map{flex:1;background:#a8d8e8;border-radius:var(--radius-standard);position:relative;overflow:hidden;}
.qsm-match-box{background:rgba(255,255,255,0.08);border:1px solid rgba(255,255,255,0.15);border-radius:var(--radius-9);padding:10px 12px;text-align:center;margin-bottom:10px;}
.qsm-match-num{font-size:22px;font-weight:700;color:#fff;line-height:1;transition:color 0.3s;}
.qsm-match-num.pulsing{color:#4ade80;}
.qsm-match-label{font-size:9.5px;color:rgba(255,255,255,0.5);margin-top:2px;}
.qsm-fake-card{background:#f8fafc;border-radius:var(--radius-9);padding:12px;transition:box-shadow 0.4s;}
.qsm-fake-card.highlight{box-shadow:0 0 0 2.5px var(--color-onboarding-accent);}
.qsm-fake-head{font-size:9px;font-weight:800;text-transform:uppercase;color:#dc2626;margin-bottom:7px;}
.qsm-fake-label{font-size:11px;font-weight:600;color:#1e293b;margin-bottom:6px;}
.qsm-fake-track{height:5px;background:rgba(0,0,0,0.1);border-radius:var(--radius-3);position:relative;}
.qsm-fake-thumb{position:absolute;top:-6px;width:16px;height:16px;background:#fff;border-radius:50%;box-shadow:0 1px 3px rgba(0,0,0,0.25);border:2px solid var(--navy);left:100%;margin-left:-16px;transition:left 1.4s cubic-bezier(.4,0,.2,1);}
.qsm-scatter-dot{position:absolute;width:8px;height:8px;background:#16a34a;border:var(--border-width-standard) solid #fff;border-radius:50%;box-shadow:0 1px 2px rgba(0,0,0,0.25);opacity:1;transition:opacity 0.6s;}
.qsm-scatter-dot.faded{opacity:0;}
.qsm-hero-marker{position:absolute;left:33%;top:50%;width:14px;height:14px;background:#16a34a;border:2px solid #fff;border-radius:50%;box-shadow:0 1px 3px rgba(0,0,0,0.3);opacity:0;transition:opacity 0.4s;transform:translate(-50%,-50%);}
.qsm-hero-marker.show{opacity:1;}
.qsm-hero-marker.pulse{animation:qsmPulseRing 0.6s ease-out;}
@keyframes qsmPulseRing{0%{box-shadow:0 0 0 0 rgba(22,163,74,0.6);}100%{box-shadow:0 0 0 14px rgba(22,163,74,0);}}
.qsm-hero-label{position:absolute;left:33%;top:calc(50% + 12px);transform:translateX(-50%);font-size:9px;font-weight:700;color:#1e293b;background:rgba(255,255,255,0.85);padding:1px 6px;border-radius:var(--radius-tag);white-space:nowrap;opacity:0;transition:opacity 0.4s;}
.qsm-hero-label.show{opacity:1;}
.qsm-popup{position:absolute;left:38%;top:14%;background:#fff;border-radius:var(--radius-7);box-shadow:0 4px 14px rgba(0,0,0,0.3);padding:9px 11px;width:145px;opacity:0;transform:translateY(4px);transition:opacity 0.3s,transform 0.3s;}
.qsm-popup.show{opacity:1;transform:translateY(0);}
.qsm-popup-name{font-size:11px;font-weight:700;color:#0f172a;}
.qsm-popup-sub{font-size:8.5px;color:#94a3b8;margin-bottom:4px;}
.qsm-popup-row{font-size:9px;color:#475569;margin-top:2px;}
.qsm-popup-pill{display:inline-block;font-size:7.5px;font-weight:700;padding:1px 5px;border-radius:var(--radius-3);background:#dcfce7;color:#166534;margin-top:4px;}
.qs-movie-caption{background:#1e293b;border-radius:0 0 var(--radius-16) var(--radius-16);padding:16px 20px 16px;height:150px;display:flex;flex-direction:column;align-items:flex-start;}
.qsm-caption-text{font-size:12.5px;color:#e2e8f0;line-height:1.55;}
.qsm-caption-text strong{color:#8ba3bd;font-weight:700;}
.qsm-dots{display:flex;gap:5px;justify-content:center;width:100%;margin-top:auto;padding-top:10px;}
.qsm-dot{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,0.2);transition:background 0.3s;}
.qsm-dot.active{background:var(--color-onboarding-accent);}
.qsm-dot.done{background:rgba(74,222,128,0.6);}
.qs-movie-float-btn{position:absolute;left:50%;bottom:-38px;transform:translateX(-50%) scale(1);opacity:1;background:var(--color-onboarding-accent);color:#fff;border:none;padding:11px 22px;border-radius:var(--radius-standard);font-size:13px;font-weight:800;cursor:pointer;font-family:inherit;box-shadow:0 6px 18px rgba(0,0,0,0.35);white-space:nowrap;transition:opacity 0.35s,transform 0.35s;}
.qs-movie-float-btn.vanished{opacity:0;transform:translateX(-50%) scale(0.7) translateY(10px);pointer-events:none;}
.qs-movie-float-btn.entering{opacity:0;transform:translateX(-50%) scale(0.7) translateY(10px);}
.qs-movie-final-row{display:none;gap:10px;justify-content:center;position:absolute;left:50%;bottom:-38px;transform:translateX(-50%);}
.qs-movie-final-row.show{display:flex;}
.qsm-btn{border:none;padding:11px 18px;border-radius:var(--radius-standard);font-size:12.5px;font-weight:800;cursor:pointer;font-family:inherit;white-space:nowrap;box-shadow:0 6px 18px rgba(0,0,0,0.35);}
.qsm-btn.primary{background:var(--color-onboarding-accent);color:#fff;}
.qsm-btn.secondary{background:#fff;color:#475569;}
@media(max-width:767px){.qs-dark-scrim{display:none!important;}}
.reset-map-fab{position:fixed;right:20px;bottom:76px;z-index:2500;padding:11px 18px;border-radius:var(--radius-standard);background:#fff;color:var(--navy);border:1px solid #e2e8f0;box-shadow:0 4px 16px rgba(0,0,0,0.15);cursor:pointer;font-size:13px;font-weight:700;font-family:inherit;}
@media(max-width:767px){.reset-map-fab{bottom:132px;right:16px;padding:10px 16px;font-size:12.5px;}}
.shared-view-banner{position:fixed;left:320px;bottom:24px;z-index:2500;padding:11px 18px;border-radius:var(--radius-standard);background:#fff;color:var(--navy);border:1px solid var(--border);box-shadow:0 4px 16px rgba(0,0,0,0.2);cursor:pointer;font-size:13px;font-weight:700;font-family:inherit;}
.shared-view-banner u{text-decoration-thickness:1.5px;}
@media(max-width:767px){.shared-view-banner{bottom:80px;left:16px;padding:10px 16px;font-size:12.5px;max-width:80vw;}}

/* ── Simple modal shell (feedback + review) ── */
.simple-modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:8500;align-items:flex-start;justify-content:center;padding:16px;overflow-y:auto;}
#review-overlay{z-index:9550;}
.simple-modal-overlay.open{display:flex;}
.simple-modal{background:var(--navy);border-radius:var(--radius-14);width:100%;max-width:380px;margin:auto;box-shadow:0 20px 60px rgba(0,0,0,0.3);flex-shrink:0;}
@media(max-width:767px){
  .simple-modal-overlay{align-items:flex-end;padding:0;}
  .simple-modal{max-width:100%;width:100%;border-radius:var(--radius-16) var(--radius-16) 0 0;max-height:92vh;max-height:92dvh;overflow-y:auto;margin:0;}
}
.simple-modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 12px;border-bottom:1px solid rgba(255,255,255,0.1);}
.simple-modal-title{font-size:16px;font-weight:800;color:#fff;}
.simple-modal-close{width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,0.15);border:none;color:#fff;font-size:16px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.simple-modal-body{padding:16px 18px;}
.fb-field-label{font-size:11px;font-weight:700;color:rgba(255,255,255,0.5);text-transform:uppercase;letter-spacing:0.06em;margin-bottom:6px;margin-top:14px;}
.fb-field-label:first-child{margin-top:0;}
.fb-input,.fb-textarea{width:100%;background:rgba(255,255,255,0.08);border:1px solid rgba(255,255,255,0.15);border-radius:var(--radius-standard);padding:10px 12px;color:#fff;font-size:13px;font-family:inherit;}
.fb-textarea{min-height:70px;resize:vertical;}
.fb-input::placeholder,.fb-textarea::placeholder{color:rgba(255,255,255,0.35);}
.fb-submit-btn{width:100%;padding:12px 0;background:var(--color-pro-orange);color:var(--color-dark-orange);border:none;border-radius:var(--radius-standard);font-size:14px;font-weight:800;cursor:pointer;margin-top:16px;font-family:inherit;}
.fb-status-msg{font-size:12px;text-align:center;margin-top:10px;color:rgba(255,255,255,0.65);}

/* ── Review modal ── */
.rv-name-header{font-size:15px;font-weight:800;color:#fff;margin-bottom:2px;}
.rv-name-sub{font-size:12px;color:rgba(255,255,255,0.5);margin-bottom:14px;}
.rt-opt{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid rgba(255,255,255,0.07);cursor:pointer;}
.rt-opt:last-child{border-bottom:none;}
.rt-radio{width:16px;height:16px;border-radius:50%;border:2px solid rgba(255,255,255,0.35);flex-shrink:0;}
.rt-opt.selected .rt-radio{border-color:var(--color-pro-orange);background:var(--color-pro-orange);}
.rt-label{font-size:13px;color:rgba(255,255,255,0.75);}
.rt-opt.selected .rt-label{color:#fff;font-weight:700;}
.rating-item{padding:7px 0;border-bottom:1px solid rgba(255,255,255,0.07);}
.rating-header-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:3px;}
.rating-item-name{font-size:12.5px;color:rgba(255,255,255,0.9);}
.rating-icons-row{display:flex;align-items:center;gap:3px;font-size:15px;flex-shrink:0;}
.no-opinion-icon{width:18px;height:18px;border-radius:50%;border:var(--border-width-standard) solid rgba(255,255,255,0.3);color:rgba(255,255,255,0.4);font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;}
.no-opinion-icon.selected{border-color:var(--color-pro-orange);color:var(--color-pro-orange);background:rgba(245,158,11,0.12);}
.icon-divider{width:1px;height:16px;background:rgba(255,255,255,0.12);margin:0 5px;flex-shrink:0;}
.rv-star{cursor:pointer;}
.rv-star.filled{color:var(--color-pro-orange);}
.rv-star.empty{color:rgba(255,255,255,0.2);}
.rating-selected-label{text-align:right;font-size:11px;font-weight:600;color:var(--color-pro-orange);min-height:14px;}
.rv-preface{font-size:12px;color:rgba(255,255,255,0.6);line-height:1.6;font-style:italic;margin:16px 0 14px;}
.rv-nudge{font-size:11px;color:var(--color-pro-orange);font-weight:600;margin-bottom:6px;}
.rv-email-disclaimer{font-size:11px;color:rgba(255,255,255,0.45);line-height:1.5;margin:4px 0 14px;}
.rv-optional-tag{font-size:8.5px;font-weight:500;color:rgba(255,255,255,0.35);letter-spacing:0.03em;}

/* ── Confirmation state (shared) ── */
.confirm-body{padding:30px 10px;text-align:center;}
.confirm-check{width:52px;height:52px;border-radius:50%;background:rgba(34,197,94,0.15);color:#22c55e;font-size:26px;font-weight:800;display:flex;align-items:center;justify-content:center;margin:0 auto 16px;}
.confirm-title{font-size:20px;font-weight:800;color:#fff;margin-bottom:10px;}
.confirm-text{font-size:13px;color:rgba(255,255,255,0.65);line-height:1.6;margin-bottom:22px;}
.confirm-text strong{color:#fff;}
.confirm-close-btn{background:rgba(255,255,255,0.1);border:1px solid rgba(255,255,255,0.25);color:#fff;font-size:13px;font-weight:600;padding:9px 20px;border-radius:var(--radius-standard);cursor:pointer;font-family:inherit;}

/* ── Rate & Review entry link (sits on white popup/drawer backgrounds) ── */
.rate-review-link{display:block;width:100%;padding:10px 0;background:#f8fafc;border:1px solid #e2e8f0;border-radius:var(--radius-standard);font-size:13px;font-weight:700;color:var(--navy);cursor:pointer;margin-top:12px;text-align:center;font-family:inherit;}
.rate-review-link-popup{display:flex;align-items:center;justify-content:center;width:100%;height:42px;background:var(--navy);border:none;border-radius:var(--radius-standard);font-size:13px;font-weight:700;color:#fff;cursor:pointer;margin-top:12px;font-family:inherit;box-sizing:border-box;}
.methodology-overlay{display:none;position:fixed;inset:0;background:#e8e8e8;z-index:9800;overflow-y:auto;}
.methodology-overlay.open{display:block;}
.methodology-topbar{background:#3a3a3a;color:#ccc;padding:10px 20px;font-size:12px;font-family:-apple-system,sans-serif;display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;z-index:2;}
.methodology-topbar a{color:#ccc;text-decoration:underline;cursor:pointer;}
.methodology-body{padding:32px 20px 60px;max-width:680px;margin:0 auto;font-family:Georgia,'Times New Roman',serif;color:#333;}
.methodology-h1{font-size:22px;font-weight:700;color:#222;margin-bottom:4px;}
.methodology-updated{font-size:11.5px;color:#888;font-style:italic;margin-bottom:28px;}
.methodology-h2{font-size:14px;font-weight:700;color:#333;margin-top:26px;margin-bottom:8px;border-bottom:1px solid #ddd;padding-bottom:5px;}
.methodology-p{font-size:13px;line-height:1.65;color:#3a3a3a;margin-bottom:12px;}
.methodology-ul{margin:0 0 12px 20px;padding:0;}
.methodology-li{font-size:13px;line-height:1.65;color:#3a3a3a;margin-bottom:4px;}
.methodology-hr{border:none;border-top:1px solid #ddd;margin:28px 0 14px;}
.methodology-footer-note{font-size:11.5px;color:#888;font-style:italic;line-height:1.6;}
.methodology-link{color:rgba(255,255,255,0.35);font-size:11px;text-decoration:underline;cursor:pointer;text-align:center;padding:8px 0 2px;}

.notes-btn{display:flex;align-items:center;justify-content:center;width:100%;height:42px;background:#fff;border:var(--border-width-standard) solid var(--color-pro-orange);border-radius:var(--radius-standard);font-size:13px;font-weight:700;color:var(--color-dark-orange);cursor:pointer;margin-top:12px;box-sizing:border-box;font-family:inherit;}
.notes-btn.has-note{background:#fef9c3;border-color:#facc15;color:#854d0e;}
.note-preview-row{margin-top:10px;padding-top:10px;border-top:1px solid #e2e8f0;}
.note-preview-text{font-size:12.5px;font-style:italic;color:#475569;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:8px;}
.note-preview-btn{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;padding:4px 8px;border-radius:var(--radius-6);white-space:nowrap;cursor:pointer;border:none;font-family:inherit;}
.note-preview-btn.empty{color:#64748b;background:#e2e8f0;}
.note-preview-btn.has-note{color:#854d0e;background:#fef9c3;}
.note-modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:9400;align-items:center;justify-content:center;padding:16px;}
.note-modal-overlay.open{display:flex;}
.note-modal{background:var(--navy);border-radius:var(--radius-14);width:100%;max-width:340px;box-shadow:0 20px 60px rgba(0,0,0,0.25);overflow:hidden;}
.note-modal-header{padding:16px 18px 12px;border-bottom:1px solid rgba(255,255,255,0.1);}
.note-modal-title{font-size:12px;font-weight:700;color:rgba(255,255,255,0.55);text-transform:uppercase;letter-spacing:0.05em;}
.note-modal-sub{font-size:18px;font-weight:800;color:#fff;margin-top:3px;}
.note-modal-body{padding:16px 18px;}
.note-textarea{width:100%;min-height:210px;background:rgba(255,255,255,0.08);border:1px solid rgba(255,255,255,0.15);border-radius:var(--radius-standard);padding:10px 12px;color:#fff;font-size:13px;font-family:inherit;line-height:1.5;resize:vertical;}
.note-textarea::placeholder{color:rgba(255,255,255,0.35);}
.note-char-count{font-size:11px;color:rgba(255,255,255,0.4);text-align:right;margin-top:5px;}
.note-save-btn{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;height:42px;background:#fff;border:var(--border-width-standard) solid var(--color-pro-orange);color:var(--color-dark-orange);font-weight:800;font-size:14px;border-radius:var(--radius-standard);margin-top:14px;cursor:pointer;font-family:inherit;box-sizing:border-box;}
.note-close-btn{width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,0.18);color:#fff;font-size:14px;font-weight:700;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;}
.note-local-disclaimer{font-size:10.5px;color:rgba(255,255,255,0.3);text-align:center;margin-top:10px;line-height:1.5;}

/* ── Reviews browsing screen ── */
.reviews-screen-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:9500;align-items:flex-start;justify-content:center;padding:16px;overflow-y:auto;}
.reviews-screen-overlay.open{display:flex;}
.reviews-screen-inner{background:#fff;border-radius:var(--radius-14);width:100%;max-width:760px;height:calc(100vh - 32px);max-height:calc(100vh - 32px);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,0.2);margin:auto;}
.reviews-screen-header{display:flex;align-items:flex-start;justify-content:space-between;padding:16px 18px;background:var(--navy);flex-shrink:0;}
.reviews-screen-label{font-size:12px;font-weight:700;color:#c3d1e5;text-transform:uppercase;letter-spacing:0.05em;}
.reviews-screen-city{font-size:18px;font-weight:800;color:#fff;margin-top:3px;}
.reviews-screen-close-btn{width:32px;height:32px;min-width:32px;border-radius:50%;background:rgba(255,255,255,0.2);border:none;color:#fff;font-size:15px;font-weight:700;cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;}
.reviews-screen-body{background:#fff;overflow-y:auto;flex:1;min-height:0;padding:16px 18px 24px;-webkit-overflow-scrolling:touch;}
.reviews-screen-controls{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:16px;flex-wrap:wrap;}
.reviews-sort-select{font-family:inherit;font-size:12.5px;font-weight:600;color:#334155;background:#f8fafc;border:1px solid #e2e8f0;border-radius:var(--radius-standard);padding:7px 10px;cursor:pointer;}
.reviews-write-btn{background:var(--navy);color:#fff;border:none;border-radius:var(--radius-standard);font-size:13px;font-weight:700;font-family:inherit;padding:9px 16px;cursor:pointer;white-space:nowrap;}
.reviews-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;margin-top:16px;}
.reviews-list-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:var(--radius-10);padding:14px 16px;}
.reviews-list-head{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.reviews-list-type{font-size:12.5px;font-weight:700;color:var(--navy);}
.reviews-list-date{font-size:11px;color:#94a3b8;white-space:nowrap;}
.reviews-list-text{font-size:13px;color:#334155;line-height:1.55;margin:8px 0 0;white-space:pre-wrap;}
.reviews-empty-state{font-size:13px;color:#64748b;text-align:center;padding:40px 20px;}
.reviews-load-more-btn{display:block;width:100%;margin-top:18px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:var(--radius-standard);color:var(--navy);font-size:13px;font-weight:700;font-family:inherit;padding:10px;cursor:pointer;}
.reviews-load-more-btn:disabled{opacity:0.5;cursor:default;}

/* ── Confirmation modal (destructive actions) ── */
.confirm-modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:9600;align-items:center;justify-content:center;padding:16px;}
.confirm-modal-overlay.open{display:flex;}
.confirm-modal{background:#fff;border-radius:var(--radius-12);padding:22px 22px 18px;width:320px;max-width:100%;box-sizing:border-box;text-align:center;}
.confirm-modal-icon{width:44px;height:44px;border-radius:50%;background:#fcebeb;display:flex;align-items:center;justify-content:center;margin:0 auto 12px;font-size:20px;}
.confirm-modal-title{font-size:16px;font-weight:700;color:#0f172a;margin-bottom:6px;}
.confirm-modal-body{font-size:13px;color:#64748b;line-height:1.5;margin-bottom:18px;}
.confirm-modal-actions{display:flex;gap:10px;}
.confirm-modal-cancel{flex:1;height:40px;background:#fff;border:var(--border-width-standard) solid #e2e8f0;color:#334155;border-radius:var(--radius-standard);font-size:13px;font-weight:700;font-family:inherit;cursor:pointer;}
.confirm-modal-confirm{flex:1;height:40px;background:#dc2626;border:none;color:#fff;border-radius:var(--radius-standard);font-size:13px;font-weight:700;font-family:inherit;cursor:pointer;}
.confirm-modal-confirm:hover{background:#b91c1c;}
.add-fav-btn{display:flex;align-items:center;justify-content:center;width:100%;height:42px;background:#fff;border:var(--border-width-standard) solid var(--navy);border-radius:var(--radius-standard);font-size:13px;font-weight:700;color:var(--navy);cursor:pointer;margin-top:12px;font-family:inherit;box-sizing:border-box;}


/* Global persistent scrollbar attempt. This genuinely works on Windows
   (Chrome/Firefox/Edge) and Firefox on any platform. It has NO effect
   on macOS (Safari or Chrome) or any mobile browser, where the OS itself
   controls scrollbar overlay behavior at a level page CSS cannot reach —
   that's a platform limitation, not something more CSS can fix. The
   fade-hint elements are the real cross-platform solution for those. */
*{scrollbar-width:auto;scrollbar-color:#94a3b8 #f1f5f9;}
*::-webkit-scrollbar{width:11px;height:11px;}
*::-webkit-scrollbar-track{background:#f1f5f9;}
*::-webkit-scrollbar-thumb{background:#94a3b8;border-radius:var(--radius-6);border:2px solid #f1f5f9;}
*::-webkit-scrollbar-thumb:hover{background:#64748b;}
/* ═══ New unified walkthrough (v180) ═══ */
.rhwt-scrim{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.55);z-index:9999;align-items:center;justify-content:center;padding:16px;overflow-y:auto;font-family:'Public Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;}
.rhwt-scrim.open{display:flex;}
:root{--rhwt-card-pad-x:1.75rem;}
.rhwt-card{width:440px;max-width:100%;background:var(--navy);border:2px solid var(--color-onboarding-accent);border-radius:var(--radius-20);padding:1.25rem 1.75rem 1.5rem;box-sizing:border-box;display:flex;flex-direction:column;height:544px;overflow:hidden;position:relative;}
.rhwt-exit-row{display:flex;justify-content:flex-end;margin:0 0 0.5rem;}
.rhwt-exit-btn{background:transparent;border:none;color:#B5D4F4;font-size:12px;font-weight:500;font-family:inherit;display:flex;align-items:center;gap:4px;cursor:pointer;padding:4px 8px;}
.rhwt-exit-icon{font-style:normal;font-size:13px;}
.rhwt-body{flex:1;display:flex;flex-direction:column;justify-content:flex-start;padding-bottom:90px;}
.rhwt-nav-row{position:absolute;left:1.75rem;right:1.75rem;bottom:2rem;display:flex;justify-content:center;gap:12px;}
.rhwt-btn{font-family:inherit;font-weight:600;border-radius:var(--radius-standard);padding:12px 0;font-size:15px;cursor:pointer;width:150px;}
.rhwt-btn-prev{background:transparent;color:#ffffff;border:1px solid #ffffff;}
.rhwt-btn-next{background:var(--color-onboarding-accent);color:#fff;border:none;}
.rhwt-btn-next.rhwt-btn-final{width:190px;}
.rhwt-copy{font-size:18px;font-weight:300;line-height:1.6;color:#ffffff;text-align:center;margin:0 0 1.5rem;}
@keyframes rhwtFadeIn{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:translateY(0);}}
@keyframes rhwtRowIn{from{opacity:0;transform:translateX(-14px);}to{opacity:1;transform:translateX(0);}}
@keyframes rhwtPopIn{from{opacity:0;transform:scale(0.4);}to{opacity:1;transform:scale(1);}}
.rhwt-fadein{animation:rhwtFadeIn 0.8s ease-out both;}
.rhwt-panel{animation:rhwtFadeIn 0.6s ease-out both;animation-delay:1.1s;opacity:0;}
@media(max-width:520px){.rhwt-card{width:calc(100vw - 32px);max-width:400px;min-height:0;height:505px;padding:1.1rem 1.4rem 1.25rem;margin:0 auto;}.rhwt-copy{font-size:16px;}:root{--rhwt-card-pad-x:1.4rem;}}

/* Step 1 / 18 — full-bleed intro/outro tour image */
.rhwt-tour-image-wrap{position:relative;display:block;width:calc(100% + (2 * var(--rhwt-card-pad-x)));margin-left:calc(-1 * var(--rhwt-card-pad-x));margin-right:calc(-1 * var(--rhwt-card-pad-x));margin-top:1rem;margin-bottom:1rem;aspect-ratio:1000/400;overflow:hidden;}
.rhwt-tour-image{display:block;width:100%;height:100%;object-fit:cover;}
.rhwt-tour-image-veil{position:absolute;inset:0;background:var(--navy);animation:rhwtVeilOut 0.7s ease-out both;}
@keyframes rhwtVeilOut{from{opacity:1;}to{opacity:0;}}
.s1-copy{animation:rhwtFadeIn 0.8s ease-out both;animation-delay:1.1s;opacity:0;}

/* Step 2 — layout diagram */
@keyframes s2box{from{opacity:0;}to{opacity:1;}}
@keyframes s2pulse{0%,100%{box-shadow:0 0 0 0 rgba(84,105,136,0.5);}50%{box-shadow:0 0 0 6px rgba(84,105,136,0);}}
.s2-filters{animation:s2pulse 1.6s ease-out 2s 2;}
.s2-map{opacity:0;animation:s2box 0.6s ease-out both,s2pulse 1.6s ease-out 3.8s 2;animation-delay:3s,3.8s;}

/* Step 3 — clusters */
@keyframes s3pop{from{opacity:0;transform:scale(0.4);}to{opacity:1;transform:scale(1);}}
.s3-c{opacity:0;animation:s3pop 0.5s cubic-bezier(0.34,1.56,0.64,1) both;}
.s3-c1{animation-delay:1.5s;}.s3-c2{animation-delay:1.65s;}.s3-c3{animation-delay:1.8s;}.s3-c4{animation-delay:1.95s;}
.s3-c5{animation-delay:2.1s;}.s3-c6{animation-delay:2.25s;}.s3-c7{animation-delay:2.4s;}.s3-c8{animation-delay:2.55s;}

/* Step 4 — click cluster / scroll zoom */
@keyframes s4click{0%{top:30px;left:60px;opacity:0;}15%{opacity:1;}40%{top:70px;left:110px;}48%{transform:scale(0.8);}56%{transform:scale(1);}100%{top:70px;left:110px;opacity:1;}}
@keyframes s4pulse{0%,40%{opacity:1;transform:scale(1);}48%{transform:scale(0.82);}56%{transform:scale(1);}70%,100%{opacity:0;transform:scale(1.3);}}
@keyframes s4reveal{0%,55%{opacity:0;transform:scale(0.3) translate(0,0);}75%,100%{opacity:1;transform:scale(1) translate(var(--dx),var(--dy));}}
@keyframes s4scroll{0%,100%{transform:translateY(0);opacity:1;}50%{transform:translateY(6px);opacity:0.3;}}
.s4-cursor{position:absolute;z-index:5;animation:s4click 3.4s ease-in-out infinite;animation-delay:1.6s;opacity:0;}
.s4-orig{animation:s4pulse 3.4s ease-in-out infinite;animation-delay:1.6s;}
.s4-dot{position:absolute;top:70px;left:110px;width:11px;height:11px;margin-left:-5.5px;margin-top:-5.5px;border-radius:50%;background:#2E9E5B;border:2px solid #ffffff;opacity:0;animation:s4reveal 3.4s ease-in-out infinite;animation-delay:1.6s;}
.s4-scrolldot{animation:s4scroll 1.2s ease-in-out infinite;}
.s4-scrolldot:nth-child(2){animation-delay:0.2s;}

/* Step 5 — drag pan */
@keyframes s5drift{0%,10%{transform:translateX(0);}55%,70%{transform:translateX(-70px);}100%{transform:translateX(0);}}
@keyframes s5cursor{0%,10%{transform:translateX(0);opacity:0;}14%{opacity:1;}55%,70%{transform:translateX(-70px);opacity:1;}92%,100%{transform:translateX(0);opacity:0;}}
@keyframes s5press{0%,12%{opacity:0.5;}18%,72%{opacity:1;}80%,100%{opacity:0.5;}}
.s5-dots{animation:s5drift 3.6s ease-in-out infinite;animation-delay:1.6s;}
.s5-cursor{position:absolute;top:78px;left:154px;z-index:5;animation:s5cursor 3.6s ease-in-out infinite;animation-delay:1.6s;opacity:0;}
.s5-lbtn{animation:s5press 3.6s ease-in-out infinite;animation-delay:1.6s;}
.s5-dot{position:absolute;width:12px;height:12px;border-radius:50%;background:#2E9E5B;border:2px solid #ffffff;}

/* Step 6 — city popup */
@keyframes s6pulse{0%,35%{transform:scale(1);}42%{transform:scale(0.75);}50%,100%{transform:scale(1);}}
@keyframes s6cursor{0%{opacity:0;transform:scale(1);}12%{opacity:1;}35%{transform:scale(1);}42%{transform:scale(0.85);}50%{transform:scale(1);}88%,100%{opacity:1;}}
@keyframes s6popup{0%,42%{opacity:0;transform:scale(0.85) translateY(6px);}58%,88%{opacity:1;transform:scale(1) translateY(0);}96%,100%{opacity:0;transform:scale(0.9) translateY(4px);}}
.s6-dot{animation:s6pulse 4.5s ease-in-out infinite;animation-delay:1.6s;}
.s6-cursor{position:absolute;top:76px;left:150px;z-index:6;animation:s6cursor 4.5s ease-in-out infinite;animation-delay:1.6s;opacity:0;}
.s6-popup{animation:s6popup 4.5s ease-in-out infinite;animation-delay:1.6s;opacity:0;}

/* Step 7 — search city */
@keyframes s7type{0%,8%{width:0;}55%,100%{width:100%;}}
@keyframes s7jump{0%,58%{opacity:0;transform:scale(0.9);}72%,92%{opacity:1;transform:scale(1);}100%{opacity:1;transform:scale(1);}}
@keyframes s7label{0%,64%{opacity:0;transform:translateY(4px);}78%,100%{opacity:1;transform:translateY(0);}}
.s7-typed{display:inline-block;overflow:hidden;white-space:nowrap;border-right:2px solid var(--navy);animation:s7type 4.2s steps(13) infinite;animation-delay:1.6s;width:0;vertical-align:bottom;}
.s7-dot{animation:s7jump 4.2s ease-out infinite;animation-delay:1.6s;opacity:0;}
.s7-label{animation:s7label 4.2s ease-out infinite;animation-delay:1.6s;opacity:0;}

/* Step 8 — search state */
@keyframes s8type{0%,8%{width:0;}55%,100%{width:100%;}}
@keyframes s8dot{0%,58%{opacity:0;transform:scale(0.3);}100%{opacity:1;transform:scale(1);}}
.s8-typed{display:inline-block;overflow:hidden;white-space:nowrap;border-right:2px solid var(--navy);animation:s8type 4.6s steps(6) infinite;animation-delay:1.6s;width:0;vertical-align:bottom;}
.s8-dot{position:absolute;width:10px;height:10px;border-radius:50%;background:#2E9E5B;border:var(--border-width-standard) solid #ffffff;animation:s8dot 4.6s cubic-bezier(0.34,1.56,0.64,1) infinite;animation-delay:1.6s;opacity:0;}

/* Step 9a — filter intro rows */
.s9-row{opacity:0;animation:rhwtRowIn 0.6s ease-out both;}
.s9-r1{animation-delay:1.5s;}.s9-r2{animation-delay:1.75s;}.s9-r3{animation-delay:2.0s;}

/* Step 9b — single filter drag */
@keyframes s9bthumb{0%,15%{left:94%;}60%,100%{left:6%;}}
@keyframes s9bfill{0%,15%{width:94%;}60%,100%{width:6%;}}
@keyframes s9bcursor{0%,10%{opacity:0;}15%{opacity:1;}60%,88%{opacity:1;}96%,100%{opacity:0;}}
@keyframes s9bn1{0%,16%{opacity:1;}17%,100%{opacity:0;}}
@keyframes s9bn2{0%,16%{opacity:0;}17%,28%{opacity:1;}29%,100%{opacity:0;}}
@keyframes s9bn3{0%,28%{opacity:0;}29%,40%{opacity:1;}41%,100%{opacity:0;}}
@keyframes s9bn4{0%,40%{opacity:0;}41%,52%{opacity:1;}53%,100%{opacity:0;}}
@keyframes s9bn5{0%,52%{opacity:0;}53%,100%{opacity:1;}}
.s9b-thumb{position:absolute;top:50%;left:94%;transform:translate(-50%,-50%);animation:s9bthumb 4.4s ease-in-out infinite;animation-delay:1.6s;}
.s9b-fill{width:94%;animation:s9bfill 4.4s ease-in-out infinite;animation-delay:1.6s;}
.s9b-cursor{position:absolute;top:-6px;left:50%;transform:translateX(-50%);animation:s9bcursor 4.4s ease-in-out infinite;animation-delay:1.6s;opacity:0;z-index:5;}
.s9b-num{position:absolute;top:0;left:0;width:100%;}
.s9b-n1{animation:s9bn1 4.4s step-end infinite;animation-delay:1.6s;opacity:0;}
.s9b-n2{animation:s9bn2 4.4s step-end infinite;animation-delay:1.6s;opacity:0;}
.s9b-n3{animation:s9bn3 4.4s step-end infinite;animation-delay:1.6s;opacity:0;}
.s9b-n4{animation:s9bn4 4.4s step-end infinite;animation-delay:1.6s;opacity:0;}
.s9b-n5{animation:s9bn5 4.4s step-end infinite;animation-delay:1.6s;opacity:0;}

/* Step 10 — double filter */
@keyframes s10min{0%,16%{left:5%;}40%,100%{left:35%;}}
@keyframes s10max{0%,48%{left:95%;}72%,100%{left:65%;}}
@keyframes s10fl{0%,16%{left:5%;}40%,100%{left:35%;}}
@keyframes s10fr{0%,48%{right:5%;}72%,100%{right:35%;}}
@keyframes s10ca{0%,14%{opacity:0;}16%,40%{opacity:1;}46%,100%{opacity:0;}}
@keyframes s10cb{0%,46%{opacity:0;}48%,72%{opacity:1;}78%,100%{opacity:0;}}
@keyframes s10n1{0%,40%{opacity:1;}41%,100%{opacity:0;}}
@keyframes s10n2{0%,40%{opacity:0;}41%,72%{opacity:1;}73%,100%{opacity:0;}}
@keyframes s10n3{0%,72%{opacity:0;}73%,100%{opacity:1;}}
.s10-min{position:absolute;top:50%;left:5%;transform:translate(-50%,-50%);animation:s10min 6.4s ease-in-out infinite;animation-delay:1.6s;}
.s10-max{position:absolute;top:50%;left:95%;transform:translate(-50%,-50%);animation:s10max 6.4s ease-in-out infinite;animation-delay:1.6s;}
.s10-fill{position:absolute;top:0;left:5%;right:5%;height:6px;background:var(--color-onboarding-accent);animation:s10fl 6.4s ease-in-out infinite,s10fr 6.4s ease-in-out infinite;animation-delay:1.6s,1.6s;}
.s10-ca{animation:s10ca 6.4s ease-in-out infinite;animation-delay:1.6s;opacity:0;}
.s10-cb{animation:s10cb 6.4s ease-in-out infinite;animation-delay:1.6s;opacity:0;}
.s10-num{position:absolute;top:0;left:0;width:100%;}
.s10-n1{animation:s10n1 6.4s step-end infinite;animation-delay:1.6s;opacity:0;}
.s10-n2{animation:s10n2 6.4s step-end infinite;animation-delay:1.6s;opacity:0;}
.s10-n3{animation:s10n3 6.4s step-end infinite;animation-delay:1.6s;opacity:0;}

/* Step 12 — filter reset */
@keyframes s12cursor{0%,18%{opacity:0;top:135px;left:70%;}24%{opacity:1;top:135px;left:70%;}34%{top:178px;left:50%;}42%{transform:translate(-50%,-50%) scale(0.85);}50%{transform:translate(-50%,-50%) scale(1);}88%,100%{opacity:0;top:178px;left:50%;}}
@keyframes s12wf1{0%,40%{width:15%;}55%,100%{width:100%;}}
@keyframes s12wf2{0%,40%{width:55%;}55%,100%{width:100%;}}
@keyframes s12wf3{0%,40%{width:35%;}55%,100%{width:100%;}}
@keyframes s12press{0%,38%{transform:scale(1);}42%{transform:scale(0.94);}50%,100%{transform:scale(1);}}
@keyframes s12n1{0%,55%{opacity:1;}56%,100%{opacity:0;}}
@keyframes s12n2{0%,55%{opacity:0;}56%,100%{opacity:1;}}
.s12-cursor{position:absolute;z-index:6;animation:s12cursor 5.4s ease-in-out infinite;animation-delay:1.6s;transform:translate(-50%,-50%);}
.s12-wf{width:15%;animation:s12wf1 5.4s ease-in-out infinite;animation-delay:1.6s;}
.s12-cost{width:55%;animation:s12wf2 5.4s ease-in-out infinite;animation-delay:1.6s;}
.s12-pop{width:35%;animation:s12wf3 5.4s ease-in-out infinite;animation-delay:1.6s;}
.s12-btn{animation:s12press 5.4s ease-in-out infinite;animation-delay:1.6s;display:inline-block;}
.s12-num{position:absolute;top:0;left:0;width:100%;}
.s12-n1{animation:s12n1 5.4s step-end infinite;animation-delay:1.6s;opacity:0;}
.s12-n2{animation:s12n2 5.4s step-end infinite;animation-delay:1.6s;opacity:0;}

/* Step 13a — favorites intro */
@keyframes s13aheart{0%,30%{transform:scale(1);}36%{transform:scale(1.45);}42%{transform:scale(1);}48%{transform:scale(1.3);}56%,100%{transform:scale(1);}}
@keyframes s13abadge{0%,58%{opacity:0;transform:scale(0.2);}72%,100%{opacity:1;transform:scale(1);}}
@keyframes s13aglow{0%,60%{box-shadow:0 0 0 0 rgba(84,105,136,0);}75%{box-shadow:0 0 0 12px rgba(84,105,136,0.35);}90%,100%{box-shadow:0 0 0 0 rgba(84,105,136,0);}}
.s13a-heart{display:inline-block;transform-origin:center;animation:s13aheart 3.4s ease-in-out infinite;animation-delay:1.6s;}
.s13a-badge{display:inline-block;animation:s13abadge 3.4s ease-out infinite;animation-delay:1.6s;opacity:0;}
.s13a-btn{animation:s13aglow 3.4s ease-out infinite;animation-delay:1.6s;}

/* Step 13b — favorites how-to */
@keyframes s13bpopup{0%,74%{opacity:1;}88%,100%{opacity:0;}}
@keyframes s13bcursor{0%,14%{opacity:0;transform:translate(-15%,-15%) scale(1);}20%{opacity:1;}26%{transform:translate(-15%,-15%) scale(1);}30%{transform:translate(-15%,-15%) scale(0.8);}34%{transform:translate(-15%,-15%) scale(1);}70%{opacity:1;}74%,100%{opacity:0;}}
@keyframes s13bheartout{0%,30%{opacity:1;}31%,100%{opacity:0;}}
@keyframes s13bheartfill{0%,30%{opacity:0;}31%,100%{opacity:1;}}
@keyframes s13bbtndef{0%,30%{opacity:1;}31%,100%{opacity:0;}}
@keyframes s13bbtnadd{0%,30%{opacity:0;}31%,100%{opacity:1;}}
.s13b-popup{position:relative;animation:s13bpopup 4.6s ease-in-out infinite;animation-delay:1.6s;}
.s13b-cursor{position:absolute;z-index:6;transform:translate(-15%,-15%);opacity:0;animation:s13bcursor 4.6s ease-in-out infinite;animation-delay:1.6s;}
.s13b-heartout{position:absolute;top:0;left:0;animation:s13bheartout 4.6s step-end infinite;animation-delay:1.6s;}
.s13b-heartfill{position:absolute;top:0;left:0;font-size:18px;line-height:1;opacity:0;animation:s13bheartfill 4.6s step-end infinite;animation-delay:1.6s;}
.s13b-btndef{animation:s13bbtndef 4.6s step-end infinite;animation-delay:1.6s;}
.s13b-btnadd{position:absolute;top:0;left:0;width:100%;opacity:0;animation:s13bbtnadd 4.6s step-end infinite;animation-delay:1.6s;}

/* Step 15 — favorites list */
.s15-row{opacity:0;animation:rhwtFadeIn 0.5s ease-out both;}
.s15-r1{animation-delay:1.5s;}.s15-r2{animation-delay:1.68s;}.s15-r3{animation-delay:1.86s;}.s15-r4{animation-delay:2.04s;}
.s15-share{opacity:0;animation:rhwtFadeIn 0.5s ease-out both;animation-delay:2.3s;}

/* Step 16 — compare intro */
@keyframes s16a{0%,52%{opacity:1;}62%,100%{opacity:0;}}
@keyframes s16b{0%,52%{opacity:0;}62%,100%{opacity:1;}}
@keyframes s16cursor{0%,20%{opacity:0;}26%{opacity:1;}44%{transform:translate(-50%,-50%) scale(1);}48%{transform:translate(-50%,-50%) scale(0.85);}52%,100%{transform:translate(-50%,-50%) scale(1);opacity:1;}}
@keyframes s16press{0%,44%{transform:scale(1);}48%{transform:scale(0.96);}52%,100%{transform:scale(1);}}
.s16-scenea{animation:s16a 5s ease-in-out infinite;animation-delay:1.6s;}
.s16-sceneb{position:absolute;top:0;left:0;width:100%;animation:s16b 5s ease-in-out infinite;animation-delay:1.6s;opacity:0;}
.s16-cursor{position:absolute;z-index:6;animation:s16cursor 5s ease-in-out infinite;animation-delay:1.6s;transform:translate(-50%,-50%);opacity:0;}
.s16-btn{animation:s16press 5s ease-in-out infinite;animation-delay:1.6s;}

/* Step 17 — compare how-to */
@keyframes s17ca{0%,10%{opacity:0;}15%{opacity:1;}25%{transform:translate(-50%,-50%) scale(1);}28%{transform:translate(-50%,-50%) scale(0.85);}31%,44%{transform:translate(-50%,-50%) scale(1);opacity:1;}48%,100%{opacity:0;}}
@keyframes s17cb{0%,50%{opacity:0;}55%{opacity:1;}65%{transform:translate(-50%,-50%) scale(1);}68%{transform:translate(-50%,-50%) scale(0.85);}71%,83%{transform:translate(-50%,-50%) scale(1);opacity:1;}87%,100%{opacity:0;}}
@keyframes s17ea{0%,30%{opacity:1;}33%,100%{opacity:0;}}
@keyframes s17fa{0%,30%{opacity:0;}33%,100%{opacity:1;}}
@keyframes s17eb{0%,70%{opacity:1;}73%,100%{opacity:0;}}
@keyframes s17fb{0%,70%{opacity:0;}73%,100%{opacity:1;}}
.s17-cursorA{position:absolute;z-index:6;animation:s17ca 7.5s ease-in-out infinite;animation-delay:1.6s;transform:translate(-50%,-50%);opacity:0;}
.s17-cursorB{position:absolute;z-index:6;animation:s17cb 7.5s ease-in-out infinite;animation-delay:1.6s;transform:translate(-50%,-50%);opacity:0;}
.s17-colAempty{animation:s17ea 7.5s step-end infinite;animation-delay:1.6s;}
.s17-colAfilled{position:absolute;top:0;left:0;width:100%;height:100%;animation:s17fa 7.5s step-end infinite;animation-delay:1.6s;opacity:0;}
.s17-colBempty{animation:s17eb 7.5s step-end infinite;animation-delay:1.6s;}
.s17-colBfilled{position:absolute;top:0;left:0;width:100%;height:100%;animation:s17fb 7.5s step-end infinite;animation-delay:1.6s;opacity:0;}
.s17-cell{display:flex;align-items:center;justify-content:center;}
.s17-val-a{animation:s17fa 7.5s step-end infinite;animation-delay:1.6s;opacity:0;}
.s17-val-b{animation:s17fb 7.5s step-end infinite;animation-delay:1.6s;opacity:0;}
/* ═══ Mobile walkthrough (wm-) animations ═══ */
@keyframes wmFadeIn{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:translateY(0);}}
.wm-copy{animation:wmFadeIn 0.8s ease-out both;}
.wm-panel{animation:wmFadeIn 0.6s ease-out both;animation-delay:1.1s;opacity:0;}

/* Step 2 — layout diagram (map top / filters bottom) */
@keyframes wm2box{from{opacity:0;}to{opacity:1;}}
@keyframes wm2pulse{0%,100%{box-shadow:0 0 0 0 rgba(84,105,136,0.5);}50%{box-shadow:0 0 0 6px rgba(84,105,136,0);}}
.wm2-map{animation:wm2pulse 1.6s ease-out 2s 2;}
.wm2-filters{opacity:0;animation:wm2box 0.6s ease-out both,wm2pulse 1.6s ease-out 3.8s 2;animation-delay:3s,3.8s;}

/* Step 4 — tap cluster / pinch */
@keyframes wm4tap{0%{top:26px;left:50px;opacity:0;}15%{opacity:1;}40%{top:66px;left:100px;}48%{transform:scale(0.8);}56%{transform:scale(1);}100%{top:66px;left:100px;opacity:1;}}
@keyframes wm4pulse{0%,40%{opacity:1;transform:scale(1);}48%{transform:scale(0.82);}56%{transform:scale(1);}70%,100%{opacity:0;transform:scale(1.3);}}
@keyframes wm4reveal{0%,55%{opacity:0;transform:scale(0.3) translate(0,0);}75%,100%{opacity:1;transform:scale(1) translate(var(--dx),var(--dy));}}
@keyframes wm4pinch{0%,100%{transform:translateX(0);}50%{transform:translateX(var(--px));}}
.wm4-tap{position:absolute;z-index:5;animation:wm4tap 3.4s ease-in-out infinite;animation-delay:1.6s;opacity:0;}
.wm4-orig{animation:wm4pulse 3.4s ease-in-out infinite;animation-delay:1.6s;}
.wm4-dot{position:absolute;top:66px;left:100px;width:10px;height:10px;margin-left:-5px;margin-top:-5px;border-radius:50%;background:#2E9E5B;border:var(--border-width-standard) solid #fff;opacity:0;animation:wm4reveal 3.4s ease-in-out infinite;animation-delay:1.6s;}
.wm4-finger{position:absolute;top:50%;width:14px;height:14px;margin-top:-7px;border-radius:50%;background:var(--color-onboarding-accent);animation:wm4pinch 1.6s ease-in-out infinite;}

/* Step 5 — drag pan */
@keyframes wm5drift{0%,10%{transform:translateX(0);}55%,70%{transform:translateX(-58px);}100%{transform:translateX(0);}}
@keyframes wm5finger{0%,10%{transform:translateX(0);opacity:0;}14%{opacity:1;}55%,70%{transform:translateX(-58px);opacity:1;}92%,100%{transform:translateX(0);opacity:0;}}
@keyframes wm5ripple{0%,100%{transform:scale(1);opacity:0.9;}50%{transform:scale(1.15);opacity:0.5;}}
.wm5-dots{animation:wm5drift 3.6s ease-in-out infinite;animation-delay:1.6s;}
.wm5-finger{position:absolute;top:66px;left:130px;z-index:5;animation:wm5finger 3.6s ease-in-out infinite;animation-delay:1.6s;}
.wm5-touchdot{width:22px;height:22px;margin:-11px 0 0 -11px;border-radius:50%;background:var(--color-onboarding-accent);border:3px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,0.35);animation:wm5ripple 1.4s ease-in-out infinite;}
.wm5-dot{position:absolute;width:11px;height:11px;border-radius:50%;background:#2E9E5B;border:var(--border-width-standard) solid #fff;}

/* Step 6 — city info */
@keyframes wm6green{0%,44%{opacity:1;transform:scale(1);}50%{transform:scale(0.75);}56%,100%{opacity:0;}}
@keyframes wm6orange{0%,50%{opacity:0;}56%,100%{opacity:1;transform:scale(1);}}
@keyframes wm6touch{0%,20%{opacity:0;transform:scale(1.3);}30%{opacity:1;transform:scale(1);}44%{transform:scale(1);}50%{transform:scale(0.75);}56%{transform:scale(1);}94%,100%{opacity:1;}}
@keyframes wm6popup{0%,52%{opacity:0;transform:scale(0.85) translateY(6px);}66%,90%{opacity:1;transform:scale(1) translateY(0);}96%,100%{opacity:0;transform:scale(0.9) translateY(4px);}}
.wm6-green{position:absolute;top:100px;left:150px;width:16px;height:16px;margin-left:-8px;margin-top:-8px;border-radius:50%;background:#2E9E5B;border:2px solid #fff;animation:wm6green 5.4s ease-in-out infinite;animation-delay:1.6s;z-index:4;}
.wm6-orange{position:absolute;top:100px;left:150px;width:16px;height:16px;margin-left:-8px;margin-top:-8px;border-radius:50%;background:var(--color-onboarding-accent);border:2px solid #fff;opacity:0;animation:wm6orange 5.4s ease-in-out infinite;animation-delay:1.6s;z-index:4;}
.wm6-touch{position:absolute;top:100px;left:150px;z-index:5;width:22px;height:22px;margin:-11px 0 0 -11px;border-radius:50%;background:rgba(84,105,136,0.5);border:3px solid var(--color-onboarding-accent);animation:wm6touch 5.4s ease-in-out infinite;animation-delay:1.6s;opacity:0;}
.wm6-popup{position:absolute;z-index:6;animation:wm6popup 5.4s ease-in-out infinite;animation-delay:1.6s;opacity:0;}

/* Steps 7/8 — menu -> search -> map */
@keyframes wm78type7{0%,8%{width:0;}34%,100%{width:100%;}}
@keyframes wm8type{0%,8%{width:0;}34%,100%{width:100%;}}
@keyframes wm78sceneA{0%,50%{opacity:1;}58%,100%{opacity:0;}}
@keyframes wm78sceneB{0%,60%{opacity:0;}68%,95%{opacity:1;}100%{opacity:0;}}
@keyframes wm78touch{0%,10%{opacity:0;transform:scale(1.3);}16%{opacity:1;transform:scale(1);}22%{transform:scale(0.75);}26%{transform:scale(1);}32%,100%{opacity:0;}}
@keyframes wm78search{0%,20%{opacity:0;transform:translateY(-6px);}28%,100%{opacity:1;transform:translateY(0);}}
@keyframes wm7dot{0%,66%{opacity:0;transform:scale(0.5);}76%,100%{opacity:1;transform:scale(1);}}
@keyframes wm7label{0%,70%{opacity:0;transform:translateY(4px);}80%,100%{opacity:1;transform:translateY(0);}}
@keyframes wm8dotpop{0%,70%{opacity:0;transform:scale(0.3);}100%{opacity:1;transform:scale(1);}}
.wm7-typed{display:inline-block;overflow:hidden;white-space:nowrap;border-right:2px solid var(--navy);animation:wm78type7 9s steps(13) infinite;animation-delay:1.6s;width:0;vertical-align:bottom;}
.wm8-typed{display:inline-block;overflow:hidden;white-space:nowrap;border-right:2px solid var(--navy);animation:wm8type 9s steps(6) infinite;animation-delay:1.6s;width:0;vertical-align:bottom;}
.wm78-sceneA{animation:wm78sceneA 9s ease-in-out infinite;animation-delay:1.6s;}
.wm78-sceneB{position:absolute;top:0;left:0;width:100%;height:100%;animation:wm78sceneB 9s ease-in-out infinite;animation-delay:1.6s;opacity:0;}
.wm8-sceneA{animation:wm78sceneA 9s ease-in-out infinite;animation-delay:1.6s;}
.wm8-sceneB{position:absolute;top:0;left:0;width:100%;height:100%;animation:wm78sceneB 9s ease-in-out infinite;animation-delay:1.6s;opacity:0;}
.wm78-touch{position:absolute;z-index:6;width:24px;height:24px;margin:-12px 0 0 -12px;border-radius:50%;background:rgba(84,105,136,0.55);border:3px solid var(--color-onboarding-accent);animation:wm78touch 9s ease-in-out infinite;animation-delay:1.6s;opacity:0;}
.wm8-touch{position:absolute;z-index:6;width:24px;height:24px;margin:-12px 0 0 -12px;border-radius:50%;background:rgba(84,105,136,0.55);border:3px solid var(--color-onboarding-accent);animation:wm78touch 9s ease-in-out infinite;animation-delay:1.6s;opacity:0;}
.wm78-searchbar{animation:wm78search 9s ease-out infinite;animation-delay:1.6s;opacity:0;}
.wm8-searchbar{animation:wm78search 9s ease-out infinite;animation-delay:1.6s;opacity:0;}
.wm7-dot{animation:wm7dot 9s ease-out infinite;animation-delay:1.6s;opacity:0;}
.wm7-label{animation:wm7label 9s ease-out infinite;animation-delay:1.6s;opacity:0;}
.wm8-dot{position:absolute;width:9px;height:9px;border-radius:50%;background:#2E9E5B;border:var(--border-width-standard) solid #fff;animation:wm8dotpop 9s cubic-bezier(0.34,1.56,0.64,1) infinite;animation-delay:1.6s;opacity:0;}

/* Step 9 — filter sheet */
@keyframes wm9sheet{from{opacity:0;transform:translateY(20px);}to{opacity:1;transform:translateY(0);}}
@keyframes wm9row{from{opacity:0;transform:translateX(-14px);}to{opacity:1;transform:translateX(0);}}
.wm9-sheet{animation:wm9sheet 0.6s ease-out both;animation-delay:1.1s;opacity:0;}
.wm9-row{opacity:0;animation:wm9row 0.6s ease-out both;}
.wm9-r1{animation-delay:1.6s;}.wm9-r2{animation-delay:1.85s;}.wm9-r3{animation-delay:2.1s;}

/* Step 10 — single filter drag */
@keyframes wm10thumb{0%,15%{left:94%;}60%,100%{left:6%;}}
@keyframes wm10fill{0%,15%{width:94%;}60%,100%{width:6%;}}
@keyframes wm10touch{0%,10%{opacity:0;}15%{opacity:1;}60%,88%{opacity:1;}96%,100%{opacity:0;}}
@keyframes wm10n1{0%,16%{opacity:1;}17%,100%{opacity:0;}}
@keyframes wm10n2{0%,16%{opacity:0;}17%,28%{opacity:1;}29%,100%{opacity:0;}}
@keyframes wm10n3{0%,28%{opacity:0;}29%,40%{opacity:1;}41%,100%{opacity:0;}}
@keyframes wm10n4{0%,40%{opacity:0;}41%,52%{opacity:1;}53%,100%{opacity:0;}}
@keyframes wm10n5{0%,52%{opacity:0;}53%,100%{opacity:1;}}
.wm10-sheet{animation:wm9sheet 0.6s ease-out both;animation-delay:1.1s;opacity:0;}
.wm10-thumb{position:absolute;top:50%;left:94%;transform:translate(-50%,-50%);animation:wm10thumb 4.4s ease-in-out infinite;animation-delay:1.6s;}
.wm10-fill{width:94%;animation:wm10fill 4.4s ease-in-out infinite;animation-delay:1.6s;}
.wm10-touch{position:absolute;top:-9px;left:50%;transform:translateX(-50%);width:26px;height:26px;border-radius:50%;background:rgba(84,105,136,0.5);border:3px solid var(--color-onboarding-accent);animation:wm10touch 4.4s ease-in-out infinite;animation-delay:1.6s;opacity:0;}
.wm10-num{position:absolute;top:0;left:0;width:100%;}
.wm10-n1{animation:wm10n1 4.4s step-end infinite;animation-delay:1.6s;opacity:0;}
.wm10-n2{animation:wm10n2 4.4s step-end infinite;animation-delay:1.6s;opacity:0;}
.wm10-n3{animation:wm10n3 4.4s step-end infinite;animation-delay:1.6s;opacity:0;}
.wm10-n4{animation:wm10n4 4.4s step-end infinite;animation-delay:1.6s;opacity:0;}
.wm10-n5{animation:wm10n5 4.4s step-end infinite;animation-delay:1.6s;opacity:0;}

/* Step 11 — double filter drag */
@keyframes wm11min{0%,16%{left:5%;}40%,100%{left:35%;}}
@keyframes wm11max{0%,48%{left:95%;}72%,100%{left:65%;}}
@keyframes wm11fl{0%,16%{left:5%;}40%,100%{left:35%;}}
@keyframes wm11fr{0%,48%{right:5%;}72%,100%{right:35%;}}
@keyframes wm11ta{0%,14%{opacity:0;}16%,40%{opacity:1;}46%,100%{opacity:0;}}
@keyframes wm11tb{0%,46%{opacity:0;}48%,72%{opacity:1;}78%,100%{opacity:0;}}
@keyframes wm11n1{0%,40%{opacity:1;}41%,100%{opacity:0;}}
@keyframes wm11n2{0%,40%{opacity:0;}41%,72%{opacity:1;}73%,100%{opacity:0;}}
@keyframes wm11n3{0%,72%{opacity:0;}73%,100%{opacity:1;}}
.wm11-sheet{animation:wm9sheet 0.6s ease-out both;animation-delay:1.1s;opacity:0;}
.wm11-min{position:absolute;top:50%;left:5%;transform:translate(-50%,-50%);animation:wm11min 6.4s ease-in-out infinite;animation-delay:1.6s;}
.wm11-max{position:absolute;top:50%;left:95%;transform:translate(-50%,-50%);animation:wm11max 6.4s ease-in-out infinite;animation-delay:1.6s;}
.wm11-fill{position:absolute;top:0;left:5%;right:5%;height:6px;background:var(--color-onboarding-accent);animation:wm11fl 6.4s ease-in-out infinite,wm11fr 6.4s ease-in-out infinite;animation-delay:1.6s,1.6s;}
.wm11-ta{position:absolute;top:50%;left:50%;width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:50%;background:rgba(84,105,136,0.5);border:3px solid var(--color-onboarding-accent);animation:wm11ta 6.4s ease-in-out infinite;animation-delay:1.6s;opacity:0;}
.wm11-tb{position:absolute;top:50%;left:50%;width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:50%;background:rgba(84,105,136,0.5);border:3px solid var(--color-onboarding-accent);animation:wm11tb 6.4s ease-in-out infinite;animation-delay:1.6s;opacity:0;}
.wm11-num{position:absolute;top:0;left:0;width:100%;}
.wm11-n1{animation:wm11n1 6.4s step-end infinite;animation-delay:1.6s;opacity:0;}
.wm11-n2{animation:wm11n2 6.4s step-end infinite;animation-delay:1.6s;opacity:0;}
.wm11-n3{animation:wm11n3 6.4s step-end infinite;animation-delay:1.6s;opacity:0;}

/* Step 12 — filter reset */
@keyframes wm12touch{0%,18%{opacity:0;transform:translate(-50%,-50%) scale(1.3);}26%{opacity:1;transform:translate(-50%,-50%) scale(1);}34%{transform:translate(-50%,-50%) scale(0.75);}42%,88%{transform:translate(-50%,-50%) scale(1);opacity:1;}96%,100%{opacity:0;}}
@keyframes wm12wf1{0%,40%{width:15%;}55%,100%{width:100%;}}
@keyframes wm12wf2{0%,40%{width:55%;}55%,100%{width:100%;}}
@keyframes wm12wf3{0%,40%{width:35%;}55%,100%{width:100%;}}
@keyframes wm12press{0%,38%{transform:scale(1);}42%{transform:scale(0.94);}50%,100%{transform:scale(1);}}
@keyframes wm12n1{0%,55%{opacity:1;}56%,100%{opacity:0;}}
@keyframes wm12n2{0%,55%{opacity:0;}56%,100%{opacity:1;}}
.wm12-sheet{position:relative;animation:wm9sheet 0.6s ease-out both;animation-delay:1.1s;opacity:0;}
.wm12-touch{position:absolute;z-index:6;width:30px;height:30px;border-radius:50%;background:rgba(84,105,136,0.5);border:3px solid var(--color-onboarding-accent);animation:wm12touch 5.4s ease-in-out infinite;animation-delay:1.6s;opacity:0;}
.wm12-wf{width:15%;animation:wm12wf1 5.4s ease-in-out infinite;animation-delay:1.6s;}
.wm12-cost{width:55%;animation:wm12wf2 5.4s ease-in-out infinite;animation-delay:1.6s;}
.wm12-pop{width:35%;animation:wm12wf3 5.4s ease-in-out infinite;animation-delay:1.6s;}
.wm12-btn{position:relative;animation:wm12press 5.4s ease-in-out infinite;animation-delay:1.6s;display:inline-block;}
.wm12-num{position:absolute;top:0;left:0;width:100%;}
.wm12-n1{animation:wm12n1 5.4s step-end infinite;animation-delay:1.6s;opacity:0;}
.wm12-n2{animation:wm12n2 5.4s step-end infinite;animation-delay:1.6s;opacity:0;}

/* Step 13 — favorites intro (heart + count) */
@keyframes wm13heart{0%,30%{transform:scale(1);}36%{transform:scale(1.45);}42%{transform:scale(1);}48%{transform:scale(1.3);}56%,100%{transform:scale(1);}}
@keyframes wm13num{0%,58%{opacity:0;transform:translateY(4px);}72%,100%{opacity:1;transform:translateY(0);}}
.wm13-wrap{animation:wmFadeIn 0.6s ease-out both;animation-delay:1.1s;opacity:0;}
.wm13-heart{display:inline-block;transform-origin:center;animation:wm13heart 3.4s ease-in-out infinite;animation-delay:1.6s;}
.wm13-num{display:inline-block;animation:wm13num 3.4s ease-out infinite;animation-delay:1.6s;opacity:0;}

/* Step 14 — favorites how-to */
@keyframes wm14cycle{0%,74%{opacity:1;}88%,100%{opacity:0;}}
@keyframes wm14touch{0%,14%{opacity:0;transform:translate(-50%,-50%) scale(1.3);}20%{opacity:1;transform:translate(-50%,-50%) scale(1);}30%{transform:translate(-50%,-50%) scale(0.75);}34%,70%{transform:translate(-50%,-50%) scale(1);opacity:1;}74%,100%{opacity:0;}}
@keyframes wm14heartout{0%,30%{opacity:1;}31%,100%{opacity:0;}}
@keyframes wm14heartfill{0%,30%{opacity:0;}31%,100%{opacity:1;}}
@keyframes wm14btndef{0%,30%{opacity:1;}31%,100%{opacity:0;}}
@keyframes wm14btnadd{0%,30%{opacity:0;}31%,100%{opacity:1;}}
.wm14-popup{position:relative;animation:wm14cycle 4.6s ease-in-out infinite;animation-delay:1.6s;}
.wm14-touch{position:absolute;z-index:6;width:26px;height:26px;border-radius:50%;background:rgba(84,105,136,0.5);border:3px solid var(--color-onboarding-accent);opacity:0;animation:wm14touch 4.6s ease-in-out infinite;animation-delay:1.6s;}
.wm14-heartout{position:absolute;top:0;left:0;animation:wm14heartout 4.6s step-end infinite;animation-delay:1.6s;}
.wm14-heartfill{position:absolute;top:0;left:0;font-size:20px;line-height:1;opacity:0;animation:wm14heartfill 4.6s step-end infinite;animation-delay:1.6s;}
.wm14-btndef{animation:wm14btndef 4.6s step-end infinite;animation-delay:1.6s;}
.wm14-btnadd{position:absolute;top:0;left:0;width:100%;opacity:0;animation:wm14btnadd 4.6s step-end infinite;animation-delay:1.6s;}

/* Step 15 — favorites list */
.wm15-row{opacity:0;animation:wmFadeIn 0.5s ease-out both;}
.wm15-r1{animation-delay:1.5s;}.wm15-r2{animation-delay:1.68s;}.wm15-r3{animation-delay:1.86s;}.wm15-r4{animation-delay:2.04s;}
.wm15-share{opacity:0;animation:wmFadeIn 0.5s ease-out both;animation-delay:2.3s;}

/* Step 16 — compare intro */
@keyframes wm16sceneA{0%,52%{opacity:1;}62%,100%{opacity:0;}}
@keyframes wm16sceneB{0%,52%{opacity:0;}62%,100%{opacity:1;}}
@keyframes wm16touch{0%,20%{opacity:0;transform:translate(-50%,-50%) scale(1.3);}28%{opacity:1;transform:translate(-50%,-50%) scale(1);}40%{transform:translate(-50%,-50%) scale(0.85);}46%,100%{opacity:0;}}
@keyframes wm16press{0%,44%{transform:scale(1);}48%{transform:scale(0.96);}52%,100%{transform:scale(1);}}
.wm16-sceneA{animation:wm16sceneA 5s ease-in-out infinite;animation-delay:1.6s;}
.wm16-sceneB{position:absolute;top:0;left:0;width:100%;height:100%;animation:wm16sceneB 5s ease-in-out infinite;animation-delay:1.6s;opacity:0;}
.wm16-touch{position:absolute;top:50%;left:50%;z-index:6;width:28px;height:28px;border-radius:50%;background:rgba(84,105,136,0.5);border:3px solid var(--color-onboarding-accent);animation:wm16touch 5s ease-in-out infinite;animation-delay:1.6s;opacity:0;}
.wm16-btn{position:relative;animation:wm16press 5s ease-in-out infinite;animation-delay:1.6s;}

/* Step 17 — compare how-to */
@keyframes wm17ta{0%,10%{opacity:0;transform:translate(-50%,-50%) scale(1.3);}16%{opacity:1;transform:translate(-50%,-50%) scale(1);}24%{transform:translate(-50%,-50%) scale(0.8);}30%,44%{transform:translate(-50%,-50%) scale(1);opacity:1;}48%,100%{opacity:0;}}
@keyframes wm17tb{0%,50%{opacity:0;transform:translate(-50%,-50%) scale(1.3);}56%{opacity:1;transform:translate(-50%,-50%) scale(1);}64%{transform:translate(-50%,-50%) scale(0.8);}70%,83%{transform:translate(-50%,-50%) scale(1);opacity:1;}87%,100%{opacity:0;}}
@keyframes wm17ea{0%,30%{opacity:1;}33%,100%{opacity:0;}}
@keyframes wm17fa{0%,30%{opacity:0;}33%,100%{opacity:1;}}
@keyframes wm17eb{0%,70%{opacity:1;}73%,100%{opacity:0;}}
@keyframes wm17fb{0%,70%{opacity:0;}73%,100%{opacity:1;}}
.wm17-ta{position:absolute;top:50%;left:50%;z-index:6;width:24px;height:24px;border-radius:50%;background:rgba(84,105,136,0.5);border:3px solid var(--color-onboarding-accent);animation:wm17ta 7.5s ease-in-out infinite;animation-delay:1.6s;opacity:0;}
.wm17-tb{position:absolute;top:50%;left:50%;z-index:6;width:24px;height:24px;border-radius:50%;background:rgba(84,105,136,0.5);border:3px solid var(--color-onboarding-accent);animation:wm17tb 7.5s ease-in-out infinite;animation-delay:1.6s;opacity:0;}
.wm17-ea{animation:wm17ea 7.5s step-end infinite;animation-delay:1.6s;}
.wm17-fa{position:absolute;top:0;left:0;width:100%;height:100%;animation:wm17fa 7.5s step-end infinite;animation-delay:1.6s;opacity:0;}
.wm17-eb{animation:wm17eb 7.5s step-end infinite;animation-delay:1.6s;}
.wm17-fb{position:absolute;top:0;left:0;width:100%;height:100%;animation:wm17fb 7.5s step-end infinite;animation-delay:1.6s;opacity:0;}
.wm17-cell{display:flex;align-items:center;justify-content:center;}
.wm17-val-a{animation:wm17fa 7.5s step-end infinite;animation-delay:1.6s;opacity:0;}
.wm17-val-b{animation:wm17fb 7.5s step-end infinite;animation-delay:1.6s;opacity:0;}

/* Steps 1/18 — welcome/goodbye copy (image uses shared .rhwt-tour-image) */
.wm1-copy{animation:wmFadeIn 0.8s ease-out both;animation-delay:1.1s;opacity:0;}
.auth-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.55);z-index:9700;align-items:flex-start;justify-content:center;padding:16px;overflow-y:auto;}
.auth-overlay>div{margin:auto 0;}
.auth-overlay.open{display:flex;}
.auth-modal{width:420px;max-width:100%;background:#fff;border-radius:var(--radius-16);overflow:hidden;box-shadow:0 20px 50px rgba(0,0,0,0.3);}
.pro-modal{width:480px;max-width:100%;background:#fff;border-radius:var(--radius-16);overflow:hidden;box-shadow:0 20px 50px rgba(0,0,0,0.3);}
.auth-hdr{padding:28px 28px 8px;text-align:center;position:relative;}
.auth-close{position:absolute;top:16px;right:16px;background:transparent;border:none;color:#94A3B8;font-size:18px;cursor:pointer;}
.auth-body{padding:20px 28px 8px;display:flex;flex-direction:column;gap:14px;}
.auth-field label{font-size:12.5px;font-weight:600;color:#475569;display:block;margin-bottom:6px;}
.auth-field input{width:100%;box-sizing:border-box;padding:11px 12px;border:1px solid #CBD5E1;border-radius:var(--radius-standard);font-size:14px;font-family:inherit;}
.auth-footer{padding:20px 28px 28px;}
.auth-primary-btn{width:100%;background:var(--color-pro-orange);color:var(--color-dark-orange);border:none;border-radius:var(--radius-standard);padding:14px;font-size:15px;font-weight:700;cursor:pointer;margin-bottom:10px;}
.auth-neutral-btn{width:100%;background:var(--navy);color:#fff;border:none;border-radius:var(--radius-standard);padding:14px;font-size:15px;font-weight:700;cursor:pointer;margin-bottom:10px;}
.auth-primary-btn:disabled{opacity:0.6;cursor:default;}
.auth-switch{text-align:center;font-size:13px;color:#64748B;}
.auth-switch a{color:var(--navy);font-weight:700;text-decoration:none;cursor:pointer;}
.auth-error{background:#FEE2E1;color:#B91C1C;font-size:12.5px;padding:9px 12px;border-radius:var(--radius-standard);display:none;}
.auth-error.show{display:block;}
.pro-modal-v2{width:480px;max-width:100%;background:#fff;border:var(--border-width-standard) solid var(--color-pro-orange);border-radius:var(--radius-18);overflow:hidden;box-shadow:0 20px 50px rgba(0,0,0,0.3);}
.pro-v2-header{display:flex;justify-content:space-between;align-items:center;padding:18px 20px 0;}
.pro-v2-close{width:32px;height:32px;border-radius:50%;background:#e2e8f0;border:none;color:#1e293b;font-size:14px;font-weight:700;cursor:pointer;font-family:inherit;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.pro-v2-skip{background:none;border:none;color:#94A3B8;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;}
.pro-v2-dots{display:flex;gap:6px;}
.pro-v2-dot{width:20px;height:4px;border-radius:var(--radius-2);background:#EDE1CC;transition:background 0.35s ease, transform 0.35s ease;}
.pro-v2-dot.active{background:var(--color-pro-orange);transform:scaleX(1.15);}
/* Two stacked panels, always both present in the DOM. Only one is ever
   "active" (translateX(0), opacity 1) at a time; the other sits fully
   off-screen and invisible until it's populated and slid in. Content
   for the incoming panel is written while it's still off-screen and
   invisible, so there is never a frame where the browser has anything
   unintended to paint — reusing one element for both exit and entry
   caused a visible flash on the illustration and was replaced with this. */
.pro-v2-stage-wrap{position:relative;overflow:hidden;padding:0;}
.pro-v2-panel{position:absolute;top:20px;left:0;right:0;}
.pro-v2-illustration{width:100%;aspect-ratio:1000/350;display:block;object-fit:cover;}
.pro-v2-headline{font-size:23px;font-weight:700;color:var(--navy);line-height:1.3;margin:30px 0 14px;padding:0 24px;text-align:center;}
.pro-v2-copy{font-size:14.5px;color:#475569;line-height:1.6;padding:0 24px;}
.pro-v2-nav{display:flex;justify-content:center;align-items:center;gap:12px;padding:24px 28px 28px;}
.pro-v2-back{font-family:inherit;font-weight:600;border-radius:var(--radius-standard);padding:12px 0;font-size:15px;cursor:pointer;width:150px;background:transparent;color:var(--navy);border:1px solid var(--navy);transition:background 0.2s ease, transform 0.15s ease;}
.pro-v2-back:hover{background:#F1F5F9;}
.pro-v2-back:active{transform:scale(0.96);}
.pro-v2-back:disabled{visibility:hidden;}
.pro-v2-next{font-family:inherit;font-weight:600;border-radius:var(--radius-standard);padding:12px 0;font-size:15px;cursor:pointer;width:150px;background:var(--color-pro-orange);color:#412402;border:none;transition:background 0.2s ease, transform 0.12s ease, box-shadow 0.2s ease;}
.pro-v2-next:hover{background:#fbbf24;box-shadow:0 4px 14px rgba(245,158,11,0.4);}
.pro-v2-next:active{transform:scale(0.96);}
.nav-login-link{display:flex;align-items:center;justify-content:center;background:none;border:1px solid rgba(255,255,255,0.4);color:#ffffff;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;height:36px;padding:0 16px;border-radius:var(--radius-standard);box-sizing:border-box;}

.account-menu{position:relative;display:inline-block;}
.account-pill{display:flex;align-items:center;gap:8px;background:rgba(255,255,255,0.08);border:none;border-radius:var(--radius-20);padding:5px 14px 5px 6px;cursor:pointer;}
.account-avatar{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;background:rgba(255,255,255,0.2);color:#fff;}
.mobile-account-btn{display:none;align-items:center;gap:6px;background:none;border:none;padding:0;cursor:pointer;}
.mobile-account-avatar-btn{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;flex-shrink:0;background:rgba(255,255,255,0.2);color:#fff;}
.account-name{color:#fff;font-size:13px;font-weight:600;}
.account-member-tag{background:#fff;color:var(--navy);font-size:9px;font-weight:700;padding:2px 6px;border-radius:var(--radius-tag);letter-spacing:0.03em;}
.account-dropdown{display:none;position:absolute;top:calc(100% + 8px);right:0;width:220px;background:#fff;border-radius:var(--radius-12);box-shadow:0 8px 24px rgba(0,0,0,0.25);padding:8px;z-index:50;}
.account-dropdown.open{display:block;}
.account-dropdown-header{padding:10px 12px;border-bottom:1px solid #F1F5F9;margin-bottom:4px;}
.account-dropdown-name{font-size:13px;font-weight:700;color:var(--navy);}
.account-dropdown-email{font-size:11.5px;color:#94A3B8;}
.account-dropdown-item{width:100%;text-align:left;background:transparent;border:none;padding:9px 12px;font-size:13px;color:#334155;cursor:pointer;border-radius:var(--radius-6);font-family:inherit;}
.account-dropdown-item:hover{background:#F8FAFC;}
.account-dropdown-item.danger{color:#B91C1C;}
