/* ==========================================================
   Responsive Profesional Total - Restaurante
   Mobile-first fixes sin blur, sin espacios raros, sin romper PHP.
========================================================== */
:root{
  --rp-bg:#f6f8fc;
  --rp-surface:#ffffff;
  --rp-text:#0f172a;
  --rp-muted:#64748b;
  --rp-line:#e5eaf3;
  --rp-brand:#2563eb;
  --rp-brand-2:#10b981;
  --rp-shadow:0 18px 45px rgba(15,23,42,.12);
  --rp-radius:18px;
}

html,
body{
  width:100%;
  max-width:100%;
  overflow-x:hidden !important;
  -webkit-text-size-adjust:100%;
  text-rendering:optimizeLegibility;
}

*,*::before,*::after{
  box-sizing:border-box;
  max-width:100%;
  -webkit-tap-highlight-color:transparent;
}

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

a,button,input,select,textarea{
  touch-action:manipulation;
}

/* Sin blur en menus, overlays, tarjetas ni modales */
*,
.header,
.topbar,
.navbar,
nav,
.card,
.cardx,
.panel,
.box,
.section,
.modal,
.modal-overlay,
.modal-content,
.modal-contenido,
.sidebar,
.overlay{
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
  filter:none !important;
}

body.responsive-menu-open,
body.sidebar-open{
  overflow:hidden !important;
}

/* Botones y textos nunca verticales */
.btn,
button,
input[type="submit"],
input[type="button"],
.btn-soft,
.btn-primary-soft,
.btn-principal,
.btn-secundario,
.btn-demo,
.nav-link,
.modal-link,
.modal-close,
.sb-link,
.btn-preview,
.btn-smart,
.btn-module{
  white-space:normal !important;
  word-break:normal !important;
  overflow-wrap:normal !important;
  line-height:1.2 !important;
}

.btn,
button,
input[type="submit"],
input[type="button"],
.btn-soft,
.btn-primary-soft,
.btn-principal,
.btn-secundario,
.btn-demo{
  min-width:0 !important;
}

/* Dashboard / sistema */
.app{
  width:100%;
  min-width:0;
}

.main,
.content-wrap{
  min-width:0;
  width:100%;
}

.topbar{
  z-index:60 !important;
}

.topbar-inner{
  min-width:0;
}

.page-title{
  min-width:0;
  flex:1 1 auto;
}

.page-title .h,
.page-title .s{
  max-width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
}

.sidebar{
  z-index:100 !important;
}

.overlay{
  background:rgba(15,23,42,.42) !important;
}

.module-frame{
  width:100% !important;
  height:calc(100dvh - 138px) !important;
  min-height:520px;
}

.module-frame iframe,
.modal-frame,
.modal-iframe{
  width:100% !important;
  height:100% !important;
  border:0 !important;
}

.kpi-card,
.dashboard-card,
.card,
.panel,
.box,
.table-container,
.form-container{
  overflow:hidden;
}

.kpi-value{
  overflow-wrap:anywhere;
}

/* Formularios */
form{
  max-width:100%;
}

input,
select,
textarea,
.form-control,
.form-select{
  max-width:100% !important;
  min-width:0 !important;
}

textarea{
  resize:vertical;
}

.form-actions,
.actions,
.action-buttons,
.btn-group,
.buttons,
.toolbar,
.filtros,
.filters,
.search,
.searchbar{
  max-width:100%;
  flex-wrap:wrap !important;
}

.table-wrap,
.tablewrap,
.tableWrap,
.tableScroll,
.table-container,
.table-responsive{
  max-width:100%;
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
}

/* Tablas convertibles en tarjetas por JS */
table.responsive-stack{
  width:100% !important;
}

table.responsive-stack th,
table.responsive-stack td{
  overflow-wrap:anywhere;
}

/* Portafolio landing */
.header{
  z-index:80 !important;
}

.header-inner{
  min-width:0;
}

.brand,
.brand-link{
  min-width:0;
}

.brand-texto{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.responsive-nav-toggle,
.web-nav-toggle{
  display:none;
  align-items:center;
  justify-content:center;
  width:48px;
  height:48px;
  border-radius:16px !important;
  border:1px solid rgba(15,23,42,.10) !important;
  background:#ffffff !important;
  color:#0f172a !important;
  box-shadow:0 10px 26px rgba(15,23,42,.10) !important;
  cursor:pointer;
  flex:0 0 auto;
  font-size:20px;
  line-height:1;
}

.responsive-nav-toggle span,
.web-nav-toggle span{
  display:block;
  width:20px;
  height:2px;
  background:currentColor;
  border-radius:999px;
  position:relative;
}

.responsive-nav-toggle span::before,
.responsive-nav-toggle span::after,
.web-nav-toggle span::before,
.web-nav-toggle span::after{
  content:"";
  position:absolute;
  left:0;
  width:20px;
  height:2px;
  background:currentColor;
  border-radius:999px;
}

.responsive-nav-toggle span::before,
.web-nav-toggle span::before{ top:-7px; }
.responsive-nav-toggle span::after,
.web-nav-toggle span::after{ top:7px; }

.responsive-nav-toggle.is-open span,
.web-nav-toggle.is-open span{ background:transparent; }
.responsive-nav-toggle.is-open span::before,
.web-nav-toggle.is-open span::before{ top:0; transform:rotate(45deg); }
.responsive-nav-toggle.is-open span::after,
.web-nav-toggle.is-open span::after{ top:0; transform:rotate(-45deg); }

.hero-panel,
.panel,
.feature-panel,
.smart-panel,
.cta-panel,
.market-panel{
  max-width:100%;
}

.pill{
  max-width:100%;
  white-space:normal !important;
}

.hero-main h1,
.panel-header h2,
.feature-header h2,
.market-header h2,
.cta-main h2,
.section-title{
  overflow-wrap:break-word;
}

.cards-grid,
.feature-grid,
.smart-grid,
.base-grid,
.features-grid,
.rooms-grid,
.services-grid,
.products-grid,
.grid{
  min-width:0;
}

.card-sector,
.feature-card,
.smart-card,
.base-card,
.room-card,
.service-card,
.product-card,
.testimonial-card{
  min-width:0;
}

/* Modal general */
.modal,
.modal-overlay{
  padding:16px !important;
}

.modal-box,
.modal-contenido,
.modal-content{
  max-width:100% !important;
}

.modal-cerrar{
  min-width:34px !important;
}

/* Boton contacto */
.contacto-fijo{
  width:58px !important;
  height:58px !important;
  min-width:58px !important;
  z-index:90 !important;
}

/* Webs internas publicas */
.navbar{
  width:100%;
  min-width:0;
}

.navbar .logo{
  min-width:0;
  max-width:60vw;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.navbar .nav-links{
  min-width:0;
}

.hero,
.features,
.rooms-section,
.testimonials,
.services,
.products,
.about,
.contact,
section{
  max-width:100%;
}

/* Medium tablets */
@media (max-width: 1200px){
  .content-wrap{ padding:16px !important; }
  .module-frame{ height:calc(100dvh - 132px) !important; }
  .cards-grid{ grid-template-columns:repeat(2,minmax(0,1fr)) !important; }
  .smart-grid{ grid-template-columns:repeat(2,minmax(0,1fr)) !important; }
  .base-grid{ grid-template-columns:repeat(2,minmax(0,1fr)) !important; }
}

/* Dashboard mobile */
@media (max-width: 992px){
  .app{
    display:block !important;
  }

  .sidebar{
    position:fixed !important;
    top:0 !important;
    left:0 !important;
    width:min(84vw, 320px) !important;
    max-width:320px !important;
    height:100dvh !important;
    transform:translateX(-105%) !important;
    transition:transform .22s ease !important;
    box-shadow:22px 0 60px rgba(15,23,42,.24) !important;
    overflow-y:auto !important;
    border-radius:0 24px 24px 0 !important;
  }

  .sidebar.show,
  .sidebar.is-open{
    transform:translateX(0) !important;
    left:0 !important;
  }

  .overlay{
    position:fixed !important;
    inset:0 !important;
    z-index:90 !important;
    display:none !important;
  }

  .overlay.show,
  .overlay.is-open{
    display:block !important;
  }

  .main{
    width:100% !important;
  }

  .topbar-inner{
    padding:12px 14px !important;
    display:grid !important;
    grid-template-columns:1fr !important;
    gap:10px !important;
  }

  .topbar-inner > .d-flex:first-child{
    width:100%;
    min-width:0;
  }

  .topbar-inner > .d-flex:last-child{
    width:100%;
    display:grid !important;
    grid-template-columns:1fr 1fr !important;
    gap:10px !important;
  }

  .topbar-inner > .d-flex:last-child .btn{
    width:100% !important;
    min-height:44px;
    padding:10px 12px !important;
    display:inline-flex !important;
    align-items:center;
    justify-content:center;
    text-align:center;
    font-size:13px !important;
  }

  #btnToggleSidebar{
    width:46px !important;
    height:46px !important;
    padding:0 !important;
    flex:0 0 46px;
    display:inline-flex !important;
    align-items:center;
    justify-content:center;
  }

  .page-title .h{ font-size:15px !important; }
  .page-title .s{ font-size:11px !important; }

  .content-wrap{
    padding:14px !important;
  }

  .module-frame{
    height:calc(100dvh - 160px) !important;
    min-height:560px;
    border-radius:18px !important;
  }
}

/* Mobile total */
@media (max-width: 760px){
  body{
    background:#f7f9fd !important;
  }

  .container,
  .main-container,
  .content,
  .contenedor{
    width:100% !important;
    max-width:100% !important;
    padding-left:16px !important;
    padding-right:16px !important;
  }

  .row{
    margin-left:0 !important;
    margin-right:0 !important;
  }

  [class*="col-"]{
    min-width:0;
  }

  /* Dashboard */
  .topbar-inner > .d-flex:last-child{
    grid-template-columns:1fr !important;
  }

  .kpi-card{
    padding:15px !important;
    border-radius:18px !important;
  }

  .kpi-top{
    align-items:flex-start !important;
  }

  .kpi-value{
    font-size:clamp(22px, 8vw, 30px) !important;
  }

  .module-frame{
    height:calc(100dvh - 178px) !important;
    min-height:560px;
  }

  /* Tablas como tarjetas */
  .table-wrap,
  .tablewrap,
  .tableWrap,
  .tableScroll,
  .table-container,
  .table-responsive{
    overflow:visible !important;
  }

  table.responsive-stack{
    display:block !important;
    min-width:0 !important;
    border-spacing:0 !important;
    border-collapse:separate !important;
  }

  table.responsive-stack thead{
    display:none !important;
  }

  table.responsive-stack tbody,
  table.responsive-stack tr{
    display:block !important;
    width:100% !important;
  }

  table.responsive-stack tbody tr{
    margin:0 0 14px !important;
    padding:14px !important;
    border:1px solid #e6edf6 !important;
    border-radius:18px !important;
    background:#ffffff !important;
    box-shadow:0 10px 26px rgba(15,23,42,.07) !important;
  }

  table.responsive-stack td{
    display:flex !important;
    align-items:flex-start !important;
    justify-content:space-between !important;
    gap:14px !important;
    width:100% !important;
    padding:10px 0 !important;
    min-height:38px;
    border-bottom:1px solid #eef2f7 !important;
    text-align:right !important;
    white-space:normal !important;
    word-break:normal !important;
    overflow-wrap:anywhere !important;
  }

  table.responsive-stack td:first-child,
  table.responsive-stack td:last-child{
    border-radius:0 !important;
  }

  table.responsive-stack td:last-child{
    border-bottom:0 !important;
    padding-bottom:0 !important;
  }

  table.responsive-stack td::before{
    content:attr(data-label);
    flex:0 0 42%;
    max-width:42%;
    text-align:left;
    color:#64748b;
    font-size:11px;
    font-weight:900;
    letter-spacing:.05em;
    text-transform:uppercase;
    overflow-wrap:break-word;
  }

  table.responsive-stack td[data-label=""]::before{
    content:"";
    display:none;
  }

  table.responsive-stack td .btn,
  table.responsive-stack td button,
  table.responsive-stack td a.btn,
  table.responsive-stack td input[type="submit"]{
    width:auto !important;
    margin:2px;
  }

  /* Formularios mobile */
  input,select,textarea,.form-control,.form-select{
    min-height:46px !important;
    font-size:16px !important;
  }

  .btn,
  button,
  input[type="submit"],
  input[type="button"],
  .button,
  .add-btn,
  .edit-btn,
  .delete-btn{
    min-height:44px;
  }

  .form-actions .btn,
  .actions .btn,
  .action-buttons .btn,
  .toolbar .btn,
  .filtros .btn,
  .filters .btn,
  .form-actions button,
  .actions button,
  .toolbar button{
    width:100% !important;
  }

  /* Portafolio */
  .header{
    position:sticky !important;
    top:0 !important;
  }

  .header-inner{
    min-height:68px !important;
    height:auto !important;
    padding:10px 0 !important;
    display:flex !important;
    flex-direction:row !important;
    align-items:center !important;
    justify-content:space-between !important;
    gap:12px !important;
  }

  .brand-link{
    width:auto !important;
    flex:1 1 auto !important;
    min-width:0 !important;
  }

  .brand{
    min-width:0 !important;
    gap:10px !important;
  }

  .brand-logo-wrap,
  .brand-icon{
    width:46px !important;
    height:46px !important;
    border-radius:15px !important;
    flex:0 0 46px !important;
  }

  .brand-texto{
    font-size:clamp(20px, 6vw, 26px) !important;
    max-width:calc(100vw - 138px) !important;
  }

  .responsive-nav-toggle{
    display:inline-flex !important;
  }

  .header .nav{
    position:fixed !important;
    top:76px !important;
    left:14px !important;
    right:14px !important;
    z-index:120 !important;
    display:none !important;
    flex-direction:column !important;
    align-items:stretch !important;
    gap:8px !important;
    padding:14px !important;
    background:#ffffff !important;
    border:1px solid #e5eaf3 !important;
    border-radius:22px !important;
    box-shadow:0 24px 60px rgba(15,23,42,.18) !important;
    max-height:calc(100dvh - 92px) !important;
    overflow:auto !important;
  }

  .header .nav.nav-open{
    display:flex !important;
  }

  .header .nav a,
  .header .nav .nav-link,
  .header .nav .btn-principal{
    width:100% !important;
    min-height:48px !important;
    justify-content:center !important;
    text-align:center !important;
    padding:13px 16px !important;
    border-radius:15px !important;
    font-size:14px !important;
  }

  .hero{
    padding:12px 0 18px !important;
  }

  .hero-panel{
    min-height:auto !important;
    align-items:flex-start !important;
    border-radius:24px !important;
    box-shadow:0 16px 38px rgba(15,23,42,.08) !important;
  }

  .hero-main{
    padding:26px 20px !important;
  }

  .hero-main h1{
    font-size:clamp(32px, 10vw, 43px) !important;
    line-height:1.04 !important;
    letter-spacing:-1.35px !important;
    margin-bottom:16px !important;
  }

  .hero-subtitulo,
  .hero-contexto{
    font-size:16px !important;
    line-height:1.55 !important;
    margin-bottom:17px !important;
  }

  .pill{
    min-height:34px !important;
    padding:7px 12px !important;
    font-size:10px !important;
    line-height:1.2 !important;
    margin-bottom:16px !important;
  }

  .hero-botones,
  .modal-actions,
  .card-footer{
    display:grid !important;
    grid-template-columns:1fr !important;
    width:100% !important;
    gap:10px !important;
  }

  .btn-principal,
  .btn-secundario,
  .btn-demo,
  .modal-link,
  .modal-close,
  .btn-preview,
  .btn-smart,
  .btn-module{
    width:100% !important;
    min-height:48px !important;
    text-align:center !important;
  }

  .panel,
  .feature-panel,
  .smart-panel,
  .cta-panel,
  .market-panel{
    border-radius:24px !important;
  }

  .panel-header,
  .feature-header,
  .cards-wrap,
  .feature-grid,
  .smart-grid,
  .market-header,
  .base-grid,
  .cta-main,
  .cta-side{
    padding:20px !important;
  }

  .panel-header h2,
  .feature-header h2,
  .market-header h2,
  .cta-main h2,
  .section-title{
    font-size:clamp(28px, 8.4vw, 36px) !important;
    line-height:1.06 !important;
    letter-spacing:-1px !important;
  }

  .panel-header p,
  .feature-header p,
  .market-header p,
  .cta-main p,
  .section-subtitle{
    font-size:15.5px !important;
    line-height:1.55 !important;
  }

  .cards-grid,
  .feature-grid,
  .smart-grid,
  .base-grid,
  .features-grid,
  .rooms-grid,
  .services-grid,
  .products-grid{
    grid-template-columns:1fr !important;
    gap:16px !important;
  }

  .card-body,
  .smart-body,
  .base-card,
  .feature-card,
  .room-content,
  .testimonial-card{
    padding:20px !important;
  }

  .card-sector h3,
  .feature-card h3,
  .smart-body h3,
  .base-card h3,
  .room-title{
    font-size:clamp(22px, 6.5vw, 28px) !important;
    min-height:auto !important;
  }

  .cta-grid,
  .market-header{
    grid-template-columns:1fr !important;
  }

  .cta-main{
    border-right:0 !important;
    border-bottom:1px solid #e5eaf3 !important;
  }

  .modal{
    align-items:flex-start !important;
    padding:10px !important;
  }

  .modal-box{
    border-radius:18px !important;
    margin-top:6px !important;
  }

  .modal-header{
    flex-direction:column !important;
    align-items:stretch !important;
    padding:14px !important;
  }

  .modal-frame-wrap{
    height:calc(100dvh - 180px) !important;
    min-height:420px !important;
  }

  .modal-overlay{
    padding:12px !important;
    background:rgba(15,23,42,.58) !important;
  }

  .modal-contenido{
    width:100% !important;
    height:calc(100dvh - 24px) !important;
    max-height:none !important;
    border-radius:18px !important;
    transform:none !important;
  }

  .contacto-fijo{
    width:54px !important;
    height:54px !important;
    min-width:54px !important;
    right:14px !important;
    bottom:78px !important;
  }

  /* Webs internas */
  .navbar{
    min-height:64px !important;
    padding:12px 16px !important;
    display:flex !important;
    align-items:center !important;
    gap:10px !important;
    background:#ffffff !important;
    border-bottom:1px solid #e5eaf3 !important;
    box-shadow:0 10px 26px rgba(15,23,42,.08) !important;
  }

  .navbar .logo{
    color:#0f172a !important;
    font-size:clamp(20px, 6vw, 26px) !important;
    flex:1 1 auto;
  }

  .web-nav-toggle{
    display:inline-flex !important;
  }

  .navbar .nav-links{
    position:absolute !important;
    top:calc(100% + 8px) !important;
    left:12px !important;
    right:12px !important;
    display:none !important;
    flex-direction:column !important;
    gap:0 !important;
    padding:10px !important;
    margin:0 !important;
    background:#ffffff !important;
    border:1px solid #e5eaf3 !important;
    border-radius:18px !important;
    box-shadow:0 22px 55px rgba(15,23,42,.16) !important;
    z-index:1100 !important;
  }

  .navbar .nav-links.nav-open{
    display:flex !important;
  }

  .navbar .nav-links li{
    width:100% !important;
    list-style:none !important;
  }

  .navbar .nav-links a{
    display:flex !important;
    align-items:center;
    justify-content:center;
    width:100% !important;
    min-height:44px !important;
    padding:12px 14px !important;
    border-radius:13px !important;
    color:#0f172a !important;
    background:#ffffff !important;
    font-size:13px !important;
    font-weight:800 !important;
    text-align:center !important;
  }

  .navbar .nav-links a:hover{
    background:#f1f5f9 !important;
    color:#2563eb !important;
  }

  .navbar > .btn{
    display:none !important;
  }

  .hero{
    height:auto !important;
    min-height:calc(100dvh - 64px) !important;
    padding:104px 16px 58px !important;
  }

  .hero-content{
    padding:0 !important;
    max-width:100% !important;
  }

  .hero h1{
    font-size:clamp(36px, 12vw, 52px) !important;
    line-height:1.02 !important;
    margin-bottom:16px !important;
  }

  .hero p{
    font-size:clamp(16px, 4.5vw, 19px) !important;
    line-height:1.55 !important;
    margin-bottom:24px !important;
  }

  .hero-buttons{
    display:grid !important;
    grid-template-columns:1fr !important;
    gap:12px !important;
    width:100% !important;
  }

  .hero-buttons .btn,
  .hero .btn{
    width:100% !important;
    text-align:center !important;
    min-height:48px !important;
  }

  .features,
  .rooms-section,
  .testimonials,
  .services,
  .products,
  .about,
  .contact,
  section{
    padding-left:16px !important;
    padding-right:16px !important;
  }

  .features,
  .rooms-section,
  .testimonials{
    padding-top:56px !important;
    padding-bottom:56px !important;
  }

  .feature-card,
  .room-card,
  .testimonial-card{
    border-radius:18px !important;
    overflow:hidden;
  }

  .room-img{
    height:210px !important;
  }

  footer{
    padding:40px 16px 26px !important;
  }

  .footer-links{
    display:grid !important;
    grid-template-columns:1fr !important;
    gap:12px !important;
  }
}

/* Very small phones */
@media (max-width: 390px){
  .container,
  .main-container,
  .content,
  .contenedor{
    padding-left:12px !important;
    padding-right:12px !important;
  }

  .brand-logo-wrap,
  .brand-icon{
    width:42px !important;
    height:42px !important;
    flex-basis:42px !important;
  }

  .brand-texto{
    font-size:20px !important;
    max-width:calc(100vw - 124px) !important;
  }

  .responsive-nav-toggle,
  .web-nav-toggle{
    width:44px !important;
    height:44px !important;
  }

  .hero-main{
    padding:22px 16px !important;
  }

  .panel-header,
  .feature-header,
  .cards-wrap,
  .feature-grid,
  .smart-grid,
  .market-header,
  .base-grid,
  .cta-main,
  .cta-side{
    padding:16px !important;
  }

  table.responsive-stack td{
    display:block !important;
    text-align:left !important;
  }

  table.responsive-stack td::before{
    display:block;
    max-width:100%;
    margin-bottom:4px;
  }
}

/* Login principal */
.login-shell,
.login-panel,
.hero-panel,
.login-card,
.credential-card,
.stats-row{
  min-width:0;
  max-width:100%;
}

@media (max-width: 980px){
  body{
    overflow-y:auto !important;
    overflow-x:hidden !important;
  }

  .login-shell{
    width:min(100%, calc(100vw - 24px)) !important;
    min-height:auto !important;
    grid-template-columns:1fr !important;
    border-radius:26px !important;
  }

  .login-panel{
    padding:26px 20px !important;
  }
}

@media (max-width: 560px){
  body{
    padding:12px !important;
    display:block !important;
  }

  .login-shell{
    width:100% !important;
    border-radius:22px !important;
  }

  .login-shell .hero-panel{
    min-height:auto !important;
    padding:22px !important;
    gap:28px !important;
  }

  .login-shell .brand{
    align-items:center !important;
  }

  .login-shell .brand-logo{
    width:58px !important;
    height:58px !important;
    border-radius:18px !important;
  }

  .brand-copy strong{
    font-size:17px !important;
  }

  .brand-copy span{
    font-size:11px !important;
  }

  .hero-copy h1{
    font-size:clamp(30px, 10vw, 38px) !important;
    line-height:1.04 !important;
  }

  .hero-copy p{
    font-size:15px !important;
    line-height:1.55 !important;
  }

  .stats-row,
  .credential-card{
    grid-template-columns:1fr !important;
  }

  .login-card h2{
    font-size:28px !important;
  }

  .demo-pill{
    width:100% !important;
    text-align:center !important;
    justify-content:center;
  }

  .toggle-pass{
    height:36px !important;
    padding:0 10px !important;
    font-size:12px !important;
  }
}
