/* ============================================================================
   sector.erp — Design System novo (sector-ds.css) · issue #357 · v6.63.0 (Fase 1)
   Fonte: pacote doc/design-system/ (MOC validado). Tokens + componentes.

   ADAPTAÇÕES desta base (decisões do kickoff, issue #357):
   - TOKENS aliasados aos --se-* do sector-theme.css (fonte única de cor).
   - TIPOGRAFIA via var(--se-font-sans) (system fonts; sem Inter/Google Fonts).
   - ESCOPO: todo o layer de componentes vive sob a classe-raiz `.ds`.
     Sem nenhum elemento `.ds` no DOM, este arquivo é INERTE (zero tela alterada).
     Telas migradas e o novo chrome (Fase 2+) recebem class="ds" no container.
   - DARK MODE do DS: adiado (Fase posterior). Esta base é só o tema claro.

   Importar no base.html APÓS sector-theme.css:
     <link rel="stylesheet" href="/static/css/sector-ds.css?v=6.63.0">
   Ícones do projeto: Tabler (`ti-*`) — NÃO Bootstrap Icons.
   ============================================================================ */

:root{
  /* Aliases de marca/superfície/semântica -> tokens do sector-theme.css */
  --petroleo:var(--se-primary); --petroleo-d:var(--se-primary-dark); --petroleo-l:#2e6577;
  --ambar:var(--se-accent); --ambar-d:var(--se-accent-dark);
  --bg:var(--se-bg-app); --surface:var(--se-bg-card); --line:var(--se-border);
  --ink:var(--se-text-primary); --muted:var(--se-text-secondary); --muted-2:var(--se-text-tertiary);
  --ok:var(--se-success); --warn:var(--se-warning); --danger:var(--se-danger); --info:var(--petroleo-l);
  --r:var(--se-radius-lg); --r-sm:var(--se-radius-md); --shadow:var(--se-shadow);
}

/* Base do escopo DS (substitui o body{} global do pacote) */
.ds{font-family:var(--se-font-sans);color:var(--ink);font-size:14px;line-height:1.45}
.ds *{box-sizing:border-box}
.ds a{color:inherit;text-decoration:none}
.ds :focus-visible{outline:2px solid var(--ambar);outline-offset:2px;border-radius:4px}

.ds .appbar{height:52px;background:var(--petroleo);color:#fff;display:flex;align-items:center;gap:16px;padding:0 18px;position:sticky;top:0;z-index:40}
.ds .brand{font-weight:800;letter-spacing:-.2px;font-size:17px}
.ds .brand .dot{color:var(--ambar)}
.ds #crumb{font-size:12.5px;color:#c6d4d9}
.ds .spacer{flex:1}
.ds .appbar .u{width:30px;height:30px;border-radius:50%;background:var(--ambar);color:#1b2a30;display:grid;place-items:center;font-weight:700;font-size:12px}
.ds .appbar > i{opacity:.75;cursor:pointer}

.ds .shell{display:grid;grid-template-columns:64px 1fr}

/* RAIL */
.ds .rail{background:var(--surface);border-right:1px solid var(--line);padding:12px 0;display:flex;flex-direction:column;align-items:center;gap:5px;position:sticky;top:52px;height:calc(100vh - 52px)}
.ds .rail a{width:44px;height:44px;border-radius:var(--r-sm);display:grid;place-items:center;color:var(--muted);font-size:19px;position:relative;cursor:pointer}
.ds .rail a:hover{background:#eef3f4;color:var(--petroleo)}
.ds .rail a.on{background:rgba(31,78,95,.1);color:var(--petroleo)}
.ds .rail a.on::before{content:"";position:absolute;left:-12px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--ambar)}
.ds .rail a .lbl{position:absolute;left:54px;top:50%;transform:translateY(-50%) translateX(-4px);background:#1b2a30;color:#fff;font-size:12px;font-weight:600;padding:5px 10px;border-radius:6px;white-space:nowrap;opacity:0;pointer-events:none;transition:.12s;z-index:50;box-shadow:0 6px 18px rgba(0,0,0,.22)}
.ds .rail a:hover .lbl{opacity:1;transform:translateY(-50%)}
.ds .rail .sp{flex:1}
.ds .rail .divline{width:30px;height:1px;background:var(--line);margin:4px 0}

.ds .module{display:none}.ds .module.show{display:block}
.ds .pane{display:none}.ds .pane.show{display:block}

.ds .ws-head{background:var(--surface);border-bottom:1px solid var(--line);padding:16px 28px 0;position:sticky;top:52px;z-index:20}
.ds .ws-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap}
.ds .ws-title{display:flex;align-items:center;gap:12px}
.ds .ws-title .mod-ic{width:38px;height:38px;border-radius:9px;background:rgba(31,78,95,.1);color:var(--petroleo);display:grid;place-items:center;font-size:20px}
.ds .ws-title h1{font-size:20px;font-weight:800;letter-spacing:-.4px;margin:0}
.ds .ws-title .d{font-size:12.5px;color:var(--muted);margin-top:1px}
.ds .ws-actions{display:flex;gap:8px;align-items:center}
.ds .back{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;color:var(--muted);cursor:pointer;margin-bottom:8px}
.ds .back:hover{color:var(--petroleo)}

.ds .search{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:var(--r-sm);padding:7px 11px;background:#fff;min-width:200px}
.ds .search input{border:0;outline:0;font-family:inherit;font-size:13px;width:100%;background:transparent}
.ds .search i{color:var(--muted-2)}
.ds .status{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:3px 10px;border-radius:20px;background:rgba(47,143,91,.12);color:var(--ok)}

.ds .btn{font-family:inherit;font-size:13px;font-weight:600;border:1px solid var(--line);background:#fff;color:var(--ink);padding:7px 13px;border-radius:var(--r-sm);cursor:pointer;display:inline-flex;align-items:center;gap:7px}
.ds .btn:hover{background:#f3f6f7}.ds .btn:disabled{opacity:.5;cursor:not-allowed}
.ds .btn.pri{background:var(--petroleo);border-color:var(--petroleo);color:#fff}.ds .btn.pri:hover{background:var(--petroleo-d)}
.ds .btn.amb{background:var(--ambar);border-color:var(--ambar);color:#1b2a30}.ds .btn.amb:hover{background:var(--ambar-d);color:#fff}
.ds .btn.sm{padding:5px 10px;font-size:12px}.ds .btn i{font-size:15px}

.ds .ftabs{display:flex;gap:2px;margin-top:16px;overflow:auto}
.ds .ftabs button{font-family:inherit;border:0;background:transparent;font-size:13.5px;font-weight:600;color:var(--muted);padding:11px 14px;cursor:pointer;border-bottom:2.5px solid transparent;display:flex;align-items:center;gap:8px;white-space:nowrap}
.ds .ftabs button i{font-size:15px}
.ds .ftabs button:hover{color:var(--petroleo)}
.ds .ftabs button.on{color:var(--petroleo);border-bottom-color:var(--ambar)}
.ds .ftabs button .cnt{background:#eef3f4;color:var(--muted);font-size:10.5px;font-weight:700;border-radius:20px;padding:0 7px}
.ds .ftabs button.on .cnt{background:rgba(216,155,42,.18);color:var(--ambar-d)}

.ds .kpiwrap{background:var(--surface);border-bottom:1px solid var(--line);padding:0 28px 14px}
.ds .kpi-strip{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.ds .kpi-strip .k{background:var(--surface);padding:11px 14px}
.ds .kpi-strip .k .l{font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted-2);font-weight:700}
.ds .kpi-strip .k .v{font-size:20px;font-weight:800;letter-spacing:-.5px;margin-top:2px}
.ds .kpi-strip .k .s{font-size:11px;color:var(--muted);margin-top:1px}
.ds .kpi-strip .k .v.ok{color:var(--ok)}.ds .kpi-strip .k .v.warn{color:var(--warn)}.ds .kpi-strip .k .v.danger{color:var(--danger)}

.ds .body{padding:22px 28px 46px;max-width:1360px}
.ds .view{display:none}.ds .view.show{display:block}
.ds .view-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;flex-wrap:wrap;gap:10px}
.ds .view-title h2{font-size:15px;font-weight:700;margin:0}.ds .view-title .sub2{font-size:12px;color:var(--muted);font-weight:400}

.ds .kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;margin-bottom:18px}
.ds .kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:13px 15px;box-shadow:var(--shadow)}
.ds .kpi .l{font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted-2);font-weight:700;display:flex;align-items:center;gap:6px}
.ds .kpi .l i{font-size:13px;opacity:.85}
.ds .kpi .v{font-size:22px;font-weight:800;letter-spacing:-.6px;margin-top:5px}
.ds .kpi .s{font-size:11px;color:var(--muted);margin-top:2px}
.ds .kpi .v.ok{color:var(--ok)}.ds .kpi .v.warn{color:var(--warn)}.ds .kpi .v.danger{color:var(--danger)}
.ds .trend{font-weight:700}.ds .trend.up{color:var(--ok)}.ds .trend.down{color:var(--danger)}

.ds .alert-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px}
.ds .alert{border:1px solid var(--line);border-left:3px solid var(--muted);border-radius:var(--r-sm);background:var(--surface);padding:11px 13px;display:flex;align-items:flex-start;gap:11px;box-shadow:var(--shadow)}
.ds .alert.d{border-left-color:var(--danger)}.ds .alert.w{border-left-color:var(--warn)}.ds .alert.i{border-left-color:var(--info)}
.ds .alert .ic{font-size:18px;margin-top:1px}
.ds .alert.d .ic{color:var(--danger)}.ds .alert.w .ic{color:var(--warn)}.ds .alert.i .ic{color:var(--info)}
.ds .alert .n{font-size:21px;font-weight:800;line-height:1}.ds .alert .t{font-size:11.5px;color:var(--muted);margin-top:3px}

.ds .grid{display:grid;gap:16px}.ds .g-3{grid-template-columns:1.5fr 1fr}.ds .g-2{grid-template-columns:1fr 1fr}
.ds .card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}
.ds .card .ch{padding:13px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.ds .card .ch h3{font-size:13px;font-weight:700;margin:0;display:flex;align-items:center;gap:8px}.ds .card .ch h3 i{color:var(--petroleo-l)}
.ds .card .cb{padding:16px}.ds .card .cb.flush{padding:4px 8px}.ds .sub{font-size:11px;color:var(--muted)}

.ds .funil .fr{margin-bottom:12px}.ds .funil .fr:last-child{margin-bottom:0}
.ds .funil .fl{display:flex;justify-content:space-between;font-size:12.5px;margin-bottom:5px}.ds .funil .fl b{font-weight:600}.ds .funil .fl span{color:var(--muted);font-weight:600}
.ds .fbar{height:18px;border-radius:5px;background:linear-gradient(90deg,var(--petroleo),var(--petroleo-l));display:flex;align-items:center;justify-content:flex-end;padding-right:8px;color:#fff;font-size:11px;font-weight:700}
.ds .fbar.s2{background:linear-gradient(90deg,#2e6577,#3a7286)}.ds .fbar.s3{background:linear-gradient(90deg,#3a7286,var(--ambar))}.ds .fbar.s4{background:linear-gradient(90deg,var(--ambar),var(--ambar-d))}.ds .fbar.s5{background:var(--ok)}

.ds table.t{width:100%;border-collapse:collapse;font-size:12.5px}
.ds table.t th{text-align:left;font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted-2);font-weight:700;padding:9px 11px;border-bottom:1px solid var(--line);white-space:nowrap}
.ds table.t td{padding:11px;border-bottom:1px solid #eef3f4;vertical-align:middle}
.ds table.t tbody tr.clk:hover{background:#f6f9fa;cursor:pointer}
.ds table.t tr:last-child td{border-bottom:0}
.ds .pill{font-size:10.5px;font-weight:700;padding:2px 9px;border-radius:20px;white-space:nowrap}
.ds .pill.ok{background:rgba(47,143,91,.12);color:var(--ok)}.ds .pill.w{background:rgba(216,155,42,.15);color:var(--ambar-d)}
.ds .pill.d{background:rgba(192,83,59,.12);color:var(--danger)}.ds .pill.n{background:#eef3f4;color:var(--muted)}.ds .pill.i{background:rgba(46,101,119,.12);color:var(--petroleo)}
.ds .tag{font-size:10px;font-weight:700;padding:2px 8px;border-radius:5px}
.ds .tag.fv{background:rgba(216,155,42,.15);color:var(--ambar-d)}.ds .tag.obra{background:rgba(46,101,119,.13);color:var(--petroleo)}.ds .tag.bess{background:rgba(108,122,128,.14);color:var(--muted)}.ds .tag.civ{background:rgba(108,122,128,.14);color:var(--muted)}
.ds .ava{width:26px;height:26px;border-radius:50%;background:var(--petroleo-l);color:#fff;display:inline-grid;place-items:center;font-size:10.5px;font-weight:700;vertical-align:middle}.ds .ava.amb{background:var(--ambar);color:#1b2a30}

.ds .donut-wrap{display:flex;align-items:center;gap:18px}.ds .donut-legend{font-size:12px;display:flex;flex-direction:column;gap:8px}.ds .donut-legend div{display:flex;align-items:center;gap:8px}.ds .donut-legend .sw{width:11px;height:11px;border-radius:3px}

.ds .act{display:flex;gap:12px;padding:11px 4px;border-bottom:1px solid #eef3f4;align-items:center}.ds .act:last-child{border-bottom:0}
.ds .act .ai{width:30px;height:30px;border-radius:7px;display:grid;place-items:center;font-size:14px;flex:0 0 30px;background:#eef3f4;color:var(--petroleo-l)}
.ds .act .ai.call{background:rgba(47,143,91,.12);color:var(--ok)}.ds .act .ai.mail{background:rgba(46,101,119,.12);color:var(--petroleo)}.ds .act .ai.meet{background:rgba(216,155,42,.15);color:var(--ambar-d)}
.ds .act .at{flex:1}.ds .act .at .h{font-weight:600;font-size:13px}.ds .act .at .s{font-size:11.5px;color:var(--muted)}
.ds .act .when{font-size:11.5px;font-weight:700;color:var(--muted)}.ds .act .when.late{color:var(--danger)}

.ds .kanban{display:grid;grid-template-columns:repeat(5,minmax(210px,1fr));gap:14px;overflow-x:auto;padding-bottom:6px}
.ds .kcol{background:#eef2f3;border-radius:var(--r);padding:10px;min-width:210px}
.ds .kcol .kh{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;padding:2px 4px}
.ds .kcol .kh .nm{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;display:flex;align-items:center;gap:7px}.ds .kcol .kh .nm .dotc{width:8px;height:8px;border-radius:50%}
.ds .kcol .kh .val{font-size:11px;font-weight:700;color:var(--muted)}
.ds .kcard{background:#fff;border:1px solid var(--line);border-radius:var(--r-sm);padding:11px;margin-bottom:9px;box-shadow:0 1px 2px rgba(20,40,50,.05);cursor:grab}.ds .kcard:last-child{margin-bottom:0}
.ds .kcard .kt{font-weight:600;font-size:13px;margin-bottom:5px}.ds .kcard .kv{font-size:13px;font-weight:800;color:var(--petroleo);margin-bottom:7px}
.ds .kcard .kf{display:flex;align-items:center;justify-content:space-between}.ds .kcard .kdays{font-size:10.5px;color:var(--muted-2);font-weight:600}.ds .kcard .kdays.warn{color:var(--ambar-d)}.ds .kcard .kdays.late{color:var(--danger)}

.ds .note{background:#fbf6ec;border:1px solid #f0e2c4;border-radius:var(--r);padding:11px 14px;font-size:12.5px;color:#7a5d1e;display:flex;gap:9px;align-items:flex-start;margin-bottom:18px}.ds .note i{color:var(--ambar-d);font-size:16px;margin-top:1px}

/* obras portfolio */
.ds .filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}
.ds .chip{font-size:12.5px;font-weight:600;color:var(--muted);background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:6px 13px;cursor:pointer;display:inline-flex;align-items:center;gap:7px}
.ds .chip:hover{border-color:var(--petroleo-l);color:var(--petroleo)}.ds .chip.on{background:var(--petroleo);border-color:var(--petroleo);color:#fff}.ds .chip i{font-size:12px}
.ds .section-lab{font-size:11px;text-transform:uppercase;letter-spacing:.7px;color:var(--muted-2);font-weight:800;margin:4px 0 11px;display:flex;align-items:center;gap:8px}.ds .section-lab .ct{background:#f6e3dd;color:var(--danger);border-radius:20px;font-size:10px;padding:1px 8px}
.ds .attn{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:24px}
.ds .attn-card{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--danger);border-radius:var(--r);padding:14px 16px;box-shadow:var(--shadow);cursor:pointer;transition:transform .12s}.ds .attn-card:hover{transform:translateY(-2px)}.ds .attn-card.w{border-left-color:var(--warn)}
.ds .attn-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:7px}.ds .attn-top .nm{font-weight:700;font-size:14px}
.ds .attn-issue{font-size:12.5px;display:flex;align-items:center;gap:7px;margin-bottom:9px}.ds .attn-issue i{color:var(--danger);font-size:15px}.ds .attn-card.w .attn-issue i{color:var(--warn)}
.ds .attn-foot{display:flex;align-items:center;justify-content:space-between;font-size:11.5px;color:var(--muted)}.ds .attn-foot .go{color:var(--petroleo);font-weight:700}
.ds .split{display:grid;grid-template-columns:1fr 320px;gap:18px}
.ds .health{width:9px;height:9px;border-radius:50%;flex:0 0 9px;display:inline-block}.ds .health.ok{background:var(--ok)}.ds .health.w{background:var(--warn)}.ds .health.d{background:var(--danger)}
.ds .obra-c{display:flex;align-items:center;gap:11px}.ds .obra-c .nm{font-weight:600}.ds .obra-c .cd{font-size:11px;color:var(--muted-2)}
.ds .minibar{width:80px;height:6px;background:#eef3f4;border-radius:20px;overflow:hidden;display:inline-block;vertical-align:middle;margin-right:8px}.ds .minibar > i{display:block;height:100%;border-radius:20px;background:var(--petroleo-l)}.ds .minibar > i.d{background:var(--danger)}.ds .minibar > i.w{background:var(--ambar)}
.ds .pct{font-size:12px;font-weight:700}.ds .dev{font-weight:700;font-size:12.5px}.ds .dev.ok{color:var(--ok)}.ds .dev.d{color:var(--danger)}.ds .dev.w{color:var(--ambar-d)}
.ds .acount{display:inline-flex;align-items:center;gap:5px;font-weight:700;font-size:12.5px;color:var(--danger)}.ds .acount.zero{color:var(--muted-2)}
.ds .dist{margin-bottom:16px}.ds .dist:last-child{margin-bottom:0}.ds .dist .dl{display:flex;justify-content:space-between;font-size:12px;margin-bottom:5px}.ds .dist .dl b{font-weight:600}.ds .dist .dl span{color:var(--muted);font-weight:600}
.ds .bar{height:8px;background:#eef3f4;border-radius:20px;overflow:hidden}.ds .bar > i{display:block;height:100%;border-radius:20px;background:var(--petroleo-l)}.ds .bar > i.amb{background:var(--ambar)}.ds .bar > i.ok{background:var(--ok)}

/* obra detail */
.ds .etapa{margin-bottom:13px}.ds .etapa:last-child{margin-bottom:0}.ds .etapa .lab{display:flex;justify-content:space-between;font-size:12.5px;margin-bottom:5px}.ds .etapa .lab b{font-weight:600}.ds .etapa .lab span{color:var(--muted);font-weight:600}
.ds .svgwrap{width:100%;height:180px}.ds .legend{display:flex;gap:18px;font-size:11.5px;color:var(--muted);margin-top:6px}.ds .legend span{display:flex;align-items:center;gap:6px}.ds .dotc2{width:10px;height:3px;border-radius:2px;display:inline-block}
.ds .mini-cards{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:18px}
.ds .mcard{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;box-shadow:var(--shadow)}.ds .mcard .l{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted-2);font-weight:700}.ds .mcard .v{font-size:19px;font-weight:800;letter-spacing:-.4px;margin-top:4px}.ds .mcard .v.warn{color:var(--warn)}.ds .mcard .v.danger{color:var(--danger)}.ds .mcard .v.ok{color:var(--ok)}
.ds .team{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.ds .person{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:30px;padding:5px 13px 5px 6px;background:#fbfcfc}.ds .person .nm{font-size:12.5px;font-weight:600;line-height:1.1}.ds .person .ro{font-size:10.5px;color:var(--muted)}
.ds .ava2{width:28px;height:28px;border-radius:50%;background:var(--petroleo-l);color:#fff;display:grid;place-items:center;font-size:11px;font-weight:700}.ds .ava2.amb{background:var(--ambar);color:#1b2a30}
.ds .add-person{border:1px dashed var(--line);color:var(--muted);border-radius:30px;padding:8px 14px;font-size:12.5px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:7px}.ds .add-person:hover{border-color:var(--petroleo-l);color:var(--petroleo)}
.ds .select{font-family:inherit;font-size:12.5px;font-weight:600;border:1px solid var(--line);background:#fff;border-radius:var(--r-sm);padding:7px 11px;color:var(--ink)}
.ds .drag{color:var(--muted-2);cursor:grab;font-size:15px}.ds .eap-tip{font-size:11.5px;color:var(--muted-2);display:flex;align-items:center;gap:6px;margin:10px 2px 0}
.ds .gantt{display:grid;grid-template-columns:160px 1fr;gap:0 12px;align-items:center;font-size:12px}.ds .gantt .gl{font-weight:600;padding:6px 0}.ds .gtrack{position:relative;height:14px;background:#f1f5f6;border-radius:7px;margin:6px 0}.ds .gbar{position:absolute;height:14px;border-radius:7px;background:var(--petroleo-l)}.ds .gbar.amb{background:var(--ambar)}.ds .gbar.ok{background:var(--ok)}.ds .gscale{display:flex;justify-content:space-between;font-size:10px;color:var(--muted-2);margin-left:172px;margin-top:2px}
.ds .seg{display:inline-flex;background:#eef3f4;border-radius:var(--r-sm);padding:3px;gap:2px;margin-bottom:18px;flex-wrap:wrap}.ds .seg button{font-family:inherit;border:0;background:transparent;font-size:13px;font-weight:600;color:var(--muted);padding:6px 14px;border-radius:5px;cursor:pointer;display:flex;align-items:center;gap:7px}.ds .seg button.on{background:#fff;color:var(--petroleo);box-shadow:0 1px 2px rgba(0,0,0,.08)}.ds .seg button i{font-size:14px}
.ds .tl-item{display:flex;gap:13px;padding:13px 0;border-bottom:1px solid #eef3f4}.ds .tl-item:last-child{border-bottom:0}.ds .tl-date{flex:0 0 50px;text-align:center}.ds .tl-date .d{font-size:18px;font-weight:800;line-height:1;color:var(--petroleo)}.ds .tl-date .m{font-size:10px;text-transform:uppercase;color:var(--muted-2);font-weight:700}.ds .tl-body .h{font-weight:600;font-size:13px}.ds .tl-body .meta{font-size:11.5px;color:var(--muted);margin-top:2px;display:flex;gap:12px;flex-wrap:wrap;align-items:center}.ds .tl-body .meta b{color:var(--ink);font-weight:600}
.ds .chk{display:flex;align-items:center;gap:12px;padding:11px 4px;border-bottom:1px solid #eef3f4}.ds .chk:last-child{border-bottom:0}.ds .chk .ck{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:12px;flex:0 0 22px}.ds .chk .ck.done{background:rgba(47,143,91,.14);color:var(--ok)}.ds .chk .ck.pend{background:#eef3f4;color:var(--muted-2)}.ds .chk .ck.prog{background:rgba(216,155,42,.16);color:var(--ambar-d)}.ds .chk .info{flex:1}.ds .chk .info .h{font-weight:600;font-size:13px}.ds .chk .info .s{font-size:11.5px;color:var(--muted)}
.ds .doc-cats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}.ds .doc-cat{border:1px solid var(--line);border-radius:var(--r);padding:14px;background:var(--surface);cursor:pointer;box-shadow:var(--shadow)}.ds .doc-cat:hover{border-color:var(--petroleo-l)}.ds .doc-cat > i{font-size:22px;color:var(--petroleo-l)}.ds .doc-cat .nm{font-weight:600;font-size:13px;margin-top:8px}.ds .doc-cat .ct{font-size:11.5px;color:var(--muted)}
.ds .ficon{width:30px;height:30px;border-radius:6px;display:grid;place-items:center;font-size:14px;background:#eef3f4;color:var(--muted)}.ds .ficon.pdf{background:rgba(192,83,59,.12);color:var(--danger)}.ds .ficon.img{background:rgba(46,101,119,.12);color:var(--petroleo)}.ds .ficon.dwg{background:rgba(216,155,42,.15);color:var(--ambar-d)}

/* catálogo */
.ds .kits{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.ds .kit{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow);overflow:hidden}
.ds .kit .kthumb{height:64px;background:linear-gradient(120deg,#eef3f4,#e3edf0);display:grid;place-items:center;color:var(--petroleo-l);font-size:26px}
.ds .kit .kbody{padding:13px 15px}.ds .kit .kname{font-weight:700;font-size:13.5px}.ds .kit .kspec{font-size:11.5px;color:var(--muted);margin-top:3px}
.ds .kit .kprice{font-size:16px;font-weight:800;color:var(--petroleo);margin-top:9px}.ds .kit .kmeta{font-size:11px;color:var(--muted-2);margin-top:2px}

/* CRUD edit / formulário */
.ds .rec-grid{display:grid;grid-template-columns:1fr 320px;gap:18px;align-items:start}
.ds .form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 16px}
/* #382 bloco 5 — grid denso (4 col; 3 em telas médias) p/ reduzir linhas no form de dados da obra */
.ds .form-grid.fg-dense{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:1100px){.ds .form-grid.fg-dense{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:720px){.ds .form-grid.fg-dense{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:480px){.ds .form-grid.fg-dense{grid-template-columns:1fr}}
.ds .field{display:flex;flex-direction:column;gap:5px}.ds .field.full{grid-column:1 / -1}
/* #382 bloco 5 — abas internas do form de dados da obra */
.ds .dados-tabs{border-bottom:1px solid var(--line);gap:2px;flex-wrap:wrap}
.ds .dados-tabs .nav-link{color:var(--muted-2);font-size:13px;font-weight:600;border:none;border-bottom:2px solid transparent;border-radius:0;padding:8px 14px;background:none}
.ds .dados-tabs .nav-link:hover{color:var(--ink)}
.ds .dados-tabs .nav-link.active{color:var(--petroleo);border-bottom-color:var(--petroleo);background:none}
.ds .field label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--muted-2)}
.ds .field input,.ds .field select,.ds .field textarea{font-family:inherit;font-size:13.5px;border:1px solid var(--line);border-radius:var(--r-sm);padding:8px 11px;color:var(--ink);background:#fff;width:100%}
.ds .field input:focus,.ds .field select:focus,.ds .field textarea:focus{outline:none;border-color:var(--petroleo-l);box-shadow:0 0 0 3px rgba(31,78,95,.08)}
.ds .field textarea{resize:vertical;min-height:58px}
/* checkbox/radio não devem herdar o width:100% dos inputs (senão esticam e
   empurram a legenda pra longe — #382 bloco 11) */
.ds .field input[type=checkbox],.ds .field input[type=radio]{width:auto;flex:0 0 auto}
/* Grid de formulário de 12 colunas (linhas com larguras próprias via spans). Reutilizável. */
.ds .fg12{display:grid;grid-template-columns:repeat(12,1fr);gap:14px 16px}
.ds .cs2{grid-column:span 2}.ds .cs3{grid-column:span 3}.ds .cs4{grid-column:span 4}.ds .cs5{grid-column:span 5}.ds .cs6{grid-column:span 6}
.ds .itbl input{border:1px solid transparent;background:transparent;font-family:inherit;font-size:12.5px;padding:5px 7px;border-radius:5px;width:100%;text-align:right;color:var(--ink)}
.ds .itbl input:hover{border-color:var(--line)}.ds .itbl input:focus{outline:none;border-color:var(--petroleo-l);background:#fff}.ds .itbl input.txt{text-align:left}
.ds .itbl-foot{padding:10px 12px;display:flex;justify-content:space-between;align-items:center;font-size:12.5px;border-top:1px solid var(--line)}
.ds .sumrow{display:flex;justify-content:space-between;align-items:center;font-size:12.5px;padding:8px 0;border-bottom:1px solid #eef3f4}.ds .sumrow:last-of-type{border-bottom:0}.ds .sumrow b{font-weight:600}.ds .sumrow .v{font-weight:700}
.ds .sumtotal{display:flex;justify-content:space-between;align-items:baseline;margin-top:10px;padding-top:12px;border-top:2px solid var(--line)}
.ds .sumtotal .lbl{font-size:12px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);font-weight:700}.ds .sumtotal .amt{font-size:23px;font-weight:800;color:var(--petroleo);letter-spacing:-.5px}
.ds .margin-in{display:flex;align-items:center;gap:6px;font-weight:700}.ds .margin-in input{width:58px;text-align:right;border:1px solid var(--line);border-radius:5px;padding:4px 7px;font-family:inherit;font-size:12.5px}
.ds .side-sticky{position:sticky;top:128px}
@media(max-width:1100px){.ds .rec-grid{grid-template-columns:1fr}.ds .side-sticky{position:static}.ds .form-grid{grid-template-columns:1fr}.ds .fg12{grid-template-columns:1fr}.ds .fg12 > .field{grid-column:auto}}

@media(max-width:1180px){.ds .kpis,.ds .kpi-strip{grid-template-columns:repeat(3,1fr)}.ds .g-3,.ds .g-2,.ds .alert-row{grid-template-columns:1fr 1fr}.ds .split{grid-template-columns:1fr}.ds .attn,.ds .kits,.ds .doc-cats,.ds .mini-cards{grid-template-columns:repeat(2,1fr)}}
@media(max-width:720px){.ds .rail{display:none}.ds .shell{grid-template-columns:1fr}.ds .kpis,.ds .kpi-strip,.ds .alert-row,.ds .attn,.ds .kits{grid-template-columns:repeat(2,1fr)}.ds .g-3,.ds .g-2{grid-template-columns:1fr}.ds .ws-head{position:static}}
@media(prefers-reduced-motion:reduce){.ds *{transition:none!important}}
