:root{--background:#f7f7f4;--surface:#ffffff;--surface-strong:#f2eee8;--text:#211915;--muted:#70645d;--border:#e2d8cf;--primary:#431b07;--primary-strong:#2b1004;--accent:#c7393a;--success:#0f7a5b;--success-strong:#0a5f47;--danger:#b91c1c;--info:#2563eb;--shadow:0 10px 24px rgba(67,27,7,0.08)}*{box-sizing:border-box}html{letter-spacing:0}body,html{background:var(--background);color:var(--text)}body{margin:0;font-family:Arial,Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}.sr-only{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.page-shell{min-height:100vh}.site-header{border-bottom:1px solid var(--border);background:rgba(255,255,255,.9);position:-webkit-sticky;position:sticky;top:0;z-index:20;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.site-header-inner{align-items:center;display:flex;justify-content:space-between;margin:0 auto;max-width:1160px;padding:12px 20px}.brand-link{align-items:center;display:inline-flex;font-size:19px;font-weight:800;gap:9px}.brand-icon{border-radius:8px;box-shadow:0 3px 10px rgba(67,27,7,.18);flex:0 0 auto;height:32px;object-fit:cover;width:32px}.nav-links{align-items:center;display:flex;gap:12px}.nav-links a{color:var(--muted);font-size:15px;font-weight:700}.nav-auth,.nav-auth-loading,.nav-logout,.nav-user{align-items:center;display:inline-flex}.nav-auth{gap:8px}.nav-user{background:var(--surface-strong);border-radius:999px;color:var(--primary-strong);font-size:13px;font-weight:800;gap:5px;max-width:180px;min-height:34px;overflow:hidden;padding:0 10px;text-overflow:ellipsis;white-space:nowrap}.nav-logout{background:transparent;border:0;cursor:pointer;font:inherit;font-size:14px;gap:5px;padding:0}.nav-auth-loading,.nav-logout{color:var(--muted);font-weight:800}.nav-auth-loading{font-size:13px}.main{margin:0 auto;max-width:1160px;padding:20px 20px 52px}.home-main{padding-top:clamp(30px,6vw,56px)}.home-intro{display:grid;grid-gap:0;gap:0;margin-bottom:14px}.eyebrow{color:var(--primary);font-size:14px;font-weight:800;margin:0}.page-title{font-size:clamp(32px,4vw,48px);line-height:1.1;margin:0;max-width:720px}.page-description{color:var(--muted);font-size:17px;line-height:1.65;margin:0;max-width:760px}.search-section{display:grid;grid-gap:12px;gap:12px}.search-subtitle{color:var(--muted);font-size:15px;font-weight:700;margin:-2px 0 2px}.search-box{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow);display:flex;gap:12px;min-height:56px;padding:0 17px}.search-box svg{color:var(--primary);flex:0 0 auto}.search-box input{background:transparent;border:0;color:var(--text);flex:1 1;font:inherit;font-size:18px;min-width:0;outline:none}.search-box input::placeholder{color:#7b8982}.result-summary{align-items:center;color:var(--muted);display:flex;flex-wrap:wrap;font-size:14px;font-weight:700;gap:8px}.result-summary span{background:var(--surface-strong);border-radius:999px;padding:6px 10px}.menu-grid{display:grid;grid-gap:16px;gap:16px;grid-template-columns:repeat(3,minmax(0,1fr))}.menu-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow);display:grid;overflow:hidden}.menu-card-image-link{background:linear-gradient(180deg,#fbfaf7,#f2eee8);display:block;padding:16px 16px 0}.menu-card-image{aspect-ratio:4/3;border:1px solid var(--border);border-radius:6px;height:auto;object-fit:contain;width:100%}.menu-card-body{display:grid;grid-gap:8px;gap:8px;padding:12px 14px 13px}.menu-card-kicker{align-items:center;display:flex;gap:8px;justify-content:space-between}.menu-card-kicker>span:last-child{color:var(--muted);font-size:13px;font-weight:800}.menu-card-heading{align-items:center;display:flex;gap:10px;justify-content:space-between;min-width:0}.trust-badge{align-items:center;border-radius:999px;display:inline-flex;font-size:12px;font-weight:800;gap:5px;line-height:1;padding:6px 8px;white-space:nowrap}.trust-badge-official{background:#e6f4ee;color:var(--success-strong)}.trust-badge-community_confirmed{background:#e7efff;color:var(--info)}.trust-badge-candidate{background:#fff4dd;color:#9a5a00}.trust-badge-stale_reported{background:#fee2e2;color:var(--danger)}.menu-card-title{font-size:20px;line-height:1.25;margin:0;min-width:0}.menu-card-address,.menu-card-meta{align-items:center;color:var(--muted);display:flex;font-size:14px;gap:7px;margin:0}.menu-card-meta{flex-wrap:wrap;gap:10px}.menu-card-meta span{align-items:center;display:inline-flex;gap:5px}.candidate-note{border-left:3px solid var(--accent);color:#7b4a02;font-size:13px;font-weight:700;margin:0;padding-left:8px}.empty-state{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:24px}.empty-state h2,.empty-state p{margin:0}.empty-state p{color:var(--muted);margin-top:8px}.listing-header{display:grid;grid-gap:10px;gap:10px;margin-bottom:20px}.breadcrumbs{color:var(--muted);display:flex;flex-wrap:wrap;font-size:14px;font-weight:700;gap:8px;margin-bottom:16px}.store-layout{display:grid;grid-gap:22px;gap:22px;grid-template-columns:minmax(0,1.1fr) minmax(280px,.8fr)}.store-info-panel,.store-menu-panel{background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow);overflow:hidden}.store-menu-panel img{width:100%}.store-info-panel,.store-menu-meta{display:grid;grid-gap:14px;gap:14px;padding:16px}.store-info-panel h2{font-size:20px;margin:0}.info-list{display:grid;grid-gap:12px;gap:12px;margin:0}.info-list div{display:grid;grid-gap:4px;gap:4px}.info-list dt{color:var(--muted);font-size:13px;font-weight:800}.info-list dd{margin:0}.action-row{display:flex;flex-wrap:wrap;gap:10px}.button-link{align-items:center;background:var(--primary);border-radius:8px;color:#ffffff;display:inline-flex;font:inherit;font-weight:800;gap:8px;min-height:42px;padding:0 14px}.button-link.secondary{background:#1f2937}.narrow-main{max-width:760px}.flow-panel{background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow);display:grid;grid-gap:16px;gap:16px;padding:22px}.upload-panel{gap:20px;padding:26px}.flow-heading{display:grid;grid-gap:7px;gap:7px}.flow-title{font-size:clamp(30px,4vw,48px);line-height:1.1;margin:0}.fine-print,.flow-copy{color:var(--muted);font-size:15px;line-height:1.6;margin:0}.fine-print{font-size:13px}.step-row{display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(3,minmax(0,1fr))}.step-row span{background:var(--surface-strong);border-radius:999px;color:var(--primary-strong);font-size:13px;font-weight:800;padding:8px 10px;text-align:center}.flow-form{display:grid;grid-gap:14px;gap:14px}.upload-form{gap:12px}.new-store-form{gap:13px}.flow-form label{color:var(--text);display:grid;font-size:14px;font-weight:800;grid-gap:7px;gap:7px}.field-label{display:inline-block}.flow-form input{background:#ffffff;border:1px solid var(--border);border-radius:8px;color:var(--text);font:inherit;min-height:46px;outline:none;padding:0 12px;width:100%}.flow-form input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(67,27,7,.12)}.input-with-icon{align-items:center;display:flex;position:relative}.input-with-icon svg{color:var(--primary);left:12px;position:absolute}.input-with-icon input{padding-left:40px}.upload-drop{align-items:center;background:#fbfaf7;border:1px dashed #c9b8aa;border-radius:8px;color:var(--muted);display:grid;grid-gap:6px;gap:6px;justify-items:center;min-height:130px;padding:20px;position:relative;text-align:center}.upload-drop>input[type=file]{cursor:pointer;inset:0;opacity:0;position:absolute}.upload-drop-primary{border-style:solid;cursor:pointer;min-height:190px;outline:1px dashed #b99d8b;outline-offset:-12px}.upload-drop-primary:hover{background:#f7f0ea}.upload-drop svg{color:var(--primary)}.upload-drop strong{color:var(--text)}.address-assist{align-items:center;background:#fbfaf7;border:1px solid var(--border);border-radius:8px;display:flex;gap:12px;justify-content:space-between;padding:12px 13px}.address-assist div{display:grid;grid-gap:4px;gap:4px}.address-assist strong{font-size:14px}.address-assist span{color:var(--muted);font-size:13px;line-height:1.45}.address-assist b{align-items:center;border-radius:999px;display:inline-flex;flex:0 0 auto;font-size:13px;height:34px;justify-content:center;width:34px}.address-assist-strong b{background:#e6f4ee;color:var(--success-strong)}.address-assist-medium b{background:#fff4dd;color:#9a5a00}.address-assist-weak b{background:#f2eee8;color:var(--muted)}.duplicate-panel{border:1px solid var(--border);border-radius:8px;display:grid;grid-gap:10px;gap:10px;padding:12px}.duplicate-panel-title{align-items:center;color:var(--primary-strong);display:flex;font-size:14px;font-weight:800;gap:7px}.duplicate-list{display:grid;grid-gap:8px;gap:8px}.duplicate-item{background:#fbfaf7;border-radius:8px;display:grid;grid-gap:3px;gap:3px;padding:10px}.duplicate-item strong{font-size:14px}.duplicate-item span{color:var(--muted);font-size:13px}.wide-button{border:0;cursor:pointer;justify-content:center;width:100%}.wide-button:disabled{cursor:not-allowed;opacity:.55}.auth-actions{display:grid;grid-gap:12px;gap:12px}.auth-summary,.form-status{align-items:center;border-radius:8px;display:flex;gap:8px;margin:0;padding:11px 12px}.form-status{font-size:14px;font-weight:800}.form-status-ok{background:#e6f4ee;color:var(--success-strong)}.form-status-warn{background:#fff4dd;color:#7b4a02}.auth-summary{background:#fbfaf7;border:1px solid var(--border);color:var(--muted);flex-wrap:wrap;font-size:13px;font-weight:700}.secondary-link{align-items:center;color:var(--primary-strong);display:inline-flex;font-size:14px;font-weight:800;gap:7px;justify-self:start}.city-list{display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:18px}.city-link{background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow);display:grid;font-weight:800;grid-gap:4px;gap:4px;padding:16px}.city-link span{color:var(--muted);font-size:14px}@media (max-width:900px){.city-list,.menu-grid,.store-layout{grid-template-columns:1fr}.page-title{font-size:40px}}@media (max-width:560px){.main,.site-header-inner{padding-left:14px;padding-right:14px}.nav-links{gap:10px}.nav-links a,.nav-logout{font-size:14px}.nav-user{max-width:92px}.search-box{min-height:54px}.search-box input{font-size:16px}.page-title{font-size:31px}.menu-card-image-link{padding:12px 12px 0}.flow-panel{padding:18px}.step-row{grid-template-columns:1fr}}