/*
 * Ospitalyty · OT-P06 · Responsive e collaudo finale
 * Caricato per ultimo su homepage, pagine account, pagine pubbliche e area gestore.
 * Non modifica SSO, sessioni, permessi, query, prenotazioni, PayPal o database.
 */

:root {
  --ot-p06-shell: 1380px;
  --ot-p06-gutter: clamp(12px, 3vw, 36px);
  --ot-p06-touch: 44px;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;
  text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}

@supports (overflow: clip) {
  html,
  body {
    overflow-x: clip;
  }
}

body {
  width: 100%;
  min-width: 320px;
  max-width: 100%;
}

body.osp-menu-open,
body.ot-menu-open {
  overflow-x: hidden;
}

img,
svg,
video,
canvas,
iframe {
  max-width: 100%;
}

img,
svg,
video,
canvas {
  height: auto;
}

button,
input,
select,
textarea {
  max-width: 100%;
  font: inherit;
}

input[type="file"] {
  width: 100%;
  min-width: 0;
}

pre,
code,
.osp-hash,
.osp-token,
.osp-codebox {
  max-width: 100%;
  overflow-wrap: anywhere;
  white-space: pre-wrap;
}

h1,
h2,
h3,
h4,
p,
a,
button,
label,
small,
strong,
li,
dd,
dt,
td,
th {
  overflow-wrap: anywhere;
}

.osp-shell,
.osp-main,
.osp-topin,
.osp-nav,
.osp-page-head,
.osp-page-head > *,
.osp-shell-footer-inner,
.osp-grid,
.osp-grid > *,
.osp-card,
.osp-actions,
.osp-form-grid,
.osp-form-grid > *,
.osp-table-wrap,
.osp-calendar-panel,
.osp-split,
.osp-split > *,
.ot-shell,
.ot-home-shell,
.ot-home-main,
.ot-main-nav,
.ot-hero-grid,
.ot-hero-grid > *,
.ot-search-panel,
.ot-search-form,
.ot-service-cards,
.ot-audience-grid,
.ot-plan-grid,
.ot-network-grid,
.ot-final-cta,
.portal-account-page,
.portal-account-page > *,
.portal-account-panel,
.portal-panel-inner,
.portal-form-grid,
.portal-form-grid > *,
.ot-public-search,
.ot-public-search-form,
.ot-public-results,
.ot-public-card-grid,
.ot-public-card,
.ot-public-card-body,
.ot-detail-gallery,
.ot-detail-heading,
.ot-detail-layout,
.ot-detail-layout > *,
.ot-detail-content,
.ot-detail-sidebar,
.ot-detail-section,
.ot-unit-card,
.ot-unit-card > * {
  min-width: 0;
}

/* Barra Network: resta a larghezza piena, ma non allarga mai il viewport. */
.hi-network-bar {
  width: 100%;
  max-width: 100%;
  overflow: hidden;
}

.hi-network-bar-inner,
.hi-network-bar .hi-network-links {
  min-width: 0;
}

.hi-network-bar .hi-network-links {
  overscroll-behavior-inline: contain;
  -webkit-overflow-scrolling: touch;
}

/* Header condiviso. L'area gestore passa al menu compatto prima perché ha più voci. */
.osp-topin.osp-shell-header-inner {
  max-width: 100%;
}

.osp-brand,
.osp-brand-copy,
.osp-user-chip,
.osp-user-copy {
  min-width: 0;
}

.osp-nav > a {
  max-width: 100%;
}

@media (max-width: 1260px) {
  body:not(.osp-manager-area) .osp-topin.osp-shell-header-inner {
    flex-wrap: wrap;
  }

  body:not(.osp-manager-area) .osp-nav-toggle {
    display: inline-flex;
  }

  body:not(.osp-manager-area) .osp-nav {
    width: 100%;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    align-items: stretch;
    gap: 7px;
    padding-top: 12px;
    border-top: 1px solid var(--ot-shell-border, rgba(6,36,63,.14));
  }

  .osp-js body:not(.osp-manager-area) .osp-nav:not(.is-open) {
    display: none;
  }

  body:not(.osp-manager-area) .osp-nav > a {
    min-height: var(--ot-p06-touch);
    padding: 9px 10px;
    text-align: center;
    white-space: normal;
  }

  body:not(.osp-manager-area) .osp-user-chip {
    width: 100%;
    max-width: none;
    grid-column: span 2;
    margin: 0;
    border-radius: 13px;
  }

  body:not(.osp-manager-area) .osp-nav > a.osp-logout-link {
    grid-column: span 2;
  }
}

@media (min-width: 1261px) {
  body:not(.osp-manager-area) .osp-nav {
    display: flex !important;
  }
}

@media (max-width: 1420px) {
  .osp-manager-area .osp-topin.osp-shell-header-inner {
    flex-wrap: wrap;
  }

  .osp-manager-area .osp-nav-toggle {
    display: inline-flex;
  }

  .osp-manager-area .osp-nav {
    width: 100%;
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    align-items: stretch;
    gap: 7px;
    padding-top: 12px;
    border-top: 1px solid var(--ot-manager-border, rgba(6,36,63,.14));
  }

  .osp-js .osp-manager-area .osp-nav:not(.is-open) {
    display: none;
  }

  .osp-manager-area .osp-nav > a {
    min-height: var(--ot-p06-touch);
    padding: 9px 8px;
    text-align: center;
    white-space: normal;
  }

  .osp-manager-area .osp-user-chip {
    width: 100%;
    max-width: none;
    grid-column: span 3;
    margin: 0;
    border-radius: 13px;
  }

  .osp-manager-area .osp-nav > a.osp-logout-link {
    grid-column: span 2;
  }
}

@media (min-width: 1421px) {
  .osp-manager-area .osp-nav {
    display: flex !important;
  }
}

@media (max-width: 1050px) {
  .osp-manager-area .osp-nav {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .osp-manager-area .osp-user-chip {
    grid-column: span 2;
  }

  .osp-manager-area .osp-nav > a.osp-logout-link {
    grid-column: span 1;
  }
}

@media (max-width: 760px) {
  .osp-topin.osp-shell-header-inner {
    min-height: 72px;
    padding-inline: 14px;
  }

  .osp-brand {
    min-width: 0;
  }

  .osp-brand > img {
    width: 42px;
    height: 42px;
    flex-basis: 42px;
  }

  .osp-brand-copy strong {
    font-size: 1.15rem;
  }

  .osp-brand-copy small {
    display: none;
  }

  body:not(.osp-manager-area) .osp-nav,
  .osp-manager-area .osp-nav {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  body:not(.osp-manager-area) .osp-user-chip,
  body:not(.osp-manager-area) .osp-nav > a.osp-logout-link,
  .osp-manager-area .osp-user-chip,
  .osp-manager-area .osp-nav > a.osp-logout-link {
    grid-column: 1 / -1;
  }
}

@media (max-width: 480px) {
  .osp-nav-toggle {
    width: 44px;
    min-width: 44px;
    padding-inline: 0;
  }

  .osp-nav-toggle > span:last-child {
    display: none;
  }

  body:not(.osp-manager-area) .osp-nav,
  .osp-manager-area .osp-nav {
    grid-template-columns: 1fr;
  }

  body:not(.osp-manager-area) .osp-user-chip,
  body:not(.osp-manager-area) .osp-nav > a.osp-logout-link,
  .osp-manager-area .osp-user-chip,
  .osp-manager-area .osp-nav > a.osp-logout-link {
    grid-column: auto;
  }
}

/* Footer condiviso */
.osp-shell-footer-inner > *,
.osp-shell-footer-inner nav,
.osp-shell-footer-inner nav a {
  min-width: 0;
}

@media (max-width: 760px) {
  .osp-shell-footer-inner {
    align-items: flex-start;
    flex-direction: column;
  }

  .osp-shell-footer-inner nav {
    width: 100%;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .osp-shell-footer-inner nav a {
    min-height: var(--ot-p06-touch);
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
  }
}

@media (max-width: 390px) {
  .osp-shell-footer-inner nav {
    grid-template-columns: 1fr;
  }
}

/* Homepage standalone */
.ot-site-header,
.ot-site-header-inner,
.ot-home-main,
.ot-home-shell,
.ot-site-footer,
.ot-footer-grid,
.ot-footer-bottom {
  max-width: 100%;
}

.ot-main-nav a,
.ot-btn,
.ot-status-actions a,
.ot-final-actions a {
  max-width: 100%;
}

.ot-search-form input,
.ot-search-form select,
.ot-search-form button {
  width: 100%;
  min-width: 0;
}

.ot-hero-image-wrap img,
.ot-services-hub img,
.ot-network-grid img,
.ot-footer-brand img {
  max-width: 100%;
}

@media (max-width: 980px) {
  .ot-main-nav {
    max-height: min(72dvh, 620px);
    overflow-y: auto;
    overscroll-behavior: contain;
  }

  .ot-main-nav .ot-home-user-chip {
    width: 100%;
    max-width: none;
  }
}

@media (max-width: 760px) {
  .ot-home-shell {
    width: 100%;
    padding-inline: 12px;
  }

  .ot-hero,
  .ot-manager-tools,
  .ot-final-cta,
  .ot-search-panel {
    width: 100%;
    max-width: 100%;
  }

  .ot-hero-actions,
  .ot-status-actions,
  .ot-final-actions {
    width: 100%;
  }

  .ot-floating-card {
    max-width: 100%;
  }
}

@media (max-width: 520px) {
  .ot-shell,
  .ot-home-shell {
    padding-inline: 10px;
  }

  .ot-hero-grid,
  .ot-manager-tools,
  .ot-final-cta {
    padding-left: 18px;
    padding-right: 18px;
  }

  .ot-hero-actions,
  .ot-status-actions,
  .ot-final-actions {
    display: grid;
    grid-template-columns: 1fr;
  }

  .ot-hero-actions .ot-btn,
  .ot-status-actions .ot-btn,
  .ot-final-actions .ot-btn {
    width: 100%;
  }

  .ot-search-form {
    grid-template-columns: 1fr;
  }

  .ot-search-form > * {
    grid-column: auto !important;
  }

  .ot-proof {
    width: 100%;
  }
}

/* Accesso e registrazione */
.ot-account-page .hi-network-bar,
.portal-account-page {
  max-width: 100%;
}

.portal-account-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.portal-account-form input,
.portal-account-form select,
.portal-account-form textarea,
.portal-account-form button,
.portal-button {
  width: 100%;
  min-width: 0;
}

.portal-security-row,
.portal-benefits,
.portal-actions {
  min-width: 0;
}

@media (max-width: 900px) {
  .portal-account-page {
    min-height: 0;
    grid-template-columns: 1fr;
  }

  .portal-account-media {
    min-height: 310px;
    max-height: 52vh;
  }

  .portal-account-panel {
    min-height: 0;
  }
}

@media (max-width: 620px) {
  .portal-account-media {
    min-height: 250px;
  }

  .portal-account-copy,
  .portal-panel-inner,
  .portal-topbar {
    padding-left: 18px;
    padding-right: 18px;
  }

  .portal-form-grid,
  .portal-security-row,
  .portal-benefits,
  .portal-actions {
    grid-template-columns: 1fr;
  }

  .portal-topbar {
    align-items: flex-start;
    flex-direction: column;
  }
}

/* Pagine pubbliche: ricerca, elenco e scheda struttura. */
.osp-public-area .osp-main,
.osp-public-area .osp-page-head,
.ot-public-search,
.ot-public-results,
.ot-detail-hero,
.ot-detail-layout {
  max-width: 100%;
}

.ot-public-search-form input,
.ot-public-search-form select,
.ot-public-search-form button,
.ot-availability-grid input,
.ot-contact-actions a {
  width: 100%;
  min-width: 0;
}

.ot-public-card-media,
.ot-public-card-media img,
.ot-detail-gallery a,
.ot-detail-gallery img {
  max-width: 100%;
}

.ot-public-card-media img,
.ot-detail-gallery img {
  object-fit: cover;
}

.ot-public-card-foot,
.ot-public-results-head,
.ot-detail-heading,
.ot-detail-section-head,
.ot-unit-title,
.ot-unit-card,
.ot-contact-actions,
.ot-external-links {
  min-width: 0;
}

.ot-detail-sidebar {
  max-width: 100%;
}

@media (max-width: 980px) {
  .ot-detail-layout {
    grid-template-columns: 1fr;
  }

  .ot-detail-sidebar {
    position: static;
    width: 100%;
  }

  .ot-availability-card,
  .ot-contact-card {
    width: 100%;
  }
}

@media (max-width: 760px) {
  .osp-public-area .osp-main {
    width: 100%;
    padding: 14px;
  }

  .osp-public-area .osp-page-head {
    min-height: 0;
    padding: 25px 20px;
    border-radius: 22px;
  }

  .ot-public-search,
  .ot-public-results,
  .ot-detail-section,
  .ot-availability-card,
  .ot-contact-card {
    border-radius: 20px;
  }

  .ot-public-search-form {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .ot-public-search-form .ot-public-field-wide,
  .ot-public-search-form .ot-public-check,
  .ot-public-search-form .ot-public-btn {
    grid-column: 1 / -1;
  }

  .ot-public-card-grid {
    grid-template-columns: 1fr;
  }

  .ot-public-results-head,
  .ot-detail-heading,
  .ot-detail-section-head,
  .ot-unit-card {
    align-items: flex-start;
    flex-direction: column;
  }

  .ot-public-card-foot,
  .ot-unit-price,
  .ot-detail-heading .ot-public-btn {
    width: 100%;
  }

  .ot-detail-gallery {
    grid-template-columns: 1fr 1fr;
    grid-auto-rows: minmax(130px, 32vw);
  }

  .ot-detail-main-image {
    grid-column: 1 / -1;
    min-height: 250px;
  }

  .ot-unit-price {
    align-items: flex-start;
    text-align: left;
  }
}

@media (max-width: 520px) {
  .osp-public-area .osp-main {
    padding: 10px;
  }

  .ot-public-search,
  .ot-public-results,
  .ot-detail-section,
  .ot-availability-card,
  .ot-contact-card {
    padding-left: 18px;
    padding-right: 18px;
  }

  .ot-public-search-form,
  .ot-availability-grid {
    grid-template-columns: 1fr;
  }

  .ot-public-search-form > *,
  .ot-availability-grid > * {
    grid-column: auto !important;
  }

  .ot-detail-gallery {
    grid-template-columns: 1fr;
    grid-auto-rows: auto;
  }

  .ot-detail-main-image,
  .ot-detail-side-image {
    grid-column: auto;
    min-height: 220px;
  }

  .ot-detail-services,
  .ot-unit-features,
  .ot-detail-badges {
    display: grid;
    grid-template-columns: 1fr;
  }

  .ot-contact-actions,
  .ot-external-links {
    display: grid;
    grid-template-columns: 1fr;
  }
}

/* Area gestore: contenimento, touch target, tabelle e calendari. */
.osp-manager-area .osp-main,
.osp-manager-area .osp-page-head,
.osp-manager-area .osp-card,
.osp-manager-area .osp-table-wrap,
.osp-manager-area .osp-calendar-panel,
.osp-manager-area .osp-photo-grid,
.osp-manager-area .osp-channel-grid,
.osp-manager-area .osp-ops-grid,
.osp-manager-area .osp-guest-card,
.osp-manager-area .osp-filterbar,
.osp-manager-area .osp-inline-form {
  max-width: 100%;
}

.osp-manager-area .osp-btn,
.osp-manager-area button,
.osp-manager-area input,
.osp-manager-area select {
  min-height: var(--ot-p06-touch);
}

.osp-manager-area .osp-table-wrap,
.osp-manager-area .osp-calendar-panel,
.osp-manager-area .osp-side-nav,
.osp-manager-area .osp-monthbar {
  overscroll-behavior-inline: contain;
  -webkit-overflow-scrolling: touch;
}

.osp-manager-area .osp-table-wrap,
.osp-manager-area .osp-calendar-panel {
  overflow-x: auto;
}

.osp-manager-area .osp-table {
  width: 100%;
}

.osp-manager-area .osp-table td,
.osp-manager-area .osp-table th {
  max-width: 360px;
}

.osp-manager-area .osp-cover,
.osp-manager-area .osp-photo-card img {
  max-width: 100%;
  object-fit: cover;
}

.osp-manager-area .osp-actions,
.osp-manager-area .osp-section-head,
.osp-manager-area .osp-filterbar,
.osp-manager-area .osp-inline-form,
.osp-manager-area .osp-monthbar {
  min-width: 0;
}

@media (max-width: 1050px) {
  .osp-manager-area .osp-grid-4,
  .osp-manager-area .osp-grid-3 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .osp-manager-area .osp-check-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .osp-manager-area .osp-manager-structure-card,
  .osp-manager-area .osp-structure-card {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 760px) {
  .osp-manager-area .osp-main {
    width: 100%;
    padding: 12px;
  }

  .osp-manager-area .osp-page-head {
    min-height: 0;
    padding: 25px 20px;
    border-radius: 22px;
  }

  .osp-manager-area .osp-page-head,
  .osp-manager-area .osp-page-account,
  .osp-manager-area .osp-manager-welcome,
  .osp-manager-area .osp-manager-profile-state,
  .osp-manager-area .osp-section-head,
  .osp-manager-area .osp-manager-section-title {
    align-items: flex-start;
    flex-direction: column;
  }

  .osp-manager-area .osp-page-account {
    width: 100%;
    max-width: none;
  }

  .osp-manager-area .osp-grid-4,
  .osp-manager-area .osp-grid-3,
  .osp-manager-area .osp-grid-2,
  .osp-manager-area .osp-form-grid,
  .osp-manager-area .osp-check-grid {
    grid-template-columns: 1fr;
  }

  .osp-manager-area .osp-field-full {
    grid-column: auto;
  }

  .osp-manager-area .osp-actions,
  .osp-manager-area .osp-manager-welcome-actions,
  .osp-manager-area .osp-filterbar,
  .osp-manager-area .osp-inline-form {
    width: 100%;
  }

  .osp-manager-area .osp-actions > .osp-btn,
  .osp-manager-area .osp-actions > form,
  .osp-manager-area .osp-manager-welcome-actions > .osp-btn,
  .osp-manager-area .osp-section-head > .osp-btn {
    flex: 1 1 150px;
  }

  .osp-manager-area .osp-actions > form .osp-btn {
    width: 100%;
  }

  .osp-manager-area .osp-kv {
    grid-template-columns: 1fr;
  }

  .osp-manager-area .osp-kv > *:nth-child(odd) {
    padding-bottom: 5px;
    border-bottom: 0;
  }

  .osp-manager-area .osp-kv > *:nth-child(even) {
    padding-top: 5px;
  }

  .osp-manager-area .osp-calendar-grid {
    min-width: 680px;
  }
}

@media (max-width: 480px) {
  .osp-manager-area .osp-card,
  .osp-manager-area .osp-alert,
  .osp-manager-area .osp-empty {
    border-radius: 17px;
  }

  .osp-manager-area .osp-btn,
  .osp-manager-area .osp-actions > *,
  .osp-manager-area .osp-manager-welcome-actions,
  .osp-manager-area .osp-manager-welcome-actions .osp-btn,
  .osp-manager-area .osp-section-head > .osp-btn {
    width: 100%;
  }

  .osp-manager-area .osp-actions,
  .osp-manager-area .osp-manager-welcome-actions {
    display: grid;
    grid-template-columns: 1fr;
  }

  .osp-manager-area .osp-table {
    min-width: 660px;
  }

  .osp-manager-area .osp-calendar-grid {
    min-width: 620px;
  }

  .osp-manager-area .osp-manager-structure-content {
    padding: 18px;
  }

  .osp-manager-area .osp-manager-structure-title,
  .osp-manager-area .osp-unit-title {
    align-items: flex-start;
    flex-direction: column;
  }
}

/* Stati di focus e preferenze utente. */
:focus-visible {
  outline: 3px solid rgba(213, 161, 75, .72);
  outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto !important;
  }

  *,
  *::before,
  *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}

@media print {
  .hi-network-bar,
  .osp-top,
  .osp-shell-footer,
  .ot-site-header,
  .ot-site-footer,
  .osp-nav-toggle,
  .osp-actions,
  .osp-btn,
  .ot-btn {
    display: none !important;
  }

  body,
  .osp-main,
  .ot-home-main {
    width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    background: #fff !important;
  }

  .osp-card,
  .osp-table-wrap,
  .osp-page-head {
    break-inside: avoid;
    box-shadow: none !important;
  }
}
