/* OSU 96.30.2 — refinamiento transversal de legibilidad, densidad y estados. */
/* `hidden` es una decisión funcional (permisos, sesión o estado), no estética. */
:where([hidden]){display:none!important}
:root{
  --osu-primary-bg:#0a6ed1;
  --osu-primary-hover:#085caf;
  --osu-primary-text:#fff;
  --osu-zebra:#fafbfc;
  --osu-focus-ring:0 0 0 3px rgba(10,110,209,.28);
  --osu-row-action:30px;
  --osu-rail:0px;
  --sap-side-rail:0px;
  --osu-menu-width:min(328px,calc(100vw - 16px));
}
:root[data-theme="dark"]{
  --osu-primary-bg:#0a6ed1;
  --osu-primary-hover:#167ee3;
  --osu-primary-text:#fff;
  --osu-zebra:#26303a;
  --osu-focus-ring:0 0 0 3px rgba(145,200,246,.34);
  --sap-border:#4a5866;
  --sap-border-strong:#91a0af;
}

/* Acciones: contraste estable en ambos temas y estados inequívocos. */
.button-primary:not(:disabled),
.action-menu>summary.button-primary:not([aria-disabled="true"]){
  color:var(--osu-primary-text)!important;
  border-color:var(--osu-primary-bg)!important;
  background:var(--osu-primary-bg)!important;
}
.button-primary:not(:disabled):hover,
.action-menu>summary.button-primary:not([aria-disabled="true"]):hover{
  color:var(--osu-primary-text)!important;
  border-color:var(--osu-primary-hover)!important;
  background:var(--osu-primary-hover)!important;
}
.button:disabled,.icon-button:disabled,.button-primary:disabled{
  color:var(--sap-muted)!important;
  border-color:var(--sap-border)!important;
  background:var(--sap-surface-alt)!important;
  opacity:.72!important;
  cursor:not-allowed!important;
}
.button:focus-visible,.icon-button:focus-visible,.line-action:focus-visible,
.nav-list a:focus-visible,.nav-group:focus-visible,.sortable-header:focus-visible,
.action-menu>summary:focus-visible,.user-menu-item:focus-visible{
  outline:2px solid transparent!important;
  box-shadow:var(--osu-focus-ring)!important;
}
.topbar #menu-toggle.active{
  color:#fff!important;
  border-color:rgba(255,255,255,.42)!important;
  background:rgba(255,255,255,.17)!important;
}

/* Menú: acordeón compacto con orientación visual clara. */
.nav-group b{display:inline-grid!important;place-items:center!important;width:20px!important;height:20px!important;font-size:13px!important;line-height:1!important}
.nav-group[aria-expanded="true"] b{transform:rotate(0deg)!important}
.nav-group[aria-expanded="false"] b{transform:rotate(-90deg)!important}
.nav-submenu a{min-height:34px!important}
.nav-submenu a.active{border-left-width:3px!important}

/* Navegación flotante: no queda ningún riel lateral ocupando la pantalla. */
.app-shell,body.sidebar-pinned .app-shell{
  grid-template-columns:minmax(0,1fr)!important;
}
.main-column,.content{grid-column:1!important}
.main-column::before{left:0!important}
@media(min-width:761px){
  .sidebar,.sidebar:hover,.sidebar:focus-within,
  body:not(.sidebar-peek) .sidebar:hover,body:not(.sidebar-peek) .sidebar:focus-within{
    position:fixed!important;
    z-index:40!important;
    inset:var(--sap-shell-height) auto auto 8px!important;
    width:var(--osu-menu-width)!important;
    height:auto!important;
    max-height:calc(100dvh - var(--sap-shell-height) - 8px)!important;
    padding:8px!important;
    overflow-x:hidden!important;
    overflow-y:auto!important;
    opacity:0!important;
    visibility:hidden!important;
    pointer-events:none!important;
    transform:translateY(-10px) scaleY(.96)!important;
    transform-origin:top left!important;
    border:1px solid var(--sap-border-strong)!important;
    border-top:0!important;
    border-radius:0 0 8px 8px!important;
    background:var(--sap-surface)!important;
    box-shadow:0 14px 34px rgba(20,39,58,.22)!important;
    transition:transform .18s ease,opacity .16s ease,visibility .16s ease!important;
  }
  body.sidebar-peek .sidebar{
    width:var(--osu-menu-width)!important;
    padding:8px!important;
    opacity:1!important;
    visibility:visible!important;
    pointer-events:auto!important;
    transform:translateY(0) scaleY(1)!important;
    overflow:visible!important;
  }
  body.sidebar-peek .sidebar .nav-section-label{
    height:auto!important;
    margin:8px 10px 3px!important;
    overflow:visible!important;
    font-size:9px!important;
  }
  body.sidebar-peek .sidebar .nav-list a,
  body.sidebar-peek .sidebar .nav-group{
    justify-content:flex-start!important;
    padding:7px 10px!important;
    font-size:13px!important;
  }
  body.sidebar-peek .sidebar .nav-group b{display:inline-grid!important}
  body.sidebar-peek .sidebar .nav-list{position:relative!important;overflow:visible!important}
  body.sidebar-peek .sidebar .nav-group[aria-expanded="true"]{
    color:var(--sap-brand)!important;
    background:var(--sap-selected)!important;
  }
  body.sidebar-peek .sidebar .nav-submenu:not([hidden]){
    position:absolute!important;
    z-index:3!important;
    top:var(--nav-flyout-top,0)!important;
    left:calc(100% + 9px)!important;
    display:grid!important;
    width:min(292px,calc(100vw - var(--osu-menu-width) - 32px))!important;
    max-height:calc(100dvh - var(--sap-shell-height) - 16px)!important;
    margin:0!important;
    padding:6px!important;
    overflow-x:hidden!important;
    overflow-y:auto!important;
    border:1px solid var(--sap-border-strong)!important;
    border-radius:6px!important;
    background:var(--sap-surface)!important;
    box-shadow:0 14px 34px rgba(20,39,58,.22)!important;
  }
  body.sidebar-peek .sidebar .nav-submenu a{min-height:36px!important;padding:7px 9px!important}
  .sidebar-backdrop:not([hidden]){
    position:fixed!important;
    z-index:35!important;
    inset:var(--sap-shell-height) 0 0!important;
    display:block!important;
    border:0!important;
    background:rgba(29,45,62,.18)!important;
  }
}

/* Paneles y encabezados: título flexible, acciones agrupadas a la derecha. */
.panel-header>div:first-child,.panel-heading>div:first-child,.section-toolbar>div:first-child,
.hero-strip>div:first-child,.osu-dashboard-head>div:first-child,.support-hero>div:first-child{
  min-width:0!important;
  flex:1 1 auto!important;
}
.panel-header>.filters,.panel-heading>.filters,.section-toolbar>.filters,
.hero-strip>.filters,.osu-dashboard-head>.filters,.support-hero>.filters{
  flex:0 1 auto!important;
  align-items:center!important;
}
.panel-header h2,.panel-header h3,.panel-heading h2,.panel-heading h3{font-size:15px!important;line-height:1.3!important}
.panel-header p,.panel-heading p,.help-text{line-height:1.45!important}
#margin-settings-form{justify-content:flex-start!important}
#margin-settings-form .money-with-suffix{flex:0 0 150px!important;margin-left:auto!important}
#margin-settings-form>.button{flex:0 0 auto!important;margin-left:0!important}

/* Formularios: foco visible, campos nativos y carga de archivos coherentes. */
.input:focus,.select:focus,.textarea:focus,.select-search-input:focus{
  box-shadow:var(--osu-focus-ring)!important;
}
.required-mark{color:#c62828!important;font-weight:800!important}
:root[data-theme="dark"] .required-mark{color:#ff9b93!important}
input[type="file"]{max-width:100%;color:var(--sap-muted)!important;font:inherit!important}
input[type="file"]::file-selector-button{
  min-height:30px;
  margin-right:9px;
  padding:0 10px;
  color:var(--sap-brand);
  border:1px solid var(--sap-border-strong);
  border-radius:var(--sap-radius);
  background:var(--sap-surface);
  font:600 12px/1 "Segoe UI",Arial,sans-serif;
  cursor:pointer;
}
input[type="file"]::file-selector-button:hover{color:var(--sap-brand-hover);border-color:var(--sap-brand);background:var(--sap-hover)}

/* Tablas: mejor seguimiento horizontal sin aumentar excesivamente cada fila. */
.data-table tbody tr:nth-child(even){background:var(--osu-zebra)}
.data-table tbody tr:hover{background:var(--sap-hover)!important}
.data-table td{vertical-align:middle!important}
.data-table th{height:38px!important;vertical-align:middle!important}
.sortable-header{
  min-height:30px!important;
  margin:-4px -6px!important;
  padding:4px 6px!important;
  border-radius:var(--sap-radius)!important;
}
.sortable-header:hover,.sortable-header.active{background:var(--sap-hover)!important}
.data-table td:last-child .button-small,.data-table td:last-child summary.button-small{
  min-height:var(--osu-row-action)!important;
  height:var(--osu-row-action)!important;
}
.data-table td:last-child>.filters,.data-table td:last-child .table-actions{flex-wrap:nowrap!important}
.table-wrap:focus-within{border-color:var(--sap-brand)!important}
.empty-state{line-height:1.5!important}

/* Ventanas y notificaciones: cabecera y acciones permanecen visibles. */
.modal{display:flex!important;max-height:calc(100vh - 40px)!important;overflow:hidden!important;flex-direction:column!important}
.modal>form{display:flex!important;min-height:0!important;flex:1 1 auto!important;flex-direction:column!important}
.modal-header,.modal-footer{flex:0 0 auto!important}
.modal-body{min-height:0!important;overflow:auto!important;scrollbar-gutter:stable}
.modal-footer small{margin-right:auto;color:var(--sap-muted)}
.toast{
  color:var(--sap-text)!important;
  border:1px solid var(--sap-border-strong)!important;
  border-left:4px solid var(--sap-brand)!important;
  border-radius:var(--sap-radius)!important;
  background:var(--sap-surface)!important;
  box-shadow:0 8px 24px rgba(20,39,58,.2)!important;
}

/* Documentos: una hoja blanca nunca hereda los tokens del modo nocturno. */
.quote-document{
  --ink:#202a33;
  --muted:#53616d;
  --line:#cbd5dd;
  --blue:#0b5f9e;
  --navy:#102f49;
  color:#202a33!important;
  color-scheme:light;
}
.quote-document .summary-row{color:#53616d!important}
.quote-document .summary-row strong{color:#202a33!important}
.quote-document .summary-row.total{border-top-color:#cbd5dd!important}
.quote-document .summary-row.total strong{color:#0b5f9e!important}

@media(max-width:760px){
  .app-shell{grid-template-columns:minmax(0,1fr)!important}
  .panel-header,.panel-heading{flex-wrap:wrap!important;align-items:flex-start!important}
  .panel-header>.button,.panel-heading>.button{align-self:flex-start!important}
  .sidebar,.sidebar:hover,.sidebar:focus-within,body.sidebar-peek .sidebar,body.sidebar-pinned .sidebar{
    inset:var(--sap-shell-height) 6px auto 6px!important;
    width:auto!important;
    height:auto!important;
    max-height:calc(100dvh - var(--sap-shell-height) - 6px)!important;
    padding:42px 8px 10px!important;
    overflow-y:auto!important;
    opacity:0!important;
    visibility:hidden!important;
    pointer-events:none!important;
    transform:translateY(-10px) scaleY(.96)!important;
    transform-origin:top left!important;
    border:1px solid var(--sap-border-strong)!important;
    border-top:0!important;
    border-radius:0 0 8px 8px!important;
    transition:transform .18s ease,opacity .16s ease,visibility .16s ease!important;
  }
  body.mobile-menu-open .sidebar.open,
  body.mobile-menu-open .sidebar.open:hover,
  body.mobile-menu-open .sidebar.open:focus-within{
    opacity:1!important;
    visibility:visible!important;
    pointer-events:auto!important;
    transform:translateY(0) scaleY(1)!important;
  }
  .sidebar.open .nav-list{position:static!important}
  .sidebar.open .nav-submenu:not([hidden]){
    position:static!important;
    width:auto!important;
    max-height:none!important;
    margin:0 0 3px 19px!important;
    padding:2px 0 5px 8px!important;
    overflow:visible!important;
    border:0!important;
    border-left:1px solid var(--sap-border)!important;
    border-radius:0!important;
    box-shadow:none!important;
  }
  .sidebar.open{color:var(--sap-text)!important;background:var(--sap-surface)!important}
  .panel-header>div:first-child,.panel-heading>div:first-child,.section-toolbar>div:first-child{flex-basis:100%!important}
  #margin-settings-form .money-with-suffix{margin-left:0!important;flex:1 1 140px!important}
  #margin-settings-form>.button{flex:1 1 110px!important}
  .data-table td:last-child>.filters,.data-table td:last-child .table-actions{flex-wrap:wrap!important}
  .toast-root{right:10px!important;bottom:10px!important;left:10px!important}
  .toast{min-width:0!important;width:100%!important}
}

@media(max-width:430px){
  .quick-create>summary{
    width:38px!important;
    min-width:38px!important;
    padding:0!important;
    overflow:hidden!important;
    font-size:0!important;
  }
  .quick-create>summary::before{content:none!important}
  .quick-create>summary::after{content:"＋";font-size:19px;line-height:1}
}

/* El selector de estado se abre como submenú lateral y no aumenta la fila. */
.row-action-menu .action-menu-panel:has(.quote-status-submenu[open]){
  overflow:visible!important;
}
.quote-status-submenu{
  position:relative!important;
}
.quote-status-submenu>summary span{
  transform:none!important;
  transition:transform .14s ease!important;
}
.quote-status-submenu[open]>summary span{
  transform:translateX(-2px)!important;
}
.quote-status-menu{
  position:fixed!important;
  z-index:98!important;
  visibility:var(--quote-status-visibility,hidden)!important;
  top:var(--quote-status-top,8px)!important;
  left:var(--quote-status-left,8px)!important;
  right:auto!important;
  width:max-content!important;
  min-width:190px!important;
  max-width:min(230px,calc(100vw - 28px))!important;
  max-height:calc(100dvh - 16px)!important;
  overflow-y:auto!important;
  padding:5px!important;
  border:1px solid var(--sap-border-strong)!important;
  border-radius:var(--sap-radius)!important;
  background:var(--sap-surface)!important;
  box-shadow:0 8px 24px rgba(34,53,72,.24)!important;
}
.quote-status-menu>button{
  color:var(--sap-text)!important;
  border-left:0!important;
  border-radius:3px!important;
  background:var(--sap-surface)!important;
}
.quote-status-menu>button:hover,.quote-status-menu>button:focus-visible{
  color:var(--sap-brand)!important;
  background:var(--sap-hover)!important;
}
.quote-status-menu>button:disabled{
  color:var(--sap-muted)!important;
  background:var(--sap-selected)!important;
}
.quote-status-menu>button.button-danger{
  color:var(--sap-negative)!important;
}
.quote-status-menu>button.button-danger:hover,.quote-status-menu>button.button-danger:focus-visible{
  color:var(--sap-negative)!important;
  background:color-mix(in srgb,var(--sap-negative) 10%,var(--sap-surface))!important;
}

/* Catálogo: filtros compactos y editor de conjuntos sin reconstruir las filas. */
.catalog-toolbar{gap:12px!important;align-items:flex-start!important}
.section-toolbar>.catalog-filters{
  display:grid!important;grid-template-columns:minmax(220px,1.4fr) minmax(175px,1fr) minmax(155px,.85fr);
  gap:8px!important;flex:1 1 620px!important;min-width:0!important;
}
.catalog-filters>.input,.catalog-filters>.select-search-combobox{width:100%!important;min-width:0!important}
.section-toolbar>.catalog-actions{display:flex!important;flex:0 1 auto!important;gap:6px!important;flex-wrap:wrap!important}
.catalog-filters .select-filter-input,.catalog-component-row .select-filter-input{padding-right:32px!important}
.catalog-table .number,.catalog-bundle-detail-table .number{white-space:nowrap}
.catalog-component-list{display:grid;gap:8px}
.catalog-component-row{
  display:grid;grid-template-columns:minmax(180px,1fr) 78px 110px 110px auto;
  align-items:start;gap:10px;padding:10px;border:1px solid var(--sap-border-strong);
  border-radius:var(--sap-radius);background:var(--sap-surface);
}
.catalog-component-row>div{min-width:0}
.catalog-component-row label,.catalog-component-money>span{
  display:block;margin-bottom:4px;color:var(--sap-muted);font-size:11px;font-weight:600;line-height:1.35;
}
.catalog-component-row .input{width:100%;min-width:0}
.catalog-component-quantity{text-align:right}
.catalog-component-product>small{display:none;margin-top:4px;color:var(--sap-muted);font-size:11px;line-height:1.35;overflow-wrap:anywhere}
.catalog-component-money{text-align:right}
.catalog-component-money strong{display:block;white-space:nowrap;line-height:32px;font-size:12px;color:var(--sap-text)}
.catalog-component-row>[data-component-remove]{align-self:start;margin-top:18px}
.catalog-component-row .select-search-results{
  position:static!important;max-height:170px!important;margin-top:4px;box-shadow:none!important;
}
.catalog-component-row .select-search-clear{top:16px;transform:translateY(-50%)}
.catalog-component-row .select-search-option{overflow-wrap:anywhere}
.catalog-bundle-controls{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin:12px 0}
.catalog-bundle-controls>.form-field{width:210px;max-width:100%}
.catalog-bundle-controls h3{margin:0}
.catalog-bundle-summary{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:12px 0;padding:12px;
  border:1px solid var(--sap-border-strong);border-radius:var(--sap-radius);background:var(--sap-surface-alt);
}
.catalog-bundle-summary span{display:block;margin-bottom:4px;font-size:11px;color:var(--sap-muted)}
.catalog-bundle-summary strong{white-space:nowrap;color:var(--sap-text);font-size:15px}
@media(max-width:1050px){
  .catalog-toolbar{flex-wrap:wrap!important}
  .section-toolbar>.catalog-filters{flex-basis:100%!important}
}
@media(max-width:700px){
  .section-toolbar>.catalog-filters{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .catalog-filters>#catalog-search{grid-column:1/-1}
  .catalog-component-row{grid-template-columns:78px minmax(0,1fr) minmax(0,1fr);gap:8px}
  .catalog-component-product{grid-column:1/-1}
  .catalog-component-product>small{display:block}
  .catalog-component-row>[data-component-remove]{grid-column:1/-1;justify-self:end;margin-top:0}
  .catalog-bundle-summary{gap:8px;padding:10px}
  .catalog-bundle-summary strong{font-size:12px}
  .catalog-bundle-summary span{font-size:10px}
}

@media print{
  .modal{display:block!important;max-height:none!important;overflow:visible!important}
  .modal>form{display:block!important}
  .modal-body{overflow:visible!important}
}
