.profile-page {
  max-width:1300px;
  padding:16px clamp(12px, 2vw, 28px) 0;
}
.profile-meta {
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:6px 10px;
  font-size:14px;
}
.profile-meta a, .profile-directions { color:#006e88; text-underline-offset:3px; }
.profile-heading { display:flex; align-items:center; gap:14px; margin:0 0 22px; }
.profile-heading > div { min-width:0; overflow-wrap:anywhere; padding-inline-end:58px; }
.profile-title-row { position:relative; }
/* Keep the full heart target beside the title without adding height above the address. */
.profile-heading .profile-favorite { position:absolute; inset-inline-start:calc(100% + 10px); top:50%; transform:translateY(-50%); width:48px; height:48px; margin:0; }
.profile-heading .profile-favorite .icon { width:34px; height:34px; }
@media print { .profile-heading .profile-favorite { display:none; } }
.profile-heading img { flex:none; object-fit:contain; border-radius:4px; }
.profile-heading h1 { font-size:clamp(22px,2.4vw,32px); line-height:1.18; margin:0; }
.profile-meta { column-gap:18px; }
.profile-meta a, .profile-directions { display:inline-flex; align-items:center; gap:5px; }
.profile-meta a { padding-block:2px 5px; }
.profile-meta .icon, .profile-directions .icon { width:15px; height:15px; flex:none; }
.profile-grid { display:grid; grid-template-columns:minmax(0,1fr) 300px; gap:28px; align-items:start; }
.profile-grid h2 { margin:0; font-size:21px; line-height:1.4; }
.profile-week-heading { display:flex; align-items:baseline; justify-content:space-between; column-gap:12px; margin-bottom:8px; }
.profile-week-heading > span { text-align:right; color:#606b75; font-size:14px; }
.profile-print-context { font-size:15px; margin:0 0 16px; }
.profile-print-day-picker { display:flex; align-items:center; gap:12px; margin-top:14px; font-size:14px; }
.profile-print-day-picker select { flex:1; min-width:0; padding:8px; font-size:16px; border:1px solid var(--line); border-radius:4px; background:white; color:var(--ink); }
@media print {
  .profile-print-output .dish-name, .profile-print-output .dish-description { display:inline; margin:0; font-size:inherit; line-height:inherit; }
  .profile-print-output .dish-name { font-weight:700; }
  .profile-print-output .dish-description::before { content:" – "; }
  #print-output.profile-print-output .print-day-heading { border-bottom:1px solid #888; margin-bottom:1mm; }
  #print-output.profile-print-output li > strong { white-space:nowrap; }
}
.profile-days { min-width:0; border:1px solid var(--line); border-radius:var(--radius); background:#fff; overflow:hidden; box-shadow:var(--card-shadow); }
.profile-day + .profile-day, .inline-ad + .profile-day { border-top:1px solid var(--line); }
.profile-day summary { display:flex; align-items:center; gap:10px; padding:12px 18px; cursor:pointer; list-style:none; }
.profile-day summary::-webkit-details-marker { display:none; }
.profile-day summary::after { content:''; width:7px; height:7px; margin-left:auto; margin-right:3px; border:solid currentColor; border-width:0 1.5px 1.5px 0; transform:rotate(-45deg); }
.profile-day[open] summary::after { transform:rotate(45deg); }
.profile-day summary:focus-visible { outline:2px solid var(--accent); outline-offset:-2px; }
.profile-day h3 { font-size:16px; line-height:1.4; margin:0; }
.profile-day.is-past summary { color:#767676; }
.profile-day.is-past summary::after { color:#909090; }
.profile-day.is-today summary { background:var(--accent-light); }
.profile-today { color:#006781; font-size:13px; }
.profile-day-menu { padding:0 18px 12px; }
.profile-day.is-today .profile-day-menu { padding-top:8px; }
.profile-day-menu ul { list-style:none; margin:0; padding-left:18px; }
.profile-day-menu li { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:baseline; gap:9px; padding:4px 0; line-height:1.4; }
.profile-day-menu strong { white-space:nowrap; }
.profile-day-menu h4 { margin:4px 0; color:#68737c; font-size:13px; font-weight:400; }
.profile-day-menu ul + h4 { margin-top:8px; padding-top:6px; border-top:1px dashed var(--line); }
.profile-empty { color:#626c76; font-size:15px; margin:0; }
.profile-rail { min-width:0; align-self:stretch; }
.profile-rail h2 { margin-bottom:8px; }
#restaurant-map { isolation:isolate; width:100%; height:280px; background:#edf0f0; border:1px solid var(--line); border-radius:var(--radius); }
.profile-directions { font-size:14px; margin-top:4px; padding-block:5px; }
.profile-rail .ad-rail { display:block; margin-top:14px; position:sticky; top:12px; }
@media(max-width:780px) {
  .profile-grid { grid-template-columns:minmax(0,1fr); gap:24px; }
  .profile-heading { margin-bottom:16px; gap:10px; }
  .profile-heading > div { flex:1; }
  .profile-day summary { padding:11px 12px; }
  .profile-day-menu { padding:0 12px 10px; }
  .profile-rail .ad-rail { display:none; }
  #restaurant-map { height:220px; }
}
@media(max-width:340px) { .profile-page { padding-inline:6px; } }

.profile-search {
  flex:1 1 auto;
  min-width:0;
  max-width:680px;
}
.profile-search .home-search-box {
  display:flex;
  gap:4px;
  padding:0 4px;
  background:#f2f2f4;
  border:1px solid transparent;
  border-radius:24px;
  box-shadow:none;
}
.profile-search .home-search-box:focus-within { border-color:var(--accent); }
.profile-search #home-search { height:42px; font-size:16px; }
.profile-search .home-search-actions { display:flex; }
.profile-search .profile-search-submit,
.profile-search #home-locate {
  display:grid;
  place-items:center;
  flex:none;
  width:42px;
  height:42px;
  padding:0;
  border:0;
  border-radius:50%;
  background:transparent;
  color:#46535e;
}
.profile-search .profile-search-submit .icon { width:18px; height:18px; }
.profile-search :is(.profile-search-submit, #home-locate):hover { background:var(--accent-light); }
.profile-search #home-suggestions { max-height:min(340px,45dvh); }
@media(max-width:780px) {
  .profile-search { grid-area:2 / 1 / 3 / -1; max-width:none; }
  .header-actions #profile-print { display:flex; }
  .header-actions:has(#profile-print) { gap:6px; }
  .header-actions:has(#profile-print) .compact-favorites-text { display:none; }
}
