/* Restaurant information, breakfast calculation and opt-in service contact. */
.guest-guide [hidden], .guide-dialog [hidden], .breakfast-budget [hidden] { display:none !important; }
.guest-guide .sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0; }
.guide-launcher { position:fixed; right:1.25rem; bottom:1.25rem; z-index:60; display:flex; align-items:center; gap:.6rem; border:1px solid #f9f7f2; border-radius:3rem; background:#242c22; color:#fff; padding:.8rem 1.1rem; box-shadow:0 5px 24px #1e1d1a26; font:600 .88rem/1.2 Manrope,sans-serif; cursor:pointer; }
.guide-launcher span { display:grid; place-items:center; width:1.6rem; height:1.6rem; border:1px solid #ffffff80; border-radius:50%; }
.guide-dialog { position:fixed; inset: auto 1rem 1rem auto; margin:0; width:min(460px,calc(100vw - 2rem)); max-width:none; height:min(760px,calc(100dvh - 2rem)); max-height:none; padding:0; border:1px solid #c9c4b8; border-radius:16px; background:#f9f7f2; color:#242c22; box-shadow:0 20px 80px #1115; font:400 .9rem/1.6 Manrope,sans-serif; }
.guide-dialog::backdrop { background:#1e1d1a66; }
.guide-dialog[open] { display:flex; flex-direction:column; }
.guide-heading { display:flex; justify-content:space-between; align-items:center; gap:.7rem; padding:1rem 1.2rem; background:#242c22; color:#f9f7f2; flex:none; }
.guide-heading p { margin:0 0 .25rem; font-size:.68rem; letter-spacing:.06em; }
.guide-heading h2 { margin:0; color:inherit; font:500 1.65rem/1.1 'Cormorant Garamond',serif; letter-spacing:0; }
.guide-close { flex:none; width:44px; height:44px; color:inherit; background:transparent; border:1px solid #ffffff66; border-radius:50%; font-size:1.6rem; cursor:pointer; }
.guide-body { overflow:auto; padding:1.2rem; min-height:0; overscroll-behavior:contain; }
.guide-body p { margin:0 0 1rem; overflow-wrap:anywhere; }
.guide-body h3 { font:600 1.25rem/1.3 'Cormorant Garamond',serif; margin:.3rem 0 .65rem; letter-spacing:0; }
.guide-body a { text-decoration:underline; text-underline-offset:3px; }
.guide-shortcuts { display:grid; grid-template-columns:1fr 1fr; gap:.5rem; margin:1rem 0; }
.guide-body button:not(.button), .breakfast-budget button { min-height:44px; border:1px solid #797f70; border-radius:6px; background:#fff; color:#242c22; font:600 .82rem/1.35 Manrope,sans-serif; padding:.55rem .75rem; cursor:pointer; }
.guide-body button:not(.button):hover, .breakfast-budget button:hover { background:#e9eddf; }
.guide-message { padding:1rem; background:#fff; border:1px solid #ddd9cc; border-radius:8px; margin:0 0 .75rem; overflow-wrap:anywhere; }
.guide-message p:last-child { margin-bottom:0; }
.guide-message button, .guide-message a { display:block; margin-top:.75rem; }
.guide-guest { background:#e9eddf; margin-left:1rem; }
.guide-body label, .breakfast-budget label { display:block; margin:.8rem 0 .35rem; font-weight:600; font-size:.86rem; }
.guide-body input:not([type=checkbox]), .guide-body textarea, .breakfast-budget select { display:block; width:100%; min-width:0; min-height:44px; box-sizing:border-box; padding:.65rem; border:1px solid #777e70; border-radius:5px; background:#fff; color:#242c22; font:400 1rem/1.4 Manrope,sans-serif; }
.guide-body textarea { resize:vertical; }
.guide-question-row { display:flex; gap:.5rem; }
.guide-question-row input { flex:1; }
.guide-service-open { width:100%; margin:1rem 0; }
.guide-fine-print, .guide-body .guide-fine-print, .budget-disclaimer { font-size:.75rem; line-height:1.6; color:#565e51; }
.guide-body fieldset { min-width:0; padding:0; border:0; }
.guide-consent { display:flex !important; gap:.65rem; align-items:flex-start; padding:.5rem 0; }
.guide-consent input { flex:none; width:20px; height:20px; margin:.15rem 0 0; accent-color:#242c22; }
.guide-send { width:100%; font-size:.85rem; }
.guide-send:disabled, .guide-body fieldset:disabled { opacity:.7; }
#guide-send-status:not(:empty) { padding:1rem; margin:1rem 0; background:#e9eddf; border-left:3px solid #596348; }
#guide-send-status[data-state=uncertain], #guide-send-status[data-state=unavailable] { background:#f7e7db; border-color:#995334; }
.guide-direct-contact { margin-top:1.2rem !important; }
.guide-back { margin-bottom:1rem; }
.guest-guide :focus-visible, .breakfast-budget :focus-visible, .public-faq :focus-visible { outline:3px solid #ab643f; outline-offset:3px; }
.budget-section { max-width:900px; }
.budget-intro { max-width:660px; }
.breakfast-budget { padding:1.4rem; border:1px solid #d2cbbd; border-radius:8px; background:#f0ebe2; }
.guide-budget-panel .breakfast-budget { padding:.8rem; }
.budget-controls { display:grid; grid-template-columns:1fr 95px; align-items:center; gap:1rem; }
.budget-controls label { margin:0; }
.budget-base { padding:1rem 0; border-bottom:1px solid #d2cbbd; }
.budget-base p { font-size:.85rem; margin:.5rem 0 0; }
.budget-picker { display:flex; gap:.5rem; }
.budget-picker select { flex:1; width:0; }
.budget-selected { list-style:none; margin:0; padding:0; }
.budget-selected li { display:grid; grid-template-columns:minmax(0,1fr) 76px 44px; gap:.65rem .85rem; align-items:end; padding:1rem 0; border-bottom:1px solid #d2cbbd; font-size:.83rem; }
.budget-product { min-width:0; align-self:center; overflow-wrap:anywhere; }
.budget-item-name { display:block; font-size:.9rem; font-weight:600; line-height:1.45; }
.budget-item-price { display:block; margin-top:.2rem; color:#565e51; font-size:.78rem; }
.budget-quantity { min-width:0; }
.budget-quantity label { margin:0 0 .35rem; font-size:.78rem; }
.budget-totals { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:baseline; gap:.5rem 1rem; padding:1rem 0; }
.budget-totals p { margin:0; font-size:.85rem; }
.budget-total { font-size:1.5rem; white-space:nowrap; }
.budget-per-person { font-size:1rem; white-space:nowrap; }
.budget-comparison { grid-column:1 / -1; }
.budget-actions { display:flex; flex-wrap:wrap; gap:.5rem; margin:1rem 0; }
.budget-example ul { list-style:none; padding:0; }
.budget-example li { padding:.4rem 0; }
.budget-example li strong { white-space:nowrap; }
.budget-base-only { padding:.75rem 0; }
.budget-disclaimer { margin-top:1rem; }
.public-faq { max-width:950px; }
.public-faq details { border-bottom:1px solid #cdc7bc; padding:1.2rem 0; }
.public-faq summary { cursor:pointer; font-weight:600; min-height:30px; }
.public-faq details p { max-width:760px; margin:1rem 0; }
.season-banner { padding:.8rem 5%; background:#e9eddf; border-bottom:1px solid #ccd2c3; }
.season-banner p { margin:0; font-size:.85rem; line-height:1.6; text-align:center; }
.season-banner a { text-decoration:underline; text-underline-offset:3px; white-space:normal; }
.season-card { background:#f0ebe2; border-left:4px solid #a65e40; padding:clamp(1.2rem,4vw,3rem); margin:2rem auto; max-width:1120px; scroll-margin-top:7rem; }
.season-card h2 { font-size:clamp(1.8rem,3vw,2.8rem); }
.season-card p { max-width:800px; }
@media(max-width:767px) {
  .guide-launcher { bottom:calc(5.2rem + env(safe-area-inset-bottom)); right:.75rem; padding:.65rem .85rem; }
  .guide-dialog { inset:auto .5rem .5rem .5rem; width:calc(100vw - 1rem); height:calc(100dvh - 1rem); max-height:850px; }
  .guide-body { padding:1rem; }
  .guide-heading { padding:.8rem 1rem; }
  .guide-heading h2 { font-size:1.5rem; }
  .breakfast-budget { padding:1rem; }
  .budget-picker { flex-wrap:wrap; }
  .budget-picker select { flex-basis:100%; width:100%; }
  .budget-picker button { width:100%; }
  .budget-totals { column-gap:.5rem; }
  .season-card { margin:1rem; }
}
@media(max-width:479px) {
  .budget-selected li { grid-template-columns:minmax(0,1fr) 44px; }
  .budget-product { grid-column:1 / -1; }
  .budget-quantity { display:flex; align-items:center; gap:.75rem; }
  .budget-quantity label { margin:0; }
  .budget-quantity select { width:76px; flex:none; }
}
@media(forced-colors:active) {
  .guide-launcher, .guide-dialog, .guide-message, .breakfast-budget, .guide-heading { border:1px solid CanvasText; }
}

/* One schedule shared by the public pages and the local assistant. */
.season-banner p { display:flex; align-items:baseline; justify-content:center; gap:.25rem 1.2rem; flex-wrap:wrap; }
.season-banner strong { color:#242c22; }
.hours-period { margin:1.5rem 0 .75rem; font-weight:700; }
.hours-closed { display:block; padding:.7rem 1rem; margin:0 0 1rem; background:#e3dccf; border-radius:4px; }
.hours-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
.hours-card { min-width:0; padding:1.1rem; border:1px solid #d2cbbd; border-radius:6px; background:#fffdf9; }
.hours-card h3, .hours-card h4 { margin:0 0 .8rem; font:700 .95rem/1.45 Manrope,sans-serif; letter-spacing:0; }
.hours-card dl { margin:0; font-size:.87rem; }
.hours-card dl>div { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:.3rem .8rem; padding:.55rem 0; border-top:1px solid #e6dfd4; }
.hours-card dt { font-weight:500; }
.hours-card dd { margin:0; text-align:right; font-weight:600; font-variant-numeric:tabular-nums; }
.hours-card dd span { display:block; white-space:nowrap; }
.hours-note { margin:1rem 0 0; font-size:.83rem; color:#565e51; }
.season-card .season-tent { padding-top:1.25rem; margin:1.25rem 0 0; border-top:1px solid #d2cbbd; }
.guide-message .hours-grid { grid-template-columns:minmax(0,1fr); gap:.75rem; }
.guide-message .hours-card { padding:.8rem; }
.guide-message .hours-card dl { font-size:.8rem; }
.contact-page #oeffnungszeiten .season-card { margin-inline:0; max-width:none; }
.contact-hours-details { margin-top:1.5rem; }
.contact-hours-details>summary { cursor:pointer; min-height:44px; padding:.75rem 0; font-weight:600; }
.contact-hours-details>summary:focus-visible { outline:3px solid #ab643f; outline-offset:3px; }
@media(max-width:767px) {
  .hours-grid { grid-template-columns:minmax(0,1fr); }
  .season-card { margin-inline:0; }
  .guide-launcher { bottom:calc(var(--action-height,5.2rem) + .75rem); }
}
@media(max-width:359px) {
  .guide-message .hours-card dl>div { grid-template-columns:minmax(0,1fr); }
  .guide-message .hours-card dd { text-align:left; }
}
