/* Layout: menu lateral verde-mata fixo + área de trabalho clara; no celular o menu vira barra inferior. */
:root{
  --bg:#EEF8EF; --panel:#FFFFFF; --ink:#2B443B; --ink-2:#5A7166; --line:rgba(43,68,59,.13); --line-2:rgba(43,68,59,.26);
  --side:#2B443B; --side-ink:#E5FAE7; --accent:#2B443B; --on-accent:#E5FAE7; --lime:#96F456; --talude:#9AB06A; --field:#F6FCF6;
  --warn:#B4532A; --warn-bg:rgba(180,83,42,.1);
  --st-rasc:rgba(43,68,59,.09); --st-env:rgba(154,176,106,.32); --st-apr:#96F456; --st-rec:rgba(180,83,42,.15);
  --t-visita:#6E9BD6; --t-plantio:#5FA83C; --t-acomp:#C9A24A; --t-outro:#9AA5A0;
  --serif:'Lora', Georgia, 'Times New Roman', serif; --sans:'Montserrat', 'Helvetica Neue', Arial, sans-serif;
  --leaf-d:#E5FAE7; --leaf-l:#9AB06A; --word:#E5FAE7;
  color-scheme:light;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#13201B; --panel:#1C2E27; --ink:#E5FAE7; --ink-2:#A5BFB2; --line:rgba(229,250,231,.11); --line-2:rgba(229,250,231,.22);
  --side:#0F1A16; --accent:#96F456; --on-accent:#13201B; --field:#16261F; --warn:#F09B74; --warn-bg:rgba(240,155,116,.12);
  --st-rasc:rgba(229,250,231,.1); --st-env:rgba(154,176,106,.3); --st-apr:rgba(150,244,86,.85); --st-rec:rgba(240,155,116,.2); color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#13201B; --panel:#1C2E27; --ink:#E5FAE7; --ink-2:#A5BFB2; --line:rgba(229,250,231,.11); --line-2:rgba(229,250,231,.22);
  --side:#0F1A16; --accent:#96F456; --on-accent:#13201B; --field:#16261F; --warn:#F09B74; --warn-bg:rgba(240,155,116,.12);
  --st-rasc:rgba(229,250,231,.1); --st-env:rgba(154,176,106,.3); --st-apr:rgba(150,244,86,.85); --st-rec:rgba(240,155,116,.2); color-scheme:dark}

*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-family:var(--serif);font-weight:500;margin:0;letter-spacing:-.01em;text-wrap:balance}
button,input,select,textarea{font:inherit;color:inherit}
a{color:inherit}
:focus-visible{outline:2px solid var(--talude);outline-offset:2px}
.num{font-variant-numeric:tabular-nums}
[hidden]{display:none!important}

/* estrutura */
.shell{display:grid;grid-template-columns:232px minmax(0,1fr);min-height:100%}
.side{background:var(--side);color:var(--side-ink);padding:22px 14px;display:flex;flex-direction:column;gap:22px;position:sticky;top:0;height:100vh}
.side .logo{display:block;width:150px;height:40px;margin:0 8px}
.side nav{display:grid;gap:4px}
.side nav a{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;text-decoration:none;font-weight:500;opacity:.8;transition:background .15s ease, opacity .15s ease}
.side nav a:hover{background:rgba(229,250,231,.07);opacity:1}
.side nav a[aria-current="page"]{background:rgba(150,244,86,.14);opacity:1;color:#fff;box-shadow:inset 3px 0 0 var(--lime)}
.side nav svg{width:19px;height:19px;flex-shrink:0}
.side .me{margin-top:auto;padding:12px;border-radius:14px;background:rgba(229,250,231,.06);font-size:12.5px}
.side .me b{display:block;font-size:13.5px}
.side .me span{opacity:.7}
.side .me button{margin-top:8px;display:inline;background:none;border:0;padding:0;color:var(--lime);font-weight:600;cursor:pointer;font-size:12.5px}
.main{min-width:0;padding:24px clamp(16px,3vw,36px) 120px}
.banner{margin:-8px 0 18px;padding:9px 14px;border-radius:12px;background:var(--warn-bg);color:var(--warn);font-size:13px;font-weight:500}

@media (max-width:860px){
  .shell{grid-template-columns:minmax(0,1fr)}
  .side{position:fixed;inset:auto 0 0 0;height:auto;z-index:30;flex-direction:row;padding:6px 8px calc(6px + env(safe-area-inset-bottom,0px));gap:0}
  .side .logo,.side .me{display:none}
  .side nav{grid-auto-flow:column;grid-auto-columns:1fr;width:100%;gap:2px}
  .side nav a{flex-direction:column;gap:3px;padding:7px 2px;font-size:10.5px;text-align:center;box-shadow:none!important}
  .main{padding-bottom:110px}
}

/* cabeçalho de página */
.ph{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:20px}
.ph h1{font-size:clamp(26px,3vw,34px)}
.ph p{margin:4px 0 0;color:var(--ink-2)}
.ph .acts{display:flex;gap:8px;flex-wrap:wrap}

/* botões */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:38px;padding:0 16px;border-radius:999px;border:1.5px solid var(--line-2);background:transparent;font-weight:600;font-size:13px;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .15s ease, transform .15s ease}
.btn:hover{background:var(--panel)}
.btn:active{transform:translateY(1px)}
.btn.pri{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}
.btn.pri:hover{filter:brightness(1.08)}
.btn.lime{background:var(--lime);color:#2B443B;border-color:var(--lime)}
.btn.danger{color:var(--warn);border-color:var(--warn)}
.btn.sm{min-height:32px;padding:0 12px;font-size:12px}
.btn[disabled],.btn.off{opacity:.45;pointer-events:none}
.btn svg{width:16px;height:16px}

/* cartões e listas */
.card{background:var(--panel);border:1px solid var(--line);border-radius:18px}
.pad{padding:18px}
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}
.kpi{padding:16px 18px}
.kpi b{display:block;font-family:var(--serif);font-size:24px;font-weight:500;font-variant-numeric:tabular-nums}
.kpi span{font-size:12px;color:var(--ink-2)}
@media (max-width:900px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}

.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.toolbar input[type=search]{flex:1;min-width:200px;min-height:38px;border-radius:999px;border:1px solid var(--line-2);background:var(--panel);padding:0 16px}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{border:1px solid var(--line-2);background:transparent;border-radius:999px;padding:4px 12px;font-size:12.5px;cursor:pointer}
.chip[aria-pressed="true"]{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}

.tbl-wrap{overflow-x:auto}
table.list{width:100%;border-collapse:collapse;min-width:640px}
table.list th{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);text-align:left;padding:12px 14px;border-bottom:1px solid var(--line-2);font-weight:600}
table.list td{padding:13px 14px;border-bottom:1px solid var(--line);vertical-align:middle}
table.list tr.click{cursor:pointer}
table.list tr.click:hover td{background:var(--field)}
table.list td.r,table.list th.r{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
table.list td .sub{display:block;font-size:12px;color:var(--ink-2)}
.st{display:inline-block;font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:3px 9px;border-radius:999px;white-space:nowrap}
.st.rascunho,.st.agendado{background:var(--st-rasc)}
.st.enviada,.st.enviado,.st.em_execucao{background:var(--st-env)}
.st.aprovada,.st.assinado,.st.concluido{background:var(--st-apr);color:#2B443B}
.st.recusada,.st.cancelado,.st.reagendado{background:var(--st-rec);color:var(--warn)}
.empty{padding:40px 20px;text-align:center;color:var(--ink-2)}
.empty b{display:block;font-family:var(--serif);font-size:20px;font-weight:500;color:var(--ink);margin-bottom:6px}

/* formulários */
.form{display:grid;gap:14px}
details.sec{background:var(--panel);border:1px solid var(--line);border-radius:18px}
details.sec > summary{list-style:none;cursor:pointer;padding:16px 18px;display:flex;justify-content:space-between;align-items:center;gap:12px}
details.sec > summary::-webkit-details-marker{display:none}
details.sec > summary h3{font-size:18px}
details.sec > summary span{font-size:12px;color:var(--ink-2)}
details.sec > summary::after{content:"+";font-size:20px;color:var(--ink-2);transition:transform .2s ease}
details.sec[open] > summary::after{transform:rotate(45deg)}
.sec .body{padding:0 18px 18px;display:grid;gap:14px}
.row{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}
label.f{display:grid;gap:5px;min-width:0}
label.f > span{font-size:11.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2)}
label.f small{font-size:11.5px;color:var(--ink-2);text-transform:none;letter-spacing:0;font-weight:400}
.f input,.f select,.f textarea{width:100%;min-height:40px;border-radius:10px;border:1px solid var(--line-2);background:var(--field);padding:8px 11px}
.f textarea{min-height:90px;resize:vertical;line-height:1.5}
.f input:focus,.f select:focus,.f textarea:focus{border-color:var(--talude);outline:none;box-shadow:0 0 0 3px rgba(154,176,106,.25)}
.seg{display:inline-flex;border:1.5px solid var(--line-2);border-radius:999px;padding:3px;gap:3px;flex-wrap:wrap}
.seg button{border:0;background:transparent;border-radius:999px;padding:6px 14px;font-weight:600;font-size:13px;cursor:pointer}
.seg button[aria-pressed="true"]{background:var(--accent);color:var(--on-accent)}
.hint{font-size:12.5px;color:var(--ink-2);margin:0}

.head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px 16px;align-items:center;padding:18px}
.head .n{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2)}
.head h2{font-size:26px;margin-top:2px;overflow-wrap:anywhere}
.head .tot{text-align:right}
.head .tot b{display:block;font-family:var(--serif);font-size:26px;font-weight:500;font-variant-numeric:tabular-nums}
.head .tot span{font-size:12px;color:var(--ink-2)}
.head .line{grid-column:1/-1;display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.head .line .lbl{font-size:12px;color:var(--ink-2);margin-right:4px}
@media (max-width:560px){.head{grid-template-columns:minmax(0,1fr)}.head .tot{text-align:left}}

.back{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--ink-2);text-decoration:none;margin-bottom:12px}
.back:hover{color:var(--ink)}

/* barra de ações fixa */
.actions{position:fixed;left:232px;right:0;bottom:0;z-index:20;padding:12px clamp(16px,3vw,36px) calc(12px + env(safe-area-inset-bottom,0px));background:color-mix(in srgb, var(--panel) 92%, transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-top:1px solid var(--line);display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.actions .sp{flex:1}
.save-st{font-size:12.5px;color:var(--ink-2)}
.save-st.dirty{color:var(--warn);font-weight:600}
@media (max-width:860px){.actions{left:0;bottom:62px}}

/* agenda */
.cal-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.cal-h h2{font-size:22px;min-width:180px}
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--panel)}
.cal .dw{padding:8px;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--field)}
.cal .d{min-height:112px;padding:6px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:3px;min-width:0;cursor:pointer}
.cal .d:hover{background:var(--field)}
.cal .d.fora{opacity:.45}
.cal .d .dn{font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;width:24px;height:24px;display:grid;place-items:center;border-radius:50%}
.cal .d.hj .dn{background:var(--accent);color:var(--on-accent)}
.ev{all:unset;box-sizing:border-box;display:block;font-size:11.5px;line-height:1.3;padding:3px 7px;border-radius:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;border-left:3px solid var(--c);background:color-mix(in srgb, var(--c) 18%, transparent)}
.ev:hover{background:color-mix(in srgb, var(--c) 30%, transparent)}
.ev.cont{border-left-color:transparent;padding-left:10px;opacity:.85}
.ev.feito{text-decoration:line-through;opacity:.6}
.ev[data-t="visita"]{--c:var(--t-visita)}.ev[data-t="plantio"]{--c:var(--t-plantio)}.ev[data-t="acompanhamento"]{--c:var(--t-acomp)}.ev[data-t="outro"]{--c:var(--t-outro)}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--ink-2);margin-top:10px}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.more{font-size:11px;color:var(--ink-2);padding-left:4px}
@media (max-width:700px){.cal .d{min-height:64px}.cal .ev{font-size:0;padding:0;height:6px;border-left:0;background:var(--c)}}

.agenda-list{display:grid;gap:8px}
.ag-day{display:grid;grid-template-columns:86px minmax(0,1fr);gap:14px;padding:12px 16px;align-items:start}
.ag-day .dt b{display:block;font-family:var(--serif);font-size:24px;font-weight:500;line-height:1}
.ag-day .dt span{font-size:12px;color:var(--ink-2);text-transform:capitalize}
.ag-items{display:grid;gap:6px}
.ag-it{all:unset;box-sizing:border-box;cursor:pointer;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:9px 12px;border-radius:12px;border:1px solid var(--line)}
.ag-it:hover{background:var(--field)}
.ag-it .dot{width:10px;height:10px;border-radius:50%;background:var(--c)}
.ag-it[data-t="visita"]{--c:var(--t-visita)}.ag-it[data-t="plantio"]{--c:var(--t-plantio)}.ag-it[data-t="acompanhamento"]{--c:var(--t-acomp)}.ag-it[data-t="outro"]{--c:var(--t-outro)}
.ag-it b{font-weight:600}
.ag-it .sub{display:block;font-size:12px;color:var(--ink-2)}

/* contrato (documento) */
.doc-wrap{display:grid;grid-template-columns:minmax(0,380px) minmax(0,1fr);gap:18px;align-items:start}
@media (max-width:1100px){.doc-wrap{grid-template-columns:minmax(0,1fr)}}
.paper{background:#fff;color:#1d2a25;border-radius:6px;box-shadow:0 10px 40px rgba(0,0,0,.12);padding:56px 60px;font-family:var(--serif);font-size:13.5px;line-height:1.65;max-width:820px}
.paper .lh{display:flex;justify-content:space-between;align-items:center;gap:16px;padding-bottom:16px;margin-bottom:24px;border-bottom:1.5px solid #2B443B}
.paper .lh svg{width:150px;height:40px;--leaf-d:#2B443B;--leaf-l:#9AB06A;--word:#2B443B}
.paper .lh div{text-align:right;font-family:var(--sans);font-size:10.5px;color:#5A7166;line-height:1.5}
.paper h2{font-size:17px;text-align:center;margin:0 0 20px;letter-spacing:.02em}
.paper h3{font-family:var(--sans);font-size:11.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;margin:22px 0 8px;color:#2B443B}
.paper p{margin:0 0 9px;text-align:justify;hyphens:auto}
.paper p.bul{padding-left:16px;margin-bottom:4px}
.paper .faltando{background:#FFE9A8;border-radius:3px;padding:0 3px}
.paper .assin{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin-top:56px;font-family:var(--sans);font-size:11.5px}
.paper .assin div{border-top:1px solid #1d2a25;padding-top:8px}
.paper .assin b{display:block}
.paper .test{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin-top:44px;font-family:var(--sans);font-size:11px;color:#5A7166}
.paper .test div{border-top:1px solid #9aa5a0;padding-top:6px}
@media (max-width:700px){.paper{padding:28px 20px}.paper .assin,.paper .test{grid-template-columns:1fr}}

/* login */
.login{min-height:100%;display:grid;place-items:center;padding:24px 16px;background:var(--side)}
.login .box{width:min(400px,100%);background:var(--panel);border-radius:22px;padding:30px;display:grid;gap:16px;box-shadow:0 30px 60px rgba(0,0,0,.25)}
.login svg.logo{width:170px;height:46px;--leaf-d:var(--ink);--word:var(--ink)}
.login h1{font-size:24px}
.login .err{color:var(--warn);font-size:13px;min-height:1em}

/* modal e aviso */
.modal{position:fixed;inset:0;z-index:60;background:rgba(10,20,16,.45);display:grid;place-items:center;padding:16px;overflow:auto}
.modal .box{background:var(--panel);border-radius:18px;padding:22px;width:min(520px,100%);display:grid;gap:14px;max-height:calc(100vh - 32px);overflow:auto}
.modal .box.largo{width:min(720px,100%)}
.modal h3{font-size:20px}
.acoes-modal{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}
.toast{position:fixed;left:50%;bottom:90px;transform:translateX(-50%) translateY(20px);opacity:0;background:var(--accent);color:var(--on-accent);padding:10px 18px;border-radius:999px;font-weight:600;font-size:13px;transition:all .25s ease;pointer-events:none;z-index:80;max-width:calc(100vw - 32px)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

@media print{
  body{background:#fff}
  .side,.actions,.no-print,.ph,.back,.toast,.banner{display:none!important}
  .shell{display:block}
  .main{padding:0}
  .doc-wrap{display:block}
  .doc-wrap > :first-child{display:none}
  .paper{box-shadow:none;padding:0;max-width:none;border-radius:0}
  @page{size:A4;margin:18mm 16mm}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
