:root{
  --ink:#101C24; --ink-2:#1A2C36; --paper:#FAFAF8; --surface:#fff;
  --line:#E3E6E3; --line-soft:#EEF0EE; --text:#26333B; --muted:#6C7A80; --faint:#98A5AA;
  --brand:#12807A; --brand-dark:#0C665F; --brand-soft:#E7F2F0;
  --blue:#2C5F8A; --blue-soft:#E8EFF6; --rust:#B5562B; --rust-soft:#F8EBE3;
  --violet:#6B5C86; --violet-soft:#EFEBF5; --grey:#7E8B90; --grey-soft:#F1F3F3;
  --r:4px; --shadow:0 1px 2px rgba(16,28,36,.04), 0 12px 24px -20px rgba(16,28,36,.5);
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --display:"Archivo","Helvetica Neue",Arial,sans-serif;
  --ui:"Instrument Sans","Helvetica Neue",Arial,sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box;}
html,body{height:100%;}
body{font-family:var(--ui);font-size:14px;line-height:1.45;color:var(--text);background:var(--paper);-webkit-font-smoothing:antialiased;}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;}
input,select,textarea{font:inherit;color:inherit;}
a{color:inherit;text-decoration:none;}
svg{display:block;}
::selection{background:#CFE7E3;}
[hidden]{display:none!important;}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums;}

/* ---------------- login ---------------- */
.login{display:grid;grid-template-columns:1.02fr .98fr;min-height:100vh;}
.login-left{background:var(--ink);color:#fff;position:relative;overflow:hidden;padding:44px 52px;display:flex;flex-direction:column;}
.login-left::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:56px 56px;mask-image:linear-gradient(to bottom,rgba(0,0,0,.9),transparent 92%);}
.login-left .plate{background:#fff;padding:12px 16px;border-radius:3px;align-self:flex-start;position:relative;z-index:2;}
.login-left .plate img{height:38px;display:block;}
.login-hero{position:relative;z-index:2;margin:auto 0;padding:60px 0 40px;max-width:520px;}
.login-eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:#4FBDB2;margin-bottom:22px;}
.login-hero h2{font-family:var(--display);font-size:42px;line-height:1.12;font-weight:600;letter-spacing:-.025em;color:#fff;}
.login-hero h2 em{font-style:normal;color:#5FC6BA;}
.login-hero p{margin-top:18px;font-size:15px;line-height:1.6;color:rgba(255,255,255,.56);max-width:420px;}
.bp{margin-top:44px;border-top:1px solid rgba(255,255,255,.1);padding-top:18px;}
.bp-row{display:flex;align-items:center;gap:12px;height:26px;}
.bp-lbl{font-family:var(--mono);font-size:9px;letter-spacing:.1em;color:rgba(255,255,255,.34);width:104px;flex:none;text-transform:uppercase;}
.bp-track{flex:1;height:6px;background:rgba(255,255,255,.07);position:relative;border-radius:1px;}
.bp-bar{position:absolute;top:0;height:6px;border-radius:1px;background:#2A7F79;}
.bp-bar.b2{background:#3E9E96;}.bp-bar.b3{background:#57B7AD;}.bp-bar.ghost{background:rgba(255,255,255,.14);}
.login-left .foot{position:relative;z-index:2;display:flex;justify-content:space-between;font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.3);border-top:1px solid rgba(255,255,255,.08);padding-top:18px;}
.login-right{display:flex;align-items:center;justify-content:center;padding:48px;background:var(--surface);}
.login-card{width:100%;max-width:372px;}
.login-tag{display:inline-flex;align-items:center;gap:8px;margin-bottom:26px;font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint);}
.login-tag .dot{width:6px;height:6px;background:var(--brand);border-radius:50%;}
.login-card h1{font-family:var(--display);font-size:29px;font-weight:600;letter-spacing:-.02em;color:var(--ink);margin-bottom:8px;}
.login-card .sub{font-size:13.5px;color:var(--muted);margin-bottom:30px;}
.login-sep{display:flex;align-items:center;gap:12px;margin:24px 0 12px;font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:#B3BDC1;}
.login-sep::before,.login-sep::after{content:"";flex:1;height:1px;background:var(--line);}
.login-hint{font-size:12px;color:var(--muted);line-height:1.6;}

.field{margin-bottom:16px;}
.field label{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin-bottom:7px;}
.field input,.field select,.field textarea{width:100%;height:42px;padding:0 12px;background:#fff;border:1px solid var(--line);border-radius:3px;font-size:14px;color:var(--ink);transition:border-color .15s,box-shadow .15s;}
.field textarea{height:auto;padding:10px 12px;resize:vertical;min-height:80px;line-height:1.5;}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(18,128,122,.1);}
.field .hint{font-size:11.5px;color:var(--faint);margin-top:6px;}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.alert{background:var(--rust-soft);border:1px solid #E8C9B9;color:#8E3E1D;border-radius:3px;padding:9px 12px;font-size:12.5px;margin-bottom:14px;}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:38px;padding:0 15px;border-radius:3px;font-size:13.5px;font-weight:500;border:1px solid var(--line);background:#fff;color:var(--ink);transition:background .14s,border-color .14s;white-space:nowrap;}
.btn:hover{background:#F6F8F7;border-color:#D5DAD7;}
.btn:disabled{opacity:.55;cursor:not-allowed;}
.btn-primary{background:var(--brand);border-color:var(--brand);color:#fff;}
.btn-primary:hover{background:var(--brand-dark);border-color:var(--brand-dark);}
.btn-ghost{border-color:transparent;background:transparent;color:var(--muted);}
.btn-ghost:hover{background:#F2F5F4;color:var(--ink);}
.btn-danger{color:var(--rust);border-color:#E8C9B9;}
.btn-danger:hover{background:var(--rust-soft);}
.btn-block{width:100%;height:44px;}
.btn-sm{height:32px;padding:0 11px;font-size:12.5px;}
.btn svg{width:14px;height:14px;}

/* ---------------- app shell ---------------- */
.app{display:grid;grid-template-columns:250px 1fr;min-height:100vh;}
.rail{background:var(--ink);color:#fff;padding:18px 14px 14px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;border-right:1px solid rgba(255,255,255,.06);}
.rail-brand{display:flex;align-items:center;gap:10px;padding:0 4px 18px;}
.rail-brand .plate{background:#fff;border-radius:3px;padding:7px 9px;flex:none;}
.rail-brand .plate img{height:24px;display:block;}
.rail-brand .who{min-width:0;}
.rail-brand .who b{display:block;font-family:var(--display);font-size:13px;font-weight:600;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rail-brand .who span{display:block;font-family:var(--mono);font-size:9px;letter-spacing:.13em;text-transform:uppercase;color:rgba(255,255,255,.38);margin-top:3px;}
.rail-nav{display:flex;flex-direction:column;gap:2px;overflow-y:auto;}
.rail-label{font-family:var(--mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.28);margin:18px 8px 8px;}
.rail-label:first-child{margin-top:0;}
.nav-item{display:flex;align-items:center;gap:10px;height:36px;padding:0 10px;border-radius:3px;color:rgba(255,255,255,.66);font-size:13.5px;position:relative;transition:background .13s,color .13s;cursor:pointer;}
.nav-item .ix{font-family:var(--mono);font-size:9.5px;color:rgba(255,255,255,.28);width:14px;flex:none;}
.nav-item svg{width:15px;height:15px;flex:none;opacity:.8;}
.nav-item:hover{background:rgba(255,255,255,.055);color:#fff;}
.nav-item.on{background:rgba(255,255,255,.075);color:#fff;}
.nav-item.on .ix{color:#5FC6BA;}
.nav-item.on::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:2px;background:#3EB3A7;border-radius:2px;}
.nav-item .badge{margin-left:auto;font-family:var(--mono);font-size:10px;background:rgba(181,86,43,.22);color:#E9A882;border-radius:2px;padding:1px 5px;}
.rail-foot{margin-top:auto;border-top:1px solid rgba(255,255,255,.08);padding-top:12px;}
.me{display:flex;align-items:center;gap:10px;padding:6px 4px 10px;}
.me .nm{min-width:0;flex:1;}
.me .nm b{display:block;font-size:12.5px;font-weight:600;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.me .nm span{display:block;font-family:var(--mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.36);margin-top:2px;}
.rail-actions{display:flex;gap:6px;}
.rail-btn{flex:1;height:30px;border:1px solid rgba(255,255,255,.12);border-radius:3px;background:rgba(255,255,255,.04);color:rgba(255,255,255,.75);font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;}
.rail-btn:hover{background:rgba(255,255,255,.1);color:#fff;}

.main{display:flex;flex-direction:column;min-width:0;background:var(--paper);}
.topbar{height:56px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:18px;padding:0 28px;position:sticky;top:0;z-index:40;}
.crumb{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);}
.crumb b{color:var(--ink);font-weight:500;}
.crumb .sep{color:#CBD3D0;}
.topbar .grow{flex:1;}
.searchbox{display:flex;align-items:center;gap:8px;height:34px;padding:0 11px;background:var(--paper);border:1px solid var(--line);border-radius:3px;width:262px;}
.searchbox svg{width:13px;height:13px;color:var(--faint);flex:none;}
.searchbox input{border:0;background:none;outline:none;width:100%;font-size:12.5px;}
.top-avatar{display:flex;align-items:center;gap:9px;padding-left:16px;border-left:1px solid var(--line);}
.top-avatar .nm{font-size:12.5px;font-weight:500;color:var(--ink);line-height:1.2;}
.top-avatar .nm span{display:block;font-family:var(--mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);margin-top:2px;}

.content{padding:26px 28px 44px;flex:1;min-width:0;}
.view{animation:fade .2s ease;}
@keyframes fade{from{opacity:0;transform:translateY(3px);}to{opacity:1;transform:none;}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;}}

.page-head{display:flex;align-items:flex-start;gap:18px;margin-bottom:22px;}
.page-head .tt{flex:1;min-width:0;}
.page-head h1{font-family:var(--display);font-size:25px;font-weight:600;letter-spacing:-.022em;color:var(--ink);line-height:1.15;}
.page-head p{font-size:13px;color:var(--muted);margin-top:5px;}
.page-actions{display:flex;align-items:center;gap:8px;flex:none;padding-top:2px;flex-wrap:wrap;}

.seg{display:inline-flex;border:1px solid var(--line);border-radius:3px;overflow:hidden;background:#fff;}
.seg button{height:32px;padding:0 12px;font-size:12.5px;color:var(--muted);border-right:1px solid var(--line);display:flex;align-items:center;gap:6px;}
.seg button:last-child{border-right:0;}
.seg button.on{background:var(--ink);color:#fff;}
.seg button:not(.on):hover{background:#F6F8F7;color:var(--ink);}

.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);}
.card-h{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 18px 0;}
.card-h .lab{font-family:var(--mono);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--faint);}
.card-h h3{font-family:var(--display);font-size:14.5px;font-weight:600;color:var(--ink);letter-spacing:-.01em;margin-top:5px;}
.card-b{padding:16px 18px 18px;overflow-x:auto;}

.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:14px;}
.kpi{padding:16px 18px 15px;position:relative;overflow:hidden;}
.kpi .lab{font-family:var(--mono);font-size:9.5px;letter-spacing:.17em;text-transform:uppercase;color:var(--faint);display:flex;align-items:center;gap:7px;}
.kpi .lab .tick{width:5px;height:5px;background:var(--brand);flex:none;}
.kpi .lab .tick.warn{background:var(--rust);}
.kpi .lab .tick.blue{background:var(--blue);}
.kpi .val{font-family:var(--display);font-size:32px;font-weight:600;letter-spacing:-.03em;color:var(--ink);margin-top:12px;line-height:1;display:flex;align-items:baseline;gap:4px;}
.kpi .val small{font-size:14px;font-weight:500;color:var(--faint);}
.kpi .meta{display:flex;align-items:center;justify-content:space-between;margin-top:11px;gap:8px;}
.kpi .delta{font-family:var(--mono);font-size:10.5px;color:var(--brand);}
.kpi .delta.down{color:var(--rust);}
.kpi .of{font-family:var(--mono);font-size:10px;color:var(--faint);}

.grid-2{display:grid;grid-template-columns:1.15fr .85fr;gap:14px;margin-bottom:14px;}
.grid-2b{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px;}

.donut-wrap{display:flex;align-items:center;gap:26px;padding:6px 0 2px;}
.donut{position:relative;width:142px;height:142px;flex:none;}
.donut svg{transform:rotate(-90deg);}
.donut .mid{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;}
.donut .mid b{font-family:var(--display);font-size:26px;font-weight:600;color:var(--ink);letter-spacing:-.02em;line-height:1;}
.donut .mid span{font-family:var(--mono);font-size:8.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin-top:5px;}
.legend-list{display:flex;flex-direction:column;gap:9px;flex:1;min-width:0;}
.legend-item{display:flex;align-items:center;gap:9px;font-size:12.5px;}
.legend-item .sw{width:8px;height:8px;flex:none;border-radius:1px;}
.legend-item .cnt{margin-left:auto;font-family:var(--mono);font-size:11.5px;color:var(--ink);}
.legend-item .pc{font-family:var(--mono);font-size:10.5px;color:var(--faint);width:34px;text-align:right;}

.prod{display:flex;flex-direction:column;gap:13px;padding-top:2px;}
.prod-row{display:grid;grid-template-columns:126px 1fr 44px;align-items:center;gap:12px;}
.prod-who{display:flex;align-items:center;gap:8px;min-width:0;}
.prod-who span{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.prod-track{height:6px;background:var(--line-soft);border-radius:1px;overflow:hidden;}
.prod-fill{height:100%;background:var(--brand);border-radius:1px;}
.prod-pc{font-family:var(--mono);font-size:11px;color:var(--ink);text-align:right;}

.av{width:26px;height:26px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;font-size:9.5px;font-weight:600;background:#E6EDEA;color:#2C4A46;}
.av.lg{width:38px;height:38px;font-size:12px;}
.av.sm{width:22px;height:22px;font-size:8.5px;}
.av.a1{background:#DEEFEC;color:#0E5F59;}
.av.a2{background:#E4EBF4;color:#2C5F8A;}
.av.a3{background:#F6E7DC;color:#9A4A24;}
.av.a4{background:#EBE6F3;color:#5A4B76;}
.av.a5{background:#E7EDE4;color:#42603A;}
.av.a6{background:#F2E6E9;color:#8A3F52;}
.av.a7{background:#E9ECEF;color:#48575E;}

.chip{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 8px;border-radius:2px;font-size:11px;font-weight:500;white-space:nowrap;}
.chip i{width:5px;height:5px;border-radius:50%;flex:none;}
.chip.s-concluida{background:var(--brand-soft);color:#0B5F59;}
.chip.s-concluida i{background:#12807A;}
.chip.s-andamento{background:var(--blue-soft);color:#26547A;}
.chip.s-andamento i{background:#2C5F8A;}
.chip.s-nao{background:var(--grey-soft);color:#5F6C72;}
.chip.s-nao i{background:#8A969B;}
.chip.s-atrasada{background:var(--rust-soft);color:#93401D;}
.chip.s-atrasada i{background:#B5562B;}
.chip.s-pendente{background:var(--violet-soft);color:#5A4B76;}
.chip.s-pendente i{background:#6B5C86;}

.prog{display:flex;align-items:center;gap:8px;}
.prog .track{height:4px;background:var(--line-soft);border-radius:1px;overflow:hidden;flex:1;min-width:44px;}
.prog .fill{height:100%;background:var(--brand);border-radius:1px;}
.prog .fill.warn{background:var(--rust);}
.prog .pc{font-family:var(--mono);font-size:11px;width:32px;text-align:right;}

.tbl{width:100%;border-collapse:collapse;}
.tbl th{text-align:left;font-family:var(--mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint);font-weight:500;padding:0 12px;height:34px;border-bottom:1px solid var(--line);background:#FCFCFB;white-space:nowrap;}
.tbl th:first-child,.tbl td:first-child{padding-left:18px;}
.tbl th:last-child,.tbl td:last-child{padding-right:18px;}
.tbl td{padding:11px 12px;border-bottom:1px solid var(--line-soft);vertical-align:middle;font-size:13px;}
.tbl tbody tr:hover{background:#FBFCFB;}
.tbl tbody tr:last-child td{border-bottom:0;}
.tbl .t-title{font-size:13px;color:var(--ink);font-weight:500;line-height:1.3;}
.tbl .t-sub{font-family:var(--mono);font-size:9.5px;color:var(--faint);letter-spacing:.05em;margin-top:3px;text-transform:uppercase;}
.tbl .who{display:flex;align-items:center;gap:8px;}
.tbl .who span{font-size:12.5px;white-space:nowrap;}
.tbl .dt{font-family:var(--mono);font-size:11.5px;color:var(--muted);white-space:nowrap;}
.tbl .dt.late{color:var(--rust);}
.tbl-click tbody tr{cursor:pointer;}

.toolbar{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--line);flex-wrap:wrap;}
.filter{display:flex;align-items:center;gap:7px;height:32px;padding:0 10px;border:1px solid var(--line);border-radius:3px;background:#fff;font-size:12.5px;}
.filter svg{width:12px;height:12px;color:var(--faint);}
.filter select{border:0;background:none;outline:none;font-size:12.5px;cursor:pointer;max-width:170px;}
.filter.on{border-color:#BBD9D5;background:#F5FAF9;}
.tb-search{display:flex;align-items:center;gap:7px;height:32px;padding:0 10px;flex:1;min-width:170px;border:1px solid var(--line);border-radius:3px;background:#fff;}
.tb-search svg{width:13px;height:13px;color:var(--faint);}
.tb-search input{border:0;background:none;outline:none;width:100%;font-size:12.5px;}
.tb-count{font-family:var(--mono);font-size:10px;color:var(--faint);letter-spacing:.08em;text-transform:uppercase;}

.kanban{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;align-items:start;}
.kb-col{background:#F5F7F6;border:1px solid var(--line-soft);border-radius:var(--r);padding:10px;min-height:220px;}
.kb-col.drag-over{background:#EDF4F2;border-color:#BBD9D5;}
.kb-head{display:flex;align-items:center;gap:7px;padding:2px 4px 10px;}
.kb-head .ct{margin-left:auto;font-family:var(--mono);font-size:10px;color:var(--faint);}
.kb-card{background:#fff;border:1px solid var(--line);border-radius:3px;padding:11px 12px;margin-bottom:8px;cursor:grab;box-shadow:0 1px 2px rgba(16,28,36,.03);}
.kb-card:hover{border-color:#C9D3CF;}
.kb-card.dragging{opacity:.45;}
.kb-card .kt{font-size:12.5px;font-weight:500;color:var(--ink);line-height:1.35;}
.kb-card .kp{font-family:var(--mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);margin-top:5px;}
.kb-card .kf{display:flex;align-items:center;gap:8px;margin-top:10px;}
.kb-card .kf .dt{font-family:var(--mono);font-size:10px;color:var(--muted);margin-left:auto;}
.kb-card .kf .dt.late{color:var(--rust);}
.kb-empty{border:1px dashed #D3DBD7;border-radius:3px;padding:14px;text-align:center;font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:#AEB9B5;}

/* gantt */
.gantt-toolbar{display:flex;align-items:center;gap:8px;padding:11px 14px;border-bottom:1px solid var(--line);flex-wrap:wrap;}
.gt-legend{display:flex;align-items:center;gap:14px;margin-left:auto;font-size:11px;color:var(--muted);flex-wrap:wrap;}
.gt-legend span{display:flex;align-items:center;gap:6px;}
.gt-legend .sw{width:14px;height:8px;border-radius:1px;}
.gt-legend .dm{width:8px;height:8px;background:var(--ink);transform:rotate(45deg);border-radius:1px;}
.gantt-scroll{overflow-x:auto;overflow-y:hidden;}
.gantt{position:relative;min-width:max-content;}
.g-head{display:flex;position:sticky;top:0;z-index:5;background:#FCFCFB;border-bottom:1px solid var(--line);}
.g-labels-h{width:330px;flex:none;border-right:1px solid var(--line);display:flex;align-items:flex-end;padding:0 14px 8px;font-family:var(--mono);font-size:8.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint);position:sticky;left:0;z-index:6;background:#FCFCFB;}
.g-months{display:flex;flex-direction:column;}
.g-month-row{display:flex;height:24px;border-bottom:1px solid var(--line-soft);}
.g-month-cell{display:flex;align-items:center;padding-left:10px;font-family:var(--mono);font-size:8.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink);border-right:1px solid var(--line-soft);white-space:nowrap;overflow:hidden;}
.g-days{display:flex;height:30px;}
.g-day{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;border-right:1px solid var(--line-soft);flex:none;}
.g-day b{font-family:var(--mono);font-size:10px;font-weight:500;color:var(--muted);line-height:1;}
.g-day span{font-family:var(--mono);font-size:7px;letter-spacing:.06em;text-transform:uppercase;color:#B0BBBE;}
.g-day.wk{background:#F4F6F5;}
.g-day.today{background:#FBF3EE;}
.g-day.today b{color:var(--rust);}
.g-body{position:relative;}
.g-row{display:flex;height:34px;position:relative;border-bottom:1px solid var(--line-soft);}
.g-row:hover{background:#FBFCFB;}
.g-row.phase{height:36px;background:#F8FAF9;border-bottom:1px solid var(--line);}
.g-row-l{width:330px;flex:none;border-right:1px solid var(--line);display:flex;align-items:center;gap:8px;padding:0 12px;position:sticky;left:0;z-index:3;background:#fff;}
.g-row.phase .g-row-l{background:#F8FAF9;}
.g-code{font-family:var(--mono);font-size:8.5px;color:var(--faint);flex:none;width:50px;}
.g-row.phase .g-code{color:var(--brand);}
.g-name{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.g-row.phase .g-name{font-family:var(--display);font-size:12px;font-weight:600;color:var(--ink);}
.g-canvas{position:relative;flex:1;}
.g-bar{position:absolute;top:50%;transform:translateY(-50%);height:16px;border-radius:2px;background:#DCEAE7;overflow:hidden;cursor:pointer;}
.g-bar .in{position:absolute;left:0;top:0;bottom:0;background:var(--brand);border-radius:1px;}
.g-bar.andamento{background:#D6E2EE;}.g-bar.andamento .in{background:var(--blue);}
.g-bar.atrasada{background:#F3D7C7;}.g-bar.atrasada .in{background:var(--rust);}
.g-bar.pendente{background:#E4DEF0;}.g-bar.pendente .in{background:var(--violet);}
.g-bar.nao{background:#E1E6E7;}.g-bar.nao .in{background:#C3CCCF;}
.g-bar.phase-bar{height:9px;background:#B9D6D2;}.g-bar.phase-bar .in{background:var(--brand-dark);}
.g-ms{position:absolute;top:50%;width:11px;height:11px;background:var(--ink);transform:translate(-50%,-50%) rotate(45deg);border-radius:1.5px;}
.g-ms-lbl{position:absolute;top:calc(50% + 8px);transform:translateX(-50%);font-family:var(--mono);font-size:8px;color:var(--muted);white-space:nowrap;}
.g-grid-lines{position:absolute;top:0;bottom:0;pointer-events:none;z-index:0;}
.g-weekend{position:absolute;top:0;bottom:0;background:#F7F9F8;}
.g-today-line{position:absolute;top:0;bottom:0;width:1.5px;background:var(--rust);opacity:.5;z-index:2;}
.g-arrows{position:absolute;top:0;pointer-events:none;overflow:visible;}

/* equipe */
.team-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;}
.tm{padding:16px 18px 15px;}
.tm-top{display:flex;align-items:flex-start;gap:11px;}
.tm-id{min-width:0;flex:1;}
.tm-id b{display:block;font-family:var(--display);font-size:14px;font-weight:600;color:var(--ink);letter-spacing:-.01em;}
.tm-id span{display:block;font-family:var(--mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);margin-top:3px;}
.tm-role{font-family:var(--mono);font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--line);border-radius:2px;padding:3px 6px;color:var(--muted);flex:none;}
.tm-role.admin{background:var(--ink);color:#fff;border-color:var(--ink);}
.tm-role.gestor{background:var(--brand-soft);color:var(--brand-dark);border-color:#CDE5E1;}
.tm-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:15px;padding-top:13px;border-top:1px solid var(--line-soft);}
.tm-metrics b{display:block;font-family:var(--display);font-size:18px;font-weight:600;color:var(--ink);letter-spacing:-.02em;line-height:1;}
.tm-metrics span{display:block;font-family:var(--mono);font-size:8px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);margin-top:5px;}
.tm-cap{margin-top:14px;}
.tm-cap .lbl{display:flex;justify-content:space-between;font-family:var(--mono);font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);margin-bottom:6px;}
.tm-cap .tr{height:5px;background:var(--line-soft);border-radius:1px;overflow:hidden;}
.tm-cap .fl{height:100%;background:var(--brand);}
.tm-cap .fl.hi{background:var(--rust);}

/* relatório */
.rep-grid{display:grid;grid-template-columns:290px 1fr;gap:14px;align-items:start;}
.rep-opt .row{display:flex;align-items:center;justify-content:space-between;padding:10px 18px;border-bottom:1px solid var(--line-soft);font-size:12.5px;}
.rep-opt .row span{color:var(--muted);}
.rep-opt .pad{padding:12px 18px 14px;}
.sheet-preview{background:#fff;border:1px solid var(--line);border-radius:3px;padding:22px 24px;box-shadow:var(--shadow);overflow:hidden;}
.sp-head{display:flex;align-items:flex-start;justify-content:space-between;border-bottom:2px solid var(--ink);padding-bottom:12px;margin-bottom:16px;}
.sp-head .k{font-family:var(--mono);font-size:8.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--faint);}
.sp-head h4{font-family:var(--display);font-size:19px;font-weight:600;color:var(--ink);letter-spacing:-.02em;margin-top:5px;}
.sp-head .d{font-family:var(--mono);font-size:10px;color:var(--muted);text-align:right;}
.sp-tbl{width:100%;border-collapse:collapse;table-layout:fixed;}
.sp-tbl th{font-family:var(--mono);font-size:8px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);text-align:left;padding:6px 8px;border-bottom:1px solid var(--line);font-weight:500;}
.sp-tbl td{padding:8px;border-bottom:1px solid var(--line-soft);font-size:11.5px;vertical-align:middle;overflow:hidden;text-overflow:ellipsis;}
.sp-bar{height:9px;border-radius:1px;background:#DDEBEA;position:relative;min-width:50px;}
.sp-bar i{position:absolute;left:0;top:0;bottom:0;background:var(--brand);border-radius:1px;}
.sp-bar.rust{background:#F3D7C7;}.sp-bar.rust i{background:var(--rust);}

.perm-yes{color:var(--brand);font-weight:600;}
.perm-no{color:#C6CFD1;}
.perm-part{font-family:var(--mono);font-size:9px;color:var(--muted);background:#F2F5F4;padding:2px 5px;border-radius:2px;}
.role-pill{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;padding:3px 7px;border-radius:2px;}
.role-pill.admin{background:var(--ink);color:#fff;}
.role-pill.gestor{background:var(--brand-soft);color:var(--brand-dark);}
.role-pill.colaborador{background:var(--grey-soft);color:#5F6C72;}

/* drawer */
.scrim{position:fixed;inset:0;background:rgba(16,28,36,.38);z-index:80;opacity:0;transition:opacity .18s;backdrop-filter:blur(1px);}
.scrim.on{opacity:1;}
.drawer{position:fixed;top:0;right:0;bottom:0;width:560px;max-width:94vw;background:#fff;z-index:81;display:flex;flex-direction:column;transform:translateX(100%);transition:transform .22s cubic-bezier(.3,.7,.3,1);box-shadow:-24px 0 60px -30px rgba(16,28,36,.5);border-left:1px solid var(--line);}
.drawer.on{transform:none;}
.dw-head{padding:18px 22px 0;border-bottom:1px solid var(--line);}
.dw-top{display:flex;align-items:center;gap:10px;}
.dw-code{font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:var(--faint);}
.dw-x{margin-left:auto;width:30px;height:30px;border-radius:3px;display:flex;align-items:center;justify-content:center;color:var(--faint);}
.dw-x:hover{background:#F2F5F4;color:var(--ink);}
.dw-head h2{font-family:var(--display);font-size:20px;font-weight:600;letter-spacing:-.02em;color:var(--ink);margin:9px 0 10px;line-height:1.25;}
.dw-meta{display:flex;align-items:center;gap:9px;padding-bottom:14px;flex-wrap:wrap;}
.dw-tabs{display:flex;gap:2px;padding:0 22px;border-bottom:1px solid var(--line);}
.dw-tab{height:38px;padding:0 12px;font-size:12.5px;color:var(--muted);border-bottom:2px solid transparent;display:flex;align-items:center;gap:6px;}
.dw-tab.on{color:var(--ink);border-bottom-color:var(--brand);font-weight:500;}
.dw-tab .c{font-family:var(--mono);font-size:9.5px;color:var(--faint);}
.dw-body{flex:1;overflow-y:auto;padding:20px 22px 26px;}
.dw-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:18px;}
.dw-f .k{font-family:var(--mono);font-size:8.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin-bottom:4px;}
.dw-f .v{font-size:13px;color:var(--ink);}
.dw-f .v.mono{font-family:var(--mono);font-size:12px;}
.dw-sec{margin-top:18px;}
.dw-sec>.k{font-family:var(--mono);font-size:8.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint);margin-bottom:9px;display:flex;align-items:center;gap:8px;}
.dw-sec>.k::after{content:"";flex:1;height:1px;background:var(--line-soft);}
.dw-desc{font-size:13.5px;line-height:1.6;}
.cmt{display:flex;gap:10px;margin-bottom:14px;}
.cmt .bd{flex:1;min-width:0;}
.cmt .bd .hd{display:flex;align-items:baseline;gap:7px;}
.cmt .bd .hd b{font-size:12.5px;font-weight:600;color:var(--ink);}
.cmt .bd .hd span{font-family:var(--mono);font-size:9.5px;color:var(--faint);}
.cmt .bd p{font-size:12.5px;line-height:1.55;margin-top:4px;white-space:pre-wrap;}
.cmt-input{display:flex;gap:8px;margin-top:14px;padding-top:14px;border-top:1px solid var(--line-soft);}
.cmt-input input{flex:1;height:36px;border:1px solid var(--line);border-radius:3px;padding:0 11px;font-size:12.5px;}
.cmt-input input:focus{outline:none;border-color:var(--brand);}
.tl{position:relative;padding-left:18px;}
.tl::before{content:"";position:absolute;left:4px;top:4px;bottom:6px;width:1px;background:var(--line);}
.tl-item{position:relative;padding-bottom:14px;}
.tl-item::before{content:"";position:absolute;left:-17px;top:4px;width:7px;height:7px;border-radius:50%;background:#fff;border:1.5px solid #C2CDCA;}
.tl-item.hl::before{background:var(--brand);border-color:var(--brand);}
.tl-item .t{font-family:var(--mono);font-size:9.5px;color:var(--faint);}
.tl-item .d{font-size:12.5px;margin-top:3px;line-height:1.5;}
.tl-item .d b{font-weight:600;color:var(--ink);}
.dw-foot{padding:13px 22px;border-top:1px solid var(--line);display:flex;align-items:center;gap:8px;background:#FCFCFB;}
.dw-foot .grow{flex:1;}

/* modal */
.modal-scrim{position:fixed;inset:0;background:rgba(16,28,36,.42);z-index:90;display:flex;align-items:flex-start;justify-content:center;padding:6vh 20px 20px;overflow-y:auto;backdrop-filter:blur(1px);}
.modal{background:#fff;border-radius:5px;width:100%;max-width:560px;box-shadow:0 40px 80px -40px rgba(16,28,36,.7);animation:min .18s ease;}
@keyframes min{from{opacity:0;transform:translateY(-6px);}to{opacity:1;transform:none;}}
.modal.wide{max-width:680px;}
.modal-h{display:flex;align-items:flex-start;justify-content:space-between;padding:18px 22px 0;}
.modal-h h3{font-family:var(--display);font-size:18px;font-weight:600;color:var(--ink);letter-spacing:-.015em;}
.modal-h p{font-size:12.5px;color:var(--muted);margin-top:4px;}
.modal-b{padding:18px 22px 6px;}
.modal-f{padding:14px 22px 18px;display:flex;justify-content:flex-end;gap:8px;border-top:1px solid var(--line-soft);margin-top:12px;}

.toast-wrap{position:fixed;bottom:22px;right:22px;z-index:100;display:flex;flex-direction:column;gap:8px;align-items:flex-end;}
.toast{background:var(--ink);color:#fff;padding:11px 15px;border-radius:3px;font-size:12.5px;display:flex;align-items:center;gap:9px;box-shadow:0 12px 30px -12px rgba(16,28,36,.7);animation:tin .2s ease;max-width:360px;}
.toast .dot{width:6px;height:6px;background:#5FC6BA;border-radius:50%;flex:none;}
.toast.err .dot{background:#E2825D;}
@keyframes tin{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}

.empty{padding:40px;text-align:center;color:var(--faint);font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;}
.note{background:#FFFDF7;border:1px solid #EFE6CE;color:#7A6435;border-radius:3px;padding:10px 14px;font-size:12px;margin-bottom:16px;}

@media (max-width:1180px){
  .kpis{grid-template-columns:repeat(2,1fr);}
  .grid-2,.grid-2b{grid-template-columns:1fr;}
  .team-grid{grid-template-columns:repeat(2,1fr);}
  .kanban{grid-template-columns:repeat(3,minmax(0,1fr));}
  .rep-grid{grid-template-columns:1fr;}
}
@media (max-width:900px){
  .app{grid-template-columns:1fr;}
  .rail{display:none;}
  .login{grid-template-columns:1fr;}
  .login-left{display:none;}
  .team-grid,.kanban,.kpis{grid-template-columns:1fr;}
  .content{padding:18px 16px 40px;}
  .topbar{padding:0 16px;}
  .searchbox{display:none;}
  .field-row{grid-template-columns:1fr;}
}

@media print{
  .rail,.topbar,.page-actions,.toolbar,.no-print{display:none!important;}
  .app{display:block;}
  .content{padding:0;}
  .card,.sheet-preview{box-shadow:none;border:0;}
  body{background:#fff;}
}
