/* NexoOdonto 1.8.06 — camada responsiva sistêmica.
   Carregada por último para harmonizar desktop, notebooks, tablets,
   Android/iOS, telas estreitas, landscape e monitores ultrawide. */
:root{
    --nexo-r-gutter:clamp(12px,1.6vw,30px);
    --nexo-r-gap:clamp(10px,1.1vw,18px);
    --nexo-r-card-radius:clamp(14px,1.2vw,22px);
    --nexo-r-control:44px;
    --nexo-r-content-max:1920px;
    --nexo-r-safe-top:env(safe-area-inset-top,0px);
    --nexo-r-safe-right:env(safe-area-inset-right,0px);
    --nexo-r-safe-bottom:env(safe-area-inset-bottom,0px);
    --nexo-r-safe-left:env(safe-area-inset-left,0px);
}

html,body{max-width:100%;overflow-x:hidden}
body.nexo-body{min-width:0!important}
.app-shell,.main,.page-content,.workspace-header,.platform-shell,.platform-main,.platform-content{min-width:0;max-width:100%}
.main{width:100%}
.workspace-header,.page-content{width:100%;max-width:var(--nexo-r-content-max)!important}
.page-content>*{min-width:0;max-width:100%}
img,picture,video,canvas,iframe{max-width:100%;height:auto}
pre{max-width:100%;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere}
code{overflow-wrap:anywhere}

/* Flex/grid: evita que conteúdo longo force o viewport para fora. */
.page-heading,.header-actions,.card-head,.section-header,.toolbar,.page-toolbar,.actions,.patient-actions,
.report-commandbar,.report-commandbar-copy,.report-commandbar-actions,.filter-bar,.form-actions,
[class*="-grid"]>*{min-width:0}
.page-heading h1,.page-heading p,.card h1,.card h2,.card h3,.card p,.section-header h2,.section-header p{overflow-wrap:anywhere}

/* Controles com dimensão consistente e amigável a toque sem inflar desktop. */
button,.btn,a.btn,input,select,textarea{max-width:100%}
button,.btn,a.btn{min-height:40px}
input,select{min-height:40px}
textarea{min-height:92px}

/* Tabelas: roláveis por padrão; JS converte tabelas simples em cartões no telefone. */
.nexo-table-scroll{max-width:100%;overflow-x:auto!important;overflow-y:visible;-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain;scrollbar-gutter:stable}
.nexo-table-scroll>table{margin:0}
table.nexo-responsive-table{width:100%;max-width:100%}
table.nexo-responsive-table td,table.nexo-responsive-table th{overflow-wrap:anywhere}
table.nexo-responsive-table--scroll{min-width:max(760px,100%)}

/* Formulários e barras genéricas não extrapolam a largura disponível. */
.search-row,.filters,.filter-row,.form-actions,.actions,.patient-actions,.toolbar-actions,.top-actions{max-width:100%;flex-wrap:wrap}
.search-row>*,.filters>*,.filter-row>*{min-width:0}
.form-grid,.details-grid,.grid-2,.grid-3,.dashboard-grid,.report-grid,.settings-grid,.cadastros-grid{min-width:0}
.field,label{min-width:0}

/* Ultrawide: usa melhor a tela sem transformar linhas de leitura em 4K inteiro. */
@media(min-width:1601px){
    :root{--nexo-r-content-max:1880px}
    .main{padding-inline:clamp(28px,2vw,44px)!important}
    .workspace-header{padding-top:24px!important}
    .page-heading h1{font-size:clamp(30px,1.75vw,36px)!important}
    .dashboard-metrics{gap:16px}
}
@media(min-width:2200px){
    :root{--nexo-r-content-max:2100px}
    .page-content,.workspace-header{margin-inline:auto}
    .card,.dashboard-panel,.metric{border-radius:22px}
}

/* Notebook / desktop compacto. */
@media(max-width:1366px){
    .main{padding-inline:20px!important}
    .workspace-header{margin-bottom:16px!important}
    .page-heading-row{gap:12px!important}
    .header-actions{gap:7px!important;flex-wrap:wrap}
    .header-actions .btn{padding-inline:11px!important}
    .card{padding:clamp(15px,1.4vw,20px)}
    .dashboard-metrics{gap:10px}
    .metric-grid.compact{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
}

/* Tablet e telas que já usam sidebar em overlay. */
@media(max-width:980px){
    :root{--nexo-r-gutter:14px;--nexo-r-gap:10px}
    html,body{width:100%;min-width:0}
    body.nexo-body{padding-left:var(--nexo-r-safe-left);padding-right:var(--nexo-r-safe-right)}
    html body .main,html body.sidebar-collapsed .main{padding:0!important;width:100%!important;max-width:100%!important}
    .workspace-header{box-sizing:border-box;margin:0 auto 14px!important;padding:calc(12px + var(--nexo-r-safe-top)) var(--nexo-r-gutter) 0!important}
    .page-content{box-sizing:border-box;padding:0 var(--nexo-r-gutter) calc(18px + var(--nexo-r-safe-bottom))!important;margin:0 auto!important;overflow-x:hidden}
    .page-heading-row{align-items:flex-start!important;gap:10px!important;flex-wrap:wrap!important}
    .mobile-menu-button{min-width:44px!important;min-height:44px!important;flex:0 0 44px!important}
    .page-heading{flex:1 1 210px!important}
    .page-heading h1{font-size:clamp(22px,4vw,28px)!important;line-height:1.12!important}
    .page-heading p{font-size:12px!important;line-height:1.45!important}
    .header-actions{flex:1 1 100%!important;width:100%!important;padding-left:54px!important;overflow-x:auto!important;overflow-y:hidden;flex-wrap:nowrap!important;scrollbar-width:none;-webkit-overflow-scrolling:touch}
    .header-actions::-webkit-scrollbar{display:none}
    .header-actions>*{flex:0 0 auto!important}
    .global-search-wrap,.global-search{width:100%!important;max-width:100%!important}
    .global-search{grid-template-columns:auto minmax(0,1fr) auto!important;gap:7px!important;padding:6px 7px 6px 12px!important}
    .global-search input{min-width:0!important;font-size:16px!important}
    .global-search kbd{display:none!important}

    /* Layouts genéricos de duas/mais colunas passam a uma coluna quando necessário. */
    .grid-2,.grid-3,.dashboard-grid,.report-grid,.settings-grid,.license-grid,.platform-grid,
    .details-grid,.patient-grid,.financial-grid{grid-template-columns:minmax(0,1fr)!important}
    .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
    .form-grid>.span-2,.form-grid>.full-field{grid-column:1/-1!important}

    .card-head,.section-header,.toolbar,.page-toolbar,.filter-bar,.action-bar,.form-actions,.actions,.patient-actions,
    .report-commandbar,.report-commandbar-actions{gap:8px!important;flex-wrap:wrap!important}
    .card-head>div,.section-header>div,.toolbar>div,.page-toolbar>div{min-width:0}

    /* Menus horizontais permanecem acessíveis por gesto. */
    .tabs,.nav-tabs,.patient-tabs,.detail-tabs,.profile-tabs,.report-tabs,.report-nav,.settings-tabs,.quick-tabs,
    .finance-context-navigation,.view-switch{max-width:100%!important;overflow-x:auto!important;overflow-y:hidden!important;white-space:nowrap;scrollbar-width:none;-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain}
    .tabs::-webkit-scrollbar,.nav-tabs::-webkit-scrollbar,.patient-tabs::-webkit-scrollbar,.detail-tabs::-webkit-scrollbar,
    .profile-tabs::-webkit-scrollbar,.report-tabs::-webkit-scrollbar,.report-nav::-webkit-scrollbar,.settings-tabs::-webkit-scrollbar,
    .quick-tabs::-webkit-scrollbar,.finance-context-navigation::-webkit-scrollbar,.view-switch::-webkit-scrollbar{display:none}

    /* Cards e painéis respeitam o viewport. */
    .card,.panel,.section-card,.content-card,.detail-card,.summary-card,.dashboard-panel,.report-card,.form-card,
    .settings-card,.license-card,.patient-card,.financial-card{max-width:100%!important;min-width:0!important}

    /* Modais: sempre cabem na altura visual, inclusive com teclado virtual. */
    .modal-backdrop,[role="dialog"].modal-backdrop{padding:max(8px,var(--nexo-r-safe-top)) 8px max(8px,var(--nexo-r-safe-bottom))!important;overflow:auto!important}
    .modal-backdrop>.modal,.modal-backdrop>.modal-card,.modal-backdrop>.quick-modal-card,.modal-backdrop>[class*="modal-card"],.dialog-card{
        max-width:calc(100vw - 16px)!important;max-height:calc(var(--nexo-visual-height,100dvh) - var(--nexo-r-safe-top) - var(--nexo-r-safe-bottom) - 16px)!important;overflow:auto!important
    }

    .platform-topbar,.platform-content{max-width:100%!important}
    .platform-content{padding:14px!important}
}

/* Telefone / tablet pequeno. */
@media(max-width:720px){
    :root{--nexo-r-gutter:10px;--nexo-r-card-radius:15px}
    .workspace-header{padding-inline:var(--nexo-r-gutter)!important}
    .page-content{padding-inline:var(--nexo-r-gutter)!important}
    .header-actions{padding-left:0!important;display:grid!important;grid-auto-flow:column;grid-auto-columns:max-content!important;justify-content:start!important}
    .header-actions .btn,.header-actions>a.btn{min-height:44px!important}
    .notification-center{grid-row:1}

    .card,.metric,.patient-header,.dashboard-panel,.report-card,form.card{border-radius:var(--nexo-r-card-radius)!important}
    .card{padding:14px!important;margin-bottom:12px!important}
    .metric{padding:14px!important}
    .card-head,.section-header{align-items:flex-start!important}
    .card-head h2,.card-head h3,.section-header h2,.section-header h3{margin-top:2px}

    .form-grid,.details-grid,.quick-grid,.filter-grid,.report-filter-form,.settings-grid,.patient-grid,.financial-grid,
    .license-grid,.platform-grid{grid-template-columns:minmax(0,1fr)!important}
    .form-grid>*,.details-grid>*,.quick-grid>*,.filter-grid>*,.report-filter-form>*{grid-column:auto!important}
    input,select,textarea{font-size:16px!important}
    button,.btn,a.btn,input,select{min-height:44px}
    textarea{min-height:104px}

    /* Tabelas simples viram cartões com os cabeçalhos como rótulo. */
    .nexo-table-scroll:has(> table.nexo-responsive-table--cards){overflow:visible!important;border:0!important;background:transparent!important}
    table.nexo-responsive-table--cards{display:block!important;min-width:0!important;border-collapse:separate!important;border-spacing:0!important}
    table.nexo-responsive-table--cards thead{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
    table.nexo-responsive-table--cards tbody{display:grid!important;gap:10px!important;width:100%!important}
    table.nexo-responsive-table--cards tbody>tr{display:block!important;width:100%!important;padding:7px 12px!important;border:1px solid rgba(var(--clinic-primary-rgb,7,87,180),.10)!important;border-radius:14px!important;background:#fff!important;box-shadow:0 8px 24px rgba(var(--clinic-primary-rgb,7,87,180),.055)!important}
    table.nexo-responsive-table--cards tbody>tr[hidden]{display:none!important}
    table.nexo-responsive-table--cards tbody>tr>td{display:grid!important;grid-template-columns:minmax(96px,34%) minmax(0,1fr)!important;align-items:start!important;gap:9px!important;width:100%!important;min-width:0!important;max-width:100%!important;padding:9px 0!important;border:0!important;border-bottom:1px solid rgba(var(--clinic-primary-rgb,7,87,180),.075)!important;text-align:left!important;white-space:normal!important;overflow-wrap:anywhere!important}
    table.nexo-responsive-table--cards tbody>tr>td:last-child{border-bottom:0!important}
    table.nexo-responsive-table--cards tbody>tr>td::before{content:attr(data-label);min-width:0;color:var(--clinic-primary,#0757b4);font-size:10px;font-weight:900;letter-spacing:.045em;line-height:1.35;text-transform:uppercase}
    table.nexo-responsive-table--cards tbody>tr>td[colspan]{display:block!important;text-align:center!important}
    table.nexo-responsive-table--cards tbody>tr>td[colspan]::before{display:none!important}
    table.nexo-responsive-table--cards tbody>tr>td.nexo-cell-actions{display:flex!important;align-items:center!important;gap:6px!important;flex-wrap:wrap!important}
    table.nexo-responsive-table--cards tbody>tr>td.nexo-cell-actions::before{flex:1 0 100%!important}
    table.nexo-responsive-table--cards tbody>tr>td.nexo-cell-actions>a,table.nexo-responsive-table--cards tbody>tr>td.nexo-cell-actions>button,table.nexo-responsive-table--cards tbody>tr>td.nexo-cell-actions>form{flex:0 1 auto!important}
    table.nexo-responsive-table--cards .inline,table.nexo-responsive-table--cards form.inline,table.nexo-responsive-table--cards .actions{max-width:100%;flex-wrap:wrap}
    table.nexo-responsive-table--cards .inline input,table.nexo-responsive-table--cards .inline select{width:auto;min-width:72px;flex:1 1 80px}

    table.nexo-responsive-table--scroll{min-width:760px!important}
    .nexo-table-scroll[data-mobile-overflow="1"]::after{position:sticky;left:8px}

    .public-page{padding:12px!important}
    .public-proposal{width:100%;max-width:100%}
    .public-proposal .metric-grid.compact{grid-template-columns:repeat(2,minmax(0,1fr))!important}

    .platform-sidebar{padding:12px!important}
    .platform-topbar{padding:12px!important}
    .platform-content{padding:10px!important}
    .platform-topbar>.btn{width:100%}
}

/* Celulares estreitos. */
@media(max-width:480px){
    :root{--nexo-r-gutter:8px;--nexo-r-gap:8px;--nexo-r-card-radius:14px}
    .workspace-header{margin-bottom:10px!important;padding-top:calc(8px + var(--nexo-r-safe-top))!important}
    .page-heading-row{gap:8px!important}
    .page-heading{flex-basis:170px!important}
    .page-heading h1{font-size:21px!important}
    .page-heading p{font-size:11px!important}
    .global-search{margin-top:9px!important;border-radius:14px!important}
    .global-search button{padding-inline:11px!important}
    .global-search button::after{font-size:11px!important}

    .card{padding:12px!important}
    .metric-grid,.dashboard-metrics,.metrics-grid,.kpi-grid,.summary-cards,.stats-cards{grid-template-columns:minmax(0,1fr)!important}
    .public-proposal .metric-grid.compact{grid-template-columns:minmax(0,1fr)!important}
    .patient-actions,.actions,.form-actions,.toolbar-actions,.report-filter-actions{width:100%!important;display:grid!important;grid-template-columns:minmax(0,1fr)!important}
    .patient-actions>*,.actions>*,.form-actions>*,.toolbar-actions>*,.report-filter-actions>*{width:100%!important;margin:0!important}

    table.nexo-responsive-table--cards tbody>tr>td{grid-template-columns:minmax(0,1fr)!important;gap:4px!important}
    table.nexo-responsive-table--cards tbody>tr{padding-inline:10px!important}

    .tabs,.nav-tabs,.patient-tabs,.detail-tabs,.profile-tabs,.report-tabs,.settings-tabs{margin-inline:0!important;border-radius:13px!important}
    .tabs a,.nav-tabs a,.patient-tabs a,.detail-tabs a,.profile-tabs a,.report-tabs a,.settings-tabs a{padding:9px 10px!important;font-size:12px!important}

    .mobile-core-nav{min-height:60px!important;padding-top:4px!important}
    .mobile-core-nav a,.mobile-core-nav button{min-height:48px!important}
}

/* 320–360 px: último nível de compactação, sem esconder informação essencial. */
@media(max-width:360px){
    :root{--nexo-r-gutter:6px}
    .page-heading h1{font-size:19px!important}
    .mobile-menu-button{min-width:40px!important;min-height:40px!important;flex-basis:40px!important}
    .header-actions{gap:5px!important}
    .header-actions .btn{padding-inline:9px!important;font-size:11px!important}
    .card{padding:10px!important}
    .mobile-core-nav span{font-size:8px!important}
}

/* Landscape curto: prioriza área útil vertical. */
@media(orientation:landscape) and (max-height:620px) and (max-width:980px){
    .workspace-header{padding-top:6px!important;margin-bottom:8px!important}
    .page-heading p{display:none}
    .global-search{margin-top:7px!important;min-height:44px!important}
    .mobile-core-nav{min-height:54px!important}
    .mobile-core-nav a,.mobile-core-nav button{min-height:44px!important}
    .modal-backdrop>.modal,.modal-backdrop>.modal-card,.modal-backdrop>.quick-modal-card,.modal-backdrop>[class*="modal-card"]{max-height:calc(var(--nexo-visual-height,100dvh) - 8px)!important}
}

/* Teclado virtual: evita navegação/botões fixos sobre o campo em edição. */
@media(max-width:980px){
    body.nexo-keyboard-open .mobile-core-nav,
    body.nexo-keyboard-open .nexo-chat-widget,
    body.nexo-keyboard-open .floating-toast,
    body.nexo-keyboard-open .system-update-notice{transform:translateY(120%)!important;pointer-events:none!important;opacity:0!important}
    body.nexo-keyboard-open{padding-bottom:0!important}
    body.nexo-keyboard-open .page-content{padding-bottom:12px!important}
}

/* Dispositivos de toque: alvos mínimos WCAG sem afetar mouse/desktop. */
@media(pointer:coarse){
    button,.btn,a.btn,.nav-item,.tabs a,.patient-tabs a{min-height:44px}
    input,select{min-height:44px}
    input[type="checkbox"],input[type="radio"]{min-width:20px;min-height:20px}
}

@media(prefers-reduced-motion:reduce){
    *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

@media print{
    .nexo-table-scroll{overflow:visible!important}
    table.nexo-responsive-table{display:table!important;min-width:0!important}
    table.nexo-responsive-table thead{display:table-header-group!important;position:static!important;width:auto!important;height:auto!important;clip:auto!important}
    table.nexo-responsive-table tbody{display:table-row-group!important}
    table.nexo-responsive-table tr{display:table-row!important;box-shadow:none!important;border:0!important;padding:0!important}
    table.nexo-responsive-table td{display:table-cell!important;border-bottom:1px solid #ddd!important;padding:6px!important}
    table.nexo-responsive-table td::before{display:none!important}
}
