/* ===== EmpregaCampo — Design System v2 ===== */
:root{
  --green-900:#10301c; --green-800:#184026; --green-700:#1f5634; --green-600:#2a7d49;
  --green-500:#37a05d; --green-400:#5cbb7e; --green-100:#dcefe3; --green-50:#eef9f1;
  --amber:#c8841a; --amber-600:#b5751a; --amber-100:#fbeed4; --amber-50:#fdf6e8;
  --ink:#16221d; --ink-2:#33453c; --muted:#69786f; --line:#e6ece8; --line-2:#d6ded9;
  --bg:#f4f7f4; --surface:#ffffff; --surface-2:#f9fbf9;
  --danger:#c0392b; --danger-bg:#fceae8; --danger-line:#f0ccc6;
  --warn:#b5751a; --warn-bg:#fbeed4; --ok:#2a7d49; --ok-bg:#dcefe3;
  --r-lg:16px; --r:12px; --r-sm:9px; --r-xs:7px;
  --sh-sm:0 1px 2px rgba(16,48,28,.05),0 1px 3px rgba(16,48,28,.04);
  --sh:0 2px 6px rgba(16,48,28,.05),0 8px 24px rgba(16,48,28,.06);
  --sh-lg:0 16px 48px rgba(16,48,28,.16);
  --ring:0 0 0 3px var(--green-100);
  --t:.18s cubic-bezier(.4,0,.2,1);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0; font-family:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  color:var(--ink); background:var(--bg); line-height:1.55; min-height:100vh;
  display:flex; flex-direction:column; -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility}
a{color:var(--green-700); text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{margin:0 0 .4em; line-height:1.18; letter-spacing:-.015em; font-weight:750}
h1{font-size:1.9rem} h2{font-size:1.35rem} h3{font-size:1.08rem}
p{margin:0 0 .6em}
.muted{color:var(--muted)} .small{font-size:.82rem}
.center{text-align:center;margin-top:1rem} .mt{margin-top:1.4rem}
.container{width:100%; max-width:1140px; margin:0 auto; padding:0 20px}
.view{flex:1; min-height:60vh}
.section{padding:34px 0} .narrow{max-width:780px}
:focus-visible{outline:none; box-shadow:var(--ring); border-radius:var(--r-xs)}
::selection{background:var(--green-100)}

/* ===== Topbar ===== */
.topbar{position:sticky; top:0; z-index:40; background:rgba(255,255,255,.88);
  backdrop-filter:saturate(1.2) blur(10px); border-bottom:1px solid var(--line)}
.topbar-inner{display:flex; align-items:center; gap:18px; height:66px}
.brand{display:flex; align-items:center; gap:9px; font-weight:800; font-size:1.18rem; color:var(--green-800); letter-spacing:-.02em}
.brand:hover{text-decoration:none}
.brand b{color:var(--green-600)}
.brand-ic{display:inline-flex; align-items:center; justify-content:center; width:32px; height:32px;
  background:linear-gradient(140deg,var(--green-500),var(--green-700)); border-radius:9px; font-size:1.05rem;
  box-shadow:var(--sh-sm)}
.topnav{display:flex; gap:4px; flex:1}
.nav-link{padding:8px 13px; border-radius:9px; color:var(--ink-2); font-weight:550; font-size:.94rem; transition:var(--t)}
.nav-link:hover{background:var(--green-50); text-decoration:none; color:var(--green-700)}
.nav-link.active{background:var(--green-50); color:var(--green-700)}
.topbar-actions{display:flex; align-items:center; gap:8px}
.nav-toggle{display:none; width:42px; height:38px; border:1px solid var(--line); background:#fff;
  border-radius:9px; cursor:pointer; flex-direction:column; gap:4px; align-items:center; justify-content:center}
.nav-toggle span{width:18px; height:2px; background:var(--ink-2); border-radius:2px; transition:var(--t)}
.nav-toggle.open span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.nav-toggle.open span:nth-child(2){opacity:0}
.nav-toggle.open span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}
.mobile-menu{display:none}

/* ===== Impersonation bar ===== */
.imp-bar{background:linear-gradient(90deg,var(--amber-600),var(--amber)); color:#fff}
.imp-inner{display:flex; align-items:center; justify-content:center; gap:14px; flex-wrap:wrap;
  padding:9px 20px; font-size:.9rem; font-weight:600}
.imp-inner button{background:rgba(255,255,255,.18); color:#fff; border:1px solid rgba(255,255,255,.4);
  padding:5px 12px; border-radius:99px; cursor:pointer; font:inherit; font-weight:700; transition:var(--t)}
.imp-inner button:hover{background:rgba(255,255,255,.3)}

/* ===== Buttons ===== */
.btn{display:inline-flex; align-items:center; justify-content:center; gap:7px;
  padding:10px 18px; border-radius:10px; border:1px solid transparent; cursor:pointer;
  font-size:.93rem; font-weight:650; font-family:inherit; transition:var(--t); white-space:nowrap; line-height:1.1}
.btn:hover{text-decoration:none} .btn:active{transform:translateY(1px)}
.btn-primary{background:linear-gradient(180deg,var(--green-500),var(--green-600)); color:#fff; box-shadow:var(--sh-sm)}
.btn-primary:hover{background:linear-gradient(180deg,var(--green-600),var(--green-700))}
.btn-ghost{background:#fff; color:var(--green-700); border-color:var(--line-2)}
.btn-ghost:hover{background:var(--green-50); border-color:var(--green-100)}
.btn-warn{background:var(--warn); color:#fff} .btn-warn:hover{filter:brightness(.96)}
.btn-danger-ghost{background:#fff; color:var(--danger); border-color:var(--danger-line)}
.btn-danger-ghost:hover{background:var(--danger-bg)}
.btn-block{width:100%} .btn-lg{padding:13px 26px; font-size:1.02rem; border-radius:11px}
.btn-sm{padding:7px 13px; font-size:.84rem} .btn-xs{padding:5px 10px; font-size:.78rem}
.btn:disabled{opacity:.55; cursor:default; transform:none}
.link{color:var(--green-700); font-weight:650; font-size:.92rem; cursor:pointer}
.link:hover{color:var(--green-800)} .back{display:inline-block; margin-bottom:.7rem}

/* ===== Cards ===== */
.card{background:var(--surface); border:1px solid var(--line); border-radius:var(--r-lg);
  box-shadow:var(--sh-sm); padding:20px}
.section-head{display:flex; align-items:center; justify-content:space-between; gap:12px; margin:1.5rem 0 .9rem}
.page-head{display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:1.3rem; flex-wrap:wrap}

/* ===== Hero ===== */
.hero{position:relative; overflow:hidden; color:#fff; padding:60px 0 64px;
  background:radial-gradient(1200px 400px at 80% -10%,rgba(92,187,126,.45),transparent),
             linear-gradient(135deg,var(--green-800),var(--green-600))}
.hero::after{content:""; position:absolute; inset:0; opacity:.07; pointer-events:none;
  background-image:radial-gradient(circle at 20% 30%,#fff 1.5px,transparent 1.6px),
    radial-gradient(circle at 60% 70%,#fff 1.5px,transparent 1.6px); background-size:46px 46px}
.hero-inner{position:relative; display:grid; grid-template-columns:1.45fr 1fr; gap:42px; align-items:center}
.hero-text h1{font-size:2.7rem; color:#fff; margin-bottom:.25em; line-height:1.08}
.hero-text p{font-size:1.13rem; color:#dcefe2; max-width:30em}
.hero-cta{display:flex; gap:12px; margin:1.4rem 0 1.9rem; flex-wrap:wrap}
.hero .btn-ghost{background:rgba(255,255,255,.14); color:#fff; border-color:rgba(255,255,255,.32); backdrop-filter:blur(4px)}
.hero .btn-ghost:hover{background:rgba(255,255,255,.24)}
.hero-stats{display:flex; gap:30px}
.hero-stats b{display:block; font-size:1.75rem; line-height:1; font-weight:800}
.hero-stats span{color:#cfe7d7; font-size:.85rem}
.hero-card{position:relative; background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.22);
  border-radius:18px; padding:22px; backdrop-filter:blur(6px); box-shadow:var(--sh-lg)}
.hc-row{display:flex; align-items:center; gap:13px; padding:14px; background:rgba(255,255,255,.12);
  border-radius:12px; margin-bottom:10px; font-weight:650; font-size:1.02rem; transition:var(--t)}
.hc-row:hover{background:rgba(255,255,255,.2); transform:translateX(3px)}
.hc-row span{font-size:1.4rem} .hc-row:last-child{margin-bottom:0}

/* ===== Grids ===== */
.grid{display:grid; gap:16px}
.grid-jobs{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr))}
.grid-cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,265px),1fr))}
.grid-2{display:grid; grid-template-columns:1fr 1fr; gap:14px}
.grid-span{grid-column:1/-1}
.dash-grid{display:grid; grid-template-columns:340px 1fr; gap:20px; align-items:start}

/* ===== Job card ===== */
.job-card{cursor:pointer; position:relative; display:flex; flex-direction:column; gap:8px; padding-left:22px; transition:var(--t)}
.job-card::before{content:""; position:absolute; left:0; top:0; bottom:0; width:5px; border-radius:var(--r-lg) 0 0 var(--r-lg); background:var(--line-2)}
.job-card.acc-clt::before{background:linear-gradient(var(--green-500),var(--green-600))}
.job-card.acc-empreitada::before{background:linear-gradient(#e0922f,var(--amber-600))}
.job-card.acc-diaria::before{background:linear-gradient(#e8b93a,#caa11f)}
.job-card:hover{box-shadow:var(--sh-lg); transform:translateY(-3px); border-color:var(--green-100)}
.job-top{display:flex; gap:6px; flex-wrap:wrap; align-items:center}
.job-title{font-size:1.12rem; margin:0; letter-spacing:-.01em}
.job-company{color:var(--green-700); font-weight:650; font-size:.9rem}
.job-meta{display:flex; gap:14px; flex-wrap:wrap; color:var(--muted); font-size:.85rem}
.job-desc{color:var(--ink-2); font-size:.9rem; flex:1; margin:.2rem 0}
.job-foot{display:flex; align-items:center; justify-content:space-between; gap:10px;
  border-top:1px solid var(--line); padding-top:12px; margin-top:4px}
.job-pay{font-weight:750; color:var(--green-800)}
.job-actions{display:flex; align-items:center; gap:8px}
.job-detail{border-left:5px solid var(--green-500)}
.job-detail-desc{white-space:pre-wrap; margin:1rem 0; color:var(--ink-2)}
.kv{display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:12px; margin:1rem 0}
.kv>div{background:var(--green-50); border-radius:10px; padding:11px 13px}
.kv span{display:block; font-size:.76rem; color:var(--muted)} .kv b{font-size:1rem}
.detail-actions{display:flex; gap:10px; border-top:1px solid var(--line); padding-top:14px; flex-wrap:wrap}

/* ===== Badges / chips / pills ===== */
.badge{display:inline-flex; align-items:center; gap:4px; padding:3px 10px; border-radius:99px;
  font-size:.75rem; font-weight:650; background:var(--green-50); color:var(--green-800); white-space:nowrap}
.type-clt{background:#e6f0fb; color:#1f5fa8}
.type-empreitada{background:var(--amber-100); color:var(--amber-600)}
.type-diaria{background:#fdf3d6; color:#9a7711}
.st-ok{background:var(--ok-bg); color:var(--ok)} .st-warn{background:var(--warn-bg); color:var(--warn)}
.st-danger{background:var(--danger-bg); color:var(--danger)} .st-muted{background:#eef1ef; color:var(--muted)}
.pill{background:var(--green-50); color:var(--green-800); padding:4px 11px; border-radius:99px; font-size:.8rem; font-weight:650}
.chips{display:flex; flex-wrap:wrap; gap:8px}
.chips.sm{gap:6px} .chips.sm .chip{font-size:.78rem; padding:4px 10px}
.chip{display:inline-flex; align-items:center; gap:5px; padding:7px 13px; border-radius:99px;
  background:var(--surface); border:1px solid var(--line-2); color:var(--ink-2); font-size:.87rem; cursor:default; transition:var(--t)}
a.chip:hover{background:var(--green-50); border-color:var(--green-100); text-decoration:none; transform:translateY(-1px)}
.chips.pick .chip{cursor:pointer}
.chips.pick .chip:hover{border-color:var(--green-400)}
.chips.pick .chip.on{background:var(--green-600); color:#fff; border-color:var(--green-600)}

/* ===== Stats ===== */
.stats-row{display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin-bottom:1rem}
.stats-row.five{grid-template-columns:repeat(5,1fr)}
.stats-row.four,.stats-row:has(> .stat:nth-child(4):last-child){grid-template-columns:repeat(4,1fr)}
.stats-row.inset{grid-template-columns:repeat(2,1fr)}
.stat{position:relative; display:flex; flex-direction:column; gap:3px; padding:18px 20px; overflow:hidden}
.stat::after{content:""; position:absolute; right:-12px; top:-12px; width:54px; height:54px; border-radius:50%;
  background:var(--green-50)}
.stat-n{font-size:1.95rem; font-weight:800; color:var(--green-700); line-height:1; position:relative}
.stat-l{color:var(--muted); font-size:.84rem; position:relative}

/* ===== List / row item ===== */
.list{display:flex; flex-direction:column; gap:12px}
.row-item{display:flex; align-items:center; justify-content:space-between; gap:14px; padding:16px 18px; transition:var(--t)}
.row-item:hover{box-shadow:var(--sh)}
.row-item.slim{padding:12px 0; border:0; border-bottom:1px solid var(--line); box-shadow:none; border-radius:0; background:none}
.row-item.slim:hover{box-shadow:none}
.row-item.slim:last-child{border-bottom:0}
.ri-main{display:flex; flex-direction:column; gap:4px; min-width:0}
.ri-top{display:flex; gap:6px}
.ri-title{font-weight:700; font-size:1.05rem; color:var(--ink)}
.ri-side{display:flex; align-items:center; gap:10px; flex-wrap:wrap}

/* ===== Forms ===== */
.form{display:flex; flex-direction:column; gap:15px}
.form.grid-2{display:grid; grid-template-columns:1fr 1fr; gap:14px}
.field{display:flex; flex-direction:column; gap:6px}
.field>span{font-size:.84rem; font-weight:650; color:var(--ink-2)}
.req{color:var(--danger); margin-left:2px}
.help{font-size:.78rem; color:var(--muted)}
.input,textarea.input,select.input{width:100%; padding:11px 13px; border:1px solid var(--line-2);
  border-radius:10px; font-size:.95rem; font-family:inherit; background:#fff; color:var(--ink); transition:var(--t)}
.input::placeholder{color:#9aa9a0}
.input:focus{outline:none; border-color:var(--green-500); box-shadow:var(--ring)}
.input.invalid{border-color:var(--danger); box-shadow:0 0 0 3px var(--danger-bg)}
textarea.input{resize:vertical; min-height:84px}
select.input{appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%2369786f' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 14px center; padding-right:34px}
.input-group{display:flex; align-items:stretch}
.input-prefix{display:flex; align-items:center; padding:0 13px; background:var(--surface-2); border:1px solid var(--line-2);
  border-right:0; border-radius:10px 0 0 10px; color:var(--muted); font-weight:650; font-size:.9rem}
.input-group .input{border-radius:0 10px 10px 0}
.pw-field{position:relative}
.pw-field .input{padding-right:46px}
.pw-toggle{position:absolute; right:6px; top:50%; transform:translateY(-50%); border:0; background:none;
  cursor:pointer; padding:7px; border-radius:8px; font-size:1.05rem; line-height:1; color:var(--muted)}
.pw-toggle:hover{background:var(--surface-2)}
.form-foot{margin-top:.4rem}
.check{display:flex; align-items:center; gap:8px; font-size:.9rem; color:var(--ink-2)}
.switch{display:flex; align-items:center; gap:10px; cursor:pointer; font-weight:650; color:var(--ink-2); margin:.3rem 0}
.switch input{width:18px; height:18px; accent-color:var(--green-600)}

/* ===== Auth ===== */
.auth-wrap{min-height:calc(100vh - 66px); display:flex; align-items:center; justify-content:center;
  padding:42px 20px; background:radial-gradient(800px 300px at 50% 0,var(--green-50),transparent)}
.auth-card{width:100%; max-width:430px; box-shadow:var(--sh); padding:28px}
.auth-card.auth-wide{max-width:660px}
.auth-brand{font-size:1.2rem; font-weight:800; color:var(--green-800); margin-bottom:1rem; display:flex; align-items:center; gap:8px}
.auth-brand b{color:var(--green-600)}
.auth-alt{text-align:center; margin-top:1.1rem; color:var(--muted); font-size:.9rem}
.role-pick,.type-pick{display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:1.2rem}
.type-pick{grid-template-columns:repeat(3,1fr)}
.role-opt,.type-opt{display:flex; flex-direction:column; gap:3px; padding:16px; border:2px solid var(--line-2);
  border-radius:13px; background:#fff; cursor:pointer; text-align:left; font-family:inherit; transition:var(--t)}
.role-opt:hover,.type-opt:hover{border-color:var(--green-400); background:var(--green-50); transform:translateY(-2px)}
.role-opt.selected,.type-opt.selected{border-color:var(--green-600); background:var(--green-50); box-shadow:var(--ring)}
.role-opt b,.type-opt b{font-size:1rem; color:var(--ink)} .role-opt small,.type-opt small{color:var(--muted); font-size:.8rem}
.role-ic{font-size:1.7rem} .type-opt span{font-size:1.4rem}

/* ===== Profile / candidate cards ===== */
.avatar{width:38px; height:38px; border-radius:50%;
  background:linear-gradient(140deg,var(--green-500),var(--green-700)); color:#fff;
  display:flex; align-items:center; justify-content:center; font-weight:700; font-size:.85rem; border:0; cursor:pointer; flex:none}
.avatar-md{width:46px; height:46px} .avatar-lg{width:62px; height:62px; font-size:1.15rem; cursor:default}
.profile-card{display:flex; flex-direction:column; gap:12px}
.pc-head{display:flex; gap:14px; align-items:center}
.cand-card{display:flex; flex-direction:column; gap:10px; transition:var(--t)}
.cand-card:hover{box-shadow:var(--sh-lg); transform:translateY(-3px); border-color:var(--green-100)}
.cand-head{display:flex; gap:12px; align-items:center}
.cand-bio{font-size:.86rem; color:var(--ink-2)}
.cand-foot{display:flex; align-items:center; justify-content:space-between; border-top:1px solid var(--line); padding-top:10px}

/* ===== Applications ===== */
.app-item{display:flex; flex-direction:column; gap:10px}
.app-head{display:flex; gap:12px; align-items:center}
.app-head>div:nth-child(2){flex:1; min-width:0}
.app-msg{background:var(--green-50); border-radius:10px; padding:10px 13px; font-style:italic; color:var(--ink-2); margin:0}
.app-actions{display:flex; gap:8px}
.contact-box{background:var(--amber-50); border:1px dashed var(--amber); border-radius:10px;
  padding:10px 13px; font-weight:650; color:#7a5512}

/* ===== Filters ===== */
.filter-bar{margin-bottom:1.2rem}
.filters{display:flex; gap:12px; flex-wrap:wrap; align-items:center}
.filters .input{flex:1; min-width:150px}
.filters .check{white-space:nowrap}
.filters-2{margin-top:10px; padding-top:10px; border-top:1px dashed var(--line)}
.filter-meta{display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:12px; flex-wrap:wrap}
.filter-count{font-size:.88rem; color:var(--muted); font-weight:600}
.filter-count b{color:var(--ink)}

/* ===== Tabs / tables ===== */
.tabs{display:flex; gap:2px; border-bottom:1px solid var(--line); margin:1.5rem 0 1rem; overflow-x:auto; scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tab{padding:11px 17px; border:0; background:none; cursor:pointer; font-family:inherit; font-size:.93rem;
  font-weight:650; color:var(--muted); border-bottom:2px solid transparent; white-space:nowrap; transition:var(--t)}
.tab:hover{color:var(--green-700)} .tab.active{color:var(--green-700); border-bottom-color:var(--green-600)}
.table-wrap{overflow-x:auto; padding:0}
.tbl{width:100%; border-collapse:collapse; font-size:.9rem; min-width:560px}
.tbl th,.tbl td{padding:13px 16px; text-align:left; border-bottom:1px solid var(--line); vertical-align:middle}
.tbl th{background:var(--green-50); font-size:.74rem; text-transform:uppercase; letter-spacing:.04em; color:#4a5a52; font-weight:700}
.tbl tr:last-child td{border-bottom:0}
.tbl tbody tr{transition:var(--t)}
.tbl tbody tr:hover td{background:var(--surface-2)} .ta-r{text-align:right; white-space:nowrap}
.row-actions{display:inline-flex; gap:6px; justify-content:flex-end}
.cat-add{display:flex; gap:10px; margin-bottom:1rem; align-items:center; flex-wrap:wrap}
.cat-add .input{flex:1; min-width:160px} .icon-in{max-width:70px; text-align:center; flex:none !important}

/* ===== Modal / toast ===== */
.modal-backdrop{position:fixed; inset:0; background:rgba(12,32,21,.55); display:flex; align-items:center;
  justify-content:center; padding:20px; z-index:60; animation:fade .15s; backdrop-filter:blur(2px)}
.modal-card{background:#fff; border-radius:18px; padding:26px; width:100%; max-width:450px; position:relative;
  box-shadow:var(--sh-lg); animation:pop .18s cubic-bezier(.2,.9,.3,1.2)}
.modal-card.modal-lg{max-width:760px; max-height:88vh; overflow-y:auto}
/* Chat interno */
.chat-box{height:340px; overflow-y:auto; background:var(--surface-2); border-radius:12px; padding:14px;
  display:flex; flex-direction:column; gap:8px; margin:10px 0}
.chat-empty{text-align:center; margin:auto}
.msg{max-width:78%; padding:8px 12px; border-radius:14px; display:flex; flex-direction:column; gap:2px}
.msg.mine{align-self:flex-end; background:var(--green-600); color:#fff; border-bottom-right-radius:4px}
.msg.theirs{align-self:flex-start; background:#fff; border:1px solid var(--line-2); border-bottom-left-radius:4px}
.msg-who{font-size:.72rem; font-weight:700; color:var(--green-700)}
.msg-body{white-space:pre-wrap; word-break:break-word; line-height:1.4}
.msg-time{font-size:.68rem; opacity:.7; align-self:flex-end}
.chat-input{display:flex; gap:8px}
.chat-input .input{flex:1}
.chat-badge{background:#d64545; color:#fff; border-radius:999px; font-size:.7rem; padding:1px 7px; font-weight:700}
.nav-badge{background:#d64545; color:#fff; border-radius:999px; font-size:.68rem; padding:1px 6px; font-weight:700; vertical-align:middle}
.pill-msg{background:#fdecec; color:#b23a3a; font-weight:700; text-decoration:none}
/* Central de mensagens */
.conv-item{display:flex; gap:12px; align-items:center; cursor:pointer; transition:var(--t)}
.conv-item:hover{box-shadow:var(--sh-lg); transform:translateY(-2px)}
.conv-item.has-unread{border-color:#d64545}
.conv-main{flex:1; min-width:0; display:flex; flex-direction:column; gap:3px}
.conv-top{display:flex; justify-content:space-between; gap:10px; align-items:baseline}
.conv-preview{font-size:.88rem; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.conv-item.has-unread .conv-preview{font-weight:700}
.jd-head{display:flex; gap:6px; flex-wrap:wrap; align-items:center; margin-bottom:6px}
.jd-title{margin:4px 0 2px; font-size:1.35rem; letter-spacing:-.01em}
.jd-company{color:var(--green-700); font-weight:650; margin-bottom:10px}
.jd-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:10px; margin:14px 0}
.jd-row{display:flex; gap:10px; align-items:center; background:var(--surface-2); border-radius:12px; padding:10px 12px}
.jd-ic{font-size:1.15rem}
.jd-row .jd-label{display:block; color:var(--muted); font-size:.75rem}
.jd-desc{white-space:pre-wrap; line-height:1.55; margin:10px 0 0}
.jd-sub{color:var(--muted); font-size:.82rem; margin-top:12px}
.modal-x{position:absolute; top:14px; right:16px; border:0; background:none; font-size:1.1rem; cursor:pointer; color:var(--muted);
  width:30px; height:30px; border-radius:8px}
.modal-x:hover{background:var(--surface-2)}
.modal-foot{display:flex; justify-content:flex-end; gap:10px; margin-top:1.3rem}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes pop{from{opacity:0; transform:translateY(10px) scale(.98)}to{opacity:1; transform:none}}
.toast{position:fixed; bottom:24px; left:50%; transform:translateX(-50%) translateY(160%);
  background:var(--ink); color:#fff; padding:13px 20px; border-radius:12px; font-weight:600; font-size:.92rem;
  box-shadow:var(--sh-lg); z-index:80; transition:transform .28s cubic-bezier(.2,.9,.3,1.2); max-width:92vw;
  display:flex; align-items:center; gap:9px}
.toast.show{transform:translateX(-50%) translateY(0)}
.toast.ok{background:var(--green-700)} .toast.danger{background:var(--danger)}
.toast.warn{background:var(--warn)} .toast.info{background:var(--ink)}

/* ===== User menu ===== */
.usermenu{position:relative}
.usermenu-pop{position:absolute; right:0; top:50px; background:#fff; border:1px solid var(--line);
  border-radius:13px; box-shadow:var(--sh-lg); min-width:210px; padding:6px; display:none; z-index:50; animation:pop .15s}
.usermenu-pop.open{display:block}
.um-head{padding:10px 12px; border-bottom:1px solid var(--line); margin-bottom:4px; display:flex; flex-direction:column}
.um-head span{font-size:.8rem; color:var(--muted)}
.usermenu-pop a,.usermenu-pop button{display:block; width:100%; text-align:left; padding:9px 12px; border:0;
  background:none; cursor:pointer; font-family:inherit; font-size:.9rem; color:var(--ink); border-radius:8px; transition:var(--t)}
.usermenu-pop a:hover,.usermenu-pop button:hover{background:var(--green-50); text-decoration:none}
#logout-btn{color:var(--danger); font-weight:650}

/* ===== Skeleton / states ===== */
.skel-grid{display:grid; gap:16px}
.skel-card{background:var(--surface); border:1px solid var(--line); border-radius:var(--r-lg); padding:20px; padding-left:22px}
.skel{background:linear-gradient(90deg,#eef2ef 25%,#e3e9e5 37%,#eef2ef 63%); background-size:400% 100%;
  animation:shimmer 1.4s ease infinite; border-radius:7px; height:13px; margin-bottom:10px}
.skel.w40{width:40%} .skel.w60{width:60%} .skel.w80{width:80%} .skel.w30{width:30%}
.skel.tall{height:22px; margin-bottom:14px}
@keyframes shimmer{0%{background-position:100% 0}100%{background-position:-100% 0}}
.loading{display:flex; flex-direction:column; align-items:center; gap:14px; padding:56px 20px; color:var(--muted)}
.spinner{width:34px; height:34px; border:3px solid var(--green-100); border-top-color:var(--green-600);
  border-radius:50%; animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.empty{text-align:center; padding:48px 20px; color:var(--muted)}
.empty-ic{font-size:2.6rem; margin-bottom:10px}
.empty .btn{margin-top:14px}
.error-box{border-left:4px solid var(--danger)}

/* ===== Footer ===== */
.footer{background:var(--green-900); color:#cfe2d5; margin-top:auto; padding:24px 0; font-size:.9rem}
.footer-inner{display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap}
.footer .muted{color:#9fc0aa}

/* ===== Responsive ===== */
@media(max-width:880px){
  .hero-inner{grid-template-columns:1fr; gap:26px} .hero-text h1{font-size:2.1rem}
  .hero-card{display:none} .dash-grid{grid-template-columns:1fr}
  .stats-row,.stats-row.five{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:760px){
  .topnav{display:none}
  .nav-toggle{display:flex}
  .mobile-menu{display:block; position:fixed; top:66px; left:0; right:0; z-index:39;
    background:#fff; border-bottom:1px solid var(--line); box-shadow:var(--sh); padding:10px;
    transform:translateY(-130%); transition:transform .26s cubic-bezier(.4,0,.2,1); visibility:hidden}
  .mobile-menu.open{transform:translateY(0); visibility:visible}
  .mobile-menu a,.mobile-menu button{display:block; width:100%; text-align:left; padding:13px 14px;
    border:0; background:none; font:inherit; font-size:1rem; font-weight:600; color:var(--ink); border-radius:10px; cursor:pointer}
  .mobile-menu a:hover,.mobile-menu a.active{background:var(--green-50); color:var(--green-700); text-decoration:none}
  .mobile-menu .mm-sep{height:1px; background:var(--line); margin:6px 4px}
  .mm-logout{color:var(--danger) !important}
}
@media(max-width:620px){
  h1{font-size:1.55rem}
  .container{padding:0 16px}
  .form.grid-2,.grid-2{grid-template-columns:1fr}
  .role-pick,.type-pick{grid-template-columns:1fr}
  .stats-row,.stats-row.five,.stats-row.inset{grid-template-columns:1fr 1fr}
  .page-head{flex-direction:column}
  .row-item{flex-direction:column; align-items:flex-start}
  .hero-stats{gap:20px} .auth-card{padding:22px}
}
@media(prefers-reduced-motion:reduce){
  *{animation-duration:.001ms !important; transition-duration:.001ms !important; scroll-behavior:auto !important}
}

/* ===== Mobile polish (responsividade ampliada) ===== */
@media(max-width:760px){
  .topbar-actions .btn{display:none}      /* Entrar/Criar conta vão para o menu hambúrguer */
  .imp-inner{font-size:.84rem; padding:8px 14px}
}
@media(max-width:640px){
  .filters{flex-direction:column; align-items:stretch}
  .filters .input,.filters .check{width:100%; min-width:0}
  .filter-meta{gap:10px; flex-wrap:wrap}
  .cat-add{flex-direction:column; align-items:stretch}
  .cat-add .input,.cat-add .btn,.icon-in{width:100%; max-width:100% !important}
  /* Tabelas do admin viram cartões empilhados com rótulos */
  .table-wrap.card{border:0; box-shadow:none; background:none; padding:0; overflow:visible}
  .tbl{min-width:0}
  .tbl thead{display:none}
  .tbl, .tbl tbody, .tbl tr, .tbl td{display:block; width:100%}
  .tbl tr{border:1px solid var(--line); border-radius:12px; margin-bottom:12px; background:#fff; box-shadow:var(--sh-sm); overflow:hidden}
  .tbl td{border:0; border-bottom:1px solid var(--line); padding:11px 14px; display:flex; justify-content:space-between; align-items:center; gap:14px; text-align:right}
  .tbl td:last-child{border-bottom:0}
  .tbl td::before{content:attr(data-label); font-weight:700; color:var(--ink-2); font-size:.76rem; text-transform:uppercase; letter-spacing:.03em; text-align:left; flex:none}
  .tbl td.ta-r{justify-content:flex-end}
  .row-actions{flex-wrap:wrap; justify-content:flex-end}
  .row-actions .btn{padding:8px 12px; font-size:.82rem}
  .modal-card{padding:20px}
  .detail-actions .btn{flex:1}
}
@media(max-width:620px){
  .grid-jobs,.grid-cards{grid-template-columns:1fr}
}
@media(max-width:380px){
  .stats-row,.stats-row.five,.stats-row.inset{grid-template-columns:1fr}
  .hero-text h1{font-size:1.8rem}
}

/* ===== Perfil da empresa (modal + edição) ===== */
.emp-head{display:flex; gap:14px; align-items:center; margin-bottom:12px}
.emp-logo{width:64px; height:64px; border-radius:var(--r-sm); object-fit:cover; border:1px solid var(--line); background:#fff}
.emp-job{cursor:pointer}
.jd-company .btn{margin-left:8px; vertical-align:middle}

/* ===== Avaliações (estrelas) ===== */
.stars{color:var(--amber-600); font-weight:600; letter-spacing:1px}
.star-pick{display:flex; gap:6px; margin:12px 0}
.star-pick .star{font-size:2rem; background:none; border:0; cursor:pointer; color:var(--muted); line-height:1; padding:2px; transition:transform .1s}
.star-pick .star:hover{transform:scale(1.15)}
.star-pick .star.on{color:var(--amber-600)}
.rv-list{margin-top:6px}
.rv-item{border-bottom:1px solid var(--line); padding:10px 0}
.rv-item:last-child{border-bottom:0}
.rv-comment{margin:4px 0 0; color:var(--ink-2)}

/* ===== PWA: convite de instalação ===== */
.pwa-banner{position:fixed; left:16px; right:16px; bottom:16px; z-index:60;
  display:flex; align-items:center; gap:12px; padding:14px 16px;
  background:var(--surface); border:1px solid var(--line); border-radius:var(--r);
  box-shadow:var(--sh-lg); opacity:0; transform:translateY(16px);
  transition:opacity .3s ease, transform .3s ease}
.pwa-banner.show{opacity:1; transform:translateY(0)}
.pwa-ic{width:44px; height:44px; border-radius:10px; flex:none}
.pwa-ic.lg{width:56px; height:56px; border-radius:12px}
.pwa-txt{display:flex; flex-direction:column; gap:2px; min-width:0}
.pwa-txt b{font-size:.98rem}
.pwa-txt span{font-size:.85rem; color:var(--muted)}
.pwa-actions{display:flex; gap:8px; margin-left:auto; flex:none}
.pwa-ios-head{display:flex; align-items:center; gap:12px; margin-bottom:8px}
.pwa-ios-head h3{margin:0}
.pwa-steps{list-style:none; padding:0; margin:10px 0; display:flex; flex-direction:column; gap:12px}
.pwa-steps li{display:flex; align-items:center; gap:10px; padding:10px 12px;
  background:var(--surface-2); border:1px solid var(--line); border-radius:var(--r-sm)}
.pwa-step-ic{font-size:1.3rem; flex:none}
@media (min-width:640px){
  .pwa-banner{left:auto; right:24px; bottom:24px; max-width:420px}
}
@media (max-width:480px){
  .pwa-banner{flex-wrap:wrap}
  .pwa-actions{margin-left:0; width:100%; justify-content:flex-end}
}
