[hidden]{display:none!important}
:root{
  --navy:#0f2540; --navy-2:#173559; --accent:#eb6834; --bg:#f4f5f7; --card:#ffffff; --line:#e3e5e9; --ink:#141a22; --ink-2:#4b5563; --muted:#8a919c;
  --s1:#2a78d6; --s2:#eb6834; --s3:#1baf7a; --s4:#eda100; --s5:#e87ba4; --s6:#008300; --s7:#4a3aa7; --s8:#e34948;
  --good:#0ca30c; --warning:#fab219; --serious:#ec835a; --critical:#d03b3b;
  --st-afazer:#9aa0a6; --st-andamento:#2a78d6; --st-concluido:#0ca30c; --st-atrasado:#d03b3b; --st-na:#c3c2b7;
  --radius:10px; --shadow:0 1px 2px rgba(16,24,40,.06),0 1px 3px rgba(16,24,40,.08);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font:14px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,Helvetica,Arial,sans-serif}
a{color:var(--s1);text-decoration:none}
button{font:inherit}
h1,h2,h3{margin:0;font-weight:650;letter-spacing:-.01em}
h2{font-size:17px;margin-bottom:10px}
h3{font-size:14px;color:var(--ink-2);text-transform:uppercase;letter-spacing:.04em;font-weight:600}
.muted{color:var(--muted)} .small{font-size:12px} .mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}
.brand{display:flex;gap:12px;align-items:center}
.brand-mark{width:38px;height:38px;border-radius:10px;background:var(--navy);position:relative;flex:none}
.brand-mark::before{content:"";position:absolute;left:9px;top:8px;width:20px;height:20px;border:3px solid var(--accent);border-top-color:transparent;border-left-color:transparent;transform:rotate(-135deg);border-radius:2px}
.brand-name{font-weight:700;font-size:16px;color:var(--navy)} .brand-sub{font-size:12px;color:var(--muted)}
/* login */
.login{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(160deg,#0f2540 0%,#1b3f6b 60%,#f4f5f7 60.1%)}
.login-card{background:#fff;padding:32px 28px;border-radius:14px;width:min(420px,100%);box-shadow:0 20px 50px rgba(0,0,0,.25);display:flex;flex-direction:column;gap:14px}
.login-card label{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:13px;color:var(--ink-2)}
input,select,textarea{font:inherit;padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);width:100%}
input:focus,select:focus,textarea:focus{outline:2px solid #bcd3f4;border-color:var(--s1)}
textarea{min-height:80px;resize:vertical}
.erro{background:#fdecec;color:#8a1c1c;padding:10px;border-radius:8px;font-size:13px}
.btn{border:1px solid var(--line);background:#fff;color:var(--ink);padding:8px 14px;border-radius:8px;cursor:pointer;font-weight:600;font-size:13px;line-height:1.2}
.btn:hover{background:#f7f8fa} .btn.primary{background:var(--navy);color:#fff;border-color:var(--navy)} .btn.primary:hover{background:var(--navy-2)}
.btn.accent{background:var(--accent);color:#fff;border-color:var(--accent)} .btn.ghost{background:transparent} .btn.link{border:none;background:none;color:var(--s1);padding:4px 0}
.btn.sm{padding:5px 9px;font-size:12px} .btn.danger{color:var(--critical);border-color:#f3c5c5} .btn[disabled]{opacity:.5;cursor:default}
/* layout */
.app{display:grid;grid-template-columns:240px 1fr;min-height:100vh}
.side{background:var(--navy);color:#fff;padding:20px 14px;display:flex;flex-direction:column;gap:18px;position:sticky;top:0;height:100vh}
.side-brand .brand-name{color:#fff} .side-brand .brand-sub{color:#9fb3cc} .side-brand .brand-mark{background:#fff} .side-brand .brand-mark::before{border-color:var(--navy);border-top-color:transparent;border-left-color:transparent}
.nav{display:flex;flex-direction:column;gap:2px}
.nav a{color:#d6e0ee;padding:9px 10px;border-radius:8px;display:flex;gap:10px;align-items:center;font-weight:500}
.nav a .ico{width:22px;text-align:center;opacity:.8;font-size:13px} .nav a:hover{background:rgba(255,255,255,.08)} .nav a.active{background:rgba(255,255,255,.14);color:#fff;font-weight:650}
.side-user{margin-top:auto;font-size:12px;color:#9fb3cc;border-top:1px solid rgba(255,255,255,.12);padding-top:12px} .user-nome{color:#fff;font-weight:600} .side-user .btn.link{color:#ffb28f}
.main{min-width:0}
.topbar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:18px 26px 10px;flex-wrap:wrap}
.topbar h1{font-size:22px} .topbar-right{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.view{padding:6px 26px 40px}
/* cards e grids */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow)}
.grid{display:grid;gap:14px} .grid.k4{grid-template-columns:repeat(4,1fr)} .grid.k2{grid-template-columns:repeat(2,1fr)} .grid.k3{grid-template-columns:repeat(3,1fr)}
.kpi .kpi-v{font-size:26px;font-weight:700;letter-spacing:-.02em;line-height:1.1} .kpi .kpi-l{font-size:12px;color:var(--muted);margin-top:4px} .kpi .kpi-s{font-size:12px;color:var(--ink-2);margin-top:6px}
.kpi.crit .kpi-v{color:var(--critical)} .kpi.good .kpi-v{color:#006300} .kpi.blue .kpi-v{color:var(--s1)}
.stack{display:flex;flex-direction:column;gap:14px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.chart-box{position:relative;height:260px}
.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.filters select,.filters input{width:auto;min-width:140px;padding:7px 9px} .filters input[type=search]{min-width:220px}
.count{font-size:12px;color:var(--muted);margin-left:auto}
/* tabela */
.tbl{width:100%;border-collapse:collapse;font-size:13px} .tbl th{text-align:left;font-weight:600;color:var(--ink-2);font-size:12px;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap;background:#fafbfc;position:sticky;top:0}
.tbl td{padding:9px 10px;border-bottom:1px solid #eef0f3;vertical-align:top} .tbl tr.clk{cursor:pointer} .tbl tr.clk:hover td{background:#f6f9ff}
.tbl-wrap{overflow:auto;max-height:70vh;border:1px solid var(--line);border-radius:var(--radius);background:#fff}
.tbl td.num,.tbl th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tit{font-weight:600;color:var(--ink)} .sub{font-size:12px;color:var(--muted)}
/* badges */
.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:999px;font-size:11.5px;font-weight:600;white-space:nowrap;border:1px solid transparent}
.badge.st-a_fazer{background:#eef0f2;color:#4b5563} .badge.st-em_andamento{background:#e4eefc;color:#1c4f92} .badge.st-concluido{background:#e2f6e2;color:#0b5d0b}
.badge.st-atrasado{background:#fde5e5;color:#8f1d1d} .badge.st-nao_aplicavel{background:#f3f3f1;color:#7a7a72;text-decoration:line-through}
.badge.area{background:#f0f2f5;color:var(--ink-2)} .badge.tipo{background:#fff4ec;color:#8a3d13} .badge.warn{background:#fff6dc;color:#7a5200;border-color:#f6dd8f} .badge.info{background:#e4eefc;color:#1c4f92}
.badge.prov{background:#fff6dc;color:#7a5200}
.dot{width:9px;height:9px;border-radius:50%;display:inline-block}
.dot.st-a_fazer{background:var(--st-afazer)} .dot.st-em_andamento{background:var(--st-andamento)} .dot.st-concluido{background:var(--st-concluido)} .dot.st-atrasado{background:var(--st-atrasado)} .dot.st-nao_aplicavel{background:var(--st-na)}
/* listas */
.list{display:flex;flex-direction:column} .list .it{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-bottom:1px solid #eef0f3;cursor:pointer} .list .it:last-child{border-bottom:none} .list .it:hover .tit{color:var(--s1)}
.list .it .d{margin-left:auto;font-size:12px;white-space:nowrap;color:var(--ink-2)} .list .it .d.late{color:var(--critical);font-weight:600}
/* drawer */
.drawer-wrap{position:fixed;inset:0;z-index:50} .drawer-bg{position:absolute;inset:0;background:rgba(8,14,24,.45)}
.drawer{position:absolute;right:0;top:0;bottom:0;width:min(640px,100%);background:#fff;box-shadow:-10px 0 40px rgba(0,0,0,.25);overflow:auto;padding:22px 24px 40px;display:flex;flex-direction:column;gap:16px}
.drawer .head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start} .drawer h2{font-size:18px;line-height:1.3}
.drawer .close{border:none;background:#f0f2f5;width:34px;height:34px;border-radius:8px;cursor:pointer;font-size:18px;flex:none}
.fonte{background:#f8f9fb;border-left:3px solid var(--accent);padding:10px 12px;border-radius:0 8px 8px 0;font-size:13px} .fonte q{font-style:italic;color:var(--ink-2);quotes:"“" "”"}
.form{display:grid;grid-template-columns:1fr 1fr;gap:10px} .form label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:var(--ink-2)} .form label.full{grid-column:1/-1}
.status-btns{display:flex;gap:6px;flex-wrap:wrap} .status-btns .btn.on{outline:2px solid var(--navy);background:#eef2f8}
.kv{display:grid;grid-template-columns:150px 1fr;gap:6px 12px;font-size:13px} .kv dt{color:var(--muted)} .kv dd{margin:0}
.subtasks .it{cursor:default} .subtasks input[type=checkbox]{width:auto;margin-top:3px}
/* gantt */
.gantt{overflow:auto;border:1px solid var(--line);border-radius:var(--radius);background:#fff;max-height:75vh}
.gantt table{border-collapse:collapse;font-size:12px} .gantt th,.gantt td{padding:0;border-bottom:1px solid #eef0f3}
.gantt .lab{position:sticky;left:0;background:#fff;z-index:2;min-width:300px;max-width:300px;padding:6px 10px;border-right:1px solid var(--line)} .gantt .lab .tit{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gantt .grp td{background:#f4f6f9;font-weight:700;color:var(--ink-2);padding:6px 10px;position:sticky;left:0} 
.gantt .mo{min-width:28px;width:28px;text-align:center;font-weight:500;color:var(--muted);border-left:1px solid #f0f2f5;height:34px;font-size:10.5px} .gantt .mo.y{border-left:2px solid #d9dde3;color:var(--ink-2);font-weight:700}
.gantt .cell{height:30px;border-left:1px solid #f4f5f7;position:relative} .gantt .cell.y{border-left:2px solid #e6e9ee} .gantt .cell.today{background:#fff3e8}
.gantt .bar{position:absolute;top:8px;height:14px;border-radius:4px;left:2px;right:2px;opacity:.9} .gantt .bar.ms{width:14px;transform:rotate(45deg);border-radius:3px;top:8px;right:auto}
.gantt tr.clk{cursor:pointer} .gantt tr.clk:hover .lab{background:#f6f9ff}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--ink-2)} .legend span{display:inline-flex;gap:6px;align-items:center}
/* tet */
.tet-layout{display:grid;grid-template-columns:260px 1fr;gap:14px} .tet-list a{display:block;padding:8px 10px;border-radius:8px;color:var(--ink);border-bottom:1px solid #eef0f3} .tet-list a.active{background:#eef2f8;font-weight:650} .tet-list a .sub{display:block}
.doc{font-size:14px;line-height:1.6;max-width:860px} .doc h1{font-size:20px;margin:12px 0 8px} .doc h2{font-size:16px;margin:18px 0 6px;color:var(--navy)} .doc h3{font-size:14px;text-transform:none;letter-spacing:0;margin:14px 0 4px;color:var(--ink)}
.doc table{border-collapse:collapse;margin:8px 0;font-size:13px;width:100%} .doc th,.doc td{border:1px solid var(--line);padding:5px 8px;text-align:left;vertical-align:top} .doc th{background:#f5f7fa}
.doc ul,.doc ol{padding-left:22px;margin:6px 0} .doc p{margin:6px 0} .doc code{background:#f1f3f6;padding:1px 4px;border-radius:4px;font-size:12.5px}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:10px}
/* toast */
.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:#141a22;color:#fff;padding:10px 16px;border-radius:10px;font-size:13px;z-index:99;box-shadow:0 10px 30px rgba(0,0,0,.3)}
.note{background:#fff6dc;border:1px solid #f6dd8f;color:#5d4200;padding:10px 12px;border-radius:8px;font-size:13px}
.note.info{background:#e9f1fc;border-color:#bcd3f4;color:#173559}
.pill-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px} .pill-tabs .btn.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.progress{height:8px;background:#eef0f3;border-radius:99px;overflow:hidden} .progress i{display:block;height:100%;background:var(--good)}
@media (max-width:980px){
  .app{grid-template-columns:1fr} .side{position:relative;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;padding:12px 14px;gap:10px}
  .nav{flex-direction:row;overflow:auto;gap:4px;width:100%} .nav a{white-space:nowrap;padding:7px 10px} .nav a .ico{display:none} .side-user{margin:0;border:none;padding:0;display:flex;gap:10px;align-items:center;width:100%}
  .grid.k4{grid-template-columns:repeat(2,1fr)} .grid.k3,.grid.k2{grid-template-columns:1fr} .view,.topbar{padding-left:14px;padding-right:14px} .tet-layout{grid-template-columns:1fr} .form{grid-template-columns:1fr} .kv{grid-template-columns:1fr}
}
@media print{.side,.topbar,.filters,.toolbar{display:none!important}.app{grid-template-columns:1fr}.view{padding:0}}
