/*
 * css/style.css — base de estilos compartilhada por TODOS os HTMLs vivos
 * (exceto login.html, que usa apenas tokens.css + login-hifi.css).
 *
 * Histórico (2026-04-30):
 *   Leva 2:
 *   - REMOVIDO o bloco de tokens duplicados (--navy, --accent-*, --surface,
 *     --border, --radius, --sidebar-w, --drawer-w, etc.). Tokens passam a
 *     ser declarados APENAS em css/core/tokens.css. Como todos os HTMLs
 *     que carregam style.css também carregam tokens.css logo em seguida,
 *     a remoção é segura.
 *   - MOVIDO  .ted-* e [data-module-theme="ted"] *  →  css/modules/ted/legacy.css
 *   - MOVIDO  .pronon-* / [data-module-theme="pronon"] / .pnff-* / .kb-* /
 *             .pn-grid-* / .pn-pill / .pn-nav / .pn-tab / .pn-badge   →
 *             css/modules/pronon/legacy.css
 *
 *   Leva 2.5:
 *   - ESCOPADO com `:where()` (especificidade zero) os 3 seletores que
 *     vazavam: `button`, `input,select,textarea`, `table`. Qualquer
 *     classe (.btn-ghost, .field-input, .table-scroll table, etc.)
 *     sobrescreve o reset SEM precisar de !important. Comportamento
 *     visual idêntico — só muda especificidade na cascade.
 */

*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%;font-family:var(--font);background:var(--navy);color:var(--text-primary);overflow:hidden}
:where(button){font-family:var(--font);cursor:pointer;border:none}
:where(input,select,textarea){font-family:var(--font)}
::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-light);border-radius:3px}

/* AUTH */
.auth-screen{display:flex;align-items:center;justify-content:center;height:100vh;background:var(--auth-bg);position:relative;overflow:hidden}
.auth-screen::before{content:'';position:absolute;width:600px;height:600px;border-radius:50%;border:1px solid rgba(42,157,143,.06);top:50%;left:50%;transform:translate(-50%,-50%)}
.auth-screen::after{content:'';position:absolute;width:400px;height:400px;border-radius:50%;border:1px solid rgba(42,157,143,.08);top:50%;left:50%;transform:translate(-50%,-50%)}
.auth-card{text-align:center;z-index:1;padding:40px}
.auth-logo{width:420px;max-width:90vw;margin-bottom:28px;border-radius:12px}
[data-theme="dark"] .auth-logo{filter:drop-shadow(0 4px 20px rgba(0,0,0,.3))}
[data-theme="light"] .auth-logo{filter:drop-shadow(0 2px 8px rgba(0,0,0,.08))}
.auth-divider{width:80px;height:2px;background:linear-gradient(90deg,#006B3F,#CC2222,rgba(255,255,255,.3));margin:0 auto 24px;border-radius:1px}
[data-theme="light"] .auth-divider{background:linear-gradient(90deg,#006B3F,#CC2222,rgba(0,0,0,.15))}
.auth-title{font-size:32px;font-weight:700;color:var(--text-primary);letter-spacing:2px;margin-bottom:4px}
.auth-sub{font-size:14px;color:var(--text-muted);margin-bottom:32px}
.btn-login{background:linear-gradient(135deg,#006B3F,#2A9D8F);color:#fff;padding:16px 40px;border-radius:10px;font-size:15px;font-weight:600;transition:all .25s;box-shadow:0 4px 20px rgba(42,157,143,.3);border:1px solid rgba(42,157,143,.4)}
.btn-login:hover{filter:brightness(1.15);transform:translateY(-2px);box-shadow:0 8px 30px rgba(42,157,143,.4)}
.auth-footer{font-size:11px;color:var(--text-muted);margin-top:32px}

/* PORTAL */
.portal-screen{height:100vh;overflow-y:auto;background:var(--portal-bg)}
.portal-topbar{background:var(--surface);border-bottom:1px solid var(--border);padding:14px 28px;display:flex;align-items:center;justify-content:space-between}
.portal-body{max-width:960px;margin:0 auto;padding:20px 24px}
.portal-header{text-align:center;padding:40px 20px 12px}
.portal-header h1{font-size:26px;font-weight:700;margin-bottom:8px}
.portal-header p{font-size:14px;color:var(--text-muted)}
.portal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:36px}
.portal-card{background:var(--surface-raised);border:1px solid var(--border);border-radius:14px;padding:28px 24px;box-shadow:var(--shadow);cursor:pointer;transition:all .25s;position:relative;overflow:hidden;text-decoration:none;color:inherit;display:block}
.portal-card:hover{transform:translateY(-4px);box-shadow:0 12px 32px rgba(0,0,0,.2);border-color:var(--border-light)}
.portal-card .bar{position:absolute;top:0;left:0;right:0;height:4px}
.portal-card .pc-icon{font-size:40px;margin-bottom:16px}
.portal-card h3{font-size:18px;font-weight:700;margin-bottom:6px}
.portal-card p{font-size:12px;color:var(--text-muted);line-height:1.6}
.portal-card .tags{margin-top:16px;display:flex;gap:6px;flex-wrap:wrap}
.portal-tag{font-size:10px;padding:3px 10px;border-radius:10px;font-weight:600}
.portal-footer{text-align:center;padding:40px 20px;color:var(--text-muted);font-size:11px}

/* LOGO */
/* LOGO — transparente em ambos os temas */
.logo-dark-bg{display:inline-block;border-radius:8px}
.portal-header .logo-dark-bg{margin-bottom:12px}

/* THEME TOGGLE */
.theme-toggle{background:var(--surface-hover);border:1px solid var(--border);border-radius:var(--radius);padding:6px 12px;font-size:16px;cursor:pointer;transition:all .15s}
.theme-toggle:hover{background:var(--border);border-color:var(--border-light)}

/* LAYOUT */
.app-shell{display:flex;height:100vh}
.sidebar{width:var(--sidebar-w);background:linear-gradient(180deg,#1d4861 0%,#173d54 18%,#17384d 100%);border-right:1px solid rgba(169,193,210,.12);display:flex;flex-direction:column;flex-shrink:0;overflow-y:auto;overflow-x:hidden;transition:width .25s cubic-bezier(.22,1,.36,1);padding:24px 14px 18px;box-shadow:inset -1px 0 0 rgba(255,255,255,.03)}
.sidebar.collapsed{width:76px;padding-left:8px;padding-right:8px}
.sidebar-header{padding:0 0 18px;border-bottom:1px solid rgba(169,193,210,.14);display:flex;flex-direction:column;gap:18px;position:relative}
.sidebar-logo-card{display:flex;align-items:center;justify-content:flex-start;background:#f7fafc;border-radius:8px;min-height:64px;padding:14px 16px;box-shadow:0 10px 30px rgba(6,20,30,.16)}
.sidebar-logo-card img{height:32px;width:auto;display:block}
.sidebar-header .module-badge{display:flex;align-items:center;gap:12px;min-height:40px;padding:7px 12px 7px 11px;border-radius:8px;font-size:14px;font-weight:700;color:#eef7fb;background:rgba(31,96,118,.58);border:1px solid rgba(99,175,191,.22);white-space:nowrap;overflow:hidden}
.sidebar-header .module-icon{width:22px;height:22px;border-radius:999px;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.14);color:#dfeff4;flex-shrink:0}
.sidebar-header .module-icon svg{width:12px;height:12px;display:block}
.sidebar-header .module-label{overflow:hidden;text-overflow:ellipsis}
.sidebar.collapsed .sidebar-header .module-badge{display:none}
.sidebar.collapsed .sidebar-logo-card{padding:12px;justify-content:center}
.sidebar.collapsed .sidebar-logo-card img{height:22px}
.sidebar-toggle{position:absolute;top:-4px;right:0;background:rgba(255,255,255,.08);border:1px solid rgba(169,193,210,.16);border-radius:8px;width:28px;height:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:14px;color:#d6e4ea;transition:all .15s;z-index:2;backdrop-filter:blur(6px)}
.sidebar-toggle:hover{background:rgba(255,255,255,.14);color:#fff}
.sidebar.collapsed .sidebar-toggle{right:50%;transform:translateX(50%);top:44px}
.nav-group{padding:18px 0 0}
.nav-group-title{font-size:11px;font-weight:700;text-transform:uppercase;color:#9fb5c3;padding:0 4px 12px;white-space:nowrap;overflow:hidden;transition:opacity .15s}
.sidebar.collapsed .nav-group-title{opacity:0;height:0;padding:0;margin:0}
.nav-item{display:flex;align-items:center;gap:12px;padding:10px 14px;font-size:15px;font-weight:700;color:#d8e5ec;cursor:pointer;transition:all .15s;border:1px solid transparent;border-radius:8px;white-space:nowrap;overflow:hidden;margin-bottom:6px}
.nav-item:hover{background:rgba(255,255,255,.06);border-color:rgba(169,193,210,.08);color:#fff}
.nav-item.active{background:rgba(28,96,118,.72);color:#fff;border-color:rgba(97,180,194,.22);box-shadow:inset 0 0 0 1px rgba(255,255,255,.02)}
.nav-item .icon{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:rgba(255,255,255,.06);color:#edf5f8}
.nav-item .icon svg{width:16px;height:16px;display:block}
.nav-item .icon-fallback{font-size:15px;line-height:1}
.nav-item .nav-label{transition:opacity .15s;overflow:hidden;text-overflow:ellipsis}
.sidebar.collapsed .nav-item{padding:10px 0;justify-content:center;margin:0 4px 6px}
.sidebar.collapsed .nav-item.active{background:rgba(28,96,118,.72);border-radius:8px}
.sidebar.collapsed .nav-item .nav-label{opacity:0;width:0;margin:0}
.sidebar.collapsed .nav-item .icon{width:30px;height:30px}
.sidebar.collapsed .nav-item{position:relative}
.sidebar.collapsed .nav-item:hover::after{content:attr(data-tip);position:absolute;left:calc(100% + 8px);top:50%;transform:translateY(-50%);background:#16364a;color:#f2f7fa;padding:6px 12px;border-radius:8px;font-size:12px;font-weight:500;white-space:nowrap;z-index:200;border:1px solid rgba(169,193,210,.18);box-shadow:0 10px 28px rgba(0,0,0,.22);pointer-events:none}
.main{flex:1;display:flex;flex-direction:column;overflow:hidden}
.topbar{height:56px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 24px;gap:16px;flex-shrink:0}
.topbar h1{font-size:17px;font-weight:600;flex:1}
.topbar .user-info{font-size:12px;color:var(--text-secondary)}
.hamburger{display:none;background:none;border:none;font-size:22px;color:var(--text-primary);cursor:pointer;padding:4px 8px}
.content{flex:1;overflow-y:auto;padding:24px}
.sidebar-mobile-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:99}

/* BUTTONS */
.btn-sm{padding:7px 18px;border-radius:6px;font-size:12px;font-weight:600;transition:all .15s;letter-spacing:.2px}
.btn-primary{background:linear-gradient(135deg,#1B3A5C,#2D5F8A);color:#fff;box-shadow:0 1px 4px rgba(27,58,92,.3)}.btn-primary:hover{filter:brightness(1.15);transform:translateY(-1px);box-shadow:0 3px 8px rgba(27,58,92,.4)}
.btn-danger{background:var(--accent-red);color:#fff;box-shadow:0 1px 3px rgba(204,34,34,.2)}.btn-danger:hover{filter:brightness(1.1)}
.btn-ghost{background:transparent;color:var(--text-secondary);border:1px solid var(--border-light)}.btn-ghost:hover{background:var(--surface-hover);color:var(--text-primary)}
.btn-export{background:var(--accent-blue);color:#fff;border:none;font-weight:600;letter-spacing:.3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.btn-export:hover{filter:brightness(1.15);transform:translateY(-1px);box-shadow:0 2px 6px rgba(0,0,0,.2)}

/* KPI */
.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:24px}
.kpi-card{background:var(--surface-raised);border:1px solid var(--border);border-top:3px solid var(--border-light);border-radius:var(--radius-lg);padding:18px 20px;box-shadow:var(--shadow);position:relative}
.kpi-card.accent-blue{border-top-color:#4A85C0}
.kpi-card.accent-teal{border-top-color:#4AADB5}
.kpi-card.accent-orange{border-top-color:#E8834A}
.kpi-card.accent-red{border-top-color:#D45B4A}
.kpi-card.accent-yellow{border-top-color:#F5C136}
.kpi-card.accent-purple{border-top-color:#7B6FC8}
.kpi-card.accent-green{border-top-color:#5CC87A}
.kpi-card.accent-gray{border-top-color:#8B9CB0}
.kpi-card .label{font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;font-weight:700;margin-bottom:8px}
.kpi-card .value{font-size:30px;font-weight:700;font-family:var(--mono);line-height:1.1;margin-bottom:4px}
.kpi-card .sublabel{font-size:11px;color:var(--text-muted);margin-top:4px}
.kpi-card .value.blue{color:#4A85C0}.kpi-card .value.teal,.kpi-card .value.green{color:#4AADB5}.kpi-card .value.orange{color:#E8834A}.kpi-card .value.red{color:#D45B4A}.kpi-card .value.yellow{color:#F5C136}.kpi-card .value.purple{color:#7B6FC8}

/* TABLE */
.table-wrapper{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow)}
.table-toolbar{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--border);flex-wrap:wrap}
.table-toolbar-search{display:flex;align-items:center;flex:1 1 280px;min-width:220px}
.table-toolbar-actions{display:flex;align-items:center;gap:10px;flex:1 1 420px;flex-wrap:wrap;justify-content:flex-end}
.search-input{background:var(--surface);border:1px solid var(--border);color:var(--text-primary);padding:9px 14px 9px 36px;border-radius:var(--radius);font-size:13px;width:320px;outline:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%236B8399' viewBox='0 0 16 16'%3E%3Cpath d='M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.868-3.834zm-5.242.156a5 5 0 1 1 0-10 5 5 0 0 1 0 10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:12px center;background-size:14px}
.search-input:focus{border-color:var(--accent-blue);box-shadow:0 0 0 3px rgba(20,116,183,.12)}.search-input::placeholder{color:var(--text-muted)}
.table-toolbar .spacer{flex:1}.table-toolbar .record-count{font-size:12px;color:var(--text-muted);font-family:var(--mono);padding:0 4px}
.filter-row th{padding:4px 6px;background:var(--navy);border-bottom:2px solid var(--border)}
.filter-row input,.filter-row select{width:100%;padding:5px 8px;border:1px solid var(--border);border-radius:4px;font-size:11px;font-family:var(--font);background:var(--surface);color:var(--text-primary);outline:none}
.filter-row input:focus,.filter-row select:focus{border-color:var(--accent-blue)}
.filter-row input::placeholder{color:var(--text-muted)}
:where(table){width:100%;border-collapse:collapse}
/* Reset de tabela base envolto em :where() — especificidade zero para não
   vazar sobre tabelas namespaced (.grid-table, .cgp-table, etc.). Visual
   idêntico; qualquer classe de componente sobrescreve sem !important. */
:where(thead th){padding:11px 14px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:rgba(255,255,255,.85);text-align:left;background:var(--navy-light);border-bottom:2px solid var(--border);position:sticky;top:0;cursor:pointer;user-select:none;white-space:nowrap;z-index:2}
:where(thead th:hover){background:var(--navy-mid);color:#fff}
:where(thead th .sort-icon){margin-left:4px;font-size:10px;opacity:.4}
:where(thead th.sorted){background:var(--navy-mid)}
:where(thead th.sorted .sort-icon){opacity:1;color:var(--accent-green)}
:where(tbody tr){border-bottom:1px solid var(--border);cursor:pointer;transition:background .1s}
:where(tbody tr:nth-child(even)){background:rgba(255,255,255,.015)}
:where(tbody tr:hover){background:var(--surface-hover)}
:where(tbody td){padding:10px 14px;font-size:13px;color:var(--text-secondary);max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
:where(tbody td.primary){color:var(--text-primary);font-weight:600;font-family:var(--mono);font-size:12px}
.status-badge{display:inline-block;padding:3px 10px;border-radius:12px;font-size:11px;font-weight:600}
.status-badge.vigente,.status-badge.ativo{background:rgba(42,157,143,.15);color:var(--accent-green)}
.status-badge.encerrado{background:rgba(204,34,34,.15);color:var(--accent-red)}
.status-badge.outros{background:rgba(20,116,183,.15);color:var(--accent-blue)}
.table-scroll{max-height:calc(100vh - 200px);overflow-y:auto}
#grid-pager{padding:14px 18px;border-top:1px solid var(--border);background:var(--surface)}
#grid-pager select{padding:5px 10px;border:1px solid var(--border);border-radius:5px;font-size:12px;background:var(--surface);color:var(--text-primary);cursor:pointer}
#grid-pager button{padding:5px 12px;border:1px solid var(--border);border-radius:5px;font-size:12px;background:var(--surface);color:var(--text-primary);cursor:pointer;transition:all .15s}
#grid-pager button:hover:not(:disabled){background:var(--navy-light);color:#fff;border-color:var(--navy-light)}
#grid-pager button:disabled{opacity:.3;cursor:default}

/* DRAWER */
.drawer-overlay{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:100;opacity:0;pointer-events:none;transition:opacity .25s;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(2px)}
.drawer-overlay.open{opacity:1;pointer-events:auto}
.drawer{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) scale(.95);width:680px;max-width:94vw;max-height:90vh;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);z-index:101;transition:transform .25s cubic-bezier(.22,1,.36,1),opacity .25s;display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(0,0,0,.3);opacity:0;pointer-events:none}
.drawer.open{transform:translate(-50%,-50%) scale(1);opacity:1;pointer-events:auto}
.drawer-header{padding:18px 22px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:12px;flex-shrink:0}
.drawer-header h3{flex:1;font-size:16px;font-weight:600}
.drawer-close{background:none;color:var(--text-muted);font-size:22px;padding:4px 8px;border-radius:var(--radius)}
.drawer-close:hover{background:var(--surface-hover);color:var(--text-primary)}
.drawer-body{flex:1;overflow-y:auto;padding:22px}
.drawer-footer{padding:14px 22px;border-top:1px solid var(--border);display:flex;gap:10px;justify-content:flex-end;flex-shrink:0}
.form-group{margin-bottom:16px}
.form-group label{display:block;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);margin-bottom:6px}
.form-group input,.form-group select,.form-group textarea{width:100%;background:var(--navy);border:1px solid var(--border);color:var(--text-primary);padding:10px 14px;border-radius:var(--radius);font-size:13px;outline:none;transition:border .15s}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--accent-green)}
.form-group textarea{resize:vertical;min-height:80px}
.form-readonly{color:var(--text-muted)!important;cursor:default;background:var(--navy-light)!important}

/* FORM SYSTEM — Mockup v2 Design */
.form-wrapper{display:flex;flex-direction:column;min-height:100%}
.form-breadcrumbs{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:14px}
.form-breadcrumbs span{color:var(--border-light)}
.form-hero{background:var(--surface);border-bottom:1px solid var(--border);padding:20px 28px 0}
.form-hero-top{display:flex;align-items:flex-start;gap:16px;margin-bottom:16px}
.form-hero-info{flex:1}
.form-hero-kicker{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:8px}
.form-hero-title{font-size:22px;font-weight:700;letter-spacing:-.02em;display:flex;align-items:center;gap:12px;margin-bottom:4px}
.form-hero-subtitle{font-size:13px;color:var(--text-muted);display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.form-hero-subtitle .sep{color:var(--border-light)}
.form-hero-actions{display:flex;gap:8px;flex-shrink:0;align-items:center}
.metric-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:10px;margin-bottom:20px}
.metric-card{padding:12px 16px;background:var(--navy);border:1px solid var(--border);border-radius:var(--radius)}
.metric-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);margin-bottom:6px}
.metric-value{font-size:18px;font-weight:700;font-family:var(--mono);color:var(--text-primary)}
.metric-value.green{color:var(--accent-green)}.metric-value.blue{color:var(--accent-blue)}.metric-value.orange{color:var(--accent-orange)}.metric-value.red{color:var(--accent-red)}
.exec-bar{height:8px;background:var(--border);border-radius:4px;overflow:hidden;margin-bottom:6px}
.exec-bar-fill{height:100%;border-radius:4px;background:var(--accent-green);transition:width .3s}
.exec-bar-label{display:flex;justify-content:space-between;font-size:11px;margin-bottom:6px}
.exec-bar-label .lbl{color:var(--text-muted);font-weight:600;text-transform:uppercase;letter-spacing:.5px}
.exec-bar-label .pct{font-family:var(--mono);font-weight:700;color:var(--accent-green)}
.form-tabs{display:flex;gap:0;overflow-x:auto;flex-shrink:0}
.form-tab{padding:11px 18px;font-size:12px;font-weight:600;color:var(--text-muted);cursor:pointer;border:none;background:none;font-family:inherit;border-bottom:3px solid transparent;white-space:nowrap;transition:all .15s;display:flex;align-items:center;gap:6px}
.form-tab:hover{color:var(--text-primary);background:var(--surface-hover)}
.form-tab.active{color:var(--accent-green);border-bottom-color:var(--accent-green)}
.form-tab .tab-count{font-size:10px;padding:1px 7px;border-radius:10px;font-weight:700;background:var(--navy);color:var(--text-muted);font-family:var(--mono)}
.form-tab.active .tab-count{background:rgba(42,157,143,.12);color:var(--accent-green)}
.tab-body{flex:1;overflow-y:auto;padding:24px 28px}
.tab-panel{display:none}.tab-panel.active{display:block}
.section-card{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px;margin-bottom:16px}
.section-header{display:flex;align-items:center;gap:10px;margin-bottom:16px}
.section-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius);font-size:16px}
.section-icon.green{background:rgba(42,157,143,.12)}.section-icon.blue{background:rgba(20,116,183,.12)}.section-icon.orange{background:rgba(211,84,0,.12)}.section-icon.yellow{background:rgba(243,156,18,.12)}.section-icon.purple{background:rgba(138,92,246,.12)}
.section-title{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text-primary)}
.section-title small{font-weight:400;text-transform:none;letter-spacing:0;color:var(--text-muted);font-size:11px;margin-left:6px}
/* field-grid (legacy form): auto-fit substituiu 1fr ríjido em 2026-04-30
   (Leva A+D). Cada cols-N declara o min-width do campo; o grid embala
   quantas colunas couberem naturalmente. cols-1 mantém 1 coluna. */
.field-grid{display:grid;gap:14px}
.field-grid.cols-1{grid-template-columns:1fr}
.field-grid.cols-2{grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr))}
.field-grid.cols-3{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}
.field-grid.cols-4{grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr))}
.field-group{display:flex;flex-direction:column;gap:5px}
.field-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--text-muted);display:flex;align-items:center;gap:5px}
.field-label .req{color:var(--accent-red)}.field-label .auto-tag{font-size:9px;padding:1px 6px;border-radius:6px;font-weight:600;background:rgba(42,157,143,.1);color:var(--accent-green);text-transform:none;letter-spacing:0}
.field-input{width:100%;background:var(--navy);border:1px solid var(--border);color:var(--text-primary);padding:10px 14px;border-radius:var(--radius);font-size:13px;outline:none;transition:border .15s;font-family:inherit;box-sizing:border-box}
.field-input:focus{border-color:var(--accent-green);box-shadow:0 0 0 3px rgba(42,157,143,.1)}
.field-input.readonly{background:var(--navy-light);color:var(--text-muted);cursor:default;border-style:dashed}
.field-input.mono{font-family:var(--mono)}
textarea.field-input{resize:vertical;min-height:80px}
select.field-input{cursor:pointer}
.subtable-header{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.subtable-count{font-size:13px;color:var(--text-secondary);flex:1}
.subtable-count strong{color:var(--text-primary);font-family:var(--mono)}
.subtable-totals{display:flex;gap:12px;font-size:12px;flex-wrap:wrap;margin-bottom:12px}
.subtable-total{display:flex;align-items:center;gap:6px;padding:6px 14px;border-radius:var(--radius);background:var(--navy);border:1px solid var(--border)}
.subtable-total .t-label{color:var(--text-muted);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}
.subtable-total .t-value{font-family:var(--mono);font-weight:700;font-size:13px}
.subtable-total .t-value.green{color:var(--accent-green)}.subtable-total .t-value.blue{color:var(--accent-blue)}.subtable-total .t-value.orange{color:var(--accent-orange)}.subtable-total .t-value.red{color:var(--accent-red)}
.sub-table{width:100%;border-collapse:collapse}
.sub-table thead th{padding:10px 14px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);text-align:left;background:var(--navy);border-bottom:2px solid var(--border);position:sticky;top:0}
.sub-table tbody td{padding:11px 14px;font-size:12px;color:var(--text-secondary);border-bottom:1px solid var(--border)}
.sub-table tbody tr{transition:background .1s}.sub-table tbody tr:hover{background:var(--surface-hover)}
.sub-table .primary{color:var(--text-primary);font-weight:600}
.sub-table .currency{font-family:var(--mono);text-align:right;font-weight:500}
.sub-table .currency.positive{color:var(--accent-green)}
.sub-table .date{font-family:var(--mono);font-size:11px}
.sub-table .actions{text-align:center}
.sub-table tfoot td{padding:10px 14px;font-weight:700;font-size:12px;border-top:2px solid var(--border);background:var(--navy)}
.form-footer{padding:14px 28px;border-top:1px solid var(--border);background:var(--surface);display:flex;justify-content:space-between;align-items:center;flex-shrink:0}
/* Media queries do field-grid removidas em 2026-04-30: o auto-fit acima
   substitui essas queries naturalmente (em containers estreitos cai para
   1 coluna porque o `min(100%, Npx)` resolve para 100%). */

/* LOADING */
.loader{display:flex;align-items:center;justify-content:center;padding:60px;flex-direction:column;gap:12px}
.spinner{width:36px;height:36px;border:3px solid var(--border);border-top-color:var(--accent-green);border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}.loader-text{font-size:12px;color:var(--text-muted)}

/* TOAST */
.toast-container{position:fixed;top:20px;right:20px;z-index:200;display:flex;flex-direction:column;gap:8px}
.toast{padding:12px 20px;border-radius:var(--radius);font-size:13px;font-weight:500;animation:slideIn .3s;box-shadow:var(--shadow)}
.toast.success{background:#00b894;color:#fff}.toast.error{background:#d63031;color:#fff}.toast.info{background:#0984e3;color:#fff}
@keyframes slideIn{from{transform:translateX(100px);opacity:0}}

/* CHARTS */
.chart-section{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:24px}
.chart-card{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px 24px;box-shadow:var(--shadow)}
.chart-card h4{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid var(--border)}
.chart-card canvas{max-height:250px}

.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted)}
.empty-state .icon{font-size:48px;margin-bottom:12px}.empty-state p{font-size:14px}

.confirm-overlay{position:fixed;inset:0;background:rgba(0,0,0,.7);z-index:300;display:flex;align-items:center;justify-content:center}
.confirm-box{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-lg);padding:28px;max-width:400px;width:90%}
.confirm-box h4{font-size:16px;margin-bottom:10px}.confirm-box p{font-size:13px;color:var(--text-secondary);margin-bottom:20px}
.confirm-actions{display:flex;gap:10px;justify-content:flex-end}

/* CALC */
.calc-tab{padding:8px 18px;border:none;background:transparent;border-bottom:2px solid transparent;font-size:12px;font-weight:600;color:var(--text-muted);cursor:pointer;font-family:var(--font);border-radius:0;transition:all .15s;margin-bottom:-1px}
.calc-tab:hover{color:var(--text-primary)}.calc-tab.active{color:var(--accent-green);border-bottom-color:var(--accent-green)}
.calc-row{display:flex;gap:14px;margin-bottom:14px;align-items:flex-end}
.calc-field{flex:1}
.calc-field label{display:block;font-size:11px;font-weight:600;color:var(--text-muted);margin-bottom:5px;text-transform:uppercase;letter-spacing:.5px}
.calc-field input,.calc-field select{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius);font-size:13px;font-family:var(--font);background:var(--navy);color:var(--text-primary)}
.calc-field input:focus,.calc-field select:focus{outline:none;border-color:var(--accent-green)}
.calc-btn{width:100%;padding:11px;background:var(--accent-green);color:#fff;border:none;border-radius:var(--radius);font-size:14px;font-weight:700;cursor:pointer;font-family:var(--font);margin-top:4px;transition:filter .15s}
.calc-btn:hover{filter:brightness(1.1)}
.calc-result{background:var(--surface-hover);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px;margin-top:18px}
.calc-result-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);margin-bottom:14px}
.calc-result-line{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid var(--border);font-size:13px}
.calc-result-line:last-child{border:none}.calc-result-line.total{font-weight:700;font-size:14px;padding-top:10px}
.calc-result-line .neg{color:var(--accent-red)}.calc-result-line .pos{color:var(--accent-green)}
.calc-result-line .lbl{color:var(--text-secondary)}.calc-result-line .val{font-family:var(--mono)}
.calc-alert{padding:10px 14px;border-radius:var(--radius);font-size:12px;margin-top:12px}
.calc-alert.info{background:rgba(20,116,183,.1);color:var(--accent-blue);border:1px solid rgba(20,116,183,.2)}

/* FULL FORM (legacy — sistema de tabs antigo).
   Em 2026-04-30 (Leva D++): removido `.ff-tab`, `.ff-tab:hover`, `.ff-tab.active`
   que aplicavam estilos de BOTÃO de tab (padding, cursor:pointer,
   white-space:nowrap, border-bottom) ao seletor que o form-fullform.js
   atual usa para o CONTAINER do conteúdo da aba. Conflito de naming
   causava o multi-column de css/core/components.css a herdar
   `white-space:nowrap` e padding fixo, atrapalhando o layout. Os botões
   de tab modernos estão em `.ssp-tabs-horiz` (ver ssp-primitives.css). */
.ff-wrapper{display:flex;flex-direction:column;height:calc(100vh - 80px)}
.ff-topbar{display:flex;align-items:center;gap:16px;padding:16px 0;flex-wrap:wrap}
.ff-title{font-size:20px;font-weight:700;flex:1}
.ff-sit{padding:5px 14px;border-radius:8px;font-size:12px;font-weight:600}
.ff-tabs{display:flex;gap:2px;border-bottom:2px solid var(--border);margin-bottom:0;overflow-x:auto;flex-shrink:0}
.ff-content{flex:1;overflow-y:auto;padding:20px 0}
.ff-footer{padding:14px 0;border-top:1px solid var(--border);display:flex;justify-content:space-between;flex-shrink:0}
.ff-section-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--accent-green);padding:16px 0 10px;border-bottom:2px solid rgba(42,157,143,.15);margin-bottom:16px;margin-top:8px}
.ff-section-title:first-child{margin-top:0}
.ff-grid{display:grid;gap:14px;margin-bottom:20px}
/* ff-grid (full-form): auto-fit, mesmo padrao do field-grid (Leva A+D). */
.ff-grid-1{grid-template-columns:1fr}
.ff-grid-2{grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr))}
.ff-grid-3{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}
.ff-grid-4{grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr))}
.ff-auto{font-size:9px;padding:2px 6px;border-radius:6px;font-weight:600;margin-left:6px;background:rgba(42,157,143,.1);color:var(--accent-green)}
.ff-subtable-header{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.ff-subtable-count{font-size:13px;color:var(--text-muted);font-family:var(--mono);flex:1}
.ff-totals{display:flex;gap:8px;font-size:12px;flex-wrap:wrap;padding:8px 0}
.ff-subtable-scroll{overflow-x:auto;max-height:calc(100vh - 380px)}
.sub-table-ff{width:100%;border-collapse:collapse}
.sub-table-ff thead th{padding:8px 12px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);text-align:left;background:var(--navy);border-bottom:1px solid var(--border);position:sticky;top:0}
.sub-table-ff tbody td{padding:10px 12px;font-size:12px;color:var(--text-secondary);border-bottom:1px solid var(--border)}
.sub-table-ff tbody tr:hover{background:var(--surface-hover);cursor:pointer}
.sub-table-ff .primary{color:var(--text-primary);font-weight:500}
.ff-empty{text-align:center;padding:48px 20px;color:var(--text-muted);font-size:14px}

/* Diverse status badge colors */
.status-badge.aprovado{background:rgba(245,193,54,.15);color:#c08000;border:1px solid rgba(245,193,54,.35)}
.status-badge.captacao{background:rgba(59,130,246,.1);color:#3b82f6;border:1px solid rgba(59,130,246,.2)}
.status-badge.tramitacao{background:rgba(245,158,11,.1);color:#d97706;border:1px solid rgba(245,158,11,.2)}
.status-badge.readequacao{background:rgba(249,115,22,.1);color:#ea580c;border:1px solid rgba(249,115,22,.2)}
.status-badge.vigente{background:rgba(16,185,129,.1);color:#059669;border:1px solid rgba(16,185,129,.2)}
.status-badge.finalizado{background:rgba(34,211,238,.1);color:#0891b2;border:1px solid rgba(34,211,238,.2)}
.status-badge.declinado{background:rgba(100,116,139,.1);color:#64748b;border:1px solid rgba(100,116,139,.2)}
.status-badge.encerrado{background:rgba(239,68,68,.1);color:#dc2626;border:1px solid rgba(239,68,68,.2)}
.status-badge.pendencia{background:rgba(139,92,246,.1);color:#7c3aed;border:1px solid rgba(139,92,246,.2)}
.status-badge.cacon{background:rgba(6,182,212,.1);color:#0891b2;border:1px solid rgba(6,182,212,.25)}
.status-badge.unacon{background:rgba(99,102,241,.1);color:#6366f1;border:1px solid rgba(99,102,241,.25)}
.status-badge.nao-possui{background:rgba(148,163,184,.1);color:#64748b;border:1px solid rgba(148,163,184,.2)}
.status-badge.nao-aplica{background:rgba(203,213,225,.12);color:#94a3b8;border:1px solid rgba(203,213,225,.3)}
/* Priority badges */
.status-badge.alta{background:rgba(239,68,68,.12);color:#ef4444;border:1px solid rgba(239,68,68,.2)}
.status-badge.media{background:rgba(245,158,11,.12);color:#f59e0b;border:1px solid rgba(245,158,11,.2)}
.status-badge.baixa{background:rgba(16,185,129,.12);color:#10b981;border:1px solid rgba(16,185,129,.2)}

/* ═══ WORKSPACE genérico (3-col: steps + workspace + aside) ═══
   Inicialmente desenhado para PRONON, mas hoje usado por múltiplos
   módulos via .ws-shell / .ws-steps / .ws-aside. Mantido aqui no core. */
.ws-shell{display:grid;grid-template-columns:180px minmax(0,1fr) 250px;gap:0;min-height:calc(100vh - 130px);margin:-16px -26px -26px;background:#f2f5f7;font-size:12px}
.ws-steps{position:sticky;top:0;height:fit-content;max-height:calc(100vh - 130px);padding:14px 10px;border-right:1px solid #d7e2e7;background:#fff;display:flex;flex-direction:column;gap:4px}
.ws-steps-title{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:#738390;padding:0 4px 8px}
.ws-step{padding:8px 10px;border-radius:6px;border:1px solid transparent;cursor:pointer;display:grid;gap:2px;transition:all .15s}
.ws-step strong{font-size:11px;color:#17222d;line-height:1.3}
.ws-step span{font-size:9px;color:#738390;line-height:1.4}
.ws-step:hover{background:#f7fafb;border-color:#d7e2e7}
.ws-step.active{background:linear-gradient(90deg,rgba(14,122,108,.08),rgba(15,107,143,.06));border-color:rgba(14,122,108,.22);border-left:3px solid #0e7a6c}
.ws-step.active strong{color:#0e7a6c}
.ws-main{display:flex;flex-direction:column;min-width:0}
.ws-topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 18px;background:rgba(255,255,255,.92);border-bottom:1px solid #d7e2e7;backdrop-filter:blur(8px);position:sticky;top:0;z-index:5}
.ws-topbar-left,.ws-topbar-right{display:flex;align-items:center;gap:8px}
.ws-back{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:5px;background:#fff;border:1px solid #d7e2e7;color:#4f6070;font-size:11px;font-weight:600;cursor:pointer;transition:all .15s;font-family:var(--font)}
.ws-back:hover{background:#f2f5f7;color:#17222d}
.ws-btn{padding:5px 12px;border-radius:5px;font-size:11px;font-weight:600;cursor:pointer;border:none;transition:all .15s;font-family:var(--font)}
.ws-btn-primary{background:#0e7a6c;color:#fff}
.ws-btn-primary:hover{background:#0b6a5e}
.ws-btn-secondary{background:#fff;color:#17222d;border:1px solid #d7e2e7}
.ws-btn-secondary:hover{background:#f2f5f7}
.ws-btn-danger{background:#fff;color:#a84855;border:1px solid rgba(168,72,85,.3)}
.ws-btn-danger:hover{background:rgba(168,72,85,.06)}
.ws-workspace{flex:1;padding:20px 18px;overflow-y:auto}
.ws-aside{position:sticky;top:0;height:fit-content;max-height:calc(100vh - 130px);overflow-y:auto;padding:14px 12px;border-left:1px solid #d7e2e7;background:#fff;display:flex;flex-direction:column;gap:10px}
.ws-aside-title{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:#738390;padding:0 0 4px}
.ws-aside-card{padding:10px 12px;border:1px solid #d7e2e7;border-radius:6px;background:#f7fafb;display:grid;gap:6px}
.ws-aside-label{font-size:10px;font-weight:700;color:#17222d}
.ws-aside-row{display:flex;justify-content:space-between;align-items:baseline;gap:6px;font-size:11px;line-height:1.4}
.ws-aside-row span{color:#738390}
.ws-aside-row strong{color:#17222d;text-align:right;font-size:11px}
.ws-aside-badge{font-size:10px;padding:2px 8px;border-radius:999px;font-weight:700}
.ws-aside-kpi{display:grid;gap:1px;padding:6px 0;border-top:1px solid #e5ecef}
.ws-aside-kpi:first-of-type{border-top:none;padding-top:0}
.ws-aside-kpi-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:#738390}
.ws-aside-kpi-value{font-size:18px;font-weight:700;color:#17222d;letter-spacing:-.02em;line-height:1.1}
.ws-aside-kpi-sub{font-size:10px;color:#738390;line-height:1.3}
.ws-aside-alert{padding:7px 10px;border-radius:5px;background:#fff;border:1px solid #d7e2e7;font-size:11px;color:#4f6070;line-height:1.4}
.ws-aside-alert--warn{border-color:rgba(176,125,25,.3);background:rgba(176,125,25,.04);color:#8a6210}
/* Workspace content sections */
.ws-content-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding-bottom:12px;border-bottom:1px solid #d7e2e7;margin-bottom:14px}
.ws-content-header-copy{display:grid;gap:2px}
.ws-content-eyebrow{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:#738390}
.ws-content-header-copy h2{margin:0;font-size:16px;font-weight:700;color:#17222d;line-height:1.2}
.ws-content-header-copy p{margin:0;font-size:11px;color:#4f6070;line-height:1.5}
.ws-tag{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:4px;font-size:9px;font-weight:700;white-space:nowrap;flex-shrink:0}
.ws-tag--blue{background:rgba(15,107,143,.1);color:#0f6b8f;border:1px solid rgba(15,107,143,.2)}
.ws-tag--teal{background:rgba(14,122,108,.1);color:#0e7a6c;border:1px solid rgba(14,122,108,.2)}
.ws-tag--amber{background:rgba(176,125,25,.1);color:#8a6210;border:1px solid rgba(176,125,25,.2)}
.ws-tag--gray{background:rgba(115,131,144,.1);color:#4f6070;border:1px solid rgba(115,131,144,.2)}
.ws-tag--red{background:rgba(168,72,85,.1);color:#a84855;border:1px solid rgba(168,72,85,.2)}
.ws-section{background:#fff;border:1px solid #d7e2e7;border-radius:8px;padding:14px 16px;margin-bottom:12px;box-shadow:0 1px 4px rgba(23,52,71,.03)}
.ws-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:12px}
.ws-section-head h3{margin:0;font-size:13px;font-weight:700;color:#17222d;line-height:1.3}
.ws-section-head p{margin:2px 0 0;font-size:11px;color:#4f6070;line-height:1.4}
.ws-fields{display:grid;gap:8px;margin-bottom:10px}
.ws-fields:last-child{margin-bottom:0}
/* ws-fields (workspace 3-col): auto-fit, mesmo padrao (Leva A+D).
   ws-fields--inst-meta e --inst-contact mantem template explicito porque
   tem proporcao fixa intencional (lookup curto + textarea). */
.ws-fields--1{grid-template-columns:1fr}
.ws-fields--2{grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}
.ws-fields--3{grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr))}
.ws-fields--4{grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr))}
.ws-fields--inst-meta{grid-template-columns:minmax(180px,.9fr) minmax(150px,.72fr) minmax(80px,.22fr) minmax(180px,1fr)}
.ws-fields--inst-contact{grid-template-columns:minmax(150px,240px) minmax(220px,520px);justify-content:start}
.ws-field{display:grid;gap:3px}
.ws-field-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:#738390}
.ws-field-value{padding:6px 10px;border:1px solid #d7e2e7;border-radius:5px;background:#f7fafb;font-size:12px;color:#17222d;line-height:1.4;min-height:32px}
.ws-field--highlight .ws-field-value{background:#fff;border-color:#0e7a6c;font-weight:600}
.ws-rules-table{width:100%;border-collapse:collapse;font-size:11px}
.ws-rules-table thead th{text-align:left;padding:6px 10px;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#738390;background:#f2f5f7;border-bottom:1px solid #d7e2e7}
.ws-rules-table tbody td{padding:8px 10px;border-bottom:1px solid #eef3f5;color:#4f6070;vertical-align:top}
.ws-rules-table tbody td strong{color:#17222d}
/* Media query <900px reduzida em 2026-04-30: auto-fit das ws-fields--2/3/4
   ja resolve em containers estreitos. Mantido apenas o colapso forcado dos
   templates explicitos (inst-meta/inst-contact) que nao usam auto-fit. */
@media(max-width:900px){.ws-fields--inst-meta{grid-template-columns:repeat(2,1fr)}.ws-fields--inst-contact{grid-template-columns:1fr}}
@media(max-width:1200px){.ws-shell{grid-template-columns:1fr;margin:0}.ws-steps{display:none}.ws-aside{display:none}}
@media(max-width:1400px) and (min-width:1201px){.ws-shell{grid-template-columns:160px minmax(0,1fr) 220px}}

/* Grid table fit-to-width */
.table-scroll{overflow-x:auto}
.table-scroll table{width:100%;table-layout:auto;font-size:12px;border-collapse:collapse}
.table-scroll table th,.table-scroll table td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:8px 6px;max-width:0}
.table-scroll table td.primary{width:16%}
.table-scroll table th:last-child,.table-scroll table td:last-child{width:32px;text-align:center;max-width:32px}
.table-scroll table th{position:relative}
.col-resize-handle{position:absolute;top:0;right:0;width:5px;height:100%;cursor:col-resize;z-index:10;background:transparent}
.col-resize-handle:hover{background:rgba(74,133,192,.35)}

/* ═══ DETAIL MODAL (central, tabbed) ═══ */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:200;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .25s}
.modal-overlay.open{opacity:1;pointer-events:auto}
.detail-modal{background:var(--surface);border-radius:16px;width:1200px;max-width:96vw;max-height:94vh;display:flex;flex-direction:column;box-shadow:0 24px 80px rgba(0,0,0,.35);overflow:hidden;transform:scale(.95);transition:transform .25s cubic-bezier(.22,1,.36,1)}
.modal-overlay.open .detail-modal{transform:scale(1)}
.dm-header{display:flex;align-items:center;gap:14px;padding:20px 24px;border-bottom:1px solid var(--border);flex-shrink:0}
.dm-header .dm-icon{width:42px;height:42px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}
.dm-header .dm-titles{flex:1;min-width:0}
.dm-header .dm-title{font-size:16px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dm-header .dm-sub{font-size:12px;color:var(--text-muted);margin-top:2px}
.dm-close{background:none;color:var(--text-muted);font-size:22px;padding:4px 10px;border-radius:var(--radius);transition:all .15s}
.dm-close:hover{background:var(--surface-hover);color:var(--text-primary)}
.dm-tabs{display:flex;border-bottom:1px solid var(--border);flex-shrink:0;overflow-x:auto;padding:0 24px;gap:0}
.dm-tab{padding:12px 18px;font-size:13px;font-weight:500;color:var(--text-muted);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap;transition:all .15s}
.dm-tab:hover{color:var(--text-primary);background:var(--surface-hover)}
.dm-tab.active{color:var(--accent-green);border-bottom-color:var(--accent-green);font-weight:600}
.dm-tab .tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:18px;padding:0 6px;border-radius:9px;font-size:10px;font-weight:700;margin-left:6px;background:var(--border);color:var(--text-muted)}
.dm-tab.active .tab-badge{background:var(--accent-green-dim);color:var(--accent-green)}
.dm-body{flex:1;overflow-y:auto;padding:24px}
.dm-footer{padding:14px 24px;border-top:1px solid var(--border);display:flex;gap:10px;justify-content:flex-end;flex-shrink:0}
/* dm-field-grid (detail modal): auto-fit, mesmo padrao (Leva A+D). */
.dm-field-grid{display:grid;gap:14px}
.dm-field-grid.cols-1{grid-template-columns:1fr}
.dm-field-grid.cols-2{grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr))}
.dm-field-grid.cols-3{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}
.dm-field-grid.cols-4{grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr))}
.dm-section{margin-bottom:20px}
.dm-section-title{font-size:13px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.8px;margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid var(--border)}
.dm-field{display:flex;flex-direction:column;gap:3px}
.dm-field-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted)}
.dm-field-value{font-size:14px;color:var(--text-primary);padding:8px 12px;background:var(--navy);border:1px solid var(--border);border-radius:var(--radius);min-height:38px;display:flex;align-items:center;word-break:break-word}
.dm-field-value.mono{font-family:var(--mono);font-size:12px}
.dm-field-value.currency{color:var(--accent-green);font-family:var(--mono);font-weight:600}
.dm-field-value.status{display:inline-flex;width:auto}
.dm-field-value .status-badge{font-size:12px}
.dm-child-table{width:100%;border-collapse:collapse;font-size:12px}
.dm-child-table thead th{padding:8px 12px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);text-align:left;background:var(--navy);border-bottom:1px solid var(--border);position:sticky;top:0}
.dm-child-table tbody td{padding:10px 12px;color:var(--text-secondary);border-bottom:1px solid var(--border)}
.dm-child-table tbody tr:hover{background:var(--surface-hover)}
.dm-child-empty{text-align:center;padding:32px;color:var(--text-muted);font-size:13px}

@media(max-width:500px){
.sidebar{position:fixed;left:calc(var(--sidebar-w) * -1);top:0;height:100vh;z-index:100;width:var(--sidebar-w);box-shadow:4px 0 24px rgba(0,0,0,.3);transition:left .3s cubic-bezier(.22,1,.36,1)}
.sidebar.mobile-open{left:0}
.sidebar.collapsed{left:calc(var(--sidebar-w) * -1)}
.sidebar-toggle{display:none}
.hamburger{display:flex}
.sidebar-mobile-overlay.open{display:block}
.chart-section{grid-template-columns:1fr}:root{--drawer-w:100vw}.portal-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:480px){.portal-grid{grid-template-columns:1fr}}
