/*
 * CampOS shared UI baseline.
 * Loaded after feature styles so operational screens remain readable and responsive.
 */
.client-location-shell{--campos-control-height:46px;--campos-copy:.9rem;--campos-small:.76rem;--campos-label:.8rem;font-size:var(--campos-copy);line-height:1.5}
.client-location-shell>.client-dashboard-main{width:min(1460px,calc(100% - 3rem));padding-top:2rem}
.client-location-shell .client-dashboard-welcome{align-items:center;min-height:86px;margin-bottom:1.4rem}
.client-location-shell .client-dashboard-welcome p{font-size:.76rem}
.client-location-shell .client-dashboard-welcome h1{font-size:clamp(2rem,3vw,2.65rem);line-height:1.15}
.client-location-shell .client-dashboard-welcome span{font-size:.92rem;line-height:1.45}
.client-location-shell .client-locations-card{border-radius:1rem;box-shadow:0 10px 32px rgba(10,38,46,.075)}
.client-location-shell .client-section-heading{min-height:78px;padding:1.15rem 1.3rem}
.client-location-shell .client-section-heading h2{font-size:1.2rem;line-height:1.25}
.client-location-shell .client-section-heading p{font-size:.72rem;line-height:1.35}
.client-location-shell .card-body,.client-location-shell .client-locations-card>p{font-size:var(--campos-copy)}
.client-location-shell form:not(.d-inline) .form-label,.client-location-shell label:not(.form-check-label){font-size:var(--campos-label);line-height:1.35}
.client-location-shell .form-control,.client-location-shell .form-select,.client-location-shell .input-group-text{min-height:var(--campos-control-height);font-size:.9rem;line-height:1.35}
.client-location-shell textarea.form-control{min-height:110px}
.client-location-shell .form-text,.client-location-shell form small,.client-location-shell .text-secondary.small{font-size:.7rem;line-height:1.45}
.client-location-shell .form-check{min-height:1.5rem}
.client-location-shell .form-check-input{width:1.1rem;height:1.1rem;margin-top:.18rem}
.client-location-shell .form-check-label{font-size:.82rem;line-height:1.5}
.client-location-shell .btn{min-height:42px;padding:.52rem .9rem;font-size:.82rem;line-height:1.25}
.client-location-shell .btn-sm{min-height:38px;padding:.42rem .72rem;font-size:.76rem}
.client-location-shell .badge{font-size:.7rem;line-height:1.2}
.client-location-shell .alert{font-size:.84rem;line-height:1.5}

/* Dense tables remain scannable and scroll instead of crushing their controls. */
.client-location-shell .table-responsive{max-width:100%;overflow-x:auto;scrollbar-width:thin}
.client-location-shell .table{margin-bottom:0}
.client-location-shell .table th{padding:.78rem .85rem;font-size:.68rem;line-height:1.35;white-space:nowrap}
.client-location-shell .table td{padding:.82rem .85rem;font-size:.84rem;line-height:1.45;vertical-align:middle}
.client-location-shell .table td.small{font-size:.76rem!important}
.client-location-shell .table .form-control,.client-location-shell .table .form-select{width:auto;min-width:92px;min-height:40px;font-size:.8rem}
.client-location-shell .table td.text-nowrap{white-space:nowrap}
.client-location-shell .table td.text-nowrap form{vertical-align:middle}
.client-location-shell .table td.text-nowrap .btn{margin-block:.15rem}

/* POS catalog forms: Bootstrap column widths were shrinking grid children twice. */
.pos-variant-add-form{grid-template-columns:minmax(150px,1.3fr) minmax(125px,1fr) minmax(145px,1.1fr) minmax(105px,.7fr) minmax(105px,.7fr) minmax(120px,.8fr) minmax(90px,.6fr) minmax(110px,.7fr) auto;gap:.75rem}
.pos-variant-add-form>[class*="col-"],.pos-variant-add-form>.col-auto{width:auto;max-width:none;padding:0}
.pos-variant-add-form .form-control{width:100%;min-width:0}
.pos-variant-add-form .form-check{align-self:end;display:flex;align-items:center;gap:.45rem;min-height:46px;margin:0!important;padding:0}
.pos-variant-add-form .form-check-input{position:static;flex:none;margin:0}
.pos-variant-add-form>.btn{white-space:nowrap}
.pos-catalog-card table,.pos-variants-card table,.pos-modifier-group-card table{min-width:880px}
.pos-catalog-overview small,.pos-product-details-form .client-form-section-title small{font-size:.68rem}
.pos-product-name strong{font-size:.84rem}

/* Arrival, access and financial details need to be readable across a front desk. */
.staff-arrival-ready strong,.staff-arrival-confirmed strong,.staff-arrival-complete strong,.incidental-charge-warning strong,.incidental-charge-blocked strong{font-size:.78rem}
.staff-arrival-ready small,.staff-arrival-confirmed small,.staff-arrival-complete small,.incidental-charge-warning small,.incidental-charge-blocked small{font-size:.68rem;line-height:1.45}
.stay-access-code small{font-size:.64rem}.stay-access-code code{font-size:.92rem}.stay-access-code p{font-size:.66rem;line-height:1.4}
.incidental-ledger>div,.incidental-ledger footer{font-size:.78rem}
.incidental-settings-notice strong{font-size:.76rem}.incidental-settings-notice small{font-size:.68rem}
.location-finance-summary-card small{font-size:.68rem}.location-finance-summary-card em,.location-finance-summary-card footer{font-size:.66rem}
.location-transaction-type{font-size:.74rem}.location-finance-amount{font-size:.86rem}
.campos-guest-identity small,.campos-reservation-guest small{font-size:.72rem}
.campos-report-intro p{font-size:.8rem}

/* Keep grouped forms from overflowing or becoming unusably narrow. */
.client-location-shell .d-flex.flex-wrap{row-gap:.75rem}
.client-location-shell .input-group{flex-wrap:nowrap}
.client-location-shell .input-group>.form-control{min-width:0}
.client-location-shell dialog{max-width:calc(100vw - 1rem)}

@media(max-width:1200px){
  .client-location-shell>.client-dashboard-main{width:calc(100% - 2rem)}
  .pos-variant-add-form{grid-template-columns:repeat(4,minmax(0,1fr))}
  .pos-variant-add-form>.btn{width:100%}
}
@media(max-width:900px){
  .pos-variant-add-form{grid-template-columns:repeat(2,minmax(0,1fr))}
  .client-location-shell .client-section-heading{align-items:flex-start;gap:.75rem}
}
@media(max-width:800px){
  .client-location-shell{--campos-copy:.94rem;--campos-small:.8rem;--campos-label:.84rem}
  .client-location-shell>.client-dashboard-main{width:calc(100% - 1rem);padding-bottom:2rem}
  .client-location-shell .client-dashboard-welcome{min-height:0}
  .client-location-shell .client-dashboard-welcome h1{font-size:1.85rem}
  .client-location-shell .client-locations-card>.client-section-heading{margin-bottom:.75rem}
  .client-location-shell .table-responsive{margin-inline:.75rem!important}
  .client-location-shell .btn{min-height:44px}
}
@media(max-width:600px){
  .client-location-shell .client-section-heading{min-height:0;padding:1rem;flex-direction:column}
  .client-location-shell .client-section-heading>.btn,.client-location-shell .client-section-heading>form{width:100%}
  .client-location-shell .client-section-heading>form .btn{width:100%}
  .client-location-shell .client-locations-card>form,.client-location-shell .client-locations-card>p,.client-location-shell .client-locations-card>ul:not(.client-setup-checklist){margin-inline:.75rem!important}
  .pos-variant-add-form{grid-template-columns:1fr;margin:.75rem}
  .pos-variant-add-form>.btn{width:100%}
  .client-location-shell .d-flex:not(.input-group):not(.client-dashboard-welcome){flex-wrap:wrap}
  .client-location-shell .d-flex:not(.input-group)>.btn{flex:1 1 auto}
  .staff-arrival-action .btn,.guest-checkout-action .btn{width:100%}
}
@media(prefers-reduced-motion:reduce){.client-location-shell *{scroll-behavior:auto!important}}
