.bookshops-layout { display: grid; grid-template-columns: minmax(230px, 300px) minmax(0, 1fr); gap: 1.5rem; align-items: start; }
.bookshops-filters, .bookshops-map-card, .bookshop-detail { padding: 1.25rem; border: 1px solid #e2d8ec; border-radius: 18px; background: #fff; }
.bookshops-filters { display: grid; gap: 1rem; position: sticky; top: 1rem; }
.bookshops-filters input { width: 100%; }
.bookshop-filter-tags { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .6rem; }
.bookshop-filter-tags button { padding: .45rem .65rem; border: 1px solid #ddd4e8; border-radius: 999px; background: #fff; }
.bookshop-filter-tags button.active { color: #fff; background: #6750bd; border-color: #6750bd; }
.bookshops-results { min-width: 0; }
.bookshops-map { min-height: 360px; margin-top: 1rem; border-radius: 13px; background: #f3eff8; }
.bookshops-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.bookshop-card { display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 1rem; padding: 1rem; border: 1px solid #e2d8ec; border-radius: 16px; background: #fff; color: inherit; text-decoration: none; }
.bookshop-card:hover { transform: translateY(-2px); box-shadow: 0 12px 28px rgba(61, 42, 91, .1); }
.bookshop-card img, .bookshop-logo-placeholder { width: 92px; height: 92px; object-fit: contain; border-radius: 12px; background: #f5f1fa; display: grid; place-items: center; font-size: 2rem; }
.bookshop-card p { margin: .35rem 0; }
.bookshop-tags { display: flex; flex-wrap: wrap; gap: .35rem; }
.bookshop-tags span { padding: .3rem .55rem; border-radius: 999px; background: #f0ebfb; color: #5942ad; font-size: .75rem; }
.bookshop-detail { max-width: 1180px; margin: 0 auto; }
.bookshop-detail-unified { padding: 0; }
.bookshop-detail-layout { display: grid; grid-template-columns: minmax(240px, 300px) minmax(0, 1fr); gap: 24px; align-items: start; }
.bookshop-detail-sidebar { position: sticky; top: calc(var(--pc-fixed-header-height, 78px) + 24px); padding: 18px; border: 1px solid rgba(72,60,42,.14); border-radius: 20px; background: #fff; box-shadow: 0 12px 30px rgba(40,34,24,.05); }
.bookshop-detail-logo { display: grid; width: 100%; max-width: 240px; aspect-ratio: 1; margin: 0 auto 14px; padding: 18px; place-items: center; overflow: hidden; border: 1px solid rgba(72,60,42,.12); border-radius: 18px; background: #fff; font-size: 3rem; }
.bookshop-detail-logo img { width: 100%; height: 100%; object-fit: contain; }
.bookshop-detail-sidebar section { margin-top: 18px; padding-top: 12px; border-top: 1px solid rgba(72,60,42,.1); }
.bookshop-detail-sidebar h3 { margin: 0 0 8px; font-size: .82rem; letter-spacing: .04em; text-transform: uppercase; }
.bookshop-detail-sidebar p { margin: 0; line-height: 1.55; }
.bookshop-detail-heading { padding: 22px 24px; border: 1px solid rgba(72,60,42,.14); border-radius: 20px; background: linear-gradient(135deg,#fff 0%,#faf8ff 100%); }
.bookshop-detail-heading h2 { margin: 2px 0 0; font-size: clamp(1.9rem,4vw,3rem); line-height: 1.08; }
.bookshop-detail-main { display: grid; gap: 18px; margin-top: 18px; }
.bookshop-detail-main > section { margin: 0; padding: 20px 22px; border: 1px solid rgba(72,60,42,.14); border-radius: 18px; background: #fff; }
.bookshop-detail-main h2 { margin: 0 0 10px; }.bookshop-detail-main p { margin: 0; line-height: 1.7; white-space: pre-line; }
.bookshop-detail-sidebar .bookshop-actions { display: flex; flex-wrap: wrap; gap: .45rem; }.bookshop-detail-sidebar .bookshop-actions a { padding: .42rem .62rem; border: 1px solid #ddd4e8; border-radius: 999px; color: #47377e; font-size: .82rem; font-weight: 750; text-decoration: none; }
.bookshop-detail-head { display: grid; grid-template-columns: 150px 1fr; gap: 1.5rem; align-items: center; }
.bookshop-detail-head img { width: 150px; height: 150px; object-fit: contain; }
.bookshop-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; margin-top: 1.25rem; }
.bookshop-info-card { padding: 1rem; border-radius: 14px; background: #f8f5fc; }
.bookshop-info-card p { white-space: pre-line; }
@media (max-width: 800px) { .bookshops-layout, .bookshops-grid, .bookshop-detail-grid, .bookshop-detail-layout { grid-template-columns: 1fr; } .bookshops-filters, .bookshop-detail-sidebar { position: static; } }
@media (max-width: 520px) { .bookshop-card, .bookshop-detail-head { grid-template-columns: 1fr; } }
.community-place-tabs { display:flex; justify-content:center; flex-wrap:wrap; gap:.75rem; margin:0 auto 1.25rem; }
.community-place-tabs button { min-width:150px; padding:.7rem 1rem; border:2px solid var(--place-color,#6750bd); border-radius:999px; background:#fff; color:var(--place-color,#6750bd); font-weight:800; }
.community-place-tabs button.is-active { background:var(--place-color,#6750bd); color:#fff; }
.community-place-tabs [data-type="association"] { --place-color:#6750bd; }.community-place-tabs [data-type="bookshop"] { --place-color:#16806f; }.community-place-tabs [data-type="safe"] { --place-color:#c05a2c; }
.community-places-card { position:relative; display:grid; grid-template-columns:92px minmax(0,1fr); gap:1rem; min-height:126px; padding:1rem; border:1px solid #e2d8ec; border-left:5px solid var(--place-color,#6750bd); border-radius:16px; background:#fff; color:inherit; text-decoration:none; }.community-places-card img,.community-places-card .bookshop-logo-placeholder { width:92px;height:92px;object-fit:contain;border-radius:12px;background:#f5f1fa; }.community-places-card h3 { margin:.2rem 0; }.community-places-card p { margin:.35rem 0; }
.community-pin { width:30px;height:30px;border:3px solid #fff;border-radius:50% 50% 50% 0;box-shadow:0 2px 7px rgba(0,0,0,.3);transform:rotate(-45deg); }.community-pin::after { content:'';display:block;width:10px;height:10px;margin:7px;border-radius:50%;background:#fff; }.community-island { display:grid;min-width:115px;padding:.35rem .55rem;border:2px solid #186f9b;border-radius:999px;background:#dff4ff;color:#075776;font-size:.72rem;font-weight:800;text-align:center;box-shadow:0 2px 7px rgba(0,0,0,.22); }
.community-place-tabs + label { display:block; max-width:760px; margin:1.75rem auto .45rem; font-weight:800; }.community-place-tabs + label + input { display:block; width:min(100%,760px); min-height:48px; margin:0 auto 1.75rem; padding:.7rem 1rem; border:1px solid #cfc2df; border-radius:14px; background:#fff; box-shadow:0 5px 18px rgba(61,42,91,.06); font-size:1rem; }.community-place-tabs + label + input:focus { outline:3px solid rgba(103,80,189,.2); border-color:#6750bd; }.community-places-card .association-directory-logo { display:grid; width:92px; height:92px; place-items:center; overflow:hidden; border-radius:12px; background:#f5f1fa; }.community-places-card .association-directory-logo img { width:100%; height:100%; object-fit:contain; }.community-places-card .association-directory-logo span { font-size:2rem; }.community-places-card .eyebrow { margin:0; }.community-places-card .association-directory-location { margin:.35rem 0; }.community-places-card .association-directory-theme-tags { min-height:26px; }
.community-places-page .page-band { padding-block:2.25rem 1.5rem; }.community-places-page main > section { padding-top:1.5rem; }.community-places-page .community-place-tabs { margin-top:0; }.community-places-page .association-directory-grid { margin-top:1rem; }.community-places-page .association-directory-card { width:auto; min-height:250px; height:auto; overflow:hidden; border-left:5px solid var(--place-color); }.community-places-page .association-directory-card-content { display:flex; min-width:0; min-height:0; flex-direction:column; }.community-places-page .association-directory-card h3 { margin:.15rem 0 .45rem; }.community-places-page .association-directory-logo { box-sizing:border-box; }.community-places-page .association-directory-logo img { display:block; max-width:100%; max-height:100%; object-fit:contain; }.community-places-page .association-directory-theme-tags { margin-top:auto; padding-top:.55rem; max-height:58px; overflow:hidden; }
.community-place-toolbar { display:flex; align-items:end; justify-content:space-between; gap:1.25rem; max-width:1180px; margin:0 auto 1.5rem; }.community-place-toolbar .community-place-tabs { justify-content:flex-start; margin:0; }.community-place-search { flex:1 1 380px; max-width:500px; }.community-place-search label { display:block; margin:0 0 .4rem; font-weight:800; }.community-place-search input { width:100%; min-height:46px; padding:.7rem 1rem; border:1px solid #cfc2df; border-radius:14px; background:#fff; box-shadow:0 5px 18px rgba(61,42,91,.06); font-size:1rem; }.community-place-search input:focus { outline:3px solid rgba(103,80,189,.2); border-color:#6750bd; }@media (max-width:760px){.community-place-toolbar{align-items:stretch;flex-direction:column}.community-place-toolbar .community-place-tabs{justify-content:center}.community-place-search{max-width:none}}
.community-place-toolbar > .btn { flex:0 0 auto; margin:0; white-space:nowrap; }.community-place-toolbar .community-place-tabs { flex:0 1 auto; }.community-place-toolbar .community-place-search { margin-left:auto; }@media (max-width:960px){.community-place-toolbar{flex-wrap:wrap}.community-place-toolbar .community-place-search{order:3;flex-basis:100%;max-width:none}}
.community-places-page .association-directory-card { height:auto!important; min-height:365px!important; max-height:none!important; }.community-places-page .association-directory-logo { width:100%!important; height:160px!important; min-height:160px!important; }.community-places-page .association-directory-logo img { width:100%!important; height:100%!important; object-fit:contain!important; }.community-places-page .association-directory-theme-tags { max-height:none!important; overflow:visible!important; padding-bottom:.4rem; }
.community-places-page .association-directory-card { display:flex!important; flex-direction:column!important; height:330px!important; min-height:330px!important; max-height:330px!important; box-sizing:border-box!important; overflow:hidden!important; border:3px solid var(--place-color)!important; border-left-width:7px!important; }.community-places-page .association-directory-logo { box-sizing:border-box!important; height:130px!important; min-height:130px!important; padding:10px!important; }.community-places-page .association-directory-logo img { width:100%!important; height:100%!important; max-width:100%!important; max-height:100%!important; object-fit:contain!important; object-position:center!important; }.community-places-page .association-directory-card-content { flex:1 1 auto!important; overflow:hidden!important; padding:10px 12px 12px!important; }.community-places-page .association-directory-card h3 { display:-webkit-box!important; overflow:hidden!important; -webkit-box-orient:vertical!important; -webkit-line-clamp:2!important; }.community-places-page .association-directory-location { display:block!important; min-height:20px!important; margin:.25rem 0 .35rem!important; line-height:1.35!important; overflow:visible!important; }
.community-places-page .community-place-toolbar { width:100%; max-width:none; }
.community-places-page .community-place-toolbar > .btn { margin-right:1.25rem; }
.community-places-page .community-place-toolbar .community-place-tabs { margin-right:auto; }
.community-places-page .community-place-search { margin-left:auto; }
.community-places-page .bookshops-map-card { padding-top:1.25rem; }
body.community-places-page .association-directory-grid .association-directory-logo { display:grid!important; width:100%!important; height:130px!important; min-height:130px!important; padding:12px!important; place-items:center!important; overflow:hidden!important; box-sizing:border-box!important; }
body.community-places-page .association-directory-grid .association-directory-logo img, body.community-places-page .association-directory-grid .association-directory-logo img[class*='association-logo-'] { display:block!important; width:100%!important; height:100%!important; min-width:0!important; min-height:0!important; max-width:100%!important; max-height:100%!important; margin:0!important; object-fit:contain!important; object-position:center!important; }
.bookshop-actions a.place-contact-icon { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 10px; box-sizing: border-box; border-radius: 50%; }
.place-contact-icon svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.place-contact-icon .social-fill { fill: currentColor; stroke: none; }
.place-contact-icon:focus-visible { outline: 3px solid #6855bb; outline-offset: 3px; }
