.coffee-map{--coffee-bg: linear-gradient( 145deg, rgba(251, 242, 227, .96), rgba(236, 220, 199, .92) );--coffee-panel: rgba(255, 250, 243, .82);--coffee-panel-strong: rgba(92, 53, 31, .92);--coffee-border: rgba(108, 74, 53, .2);--coffee-text: #342117;--coffee-text-soft: rgba(52, 33, 23, .72);--coffee-accent: #8f5d37;--coffee-accent-strong: #6a4024;--coffee-shadow: 0 18px 44px rgba(80, 47, 28, .16);color:var(--coffee-text);margin:28px 0 40px}.dark .coffee-map{--coffee-bg: linear-gradient( 145deg, rgba(30, 23, 19, .98), rgba(18, 14, 12, .96) );--coffee-panel: rgba(35, 27, 23, .9);--coffee-panel-strong: rgba(240, 200, 156, .92);--coffee-border: rgba(201, 168, 132, .18);--coffee-text: #f2dfca;--coffee-text-soft: rgba(242, 223, 202, .72);--coffee-accent: #cfa06d;--coffee-accent-strong: #f0c89c;--coffee-shadow: 0 24px 56px rgba(0, 0, 0, .38)}.coffee-map__frame{background:var(--coffee-bg);border:1px solid var(--coffee-border);border-radius:28px;box-shadow:var(--coffee-shadow);overflow:hidden}.coffee-map__stack{display:grid;gap:20px;padding:28px}.coffee-map__hero{display:grid;gap:12px}.coffee-map__eyebrow{align-items:center;color:var(--coffee-text-soft);display:inline-flex;font-size:12px;font-weight:700;gap:8px;letter-spacing:.18em;text-transform:uppercase}.coffee-map__eyebrow:before{background:var(--coffee-accent);border-radius:999px;content:"";display:block;height:8px;width:8px}.coffee-map__title{font-size:clamp(28px,4vw,44px);line-height:1.05;margin:0}.coffee-map__summary,.coffee-map__helper,.coffee-map__detail-text,.coffee-map__detail-goal,.coffee-map__meta dd,.coffee-map__empty,.coffee-map__callout p{color:var(--coffee-text-soft)}.coffee-map__summary,.coffee-map__helper{margin:0;max-width:72ch}.coffee-map__panel{backdrop-filter:blur(14px);background:var(--coffee-panel);border:1px solid rgba(255,255,255,.5);border-radius:24px;overflow:hidden}.dark .coffee-map__panel{border-color:#c9a8841f}.coffee-map__map-panel{display:grid;gap:18px;padding:22px}.coffee-map__panel-head{align-items:baseline;display:flex;gap:12px;justify-content:space-between}.coffee-map__panel-tools{align-items:center;display:flex;flex-wrap:wrap;gap:12px;justify-content:flex-end}.coffee-map__panel-head h3,.coffee-map__detail-panel h3,.coffee-map__gallery-title{font-size:18px;margin:0}.coffee-map__panel-head span{color:var(--coffee-text-soft);font-size:13px}.coffee-map__zoom-controls{align-items:center;display:inline-flex;gap:8px}.coffee-map__zoom-button,.coffee-map__zoom-value{align-items:center;background:#fff7ece6;border:1px solid rgba(113,74,44,.14);border-radius:999px;color:var(--coffee-accent-strong);cursor:pointer;display:inline-flex;font-size:13px;font-weight:700;height:34px;justify-content:center;min-width:34px;padding:0 12px}.coffee-map__zoom-value{min-width:72px}.dark .coffee-map__zoom-button,.dark .coffee-map__zoom-value,.dark .coffee-map__marker-label,.dark .coffee-map__legend li,.dark .coffee-map__tag,.dark .coffee-map__action--secondary,.dark .coffee-map__modal-close{background:#382b23e6;border-color:#c9a88429;color:var(--coffee-text)}.coffee-map__viewport{aspect-ratio:1664 / 972;border:1px solid rgba(139,98,61,.16);border-radius:22px;overflow:hidden;position:relative;touch-action:none;user-select:none}.dark .coffee-map__viewport{border-color:#c9a88424}.coffee-map__canvas{background:#ece9e3 url(/preview/coffee-sharing-fuqing.png) center 36% / 104% auto no-repeat;cursor:grab;height:701px;left:0;overflow:hidden;position:absolute;top:0;transform-origin:top left;width:1200px}.dark .coffee-map__canvas{background:#ece9e3 url(/preview/coffee-sharing-fuqing.png) center 36% / 104% auto no-repeat}.coffee-map__canvas--dragging{cursor:grabbing}.coffee-map__routes{inset:0;position:absolute;pointer-events:none}.coffee-map__canvas:after{content:"";inset:0;background:none;pointer-events:none;position:absolute;z-index:1}.coffee-map__routes{z-index:2}.coffee-map__routes svg{display:block}.coffee-map__routes polyline{fill:none;stroke:#714a2c4d;stroke-dasharray:8 10;stroke-linecap:round;stroke-width:2}.coffee-map__anchor-line{stroke:#8f5d3757;stroke-dasharray:5 7;stroke-linecap:round;stroke-width:2}.coffee-map__anchor-dot{fill:#ffc569f0;stroke:#8a5328b8;stroke-width:2}.dark .coffee-map__anchor-line{stroke:#f0c89c33}.dark .coffee-map__anchor-dot{fill:#f0c89cd6;stroke:#3b2d25db}.coffee-map__marker{align-items:center;background:transparent;border:none;cursor:pointer;display:inline-flex;flex-direction:column;gap:8px;padding:0;position:absolute;transform:translate(-50%,-50%);z-index:3}.coffee-map__marker-recommended{align-items:center;background:transparent;border:none;border-radius:0;box-shadow:none;display:inline-flex;font-size:20px;height:auto;justify-content:center;line-height:1;margin-bottom:-6px;text-shadow:0 6px 14px rgba(181,118,55,.24);width:auto}.coffee-map__marker-pin{align-items:center;background:#fff9f0f0;border:2px solid rgba(113,74,44,.34);border-radius:999px;box-shadow:0 12px 30px #5f38222e;color:var(--coffee-accent-strong);display:inline-flex;font-size:12px;font-weight:800;height:44px;justify-content:center;transition:transform .16s ease,background-color .16s ease,border-color .16s ease;width:44px}.coffee-map__marker-pin--recommended{background:linear-gradient(180deg,#fff0d3fa,#ffe3b7f5);border-color:#b97f3e61;box-shadow:0 14px 32px #b5763733,0 0 0 6px #ffd8a62e;color:#8a5328}.dark .coffee-map__marker-pin{background:#322720f5;border-color:#c9a8843d;color:var(--coffee-text)}.dark .coffee-map__marker-pin--recommended{background:linear-gradient(180deg,#6c4f34fa,#563f2afa);border-color:#f0c89c4d;box-shadow:0 14px 32px #00000042,0 0 0 6px #f0c89c14;color:#f7ddbd}.dark .coffee-map__marker-recommended{text-shadow:0 6px 14px rgba(0,0,0,.34)}.coffee-map__marker-label{background:#fff9f0cc;border:1px solid rgba(113,74,44,.12);border-radius:999px;font-size:11px;font-weight:700;line-height:1;max-width:132px;overflow:hidden;padding:6px 10px;text-overflow:ellipsis;white-space:nowrap}.coffee-map__marker-label--recommended{background:#fff1daf0;border-color:#c18a4a3d;box-shadow:0 8px 20px #b576371f;color:#8a5328}.dark .coffee-map__marker-label--recommended{background:#563f2aeb;border-color:#f0c89c33;color:#f7ddbd}.coffee-map__marker:hover .coffee-map__marker-pin:not(.coffee-map__marker-pin--recommended),.coffee-map__marker[aria-pressed=true] .coffee-map__marker-pin:not(.coffee-map__marker-pin--recommended){background:#fff9f0fa;border-color:#8f5d3770;box-shadow:0 16px 30px #5f382224;color:var(--coffee-accent-strong);transform:translateY(-2px) scale(1.04)}.coffee-map__marker:hover .coffee-map__marker-pin--recommended,.coffee-map__marker[aria-pressed=true] .coffee-map__marker-pin--recommended{background:linear-gradient(180deg,#f8e4c0fa,#f0d2a4f5);border-color:#b97f3e7a;color:#7a4820;transform:translateY(-2px) scale(1.04)}.dark .coffee-map__marker:hover .coffee-map__marker-pin:not(.coffee-map__marker-pin--recommended),.dark .coffee-map__marker[aria-pressed=true] .coffee-map__marker-pin:not(.coffee-map__marker-pin--recommended){background:#382b23f5;border-color:#c9a88447;color:var(--coffee-text)}.dark .coffee-map__marker:hover .coffee-map__marker-pin--recommended,.dark .coffee-map__marker[aria-pressed=true] .coffee-map__marker-pin--recommended{background:linear-gradient(180deg,#785a3cfa,#624830fa);border-color:#f0c89c4d;color:#f7ddbd}.coffee-map__marker[aria-pressed=true]{z-index:4}.coffee-map__marker--preeee:hover .coffee-map__marker-pin--recommended,.coffee-map__marker--preeee[aria-pressed=true] .coffee-map__marker-pin--recommended{background:linear-gradient(180deg,#fff0d3fa,#ffe3b7f5);border-color:#b97f3e61;color:#8a5328;transform:none}.dark .coffee-map__marker--preeee:hover .coffee-map__marker-pin--recommended,.dark .coffee-map__marker--preeee[aria-pressed=true] .coffee-map__marker-pin--recommended{background:linear-gradient(180deg,#6c4f34fa,#563f2afa);border-color:#f0c89c4d;color:#f7ddbd}.coffee-map__actions{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.coffee-map__action{align-items:center;border-radius:22px;display:flex;gap:14px;min-height:74px;padding:16px 18px;position:relative;text-decoration:none;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease,background-color .16s ease}.coffee-map__action,.coffee-map__action:visited,.coffee-map__action:hover,.coffee-map__action:active{text-decoration:none}.coffee-map__action:hover{transform:translateY(-1px)}.coffee-map__action-icon{align-items:center;border-radius:16px;color:inherit;display:inline-flex;flex:0 0 auto;font-size:18px;height:40px;justify-content:center;width:40px}.coffee-map__action-copy{display:grid;gap:4px;min-width:0}.coffee-map__action-title{color:inherit;font-size:15px;font-weight:800;line-height:1.1}.coffee-map__action-note{color:inherit;font-size:12px;font-weight:600;line-height:1.3}.coffee-map__action--primary,.coffee-map__action--primary:visited,.coffee-map__action--primary:hover,.coffee-map__action--primary:active{background:linear-gradient(135deg,#ff6d2d,#fc4c02);box-shadow:0 16px 28px #fc4c0238;color:#fff5ee}.coffee-map__action--primary .coffee-map__action-icon{background:#fff5ee2e;box-shadow:inset 0 1px #ffffff29}.coffee-map__action--primary .coffee-map__action-note{color:#fff5eec7}.coffee-map__action--secondary,.coffee-map__action--secondary:visited,.coffee-map__action--secondary:hover,.coffee-map__action--secondary:active{background:linear-gradient(180deg,#fff5eefa,#ffede2f0);border:1px solid rgba(252,76,2,.18);box-shadow:inset 0 1px #ffffff85,0 10px 24px #fc4c0214;color:#a33b05}.coffee-map__action--secondary .coffee-map__action-icon{background:#fc4c021a}.coffee-map__action--secondary .coffee-map__action-note{color:#7b3c1bb8}.dark .coffee-map__action--primary,.dark .coffee-map__action--primary:visited,.dark .coffee-map__action--primary:hover,.dark .coffee-map__action--primary:active{color:#fff5ee}.dark .coffee-map__action--primary .coffee-map__action-icon{background:#fff5ee1f}.dark .coffee-map__action--primary .coffee-map__action-note{color:#fff5eeb8}.dark .coffee-map__action--secondary,.dark .coffee-map__action--secondary:visited,.dark .coffee-map__action--secondary:hover,.dark .coffee-map__action--secondary:active{background:linear-gradient(180deg,#432a1ff5,#301f17f5);border-color:#fc4c0233;box-shadow:inset 0 1px #ffffff0a,0 12px 28px #0000002e;color:#ffd8c4}.dark .coffee-map__action--secondary .coffee-map__action-icon{background:#fc4c0224}.dark .coffee-map__action--secondary .coffee-map__action-note{color:#ffd8c4b3}.coffee-map__title-row{align-items:center;display:flex;gap:10px;min-width:0}.coffee-map__title-action,.coffee-map__title-action:visited,.coffee-map__title-action:hover,.coffee-map__title-action:active{display:inline-flex;flex:0 0 auto;text-decoration:none}.coffee-map__title-action-icon{border-radius:8px;box-shadow:0 8px 18px #fc4c0224;display:block;height:28px;object-fit:contain;transition:transform .16s ease,box-shadow .16s ease,filter .16s ease;width:28px}.coffee-map__title-action:hover .coffee-map__title-action-icon{box-shadow:0 10px 20px #fc4c023d;filter:saturate(1.04);transform:translateY(-1px)}.dark .coffee-map__title-action-icon{box-shadow:0 8px 18px #0000003d}.coffee-map__legend{color:var(--coffee-text-soft);display:grid;gap:14px}.coffee-map__legend-status{font-size:13px;justify-self:end;text-align:right}.coffee-map__legend ul{align-items:stretch;display:grid;gap:12px;grid-template-columns:repeat(3,minmax(0,1fr));justify-items:stretch;list-style:none;margin:0;padding:0;width:100%}.coffee-map__tags{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(108px,max-content));justify-content:start;list-style:none;margin:0!important;padding:0!important}.coffee-map__legend li,.coffee-map__tag{background:#fff7ecb3;border:1px solid rgba(113,74,44,.12);border-radius:999px;font-size:12px;font-weight:600;padding:6px 10px}.coffee-map__legend li{align-items:center;box-sizing:border-box;display:flex;justify-content:center;line-height:1;min-height:44px;min-width:0;overflow:hidden;padding:10px 16px;text-align:center;text-overflow:ellipsis;white-space:nowrap;width:100%}.coffee-map__tag{align-items:center;backdrop-filter:blur(8px);background:#fff9f2e6;border:1px solid rgba(143,93,55,.1);border-radius:16px;box-shadow:inset 0 1px #ffffff3d;display:inline-flex;gap:8px;line-height:1.1;margin-top:8px;min-height:40px;padding:8px 12px}.coffee-map__tag-dot{background:linear-gradient(135deg,#b77544,#8f5d37);border-radius:999px;box-shadow:0 0 0 4px #b775441a;display:inline-flex;flex:0 0 auto;height:8px;width:8px}.coffee-map__tag:nth-child(3n+2) .coffee-map__tag-dot{background:linear-gradient(135deg,#9f6d4d,#d39b63);box-shadow:0 0 0 3px #9f6d4d1f}.coffee-map__tag:nth-child(3n) .coffee-map__tag-dot{background:linear-gradient(135deg,#6f8b68,#9cb58f);box-shadow:0 0 0 3px #6f8b6824}.coffee-map__tag-label{color:var(--coffee-text);font-size:13px;font-weight:700;letter-spacing:.01em;white-space:normal}.dark .coffee-map__tag{background:#34261feb;border-color:#c9a8841f;box-shadow:inset 0 1px #ffffff0a}.dark .coffee-map__tag-dot{box-shadow:0 0 0 3px #f0c89c1f}.dark .coffee-map__tag:nth-child(3n+2) .coffee-map__tag-dot{box-shadow:0 0 0 3px #d39b6324}.dark .coffee-map__tag:nth-child(3n) .coffee-map__tag-dot{box-shadow:0 0 0 3px #9cb58f1f}.coffee-map__detail-head{display:grid;gap:4px}.coffee-map__detail-head p,.coffee-map__detail-text,.coffee-map__detail-goal{margin:0}.coffee-map__detail-head h3{font-size:clamp(28px,4vw,40px);line-height:1}.coffee-map__detail-head p{font-size:14px}.coffee-map__detail-address{color:var(--coffee-text-soft);font-size:13px;line-height:1.45}.coffee-map__gallery{display:grid;gap:8px}.coffee-map__gallery-main,.coffee-map__empty{align-items:end;background:linear-gradient(180deg,#53311f24,#53311f57),linear-gradient(135deg,#fff0dceb,#c19872d1);border-radius:20px;min-height:216px;overflow:hidden;padding:14px;position:relative}.coffee-map__gallery-main--interactive{border:none;cursor:zoom-in;text-align:left;width:100%}.dark .coffee-map__gallery-main,.dark .coffee-map__empty{background:linear-gradient(180deg,#0e0a082e,#0e0a0861),linear-gradient(135deg,#4a382beb,#1c1612eb)}.coffee-map__gallery-main img{height:100%;inset:0;object-fit:cover;position:absolute;width:100%}.coffee-map__gallery-caption,.coffee-map__empty strong{background:#2f1c12b8;border-radius:14px;color:#fff6eb;display:inline-flex;font-size:12px;font-weight:700;max-width:calc(100% - 8px);padding:8px 10px;position:relative;z-index:1}.coffee-map__gallery-expand{background:#130c08bd;border-radius:999px;color:#fff6eb;font-size:11px;font-weight:700;padding:7px 10px;position:absolute;right:12px;top:12px;z-index:1}.dark .coffee-map__gallery-caption,.dark .coffee-map__empty strong{background:#0b0806bd;color:var(--coffee-text)}.dark .coffee-map__gallery-expand{background:#f7e4ce24;color:var(--coffee-text)}.coffee-map__empty{align-items:center;border:1px dashed rgba(255,246,233,.56);display:flex;flex-direction:column;gap:10px;justify-content:center;text-align:center}.coffee-map__thumbnails{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(88px,1fr))}.coffee-map__thumbnail{background:#fff7ecdb;border:1px solid rgba(113,74,44,.12);border-radius:16px;cursor:pointer;min-height:80px;overflow:hidden;padding:0;position:relative}.coffee-map__thumbnail img{height:100%;inset:0;object-fit:cover;position:absolute;width:100%}.coffee-map__thumbnail[aria-pressed=true]{box-shadow:inset 0 0 0 2px var(--coffee-accent-strong)}.coffee-map__thumbnail span{align-items:end;background:linear-gradient(180deg,transparent,rgba(42,25,16,.76));color:#fff6eb;display:flex;font-size:11px;font-weight:700;height:100%;inset:0;padding:8px;position:absolute}.coffee-map__meta{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr));margin:0}.coffee-map__meta dt{color:var(--coffee-text-soft);font-size:11px;font-weight:700;letter-spacing:.06em;margin-bottom:2px;text-transform:uppercase}.coffee-map__meta dd{font-size:13px;line-height:1.45;margin:0}.coffee-map__detail-copy{display:grid;gap:8px}.coffee-map__detail-text,.coffee-map__detail-goal{font-size:14px;line-height:1.55}.coffee-map__modal-backdrop{align-items:center;background:#26160e8a;backdrop-filter:blur(12px);display:flex;inset:0;justify-content:center;padding:24px;position:fixed;z-index:999}.dark .coffee-map__modal-backdrop{background:#040302b8}.coffee-map__modal{background:#fff9f1fa;border:1px solid rgba(113,74,44,.14);border-radius:24px;box-shadow:0 32px 80px #1f100a47;display:grid;gap:14px;max-height:min(90vh,960px);max-width:min(820px,100%);overflow-y:auto;padding:18px;width:100%}.dark .coffee-map__modal{background:#1c1613fa;border-color:#c9a88424}.coffee-map__modal-header{align-items:start;display:flex;gap:12px;justify-content:space-between}.coffee-map__modal-close{align-items:center;background:#fff7ece6;border:1px solid rgba(113,74,44,.12);border-radius:999px;color:var(--coffee-accent-strong);cursor:pointer;display:inline-flex;flex:0 0 auto;font-size:22px;height:38px;justify-content:center;line-height:1;width:38px}.coffee-map__image-viewer-backdrop{align-items:center;background:#0a0806c7;display:flex;inset:0;justify-content:center;padding:24px;position:absolute;z-index:2}.coffee-map__image-viewer{background:#fffbf6fa;border:1px solid rgba(113,74,44,.12);border-radius:24px;display:grid;gap:18px;grid-template-rows:auto minmax(0,1fr);max-height:min(82vh,960px);max-width:min(1080px,100%);overflow:hidden;padding:18px;width:100%}.dark .coffee-map__image-viewer{background:#1c1613fa;border-color:#c9a88424}.coffee-map__image-viewer-head{align-items:center;display:flex;gap:16px;justify-content:space-between}.coffee-map__image-viewer-head strong{color:var(--coffee-text);font-size:14px}.coffee-map__image-viewer-tools{align-items:center;display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.coffee-map__image-viewer-stage{background:linear-gradient(180deg,#53311f1f,#53311f47),linear-gradient(135deg,#fff0dceb,#c19872d1);border-radius:20px;display:flex;overscroll-behavior:contain;overflow:auto;padding:28px}.dark .coffee-map__image-viewer-stage{background:linear-gradient(180deg,#0e0a0829,#0e0a0857),linear-gradient(135deg,#4a382beb,#1c1612eb)}.coffee-map__image-viewer-content{display:flex;margin:auto}.coffee-map__image-viewer-stage img{display:block;height:auto;max-height:none;max-width:none;object-fit:contain;transition:width .16s ease}@media (max-width: 960px){.coffee-map__meta{grid-template-columns:1fr}}@media (max-width: 640px){.coffee-map__stack{padding:20px}.coffee-map__panel-tools{justify-content:flex-start}.coffee-map__map-panel,.coffee-map__modal{padding:18px}.coffee-map__viewport{aspect-ratio:1 / 1.05}.coffee-map__modal-backdrop,.coffee-map__image-viewer-backdrop,.coffee-map__image-viewer{padding:16px}.coffee-map__image-viewer-head{align-items:flex-start;flex-direction:column}.coffee-map__image-viewer-tools{width:100%}.coffee-map__image-viewer-stage{padding:16px}.coffee-map__actions{grid-template-columns:1fr}.coffee-map__title-row{gap:8px}.coffee-map__tags{grid-template-columns:repeat(auto-fit,minmax(96px,1fr))}.coffee-map__tag{min-height:36px;padding:8px 10px}.coffee-map__legend-status{justify-self:start;text-align:left}.coffee-map__legend ul{gap:8px}.coffee-map__legend li{font-size:11px;padding:8px 10px}}
