:root{
  --forest:#1d3125; --moss:#2f4a37; --leaf:#5c8a50; --sage:#a8bfa0; --mint:#e3ecd8;
  --cream:#f5f0e4; --paper:#fffdf8; --ink:#23301f; --muted:#6c7a64;
  --clay:#b8643c; --sun:#d9a441; --water:#4f8aa0; --bad:#b4472e; --ok:#4c8a4a;
  --line:rgba(47,74,55,.14);
  --r:20px;
  --shadow:0 1px 2px rgba(29,49,37,.06),0 14px 34px -14px rgba(29,49,37,.22);
  --serif:'Fraunces',Georgia,serif; --sans:'DM Sans',system-ui,-apple-system,sans-serif;
  color-scheme:light;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;font:15px/1.5 var(--sans);color:var(--ink);background:var(--cream);
  background-image:
    radial-gradient(900px 500px at 100% -10%,rgba(168,191,160,.35),transparent 60%),
    radial-gradient(700px 420px at -10% 110%,rgba(217,164,65,.14),transparent 60%);
  background-attachment:fixed;
  min-height:100vh;
}
h1,h2,h3{font-family:var(--serif);font-weight:600;letter-spacing:-.01em;margin:0;line-height:1.15}
h1{font-size:clamp(26px,3.4vw,36px)} h2{font-size:21px} h3{font-size:17px}
p{margin:0}
.muted{color:var(--muted)}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:3px solid rgba(92,138,80,.55);outline-offset:2px;border-radius:8px}

/* ---------- splash ---------- */
.splash{position:fixed;inset:0;background:var(--cream);display:grid;place-items:center;z-index:50;transition:opacity .4s}
.splash.off{opacity:0;pointer-events:none}
.spin-leaf{width:64px;height:64px;color:var(--leaf);animation:sway 1.6s ease-in-out infinite;transform-origin:50% 90%}
@keyframes sway{0%,100%{transform:rotate(-6deg) scale(1)}50%{transform:rotate(6deg) scale(1.06)}}

/* ---------- brand ---------- */
.brand{display:flex;align-items:center;gap:10px;font:600 22px var(--serif);color:var(--moss)}
.brand.light{color:#eef4e4}
.brand-mark{width:30px;height:30px;color:var(--leaf)}
.brand.light .brand-mark{color:#a8d08d}

/* ---------- buttons / fields ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:999px;padding:10px 18px;font-weight:600;cursor:pointer;background:var(--mint);color:var(--moss);transition:transform .12s,background .2s,box-shadow .2s}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:none}
.btn.primary{background:var(--moss);color:#f3f8ea;box-shadow:0 8px 18px -8px rgba(47,74,55,.7)}
.btn.primary:hover{background:#3a5c44}
.btn.ghost{background:transparent;border-color:var(--line);color:var(--ink)}
.btn.ghost:hover{background:rgba(47,74,55,.05)}
.btn.danger{background:transparent;color:var(--bad);border-color:rgba(180,71,46,.3)}
.btn.sm{padding:6px 12px;font-size:13px}
.btn.block{width:100%}
.link{background:none;border:0;color:var(--moss);text-decoration:underline;cursor:pointer;padding:8px 0}
.icon-btn{border:1px solid var(--line);background:var(--paper);border-radius:12px;width:40px;height:40px;cursor:pointer;font-size:18px}
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.field>span{font-size:13px;font-weight:600;color:var(--moss)}
input,select,textarea{width:100%;border:1px solid var(--line);background:#fff;border-radius:14px;padding:11px 14px;transition:border-color .2s,box-shadow .2s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--leaf);box-shadow:0 0 0 4px rgba(92,138,80,.18)}
textarea{min-height:84px;resize:vertical}
input[type=checkbox]{width:auto}
.form-err{color:var(--bad);font-size:14px;margin:-4px 0 12px}

/* ---------- login ---------- */
.login{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}
.login-art{position:relative;overflow:hidden}
.login-art svg{position:absolute;inset:0;width:100%;height:100%}
.login-quote{position:absolute;left:36px;right:36px;bottom:34px;color:#eaf3df;font:italic 500 22px/1.35 var(--serif);text-shadow:0 2px 12px rgba(0,0,0,.35)}
.login-card{align-self:center;justify-self:center;width:min(420px,100% - 48px);padding:36px 0}
.login-card .brand{margin-bottom:34px}
.login-card h1{margin-bottom:6px}
.login-card .muted{margin-bottom:26px}
.or{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:13px;margin:18px 0}
.or::before,.or::after{content:"";flex:1;height:1px;background:var(--line)}
.login-card .link{display:block;margin:10px auto 0}
.login-card .foot{text-align:center;margin-top:28px;font-size:12px}

/* ---------- layout ---------- */
.app{display:grid;grid-template-columns:252px 1fr;min-height:100vh}
.side{position:sticky;top:0;height:100vh;padding:26px 18px;display:flex;flex-direction:column;gap:26px;color:#dfe9d3;
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220' viewBox='0 0 120 120'%3E%3Cpath d='M60 62C60 36 42 22 16 24c0 26 18 40 44 38z' fill='%23ffffff' opacity='.035'/%3E%3C/svg%3E") 0 100%/220px no-repeat,
    linear-gradient(180deg,#24402e,#1a2c21);
  border-radius:0 32px 32px 0}
.nav{display:flex;flex-direction:column;gap:4px}
.nav a{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:14px;color:#cfdcc3;text-decoration:none;font-weight:500;transition:background .2s,color .2s}
.nav a:hover{background:rgba(255,255,255,.07);color:#fff}
.nav a.on{background:#eaf2de;color:var(--forest);font-weight:700}
.nav svg,.tabbar svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
.side-foot{margin-top:auto;display:flex;flex-direction:column;gap:6px}
.side-btn{background:none;border:0;color:#b9cdb0;text-align:left;padding:8px 14px;border-radius:10px;cursor:pointer;font-size:14px}
.side-btn:hover{background:rgba(255,255,255,.07);color:#fff}
.who{border-top:1px solid rgba(255,255,255,.12);padding-top:10px;font-size:13px;color:#9fb594}
.who span{display:block;padding:0 14px 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.main{min-width:0}
.top{display:none}
.view{padding:34px clamp(18px,3.4vw,48px) 60px;max-width:1240px;margin:0 auto;outline:none}
.tabbar{display:none}

/* ---------- page head ---------- */
.head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:24px}
.head p{color:var(--muted);margin-top:4px}
.head-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}

/* ---------- hero ---------- */
.hero{position:relative;overflow:hidden;color:#f1f7e6;border-radius:28px 28px 28px 90px;padding:34px clamp(22px,4vw,44px);margin-bottom:22px;
  background:radial-gradient(500px 260px at 90% 0,rgba(217,164,65,.28),transparent 65%),linear-gradient(120deg,#2f4a37,#3f6a43 70%,#5c8a50)}
.hero h1{color:#fff;margin-bottom:8px}
.hero p{max-width:520px;color:#dbe8cc;font-size:16px}
.hero .deco{position:absolute;right:-10px;bottom:-26px;width:260px;height:260px;color:#a8d08d;opacity:.28;pointer-events:none}
.hero .deco.b{right:150px;bottom:-40px;width:150px;height:150px;opacity:.16}
.hero-date{font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:#bcd5a8;margin-bottom:10px}

/* ---------- cards ---------- */
.grid{display:grid;gap:18px}
.g4{grid-template-columns:repeat(4,1fr)} .g3{grid-template-columns:repeat(3,1fr)} .g2{grid-template-columns:repeat(2,1fr)}
.cards{grid-template-columns:repeat(auto-fill,minmax(290px,1fr))}
.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:20px;box-shadow:var(--shadow)}
.card h2{margin-bottom:14px;display:flex;align-items:center;justify-content:space-between;gap:10px}
.card h2 small{font:500 13px var(--sans);color:var(--muted)}
.stat{position:relative;overflow:hidden;display:flex;flex-direction:column;gap:2px}
.stat .n{font:600 38px/1 var(--serif);color:var(--moss);margin-top:6px}
.stat .l{color:var(--muted);font-size:14px}
.stat .ic{position:absolute;right:14px;top:14px;width:42px;height:42px;border-radius:14px;display:grid;place-items:center;background:var(--mint);color:var(--moss)}
.stat .ic svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.stat.warn .ic{background:#f6e3cc;color:var(--clay)} .stat.warn .n{color:var(--clay)}
.stat.sun .ic{background:#f7ecc9;color:#9a7416}
.stat.water .ic{background:#dcebf0;color:var(--water)}

.chip{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600;background:var(--mint);color:var(--moss);white-space:nowrap}
.chip.warn{background:#f6e3cc;color:#8d4a26} .chip.bad{background:#f4d7cf;color:var(--bad)}
.chip.sun{background:#f7ecc9;color:#7d5f10} .chip.water{background:#dcebf0;color:#2e6479}
.chip.ok{background:#dcecd2;color:#2f6a2e} .chip.gray{background:#ece8dc;color:#6b6656}

.progress{height:8px;border-radius:99px;background:#e8e3d3;overflow:hidden}
.progress i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--leaf),#9fcb7b);transition:width .6s}
.progress.warn i{background:linear-gradient(90deg,var(--sun),#e8c26a)}
.progress.bad i{background:linear-gradient(90deg,var(--clay),#d98a62)}

.row{display:flex;align-items:center;gap:12px}
.row.sb{justify-content:space-between}
.stack{display:flex;flex-direction:column;gap:12px}
.item{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px dashed var(--line)}
.item:last-child{border:0;padding-bottom:0}
.item:first-child{padding-top:0}
.item .t{flex:1;min-width:0}
.item .t b{display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis}
.item .t span{color:var(--muted);font-size:13px}
.dot{width:36px;height:36px;border-radius:12px;display:grid;place-items:center;flex:none;background:var(--mint);color:var(--moss)}
.dot svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.dot.warn{background:#f6e3cc;color:var(--clay)} .dot.bad{background:#f4d7cf;color:var(--bad)} .dot.water{background:#dcebf0;color:var(--water)} .dot.sun{background:#f7ecc9;color:#9a7416}

input.check{width:24px;height:24px;appearance:none;-webkit-appearance:none;border-radius:50%;border:2px solid var(--sage);background:#fff;cursor:pointer;flex:none;display:grid;place-items:center;transition:all .2s;padding:0}
.check:hover{border-color:var(--leaf)}
.check:checked{background:var(--leaf);border-color:var(--leaf)}
.check:checked::after{content:"";width:6px;height:11px;border:solid #fff;border-width:0 2.5px 2.5px 0;transform:rotate(45deg) translate(-1px,-1px)}
.done .t b{text-decoration:line-through;color:var(--muted)}

.empty{text-align:center;color:var(--muted);padding:34px 16px}
.empty svg{width:56px;height:56px;color:var(--sage);margin-bottom:8px}
.empty b{display:block;color:var(--ink);font:600 17px var(--serif);margin-bottom:4px}

/* ---------- estufa ---------- */
.gh-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:14px}
.gh-top h3{margin-bottom:2px}
.readings{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.read{background:var(--cream);border-radius:16px;padding:12px 14px}
.read small{display:block;color:var(--muted);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em}
.read b{font:600 28px/1.1 var(--serif)}
.read b em{font:500 14px var(--sans);font-style:normal;color:var(--muted)}
.read .chip{margin-top:6px}
.spark{width:100%;height:46px;display:block;margin:6px 0 12px}
.card-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.meta{display:flex;flex-wrap:wrap;gap:6px 14px;color:var(--muted);font-size:13px;margin-top:6px}

/* ---------- pills / toolbar ---------- */
.pills{display:inline-flex;background:rgba(47,74,55,.08);border-radius:999px;padding:4px;gap:2px;flex-wrap:wrap}
.pills button{border:0;background:none;padding:7px 16px;border-radius:999px;cursor:pointer;font-weight:600;color:var(--muted)}
.pills button.on{background:var(--paper);color:var(--moss);box-shadow:0 2px 8px -2px rgba(29,49,37,.25)}
.search{max-width:280px;background:var(--paper) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' fill='none' stroke='%236c7a64' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='8' cy='8' r='6'/%3E%3Cpath d='M13 13l4 4'/%3E%3C/svg%3E") 14px 50%/18px no-repeat;padding-left:40px;border-radius:999px}
.group-t{font:600 13px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:22px 0 10px}
.group-t.bad{color:var(--bad)}

/* ---------- timeline ---------- */
.timeline{position:relative;padding-left:26px}
.timeline::before{content:"";position:absolute;left:8px;top:6px;bottom:6px;width:2px;background:linear-gradient(var(--sage),transparent);border-radius:2px}
.tl{position:relative;margin-bottom:16px}
.tl::before{content:"";position:absolute;left:-24px;top:20px;width:12px;height:12px;border-radius:50%;background:var(--paper);border:3px solid var(--leaf)}
.tl.colheita::before{border-color:var(--sun)} .tl.problema::before{border-color:var(--clay)} .tl.aprendizado::before{border-color:var(--water)}
.tl .card{padding:16px 18px}
.tl p{margin-top:6px;white-space:pre-wrap}

/* ---------- dialog ---------- */
dialog{border:0;padding:0;background:transparent;max-width:min(560px,100% - 24px);width:100%;max-height:92vh;overflow:visible}
dialog::backdrop{background:rgba(20,34,25,.55);backdrop-filter:blur(3px)}
.dlg{background:var(--paper);border-radius:26px;padding:26px;box-shadow:0 30px 80px -20px rgba(0,0,0,.5);max-height:90vh;overflow:auto;animation:pop .22s ease}
@keyframes pop{from{opacity:0;transform:translateY(14px) scale(.98)}}
.dlg h2{margin-bottom:18px}
.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
.fgrid .full{grid-column:1/-1}
.dlg-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:8px;flex-wrap:wrap}
.dlg-actions .danger{margin-right:auto}

.toasts{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);display:flex;flex-direction:column;gap:8px;z-index:60;align-items:center;pointer-events:none}
.toast{background:var(--forest);color:#eaf3df;padding:11px 20px;border-radius:999px;box-shadow:var(--shadow);animation:pop .25s ease;font-weight:500}
.toast.err{background:var(--bad)}

/* ---------- responsivo ---------- */
@media (max-width:1100px){.g4{grid-template-columns:repeat(2,1fr)}}
@media (max-width:860px){
  .login{grid-template-columns:1fr}
  .login-art{height:210px}
  .login-quote{font-size:16px;bottom:18px;left:22px;right:22px}
  .login-card{padding:26px 0 40px}
  .app{display:block}
  .side{display:none}
  .top{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;position:sticky;top:0;z-index:20;background:rgba(245,240,228,.88);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
  .top-r{display:flex;gap:8px;align-items:center}
  .view{padding:20px 16px 110px}
  .g3,.g2{grid-template-columns:1fr}
  .tabbar{display:grid;grid-template-columns:repeat(6,1fr);position:fixed;left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom));z-index:30;background:var(--forest);border-radius:24px;padding:6px;box-shadow:0 14px 34px -8px rgba(0,0,0,.5)}
  .tabbar a{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0;border-radius:18px;color:#a9bf9f;text-decoration:none;font-size:10.5px;font-weight:600}
  .tabbar a.on{background:#eaf2de;color:var(--forest)}
  .hero{border-radius:24px 24px 24px 60px;padding:26px 22px}
  .hero .deco{width:170px;height:170px}.hero .deco.b{display:none}
  .toasts{bottom:96px}
}
@media (max-width:520px){
  .item{flex-wrap:wrap}.item .t{flex:1 1 55%}

  .g4{gap:12px}.stat .n{font-size:32px}.stat{padding:16px}.stat .ic{width:36px;height:36px;right:10px;top:10px}
  .fgrid{grid-template-columns:1fr}
  .search{max-width:none;width:100%}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---------- guia de culturas ---------- */
.facts{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:6px}
.facts>div{background:var(--cream);border-radius:14px;padding:10px 12px}
.facts small{display:block;color:var(--muted);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}
.facts b{font:600 15px/1.3 var(--sans);display:block;margin-top:2px}
.facts.mini{margin:2px 0 12px}.facts.mini b{font:600 16px var(--serif)}
.sec{margin:18px 0 8px;font-size:15px}
.tips{margin:0;padding-left:20px}.tips li{margin-bottom:5px}
.tags{display:flex;flex-wrap:wrap;gap:6px}
.plin{background:rgba(92,138,80,.08);border-radius:16px;padding:12px 14px;margin-top:10px;display:flex;flex-direction:column;gap:8px}
.agora{font-size:14px;margin:0}.agora b{color:var(--moss)}
@media (max-width:520px){.facts{grid-template-columns:1fr 1fr}.facts.mini{grid-template-columns:1fr 1fr 1fr}.facts.mini b{font-size:14px}}

/* ---------- fotos, gráficos, extras ---------- */
.thumbs{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.thumbs img{width:64px;height:64px;object-fit:cover;border-radius:14px;cursor:pointer;border:2px solid var(--paper);box-shadow:0 2px 8px -2px rgba(29,49,37,.35)}
.thumbs .more{width:64px;height:64px;border-radius:14px;display:grid;place-items:center;background:var(--mint);color:var(--moss);font-weight:700;cursor:pointer}
.foto-prev,.foto-full{width:100%;max-height:60vh;object-fit:contain;border-radius:16px;background:#0001;display:block;margin-bottom:12px}
.chart{width:100%;height:auto;display:block}
.bars{display:flex;flex-direction:column;gap:12px}
.bar-row{display:grid;grid-template-columns:minmax(90px,170px) 1fr auto;gap:12px;align-items:center}
.bar-l{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bar-t{height:14px;border-radius:99px;background:#e8e3d3;overflow:hidden}
.bar-t i{display:block;height:100%;border-radius:0 99px 99px 0;background:var(--leaf)}
.bar-v{font-variant-numeric:tabular-nums;font-weight:600;color:var(--moss)}
.foot-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:34px;padding-top:20px;border-top:1px dashed var(--line)}
.facts.w{grid-template-columns:1fr 1fr}
.field.chk{flex-direction:row;align-items:flex-start;gap:10px}.field.chk input{margin-top:3px;width:18px;height:18px;accent-color:var(--leaf);flex:none}.field.chk span{font-weight:500;color:var(--ink)}
.src a{color:var(--moss)}
@media (max-width:520px){.facts.w{grid-template-columns:1fr}.bar-row{grid-template-columns:1fr auto}.bar-t{grid-column:1/-1;order:3}}

.perenual{display:flex;gap:14px;align-items:flex-start}
.perenual>img{width:110px;height:110px;object-fit:cover;border-radius:16px;flex:none}
.plist{display:flex;flex-direction:column}
.prow{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px dashed var(--line)}
.prow .t{flex:1;min-width:0}.prow .t b{display:block}.prow .t span{color:var(--muted);font-size:13px}
@media (max-width:520px){.perenual{flex-direction:column}.perenual>img{width:100%;height:150px}}
.dlg a{color:var(--moss)}
