:root { color-scheme: light; --ink:#28362f; --muted:#526356; --green:#245339; --paper:#f7f5f0; --line:#d5ddd2; --white:#fffefa; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body { margin:0; color:var(--ink); background:var(--paper); font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; line-height:1.6; }
a { color:var(--green); text-underline-offset:.2em; overflow-wrap:anywhere; }
a:hover { text-decoration-thickness:2px; }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, [tabindex]:focus-visible { outline:3px solid #a74715; outline-offset:4px; }
h1,h2,h3,p { margin-top:0; }
h1 { max-width:18ch; font-size:clamp(1.8rem,4.6vw,3.5rem); line-height:1.15; letter-spacing:-.035em; margin-bottom:1rem; }
h2 { font-size:1.3rem; line-height:1.3; }
h3 { font-size:1.2rem; line-height:1.35; }
.page-shell,.header-inner { width:min(1120px,calc(100% - 3rem)); margin-inline:auto; }
main.page-shell { padding-block:2.5rem 4rem; }
.site-header { background:var(--white); border-bottom:1px solid var(--line); }
.header-inner { display:flex; align-items:center; justify-content:space-between; gap:1.5rem; padding-block:1.1rem; }
.brand { font-weight:750; font-size:1.25rem; text-decoration:none; line-height:1.4; }
.brand span { display:block; font-size:.72rem; letter-spacing:.04em; color:var(--muted); font-weight:500; }
.site-header nav { display:flex; flex-wrap:wrap; gap:1.5rem; }
.site-header nav a { padding:.35rem 0; font-size:.94rem; text-decoration:none; }
.site-header nav a[aria-current="page"] { border-bottom:2px solid var(--green); font-weight:650; }
.skip-link { position:absolute; z-index:10; top:.5rem; left:.5rem; padding:.7rem 1rem; background:var(--green); color:white; transform:translateY(-160%); }
.skip-link:focus { transform:none; }
.demo-banner { background:#ece7d6; font-size:.85rem; padding:.55rem 0; }
.catalogue-intro { padding:.5rem 0 1.5rem; }
.eyebrow { color:var(--green); font-size:.77rem; font-weight:700; letter-spacing:.065em; text-transform:uppercase; margin-bottom:.7rem; }
.intro-copy { color:var(--muted); max-width:64ch; font-size:1.04rem; }
.panel { background:var(--white); border:1px solid var(--line); border-radius:1rem; padding:1.5rem; min-width:0; }
.filter-form { display:grid; grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1fr) auto auto; gap:1.2rem; align-items:start; margin-bottom:2rem; }
.form-field { display:flex; flex-direction:column; min-width:0; }
label { font-size:.85rem; font-weight:650; margin-bottom:.4rem; }
input,select { width:100%; min-width:0; border:1px solid #9cae9e; border-radius:.45rem; background:white; color:var(--ink); font-family:inherit; font-size:16px; padding:.7rem .8rem; min-height:46px; -webkit-appearance:none; }
select { background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%20526356' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right .75rem center; background-size:1rem; padding-right:2.2rem; }
small { font-size:.75rem; color:var(--muted); margin-top:.3rem; }
.filter-form .button { margin-top:1.55rem; }
.filter-form .text-link { margin-top:2.1rem; }
.button { display:inline-flex; justify-content:center; align-items:center; gap:.4rem; padding:.75rem 1rem; min-height:46px; border:1px solid var(--green); border-radius:.5rem; background:var(--green); color:white; font:inherit; font-weight:650; font-size:.9rem; text-decoration:none; text-align:center; cursor:pointer; }
.button:hover { background:#183e2a; text-decoration:none; }
.button-secondary { color:var(--green); background:transparent; }
.button-secondary:hover { color:white; }
.text-link { font-size:.88rem; }
.results-heading { display:flex; align-items:baseline; justify-content:space-between; flex-wrap:wrap; gap:.5rem 1rem; margin-bottom:1.1rem; }
.results-heading h2,.results-heading p { margin:0; }
.results-heading p { color:var(--muted); font-size:.88rem; }
.cafe-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1.25rem; }
.cafe-card { display:flex; flex-direction:column; transition:transform .15s ease, box-shadow .15s ease; }
.cafe-card:hover { transform:translateY(-2px); box-shadow:0 6px 18px rgba(36,83,57,.08); }
.card-header-wrapper { display:flex; justify-content:space-between; align-items:flex-start; gap:.85rem; margin-bottom:.5rem; }
.card-header-content { flex:1; min-width:0; }
.card-thumb-container { flex-shrink:0; width:84px; height:84px; }
.card-thumb { width:84px; height:84px; object-fit:cover; border-radius:.5rem; border:1px solid rgba(0,0,0,.08); box-shadow:0 1px 4px rgba(0,0,0,.06); display:block; transition:transform .15s ease; background:#edf4eb; }
.card-thumb:hover { transform:scale(1.03); }
.card-thumb-fallback { width:84px; height:84px; border-radius:.5rem; background:#edf4eb; border:1px solid #cadbc6; display:flex; align-items:center; justify-content:center; font-size:1.6rem; color:var(--green); }
.card-topline { display:flex; align-items:flex-start; justify-content:space-between; flex-wrap:wrap; gap:.4rem; margin-bottom:.5rem; }
.card-topline .eyebrow { margin:0; }
.card-pills { display:flex; align-items:center; gap:.35rem; flex-wrap:wrap; }
.circle-pill { display:inline-flex; align-items:center; font-size:.72rem; font-weight:750; color:#1b5e20; background:#e8f5e9; border:1px solid #c8e6c9; border-radius:.35rem; padding:.15rem .45rem; line-height:1.2; text-transform:uppercase; letter-spacing:.02em; }
.price-band-badge { display:inline-flex; align-items:center; font-size:.74rem; font-weight:800; border-radius:.35rem; padding:.15rem .45rem; line-height:1.2; letter-spacing:.02em; }
.price-budget { background:#e8f5e9; color:#1b5e20; border:1px solid #c8e6c9; }
.price-moderate { background:#e3f2fd; color:#0d47a1; border:1px solid #bbdefb; }
.price-premium { background:#fff3e0; color:#e65100; border:1px solid #ffe0b2; }
.card-title-row { display:flex; align-items:flex-start; justify-content:space-between; gap:.5rem; margin-bottom:.7rem; }
.card-title-row h3 { margin:0; flex:1; overflow-wrap:anywhere; }
.card-title-row h3 a { color:var(--ink); text-decoration:none; }
.card-title-row h3 a:hover { text-decoration:underline; }
.card-website-btn { display:inline-flex; align-items:center; gap:.25rem; font-size:.74rem; font-weight:750; color:#0d47a1; background:#e3f2fd; border:1px solid #90caf9; border-radius:.35rem; padding:.18rem .55rem; text-decoration:none; white-space:nowrap; flex-shrink:0; line-height:1.3; margin-top:.15rem; transition:background .15s ease, color .15s ease, box-shadow .15s ease; }
.card-website-btn:hover { background:#1565c0; color:white; border-color:#1565c0; text-decoration:none; box-shadow:0 2px 6px rgba(21,101,192,.2); }
.card-summary { font-size:.92rem; overflow-wrap:anywhere; margin-bottom:.5rem; }
.vibe-tags-container { display:flex; flex-wrap:wrap; gap:.35rem; margin:.35rem 0 .55rem; }
.vibe-tag { font-size:.72rem; font-weight:650; color:#245339; background:#edf4eb; border:1px solid #cadbc6; border-radius:.35rem; padding:.15rem .45rem; line-height:1.3; }
.card-food-line { font-size:.83rem; color:var(--ink); margin:.35rem 0 .55rem; line-height:1.4; overflow-wrap:anywhere; }
.card-food-line strong { font-weight:650; color:var(--muted); }
.address { color:var(--muted); font-size:.83rem; overflow-wrap:anywhere; }
.address-container { display:flex; align-items:flex-start; flex-wrap:wrap; gap:.35rem .55rem; }
.address-link { color:inherit; text-decoration:none; border-bottom:1px dashed #7a8d7e; }
.address-link:hover { color:var(--green); border-bottom-style:solid; }
.mini-btn { display:inline-flex; align-items:center; gap:.2rem; font-size:.72rem; font-weight:700; color:var(--green); background:#e7eddf; border:1px solid #c8d7bd; border-radius:.35rem; padding:.25rem .5rem; min-height:32px; text-decoration:none; white-space:nowrap; vertical-align:middle; line-height:1.3; }
.mini-btn:hover { background:var(--green); color:white; border-color:var(--green); text-decoration:none; }
.mini-btn.website-btn { color:#1565c0; background:#e3f2fd; border-color:#bbdefb; }
.mini-btn.website-btn:hover { background:#1565c0; color:white; border-color:#1565c0; }
.friend-take-indicator { font-size:.78rem; color:var(--green); background:#f0f5ee; border:1px solid #d2e0cb; border-radius:.4rem; padding:.3rem .55rem; margin:.4rem 0 .55rem; line-height:1.35; }
.evidence-line { font-size:.78rem; border-top:1px solid var(--line); padding-top:.8rem; overflow-wrap:anywhere; }
.evidence-line span { font-weight:650; }
.detail-link { margin-top:auto; padding-top:.6rem; font-size:.86rem; font-weight:650; }
.badge { display:inline-block; background:#e7eddf; color:#2d4934; border-radius:.3rem; font-size:.7rem; font-weight:700; padding:.18rem .45rem; }
.notice { padding:1rem 1.25rem; border:1px solid #cbbf91; border-radius:.6rem; background:#fff8df; margin-bottom:1.5rem; }
.notice h2 { margin-bottom:.5rem; }
.notice ul { margin-bottom:0; padding-left:1.2rem; }
.validation-errors { border-color:#a74715; }
.empty-state { text-align:center; padding:2.5rem 1.5rem; }
.empty-state h1 { margin-inline:auto; }
.empty-state p { color:var(--muted); }
.pagination { display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:1.2rem; margin-top:2rem; font-size:.9rem; }
.back-link { display:inline-flex; align-items:center; margin-bottom:1.2rem; font-size:.9rem; min-height:40px; }
.detail-heading { margin-bottom:1.2rem; }
.detail-title-row { display:flex; align-items:baseline; flex-wrap:wrap; gap:.6rem 1rem; margin-bottom:.6rem; }
.detail-title-row h1 { margin:0; max-width:25ch; overflow-wrap:anywhere; }
.header-website-btn { display:inline-flex; align-items:center; gap:.35rem; font-size:.86rem; font-weight:750; color:#0d47a1; background:#e3f2fd; border:1px solid #90caf9; border-radius:.45rem; padding:.4rem .85rem; min-height:42px; text-decoration:none; vertical-align:middle; line-height:1.3; transition:background .15s ease, color .15s ease, box-shadow .15s ease; }
.header-website-btn:hover { background:#1565c0; color:white; border-color:#1565c0; text-decoration:none; box-shadow:0 2px 6px rgba(21,101,192,.25); }
.detail-heading .badge { margin-bottom:.8rem; }
.detail-hero-banner { margin-top:.5rem; margin-bottom:1.5rem; width:100%; max-height:360px; overflow:hidden; border-radius:.75rem; border:1px solid var(--line); box-shadow:0 4px 16px rgba(0,0,0,.08); background:#edf4eb; }
.detail-hero-img { width:100%; height:320px; object-fit:cover; display:block; }
.detail-atmosphere-bar { display:flex; flex-direction:column; gap:.85rem; margin-bottom:1.8rem; }
.atmosphere-item { display:flex; flex-wrap:wrap; align-items:center; gap:.5rem .85rem; }
.atmosphere-label { font-size:.8rem; font-weight:750; color:var(--muted); min-width:130px; text-transform:uppercase; letter-spacing:.04em; }
.food-highlight-text { font-size:.92rem; color:var(--ink); font-weight:550; }
.detail-grid { display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.4fr); gap:1.5rem; }
.details-list { margin:0 0 1.4rem; }
.detail-actions { display:flex; flex-wrap:wrap; gap:.75rem; margin-top:1.25rem; }
.details-list > div { padding:.8rem 0; border-bottom:1px solid var(--line); }
.details-list dt { font-size:.8rem; font-weight:700; }
.details-list dd { margin:.25rem 0 0; font-size:.9rem; overflow-wrap:anywhere; }
.muted { color:var(--muted); font-size:.83rem; }

/* Desktop Table Styles */
.table-scroll { max-width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch; border:1px solid var(--line); border-radius:.5rem; }
table { width:100%; border-collapse:collapse; font-size:.85rem; min-width:480px; text-align:left; table-layout:auto; }
th,td { padding:.8rem 1rem; vertical-align:middle; border-bottom:1px solid var(--line); overflow-wrap:normal; word-break:normal; }
thead { background:#edf0e8; }
tbody tr:last-child th,tbody tr:last-child td { border-bottom:0; }
.drink-cell { font-weight:700; white-space:nowrap; color:var(--ink); }
.method-cell { white-space:nowrap; }
.price-cell { font-weight:750; white-space:nowrap; color:var(--green); }
.evidence-cell { font-size:.78rem; color:var(--muted); overflow-wrap:normal; word-break:normal; }

/* Offerings Mobile List */
.offerings-mobile-list { display:none; flex-direction:column; gap:.75rem; margin-top:.75rem; }
.offering-mobile-card { background:#fafaf7; border:1px solid #dbe2d8; border-radius:.55rem; padding:.85rem 1rem; display:flex; flex-direction:column; gap:.4rem; box-shadow:0 1px 4px rgba(36,83,57,.03); }
.offering-mobile-header { display:flex; justify-content:space-between; align-items:center; gap:.5rem; }
.offering-mobile-name { font-size:.98rem; font-weight:750; color:var(--ink); }
.offering-mobile-price { font-size:.95rem; font-weight:800; color:var(--green); background:#edf4eb; border:1px solid #cadbc6; border-radius:.35rem; padding:.15rem .55rem; white-space:nowrap; }
.offering-mobile-body { display:flex; flex-direction:column; gap:.25rem; font-size:.82rem; color:var(--muted); }
.offering-mobile-method { color:var(--ink); font-weight:600; }
.offering-mobile-evidence { font-size:.78rem; color:var(--muted); }

.friends-take-section { margin-top:1.25rem; margin-bottom:1.8rem; border-top:4px solid var(--green); }
.section-header { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:.5rem; margin-bottom:.3rem; }
.section-title-group { display:flex; align-items:center; gap:.55rem; }
.section-title-group h2 { margin:0; font-size:1.35rem; }
.section-icon { font-size:1.3rem; line-height:1; }
.private-badge { font-size:.7rem; font-weight:750; color:#1565c0; background:#e3f2fd; border:1px solid #bbdefb; border-radius:.35rem; padding:.2rem .55rem; text-transform:uppercase; letter-spacing:.04em; }
.section-subtitle { color:var(--muted); font-size:.88rem; margin-bottom:1.4rem; }
.friend-empty-box { background:#fafaf7; border:1px dashed var(--line); border-radius:.65rem; padding:1.4rem 1.25rem; text-align:center; }
.friend-empty-box .empty-copy { font-weight:650; color:var(--ink); margin-bottom:.3rem; font-size:.95rem; }
.friend-empty-box .empty-hint { font-size:.85rem; color:var(--muted); margin:0; }
.friend-reviews-list { display:flex; flex-direction:column; gap:1.25rem; }
.friend-review-card { background:#fafaf7; border:1px solid #dbe2d8; border-left:4px solid var(--green); border-radius:.65rem; padding:1.25rem; box-shadow:0 2px 8px rgba(36,83,57,.04); }
.review-header { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:.5rem; margin-bottom:.6rem; }
.reviewer-meta { display:flex; align-items:center; flex-wrap:wrap; gap:.45rem; }
.friend-name { font-size:1.05rem; color:var(--ink); font-weight:750; }
.verified-friend-pill { font-size:.68rem; font-weight:700; color:var(--green); background:#e7eddf; border:1px solid #c8d7bd; border-radius:.3rem; padding:.1rem .45rem; text-transform:uppercase; }
.visit-context { font-size:.86rem; color:var(--muted); }
.visited-date { font-size:.78rem; color:var(--muted); }
.must-try-box { background:#fff8e8; border:1px solid #f9e2a8; border-radius:.45rem; padding:.55rem .85rem; margin:.65rem 0; font-size:.88rem; display:flex; align-items:center; gap:.45rem; flex-wrap:wrap; }
.must-try-label { color:#8c5a00; font-weight:750; }
.must-try-val { color:#442a00; font-weight:650; }
.review-verdicts { display:flex; flex-wrap:wrap; gap:.6rem 1.4rem; margin:.65rem 0; font-size:.85rem; }
.verdict-item { display:flex; align-items:center; gap:.35rem; }
.verdict-label { font-weight:700; color:var(--muted); }
.variety-pill { font-size:.7rem; font-weight:650; color:var(--muted); background:#eaeee7; border-radius:.3rem; padding:.1rem .4rem; }
.review-content p { margin:0; font-size:.92rem; line-height:1.6; color:var(--ink); }
.prose { max-width:780px; }
.prose h1 { max-width:22ch; }
.prose h2 { margin-top:1.8rem; }
.site-footer { border-top:1px solid var(--line); font-size:.8rem; color:var(--muted); padding-block:1.5rem; }
.site-footer .page-shell { display:flex; justify-content:space-between; gap:1rem; flex-wrap:wrap; }
.site-footer p { margin:0; }
.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; }
.circles-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1.5rem; margin-top:1.5rem; }
.invite-share-box { background:#fafaf7; border:1px solid var(--line); border-radius:.55rem; padding:1rem; margin-top:.75rem; }
.invite-share-box label { font-size:.82rem; font-weight:700; color:var(--ink); display:block; margin-bottom:.4rem; }
.invite-input-row { display:flex; gap:.5rem; }
.invite-input-row input { flex:1; font-family:monospace; font-size:.85rem; padding:.5rem .7rem; border:1px solid var(--line); border-radius:.4rem; background:#fff; }
.button-whatsapp { background:#25d366; border-color:#25d366; color:#fff !important; font-weight:700; display:inline-flex; align-items:center; gap:.4rem; text-decoration:none !important; }
.button-whatsapp:hover { background:#1ebe5d; border-color:#1ebe5d; }
.match-form { display:flex; flex-direction:column; gap:.8rem; margin-top:.75rem; }
.match-form .form-field { display:flex; flex-direction:column; gap:.3rem; }
.match-form label { font-size:.85rem; font-weight:700; }
.match-form input { padding:.6rem .8rem; border:1px solid var(--line); border-radius:.4rem; font-size:16px; }
.match-list { display:flex; flex-direction:column; gap:.85rem; margin-top:.85rem; }
.match-card { background:#fafaf7; border:1px solid #dbe2d8; border-radius:.55rem; padding:.85rem 1rem; transition:border-color .15s ease; }
.match-card:hover { border-color:#1a73e8; }
.match-card-label { display:flex; gap:.75rem; align-items:flex-start; cursor:pointer; }
.match-card-label input[type="checkbox"] { margin-top:.3rem; width:1.15rem; height:1.15rem; accent-color:#1a73e8; }
.match-card-info { flex:1; display:flex; flex-direction:column; gap:.35rem; }
.match-card-header { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:.4rem; }
.match-rating { font-size:.78rem; font-weight:750; color:#1a73e8; background:#e8f0fe; padding:.15rem .5rem; border-radius:.35rem; }
.match-text { margin:0; font-size:.88rem; color:var(--ink); font-style:italic; line-height:1.45; }
.match-dish { font-size:.8rem; font-weight:700; color:#8c5a00; background:#fff8e8; border:1px solid #f9e2a8; padding:.2rem .5rem; border-radius:.35rem; align-self:flex-start; }

/* Sprint 5: Map Toggle & Interactive Leaflet Layer */
.view-switch-bar { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:.5rem; margin-bottom:1.1rem; }
.view-switch-buttons { display:inline-flex; background:#eaeee7; border:1px solid var(--line); border-radius:.55rem; padding:.2rem; gap:.2rem; }
.view-btn { border:0; background:transparent; font-family:inherit; font-size:.85rem; font-weight:700; color:var(--muted); padding:.45rem .85rem; border-radius:.4rem; cursor:pointer; transition:all .15s ease; min-height:38px; }
.view-btn.active { background:var(--white); color:var(--green); box-shadow:0 1px 4px rgba(36,83,57,.12); }
.view-btn:hover:not(.active) { color:var(--ink); background:rgba(255,255,255,.5); }

.map-container { height:520px; width:100%; border-radius:.85rem; overflow:hidden; position:relative; z-index:1; border:1px solid var(--line); box-shadow:0 4px 14px rgba(0,0,0,.06); }
.leaflet-popup-content-wrapper { border-radius:.75rem; padding:0; overflow:hidden; box-shadow:0 6px 20px rgba(0,0,0,.15); }
.leaflet-popup-content { margin:0; width:260px !important; }
.map-popup { display:flex; flex-direction:column; }
.map-popup-img { width:100%; height:120px; object-fit:cover; display:block; background:#edf4eb; }
.map-popup-content { padding:.8rem; display:flex; flex-direction:column; gap:.35rem; }
.map-popup-area { font-size:.72rem; font-weight:700; color:var(--green); text-transform:uppercase; letter-spacing:.04em; }
.map-popup-title { margin:0; font-size:1.05rem; font-weight:750; line-height:1.25; }
.map-popup-title a { color:var(--ink); text-decoration:none; }
.map-popup-title a:hover { text-decoration:underline; }
.map-popup-meta { display:flex; align-items:center; gap:.4rem; margin-top:.2rem; flex-wrap:wrap; }
.custom-coffee-pin { background:var(--green); color:white; border:2px solid white; border-radius:50%; width:36px; height:36px; display:flex; align-items:center; justify-content:center; font-size:18px; box-shadow:0 3px 10px rgba(0,0,0,.3); cursor:pointer; transition:transform .15s ease; }
.custom-coffee-pin:hover { transform:scale(1.15); background:#183e2a; }

/* Sprint 5: "Find My Café Today" Quick Matcher Widget */
.matcher-panel { margin-bottom:2rem; border-top:4px solid var(--green); background:#fcfcf9; }
.matcher-form-grid { display:grid; grid-template-columns:repeat(3, minmax(0,1fr)) minmax(180px, auto); gap:1rem; align-items:end; margin-top:1rem; }
.matcher-cards-grid { display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:1.2rem; margin-top:1rem; }
.matcher-card { background:var(--white); border:1px solid #dbe2d8; border-radius:.65rem; padding:1rem; display:flex; flex-direction:column; gap:.5rem; box-shadow:0 2px 8px rgba(36,83,57,.04); transition:transform .15s ease, border-color .15s ease; }
.matcher-card:hover { transform:translateY(-2px); border-color:var(--green); }
.matcher-card-header { display:flex; justify-content:space-between; align-items:flex-start; gap:.5rem; }
.matcher-card-title { font-size:1.05rem; font-weight:750; margin:0; }
.matcher-card-title a { color:var(--ink); text-decoration:none; }
.matcher-card-title a:hover { text-decoration:underline; }
.match-score-badge { font-size:.72rem; font-weight:800; color:#1b5e20; background:#e8f5e9; border:1px solid #c8e6c9; border-radius:.35rem; padding:.2rem .45rem; white-space:nowrap; }
.match-reasons-list { display:flex; flex-direction:column; gap:.3rem; margin:.3rem 0; }
.match-reason-tag { font-size:.76rem; font-weight:650; color:#245339; background:#edf4eb; border:1px solid #cadbc6; border-radius:.35rem; padding:.2rem .5rem; line-height:1.3; }

/* Sprint 5: In-Context Note Submission Form */
.inline-note-form-box { background:#fafaf7; border:1px solid #dbe2d8; border-radius:.75rem; padding:1.25rem; margin-top:1.25rem; }
.inline-note-form-grid { display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:0.85rem; margin-bottom:0.85rem; }

/* Responsive Breakpoints */
@media (max-width:900px) {
  .filter-form { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
  .filter-form .button,.filter-form .text-link { margin-top:0; }
  .cafe-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .detail-grid { grid-template-columns:minmax(0,1fr); }
  .circles-grid { grid-template-columns:minmax(0,1fr); }
  .matcher-form-grid { grid-template-columns:repeat(2, minmax(0,1fr)); }
  .matcher-cards-grid { grid-template-columns:repeat(2, minmax(0,1fr)); }
}

@media (max-width:600px) {
  .offerings-mobile-list { display:flex; }
  .offerings-desktop-table { display:none; }
  .inline-note-form-grid { grid-template-columns:minmax(0,1fr); }
  .map-container { height:400px; }
}

@media (max-width:560px) {
  .page-shell,.header-inner { width:calc(100% - 1.5rem); }
  .header-inner { align-items:flex-start; flex-direction:column; gap:.7rem; padding-block:.8rem; }
  .site-header nav { gap:1.1rem; width:100%; }
  .site-header nav a { font-size:.9rem; padding:.25rem 0; }
  main.page-shell { padding-block:1.2rem 2.5rem; }

  .filter-form,.cafe-grid,.circles-grid,.matcher-form-grid,.matcher-cards-grid { grid-template-columns:minmax(0,1fr); }
  .filter-form { gap:.85rem; margin-bottom:1.5rem; }
  .filter-form .button { margin-top:0; width:100%; min-height:48px; }
  .panel { padding:1.1rem; border-radius:.85rem; }
  .filter-form .text-link { margin-top:0; text-align:center; display:block; padding:.4rem; }

  .card-header-wrapper { gap:.75rem; }
  .card-thumb-container, .card-thumb, .card-thumb-fallback { width:80px; height:80px; }
  .card-title-row h3 { font-size:1.15rem; }
  .card-topline { flex-direction:column; align-items:flex-start; gap:.25rem; }

  .detail-hero-banner { max-height:220px; border-radius:.6rem; }
  .detail-hero-img { height:200px; }
  .atmosphere-item { flex-direction:column; align-items:flex-start; gap:.25rem; }
  .atmosphere-label { min-width:0; }

  .pagination { gap:.6rem; flex-direction:column; }
  .pagination .button { width:100%; }
  .site-footer .page-shell { flex-direction:column; gap:.4rem; }
  .invite-input-row { flex-direction:column; }
  .invite-input-row .button { width:100%; }
}

@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } }
