/* Search builder historical visibility disclosure. */
.search-time-toolbar { align-items:stretch; }
.search-time-toolbar .chip { width:auto; min-width:0; margin-top:0; white-space:nowrap; }
.search-time-toolbar .search-heatmap-toggle[hidden] { display:none; }
.search-time-toolbar .search-heatmap-toggle { flex:0 0 auto; width:auto; min-width:max-content; }
.search-heatmap { overflow:hidden; margin-top:10px; }
.search-heatmap-inner { border:1px solid var(--border); border-radius:6px; background:var(--surface); padding:12px; }
.search-heatmap-tabs { display:flex; flex-wrap:wrap; gap:5px; margin-bottom:9px; }
.search-heatmap-tab { min-height:30px; padding:5px 9px; border:1px solid var(--border); border-radius:5px; background:transparent; color:var(--text2); font:600 11px/1.2 var(--ui-font); cursor:pointer; }
.search-heatmap-tab.is-active { border-color:var(--text); color:var(--text); }
.search-heatmap-restaurant { display:none; width:100%; margin:0 0 8px; }
.search-heatmap-selection { display:block; margin:0 0 9px; color:var(--text); text-align:center; font:700 12px/1.2 var(--ui-font); }
.search-heatmap-scroll { max-height:310px; overflow:auto; overscroll-behavior:contain; touch-action:auto; border-top:1px solid var(--border); }
.search-heatmap-quarter { position:sticky; top:0; z-index:3; display:grid; grid-template-columns:42px repeat(4, minmax(38px, 1fr)); gap:5px; padding:7px 0 6px; border-bottom:1px solid var(--border); background:var(--surface); color:var(--text2); text-align:center; font:600 10px/1 var(--ui-font); }
.search-heatmap-grid { display:grid; grid-template-columns:42px repeat(4, minmax(38px, 1fr)); gap:5px; padding:6px 0 2px; }
.search-heatmap-hour { display:flex; align-items:center; justify-content:flex-end; padding-right:4px; color:var(--text2); font:600 10px/1 var(--ui-font); white-space:nowrap; }
.search-heatmap-cell { height:32px; min-height:32px; padding:0; border:1px solid var(--border); border-radius:4px; background:#efebe2; box-shadow:none; cursor:crosshair; }
.search-heatmap-cell.is-selected { outline:2px solid var(--accent); outline-offset:1px; position:relative; z-index:1; }
.search-heatmap-cell:focus-visible,.search-heatmap-tab:focus-visible,.search-heatmap-toggle:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
.search-heatmap-warning { display:flex; align-items:center; gap:7px; margin:8px 0 0; padding:7px 8px; border:1px solid var(--border); border-radius:4px; background:var(--surface); font:11px/1.3 var(--ui-font); }
.search-heatmap-warning > span { display:grid; width:16px; height:16px; flex:0 0 16px; place-items:center; border-radius:50%; background:var(--accent); color:#fff; font-weight:700; }
.search-heatmap-warning p { flex:1; margin:0; }
.search-heatmap-warning button { flex:0 0 auto; padding:2px 0; border:0; background:transparent; color:var(--accent2); font:700 11px/1.2 var(--ui-font); text-decoration:underline; cursor:pointer; }
.search-heatmap-gathering { display:grid; justify-items:center; gap:0; min-height:144px; padding:12px 10px; text-align:center; }
.search-heatmap-gathering p { margin:0; font:12px/1.35 var(--ui-font); color:var(--text2); }
.search-heatmap-tile-scene { width:230px; max-width:100%; margin:0 auto 5px; }
.search-heatmap-tile-scene svg { display:block; width:100%; height:auto; }
.search-heatmap-scout { transform-origin:61px 112px; animation:search-heatmap-scout-watch 8s ease-in-out infinite; }
.search-heatmap-observation { opacity:0; animation:search-heatmap-tile-arrival 8s ease-out infinite; }
.search-heatmap-observation.tile-2 { animation-delay:.96s; }.search-heatmap-observation.tile-3 { animation-delay:1.92s; }.search-heatmap-observation.tile-4 { animation-delay:2.88s; }.search-heatmap-observation.tile-5 { animation-delay:3.84s; }.search-heatmap-observation.tile-6 { animation-delay:4.8s; }
@keyframes search-heatmap-scout-watch { 0%,12%,27%,42%,57%,72%,100% { transform:rotate(0deg); } 7%,22%,37%,52%,67% { transform:rotate(4deg); } }
@keyframes search-heatmap-tile-arrival { 0%,12% { opacity:0; transform:translate(-20px,-10px); } 20%,85% { opacity:1; transform:translate(0,0); } 96%,100% { opacity:0; transform:translate(0,0); } }
@media (max-width:713px) {
  .search-time-toolbar { display:grid; grid-template-columns:1fr 1.18fr .9fr; gap:4px; }
  .search-time-toolbar:has(.search-heatmap-toggle[hidden]) { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .search-time-toolbar .chip { min-width:0; min-height:var(--min-control-target); padding:6px 4px; font-size:10px; white-space:nowrap; }
  .search-time-toolbar .search-heatmap-toggle { min-width:0; }
  .search-heatmap-inner { padding:10px; }
  .search-heatmap-tabs { display:none; }
  .search-heatmap-restaurant { display:block; min-height:var(--min-control-target); }
  .search-heatmap-selection { margin-bottom:10px; font-size:12px; }
  .search-heatmap-scroll { max-height:354px; margin:0 -10px; padding:0 10px; }
  .search-heatmap-quarter,.search-heatmap-grid { grid-template-columns:38px repeat(4, minmax(0, 1fr)); gap:5px; }
  .search-heatmap-cell { height:44px; min-height:44px; }
  .search-heatmap-warning { align-items:flex-start; font-size:10px; }
  .search-heatmap-warning button { font-size:10px; }
  .search-heatmap-gathering { min-height:132px; padding:12px 3px; }
  .search-heatmap-gathering p { font-size:11px; }
}
@media (prefers-reduced-motion:reduce) { .search-heatmap-scout,.search-heatmap-observation { animation:none; opacity:1; transform:none; } }
/* Match the approved two-column dining-day layout on desktop. */
.search-heatmap-inner{background:var(--bg);border-radius:4px}.search-heatmap-scroll{max-height:none;padding:0 3px 3px;border-top:0}.search-heatmap-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;padding-top:8px}.search-heatmap-half,.search-heatmap-quarter-group{display:grid;grid-template-columns:42px repeat(4,minmax(0,1fr));gap:7px 5px}.search-heatmap-quarter{grid-template-columns:1fr 1fr;gap:24px;width:calc(100% + 6px);margin:0 -3px;padding:7px 3px 9px;background:var(--bg)}.search-heatmap-cell{touch-action:auto}.search-heatmap-tab.is-active{border-color:var(--green);color:var(--green)}.search-heatmap-warning{background:var(--bg);font-size:12px;line-height:1.45;flex-wrap:wrap;padding:8px 10px;gap:4px 12px}.search-heatmap-warning p{flex:1 1 220px}.search-heatmap-warning button{color:var(--green);text-decoration:none;font-size:11px}.search-heatmap-retry{min-height:44px;border:1px solid var(--border);background:var(--surface);border-radius:4px;font:12px var(--ui-font);padding:8px 12px;cursor:pointer}
@media(max-width:713px){.search-heatmap-scroll{max-height:354px;margin:0;padding:0 3px 3px}.search-heatmap-grid{display:block}.search-heatmap-half+.search-heatmap-half{margin-top:14px}.search-heatmap-half,.search-heatmap-quarter-group{grid-template-columns:38px repeat(4,minmax(0,1fr));gap:8px 5px}.search-heatmap-quarter{grid-template-columns:1fr;gap:0}.search-heatmap-quarter-group+.search-heatmap-quarter-group{display:none}.search-heatmap-warning button{font-size:11px}}

.search-heatmap-observation.tile-1{animation-delay:0s;animation-name:search-heatmap-arrival-1}.search-heatmap-observation.tile-2{animation-delay:0s;animation-name:search-heatmap-arrival-2}.search-heatmap-observation.tile-3{animation-delay:0s;animation-name:search-heatmap-arrival-3}.search-heatmap-observation.tile-4{animation-delay:0s;animation-name:search-heatmap-arrival-4}.search-heatmap-observation.tile-5{animation-delay:0s;animation-name:search-heatmap-arrival-5}.search-heatmap-observation.tile-6{animation-delay:0s;animation-name:search-heatmap-arrival-6}
@keyframes search-heatmap-arrival-1{0%{opacity:0;transform:translate(-20px,-10px)}8%,85%{opacity:1;transform:translate(0,0)}96%,100%{opacity:0;transform:translate(0,0)}}
@keyframes search-heatmap-arrival-2{0%,12%{opacity:0;transform:translate(-20px,-10px)}20%,85%{opacity:1;transform:translate(0,0)}96%,100%{opacity:0;transform:translate(0,0)}}
@keyframes search-heatmap-arrival-3{0%,24%{opacity:0;transform:translate(-20px,-10px)}32%,85%{opacity:1;transform:translate(0,0)}96%,100%{opacity:0;transform:translate(0,0)}}
@keyframes search-heatmap-arrival-4{0%,36%{opacity:0;transform:translate(-20px,-10px)}44%,85%{opacity:1;transform:translate(0,0)}96%,100%{opacity:0;transform:translate(0,0)}}
@keyframes search-heatmap-arrival-5{0%,48%{opacity:0;transform:translate(-20px,-10px)}56%,85%{opacity:1;transform:translate(0,0)}96%,100%{opacity:0;transform:translate(0,0)}}
@keyframes search-heatmap-arrival-6{0%,60%{opacity:0;transform:translate(-20px,-10px)}68%,85%{opacity:1;transform:translate(0,0)}96%,100%{opacity:0;transform:translate(0,0)}}

@media(prefers-reduced-motion:reduce){.search-heatmap-tile-scene .search-heatmap-observation{animation:none;opacity:1;transform:none}}
.search-time-toolbar .search-heatmap-toggle{display:flex;align-items:center;justify-content:center;gap:4px}.search-heatmap-toggle svg{flex:none;color:var(--green)}

/* Restaurant-step guidance reuses the flat Search notice and accessible action. */
#planHistoricalGuidance:empty { display:none; }
#planHistoricalGuidance .search-heatmap-warning { margin:12px 0; }
.search-heatmap-warning button { width:auto; margin:0; min-height:var(--min-control-target); text-align:left; }

/* One historical caution presentation for Plan and Explore. */
.search-heatmap-warning { display:grid; grid-template-columns:56px minmax(0,1fr) auto; align-items:center; }
.search-heatmap-caution { display:block; width:56px; height:48px; grid-column:1; grid-row:1; }
.search-heatmap-warning p { grid-column:2; min-width:0; }
.search-heatmap-warning button { grid-column:3; }
@media(max-width:713px) {
  .search-heatmap-warning { grid-template-columns:48px minmax(0,1fr); column-gap:10px; }
  .search-heatmap-caution { width:48px; height:44px; }
  .search-heatmap-warning button { grid-column:2; justify-self:start; }
}

/* A stationary hold selects; an immediate swipe keeps native touch scrolling. */
.search-heatmap-touch-hint{display:none;margin:0 0 10px;text-align:center;color:var(--text2);font:11px/1.4 var(--ui-font)}
.search-heatmap-cell{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
.search-heatmap-cell.is-hold-anchor{animation:search-heatmap-hold 240ms ease-out}
@keyframes search-heatmap-hold{50%{transform:scale(.92);box-shadow:0 0 0 3px var(--accent)}}
@media(max-width:713px),(pointer:coarse){.search-heatmap-touch-hint{display:block}}
@media(prefers-reduced-motion:reduce){.search-heatmap-cell.is-hold-anchor{animation:none;outline:2px solid var(--accent)}}
