/* UI04 mobile-first. No remote fonts; no image cropping; no nested menu scrollers. */
:root{font-size:100%;--ink:#203a3a;--muted:#607273;--accent:#12635e;--line:#d9e3df;--wash:#f5f7f4;--warm:#fff6e7;--paper:#fff;--cols:3}
*{box-sizing:border-box}html{overflow-wrap:anywhere;scroll-behavior:auto;-webkit-text-size-adjust:100%}body{margin:0;background:var(--wash);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Hiragino Sans","Yu Gothic",Meiryo,sans-serif;line-height:1.65;padding:env(safe-area-inset-top) max(12px,env(safe-area-inset-right)) max(18px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))}
button,input{font:inherit}button,a,input,summary{-webkit-tap-highlight-color:transparent}button,summary,a{touch-action:manipulation}button{cursor:pointer;background:var(--paper);border:1px solid var(--line);border-radius:10px;color:var(--ink);min-height:44px;padding:.55rem .8rem}button:hover{background:#eff6f3}a{color:var(--accent);text-underline-offset:3px}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,[role=button]:focus-visible{outline:3px solid #a36616;outline-offset:3px}button:disabled{opacity:.45;cursor:default}
[hidden]{display:none!important}h1,h2,h3,h4,h5,p,figure{margin:0}h1,h2,h3,h4,h5{line-height:1.45}h1,h2,h3,h4{font-weight:700}img{max-width:100%;display:block}#app,#boot-error{max-width:780px;margin:auto}#areas:focus{outline:none}.home-header{padding:20px 2px 14px}.eyebrow{font-size:.75rem;letter-spacing:.035em;display:flex;justify-content:space-between;align-items:center;color:var(--muted)}.version-label{font-size:.6875rem;letter-spacing:.1em;border:1px solid var(--line);padding:0 .45rem;border-radius:6px}.home-header h1{font-size:1.625rem;letter-spacing:.02em;margin-top:3px}.base-date{font-size:.8125rem;margin-top:5px;color:var(--muted)}.base-date time{color:var(--ink);font-variant-numeric:tabular-nums;margin-left:.35rem}.home-hint{font-size:.75rem;margin:10px 2px 8px;color:var(--muted)}
summary{cursor:pointer;min-height:44px;padding:.65rem .15rem;font-size:.8125rem}summary::marker{color:var(--accent)}.search-disclosure{border-block:1px solid var(--line)}.search-disclosure>summary{display:flex;justify-content:space-between;align-items:center;list-style:none}.search-disclosure>summary::-webkit-details-marker{display:none}.search-disclosure>summary:before{content:'＋';margin-right:.45rem}.search-disclosure[open]>summary:before{content:'−'}.search-disclosure>summary span{margin-left:auto;font-size:1.4rem;line-height:1}.search-row{display:flex;gap:8px;padding:4px 0 10px}.search-row input{font-size:1rem;min-height:44px;min-width:0;flex:1;border:1px solid #a7bdb7;border-radius:10px;background:var(--paper);padding:.6rem .7rem;color:var(--ink)}#search-form label{font-size:.8125rem}.search-row button{flex:0 0 auto}#search-summary{font-size:.75rem}#search-results{display:grid;gap:6px;padding-bottom:8px}#search-results:empty{padding:0}.search-result{text-align:left;display:flex;justify-content:space-between;gap:12px;font-size:.8125rem}.search-result small{color:var(--muted);white-space:nowrap}
.area-section{margin-bottom:8px;background:var(--paper);border:1px solid var(--line);border-radius:13px;overflow:clip}.area-title{font-size:.9375rem}.area-toggle{display:flex;align-items:center;gap:10px;width:100%;text-align:left;border:0;border-radius:12px;padding:12px 11px;min-height:66px;line-height:1.4;background:transparent}.area-code{width:1.875rem;height:2rem;white-space:nowrap;overflow-wrap:normal;display:grid;place-items:center;border-radius:8px;background:#eaf1ec;color:var(--accent);font-size:.65rem;letter-spacing:.04em;flex-shrink:0;font-weight:700}.area-name-wrap{flex:1;min-width:0}.area-name{display:block;font-size:.875rem;font-weight:700}.area-count{display:block;font-size:.6875rem;color:var(--muted);margin-top:3px;font-weight:400}.chevron{font-size:1.3rem;line-height:1;width:1.125rem;text-align:center;flex-shrink:0;transform:rotate(0deg)}[aria-expanded=true]>.chevron{transform:rotate(90deg)}.area-toggle[aria-expanded=true]{border-bottom:1px solid var(--line);border-radius:12px 12px 0 0;background:#edf4ef}.area-panel{padding:0}.map-block{padding:8px 10px 10px;background:#f7f9f5}.map-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}.map-heading h3{font-size:.8125rem}.map-heading button{font-size:.75rem;min-height:44px;padding:.35rem .6rem;background:transparent;border:0}.map-panels{display:grid;gap:8px}.map-figure-title{font-size:.75rem;font-weight:500;margin:3px 0 5px;color:var(--muted)}.map-canvas{position:relative;margin:auto;isolation:isolate;background:#eaf0ec;border-radius:9px;overflow:hidden}.map-canvas>img{width:100%;height:100%;object-fit:contain}.map-canvas>svg{position:absolute;inset:0;width:100%;height:100%}.map-pin{cursor:pointer}.pin-line{stroke:#164f51;stroke-width:3.5;fill:none}.pin-point{fill:#164f51}.pin-number{fill:white;stroke:#164f51;stroke-width:3}.pin-text{fill:#164f51;font-weight:700;pointer-events:none;text-anchor:middle;dominant-baseline:central}.map-pin.is-selected .pin-number{fill:#164f51;stroke:white;stroke-width:5}.map-pin.is-selected .pin-text{fill:white}.map-pin.is-selected .pin-line{stroke:#a94f20;stroke-width:5}.map-link{display:inline-flex;min-height:44px;align-items:center;font-size:.75rem;gap:4px}.map-footnote{font-size:.6875rem;color:var(--muted)}.map-canvas.is-error svg{visibility:hidden}.map-failure{font-size:.8125rem;background:var(--warm);padding:8px}
.store-section{border-top:1px solid var(--line)}.store-title{position:sticky;top:0;z-index:3;font-size:.875rem;background:var(--paper)}.store-toggle{width:100%;display:flex;align-items:center;gap:8px;text-align:left;padding:12px 10px;border:0;border-radius:0;min-height:64px;background:var(--paper)}.store-toggle[aria-expanded=true]{background:#eaf3ef;box-shadow:0 1px 0 var(--line)}.store-name-wrap{flex:1;min-width:0}.store-name{font-size:.875rem;font-weight:700;display:block}.store-meta{font-size:.6875rem;display:block;color:var(--muted);margin-top:3px}.number-badge{flex-shrink:0;width:1.625rem;height:1.625rem;display:grid;place-items:center;white-space:nowrap;overflow-wrap:normal;word-break:normal;border:1.5px solid var(--accent);color:var(--accent);border-radius:50%;font-size:.6875rem;font-weight:700;line-height:1;font-variant-numeric:tabular-nums}.unlocated-label{font-size:.6875rem;color:#82601d;font-weight:500;margin-left:.25rem}.store-panel{padding:0 0 15px}.store-info{padding:0 10px;background:#f7faf6;font-size:.8125rem;border-bottom:1px solid var(--line)}.store-info summary{display:flex;align-items:center;gap:8px}.store-info summary:before{content:'＋'}.store-info[open] summary:before{content:'−'}.store-info summary small{color:var(--muted);margin-left:auto;font-size:.6875rem}.store-info p{margin-bottom:10px}.store-info .field{margin:0 0 10px}.status-strip{font-size:.6875rem;padding:5px 10px;color:var(--muted)}.empty-state{padding:16px 10px;font-size:.8125rem}.empty-state p+p{margin-top:8px}.retry-strip{background:var(--warm);font-size:.75rem;padding:8px 10px}.retry-strip button{margin-top:4px}.category-group{margin:0;padding-top:16px}.category-heading{font-size:.8125rem;display:flex;align-items:center;justify-content:space-between;padding:0 6px 8px;border-bottom:1px solid var(--line);margin:0 3px 8px;scroll-margin-top:90px}.category-heading span{font-size:.6875rem;color:var(--muted);font-weight:400}.menu-grid{display:grid;grid-template-columns:repeat(var(--cols),minmax(0,1fr));gap:16px 8px;align-items:start;padding:0 2px}.menu-card{display:block;text-decoration:none;color:var(--ink);min-width:0;border-radius:8px;outline-offset:2px}.menu-card:active{background:#f0f5ef}.card-media{display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:1;background:#f5f6f3;border:1px solid #e5eae5;border-radius:8px;overflow:hidden;position:relative}.card-media img{width:100%;height:100%;object-fit:contain;background:white}.photo-placeholder{font-size:.6875rem;color:var(--muted);text-align:center;padding:8px;line-height:1.55;font-weight:400}.photo-placeholder:before{content:'';display:block;width:25px;height:20px;border:1px solid #a6b5ad;border-radius:4px;margin:0 auto 8px;background:linear-gradient(145deg,transparent 45%,#d9e2da 46%,#d9e2da 55%,transparent 56%)}.image-error-label{display:none;font-size:.6875rem;text-align:center;padding:4px;color:#865019}.card-media.is-error img{display:none}.card-media.is-error .image-error-label{display:block}.card-note{display:block;font-size:.625rem;line-height:1.45;margin:4px 1px 0;color:var(--muted)}.card-name{font-size:.84375rem;font-weight:600;line-height:1.6;margin:6px 1px 0;overflow-wrap:anywhere;word-break:normal}.card-identity{font-size:.6875rem;line-height:1.55;margin:3px 1px 0;color:var(--muted)}.card-price{font-size:.90625rem;font-weight:700;line-height:1.5;color:var(--accent);margin:5px 1px 0;white-space:normal;overflow-wrap:anywhere}.price-unit{display:block;font-size:.75rem;font-weight:500;line-height:1.5}.card-badges{display:flex;gap:3px;flex-wrap:wrap;margin:6px 1px 0}.card-badge{font-size:.625rem;line-height:1.45;padding:2px 4px;border:1px solid #e1d4b8;border-radius:4px;color:#775921;background:#fff9eb}.card-time{font-size:.6875rem;line-height:1.5;margin:3px 1px 0;color:#775921}.pending-section{margin:16px 3px 0;border:1px solid #e6d8bb;border-radius:9px;background:#fffcf5;padding:0 6px 10px}.pending-section>summary{font-weight:700;font-size:.8125rem;color:#765b29}.pending-intro{font-size:.75rem;margin:0 0 6px}.guide{border-top:1px solid var(--line);margin-top:20px;font-size:.8125rem}.guide p{margin:0 0 12px}.guide summary{font-weight:600}.text-settings{border:0;border-top:1px solid var(--line);padding:10px 0;margin:10px 0}.text-settings legend{font-weight:600}.text-settings button{font-size:.8125rem;margin:3px}[data-text-scale][aria-pressed=true]{background:var(--accent);color:white;border-color:var(--accent)}.quiet-button{font-size:.8125rem;margin-bottom:15px}footer{font-size:.625rem;color:var(--muted);padding:20px 0 8px;text-align:center}
.screen-toolbar{display:flex;gap:10px;align-items:center;position:sticky;top:0;background:var(--wash);z-index:5;min-height:62px;border-bottom:1px solid var(--line);padding:6px 0}.back-button{flex-shrink:0;font-size:.8125rem;min-width:72px;background:white}.breadcrumb{font-size:.6875rem;line-height:1.5;color:var(--muted);flex:1;min-width:0}.detail-header{padding:18px 0 14px}.detail-category{font-size:.75rem;color:var(--muted);margin-bottom:6px}.detail-header h1{font-size:1.3125rem;line-height:1.6}.detail-price{font-size:1.375rem;font-weight:700;line-height:1.5;margin:9px 0;color:var(--accent)}.detail-price .price-unit{font-size:.875rem}.detail-identity{font-size:.875rem;background:#e9f0ea;border-radius:6px;padding:6px 8px;margin:10px 0}.detail-period{font-size:.8125rem;color:var(--muted)}.important-note{font-size:1rem;background:var(--warm);border-left:3px solid #b78a3a;padding:12px;margin-bottom:12px;white-space:pre-line}.important-note strong{display:block;margin-bottom:5px;font-size:.875rem}.detail-section{padding:20px 0;border-top:1px solid var(--line);font-size:1rem}.detail-section h2{font-size:1rem;margin-bottom:12px}.detail-section h3{font-size:.9375rem;margin:16px 0 8px}.field{margin:0 0 16px}.field dt{font-size:.75rem;font-weight:700;color:var(--muted);margin-bottom:4px}.field dd{margin:0;font-size:inherit;line-height:1.85;white-space:pre-line;overflow-wrap:anywhere}.detail-photo-frame{background:white;border:1px solid var(--line);border-radius:12px;overflow:hidden;display:flex;align-items:center;justify-content:center;position:relative}.detail-photo-frame img{width:100%;height:100%;object-fit:contain}.detail-photo-frame.is-error img{display:none}.detail-photo-frame.is-error .image-error-label{display:block;font-size:1rem}.gallery-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:8px 0}.gallery-toolbar button{font-size:.8125rem}.gallery-thumbs{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.gallery-thumb{width:64px;padding:3px;min-height:64px;background:white}.gallery-thumb img{width:56px;height:56px;object-fit:contain}.gallery-thumb[aria-pressed=true]{border:2px solid var(--accent)}.photo-counter{font-size:.8125rem;color:var(--muted)}.photo-role{font-size:.875rem;font-weight:700;margin:12px 0 6px}.photo-caption{font-size:1rem;white-space:pre-line}.photo-scope{font-size:.875rem;color:var(--muted);margin-top:10px;white-space:pre-line}.photo-trace{font-size:.8125rem;margin-top:12px}.photo-trace summary{font-size:.75rem}.photo-trace .field{font-size:.8125rem}.source-links{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:16px}.source-links a{display:flex;align-items:center;min-height:44px;border:1px solid var(--line);background:white;border-radius:9px;padding:6px 9px;font-size:.8125rem}.trace-footer{font-size:.6875rem;color:var(--muted);margin:20px 0}.detail-photo-zoom{overflow:auto;max-width:100%;border:1px solid var(--line);background:white;margin-top:12px}.detail-photo-zoom img{max-width:none;object-fit:contain}.map-view-heading{font-size:1.15rem;padding:18px 0 8px}.map-view-note{font-size:.8125rem;margin-bottom:12px}.map-controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:10px 0}.map-controls button{font-size:.8125rem}.map-zoom-scroll{overflow:auto;width:100%;border:1px solid var(--line);border-radius:10px;background:#eaf0ec}.map-zoom-scroll .map-canvas{max-width:none;border-radius:0;margin:0}.map-directory{display:grid;gap:6px;margin-top:20px}.map-directory button{text-align:left;font-size:.875rem;display:flex;gap:8px;align-items:center}.error-box{padding:16px;border:1px solid #d6a379;background:var(--warm);margin:12px auto;white-space:pre-line}.loading{padding:18px 4px;color:var(--muted);font-size:.875rem}.muted{color:var(--muted)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;left:12px;top:-100px;padding:10px;background:white;z-index:20}.skip-link:focus{top:12px}
html[data-columns="2"]{--cols:2}html[data-columns="1"]{--cols:1}
@media(max-width:359px){:root{--cols:2}.area-code{width:1.5625rem}.area-name{font-size:.8125rem}}
@media(min-width:700px){body{padding-left:24px;padding-right:24px}.home-header{padding-top:28px}.menu-grid{gap:22px 16px;padding:0 10px}.category-heading{margin-left:10px;margin-right:10px}.card-name{font-size:1rem}.card-price{font-size:1.05rem}.card-note,.card-badge{font-size:.75rem}.map-panels:has(figure+figure){grid-template-columns:1fr 1fr}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* UI04: image cards + full-width, stacked name/price rows. Source bytes are unchanged. */
/* Reserve optical space for Japanese closing punctuation, including 200% text. */
.card-name,.card-price{padding-inline-end:.6em}
.store-title{top:env(safe-area-inset-top,0px)}
.store-panel{min-height:calc(100vh - 3rem);min-height:calc(100svh - 3rem)}
.photo-kind{display:block;margin:5px 1px 0;font-size:.6875rem;line-height:1.5;color:var(--accent);font-weight:600}
.card-note{font-size:.6875rem;line-height:1.6;margin:5px 1px 0}
.menu-text-list{display:block;list-style:none;padding:0;margin:0 2px}
.menu-grid+.menu-text-list{margin-top:18px;border-top:1px solid var(--line)}
.menu-text-list>li{margin:0;padding:0;border-bottom:1px solid var(--line)}
.menu-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,36%);align-items:start;column-gap:12px;padding:13px 7px;min-height:48px;min-width:0;text-decoration:none;color:var(--ink);border-radius:5px;outline-offset:1px}
.menu-row:active{background:#f0f5ef}
.menu-row-name{min-width:0}
.menu-row .card-name{font-size:.875rem;line-height:1.7;margin:0;font-weight:500}
.menu-row .card-identity{margin:4px 0 0}
.menu-row .card-badges{margin-left:0;margin-right:0}
.menu-row .card-time{margin-left:0;margin-right:0}
.menu-row .menu-row-price{text-align:right;font-size:.90625rem;line-height:1.65;margin:0;min-width:0;overflow-wrap:anywhere}
.menu-row .price-unit{font-size:.75rem;font-weight:500;margin-top:2px;line-break:anywhere;overflow-wrap:anywhere}
@media(max-width:359px){.menu-row{column-gap:8px;padding-left:5px;padding-right:5px;grid-template-columns:minmax(0,1fr) minmax(0,37%)}}
@media(min-width:700px){.menu-text-list{margin-left:10px;margin-right:10px}.menu-row .card-name{font-size:1rem}.menu-row .menu-row-price{font-size:1.05rem}.photo-kind{font-size:.8125rem}}

/* UI04: visually distinct genre bands; bottom-of-menu disclosure tabs. */
.category-heading{margin:0 3px 12px;padding:10px 11px;min-height:46px;background:#edf3ef;border:1px solid #d5e1da;border-left:4px solid var(--accent);border-radius:5px;font-size:.9375rem;line-height:1.5;gap:10px;color:var(--accent)}
.category-heading .category-name{font-size:inherit;font-weight:700;color:inherit;min-width:0;flex:1;letter-spacing:.015em}
.category-heading .category-count{font-size:.6875rem;line-height:1.5;flex-shrink:0;white-space:nowrap;font-weight:400;color:var(--muted)}
.category-heading-fold{padding:0;display:block;margin-bottom:0;overflow:hidden}
.category-toggle{display:flex;align-items:center;gap:10px;text-align:left;width:100%;min-height:48px;border:0;border-radius:0;background:transparent;padding:10px 11px;color:inherit;font-size:inherit;line-height:inherit}
.category-toggle[aria-expanded=true]{background:#e1ece5}
.category-heading .category-action{font-size:.6875rem;line-height:1.5;font-weight:500;white-space:nowrap;color:var(--accent);flex-shrink:0}
.category-collapsible{padding-top:12px}
.category-collapsible .category-content{padding-top:12px}
.category-collapsible:has(+.category-collapsible){margin-bottom:0}
.store-hours{display:block;margin-top:4px;font-size:.75rem;line-height:1.5;font-weight:400;color:var(--muted);font-variant-numeric:tabular-nums}
/* Text-first search results: name + original price, then area + facility. */
#search-summary{padding-bottom:9px}
#search-results{display:block;padding-bottom:12px}
.search-result-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.search-result-list>li{padding:0;margin:0;min-width:0}
.search-result{display:block;border:1px solid var(--line);border-radius:10px;background:var(--paper);padding:12px 10px;text-decoration:none;color:var(--ink);min-height:44px;min-width:0}
.search-result:active{background:#eef5f1}
.search-result-top{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,33%);column-gap:10px;align-items:start}
.search-result-name{font-size:.875rem;line-height:1.65;font-weight:600;padding-inline-end:.6em;min-width:0;overflow-wrap:anywhere}
.search-result .search-result-price{margin:0;text-align:right;font-size:.90625rem;line-height:1.6;min-width:0;padding-inline-end:.6em}
.search-result-price .price-unit{font-size:.75rem;font-weight:400;line-break:anywhere}
.search-result-identity{font-size:.75rem;line-height:1.6;margin:5px 0 0;color:var(--muted)}
.search-location{font-size:.75rem;line-height:1.6;margin-top:9px;padding-top:7px;border-top:1px solid #edf1ed;color:var(--muted)}
.search-location p{display:grid;grid-template-columns:3em minmax(0,1fr);column-gap:8px;margin:0}
.search-location p+p{margin-top:3px}
.location-label{font-size:.6875rem;line-height:1.75;color:var(--muted)}
.search-result-area,.search-result-store{min-width:0;overflow-wrap:anywhere;padding-inline-end:.6em}
.search-more{width:100%;margin-top:10px;font-size:.8125rem;color:var(--accent);background:#edf4ef}
.search-more span{font-size:.75rem;color:var(--muted)}
.search-empty{font-size:.875rem;padding:8px 0}
.search-pending{border:1px solid #e1d4b8;border-radius:9px;padding:0 8px 10px;background:#fffcf5;margin-top:14px}
.search-pending>summary{font-size:.8125rem;font-weight:600;color:#765b29}
.search-pending-note{font-size:.75rem;line-height:1.6;margin:0 0 10px;color:#765b29}
@media(max-width:359px){.category-heading{padding-left:9px;padding-right:9px}.category-heading-fold{padding:0}.category-toggle{gap:6px;padding-left:9px;padding-right:9px}.search-result-top{column-gap:8px;grid-template-columns:minmax(0,1fr) minmax(0,35%)}.search-result{padding:10px 8px}}
@media(min-width:700px){.category-heading{margin-left:10px;margin-right:10px}.search-result-name{font-size:1rem}.search-result .search-result-price{font-size:1rem}.search-location{font-size:.8125rem}}
html[data-columns="1"] .category-toggle{flex-wrap:wrap;gap:6px 10px}
html[data-columns="1"] .category-toggle .category-name{flex-basis:calc(100% - 3.5em)}
html[data-columns="1"] .category-action{margin-left:auto}
