:root{
  --asphalt:#1d1a17;--asphalt2:#2a2621;--line-d:#3a352e;--paper:#f3efe7;--card:#fffdf8;--line:#e2dacb;--ink:#26221d;--mut:#7b7266;
  --yellow:#f2b21b;--orange:#e8651e;--green:#3f8f4a;--red:#c0392b;--blue:#2f73c9;
  --r:10px;--shadow:0 1px 0 rgba(0,0,0,.04),0 6px 20px -12px rgba(40,30,10,.35);
  --cond:'Barlow Condensed',system-ui,sans-serif;--body:'Barlow',system-ui,sans-serif;
}
*{box-sizing:border-box}
html,body,#app{margin:0;height:100%;background:var(--paper);color:var(--ink);font:15px/1.45 var(--body)}
button,input,select,textarea{font:inherit;color:inherit}
.num{font-variant-numeric:tabular-nums}
h1,h2,h3,h4{font-family:var(--cond);letter-spacing:.01em;margin:0 0 .5em;line-height:1.15}
h2{font-size:26px}h3{font-size:20px}h4{font-size:16px;text-transform:uppercase;letter-spacing:.06em;color:var(--mut)}
a{color:var(--orange)}
.muted{color:var(--mut)}.small{font-size:13px}.good{color:var(--green)}.bad{color:var(--red)}.warn{color:#b26a00}
.hidden{display:none!important}

/* ---------- auth ---------- */
.auth{min-height:100%;display:grid;grid-template-columns:1.1fr 1fr;background:var(--asphalt)}
.auth-art{position:relative;overflow:hidden;background:
  repeating-linear-gradient(-45deg,var(--yellow) 0 22px,var(--asphalt) 22px 44px) top/100% 16px no-repeat,
  radial-gradient(120% 80% at 30% 110%,#6b4b2a 0,#3a2a1b 45%,var(--asphalt) 75%)}
.auth-art .brand{position:absolute;left:48px;bottom:56px;right:48px;color:#fff}
.brand-mark{font-family:var(--cond);font-weight:800;font-size:64px;line-height:.9;text-transform:uppercase;letter-spacing:-.01em}
.brand-mark span{color:var(--yellow)}
.auth-art p{font-size:19px;color:#d9cfbf;max-width:420px}
.auth-form{display:flex;align-items:center;justify-content:center;padding:32px;background:var(--paper)}
.auth-form form{width:100%;max-width:360px}
.field{display:block;margin-bottom:12px}.field span{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--mut);margin-bottom:4px}
input[type=text],input[type=password],input[type=number],input[type=search],select,textarea{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:#fff}
input:focus,select:focus,textarea:focus{outline:2px solid var(--yellow);outline-offset:0;border-color:var(--yellow)}
.btn{display:inline-flex;align-items:center;gap:6px;justify-content:center;border:0;border-radius:8px;padding:9px 15px;background:var(--ink);color:#fff;cursor:pointer;font-weight:600;white-space:nowrap}
.btn:hover{filter:brightness(1.15)}.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.y{background:var(--yellow);color:var(--asphalt)}.btn.o{background:var(--orange)}.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
.btn.sm{padding:5px 10px;font-size:13px}.btn.block{width:100%}.btn.red{background:var(--red)}
.linkbtn{background:none;border:0;color:var(--orange);cursor:pointer;padding:0;text-decoration:underline}
.lang-pick{display:flex;gap:6px;margin-top:18px}.lang-pick button{border:1px solid var(--line);background:#fff;border-radius:6px;padding:4px 9px;cursor:pointer}
.lang-pick button.on{background:var(--ink);color:#fff;border-color:var(--ink)}

/* ---------- shell ---------- */
.shell{display:grid;grid-template-columns:200px 1fr;grid-template-rows:auto 1fr;height:100%}
.top{grid-column:1/3;display:flex;align-items:center;gap:18px;padding:8px 16px;background:var(--asphalt);color:#fff;border-bottom:4px solid var(--yellow);flex-wrap:wrap;min-height:58px}
.top .co{font-family:var(--cond);font-size:22px;font-weight:700;white-space:nowrap}
.top .co small{display:block;font-family:var(--body);font-size:12px;color:#bdb3a4;font-weight:400}
.kpi{display:flex;flex-direction:column;line-height:1.1}.kpi span{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:#a89e8f}.kpi b{font-family:var(--cond);font-size:20px;font-variant-numeric:tabular-nums}
.kpi b.neg{color:#ff8a7a}.kpi.gold b{color:var(--yellow)}
.lvlbar{width:120px;height:6px;background:#463f36;border-radius:3px;margin-top:4px;overflow:hidden}.lvlbar i{display:block;height:100%;background:var(--yellow)}
.top .sp{flex:1}
.top select{width:auto;background:var(--asphalt2);color:#fff;border-color:var(--line-d);padding:5px 8px}
.side{background:var(--asphalt2);padding:10px 8px;overflow-y:auto}
.side button{display:flex;align-items:center;gap:10px;width:100%;padding:9px 11px;border:0;background:transparent;color:#d6ccbc;border-radius:8px;cursor:pointer;text-align:left;font-weight:600}
.side button:hover{background:#38322b;color:#fff}.side button.on{background:var(--yellow);color:var(--asphalt)}
.side button .ic{width:20px;text-align:center}.side .badge{margin-left:auto;background:var(--orange);color:#fff;border-radius:10px;padding:0 7px;font-size:12px}
.main{position:relative;overflow:hidden}
.view{position:absolute;inset:0;overflow-y:auto;padding:20px 24px 60px}
.view.map-view{padding:0;overflow:hidden}
#map{position:absolute;inset:0;background:#d8d2c6}
.banner{background:#fff4d6;border:1px solid #f0d58a;padding:8px 12px;border-radius:8px;margin-bottom:12px}

/* ---------- cards e tabelas ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;margin-bottom:14px;box-shadow:var(--shadow)}
.grid2{display:grid;grid-template-columns:repeat(auto-fill,minmax(430px,1fr));gap:14px}
.tbl td.num,.tbl td.r{white-space:nowrap}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.row.between{justify-content:space-between}
.tbl{width:100%;border-collapse:collapse}.tbl th,.tbl td{padding:7px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
.tbl th{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--mut);font-weight:600}
.tbl td.r,.tbl th.r{text-align:right}.tbl tr.locked{opacity:.45}
.tbl-wrap{overflow-x:auto}
.pill{display:inline-block;border-radius:999px;padding:1px 9px;font-size:12px;font-weight:600;background:#ece5d8}
.pill.t1{background:#dcedc8}.pill.t2{background:#f0f4c3}.pill.t3{background:#ffecb3}.pill.t4{background:#ffe0b2}.pill.t5{background:#ffccbc}.pill.t6{background:#f8bbd0}
.pill.ok{background:#d7efd9;color:#25622d}.pill.bad{background:#f8d7d3;color:#8c2318}.pill.work{background:#ffe9a8;color:#6b4a00}.pill.mob{background:#d6e6fb;color:#1c4f91}
.bar{height:10px;border-radius:5px;background:#e8e1d3;overflow:hidden}.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--yellow),var(--orange))}
.wear{height:6px;border-radius:3px;background:#e8e1d3;overflow:hidden;width:80px;display:inline-block;vertical-align:middle}.wear i{display:block;height:100%}
.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;font-size:14px}.kv dt{color:var(--mut)}.kv dd{margin:0;font-variant-numeric:tabular-nums}
.empty{padding:40px;text-align:center;color:var(--mut)}
.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{background:#efe8da;border-radius:6px;padding:3px 8px;font-size:13px}

/* ---------- painel do contrato no mapa ---------- */
.mpanel{position:absolute;top:12px;right:12px;bottom:12px;width:min(440px,calc(100% - 24px));background:var(--card);border-radius:var(--r);box-shadow:0 10px 40px -10px rgba(0,0,0,.45);z-index:500;display:flex;flex-direction:column;overflow:hidden}
.mpanel header{padding:14px 16px;background:var(--asphalt);color:#fff;position:relative}
.mpanel header h3{margin:0;color:#fff}.mpanel header .x{position:absolute;right:10px;top:10px;background:none;border:0;color:#fff;font-size:22px;cursor:pointer}
.mpanel .body{padding:14px 16px;overflow-y:auto}
.est{border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin-bottom:10px}
.est.best{border-color:var(--yellow);box-shadow:0 0 0 2px #f2b21b44}
.maplegend{position:absolute;left:12px;bottom:22px;z-index:400;background:rgba(255,253,248,.95);border-radius:8px;padding:8px 10px;font-size:12px;box-shadow:var(--shadow)}
.maplegend i{display:inline-block;width:10px;height:10px;border-radius:50%;margin:0 4px 0 8px;vertical-align:middle}
.maptools{position:absolute;left:56px;top:12px;z-index:400;display:flex;gap:6px}
.maptools .btn{box-shadow:var(--shadow)}
.mk{font-size:20px;line-height:1;text-shadow:0 1px 3px #000a;text-align:center}
.mk.team{font-size:18px}.mk.other{filter:grayscale(1);opacity:.75;font-size:15px}

/* ---------- obras ---------- */
.job{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(260px,1fr);gap:16px}
.job canvas{width:100%;border-radius:10px;display:block;background:#dfe9ea;box-shadow:inset 0 0 0 1px rgba(0,0,0,.06)}
.job canvas:fullscreen{border-radius:0}
.phases{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:6px;margin:8px 0}
.phase{background:#f3ede1;border-radius:6px;padding:6px 8px;font-size:12px}.phase b{display:block;font-size:15px;font-family:var(--cond)}.phase.neck{background:#ffe1cc;outline:1px solid var(--orange)}

/* ---------- toasts e modal ---------- */
#toasts{position:fixed;right:16px;bottom:16px;z-index:2000;display:flex;flex-direction:column;gap:8px;max-width:380px}
.toast{background:var(--asphalt);color:#fff;padding:10px 14px;border-radius:8px;box-shadow:0 8px 24px -8px #000a;border-left:4px solid var(--yellow);animation:tin .25s ease}
.toast.err{border-left-color:var(--red)}.toast.good{border-left-color:#5fbf6a}
@keyframes tin{from{transform:translateY(10px);opacity:0}}
.modal-bg{position:fixed;inset:0;background:rgba(20,16,12,.55);z-index:1500;display:flex;align-items:center;justify-content:center;padding:16px}
.modal{background:var(--card);border-radius:var(--r);max-width:520px;width:100%;padding:20px;max-height:90vh;overflow:auto}

/* ---------- setup da sede ---------- */
.setup{position:absolute;inset:0;display:grid;grid-template-rows:auto 1fr}
.setup .bar-top{padding:14px 18px;background:var(--asphalt);color:#fff;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.setup .bar-top input{max-width:360px}
.setup .bar-top h3{margin:0;color:#fff}
#setupMap{position:relative}

.chat{display:flex;flex-direction:column;height:calc(100vh - 170px);min-height:320px}
.chat .msgs{flex:1;overflow-y:auto;background:#fff;border:1px solid var(--line);border-radius:8px;padding:10px}
.chat .m{margin-bottom:6px}.chat .m b{color:var(--orange)}.chat .m time{color:var(--mut);font-size:11px;margin-left:6px}
.ach{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px}
.ach div{background:#fff;border:1px dashed var(--line);border-radius:8px;padding:12px;text-align:center;color:var(--mut)}
.ach div.on{border:1px solid var(--yellow);background:#fff8e1;color:var(--ink)}.ach div .ic{font-size:28px;display:block}
.pkg{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.pkg .card{text-align:center}.pkg .g{font-family:var(--cond);font-size:34px;color:#b8860b}

@media (max-width:820px){
  .auth{grid-template-columns:1fr}.auth-art{min-height:220px}.auth-art .brand{bottom:24px;left:24px}.brand-mark{font-size:44px}
  .shell{grid-template-columns:1fr;grid-template-rows:auto auto 1fr}
  .side{display:flex;overflow-x:auto;padding:6px;gap:4px}.side button{width:auto;flex:0 0 auto;padding:7px 10px}.side button .lb{display:none}
  .view{padding:14px 12px 60px}.job{grid-template-columns:1fr}.grid2{grid-template-columns:1fr}
  .top{gap:10px}.kpi b{font-size:17px}.lvlbar{width:70px}
}

.deed{border:3px double #8a6d3b;padding:18px;background:#fffaf0;font-family:Georgia,'Times New Roman',serif}
.deed-h{font-size:22px;text-align:center;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#5a4320;margin-bottom:6px}
@media print{body.printing *{visibility:hidden}body.printing .modal-bg{position:static;background:none}body.printing #deedDoc,body.printing #deedDoc *{visibility:visible}body.printing #deedDoc{position:absolute;left:0;top:0;width:100%}}
.pkg .btn{white-space:normal;line-height:1.25}

.comps{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:4px 10px;margin:6px 0}
.comps div{font-size:11px;color:var(--mut)}.comps i{display:block;height:5px;background:#e8e1d3;border-radius:3px;overflow:hidden;margin-top:2px}.comps b{display:block;height:100%}
.rate button{background:none;border:0;color:#d4a017;font-size:18px;cursor:pointer;padding:0 1px}.rate button:hover{transform:scale(1.2)}
.wa{display:grid;grid-template-columns:300px 1fr;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;height:calc(100vh - 230px);min-height:380px;background:#fff}
.wa-list{border-right:1px solid var(--line);overflow-y:auto;background:#fbfaf7}.wa-item{padding:10px 12px;border-bottom:1px solid var(--line);cursor:pointer}.wa-item:hover,.wa-item.on{background:#eef7ee}
.wa-item .badge,.btn .badge{background:#25d366;color:#fff;border-radius:10px;padding:0 6px;font-size:11px}.dot{display:inline-block;width:8px;height:8px;background:#25d366;border-radius:50%}
.wa-chat{display:flex;flex-direction:column;background:#efeae2}.wa-head{padding:10px 14px;background:#f0f2f5;border-bottom:1px solid var(--line);font-weight:600}
.wa-msgs{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:6px}
.bub{max-width:75%;background:#fff;padding:7px 10px;border-radius:8px;box-shadow:0 1px 1px #0001;font-size:14px}.bub.me{align-self:flex-end;background:#d9fdd3}
.bub .meta{display:block;text-align:right;font-size:10px;color:#667781;margin-top:2px}.bub .blue{color:#53bdeb}
.mail{border-bottom:1px solid var(--line);padding:6px 0}.mail.unread summary{font-weight:700}.mail summary{cursor:pointer}.mail-body{padding:8px 4px;font-size:14px}
.mail-body.paper{background:#fffaf0;border:1px solid #e8dcc0;font-family:Georgia,serif;padding:14px;margin-top:6px}
.radio{background:#2b2a26;color:#e7e2d6;border-color:#111}.radio .muted{color:#a9a294}.lcd{background:#9fb38a;color:#1a2a12;font-family:monospace;padding:4px 10px;border-radius:4px;font-size:15px}
.radio-feed{background:#1d1c19;border-radius:6px;padding:10px;max-height:340px;overflow-y:auto;font-family:monospace;font-size:13px;margin-top:8px}.radio-feed div{margin-bottom:4px}
.callbox{position:fixed;right:16px;top:76px;z-index:1800;width:320px;background:var(--asphalt);color:#fff;border-radius:12px;padding:14px;box-shadow:0 14px 40px -10px #000c;border:2px solid var(--yellow)}
.callbox .ring{font-size:34px;animation:ring .6s infinite alternate;display:inline-block}.call-lines{max-height:180px;overflow-y:auto;background:#00000033;border-radius:6px;padding:6px;margin:8px 0;font-size:13px}
@keyframes ring{from{transform:rotate(-15deg)}to{transform:rotate(15deg)}}
@media (max-width:820px){.wa{grid-template-columns:1fr;height:auto}.wa-list{max-height:220px}.callbox{left:12px;right:12px;width:auto}}
