:root{color-scheme:light;--ink:#1f2522;--muted:#687069;--paper:#f7f2e8;--surface:#fffdfa;--surface-strong:#efe4d3;--line:#ded5c8;--coffee:#6f4e37;--leaf:#496b5a;--berry:#a85d46;--gold:#d6a536;--blue:#2e4e58;--focus:#1e6fff;--shadow:0 18px 42px #1f25221f;--soft-shadow:0 8px 22px #1f252214;--serif:"Noto Serif TC", "Songti TC", "PMingLiU", Georgia, serif;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif}*{box-sizing:border-box}[hidden]{display:none!important}body{color:var(--ink);background:var(--paper);margin:0;line-height:1.6}a{color:inherit}a:hover{color:var(--leaf)}img{max-width:100%;height:auto}button,input,select,textarea{font:inherit}:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.skip-link{z-index:20;background:var(--ink);color:#fff;border-radius:6px;padding:.65rem 1rem;position:absolute;top:-4rem;left:1rem}.skip-link:focus{top:1rem}.shell{width:min(1160px,100% - 32px);margin-inline:auto}.site-header{z-index:10;border-top:4px solid var(--gold);backdrop-filter:blur(12px);background:#f7f2e8f5;border-bottom:1px solid #1f25221f;position:sticky;top:0}.nav,.footer-grid{justify-content:space-between;align-items:center;gap:1rem;display:flex}.nav{min-height:60px}.brand{color:var(--ink);align-items:center;gap:.65rem;text-decoration:none;display:inline-flex}.brand-mark{object-fit:contain;object-position:center;flex:0 0 36px;width:36px;height:36px}.brand strong{font-family:var(--serif);letter-spacing:0;font-size:1.05rem}.brand small{color:var(--muted);font-size:.72rem;font-weight:700;display:block}.nav-links,.site-footer nav,.chip-row,.actions,.quick-chips,.active-filters{flex-wrap:wrap;gap:.6rem;display:flex}.nav-links a,.site-footer a{min-height:32px;color:var(--muted);border-radius:8px;align-items:center;padding:.24rem .5rem;font-weight:750;text-decoration:none;display:inline-flex}.nav-links a:hover,.site-footer a:hover{color:var(--ink);background:#d6a5362e}.nav-menu-button{background:var(--surface);width:38px;height:38px;color:var(--ink);cursor:pointer;border:1px solid #1f252229;border-radius:8px;place-items:center;display:none}.nav-menu-button span[aria-hidden=true]{background:currentColor;border-radius:999px;width:20px;height:2px;display:block}.nav-menu-button span[aria-hidden=true]+span[aria-hidden=true]{margin-top:5px}.hero{background:linear-gradient(90deg, #f7f2e8eb 0%, #f7f2e8e6 37%, #f7f2e8c2 58%, #f7f2e894 100%), url(/images/home-hero-banner.webp) left center / cover no-repeat, var(--surface-strong);border-bottom:1px solid var(--line);padding:clamp(2.1rem,6vw,5.2rem) 0 clamp(2rem,4vw,3rem)}.hero-grid{grid-template-columns:minmax(0,1.08fr) minmax(300px,.92fr);align-items:stretch;gap:clamp(1.5rem,4vw,2.5rem);display:grid}.eyebrow{color:var(--leaf);letter-spacing:0;margin:0 0 .6rem;font-weight:900}h1,h2,h3{letter-spacing:0;margin:0 0 .8rem;line-height:1.15}h1,h2{color:var(--ink);font-family:var(--serif)}h1{max-width:11ch;font-size:clamp(2.35rem,5vw,4.8rem);line-height:1.04}h2{font-size:clamp(1.45rem,2.7vw,2.35rem)}h3{font-size:1.16rem}.lede{color:#555e57;max-width:64ch;font-size:1.1rem}.home-search,.panel,.card,.form-box,.shortcut,.source-card{background:var(--surface);border:1px solid var(--line);box-shadow:var(--soft-shadow);border-radius:8px}.home-search{box-shadow:var(--shadow);margin-top:1.3rem;padding:.8rem}.home-search-row{grid-template-columns:minmax(0,1fr) minmax(150px,210px) auto;gap:.65rem;display:grid}.search-input-wrap{position:relative}.search-input-wrap span{color:var(--muted);font-size:.9rem;font-weight:900;position:absolute;top:50%;left:.85rem;transform:translateY(-50%)}.home-search input{padding-left:3.2rem}.quick-chips{margin-top:.75rem}.hero-card{background:var(--surface);min-height:100%;box-shadow:var(--shadow);border:1px solid #1f25221f;border-radius:8px;display:grid;overflow:hidden}.hero-card-art{color:#fffdfa;background:linear-gradient(180deg, #1f25221a, #1f2522d1), url(/images/methodology-hero-banner.webp) 68% center / cover no-repeat, linear-gradient(135deg, var(--coffee), var(--gold) 36%, var(--leaf) 72%, var(--ink));align-items:end;min-height:230px;padding:1.1rem;display:grid}.hero-card-art p{margin:0}.hero-stats{background:var(--line);grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;display:grid}.hero-stat{background:var(--surface);padding:.9rem}.hero-stat strong{color:var(--ink);font-size:1.35rem;display:block}.hero-stat span{color:var(--muted);font-size:.84rem;font-weight:750}.panel{padding:clamp(1rem,3vw,1.35rem)}.card{flex-direction:column;gap:.8rem;padding:1rem;display:flex;position:relative;overflow:hidden}.card:before{background:linear-gradient(90deg, var(--gold), var(--leaf));content:"";height:6px;margin:-1rem -1rem 0;display:block}.card p,.panel p{margin:0}.card h2 a,.card h3 a,.story-feature h2 a{text-decoration:none}.card h2 a:hover,.card h2 a:focus-visible,.card h3 a:hover,.card h3 a:focus-visible,.story-feature h2 a:hover,.story-feature h2 a:focus-visible{text-underline-offset:.18em;text-decoration:underline .08em}.section{padding:clamp(2rem,5vw,4rem) 0}.section.compact{padding-top:clamp(1.5rem,4vw,2.5rem)}.section-head{justify-content:space-between;align-items:end;gap:1rem;margin-bottom:1rem;display:flex}.section-head a,.text-link{color:var(--leaf);text-underline-offset:.2em;font-weight:850;text-decoration-thickness:2px}.grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.story-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.story-card{align-content:start}.story-feature-grid{grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);align-items:stretch;gap:1rem;display:grid}.story-feature{min-height:360px;box-shadow:var(--soft-shadow);background:linear-gradient(135deg,#f8edcae0,#edf4eec7),url(/images/hong-kong-coffee-map-treasure.jpg) 50%/cover;border:1px solid #533e2738;border-radius:8px;align-content:end;gap:1rem;padding:clamp(1.2rem,3vw,2rem);display:grid}.story-feature h2{max-width:780px;margin-bottom:0;font-size:clamp(2rem,4vw,3.8rem)}.story-feature p{color:#4f4739;max-width:680px;margin-bottom:0;font-weight:650}.story-hero .lede{max-width:860px}.story-hero h1{max-width:none;font-size:3.4rem}.prose{font-size:1.04rem;line-height:1.82}.prose h2{margin-top:2rem;margin-bottom:.55rem;font-size:clamp(1.45rem,2.4vw,2.2rem)}.prose h2:first-child{margin-top:0}.prose p,.prose ul{margin-bottom:1rem}.prose li+li{margin-top:.35rem}.story-references{border-top:1px solid var(--line);margin-top:2.2rem;padding-top:1.15rem}.story-references h2{font-size:1.2rem}.story-references ul{gap:.45rem;margin-bottom:.7rem;padding-left:1.1rem;display:grid}.story-pagination{grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem;margin-top:2rem;display:grid}.story-pagination-link{text-align:left;white-space:normal;align-content:center;gap:.25rem;min-height:88px;display:grid}.story-pagination-link span{color:var(--muted);font-size:.8rem}.story-pagination-link strong{line-height:1.35}.story-pagination-next{text-align:right}.draft-tag{color:#80530b;background:#fff4cf;border-color:#b77e22}.story-aside{align-self:start;position:sticky;top:104px}.stacked-actions{gap:.7rem;margin-bottom:1.4rem;display:grid}.shortcut-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:.75rem;display:grid}.shortcut{align-content:start;gap:.55rem;min-height:116px;padding:.9rem;text-decoration:none;display:grid}.shortcut-mark{background:var(--tint);width:38px;height:38px;color:var(--tone);border-radius:8px;place-items:center;font-size:.78rem;font-weight:900;display:grid}.shortcut b{line-height:1.2}.roadmap-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.roadmap-card{border:1px solid var(--line);background:var(--surface);min-height:190px;box-shadow:var(--soft-shadow);border-radius:8px;flex-direction:column;align-items:flex-start;gap:.7rem;padding:1rem;display:flex}.roadmap-card.active{background:#fff8e1;border-color:#d6a536ad}.roadmap-card h3,.roadmap-card p{margin:0}.meta{color:var(--muted);font-size:.92rem}.tag,.status,.filter-chip{border:1px solid var(--line);color:#4f5a52;background:#fff;border-radius:999px;align-items:center;gap:.3rem;min-height:34px;padding:.32rem .68rem;font-size:.86rem;font-weight:800;text-decoration:none;display:inline-flex}.status{color:var(--leaf);background:#edf4ee;border-color:#496b5a59}.status-muted{color:#665f54;background:#f5efe5;border-color:#6870693d}.source-badges{flex-wrap:wrap;gap:.45rem;display:flex}.source-badge{width:34px;height:34px;color:var(--ink);background:#fff;border:1px solid #1f252229;border-radius:999px;place-items:center;font-size:.68rem;font-weight:900;text-decoration:none;display:inline-grid;box-shadow:0 4px 10px #1f25220f}.source-badge:hover{color:var(--leaf);border-color:#496b5a73}.button{border:1px solid var(--gold);background:var(--gold);min-height:46px;color:var(--ink);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;padding:.68rem 1rem;font-weight:900;text-decoration:none;display:inline-flex}.button.secondary{color:var(--ink);background:0 0;border-color:#1f25222e}.button:hover{color:var(--ink);filter:brightness(.98)}.filters{grid-template-columns:minmax(220px,1fr) repeat(3,minmax(150px,210px)) auto;align-items:end;gap:.8rem;margin:1rem 0 .7rem;display:grid}.field{gap:.35rem;display:grid}.field label{color:var(--muted);font-size:.88rem;font-weight:850}.field input,.field select,.field textarea,.home-search input,.home-search select{border:1px solid var(--line);width:100%;min-height:46px;color:var(--ink);background:#fff;border-radius:8px;padding:.62rem .72rem}.results-note{color:var(--muted);margin:.2rem 0 0}.listing-layout{grid-template-columns:300px minmax(0,1fr);align-items:start;gap:1.1rem;display:grid}.listing-layout .panel{position:sticky;top:104px}.listing-layout .filters{grid-template-columns:1fr}.listing-results{gap:1rem;display:grid}.view-toggle{border:1px solid var(--line);background:var(--surface-strong);border-radius:8px;grid-template-columns:repeat(2,minmax(92px,1fr));align-self:center;padding:3px;display:inline-grid}.view-toggle a{min-height:40px;color:var(--muted);border-radius:6px;justify-content:center;align-items:center;gap:.45rem;padding:.45rem .8rem;font-weight:850;text-decoration:none;display:inline-flex}.view-toggle a[aria-current=page]{background:var(--surface);color:var(--ink);box-shadow:0 2px 8px #1f25221a}.cafe-map{gap:1rem;display:grid}.cafe-map-head{justify-content:space-between;align-items:end;gap:1rem;display:flex}.cafe-map-head h2,.cafe-map-head p{margin-bottom:0}.cafe-map-stage{aspect-ratio:4/3;width:100%;box-shadow:var(--soft-shadow);isolation:isolate;background:#d2a65b;border:1px solid #4b3e2b6b;border-radius:8px;position:relative;overflow:hidden}.cafe-map-stage:after{z-index:2;pointer-events:none;content:"";position:absolute;inset:0;box-shadow:inset 0 0 42px #553c1c33,inset 0 0 2px #fff6d3e6}.cafe-map-artwork{z-index:1;object-fit:fill;width:100%;height:100%;transition:filter .15s;position:absolute;inset:0}.hong-kong-map{z-index:2;width:100%;height:100%;position:absolute;inset:0}.map-districts [data-map-district]{cursor:pointer}.map-districts [data-map-district] path{fill:#0000;stroke:#0000;stroke-width:2px;opacity:1;pointer-events:all;vector-effect:non-scaling-stroke;transition:filter .15s,opacity .15s}.map-districts [data-map-district]:hover path,.map-districts [data-map-district]:focus-visible path,.cafe-map[data-active-district=central-western] [data-map-district=central-western],.cafe-map[data-active-district=wan-chai] [data-map-district=wan-chai],.cafe-map[data-active-district=eastern] [data-map-district=eastern],.cafe-map[data-active-district=southern] [data-map-district=southern],.cafe-map[data-active-district=yau-tsim-mong] [data-map-district=yau-tsim-mong],.cafe-map[data-active-district=sham-shui-po] [data-map-district=sham-shui-po],.cafe-map[data-active-district=kowloon-city] [data-map-district=kowloon-city],.cafe-map[data-active-district=wong-tai-sin] [data-map-district=wong-tai-sin],.cafe-map[data-active-district=kwun-tong] [data-map-district=kwun-tong],.cafe-map[data-active-district=tsuen-wan] [data-map-district=tsuen-wan],.cafe-map[data-active-district=tuen-mun] [data-map-district=tuen-mun],.cafe-map[data-active-district=yuen-long] [data-map-district=yuen-long],.cafe-map[data-active-district=north] [data-map-district=north],.cafe-map[data-active-district=tai-po] [data-map-district=tai-po],.cafe-map[data-active-district=sai-kung] [data-map-district=sai-kung],.cafe-map[data-active-district=sha-tin] [data-map-district=sha-tin],.cafe-map[data-active-district=kwai-tsing] [data-map-district=kwai-tsing],.cafe-map[data-active-district=islands] [data-map-district=islands]{outline:none}.map-districts [data-map-district]:hover path,.map-districts [data-map-district]:focus-visible path,.cafe-map[data-active-district=central-western] [data-map-district=central-western] path,.cafe-map[data-active-district=wan-chai] [data-map-district=wan-chai] path,.cafe-map[data-active-district=eastern] [data-map-district=eastern] path,.cafe-map[data-active-district=southern] [data-map-district=southern] path,.cafe-map[data-active-district=yau-tsim-mong] [data-map-district=yau-tsim-mong] path,.cafe-map[data-active-district=sham-shui-po] [data-map-district=sham-shui-po] path,.cafe-map[data-active-district=kowloon-city] [data-map-district=kowloon-city] path,.cafe-map[data-active-district=wong-tai-sin] [data-map-district=wong-tai-sin] path,.cafe-map[data-active-district=kwun-tong] [data-map-district=kwun-tong] path,.cafe-map[data-active-district=tsuen-wan] [data-map-district=tsuen-wan] path,.cafe-map[data-active-district=tuen-mun] [data-map-district=tuen-mun] path,.cafe-map[data-active-district=yuen-long] [data-map-district=yuen-long] path,.cafe-map[data-active-district=north] [data-map-district=north] path,.cafe-map[data-active-district=tai-po] [data-map-district=tai-po] path,.cafe-map[data-active-district=sai-kung] [data-map-district=sai-kung] path,.cafe-map[data-active-district=sha-tin] [data-map-district=sha-tin] path,.cafe-map[data-active-district=kwai-tsing] [data-map-district=kwai-tsing] path,.cafe-map[data-active-district=islands] [data-map-district=islands] path{fill:#f8dc89a3;stroke:#0000;filter:brightness(1.08);opacity:1}.map-district-popover{left:var(--district-x);top:var(--district-y);z-index:4;color:#352b20;pointer-events:none;white-space:nowrap;background:#f8e7b8f5;border:1px solid #44362594;border-radius:6px;justify-content:center;align-items:center;gap:.32rem;min-width:116px;padding:.45rem .62rem;font-size:.78rem;font-weight:800;display:flex;position:absolute;transform:translate(-50%,calc(-100% - 12px));box-shadow:0 5px 14px #4436253d}.map-district-popover:after{content:"";background:#f8e7b8f5;border-bottom:1px solid #44362594;border-right:1px solid #44362594;width:9px;height:9px;position:absolute;top:100%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.map-district-popover strong{color:#fff6dc;background:#3e3226;border-radius:50%;place-items:center;width:26px;height:26px;font-size:.8rem;display:grid}.cafe-map-status{color:#66543e;min-height:28px;font-size:.92rem;font-weight:750}.map-filter-records{display:none}.map-data-credit{color:var(--muted);margin:0;font-size:.78rem}.map-data-credit a{color:var(--leaf);font-weight:800}.detail-hero{border-bottom:1px solid var(--line);background:linear-gradient(135deg,#d6a53629,#f7f2e8f5 58%,#496b5a1f),#fffdf8;padding:2.4rem 0}.detail-hero-cafes{background:linear-gradient(90deg,#f7f2e8fa 0%,#f7f2e8f0 40%,#f7f2e89e 68%,#f7f2e857 100%),url(/images/cafes-hero-banner.webp) 50%/cover no-repeat,#fffdf8;align-items:center;min-height:260px;display:flex}.detail-hero-beans,.detail-hero-roasters,.detail-hero-stories,.detail-hero-methodology{background:linear-gradient(90deg, #f7f2e8fa 0%, #f7f2e8f0 40%, #f7f2e89e 68%, #f7f2e857 100%), var(--hero-image) center / cover no-repeat, #fffdf8;align-items:center;min-height:260px;display:flex}.detail-hero-beans{--hero-image:url(/images/beans-hero-banner.webp)}.detail-hero-roasters{--hero-image:url(/images/roasters-hero-banner.webp)}.detail-hero-stories{--hero-image:url(/images/stories-hero-banner.webp)}.detail-hero-methodology{--hero-image:url(/images/methodology-hero-banner.webp)}.detail-grid{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:1.2rem;display:grid}.source-block{border-left:4px solid var(--gold);background:#fff8e1;border-radius:0 8px 8px 0;padding:.9rem 1rem}.source-card{padding:1rem}.site-footer{border-top:1px solid var(--line);background:var(--surface);color:var(--muted);padding:2rem 0}.site-footer p{max-width:68ch;margin:.4rem 0 0}.empty{border:1px dashed var(--line);color:var(--muted);border-radius:8px;padding:1rem;display:none}.form-box{padding:1rem}.clean-list{color:#4f5a52;gap:.7rem;margin:0;padding-left:1.1rem;display:grid}.source-flow{counter-reset:source-step}.source-flow article{padding-top:3.1rem;position:relative}.source-flow article:before{background:var(--ink);color:#fffdfa;counter-increment:source-step;content:counter(source-step);border-radius:999px;place-items:center;width:34px;height:34px;font-weight:900;display:grid;position:absolute;top:1rem;left:1rem}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=960px){.hero-grid,.detail-grid,.listing-layout,.grid,.story-grid,.story-feature-grid,.roadmap-grid,.grid.two{grid-template-columns:1fr}.listing-layout .panel,.story-aside{position:static}.listing-layout[data-active-view=map] .panel{order:2}.listing-layout[data-active-view=map] .listing-results{order:1}.shortcut-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=820px){.footer-grid,.section-head,.cafe-map-head{flex-direction:column;align-items:flex-start}.nav{min-height:58px;position:relative}.brand-mark{flex-basis:34px;width:34px;height:34px}.brand small{display:none}.nav-menu-button{margin-left:auto;display:grid}.nav-links{z-index:12;border:1px solid var(--line);width:min(260px,100vw - 32px);box-shadow:var(--shadow);background:#fffdfafa;border-radius:8px;gap:.2rem;padding:.4rem;display:none;position:absolute;top:calc(100% - 6px);right:0}.nav[data-nav-open] .nav-links{display:grid}.nav-links a{justify-content:flex-start;width:100%;min-height:42px;padding:.58rem .7rem}.home-search-row,.filters{grid-template-columns:1fr}.hero{background:linear-gradient(90deg, #f7f2e8f5 0%, #f7f2e8eb 56%, #f7f2e89e 100%), url(/images/home-hero-banner.webp) 32% center / cover no-repeat, var(--surface-strong)}h1{max-width:12ch}.view-toggle{width:100%}.detail-hero-cafes,.detail-hero-beans,.detail-hero-roasters,.detail-hero-stories,.detail-hero-methodology{background:linear-gradient(90deg, #f7f2e8fa 0%, #f7f2e8eb 48%, #f7f2e894 76%, #f7f2e842 100%), var(--hero-image) 64% center / cover no-repeat, #fffdf8;min-height:250px}.detail-hero-cafes .lede,.detail-hero-beans .lede,.detail-hero-roasters .lede,.detail-hero-stories .lede,.detail-hero-methodology .lede{max-width:24rem}}@media (width<=560px){.story-hero h1{font-size:2.25rem;line-height:1.14}.detail-hero-cafes,.detail-hero-beans,.detail-hero-roasters,.detail-hero-stories,.detail-hero-methodology{background:linear-gradient(90deg, #f7f2e8fa 0%, #f7f2e8e6 50%, #f7f2e870 100%), var(--hero-image) 72% center / cover no-repeat, #fffdf8}.story-pagination{grid-template-columns:1fr}.story-pagination-next{text-align:left}.hero-stats,.shortcut-grid{grid-template-columns:1fr}.map-district-popover{min-width:98px;padding:.34rem .46rem;font-size:.7rem;transform:translate(-50%,calc(-100% - 8px))}}
