/* Local Business Location Card - front-end styles. All rules scoped under .bloc
   Accent color is themeable per instance via the --blc-accent custom property. */

.bloc, .bloc * { box-sizing: border-box; }

.bloc {
  --blc-accent:#1a73e8;
  --ink:#202124; --ink-2:#5f6368; --line:#dadce0;
  --open:#1e8e3e; --closed:#d93025; --star:#fbbc04; --hover:#f1f3f4;
  font-family:'Roboto','Segoe UI',Arial,Helvetica,sans-serif;
  color:var(--ink);
  -webkit-font-smoothing:antialiased;
  line-height:1.4;
  width:100%;
  max-width:960px;
  margin:24px auto;
}

.bloc .bloc-wrap {
  display:flex;
  align-items:stretch;
  background:#fff;
  border:1px solid var(--line);
  border-radius:16px;
  overflow:hidden;
  box-shadow:0 1px 3px rgba(60,64,67,.16), 0 4px 18px rgba(60,64,67,.08);
  min-height:var(--blc-minh,472px);
  position:relative;
}

/* map */
.bloc .bloc-map { position:relative; flex:1 1 56%; min-width:0; background:#e8eaed; }
.bloc .bloc-map iframe { display:block; width:100%; height:100%; min-height:260px; border:0; }
.bloc .bloc-map-open {
  position:absolute; left:12px; bottom:12px;
  display:inline-flex; align-items:center; gap:8px;
  background:#fff; color:var(--ink); text-decoration:none;
  font-size:13px; font-weight:500; padding:8px 12px;
  border-radius:8px; box-shadow:0 1px 3px rgba(60,64,67,.3);
}
.bloc .bloc-map-open:hover { background:#f8f9fa; }
.bloc .bloc-g { width:16px; height:16px; flex:none; }

/* card */
.bloc .bloc-card { flex:0 0 386px; display:flex; flex-direction:column; padding:24px 24px 20px; }
.bloc .bloc-name { margin:0; font-size:22px; font-weight:500; letter-spacing:-.2px; line-height:1.25; color:var(--ink); }
.bloc .bloc-rating { display:flex; align-items:center; gap:6px; margin-top:8px; flex-wrap:wrap; }
.bloc .bloc-rate-num { font-size:14px; font-weight:500; color:#e37400; }
.bloc .bloc-stars { display:inline-flex; gap:1px; }
.bloc .bloc-stars svg { width:15px; height:15px; fill:var(--star); }
.bloc .bloc-reviews { font-size:14px; color:var(--blc-accent); text-decoration:none; }
.bloc .bloc-reviews:hover { text-decoration:underline; }
.bloc .bloc-cat { margin:6px 0 0; font-size:14px; color:var(--ink-2); }

/* action row */
.bloc .bloc-actions { display:flex; gap:6px; margin:20px 0 4px; }
.bloc .bloc-act {
  flex:1 1 0; display:flex; flex-direction:column; align-items:center; gap:7px;
  padding:10px 4px 6px; background:none; border:0; border-radius:10px; cursor:pointer;
  text-decoration:none; color:var(--blc-accent); font:inherit;
  transition:background .15s ease;
}
.bloc .bloc-act:hover { background:var(--hover); }
.bloc .bloc-ic { display:inline-flex; align-items:center; justify-content:center; width:42px; height:42px; border:1px solid var(--line); border-radius:50%; }
.bloc .bloc-ic svg { width:20px; height:20px; fill:var(--blc-accent); }
.bloc .bloc-act-label { font-size:12.5px; font-weight:500; color:var(--ink-2); }
.bloc .bloc-act--primary .bloc-ic { background:var(--blc-accent); border-color:var(--blc-accent); }
.bloc .bloc-act--primary .bloc-ic svg { fill:#fff; }
.bloc .bloc-act--primary .bloc-act-label { color:var(--blc-accent); }

/* detail rows */
.bloc .bloc-details { list-style:none; margin:16px 0 0; padding:14px 0 4px; border-top:1px solid var(--line); }
.bloc .bloc-row { display:flex; align-items:flex-start; gap:14px; padding:9px 0; font-size:14px; }
.bloc .bloc-row-ic { flex:none; width:20px; display:flex; padding-top:1px; }
.bloc .bloc-row-ic svg { width:20px; height:20px; fill:var(--ink-2); }
.bloc .bloc-row-text { flex:1 1 auto; color:var(--ink); }
.bloc a.bloc-link { color:var(--ink); text-decoration:none; }
.bloc a.bloc-link:hover { color:var(--blc-accent); text-decoration:underline; }
.bloc .bloc-copy { flex:none; background:none; border:0; cursor:pointer; padding:2px; border-radius:6px; line-height:0; }
.bloc .bloc-copy svg { width:18px; height:18px; fill:var(--ink-2); }
.bloc .bloc-copy:hover { background:var(--hover); }

/* hours */
.bloc .bloc-hours { flex-wrap:wrap; }
.bloc .bloc-hours-toggle {
  flex:1 1 auto; display:flex; align-items:center; justify-content:space-between; gap:8px;
  background:none; border:0; cursor:pointer; font:inherit; text-align:left; padding:0; color:var(--ink);
}
.bloc .bloc-status { font-weight:500; color:var(--open); }
.bloc .bloc-status.is-closed { color:var(--closed); }
.bloc .bloc-status-sub { color:var(--ink-2); }
.bloc .bloc-chev { width:20px; height:20px; fill:var(--ink-2); transition:transform .2s ease; }
.bloc .bloc-hours-toggle[aria-expanded="true"] .bloc-chev { transform:rotate(180deg); }
.bloc .bloc-hours-table { flex:0 0 100%; margin:8px 0 2px 34px; border-collapse:collapse; font-size:13.5px; color:var(--ink-2); }
.bloc .bloc-hours-table th { font-weight:400; text-align:left; padding:3px 24px 3px 0; white-space:nowrap; }
.bloc .bloc-hours-table td { padding:3px 0; }
.bloc .bloc-hours-table tr.is-today th, .bloc .bloc-hours-table tr.is-today td { color:var(--ink); font-weight:500; }

/* bottom CTA */
.bloc .bloc-cta {
  display:flex; align-items:center; justify-content:center; gap:8px;
  margin-top:18px; padding:12px 16px; background:var(--blc-accent); color:#fff;
  font-size:14.5px; font-weight:500; text-decoration:none; border-radius:10px;
  transition:filter .15s ease, box-shadow .15s ease;
}
.bloc .bloc-cta:hover { filter:brightness(.93); box-shadow:0 1px 6px rgba(60,64,67,.28); }
.bloc .bloc-cta svg { width:20px; height:20px; fill:#fff; }

/* toast */
.bloc .bloc-toast {
  position:absolute; left:50%; bottom:16px; transform:translateX(-50%) translateY(12px);
  background:#202124; color:#fff; font-size:13px; padding:9px 16px; border-radius:8px;
  opacity:0; pointer-events:none; transition:opacity .2s ease, transform .2s ease; z-index:5;
}
.bloc .bloc-toast.show { opacity:1; transform:translateX(-50%) translateY(0); }

/* focus */
.bloc a:focus-visible, .bloc button:focus-visible { outline:2px solid var(--blc-accent); outline-offset:2px; border-radius:8px; }

/* responsive */
@media (max-width:760px){
  .bloc .bloc-wrap { flex-direction:column; min-height:0; }
  .bloc .bloc-map { flex:none; height:240px; }
  .bloc .bloc-card { flex:none; padding:20px 18px 18px; }
  .bloc .bloc-name { font-size:20px; }
}
@media (max-width:380px){
  .bloc .bloc-act-label { font-size:11.5px; }
  .bloc .bloc-ic { width:40px; height:40px; }
}
@media (prefers-reduced-motion:reduce){
  .bloc *, .bloc *::before, .bloc *::after { transition:none !important; }
}
