/* Compatibilidad transversal para Safari/iOS y ajustes visuales comunes. */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{min-width:0}
img,video,iframe{max-width:100%}
button,input,select,textarea{font:inherit}
button,input[type=button],input[type=submit],select{-webkit-tap-highlight-color:transparent}
input[type=checkbox],input[type=radio]{border-radius:initial}
[hidden]{display:none!important}
.table-scroll{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain}
.legal-topbar,.launch-login,.client-app-header,.client-app-nav,.subscription-price,.plan-obscured:before,.pwa-update-backdrop{-webkit-backdrop-filter:blur(18px)}
.client-app-header,.client-app-nav{background-color:rgba(255,255,255,.96)}
.reveal{will-change:opacity,transform}
@supports not (color:color-mix(in srgb,#000 20%,#fff)){
  .team-avatar,.professional-slots>div:first-child span{background:#eee4d6;border-color:#ddc9aa}
}
@supports (-webkit-touch-callout:none){
  input,select,textarea{font-size:max(16px,1em)}
  .portal-modal-card,.booking-card,.public-tv-frame{transform:translateZ(0)}
  .table-scroll{scrollbar-width:none}
  .table-scroll::-webkit-scrollbar{height:4px}
}

/* Escala tipográfica legal uniforme. */
.legal-brand{font-size:15px}.legal-nav nav a{font-size:13px}.legal-back{font-size:12px}.legal-eyebrow{font-size:11px}
.legal-hero p{font-size:17px}.legal-index>span{font-size:11px}.legal-index nav a{font-size:13px}.legal-index small{font-size:11px}
.legal-content h3{font-size:17px}.legal-content p,.legal-content li{font-size:16px;line-height:1.78}
.legal-data dt,.legal-data dd{font-size:14px;line-height:1.6}.legal-notice strong{font-size:14px}.legal-notice p{font-size:14px}
.legal-footer>div>div{font-size:13px}

/* Footers públicos legibles y homogéneos. */
.footer-brand p{font-size:14px;line-height:1.6}.footer-links strong{font-size:13px}.footer-links a{font-size:14px}.footer-bottom{font-size:12px}
.launch-footer,.launch-footer nav{font-size:14px}
.powered,.public-footer>div>div:last-child{font-size:14px}

/* TV pública ampliada en construccion.php y reparto equilibrado vídeo/cartel. */
.tv-grid{grid-template-columns:minmax(320px,.72fr) minmax(560px,1.28fr);gap:52px}.tv-device{max-width:900px;padding-top:0}
.tv-device .public-tv-frame{width:100%;margin:0;aspect-ratio:16/10}
.public-tv-mixed{grid-template-columns:minmax(0,1.55fr) minmax(220px,1fr)}

/* Informes: caja, gastos y movimientos. */
.report-history-grid{display:grid;grid-template-columns:1fr;gap:16px;margin:18px 0}.report-cash-history>header>b{padding:7px 10px;border-radius:9px;background:#f0e5d2;color:#855f23;font-size:10px}
.cash-difference.negative,.cash-negative{color:#a43f36}.cash-movement-kind{display:inline-flex;padding:5px 8px;border-radius:999px;background:#eeeae4;font-size:9px;font-weight:800;white-space:nowrap}
.cash-movement-kind.sale,.cash-movement-kind.cash_in{background:#e2f2e8;color:#2d7351}.cash-movement-kind.refund,.cash-movement-kind.cash_out{background:#f9e5e2;color:#9c4138}
.staff-service-picker label.is-selected{border-color:#c9963e;background:#fbf5e9}
.gallery-file-picker.is-disabled{opacity:.58;cursor:not-allowed}

/* TelÃ©fonos: prefijo regional visible y campo nacional uniforme. */
.phone-prefix-field,.phone-control,.app-phone-control{display:grid!important;grid-template-columns:auto minmax(0,1fr);align-items:stretch;width:100%;overflow:hidden;border:1px solid #d8d1c8;border-radius:10px;background:#fff}
.phone-prefix-field:focus-within,.phone-control:focus-within,.app-phone-control:focus-within{border-color:var(--app-primary,#c9963e);box-shadow:0 0 0 3px rgba(201,150,62,.14)}
.phone-prefix-field>b,.phone-control>b,.app-phone-control>b{display:flex;align-items:center;padding:0 11px;border-right:1px solid #ddd6cd;background:#f4efe7;color:#3c3731;white-space:nowrap;font-size:12px}
.phone-prefix-field>input,.phone-control>input,.app-phone-control>input{width:100%!important;min-width:0;border:0!important;border-radius:0!important;box-shadow:none!important;background:transparent!important}

/* Carga transversal: siempre arrastrar/soltar, sin apariencia nativa. */
.unified-file-host{position:relative}.unified-upload-form>button[type=submit]{width:100%;justify-content:center}
.unified-file-drop-zone{position:relative;min-height:72px;display:grid;grid-template-columns:34px minmax(0,1fr);align-items:center;gap:11px;width:100%;margin:8px 0 10px;padding:14px 16px;border:1px dashed #c9ad7d;border-radius:13px;background:#faf5ec;color:#302b26;text-align:left;cursor:pointer;transition:border-color .18s,background .18s,transform .18s}
.unified-file-drop-zone:hover,.unified-file-drop-zone:focus-visible,.unified-file-drop-zone.is-dragging{border-color:var(--app-primary,#c9963e);background:#fff8ec;outline:0;transform:translateY(-1px)}
.unified-file-drop-zone>i{width:34px;height:34px;display:grid;place-items:center;border-radius:10px;background:#ead9ba;color:#93641f;font-size:16px}.unified-file-drop-zone>span{display:grid;min-width:0;gap:2px}.unified-file-drop-zone strong{font-size:11px}.unified-file-drop-zone small{color:#867d72;font-size:9px}.unified-file-drop-zone em,.unified-file-existing-card .unified-file-name{display:block;max-width:100%;overflow:hidden;color:#28704f;font-size:9px;font-style:normal;font-weight:800;text-overflow:ellipsis;white-space:nowrap}
.unified-file-drop-zone.has-file{border-style:solid;border-color:#8fc2a5;background:#f0f8f3}.unified-file-drop-zone input[type=file]{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;min-height:0!important;margin:0!important;padding:0!important;opacity:0!important;cursor:pointer!important}
.unified-file-drop-zone.is-disabled{opacity:.55;cursor:not-allowed}.unified-file-existing-card.is-dragging{border-color:var(--app-primary,#c9963e)!important;background:#fff8ec!important}.file-drop.has-unified-file-zone>i,.file-drop.has-unified-file-zone>span,.upload-field.has-unified-file-zone>span,.tv-upload-forms form.has-unified-file-zone>h3{display:none!important}.media-upload-card.has-unified-file-zone>span{display:none!important}.construction-contact-wrap{padding-top:95px;padding-bottom:20px}.construction-contact-wrap .launch-contact{margin-bottom:70px}

/* El pie profesional cierra siempre el viewport, sin espacio posterior. */
.dashboard-main{min-width:0;width:100%;min-height:100dvh;display:flex;flex-direction:column}.dashboard-content{flex:1 0 auto;min-width:0;width:100%}.appointment-calendar-panel{min-width:0;max-width:100%}.portal-footer{flex:0 0 auto;margin-top:auto;bottom:0}

@media(max-width:1080px){.tv-grid{grid-template-columns:1fr;gap:45px}.tv-device{width:min(900px,100%);justify-self:center}}
@media(max-width:760px){
  .legal-back{font-size:11px}.legal-hero p{font-size:16px}.legal-content p,.legal-content li{font-size:15px}.legal-content h3{font-size:16px}
  .legal-data dt,.legal-data dd,.legal-notice p{font-size:13px}.legal-footer>div>div{font-size:12px}
  .footer-brand p,.launch-footer,.launch-footer nav,.powered,.public-footer>div>div:last-child{font-size:13px}.footer-links strong{font-size:12px}.footer-links a{font-size:13px}.footer-bottom{font-size:12px}
  .tv-device{width:100%}.tv-device .public-tv-frame,.public-tv-frame{aspect-ratio:16/12}.public-tv-mixed{grid-template-columns:minmax(0,1.4fr) minmax(95px,1fr)}

  .table-scroll{overflow-x:auto!important;-webkit-overflow-scrolling:touch}
  .services-table{display:table!important;width:max-content!important;min-width:780px!important;border-collapse:collapse}
  .services-table thead{display:table-header-group!important}.services-table tbody{display:table-row-group!important}
  .services-table tr{display:table-row!important;padding:0!important;border-bottom:1px solid #e7e1d9}
  .services-table th,.services-table td{display:table-cell!important;width:auto!important;padding:12px 10px!important;border-bottom:1px solid #eee9e2!important;white-space:nowrap;vertical-align:middle}
  .services-table td:before{display:none!important;content:none!important}.service-online-cell .status{display:inline-flex!important}

  .appointment-calendar-panel [data-appointment-list-view]{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .appointment-calendar-panel .appointment-list{width:max-content;min-width:880px;padding:0 14px}
  .appointment-calendar-panel .appointment-row{grid-template-columns:55px 4px minmax(155px,.85fr) minmax(190px,1fr) auto minmax(125px,auto)!important;gap:11px;min-height:68px}
  .appointment-calendar-panel .appointment-service,.appointment-calendar-panel .appointment-status-badge,.appointment-calendar-panel .status-form,.appointment-calendar-panel .appointment-open-button{grid-column:auto!important;grid-row:auto!important}
  .appointment-calendar-panel .status{display:inline-flex!important}.appointment-calendar-panel .appointment-row-actions{display:flex;white-space:nowrap}
  .appointment-calendar-panel .status-form select{min-width:125px;height:36px}
  .appointment-calendar-panel>header{display:block;padding:12px!important}.appointment-calendar-panel .appointment-calendar-heading{display:none!important}
  .calendar-view-controls{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;width:100%;max-width:none;overflow:visible!important}
  .calendar-view-controls button,.calendar-view-controls .calendar-new-appointment{display:grid;place-items:center;width:100%;min-width:0;height:44px;padding:0!important;border:1px solid #ddd6cc;border-radius:11px;background:#fff;color:#49443e;font-size:0;text-decoration:none}
  .calendar-view-controls button i,.calendar-view-controls .calendar-new-appointment i{font-size:19px}.calendar-view-controls button.active{background:#171719;color:#fff;border-color:#171719}
  .calendar-view-controls .calendar-new-appointment{background:#c9963e;color:#17130d;border-color:#c9963e}.calendar-view-controls .calendar-new-appointment span{display:none}
  .calendar-view-controls input{display:none!important}

  .billing-invoice-document{width:100%;max-width:100%;overflow:hidden;padding:16px}
  .billing-invoice-document>header>div{min-width:0}.billing-invoice-document>header strong{overflow-wrap:anywhere}
  .invoice-parties{gap:16px}.invoice-parties>div{min-width:0}.invoice-parties p{overflow-wrap:anywhere;word-break:break-word}
  .billing-invoice-document table{display:table;width:100%;table-layout:fixed}
  .billing-invoice-document th,.billing-invoice-document td{padding:9px 6px;font-size:9px;overflow-wrap:anywhere;word-break:break-word}
  .billing-invoice-document th{font-size:8px;letter-spacing:.03em}
  .billing-invoice-document>footer{min-width:0}.billing-invoice-document>footer strong{overflow-wrap:anywhere}
  .portal-footer{justify-content:center;text-align:center}
}

@media(max-width:600px){
  /* En mÃ³vil, estado arriba e iconos de la cita en una segunda lÃ­nea. */
  .appointment-calendar-panel .appointment-row-actions{display:grid!important;grid-template-columns:34px 34px;grid-template-rows:auto 34px;gap:6px 7px;align-content:center;justify-content:start}
  .appointment-calendar-panel .appointment-row-actions .appointment-status-badge{grid-column:1/-1!important;grid-row:1!important;justify-self:start}
  .appointment-calendar-panel .appointment-row-actions .appointment-open-button,.appointment-calendar-panel .appointment-row-actions .appointment-sale-button{grid-row:2!important;grid-column:auto!important}
}
