@import url("https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Noto+Sans+SC:wght@400;500;600;700;900&display=swap");
:root { --paper:#f3f0e8; --paper-2:#e8e4d9; --ink:#171813; --muted:#6c6d66; --line:#cac6bb; --white:#fffef9; --blue:#275be8; --green:#123f2d; --orange:#ff6846; --red:#d23c31; --yellow:#f1d34f; --shadow:0 18px 48px rgba(28,30,24,.1); --radius:18px; --font:"Noto Sans SC","Microsoft YaHei",system-ui,sans-serif; --mono:"DM Mono",Consolas,monospace; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; min-width:320px; min-height:100vh; color:var(--ink); background:var(--paper); font-family:var(--font); -webkit-font-smoothing:antialiased; }
button,input,select,textarea { font:inherit; }
button,select { cursor:pointer; }
a { color:inherit; }
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible { outline:3px solid var(--blue); outline-offset:2px; }
.skip-link { position:fixed; left:12px; top:-60px; z-index:100; padding:12px 16px; color:white; background:var(--ink); }
.skip-link:focus { top:12px; }
.boot-screen { min-height:100vh; display:grid; place-items:center; align-content:center; gap:20px; }
.boot-mark { width:92px; height:92px; border-radius:50%; display:grid; place-items:center; color:white; background:var(--ink); text-align:center; font:500 18px/1.05 var(--mono); }
.boot-screen p { color:var(--muted); font:13px var(--mono); }
.app-shell { min-height:100vh; display:grid; grid-template-columns:228px minmax(0,1fr); }
.sidebar { position:sticky; top:0; z-index:20; height:100vh; padding:22px 18px; display:flex; flex-direction:column; border-right:1px solid var(--line); background:rgba(243,240,232,.95); backdrop-filter:blur(16px); }
.brand { margin-bottom:36px; display:flex; align-items:center; gap:11px; text-decoration:none; }
.brand-mark { width:42px; height:42px; border:1px solid var(--ink); border-radius:50%; display:grid; place-items:center; text-align:center; font:500 10px/1 var(--mono); }
.brand strong { display:block; font-size:15px; letter-spacing:.04em; }
.brand small { display:block; margin-top:2px; color:var(--muted); font:10px var(--mono); }
.nav-kicker,.eyebrow { color:var(--muted); font:500 10px var(--mono); letter-spacing:.14em; text-transform:uppercase; }
.nav-list { list-style:none; margin:10px 0; padding:0; display:grid; gap:5px; }
.nav-link { min-height:44px; padding:0 11px; display:flex; align-items:center; gap:10px; border-radius:10px; color:#555851; text-decoration:none; font-size:13px; transition:background .18s,color .18s; }
.nav-link:hover { color:var(--ink); background:rgba(255,255,255,.58); }
.nav-link.active { color:white; background:var(--ink); }
.nav-index { opacity:.58; font:10px var(--mono); }
.sidebar-bottom { margin-top:auto; }
.data-stamp { padding-top:14px; border-top:1px solid var(--line); }
.data-stamp strong { display:block; font:500 12px var(--mono); }
.data-stamp span { color:var(--muted); font-size:11px; }
.main-shell { min-width:0; }
.topbar { position:sticky; top:0; z-index:15; min-height:64px; padding:0 30px; display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--line); background:rgba(243,240,232,.91); backdrop-filter:blur(14px); }
.crumb { display:flex; align-items:center; gap:8px; color:var(--muted); font-size:12px; }
.crumb strong { color:var(--ink); }
.top-actions { display:flex; align-items:center; gap:8px; }
.live-dot { margin-right:8px; display:inline-flex; align-items:center; gap:7px; font:10px var(--mono); }
.live-dot::before { display:none; }
.page { width:100%; max-width:1600px; margin:0 auto; padding:28px 30px 56px; }
.page-head { margin-bottom:26px; display:flex; justify-content:space-between; align-items:flex-end; gap:28px; }
.page-head h1 { max-width:820px; margin:10px 0 0; font-size:clamp(30px,4vw,56px); line-height:.98; letter-spacing:-.055em; }
.page-head p { max-width:500px; margin:0; color:var(--muted); font-size:13px; line-height:1.7; }
.btn { min-height:40px; padding:0 13px; display:inline-flex; align-items:center; justify-content:center; gap:7px; border:1px solid var(--line); border-radius:9px; color:var(--ink); background:var(--white); text-decoration:none; font-size:12px; transition:transform .15s,background .15s; }
.btn:hover { transform:translateY(-1px); background:white; }
.btn-dark { color:white; border-color:var(--ink); background:var(--ink); }
.btn-dark:hover { background:#30332c; }
.btn-blue { color:white; border-color:var(--blue); background:var(--blue); }
.btn-blue:hover,.btn-blue:focus-visible { color:white; background:#234fd2; }
.btn-ghost { background:transparent; }
.btn[disabled] { opacity:.45; cursor:not-allowed; transform:none; }
.pill { padding:6px 10px; display:inline-flex; align-items:center; gap:6px; border:1px solid var(--line); border-radius:999px; background:rgba(255,255,255,.48); font-size:11px; }
.pill-blue { color:#173ca3; border-color:#bdcaff; background:#e6ebff; }
.overview-grid { display:grid; grid-template-columns:minmax(0,1.55fr) minmax(300px,.75fr); gap:18px; }
.explore-canvas { position:relative; isolation:isolate; min-height:460px; overflow:hidden; touch-action:none; border:1px solid var(--line); border-radius:24px; background:var(--white); box-shadow:var(--shadow); }
.canvas-grid { position:absolute; inset:0; background-image:linear-gradient(rgba(21,23,19,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(21,23,19,.045) 1px,transparent 1px); background-size:32px 32px; mask-image:linear-gradient(to bottom,black 65%,transparent); }
.canvas-copy { position:absolute; z-index:3; top:9%; width:100%; text-align:center; pointer-events:none; }
.canvas-copy small { font:10px var(--mono); }
.canvas-copy h2 { margin:7px 0 5px; font-size:clamp(32px,5vw,68px); line-height:1; letter-spacing:-.06em; }
.canvas-copy p { margin:0; color:var(--muted); font-size:11px; }
.food-stage { position:absolute; right:5%; bottom:5%; left:5%; height:64%; }
.food-chip { --r:0deg; position:absolute; min-width:96px; min-height:56px; padding:10px 14px; display:grid; place-items:center; border:2px solid var(--ink); background:var(--white); box-shadow:6px 7px 0 var(--ink); transform:rotate(var(--r)); user-select:none; font-size:14px; font-weight:700; }
.food-chip small { display:block; opacity:.5; font:8px var(--mono); }
.food-chip:nth-child(1) { left:4%; top:38%; --r:-8deg; }.food-chip:nth-child(2) { left:22%; top:51%; --r:6deg; width:132px; height:132px; border-radius:50%; box-shadow:7px 9px 0 var(--blue); }.food-chip:nth-child(3) { left:44%; top:24%; --r:-3deg; }.food-chip:nth-child(4) { left:61%; top:47%; --r:5deg; color:white; background:var(--ink); }.food-chip:nth-child(5) { right:3%; top:21%; --r:-6deg; }
.data-orb { position:absolute; z-index:5; left:34%; top:37%; width:190px; height:190px; border:1px solid rgba(21,23,19,.48); border-radius:50%; display:grid; place-items:center; background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.96),rgba(255,255,255,.38) 43%,rgba(39,91,232,.12)); box-shadow:inset -18px -20px 25px rgba(21,23,19,.09),0 18px 30px rgba(21,23,19,.18); cursor:grab; user-select:none; }
.orb-center { text-align:center; }.orb-center strong { display:block; font-size:36px; letter-spacing:-.08em; }.orb-center span { font:9px var(--mono); text-transform:uppercase; }
.metrics-stack { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.metric { min-height:132px; padding:15px; display:flex; flex-direction:column; justify-content:space-between; border:1px solid var(--line); border-radius:var(--radius); background:rgba(255,255,255,.48); }
.metric:first-child { grid-column:1/-1; min-height:178px; color:white; background:var(--ink); }
.metric-label { display:flex; justify-content:space-between; gap:8px; opacity:.7; font:10px var(--mono); text-transform:uppercase; }
.metric-value { font-size:clamp(30px,4vw,52px); line-height:1; letter-spacing:-.065em; }.metric-delta { color:var(--green); font-size:10px; }.metric:first-child .metric-delta { color:#76e4bf; }
.section { margin-top:44px; }.section-title { margin-bottom:15px; display:flex; justify-content:space-between; align-items:flex-end; }.section-title h2 { margin:4px 0 0; font-size:clamp(22px,2.4vw,34px); letter-spacing:-.045em; }.section-title p { max-width:420px; color:var(--muted); text-align:right; font-size:11px; }
.chart-grid { display:grid; grid-template-columns:1.15fr .85fr; gap:14px; }.chart-grid.three { grid-template-columns:repeat(3,1fr); }
.panel { min-width:0; padding:18px; border:1px solid var(--line); border-radius:var(--radius); background:rgba(255,255,255,.5); }.panel-dark { color:white; border-color:var(--ink); background:var(--ink); }.panel-head { margin-bottom:18px; display:flex; justify-content:space-between; align-items:center; gap:12px; }.panel-head h3 { margin:0; font-size:14px; }.panel-head span { color:var(--muted); font:9px var(--mono); }.panel-dark .panel-head span { color:#a8aba4; }
.chart { min-height:210px; }.donut-wrap { display:grid; grid-template-columns:180px 1fr; gap:24px; align-items:center; }.donut { position:relative; width:170px; height:170px; border-radius:50%; display:grid; place-items:center; }.donut::after { content:""; position:absolute; width:92px; height:92px; border-radius:50%; background:var(--paper); }.donut-center { position:relative; z-index:1; text-align:center; }.donut-center strong { display:block; font-size:24px; }.donut-center small { font:8px var(--mono); }
.legend,.bars,.factor-list { display:grid; gap:10px; }.legend-row { display:grid; grid-template-columns:9px 1fr auto; align-items:center; gap:8px; font-size:11px; }.legend-dot { width:8px; height:8px; border-radius:50%; }.legend-row span:last-child { color:var(--muted); font:9px var(--mono); }.bar-row { display:grid; grid-template-columns:70px minmax(0,1fr) 44px; align-items:center; gap:9px; font-size:11px; }.bar-track,.factor-track { height:8px; overflow:hidden; border-radius:99px; background:#dedbd2; }.bar-fill,.factor-fill { height:100%; border-radius:inherit; background:var(--ink); }.bar-row strong { text-align:right; font:9px var(--mono); }.spark-svg { width:100%; height:220px; overflow:visible; }.axis-label { fill:#777a73; font:9px var(--mono); }
.filter-bar { margin-bottom:16px; padding:14px; border:1px solid var(--line); border-radius:var(--radius); background:rgba(255,255,255,.52); }.filter-grid { display:grid; grid-template-columns:repeat(4,minmax(120px,1fr)); gap:10px; }.field { min-width:0; display:grid; gap:6px; }.field label,.field-label { color:var(--muted); font:9px var(--mono); letter-spacing:.08em; text-transform:uppercase; }.control { width:100%; height:42px; padding:0 11px; border:1px solid var(--line); border-radius:8px; color:var(--ink); background:var(--white); font-size:12px; }.toggle-row,.tag-list { margin-top:11px; display:flex; flex-wrap:wrap; gap:8px; }.check-pill { position:relative; }.check-pill input { position:absolute; opacity:0; pointer-events:none; }.check-pill span { min-height:34px; padding:0 11px; display:inline-flex; align-items:center; border:1px solid var(--line); border-radius:999px; background:var(--white); font-size:11px; }.check-pill input:checked+span { color:white; border-color:var(--ink); background:var(--ink); }
.ranking-tabs { padding:2px 2px 12px; display:flex; gap:6px; overflow-x:auto; }.ranking-tab { padding:10px 11px; white-space:nowrap; border:0; border-bottom:2px solid transparent; color:var(--muted); background:transparent; font-size:12px; }.ranking-tab.active { color:var(--ink); border-color:var(--ink); font-weight:700; }.table-wrap { overflow:auto; border:1px solid var(--line); border-radius:var(--radius); background:rgba(255,255,255,.55); }.data-table { width:100%; min-width:1040px; border-collapse:collapse; }.data-table th { position:sticky; top:0; z-index:2; padding:12px; color:var(--muted); background:#e8e4da; text-align:left; font:500 9px var(--mono); letter-spacing:.08em; text-transform:uppercase; }.data-table td { padding:12px; border-top:1px solid var(--line); font-size:12px; vertical-align:middle; }.data-table tr:hover td { background:rgba(255,255,255,.68); }.rank-no { font:18px var(--mono); }.rank-no.top { color:var(--blue); font-weight:700; }.merchant-link { max-width:260px; padding:0; border:0; color:var(--ink); background:transparent; text-align:left; font-weight:700; }.merchant-meta { display:block; overflow:hidden; color:var(--muted); white-space:nowrap; text-overflow:ellipsis; font-size:10px; font-weight:400; }.score-badge { min-width:52px; display:inline-flex; align-items:baseline; gap:3px; }.score-badge strong { font:500 18px var(--mono); }.result-line { margin:11px 2px; display:flex; justify-content:space-between; align-items:center; gap:12px; color:var(--muted); font-size:11px; }.result-actions,.row-actions,.drawer-actions { display:flex; align-items:center; flex-wrap:wrap; gap:7px; }.text-button { min-height:30px; padding:3px 0; border:0; border-bottom:1px solid transparent; color:var(--muted); background:transparent; white-space:nowrap; font-size:10px; }.text-button:hover,.text-button:focus-visible,.text-button.active { color:var(--blue); border-color:currentColor; }.row-actions { min-width:104px; }.row-actions .text-button+.text-button { padding-left:8px; border-left:1px solid var(--line); }.drawer-actions { margin:18px 0 4px; }
.map-layout { display:grid; grid-template-columns:minmax(0,1.5fr) minmax(290px,.65fr); gap:14px; }.map-panel { position:relative; min-height:650px; overflow:hidden; border:1px solid var(--line); border-radius:22px; background:#d9ded9; }.real-map-panel #real-map { position:absolute; inset:0; z-index:1; }.map-legend { position:absolute; z-index:6; left:14px; bottom:14px; padding:9px 11px; display:flex; align-items:center; gap:8px; border:1px solid var(--line); border-radius:10px; background:rgba(255,254,249,.92); box-shadow:0 8px 24px rgba(21,23,19,.08); font:9px var(--mono); }.legend-scale { width:100px; height:7px; border-radius:99px; background:linear-gradient(90deg,var(--red),var(--yellow),var(--green)); }.map-loading { position:absolute; inset:0; z-index:2; display:grid; place-items:center; color:var(--muted); background:#dfe5e1; font:11px var(--mono); }
.drawer-backdrop,.modal-backdrop { position:fixed; inset:0; z-index:50; padding:20px; display:flex; justify-content:flex-end; background:rgba(10,12,9,.45); backdrop-filter:blur(4px); }.drawer { width:min(520px,100%); height:100%; overflow:auto; padding:26px; border-radius:20px; background:var(--paper); box-shadow:var(--shadow); }.drawer-head { display:flex; justify-content:space-between; align-items:flex-start; gap:20px; }.drawer-head h2 { margin:7px 0; font-size:28px; }.drawer-address { color:var(--muted); font-size:11px; line-height:1.6; }.detail-score { margin:24px 0; display:grid; grid-template-columns:repeat(4,1fr); border-block:1px solid var(--line); }.detail-stat { padding:18px 8px; border-right:1px solid var(--line); }.detail-stat:last-child { border-right:0; }.detail-stat span { display:block; color:var(--muted); font-size:9px; }.detail-stat strong { display:block; margin-top:7px; font:22px var(--mono); }.review-card { margin:10px 0; padding:16px; border-left:3px solid var(--green); background:rgba(255,255,255,.6); font-size:12px; line-height:1.7; }.review-card small { display:block; margin-top:8px; color:var(--muted); }.modal-backdrop { align-items:center; justify-content:center; }.modal { width:min(1050px,100%); max-height:90vh; overflow:auto; padding:26px; border-radius:20px; background:var(--paper); }.compare-grid { display:grid; grid-template-columns:repeat(var(--cols),minmax(180px,1fr)); overflow:auto; }.compare-col { border-left:1px solid var(--line); }.compare-cell { min-height:88px; padding:14px; border-bottom:1px solid var(--line); }.compare-cell.head { min-height:150px; }.compare-cell h3 { margin:8px 0; }.compare-cell>span { color:var(--muted); font-size:9px; }.compare-cell strong { display:block; margin-top:8px; }
.empty-state { min-height:180px; display:grid; place-items:center; color:var(--muted); text-align:center; font-size:12px; }.empty-state strong { display:block; margin-bottom:8px; color:var(--ink); font-size:16px; }
.factor { display:grid; grid-template-columns:92px 1fr 45px; align-items:center; gap:10px; font-size:11px; }.factor-fill { background:var(--green); }.factor.negative .factor-fill { background:var(--red); }.factor strong { text-align:right; font:10px var(--mono); }
.toast { position:fixed; z-index:100; left:50%; bottom:24px; padding:12px 18px; transform:translateX(-50%); border-radius:9px; color:white; background:var(--ink); box-shadow:var(--shadow); font-size:12px; }
@media (max-width:1050px) { .overview-grid,.map-layout { grid-template-columns:1fr; }.metrics-stack { grid-template-columns:repeat(3,1fr); }.metric:first-child { grid-column:auto; min-height:132px; }.chart-grid.three { grid-template-columns:1fr; }.map-panel { min-height:560px; }.map-navigation { border-left:0; border-top:1px solid var(--line); } }
@media (max-width:760px) { .app-shell { grid-template-columns:minmax(0,1fr); }.sidebar { position:relative; width:100%; height:auto; padding:16px; border-right:0; border-bottom:1px solid var(--line); }.brand { margin-bottom:14px; }.nav-kicker,.sidebar-bottom { display:none; }.nav-list { display:flex; overflow-x:auto; }.nav-link { white-space:nowrap; }.main-shell { min-width:0; }.topbar { padding:0 16px; }.live-dot { display:none; }.page { padding:24px 16px 44px; }.page-head { align-items:flex-start; flex-direction:column; }.overview-grid,.chart-grid,.filter-grid { grid-template-columns:1fr; }.metrics-stack { grid-template-columns:1fr 1fr; }.metric:first-child { grid-column:1/-1; }.donut-wrap { grid-template-columns:1fr; }.donut { margin:auto; }.section-title { align-items:flex-start; flex-direction:column; }.section-title p { text-align:left; }.map-panel { min-height:520px; }.detail-score { grid-template-columns:1fr 1fr; }.detail-stat:nth-child(2) { border-right:0; }.compare-grid { min-width:700px; }.drawer-backdrop,.modal-backdrop { padding:8px; } }
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *,*::before,*::after { transition-duration:.01ms!important; animation-duration:.01ms!important; } }

/* Restaurant ranking feedback */
.score-cell { display:inline-flex; align-items:center; gap:10px; }
.stars { display:inline-flex; align-items:center; gap:3px; color:#aaa398; font-size:16px; line-height:1; }
.star-unit { position:relative; display:inline-block; color:#aaa398; }
.star-unit::before { content:"★"; position:absolute; inset:0 auto 0 0; width:var(--fill); overflow:hidden; color:#e0a020; white-space:nowrap; }
.merchant-link { text-decoration:underline; text-decoration-color:transparent; text-decoration-thickness:1px; text-underline-offset:5px; transition:color .2s ease,text-decoration-color .2s ease; }
.merchant-link:hover,.merchant-link:focus-visible { color:var(--blue); text-decoration-color:currentColor; }
.merchant-link:active { color:var(--green); }

/* AI workspace + saved restaurant interactions */
.score-ring { position:relative; }
.ai-service-line { min-height:42px; margin-bottom:12px; padding:0 3px; display:flex; align-items:center; gap:9px; border-block:1px solid var(--line); color:var(--muted); font-size:10px; }.ai-service-line strong { color:var(--ink); font-size:11px; }.ai-service-line>span:last-child { margin-left:auto; font:9px var(--mono); }.service-dot { width:8px; height:8px; border-radius:50%; background:var(--green); box-shadow:0 0 0 4px rgba(18,63,45,.1); }.service-dot.local { background:var(--yellow); box-shadow:0 0 0 4px rgba(241,211,79,.18); }
.ai-tabs { margin-bottom:18px; display:flex; overflow-x:auto; border-bottom:1px solid var(--line); }.ai-tab { min-height:48px; padding:0 18px; border:0; border-bottom:2px solid transparent; color:var(--muted); background:transparent; white-space:nowrap; font-size:12px; }.ai-tab.active { color:var(--ink); border-color:var(--ink); font-weight:700; }
.ai-layout { display:grid; grid-template-columns:minmax(330px,.72fr) minmax(0,1.28fr); gap:14px; }.form-panel,.ai-result { min-height:470px; }.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:14px 10px; }.field-full { grid-column:1/-1; }.service-fieldset { margin:2px 0 0; padding:10px 0 0; border:0; border-top:1px solid var(--line); }.service-fieldset legend { padding:0; color:var(--muted); font:9px var(--mono); letter-spacing:.08em; text-transform:uppercase; }.service-fieldset .toggle-row { margin-top:8px; }.check-pill input:focus-visible+span { outline:3px solid var(--blue); outline-offset:2px; }.wide { width:100%; }.prediction-hero { min-height:185px; margin-bottom:24px; display:flex; align-items:center; gap:24px; border-bottom:1px solid var(--line); }.prediction-hero h2 { margin:7px 0; font-size:30px; letter-spacing:-.045em; }.score-ring { width:138px; height:138px; flex:0 0 auto; border-radius:50%; display:grid; place-items:center; background:conic-gradient(var(--blue) var(--angle),#d9d5ca 0); }.score-ring::before { content:""; position:absolute; width:112px; height:112px; border-radius:50%; background:var(--paper); }.score-ring>div { position:relative; z-index:1; text-align:center; }.score-ring strong { display:block; font:500 31px var(--mono); }.score-ring span { display:block; margin-top:3px; color:var(--muted); font:8px var(--mono); }.confidence,.model-note { color:var(--muted); font-size:10px; line-height:1.65; }.model-note { margin-top:22px; }.history-list { padding-block:0; }.history-row { min-height:72px; padding:13px 2px; display:flex; align-items:center; justify-content:space-between; gap:14px; border-bottom:1px solid var(--line); }.history-row:last-child { border-bottom:0; }.history-row strong { font-size:12px; }.history-row p { margin:5px 0 0; color:var(--muted); font-size:10px; }.history-score { font:500 22px var(--mono); }.history-empty { padding:26px 0; color:var(--muted); border-block:1px solid var(--line); font-size:11px; }
.profile-section { margin-top:48px; }.profile-strata { border-top:1px solid var(--ink); }.profile-row { min-height:78px; display:grid; grid-template-columns:minmax(180px,.8fr) minmax(180px,1.2fr) minmax(250px,1fr); align-items:center; gap:24px; border-bottom:1px solid var(--line); }.profile-row>div:first-child { display:flex; align-items:center; gap:14px; }.profile-index { color:var(--muted); font:10px var(--mono); }.profile-row strong { font-size:15px; }.profile-measure { height:8px; background:#dedbd2; overflow:hidden; }.profile-measure span { display:block; height:100%; background:var(--blue); }.profile-row:nth-child(2) .profile-measure span { background:var(--green); }.profile-row:nth-child(3) .profile-measure span { background:var(--orange); }.profile-stats { display:flex; justify-content:space-between; gap:18px; color:var(--muted); font:10px var(--mono); }.algorithm-disclosure { margin:14px 0 22px; border-block:1px solid var(--line); }.algorithm-disclosure summary { min-height:58px; display:flex; align-items:center; justify-content:space-between; gap:20px; cursor:pointer; list-style-position:inside; font-size:11px; }.algorithm-disclosure summary strong { font-size:10px; font-weight:500; color:var(--muted); }.algorithm-body { max-width:820px; padding:0 0 20px 18px; }.algorithm-body p { margin:0 0 14px; font-size:11px; line-height:1.7; }.algorithm-body small { display:block; margin-top:10px; color:var(--muted); font-size:9px; line-height:1.6; }.weight-track { height:28px; display:flex; overflow:hidden; color:#fff; font:9px var(--mono); }.weight-track span { display:grid; place-items:center; background:var(--blue); }.weight-track span:nth-child(2) { background:var(--green); }.weight-track span:nth-child(3) { background:var(--orange); }.algorithm-score { font:500 18px var(--mono); }.profile-pill { color:var(--blue); border-color:currentColor; white-space:nowrap; }
.recommend-layout { display:grid; grid-template-columns:minmax(320px,.76fr) minmax(0,1.24fr); min-height:520px; overflow:hidden; border:1px solid var(--line); border-radius:var(--radius); }.recommend-query-panel { padding:30px; color:#fff; background:var(--ink); }.recommend-query-panel .eyebrow,.recommend-query-panel p,.recommend-query-panel .field-label { color:#aaaca5; }.recommend-query-panel h2 { margin:12px 0 24px; font-size:clamp(28px,3vw,42px); line-height:1.06; letter-spacing:-.05em; }.recommend-query-panel p { margin-top:26px; font-size:10px; line-height:1.7; }.recommend-row { display:grid; grid-template-columns:1fr auto; gap:8px; align-items:end; }.recommend-output { min-width:0; padding:26px; background:rgba(255,255,255,.45); }.recommend-results { display:grid; }.recommend-card { min-width:0; padding:18px 0; display:grid; grid-template-columns:38px minmax(0,1fr) auto; align-items:center; gap:14px; border-top:1px solid var(--line); }.recommend-card .number { color:var(--blue); font:500 13px var(--mono); }.recommend-card h4 { margin:0; font-size:14px; }.recommend-card p,.recommend-card small { display:block; margin:5px 0 0; overflow:hidden; color:var(--muted); white-space:nowrap; text-overflow:ellipsis; font-size:10px; }
@media (max-width:1050px) { .ai-layout,.recommend-layout { grid-template-columns:1fr; }.form-panel,.ai-result { min-height:auto; }.recommend-query-panel { min-height:330px; } }
@media (max-width:760px) { .ai-service-line>span:last-child { display:none; }.ai-tab { padding-inline:14px; }.form-grid { grid-template-columns:1fr; }.field-full { grid-column:auto; }.prediction-hero { padding-block:20px; align-items:flex-start; flex-direction:column; }.score-ring { width:124px; height:124px; }.score-ring::before { width:100px; height:100px; }.recommend-query-panel,.recommend-output { padding:22px 16px; }.recommend-row { grid-template-columns:1fr; }.recommend-card { grid-template-columns:32px minmax(0,1fr); }.recommend-card .text-button { grid-column:2; justify-self:start; }.result-line { align-items:flex-start; flex-direction:column; }.result-actions { width:100%; }.result-actions .btn { flex:1; }.drawer-actions .btn { flex:1 1 140px; } }
@media (max-width:760px) { .profile-row { grid-template-columns:1fr; gap:10px; padding:16px 0; }.profile-stats { justify-content:flex-start; flex-wrap:wrap; }.algorithm-disclosure summary { align-items:flex-start; flex-direction:column; justify-content:center; gap:5px; }.algorithm-body { padding-left:0; }.weight-track span { font-size:8px; } }

/* AMap rating points + navigation */
.map-layout-navigation { grid-template-columns:minmax(0,1.7fr) minmax(280px,.58fr); gap:0; overflow:hidden; border:1px solid var(--line); border-radius:22px; background:rgba(255,255,255,.45); }
.map-layout-navigation .map-panel { min-height:690px; border:0; border-radius:0; }
.map-mode-label { position:absolute; z-index:6; top:18px; left:18px; padding:9px 12px; border:1px solid rgba(21,23,19,.14); border-radius:9px; color:var(--ink); background:rgba(255,254,249,.92); box-shadow:0 8px 24px rgba(21,23,19,.08); font:500 10px var(--mono); letter-spacing:.1em; }
.map-zoom { position:absolute; z-index:6; top:18px; right:18px; display:grid; overflow:hidden; border:1px solid rgba(21,23,19,.14); border-radius:9px; background:rgba(255,254,249,.94); box-shadow:0 8px 24px rgba(21,23,19,.08); }
.map-zoom button { width:38px; height:38px; border:0; color:var(--ink); background:transparent; font-size:20px; line-height:1; }
.map-zoom button+button { border-top:1px solid var(--line); }
.map-zoom button:hover,.map-zoom button:focus-visible { color:#fff; background:var(--ink); }
.map-navigation { min-width:0; padding:26px 22px; border-left:1px solid var(--line); background:rgba(245,242,233,.96); }
.navigation-heading { margin-bottom:24px; }.navigation-heading h2 { margin:6px 0 8px; font-size:26px; letter-spacing:-.05em; }.navigation-heading p { margin:0; color:var(--muted); font-size:11px; line-height:1.6; }
.route-place { padding:15px 0; display:grid; grid-template-columns:54px 1fr; gap:12px; border-bottom:1px solid var(--line); }.route-place:first-of-type { margin-top:14px; border-top:1px solid var(--line); }.route-place span { color:var(--muted); font:9px var(--mono); letter-spacing:.08em; text-transform:uppercase; }.route-place strong { overflow:hidden; font-size:11px; white-space:nowrap; text-overflow:ellipsis; }
.route-mode { margin:22px 0 16px; display:grid; grid-template-columns:repeat(3,1fr); border-block:1px solid var(--line); }.route-mode label { position:relative; }.route-mode input { position:absolute; opacity:0; }.route-mode span { min-height:42px; display:grid; place-items:center; color:var(--muted); border-right:1px solid var(--line); font-size:11px; cursor:pointer; }.route-mode label:last-child span { border-right:0; }.route-mode input:checked+span { color:var(--ink); box-shadow:inset 0 -2px var(--ink); font-weight:700; }.route-mode input:focus-visible+span { outline:2px solid var(--blue); outline-offset:-2px; }
.route-actions { display:grid; grid-template-columns:1fr 1fr; gap:8px; }.route-actions+.route-actions { margin-top:8px; }.route-actions .btn { min-height:42px; }.secondary-actions .btn { background:rgba(255,255,255,.52); }.quiet-actions { margin-top:12px!important; }.text-action { padding:8px 3px; border:0; border-bottom:1px solid transparent; color:var(--muted); background:transparent; text-align:left; font-size:10px; }.text-action:last-child { text-align:right; }.text-action:hover,.text-action:focus-visible { color:var(--ink); border-color:currentColor; }
.route-status { margin-top:24px; padding-top:18px; display:grid; gap:5px; border-top:1px solid var(--ink); }.route-status strong { font-size:13px; }.route-status span { color:var(--muted); font-size:10px; line-height:1.5; }
.route-pin { width:30px; height:30px; display:grid; place-items:center; border:2px solid #fff; border-radius:50%; color:#fff; background:var(--ink); box-shadow:0 5px 16px rgba(21,23,19,.3); font:700 10px var(--mono); }.start-pin { background:var(--red); }.destination-pin { background:var(--blue); }
.amap-merchant { position:relative; width:280px; padding:20px; border:1px solid rgba(21,23,19,.16); border-radius:16px; color:var(--ink); background:rgba(255,254,249,.98); box-shadow:0 18px 48px rgba(21,23,19,.22); }.amap-merchant h3 { margin:7px 30px 12px 0; font-size:19px; line-height:1.3; letter-spacing:-.035em; }.popup-close { position:absolute; top:12px; right:12px; width:30px; height:30px; border:0; border-radius:50%; color:var(--muted); background:transparent; font-size:18px; }.popup-close:hover,.popup-close:focus-visible { color:#fff; background:var(--ink); }.popup-score { display:flex; align-items:baseline; gap:5px; }.popup-score>strong { font:28px var(--mono); }.popup-score>span { color:var(--muted); font:10px var(--mono); }.popup-score .stars { margin-left:6px; font-size:13px; }.popup-facts { margin:12px 0; padding-block:10px; display:flex; justify-content:space-between; gap:12px; border-block:1px solid var(--line); color:var(--muted); font-size:10px; }.amap-merchant p { margin:0 0 14px; color:var(--muted); font-size:10px; line-height:1.55; }.popup-destination { width:100%; }
.amap-logo,.amap-copyright { opacity:.62; }
@media (max-width:1050px) { .map-layout-navigation { grid-template-columns:1fr; }.map-layout-navigation .map-panel { min-height:590px; }.map-navigation { border-left:0; border-top:1px solid var(--line); } }
@media (max-width:760px) { .map-layout-navigation .map-panel { min-height:520px; }.map-navigation { padding:22px 16px; }.map-mode-label { max-width:calc(100% - 92px); overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }.amap-merchant { width:min(260px,calc(100vw - 58px)); padding:16px; }.route-actions { grid-template-columns:1fr; }.quiet-actions { grid-template-columns:1fr 1fr; } }
