:root{--ink:#41423e;--sub:#777872;--paper:#fcf8f2;--line:#e8e4dc;--sage:#e2eadf;--rose:#f0e3e6;--lilac:#e8e5ee;--green:#6b877a}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);font-family:'Noto Sans TC','Noto Sans',system-ui,sans-serif;color:var(--ink);-webkit-font-smoothing:antialiased}button,a{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid #e88b69;outline-offset:3px}[hidden]{display:none!important}
/* 首頁只呈現原始海報。SVG 熱區疊放於原圖同一個 1024x1536 坐標系。 */
.home-view{width:100%;min-height:100dvh;display:flex;justify-content:center;align-items:flex-start;background:#fff}
.map-frame{width:min(100%,660px);position:relative;line-height:0;box-shadow:0 6px 35px rgba(62,48,38,.075)}.map-art{display:block;width:100%;height:auto}.map-hitareas{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.map-hitareas a{cursor:pointer;outline:none}.map-hitareas path{fill:transparent;stroke:none;stroke-width:3;vector-effect:non-scaling-stroke;transition:fill .16s ease,stroke .16s ease}.map-hitareas a:hover path,.map-hitareas a:focus-visible path{fill:rgba(255,255,255,.19);stroke:rgba(97,75,75,.65)}.map-hitareas a:active path{fill:rgba(255,255,255,.28)}.map-tip{position:absolute;left:50%;top:50%;padding:7px 13px;line-height:1.4;background:rgba(54,49,46,.90);border-radius:8px;color:white;font-size:13px;font-weight:600;pointer-events:none;z-index:2;opacity:0;transition:opacity .14s;transform:translate(-50%,-125%);white-space:nowrap}.map-tip.show{opacity:1}
/* 內頁：使用多組柔和莫蘭迪配色，主要資訊優先。 */
.city-header{background:rgba(252,248,242,.95);border-bottom:1px solid var(--line)}.city-header-inner{max-width:930px;padding:0 26px;margin:auto;min-height:72px;display:flex;align-items:center;justify-content:space-between;gap:15px}.back-link{font-size:13px;font-weight:700;white-space:nowrap}.back-link span{font-size:21px;vertical-align:-2px;margin-right:4px}.header-name{font-size:13px;font-weight:700;color:#80766f;text-align:center}.header-share{border:1px solid #cfd7d1;background:#e6ebe6;border-radius:999px;padding:8px 14px;color:#5a6d60;font-size:12px;font-weight:700}.city-main{width:min(100% - 34px,900px);margin:auto}.city-title{text-align:center;padding:40px 0 24px}.city-kicker{font-size:10px;letter-spacing:.19em;color:#9b948d;font-weight:700}.city-title h1{margin:4px 0 0;font-size:36px;letter-spacing:.08em}.notice{padding:11px 15px;background:#f5eee0;color:#917457;font-size:12px;border-radius:11px;margin-bottom:14px;line-height:1.7}.step{border-radius:18px;padding:22px 24px;margin:0 0 13px}.step-town{background:var(--sage)}.step-food{background:var(--rose)}.step-heading{display:flex;align-items:center;gap:10px;margin-bottom:15px}.step-heading h2{margin:0;font-size:18px;letter-spacing:.04em}.step-number{background:rgba(255,255,255,.7);border-radius:10px;display:grid;place-items:center;font-size:12px;font-weight:800;letter-spacing:.05em;width:34px;height:34px}.option-wrap{display:flex;gap:9px;flex-wrap:wrap}.option{padding:11px 15px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;border:1px solid #e1e1d9;background:rgba(255,255,255,.81);color:var(--ink);border-radius:11px;font-size:14px;font-weight:600}.option.active{border-color:#6d8a7b;background:#6d8a7b;color:#fff}.step-food .option.active{border-color:#a37d88;background:#a37d88}.option:disabled{cursor:default;opacity:.7}.choices{margin:30px 0 20px}.choices-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.choices-top h2{font-size:20px;letter-spacing:.04em;margin:0}.choice-count{color:#9a948d;font-size:12px}.choice-list{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.choice-item{display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;min-height:116px;padding:15px;text-align:left;background:#e6e9e0;border:1px solid #e2e3da;border-radius:13px;color:var(--ink);gap:10px}.choice-item:nth-child(5n+2){background:#e7e5ed;border-color:#e0dfe6}.choice-item:nth-child(5n+3){background:#efe2e4;border-color:#e9dfe0}.choice-item:nth-child(5n+4){background:#e6e9e8;border-color:#dfe6e3}.choice-item:nth-child(5n+5){background:#eee6d9;border-color:#e7e0d5}.choice-item.active{outline:2px solid var(--green);outline-offset:-2px}.choice-no{font-size:12px;color:#85847c;font-weight:800}.choice-name{font-size:14px;line-height:1.5;font-weight:700;overflow-wrap:anywhere}.pagination{display:flex;justify-content:flex-end;align-items:center;gap:12px;margin-top:12px;font-size:12px;color:var(--sub)}.pagination button{border:1px solid var(--line);border-radius:9px;background:#fff;padding:7px 12px}.pagination button:disabled{opacity:.3}.detail{display:grid;grid-template-columns:43% 1fr;background:#fff;border:1px solid var(--line);border-radius:19px;overflow:hidden;min-height:305px}.detail-image{min-height:300px;background:#ebe7e0;position:relative}.detail-image img{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover}.photo-empty{position:absolute;inset:0;display:grid;place-items:center;background:#eae5dd;color:#aca49a;font-size:13px}.detail-content{padding:33px 32px;display:flex;flex-direction:column;align-items:flex-start}.detail-category{font-size:12px;background:#e3eadd;color:#617868;border-radius:7px;padding:5px 10px;font-weight:700}.detail-content h2{font-size:26px;line-height:1.4;margin:13px 0 0}.detail-address{font-size:12px;color:#9e9992;margin:6px 0 17px}.detail-description{font-size:14px;line-height:1.9;color:#7c7973;margin:0 0 22px;white-space:pre-line}.detail-actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:auto;width:100%}.primary-action,.secondary-action{min-height:43px;padding:11px 14px;border-radius:10px;font-size:13px;font-weight:700;display:inline-flex;align-items:center;justify-content:space-between;gap:16px}.primary-action{background:#748d7c;border:1px solid #748d7c;color:#fff}.primary-action:disabled{opacity:.45;cursor:default}.secondary-action{border:1px solid #d4d9d4;background:#fff;color:#556a5d}.empty{text-align:center;padding:48px 12px;color:#928e89;font-size:14px}.city-footer{width:min(100% - 34px,900px);margin:40px auto 38px;display:flex;justify-content:center}.share-button{display:flex;align-items:center;justify-content:center;gap:25px;background:#83829a;color:white;border:0;border-radius:11px;padding:13px 20px;min-width:190px;font-size:13px;font-weight:700}.modal-shell{position:fixed;inset:0;background:rgba(32,31,28,.72);z-index:20;display:grid;place-items:center;padding:18px}.modal-panel{width:min(800px,100%);max-height:91dvh;display:flex;flex-direction:column;border-radius:18px;background:#fff;overflow:hidden}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:15px 21px;border-bottom:1px solid var(--line)}.modal-head h2{font-size:17px;margin:0}.modal-close{height:35px;width:35px;border:1px solid var(--line);background:white;border-radius:100%;font-size:24px}.menu-gallery{padding:18px;overflow-y:auto;display:grid;gap:15px}.menu-gallery img{width:100%;height:auto;display:block;border-radius:8px}.menu-gallery p{font-size:13px;color:var(--sub)}.toast{position:fixed;z-index:25;left:50%;bottom:25px;transform:translate(-50%,15px);opacity:0;transition:transform .15s,opacity .15s;border-radius:999px;padding:10px 18px;background:#414c41;color:#fff;font-size:12px;pointer-events:none}.toast.show{transform:translate(-50%,0);opacity:1}
@media(max-width:680px){.map-frame{max-width:none;box-shadow:none}.city-header-inner{padding:0 16px;min-height:64px}.header-name{font-size:10px;max-width:39%;line-height:1.4}.city-title{padding:30px 0 21px}.city-title h1{font-size:30px}.step{padding:17px;border-radius:15px}.step-heading h2{font-size:16px}.option-wrap{gap:7px}.option{padding:10px 13px;font-size:13px}.choice-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.choice-item{min-height:96px;padding:12px}.detail{display:block}.detail-image{min-height:0;height:220px}.detail-content{padding:22px}.detail-content h2{font-size:21px}.detail-actions{display:grid;grid-template-columns:1fr 1fr}.primary-action,.secondary-action{font-size:12px;gap:6px}.map-tip{display:none}.city-footer{margin:30px auto}.share-button{width:100%}}
@media(max-width:340px){.header-name{display:none}.detail-actions{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;scroll-behavior:auto!important}}

/* 手動校對用：在網址加 ?debug=1 才會看到熱區邊線，正式首頁不顯示。 */
.map-hitareas.debug path{fill:rgba(240,110,48,.10);stroke:rgba(225,33,40,.94);stroke-width:2;vector-effect:non-scaling-stroke}
.map-hitareas path{pointer-events:all}

/* 點擊以單一像素分區圖判定，無相互重疊的 SVG path。 */
.map-debug-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;object-fit:fill;z-index:1}
.map-accessible-links{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden;z-index:3}
.map-accessible-links:focus-within{left:8px;top:8px;width:calc(100% - 16px);height:auto;max-height:200px;overflow:auto;display:flex;flex-wrap:wrap;gap:4px;padding:10px;background:#fcf8f2f5;border-radius:12px}
.map-accessible-links a:focus-visible{outline:2px solid #bf766e;padding:6px;border-radius:6px;line-height:1.4}
