:root{--paper-1:#f6efdf;--paper-2:#efe4cf;--card:#fbf5e8;--ink:#1c2a22;--ink-soft:#5d665c;--green:#24513d;--green-deep:#17342a;--terra:#c0562f;--brass:#b3802f;--tile:#2e6e5e;--rose:#c26a4b;--line:#1c2a2229;--line-soft:#1c2a2217;--marble-a:#e8dcc4;--marble-b:#d9c9a8;--check-a:#1c2a2214;--check-b:#1c2a2208;--red:#c0392b;--shadow:0 24px 44px -24px #172a1a59;--radius:18px;--display:"Fraunces", "Noto Sans SC", Georgia, serif;--sans:"Space Grotesk", "Noto Sans SC", system-ui, sans-serif;--sc:"Noto Sans SC", sans-serif;font:17px/1.55 var(--sans);color:var(--ink);background:var(--paper-1);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root[data-theme=malam]{--paper-1:#141a16;--paper-2:#182019;--card:#1c251e;--ink:#efe5cf;--ink-soft:#a9b2a4;--green:#64a17f;--green-deep:#0d1812;--terra:#e08a5f;--brass:#d9a94e;--tile:#6fbfae;--rose:#e08a6b;--line:#efe5cf2e;--line-soft:#efe5cf12;--marble-a:#1e2720;--marble-b:#222d25;--check-a:#efe5cf17;--check-b:#efe5cf09;--red:#e0604e;--shadow:0 24px 44px -24px #000000b3}*,:before,:after{box-sizing:border-box}body{background:var(--paper-1);color:var(--ink);margin:0}h1,h2,h3,p{margin:0}button{font:inherit;color:inherit}img{max-width:100%;display:block}::selection{background:var(--terra);color:var(--paper-1)}a{color:inherit}svg{display:block}.container{width:min(1200px,100% - 64px);margin-inline:auto}.kicker{letter-spacing:.22em;text-transform:uppercase;color:var(--terra);align-items:center;gap:12px;font-size:13px;font-weight:500;display:flex}.kicker__line{background:var(--terra);flex:none;width:44px;height:1px}.chop{background:var(--red);color:#f7ecdf;width:52px;height:52px;font-family:var(--sc);text-align:center;writing-mode:vertical-rl;border-radius:9px;place-items:center;padding:6px;font-size:11px;font-weight:700;line-height:1.15;display:inline-grid;transform:rotate(3deg);box-shadow:inset 0 0 0 2px #f7ecdf80,inset 0 0 0 4px #0000001f}.btn{border:1px solid var(--line);letter-spacing:.02em;cursor:pointer;background:0 0;border-radius:999px;justify-content:center;align-items:center;gap:10px;padding:13px 22px;font-size:15px;font-weight:600;transition:background .25s,color .25s,border-color .25s,transform .2s;display:inline-flex}.btn:hover{transform:translateY(-2px)}.btn:active{transform:translateY(0)}.btn--solid{background:var(--green-deep);color:var(--card);border-color:var(--green-deep)}.btn--solid:hover{background:var(--terra);border-color:var(--terra)}.btn--ghost{color:var(--ink);border-color:var(--line);background:0 0}.btn--ghost:hover{border-color:var(--ink)}.topbar{z-index:20;background:color-mix(in srgb, var(--paper-1) 86%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line-soft);align-items:center;gap:20px;padding:12px clamp(16px,3vw,32px);display:flex;position:sticky;top:0}.topbar__brand{color:inherit;align-items:center;gap:11px;text-decoration:none;display:flex}.topbar__name{font-family:var(--display);letter-spacing:-.02em;font-size:21px;font-weight:700}.topbar__haus{color:var(--terra);font-style:italic}.topbar__links{gap:4px;margin-left:14px;display:flex}.topbar__links a{color:var(--ink-soft);border-radius:999px;padding:8px 14px;font-size:15px;font-weight:500;text-decoration:none;transition:color .2s,background .2s}.topbar__links a:hover{color:var(--ink);background:var(--line-soft)}.topbar__right{align-items:center;gap:10px;margin-left:auto;display:flex}.btn-theme{border:1px solid var(--line);color:var(--ink-soft);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:8px;padding:9px 14px;font-size:13px;font-weight:600;transition:border-color .2s;display:inline-flex}.btn-theme:hover{border-color:var(--ink);color:var(--ink)}.btn-theme__dot{background:var(--brass);width:10px;height:10px;box-shadow:0 0 0 3px color-mix(in srgb, var(--brass) 30%, transparent);border-radius:50%}.hero{position:relative;overflow:hidden}.hero__grid{grid-template-columns:1.15fr .85fr;align-items:center;gap:clamp(24px,5vw,72px);padding:clamp(48px,9vw,110px) clamp(16px,4vw,48px) clamp(40px,7vw,80px);display:grid}.hero__title{font-family:var(--display);letter-spacing:-.03em;color:var(--ink);margin-block:18px;font-size:clamp(46px,7.2vw,92px);font-weight:620;line-height:.98}.hero__title em{color:var(--terra);font-style:italic}.hero__lede{max-width:54ch;color:var(--ink-soft);font-size:clamp(16px,1.2vw,18px);line-height:1.6}.hero__actions{flex-wrap:wrap;gap:12px;margin-top:30px;display:flex}.hero__card{border-radius:var(--radius);background:radial-gradient(circle at 20% 12%, color-mix(in srgb, var(--brass) 14%, transparent), transparent 45%), color-mix(in srgb, var(--paper-2) 78%, transparent);border:1px solid var(--line);box-shadow:var(--shadow);flex-direction:column;justify-content:space-between;align-self:stretch;gap:26px;padding:clamp(20px,2.4vw,30px);display:flex;position:relative;overflow:hidden}.hero__card:before{content:"";opacity:.5;background-image:linear-gradient(var(--check-a) 1px, transparent 1px), linear-gradient(90deg, var(--check-a) 1px, transparent 1px), conic-gradient(from 90deg at 50% 50%, var(--check-b) 25%, transparent 0 50%, var(--check-b) 0 75%, transparent 0);pointer-events:none;background-size:22px 22px,22px 22px,34px 34px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000,#0000 60%);mask-image:linear-gradient(#000,#0000 60%)}.hero__card-intro,.hero__card-foot{z-index:1;justify-content:space-between;align-items:center;display:flex;position:relative}.hero__card-no{font-family:var(--display);letter-spacing:.18em;color:var(--terra);font-size:15px;font-weight:700}.hero__card-zh{font-family:var(--sc);color:var(--ink-soft);letter-spacing:.4em;font-size:15px;font-weight:500}.hero__card-msg{font-family:var(--display);color:var(--ink-soft);font-size:17px;font-style:italic}.cup{z-index:1;width:190px;height:230px;margin:8px auto 0;position:relative}.cup__saucer{background:linear-gradient(180deg, var(--marble-a), var(--marble-b));border:1px solid var(--line);border-radius:50%;width:200px;height:30px;position:absolute;bottom:0;left:50%;transform:translate(-50%);box-shadow:0 18px 30px -18px #00000073}.cup__body{background:radial-gradient(circle at 50% 0%, color-mix(in srgb, var(--terra) 22%, transparent), transparent 46%), linear-gradient(180deg, var(--green), var(--green-deep));border:1px solid var(--line);border-radius:18px 18px 60px 60px/18px 18px 62px 62px;place-items:center;width:158px;height:150px;display:grid;position:absolute;top:52px;left:50%;transform:translate(-50%);box-shadow:inset 0 -14px 26px -12px #00000080,0 24px 34px -20px #00000080}.cup__body:before{content:"";background:color-mix(in srgb, var(--card) 88%, #000);border:1px solid var(--line);border-radius:50%;width:166px;height:30px;position:absolute;top:-14px;box-shadow:inset 0 6px 10px -6px #00000059}.cup__label{z-index:1;font-family:var(--display);letter-spacing:.06em;color:var(--card);font-size:25px;font-weight:700;position:relative}.cup__handle{border:9px solid var(--green);border-left:none;border-radius:0 24px 24px 0/0 40px 40px 0;width:42px;height:64px;position:absolute;top:86px;right:-34px}.cup__steam{background:linear-gradient(var(--ink-soft), transparent);opacity:0;border-radius:3px;width:3px;height:28px;animation:2.6s ease-in-out infinite steam;position:absolute;top:-30px;left:50%}.cup__steam--1{transform:translate(-26px)}.cup__steam--2{animation-delay:.9s;transform:translate(0)}.cup__steam--3{animation-delay:1.8s;transform:translate(26px)}@keyframes steam{0%{opacity:0;transform:translateY(6px)scaleY(.6)}50%{opacity:.7}to{opacity:0;transform:translateY(-14px)scaleY(1)}}.ticker{border-block:1px solid var(--line);background:color-mix(in srgb, var(--green-deep) 96%, #000);color:var(--card);white-space:nowrap;overflow:hidden}.ticker__track{will-change:transform;align-items:center;padding-block:11px;animation:30s linear infinite marquee;display:inline-flex}.ticker__item{font-family:var(--display);letter-spacing:.28em;padding-inline:26px;font-size:14px;font-weight:500;position:relative}.ticker__item:after{content:"☕";opacity:.7;font-size:12px;position:absolute;top:50%;right:-4px;transform:translateY(-50%)}@keyframes marquee{to{transform:translate(-50%)}}.cities{border-bottom:1px solid var(--line-soft);padding:clamp(64px,9vw,110px) 0}.sec-head{flex-direction:column;gap:10px;display:flex}.sec-head__title{font-family:var(--display);letter-spacing:-.02em;font-size:clamp(32px,4.4vw,52px);font-weight:640;line-height:1.05}.sec-head__title em{color:var(--terra);font-style:italic}.sec-head__sub{max-width:60ch;color:var(--ink-soft)}.city-strip{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:20px;margin-top:44px;display:grid}.city-strip__hint{color:var(--ink-soft);letter-spacing:.04em;margin-top:18px;font-size:12.5px}.city{text-align:left;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);cursor:pointer;color:inherit;font:inherit;flex-direction:column;padding:0;transition:transform .25s,box-shadow .25s,border-color .25s;display:flex;position:relative;overflow:hidden}.city:hover{box-shadow:var(--shadow);border-color:var(--accent);transform:translateY(-5px)rotate(-.6deg)}.city--active{border-color:var(--accent);box-shadow:var(--shadow)}.city--active:after{content:"";background:var(--accent);height:4px;position:absolute;inset:auto 0 0}.city__band{background:repeating-linear-gradient(45deg, var(--accent) 0 14px, color-mix(in srgb, var(--accent) 78%, #000) 14px 28px);color:#f7ecdf;justify-content:space-between;align-items:center;gap:8px;padding:14px 18px;display:flex}.city__no{font-family:var(--display);letter-spacing:.08em;font-size:26px;font-weight:700}.city__zh{font-family:var(--sc);letter-spacing:.3em;opacity:.92;font-size:15px}.city__body{flex-direction:column;gap:3px;padding:20px 18px 16px;display:flex}.city__name{font-family:var(--display);letter-spacing:-.01em;font-size:25px;font-weight:700}.city__ep{font-family:var(--display);color:var(--accent);font-size:15px;font-style:italic}.city__region{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin-top:10px;font-size:12.5px}.city__go{border-top:1px dashed var(--line);color:var(--ink-soft);margin-top:auto;padding:12px 18px;font-size:13px;font-weight:600;transition:color .2s}.city:hover .city__go{color:var(--accent)}.city .chop{width:46px;height:46px;font-size:10px;animation:.35s cubic-bezier(.34,1.56,.64,1) pop-in;position:absolute;top:48px;right:14px;box-shadow:0 14px 24px -12px #00000080}@keyframes pop-in{0%{opacity:0;transform:rotate(3deg)scale(.4)}to{opacity:1;transform:rotate(3deg)scale(1)}}.detail{padding:clamp(56px,8vw,96px) 0}.detail__wrap{background:var(--card);border:1px solid var(--line);border-radius:calc(var(--radius) + 6px);box-shadow:var(--shadow);padding:clamp(22px,4vw,52px);position:relative;overflow:hidden}.detail__wrap:before{content:"";background:repeating-linear-gradient(45deg, var(--accent) 0 12px, color-mix(in srgb, var(--accent) 80%, #000) 12px 24px);height:8px;position:absolute;inset:0 0 auto}.detail__head{flex-direction:column;gap:14px;display:flex}.detail__title-row{flex-wrap:wrap;align-items:center;gap:22px;display:flex}.detail__name{font-family:var(--display);letter-spacing:-.02em;font-size:clamp(40px,6vw,68px);font-weight:680;line-height:1}.detail__zh{font-family:var(--sc);color:var(--ink-soft);letter-spacing:.25em;vertical-align:middle;margin-left:14px;font-size:.42em;font-weight:500}.detail__tagline{font-family:var(--display);color:var(--accent);max-width:46ch;font-size:clamp(17px,1.6vw,21px);font-style:italic}.chips{flex-wrap:wrap;gap:10px;margin-top:4px;display:flex}.chip{background:var(--accent-soft);border:1px solid color-mix(in srgb, var(--accent) 26%, transparent);color:var(--ink);border-radius:999px;align-items:baseline;gap:8px;padding:9px 14px;font-size:14px;font-weight:500;display:inline-flex}.chip__k{letter-spacing:.12em;text-transform:uppercase;color:color-mix(in srgb, var(--accent) 74%, var(--ink-soft));font-size:11px;font-weight:600}.detail__blurb{max-width:68ch;color:var(--ink-soft);line-height:1.7}.detail__tabs{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:8px;margin-top:18px;padding-bottom:14px;display:flex}.tab{border:1px solid var(--line);color:var(--ink-soft);cursor:pointer;background:0 0;border-radius:12px;align-items:baseline;gap:8px;padding:10px 18px;transition:background .2s,color .2s,border-color .2s,transform .2s;display:flex}.tab:hover{color:var(--ink);border-color:var(--accent);transform:translateY(-1px)}.tab--active{background:var(--accent);border-color:var(--accent);color:#f7ecdf}.tab__label{font-size:15px;font-weight:700}.tab__sub{letter-spacing:.08em;text-transform:uppercase;opacity:.8;font-size:12px}.panel{padding-block:34px 10px;animation:.45s both panel-in}@keyframes panel-in{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.makan-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.food{border:1px solid var(--line);border-radius:var(--radius);background:color-mix(in srgb, var(--paper-1) 55%, var(--card));padding:20px 20px 22px;transition:transform .2s,box-shadow .2s;position:relative;overflow:hidden}.food:hover{box-shadow:var(--shadow);transform:translateY(-3px)}.food:after{content:"";background:var(--accent);width:4px;position:absolute;top:0;bottom:0;left:0}.food__top{justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;display:flex}.food__tag{letter-spacing:.1em;text-transform:uppercase;color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:4px 10px;font-size:11.5px;font-weight:600}.food__zh{font-family:var(--sc);color:var(--ink-soft);font-size:16px}.food__name{font-family:var(--display);letter-spacing:-.01em;font-size:23px;font-weight:680}.food__desc{color:var(--ink-soft);margin-top:8px;font-size:14.5px;line-height:1.6}.minum__list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.drink{border-top:1px solid var(--line-soft);padding:18px 4px}.drink:first-child{border-top:none}.drink__row{align-items:baseline;gap:14px;display:flex}.drink__no{font-family:var(--display);color:var(--accent);flex:none;font-size:16px;font-weight:700}.drink__name{font-family:var(--display);letter-spacing:-.01em;flex:none;font-size:22px;font-weight:680}.drink__zh{font-family:var(--sc);color:var(--ink-soft);margin-left:10px;font-size:15px;font-weight:400}.drink__leader{border-bottom:2px dotted var(--line);flex:1;transform:translateY(-4px)}.drink__cat{letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);flex:none;font-size:11.5px;font-weight:600}.drink__desc{color:var(--ink-soft);max-width:62ch;margin-top:6px;padding-left:30px;font-size:14.5px}.jalan{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;margin:0;padding:0;list-style:none;display:grid}.place{border:1px solid var(--line);border-radius:var(--radius);grid-template-columns:52px 1fr;gap:16px;padding:20px;transition:transform .2s,box-shadow .2s;display:grid}.place:hover{box-shadow:var(--shadow);transform:translateY(-3px)}.place__no{font-family:var(--display);color:var(--accent);opacity:.9;font-size:30px;font-weight:720;line-height:1}.place__name{font-family:var(--display);font-size:20px;font-weight:680}.place__desc{color:var(--ink-soft);margin-top:6px;font-size:14px;line-height:1.55}.tips{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.tip{border:1px solid var(--line);border-radius:var(--radius);background:color-mix(in srgb, var(--paper-1) 55%, var(--card));align-items:flex-start;gap:18px;padding:18px 20px;display:flex}.tip__no{font-family:var(--display);color:var(--accent);background:var(--accent-soft);border-radius:12px;flex:none;place-items:center;width:38px;height:38px;font-size:17px;font-weight:720;display:grid}.tip__text{color:var(--ink);padding-top:6px;font-size:15.5px;line-height:1.6}.kot{border-radius:var(--radius);background:radial-gradient(circle at 88% 12%, color-mix(in srgb, var(--brass) 16%, transparent), transparent 44%), var(--accent-soft);border-left:5px solid var(--accent);margin:40px 0 0;padding:30px 34px 26px 40px;position:relative}.kot__mark{font-family:var(--display);color:var(--accent);opacity:.55;font-size:72px;line-height:1;position:absolute;top:-6px;left:14px}.kot__text{font-family:var(--display);letter-spacing:-.01em;color:var(--ink);font-size:clamp(20px,2.6vw,28px);font-style:italic;font-weight:560}.kot__by{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);margin-top:10px;font-size:12px;display:block}.detail__foot{flex-wrap:wrap;align-items:center;gap:18px;margin-top:34px;display:flex}.detail__foot-note{color:var(--ink-soft);max-width:40ch;font-size:13.5px}.gloss{z-index:50;pointer-events:none;position:fixed;inset:0}.gloss__backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);opacity:0;background:#0a100c8c;transition:opacity .3s;position:absolute;inset:0}.gloss__sheet{background:var(--card);border:1px solid var(--line);border-bottom:none;border-radius:24px 24px 0 0;width:min(680px,100%);max-height:min(84svh,720px);padding:clamp(20px,4vw,34px);transition:transform .4s cubic-bezier(.22,1,.36,1);position:absolute;inset:auto 0 0 50%;overflow-y:auto;transform:translate(-50%,104%);box-shadow:0 -20px 60px -20px #00000080}.gloss--open{pointer-events:auto}.gloss--open .gloss__backdrop{opacity:1}.gloss--open .gloss__sheet{transform:translate(-50%)}.gloss__head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:16px;padding-bottom:18px;display:flex}.gloss__title{font-family:var(--display);letter-spacing:-.02em;margin-top:6px;font-size:30px;font-weight:680}.gloss__sub{color:var(--ink-soft);margin-top:6px;font-size:14.5px}.gloss__close{border:1px solid var(--line);color:var(--ink-soft);cursor:pointer;background:0 0;border-radius:999px;flex:none;padding:9px 15px;font-size:13px;font-weight:600;transition:border-color .2s,color .2s}.gloss__close:hover{color:var(--ink);border-color:var(--ink)}.gloss__list{margin:0;padding:0;list-style:none}.gloss__term{border-bottom:1px dashed var(--line);grid-template-columns:210px 1fr;gap:18px;padding:16px 2px;display:grid}.gloss__word{align-items:baseline;gap:10px;display:flex}.gloss__term-name{font-family:var(--display);letter-spacing:-.01em;font-size:21px;font-weight:680}.gloss__zh{font-family:var(--sc);color:var(--ink-soft);font-size:14px}.gloss__def{color:var(--ink-soft);font-size:14.5px;line-height:1.55}.gloss__foot{font-family:var(--display);color:var(--terra);margin-top:20px;font-size:16px;font-style:italic}.footer{background:var(--green-deep);color:var(--card);margin-top:clamp(24px,4vw,60px)}.footer__row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:24px;padding-block:52px 40px;display:flex}.footer__brand{align-items:center;gap:18px;display:flex}.footer__logo{filter:drop-shadow(0 14px 22px #0006)}.footer__name{font-family:var(--display);letter-spacing:-.02em;font-size:26px;font-weight:700}.footer__haus{color:var(--brass);font-style:italic}.footer__phrase{color:color-mix(in srgb, var(--card) 66%, transparent);max-width:40ch;font-size:14.5px}.footer__cta{flex-wrap:wrap;gap:10px;display:flex}.footer .btn--solid{background:var(--brass);border-color:var(--brass);color:var(--green-deep)}.footer .btn--solid:hover{background:var(--card);border-color:var(--card)}.footer .btn--ghost{color:var(--card);border-color:color-mix(in srgb, var(--card) 40%, transparent)}.footer .btn--ghost:hover{border-color:var(--card);background:#ffffff14}.footer__base{border-top:1px solid color-mix(in srgb, var(--card) 18%, transparent);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding-block:22px;display:flex}.footer__chop .chop{width:44px;height:44px;font-size:10px}.footer__meta{letter-spacing:.06em;color:color-mix(in srgb, var(--card) 55%, transparent);font-size:13px}.reveal{opacity:0;transform:translateY(22px)}.reveal--in{opacity:1;transition:opacity .6s,transform .6s cubic-bezier(.22,1,.36,1);transition-delay:calc(var(--i,0) * 70ms);transform:none}@media (width<=820px){.hero__grid{grid-template-columns:1fr}.hero__card{min-height:320px}.topbar__links{display:none}.gloss__term{grid-template-columns:1fr;gap:6px}}@media (width<=520px){.container{width:calc(100% - 40px)}.topbar__cta{display:none}.detail__foot{flex-direction:column;align-items:flex-start}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.reveal{opacity:1;transform:none}}
