/* NexoOdonto 1.7.32 — camada responsiva global para celular, tablet e viewport reduzido. */
:root{
    --nexo-mobile-gap:12px;
    --nexo-mobile-radius:16px;
    --nexo-visual-height:100dvh;
    --nexo-safe-top:env(safe-area-inset-top,0px);
    --nexo-safe-right:env(safe-area-inset-right,0px);
    --nexo-safe-bottom:env(safe-area-inset-bottom,0px);
    --nexo-safe-left:env(safe-area-inset-left,0px);
}
html{max-width:100%;overflow-x:hidden;-webkit-text-size-adjust:100%;text-size-adjust:100%;}
body{max-width:100%;overflow-x:hidden;}
img,svg,video,canvas{max-width:100%;}
input,select,textarea,button{max-width:100%;}
.main,.page-content,.platform-main,.platform-content{min-width:0;max-width:100%;}
.nexo-table-scroll{display:block;width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch;border-radius:inherit;scrollbar-width:thin;}
.nexo-table-scroll>table{min-width:max-content;width:100%;margin:0;}
.nexo-table-scroll[data-mobile-overflow="1"]{position:relative;}
.nexo-table-scroll[data-mobile-overflow="1"]::after{content:"Deslize para ver mais";position:sticky;left:8px;display:inline-flex;margin:6px 8px 8px;padding:4px 8px;border-radius:999px;background:rgba(var(--clinic-primary-rgb,7,83,184),.08);color:var(--clinic-primary-800,#0753b8);font-size:10px;font-weight:700;pointer-events:none;}

@media (max-width:980px){
    body.nexo-body{min-height:var(--nexo-visual-height);}
    .app-shell{width:100%;max-width:100%;min-width:0;}
    .main{width:100%!important;max-width:100%!important;margin:0!important;}
    .workspace-header{padding:calc(10px + var(--nexo-safe-top)) 12px 10px!important;}
    .page-heading-row{display:flex!important;align-items:flex-start!important;flex-wrap:wrap!important;gap:10px!important;min-width:0;}
    .mobile-menu-button{flex:0 0 auto;}
    .page-heading{flex:1 1 190px;min-width:0;}
    .page-heading h1{font-size:clamp(20px,6vw,28px)!important;line-height:1.15;overflow-wrap:anywhere;}
    .page-heading p{font-size:13px!important;line-height:1.4;overflow-wrap:anywhere;}
    .header-actions{display:flex!important;flex:1 1 100%;width:100%;min-width:0;gap:8px!important;overflow-x:auto;overscroll-behavior-inline:contain;padding-bottom:2px;scrollbar-width:none;}
    .header-actions::-webkit-scrollbar{display:none;}
    .header-actions>.btn,.header-actions>a.btn{flex:0 0 auto;white-space:nowrap;min-height:42px;}
    .notification-center{flex:0 0 auto;}
    .notification-popover{position:fixed!important;z-index:5000!important;left:10px!important;right:10px!important;top:calc(68px + var(--nexo-safe-top))!important;width:auto!important;max-width:none!important;max-height:calc(var(--nexo-visual-height) - 88px - var(--nexo-safe-top))!important;overflow:auto!important;}
    .global-search-wrap{width:100%;min-width:0;margin-top:8px;}
    .global-search{width:100%;min-width:0;display:grid!important;grid-template-columns:auto minmax(0,1fr) auto!important;gap:8px!important;}
    .global-search input{min-width:0;width:100%;font-size:16px!important;}
    .global-search kbd{display:none!important;}
    .global-search button{min-height:42px;padding-inline:14px!important;}
    .global-search-suggestions{position:fixed!important;left:10px!important;right:10px!important;top:auto!important;width:auto!important;max-width:none!important;max-height:min(58vh,480px)!important;overflow:auto!important;z-index:5200!important;}
    .page-content{width:100%!important;max-width:100%!important;min-width:0;padding:12px!important;overflow-x:hidden;}
    .license-banner{align-items:flex-start!important;flex-wrap:wrap!important;gap:8px!important;}

    /* Containers, cartões e painéis nunca ultrapassam o viewport. */
    .page-content>*{max-width:100%;min-width:0;}
    .card,.panel,.section-card,.content-card,.detail-card,.summary-card,.dashboard-card,.report-card,.form-card,.settings-card,.license-card,.patient-card,.financial-card,.platform-card{max-width:100%!important;min-width:0!important;}
    [class*="-grid"]{min-width:0;}

    /* Barras de ações e cabeçalhos quebram de forma previsível. */
    .toolbar,.page-toolbar,.card-header,.section-header,.details-header,.list-header,.filter-bar,.action-bar,.form-actions,.card-actions,.patient-actions,.report-commandbar,.report-commandbar-copy,.report-commandbar-actions,.agenda-day-toolbar,.agenda-day-actions,.week-bar,.week-bar>div{max-width:100%;min-width:0;flex-wrap:wrap!important;gap:8px!important;}
    .toolbar>.btn,.page-toolbar>.btn,.card-actions>.btn,.form-actions>.btn,.form-actions>button,.form-actions>a,.patient-actions>.btn{min-height:42px;}

    /* Guias e menus horizontais tornam-se faixas roláveis em vez de cortar. */
    .tabs,.nav-tabs,.patient-tabs,.detail-tabs,.profile-tabs,.report-tabs,.report-nav,.settings-tabs,.quick-tabs,.agenda-top nav{display:flex!important;max-width:100%!important;overflow-x:auto!important;overflow-y:hidden!important;overscroll-behavior-inline:contain;scroll-snap-type:x proximity;scrollbar-width:none;white-space:nowrap;}
    .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,.agenda-top nav::-webkit-scrollbar{display:none;}
    .tabs>* ,.nav-tabs>* ,.patient-tabs>* ,.detail-tabs>* ,.profile-tabs>* ,.report-tabs>* ,.report-nav>* ,.settings-tabs>* ,.quick-tabs>* ,.agenda-top nav>*{flex:0 0 auto;scroll-snap-align:start;}

    /* Formulários compactos em uma coluna. */
    .form-grid,.details-grid,.quick-grid,.report-filter-form,.filter-grid,.settings-grid,.patient-grid,.financial-grid,.license-grid,.platform-grid,.dashboard-grid,.report-grid,.summary-grid,.stats-grid,.cards-grid{grid-template-columns:minmax(0,1fr)!important;}
    .form-grid>.span-2,.details-grid>.span-2,.quick-grid>.span-2,.report-filter-form>.span-2{grid-column:auto!important;}
    label{min-width:0;}
    input,select,textarea{width:100%;font-size:16px!important;}
    textarea{resize:vertical;}

    /* Diálogos usam a altura visual real e têm rolagem própria. */
    .modal-backdrop,[role="dialog"].modal-backdrop{padding:8px!important;align-items:flex-start!important;overflow-y:auto!important;overflow-x:hidden!important;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;}
    .modal-backdrop>.modal,.modal-backdrop>.modal-card,.modal-backdrop>.quick-modal-card,.modal-backdrop>[class*="modal-card"],.dialog-card{width:min(100%,720px)!important;max-width:100%!important;max-height:calc(var(--nexo-visual-height) - 16px - var(--nexo-safe-top) - var(--nexo-safe-bottom))!important;overflow-y:auto!important;overflow-x:hidden!important;margin:auto!important;padding-bottom:calc(16px + var(--nexo-safe-bottom))!important;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-gutter:stable;}
    .modal-actions,.modal-actions.horizontal{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:8px!important;position:sticky!important;bottom:calc(-1px - var(--nexo-safe-bottom));z-index:20;background:linear-gradient(180deg,rgba(255,255,255,.72),#fff 24%)!important;padding:12px 0 calc(6px + var(--nexo-safe-bottom))!important;}
    .modal-actions>*{width:100%!important;min-width:0!important;}

    /* Chat, avisos e botões flutuantes respeitam áreas seguras. */
    .nexo-chat-widget{right:calc(10px + var(--nexo-safe-right))!important;bottom:calc(10px + var(--nexo-safe-bottom))!important;}
    .nexo-chat-panel{position:fixed!important;left:8px!important;right:8px!important;bottom:calc(8px + var(--nexo-safe-bottom))!important;width:auto!important;max-width:none!important;max-height:calc(var(--nexo-visual-height) - 24px - var(--nexo-safe-top) - var(--nexo-safe-bottom))!important;}
    .floating-toast{left:10px!important;right:10px!important;bottom:calc(10px + var(--nexo-safe-bottom))!important;width:auto!important;max-width:none!important;}
    .system-update-notice{left:10px!important;right:10px!important;bottom:calc(10px + var(--nexo-safe-bottom))!important;width:auto!important;max-width:none!important;max-height:calc(var(--nexo-visual-height) - 24px)!important;overflow:auto!important;}
    .system-update-actions{display:grid!important;grid-template-columns:1fr!important;width:100%;}

    /* Relatórios e gráficos mantêm proporção sem vazar. */
    .chart-container,.dashboard-chart,.report-chart,.dashboard-donut-wrap,.chart-shell{max-width:100%!important;min-width:0!important;overflow:hidden;}
    canvas{width:100%!important;max-width:100%!important;height:auto!important;}

    /* Administração da plataforma no celular. */
    .platform-shell{display:block!important;min-height:var(--nexo-visual-height);}
    .platform-sidebar{position:relative!important;inset:auto!important;width:100%!important;max-width:100%!important;height:auto!important;padding:14px!important;}
    .platform-brand{margin-bottom:12px!important;}
    .platform-nav{display:flex!important;gap:8px!important;overflow-x:auto!important;white-space:nowrap;scrollbar-width:none;padding-bottom:4px;}
    .platform-nav::-webkit-scrollbar{display:none;}
    .platform-nav a{flex:0 0 auto;}
    .platform-side-footer{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:10px!important;flex-wrap:wrap!important;margin-top:12px!important;}
    .platform-main{margin:0!important;width:100%!important;}
    .platform-topbar{padding:14px!important;align-items:flex-start!important;flex-wrap:wrap!important;gap:10px!important;}
    .platform-topbar h1{font-size:22px!important;}
    .platform-content{padding:12px!important;}

    /* Telas de entrada e recuperação. */
    .login-shell{min-height:var(--nexo-visual-height)!important;grid-template-columns:minmax(0,1fr)!important;}
    .login-brand-panel{display:none!important;}
    .login-form-panel{width:100%!important;min-height:var(--nexo-visual-height)!important;padding:calc(16px + var(--nexo-safe-top)) 12px calc(16px + var(--nexo-safe-bottom))!important;}
    .login-card,.login-card-branded,.recovery-card{width:100%!important;max-width:560px!important;padding:20px!important;margin:auto!important;}
}

@media (max-width:900px){
    :root{--nexo-mobile-gap:10px;--nexo-mobile-radius:14px;}
    .page-content{padding:10px!important;}
    .workspace-header{padding-inline:10px!important;}
    .global-search button{font-size:0;padding-inline:12px!important;}
    .global-search button::after{content:"Buscar";font-size:12px;}
    .btn,button,a.btn{white-space:normal;overflow-wrap:anywhere;text-align:center;}

    /* Agenda: cabeçalho e grade acessíveis por gesto horizontal. */
    .page-content>.agenda-embedded{width:100%!important;margin:0!important;max-width:100%!important;}
    .agenda-embedded{border-radius:16px!important;overflow:hidden!important;}
    .agenda-top{height:auto!important;min-height:0!important;padding:10px!important;display:flex!important;flex-wrap:wrap!important;gap:8px!important;}
    .brand-ag{min-width:0!important;max-width:100%;}
    .brand-ag strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
    .agenda-top nav{order:3;width:100%;gap:6px!important;padding-bottom:2px;}
    .agenda-top nav a{padding:8px 10px!important;border-radius:10px;background:rgba(255,255,255,.08);}
    .agenda-top-actions{order:4;width:100%!important;display:grid!important;grid-template-columns:1fr 1fr!important;gap:6px!important;}
    .agenda-top-actions .new{grid-column:1/-1;margin:0!important;text-align:center;}
    .agenda-top-link{padding:9px 8px!important;text-align:center;font-size:12px;}
    .agenda-layout{display:block!important;height:auto!important;min-height:0!important;overflow:visible!important;}
    .agenda-side{display:none!important;}
    .agenda-main{width:100%!important;padding:8px!important;overflow-x:auto!important;overflow-y:visible!important;-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain;}
    .week-bar{min-width:680px;align-items:flex-start!important;margin-bottom:8px!important;}
    .calendar{min-width:980px!important;height:min(72vh,720px)!important;border-radius:14px!important;}
    .cal-head{grid-template-columns:52px repeat(7,minmax(128px,1fr))!important;}
    .cal-grid{grid-template-columns:52px repeat(7,minmax(128px,1fr))!important;}
    .times span{font-size:10px!important;}
    .appt{left:4px!important;right:4px!important;padding:6px 6px 6px 10px!important;}
    .agenda-floating-actions{right:calc(12px + var(--nexo-safe-right))!important;bottom:calc(82px + var(--nexo-safe-bottom))!important;}
    .agenda-floating-options{max-width:calc(100vw - 24px);}
    .agenda-floating-options button{min-width:0!important;width:min(280px,calc(100vw - 24px))!important;}

    /* Menu do agendamento vira bottom sheet e mostra todo o conteúdo. */
    body.mobile-appointment-menu-open{overflow:hidden!important;touch-action:none;}
    .appointment-floating-menu.show{
        display:flex!important;
        flex-direction:column!important;
        box-sizing:border-box!important;
        position:fixed!important;
        z-index:6500!important;
        left:0!important;
        right:0!important;
        top:auto!important;
        bottom:0!important;
        width:100%!important;
        max-width:none!important;
        max-height:calc(var(--nexo-visual-height) - max(8px,var(--nexo-safe-top)))!important;
        margin:0!important;
        padding:14px 14px calc(14px + var(--nexo-safe-bottom))!important;
        border-radius:24px 24px 0 0!important;
        overflow-y:auto!important;
        overflow-x:hidden!important;
        overscroll-behavior:contain!important;
        -webkit-overflow-scrolling:touch;
        scrollbar-gutter:stable;
        box-shadow:0 -18px 50px rgba(15,23,42,.28)!important;
        transform:none!important;
    }
    body.mobile-appointment-menu-open::before{content:"";position:fixed;z-index:6400;inset:0;background:rgba(9,20,38,.48);backdrop-filter:blur(2px);}
    .appointment-menu-head{position:sticky!important;top:-14px!important;z-index:5;background:#fff;padding:14px 0 10px!important;margin-top:-14px!important;}
    .appointment-menu-head>div{min-width:0;}
    .appointment-menu-head strong,.appointment-menu-head small{white-space:normal!important;overflow-wrap:anywhere;}
    .appointment-status-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:7px!important;}
    .status-choice button{min-width:0!important;padding:10px 8px!important;}
    .appointment-menu-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:7px!important;}
    .appointment-menu-grid .menu-action,.appointment-menu-grid form,.appointment-menu-grid form .menu-action{width:100%!important;min-width:0!important;}
    .appointment-menu-grid .menu-action-wide{grid-column:1/-1!important;}
    .drag-hint{display:none!important;}

    /* Todos os modais da agenda viram folhas inferiores roláveis. */
    #quickScheduleModal,.agenda-special-modal,#rescheduleModal{padding:0!important;align-items:flex-end!important;}
    #quickScheduleModal .quick-modal-card,.agenda-special-modal .quick-modal-card,#rescheduleModal .quick-modal-card{
        width:100%!important;
        max-width:none!important;
        max-height:calc(var(--nexo-visual-height) - max(6px,var(--nexo-safe-top)))!important;
        margin:0!important;
        border-radius:24px 24px 0 0!important;
        padding:16px 14px calc(14px + var(--nexo-safe-bottom))!important;
        overflow-y:auto!important;
        overflow-x:hidden!important;
    }
    #quickScheduleModal .modal-header-left,.agenda-special-modal .modal-header-left,#rescheduleModal .modal-header-left{padding-right:36px!important;align-items:flex-start!important;}
    #quickScheduleModal .modal-info.two-cols{grid-template-columns:1fr!important;}
    #quickScheduleModal .quick-tabs{position:sticky!important;top:-16px!important;z-index:15;background:#fff;padding-top:6px!important;}
    #quickScheduleModal .quick-grid,.agenda-special-modal .quick-grid,#rescheduleModal .quick-grid{grid-template-columns:minmax(0,1fr)!important;}
    #quickScheduleModal .modal-actions.horizontal,.agenda-special-modal .modal-actions.horizontal,#rescheduleModal .modal-actions.horizontal{margin-inline:0!important;bottom:calc(-14px - var(--nexo-safe-bottom))!important;}

    /* Fichas de pacientes e dashboards: ações e indicadores em uma coluna. */
    .patient-header,.patient-summary,.patient-profile-header,.patient-top,.profile-header{display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:10px!important;}
    .patient-header .patient-actions,.patient-profile-header .patient-actions,.profile-header .patient-actions{display:grid!important;grid-template-columns:1fr 1fr!important;width:100%;}
    .patient-header .patient-actions>* ,.patient-profile-header .patient-actions>* ,.profile-header .patient-actions>*{width:100%;}
    .dashboard-composition-period{grid-template-columns:1fr!important;}
    .dashboard-composition-period button{width:100%!important;}

    /* Cartões de indicadores em duas colunas; em telas estreitas, uma. */
    .metrics-grid,.kpi-grid,.dashboard-kpis,.summary-cards,.stats-cards{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important;}
}

@media (max-width:430px){
    .page-content{padding:8px!important;}
    .workspace-header{padding-inline:8px!important;}
    .page-heading{flex-basis:160px;}
    .page-heading h1{font-size:20px!important;}
    .header-actions>.btn,.header-actions>a.btn{padding-inline:10px!important;font-size:12px!important;}
    .metrics-grid,.kpi-grid,.dashboard-kpis,.summary-cards,.stats-cards{grid-template-columns:minmax(0,1fr)!important;}
    .patient-header .patient-actions,.patient-profile-header .patient-actions,.profile-header .patient-actions{grid-template-columns:minmax(0,1fr)!important;}
    .login-card,.login-card-branded,.recovery-card{padding:16px!important;border-radius:18px!important;}
}

@media (orientation:landscape) and (max-height:560px) and (max-width:980px){
    .modal-backdrop>.modal,.modal-backdrop>.modal-card,.modal-backdrop>.quick-modal-card,.modal-backdrop>[class*="modal-card"],.appointment-floating-menu.show{max-height:calc(var(--nexo-visual-height) - 4px)!important;border-radius:18px 18px 0 0!important;}
    .agenda-top{display:none!important;}
    .calendar{height:calc(var(--nexo-visual-height) - 90px)!important;}
}
@media(max-width:980px){
    body.nexo-mobile-modal-open{overflow:hidden!important;}
}

@media (max-width:340px){
    .appointment-status-grid,.appointment-menu-grid{grid-template-columns:minmax(0,1fr)!important;}
    .appointment-menu-grid .menu-action-wide{grid-column:auto!important;}
}
