@charset "UTF-8";
:root{color-scheme:light;--brand-orange:#EA5413;--brand-blue:#275B88;--blue:#275B88;--paper:#faf6ee;--surface:#fffefa;--ink:#19394f;--muted:#647582;--line:#dbe2e7;--orange:#EA5413;--tint:#fae7dd;--green:#466448;--shadow:0 18px 60px #22231512;font-family:Inter,"Helvetica Neue",Arial,"Noto Sans TC","Noto Sans JP",sans-serif;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:#e8e6df;color:var(--ink);font-size:14px;line-height:1.6}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:disabled{cursor:default;opacity:.45}a{color:inherit;text-decoration:none}button{border:0;background:none}svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--orange);outline-offset:3px}button,a{touch-action:manipulation}h1,h2,h3,p{margin:0}h1{font-size:32px;line-height:1.25;letter-spacing:-.045em;font-weight:650}h2{font-size:19px;line-height:1.4;letter-spacing:-.02em}h3{font-size:16px;line-height:1.4}p{line-height:1.8}.app-shell{width:100%;max-width:460px;height:100dvh;min-height:400px;margin:auto;background:var(--paper);position:relative;display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow)}.topbar{height:78px;flex:none;padding:18px 23px 13px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);z-index:2;background:var(--paper)}.wordmark{display:flex;align-items:center;gap:9px;font-size:16px;font-weight:700;letter-spacing:.025em}.wordmark small{display:block;font-size:8px;letter-spacing:.13em;font-weight:500;line-height:1.5;color:var(--muted)}.brand-mark{display:grid;place-items:center;width:36px;height:38px;border-radius:12px 12px 12px 3px;background:var(--orange);color:#fff;font-size:25px;font-weight:500}.language-switch{min-width:48px;min-height:44px;padding:0 6px;font-size:11px;letter-spacing:.06em}#view{flex:1;min-height:0;overflow-y:auto;overscroll-behavior-y:contain;padding:25px 23px 116px;scrollbar-width:thin;scrollbar-color:var(--line) transparent}#view:focus{outline:none}.eyebrow{font-size:10px;letter-spacing:.16em;color:var(--muted);text-transform:uppercase;margin-bottom:10px}.heading-line{display:flex;justify-content:space-between;align-items:center;gap:12px}.text-small{font-size:12px;color:var(--muted)}.lede{margin-top:12px;color:var(--muted);font-size:13px}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:28px 0 14px}.section-head h2{font-size:17px}.text-link{font-size:12px;min-height:36px;color:var(--orange);display:inline-flex;align-items:center;gap:5px}.text-link svg{width:16px;height:16px}.location{display:flex;align-items:center;gap:4px;font-size:11px}.location svg{width:14px;height:14px}.home-intro{position:relative}.home-intro h1{max-width:260px}.home-stamp{position:absolute;right:0;top:18px;font-family:Georgia,serif;font-style:italic;color:var(--orange);font-size:13px;writing-mode:vertical-rl;letter-spacing:.12em;border-left:1px solid var(--line);padding-left:9px}.scan-invite{display:flex;width:100%;text-align:left;align-items:center;gap:15px;background:var(--orange);color:white;padding:18px;margin:24px 0 4px;border-radius:19px;box-shadow:0 9px 22px #943c2314}.scan-invite>svg{width:30px;height:30px;stroke-width:1.25}.scan-invite span{flex:1}.scan-invite strong{display:block;font-size:16px;font-weight:600}.scan-invite small{font-size:11px;opacity:.85;display:block;margin-top:3px}.scan-invite .arrow{width:18px}.weekday-list{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;margin-bottom:15px}.weekday{padding:9px 0;min-height:44px;border-radius:12px;border:1px solid transparent;font-size:12px;color:var(--muted);text-align:center}.weekday[aria-pressed=true]{color:var(--ink);background:var(--surface);border-color:var(--line);font-weight:700}.market-card{display:flex;gap:14px;align-items:center;width:100%;text-align:left;padding:16px;background:var(--surface);border:1px solid var(--line);border-radius:17px;margin:8px 0}.market-monogram{width:43px;height:48px;display:grid;place-items:center;background:var(--tint);border-radius:12px;color:var(--orange);font-size:23px;font-family:Georgia,"Noto Serif TC",serif}.market-card>span:nth-child(2){flex:1}.market-card strong{display:block;font-size:15px;font-weight:600}.market-card small{font-size:10px;color:var(--muted);display:block;margin-top:3px}.market-card svg{width:17px}.tag{display:inline-flex;gap:5px;align-items:center;font-size:10px;border:1px solid var(--line);border-radius:99px;padding:3px 9px;color:var(--muted)}.tag.dot:before{content:'';width:5px;height:5px;border-radius:100%;background:var(--green)}.caption{font-size:10px;color:var(--muted);line-height:1.7;margin-top:10px}.food-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px 13px}.food-card{position:relative;min-width:0}.food-open{display:block;width:100%;text-align:left;padding:0}.food-cover{aspect-ratio:1/1;background:#ece7db;border-radius:16px;overflow:hidden;margin-bottom:10px;display:grid;place-items:center}.food-cover img{width:100%;height:100%;object-fit:cover;transition:transform .3s}.food-open:hover img{transform:scale(1.04)}.food-cover .no-photo{font-size:40px;color:#8b7765;font-family:Georgia,serif}.food-name{font-weight:600;font-size:14px;line-height:1.4;display:block;padding-right:2px}.food-sub{font-size:10px;line-height:1.5;color:var(--muted);display:block;margin-top:5px}.save-small{position:absolute;right:5px;top:5px;display:grid;place-items:center;width:39px;height:39px;border-radius:100%;color:#55584e;background:#fffdf8e8;backdrop-filter:blur(10px)}.save-small[aria-pressed=true]{color:var(--orange)}.save-small[aria-pressed=true] svg{fill:var(--orange);stroke:var(--orange)}.save-small svg{width:18px;height:18px}.bottom-nav{position:absolute;bottom:max(14px,env(safe-area-inset-bottom));left:14px;right:14px;z-index:4;display:grid;grid-template-columns:repeat(4,1fr);padding:8px 5px;background:#fffef8ee;border:1px solid #ffffffb3;box-shadow:0 5px 24px #25281a18;border-radius:24px;backdrop-filter:blur(22px)}.nav-item{display:flex;flex-direction:column;align-items:center;gap:4px;font-size:9px;color:var(--muted);padding:3px 0;min-height:52px}.nav-item span.icon-wrap{border-radius:12px;width:47px;height:30px;display:grid;place-items:center}.nav-item[aria-current=page]{color:var(--orange);font-weight:600}.nav-item[aria-current=page] .icon-wrap{background:var(--tint)}.nav-item svg{width:21px;height:21px}.search-box{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:14px;background:var(--surface);padding:0 13px;margin:22px 0 15px}.search-box svg{width:18px;color:var(--muted)}.search-box input{width:100%;min-width:0;height:48px;background:transparent;border:0;outline:0;color:var(--ink);font-size:13px}.search-box:focus-within{border-color:var(--orange)}.chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:21px}.chip{font-size:11px;padding:8px 11px;border:1px solid var(--line);border-radius:99px;min-height:36px;color:var(--muted)}.chip[aria-pressed=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}.results-count{margin-bottom:16px;font-size:11px;color:var(--muted)}.empty{padding:38px 16px;text-align:center;border:1px dashed var(--line);border-radius:18px}.empty svg{width:33px;height:33px;color:var(--orange);margin-bottom:14px}.empty p{font-size:13px;color:var(--muted);margin:8px 0 16px}.primary,.secondary{min-height:48px;width:100%;padding:12px 16px;border-radius:14px;font-weight:600;font-size:13px;display:flex;justify-content:center;align-items:center;gap:8px}.primary{background:var(--orange);color:white}.secondary{border:1px solid var(--line);background:var(--surface)}.back-button{display:inline-flex;align-items:center;gap:5px;min-height:40px;margin:-10px 0 9px -7px;font-size:12px;color:var(--muted)}.back-button svg{width:18px}.detail-photo{aspect-ratio:1.45;background:var(--tint);border-radius:23px;overflow:hidden;margin:6px 0 22px;display:grid;place-items:center;font-size:65px}.detail-photo img{width:100%;height:100%;object-fit:cover}.detail-title{font-size:28px}.pronounce{display:flex;align-items:center;gap:8px;margin:8px 0 17px;color:var(--muted);font-size:12px}.pronounce button{min-width:35px;min-height:35px;display:grid;place-items:center}.pronounce svg{width:17px}.detail-copy{font-size:13px;line-height:1.9}.detail-block{margin-top:22px;padding-top:20px;border-top:1px solid var(--line)}.detail-block h2{font-size:14px;margin-bottom:9px}.detail-block p{font-size:12px;color:var(--muted)}.note-card{margin-top:21px;padding:17px;border:1px solid #d8bda8;border-radius:17px;background:var(--tint)}.note-card h2{font-size:14px;display:flex;gap:7px;align-items:center;margin-bottom:8px}.note-card p{font-size:12px}.note-card button{margin-top:12px;background:var(--surface)}.detail-actions{display:grid;grid-template-columns:52px 1fr;gap:9px;margin-top:24px}.detail-actions>.secondary[aria-pressed=true]{color:var(--orange);background:var(--tint)}.scan-label{display:inline-flex;align-items:center;gap:6px;color:var(--orange);font-size:10px;margin:12px 0}.scan-label:before{content:'';width:5px;height:5px;background:currentColor;border-radius:50%}.viewfinder{position:relative;height:290px;border-radius:21px;overflow:hidden;background:#242820;margin-top:8px}.viewfinder .sign-sample{position:absolute;left:0;top:-39%;width:100%;height:190%;object-fit:cover}.viewfinder .scan-shade{position:absolute;inset:0;background:linear-gradient(0deg,#0005,transparent 60%)}.focus-frame{position:absolute;inset:36px 22px;border:1px solid #fff9;border-radius:8px}.focus-frame:before,.focus-frame:after{content:'';position:absolute;width:26px;height:26px;border-color:white;border-style:solid}.focus-frame:before{top:-2px;left:-2px;border-width:3px 0 0 3px}.focus-frame:after{bottom:-2px;right:-2px;border-width:0 3px 3px 0}.viewfinder-note{position:absolute;bottom:15px;left:0;right:0;text-align:center;color:#fff;font-size:11px;letter-spacing:.1em}.scan-line{position:absolute;left:22px;right:22px;top:35px;height:2px;background:#ffb57a;box-shadow:0 0 20px #ef9656;animation:scanning 1.1s ease-in-out infinite alternate}.scan-manual{margin-top:16px;display:flex;justify-content:center}.scan-result{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:18px;margin-top:19px}.scan-result h2{font-size:17px}.scan-result>p{font-size:12px;color:var(--muted);margin:8px 0 15px}.candidate{display:flex;align-items:center;width:100%;text-align:left;gap:13px;border-top:1px solid var(--line);padding:13px 0}.candidate img,.candidate .mini-placeholder{width:58px;height:58px;border-radius:12px;object-fit:cover;display:grid;place-items:center;background:var(--tint);font-size:25px;color:var(--orange)}.candidate>span{flex:1}.candidate strong{display:block;font-size:14px}.candidate small{display:block;font-size:11px;color:var(--muted);margin-top:4px}.setting-group{background:var(--surface);border:1px solid var(--line);border-radius:18px;margin:20px 0;padding:0 16px;overflow:hidden}.setting-row{display:flex;align-items:center;justify-content:space-between;width:100%;padding:17px 0;min-height:57px;gap:10px;border-bottom:1px solid var(--line);text-align:left}.setting-row:last-child{border-bottom:0}.setting-row span{font-size:13px}.setting-row small{color:var(--muted);font-size:11px}.switch{appearance:none;width:39px;height:23px;border-radius:20px;background:#c8cabf;position:relative;cursor:pointer;margin:0;flex:none}.switch:after{content:'';position:absolute;width:17px;height:17px;border-radius:50%;background:white;top:3px;left:3px;transition:transform .2s}.switch:checked{background:var(--orange)}.switch:checked:after{transform:translateX(16px)}.preferences{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:14px 0}.preference{display:flex;align-items:center;gap:9px;padding:12px 10px;background:var(--surface);border:1px solid var(--line);border-radius:12px;font-size:12px;min-height:45px;cursor:pointer}.preference input{accent-color:var(--orange);width:16px;height:16px}.settings-note{font-size:11px;color:var(--muted);line-height:1.8;margin-top:13px}.source-links{margin:18px 0;display:grid;gap:9px}.source-links a{font-size:12px;color:var(--orange);text-decoration:underline;text-underline-offset:4px;padding:7px 0}.market-detail-symbol{font-family:Georgia,serif;font-size:55px;color:var(--orange);background:var(--tint);height:145px;display:grid;place-items:center;border-radius:20px;margin:8px 0 23px}.address{font-size:13px;line-height:1.8;color:var(--muted);margin:16px 0}.schedule{display:flex;gap:8px;margin:17px 0}.schedule span{font-size:11px;width:34px;height:34px;border-radius:50%;background:var(--surface);display:grid;place-items:center;color:var(--muted)}.schedule span.on{background:var(--orange);color:white}.market-links{display:grid;gap:8px;margin-top:20px}.toast{position:absolute;z-index:10;bottom:99px;left:24px;right:24px;background:var(--ink);color:var(--paper);padding:11px 15px;border-radius:12px;font-size:12px;text-align:center;opacity:0;pointer-events:none;transform:translateY(6px);transition:.2s}.toast.show{opacity:1;transform:none}dialog{color:var(--ink);background:var(--paper);border:0;padding:25px;max-width:410px;width:calc(100% - 24px);max-height:calc(100dvh - 28px);border-radius:26px;box-shadow:0 35px 100px #0003;overflow:auto}dialog::backdrop{background:#1d221e80;backdrop-filter:blur(5px)}.sheet-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:18px}.sheet-top h2{font-size:20px}.icon-button{min-width:40px;min-height:40px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;background:var(--surface)}.language-options{display:grid;gap:9px}.language-options button{text-align:left;padding:17px;border:1px solid var(--line);background:var(--surface);border-radius:14px}.language-options button[aria-pressed=true]{border-color:var(--orange);color:var(--orange)}.vendor-card{background:var(--surface);border:1px solid var(--line);padding:24px 19px;border-radius:18px}.vendor-card .zh-message{font-size:23px;font-weight:550;line-height:1.7;letter-spacing:.01em}.vendor-card .translated{font-size:12px;color:var(--muted);border-top:1px solid var(--line);margin-top:20px;padding-top:16px}.vendor-card .vendor-kicker{font-size:10px;color:var(--orange);letter-spacing:.1em;margin-bottom:16px}.order-options{margin:18px 0}.quantity-row{display:flex;align-items:center;justify-content:space-between;margin:16px 0}.quantity-row span{font-size:13px}.stepper{display:flex;align-items:center;border:1px solid var(--line);border-radius:12px;overflow:hidden}.stepper button{width:42px;height:42px;background:var(--surface)}.stepper output{width:35px;text-align:center;font-size:15px}.order-checks{display:flex;gap:15px;flex-wrap:wrap;font-size:12px}.order-checks label{display:flex;align-items:center;gap:6px;min-height:38px}.order-checks input{accent-color:var(--orange)}.dialog-note{font-size:11px;color:var(--muted);margin:13px 0;line-height:1.7}.divider{height:1px;background:var(--line);margin:24px 0}.inline-badge{font-size:10px;padding:4px 9px;background:var(--tint);color:var(--orange);border-radius:50px}.page-enter{animation:enter .25s ease-out}@keyframes enter{from{opacity:.4;transform:translateY(5px)}to{opacity:1;transform:none}}@keyframes scanning{to{top:240px}}
:root[data-theme=dark]{color-scheme:dark;--paper:#152c3e;--surface:#21394c;--ink:#e9f1f7;--muted:#b5c4d0;--line:#39556a;--orange:#EA5413;--blue:#b6d5ec;--tint:#49332b;--green:#a5c398}:root[data-theme=dark] .primary,:root[data-theme=dark] .scan-invite{color:#27261e}:root[data-theme=dark] .bottom-nav{background:#2c332ae8;border-color:#46503d}:root[data-theme=dark] .brand-mark{color:#28251e}:root[data-theme=dark] .save-small{background:#30392dee;color:var(--ink)}:root[data-theme=dark] .chip[aria-pressed=true]{color:var(--paper)}:root[data-theme=dark] .food-cover{background:#44463a}
/* The original identity stays visible: unmodified logo, flame orange and midnight blue. */
.topbar{height:99px;padding-top:10px;padding-bottom:10px;border-bottom:2px solid var(--brand-blue)}.wordmark{display:block;line-height:0}.original-logo{display:block;width:164px;height:auto;max-height:77px;object-fit:contain}.language-switch{color:var(--blue)}.home-stamp{color:var(--blue);border-left:2px solid var(--brand-orange)}.primary,.scan-invite{background:var(--brand-blue);color:white}.scan-invite{border-bottom:3px solid var(--brand-orange);box-shadow:0 9px 22px #275b8814}.scan-invite>svg{color:var(--brand-orange)}.scan-invite>svg:last-child{color:white}.text-link,.nav-item[aria-current=page],.scan-label,.source-links a,.vendor-card .vendor-kicker{color:var(--blue)}.market-monogram,.market-detail-symbol{background:var(--brand-blue);color:#fff}.market-monogram{border-bottom:3px solid var(--brand-orange)}.chip[aria-pressed=true]{background:var(--brand-blue);border-color:var(--brand-blue);color:white}.schedule span.on{background:var(--brand-blue);color:white}.note-card{border-color:#e2b6a1}.note-card h2>svg{color:var(--brand-orange)}.save-small[aria-pressed=true]{box-shadow:inset 0 0 0 1px var(--brand-orange)}.viewfinder{background:var(--brand-blue)}.scan-line{background:var(--brand-orange)}.bottom-nav{border-bottom:2px solid #275b8840}:root[data-theme=dark] .primary,:root[data-theme=dark] .scan-invite,:root[data-theme=dark] .chip[aria-pressed=true]{color:white}:root[data-theme=dark] .bottom-nav{background:#21394cf2;border-color:#526e84}:root[data-theme=dark] .save-small{background:#21394ce8}:root[data-theme=dark] .food-cover{background:#314a5b}
@media(min-width:600px){body{display:grid;min-height:100dvh;place-items:center}.app-shell{border-left:1px solid var(--line);border-right:1px solid var(--line)}}@media(max-width:350px){.topbar{padding-left:17px;padding-right:17px}#view{padding-left:17px;padding-right:17px}.wordmark{font-size:14px}h1{font-size:29px}.food-name{font-size:13px}.bottom-nav{left:8px;right:8px}.home-stamp{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@media(prefers-contrast:more){:root{--muted:#42443a;--line:#777b6c}.bottom-nav{background:var(--surface);backdrop-filter:none}.caption,.food-sub{font-size:12px}}

.camera-controls{display:grid;grid-template-columns:1fr 80px 1fr;align-items:center;gap:10px;margin:21px 0 8px}.shutter{width:72px;height:72px;margin:auto;border:2px solid var(--brand-orange);padding:5px;border-radius:50%;background:transparent;display:grid;place-items:center}.shutter>span{display:block;width:100%;height:100%;border-radius:50%;background:var(--brand-orange);box-shadow:inset 0 0 0 2px var(--paper)}.shutter:active>span{transform:scale(.94)}.camera-side{justify-self:center;display:flex;flex-direction:column;align-items:center;gap:5px;font-size:10px;min-width:48px;min-height:48px;color:var(--blue)}.camera-side>span{font-size:10px}.camera-hint{font-size:11px;color:var(--muted);text-align:center}.viewfinder{margin-top:23px}
.logo-type{display:block;width:170px;height:77px;overflow:hidden}.logo-type .original-logo{width:266px;max-width:none;max-height:none;height:auto}
.market-list{display:grid;gap:18px}.market-card{position:relative;display:block;padding:0;margin:0;overflow:hidden;border-radius:18px}.market-cover{display:block;width:100%;aspect-ratio:1.7;overflow:hidden;background:var(--brand-blue)}.market-cover img,.market-photo img{display:block;width:100%;height:100%;object-fit:cover;filter:saturate(.84) contrast(.96) brightness(1.04)}.market-info{display:block;padding:15px 40px 16px 16px}.market-card>svg{position:absolute;right:16px;bottom:38px;color:var(--blue)}.market-address{display:block;color:var(--muted);font-size:10px;margin-top:7px;line-height:1.6}.market-photo{margin:6px 0 24px}.market-photo>img{height:auto;aspect-ratio:1.5;border-radius:20px}.market-photo figcaption{font-size:9px;color:var(--muted);line-height:1.6;margin-top:7px}.market-photo figcaption a{text-decoration:underline;text-underline-offset:2px}.market-photo figcaption span{display:block}.market-card[data-route="market/garden"] .market-cover img{object-position:center 42%}

/* Small, eased handheld-camera movement; overscan prevents exposed edges. */
.viewfinder .sign-sample{transform:translate(var(--camera-x,0px),var(--camera-y,0px)) rotate(var(--camera-roll,0deg)) scale(1.045);transition:transform .65s cubic-bezier(.2,.65,.3,1);pointer-events:none}
.viewfinder .focus-frame{transform:translate(var(--focus-x,0px),var(--focus-y,0px));transition:transform .8s ease-out;pointer-events:none}
@media(prefers-reduced-motion:reduce){.viewfinder .sign-sample,.viewfinder .focus-frame{transform:none;transition:none}}

.question-translation{margin-top:16px;padding-top:13px;border-top:1px solid var(--line);font-size:12px;line-height:1.8;color:var(--muted)}.question-translation>span{display:block;font-size:10px;letter-spacing:.08em;font-weight:600;margin-bottom:6px}.detail-block .question-chinese{color:var(--ink)}

.source-entry{padding:10px 0;border-bottom:1px solid var(--line)}.source-entry p{font-size:12px}.source-entry small,.credit-details p{display:block;font-size:9px;overflow-wrap:anywhere;color:var(--muted)}.credit-details{margin-top:8px}.credit-details summary{cursor:pointer;font-size:10px}.credit-details p{margin-top:6px}

/* 內嵌與真機共用的可讀性級距：內文 15px、次要 12px、觸控目標 ≥44px。 */
body{font-size:15px}p{text-wrap:pretty}
:root{--muted:#5a6b78}
.eyebrow,.tag,.inline-badge{font-size:11px}
.caption,.food-sub,.market-card small,.market-address,.setting-row small,.settings-note,.dialog-note,.scan-invite small,.candidate small,.results-count,.viewfinder-note,.camera-hint,.camera-side,.camera-side>span{font-size:12px}
.lede,.detail-copy,.setting-row span,.quantity-row span{font-size:14px}
.food-name{font-size:15px}
.market-card strong{font-size:16.5px}
.detail-block p,.scan-result>p,.chip,.text-link,.back-button,.toast,.question-translation,.order-checks,.empty p,.note-card p,.address{font-size:13px}
.weekday{font-size:14px;min-height:46px;padding:10px 0}
.chip{min-height:40px;padding:9px 12px}
.nav-item{font-size:11px;min-height:56px;gap:5px}
.nav-item svg{width:22px;height:22px}
.nav-item span.icon-wrap{width:50px;height:31px}
#view{padding-bottom:120px}
.save-small{width:44px;height:44px}
.save-small svg{width:20px;height:20px}
.back-button{min-height:44px}
.language-switch{min-height:48px;font-size:12.5px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.primary,.secondary{font-size:14.5px;min-height:50px}
.stepper button{width:46px;height:46px}
.text-link svg{width:17px;height:17px}
.market-photo figcaption,.source-entry small,.credit-details p,.credit-details summary{font-size:10.5px}
.question-translation>span{font-size:11px}

/* 窄框（內嵌展示 275px）：收窄留白換取行長，避免詞語被擠成孤行。 */
@media(max-width:360px){
  .topbar{height:80px;padding:8px 16px}
  .logo-type{width:132px;height:60px}
  .logo-type .original-logo{width:207px}
  #view{padding:20px 16px 108px}
  h1{font-size:30px}
  .detail-title{font-size:26px}
  .bottom-nav{left:10px;right:10px;border-radius:21px}
  .nav-item span.icon-wrap{width:44px;height:29px}
  .market-info{padding:14px 36px 15px 14px}
  .market-card>svg{right:13px}
  .weekday-list{gap:4px}
  .home-stamp{display:none}
  .vendor-card{padding:20px 16px}
  .vendor-card .zh-message{font-size:21px}
  dialog{padding:20px}
}

/* 標題降一級，窄框允許自然換行；快門與提示不被底部導覽壓到。 */
h1{font-size:26px;line-height:1.3;letter-spacing:-.03em;text-wrap:balance;overflow-wrap:break-word}
.detail-title{font-size:26px;text-wrap:balance}
@media(max-width:360px){
  h1{font-size:24px}
  .detail-title{font-size:24px}
  .viewfinder{height:230px;margin-top:18px}
  .focus-frame{inset:28px 20px}
  .scan-line{animation-name:scanning-narrow}
  .camera-controls{margin:14px 0 6px}
  .shutter{width:64px;height:64px}
  .scan-manual{margin-top:10px}
}
@keyframes scanning-narrow{to{top:calc(100% - 28px)}}

/* Five categories fit the embedded phone, including Japanese labels. */
.chips{display:grid;grid-template-columns:repeat(5,auto);gap:4px;overflow:visible}
.chip{min-width:0;min-height:46px;padding:8px 2px;border-radius:12px;white-space:nowrap;font-size:clamp(11px,3.2vw,13px);letter-spacing:0}
/* Keep the tap target; make only the visible heart and circle smaller. */
.food-card .save-small{width:44px;height:44px;top:0;right:0;background:transparent;backdrop-filter:none;box-shadow:none;isolation:isolate}
.food-card .save-small::before{content:'';position:absolute;inset:7px;border-radius:50%;background:#fffdf8ed;backdrop-filter:blur(6px);z-index:-1}
.food-card .save-small svg{width:16px;height:16px}
.food-card .save-small[aria-pressed=true]::before{box-shadow:inset 0 0 0 1px var(--brand-orange)}
:root[data-theme=dark] .food-card .save-small::before{background:#21394ced}

/* Bound the image to its frame: intrinsic square height must not expand the grid track. */
.food-cover,.detail-photo{position:relative;display:block}
.food-cover img,.detail-photo img{position:absolute;inset:0;display:block;width:100%;height:100%;min-height:0;object-fit:cover}
.food-cover img,.detail-photo img,.food-open:hover img{transform:scale(var(--food-zoom,1));transform-origin:var(--food-origin,50% 50%)}
.detail-photo{aspect-ratio:1}
.detail-photo img{object-position:center}

/* Keep dialog exits reachable while reading a long bilingual card. */
.sheet-top{position:sticky;top:0;z-index:2;background:var(--paper)}
.sheet-top .icon-button{flex:none;min-width:44px;min-height:44px}
@media(max-width:360px){
  :lang(ja) h1{font-size:20px;white-space:normal;text-wrap:balance}
  .viewfinder{height:clamp(150px,31dvh,210px)}
  .camera-controls{grid-template-columns:1fr 64px 1fr}
  .camera-side{min-width:0;width:100%;white-space:nowrap}
  dialog{padding:16px}
  .vendor-card{padding:16px 12px}
}

/* Stable control sizing across Safari and Chromium; never squeeze ingredient names. */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
.preferences{font-size:12px;grid-template-columns:repeat(auto-fit,minmax(min(100%,calc(5em + 40px)),1fr))}
.preference{display:grid;grid-template-columns:16px minmax(0,1fr);gap:6px;padding:12px 8px;min-width:0}
.preference input,.order-checks input{width:16px;height:16px;margin:0;flex:none}
.preference-name{display:block;white-space:nowrap;text-wrap:nowrap}
.order-checks label{min-width:0;max-width:100%}
.order-checks label>span{min-width:0}
.setting-row>span,.candidate>span,.sheet-top h2{min-width:0;overflow-wrap:break-word}
.setting-row>small,.candidate img,.candidate .mini-placeholder,.stepper,.language-switch{flex-shrink:0}
.weekday-list{grid-template-columns:repeat(7,minmax(0,1fr))}
.weekday{min-width:0;white-space:nowrap}
.schedule{gap:4px}
.schedule span{flex:1;min-width:0;white-space:nowrap}
