:root{color:#17201b;background:#f5f7f6;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:linear-gradient(90deg,rgba(23,32,27,.04) 1px,transparent 1px),linear-gradient(0deg,rgba(23,32,27,.035) 1px,transparent 1px),#f5f7f6;background-size:38px 38px}button{font:inherit}.app-shell{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;padding:20px;color:#eef5ef;background:#17201b;border-right:1px solid rgba(255,255,255,.08)}.brand{display:flex;align-items:center;gap:12px;min-height:48px;margin-bottom:28px}.brand-mark,.metric-icon{display:inline-grid;width:42px;height:42px;place-items:center;border-radius:8px}.brand-mark{color:#17201b;background:#9bdcbd}.brand strong{display:block;font-size:15px;letter-spacing:0}.brand small{color:#a9b6ae;font-size:12px}nav{display:grid;gap:8px}nav button,.icon-button{display:inline-flex;align-items:center;justify-content:flex-start;gap:10px;min-height:42px;border:0;border-radius:8px;cursor:pointer;color:inherit;background:transparent;transition:background .16s ease,transform .16s ease,color .16s ease}nav button{width:100%;padding:0 12px;color:#c9d3ce}nav button:hover,nav button.active{color:#fff;background:#ffffff1a}nav button:active,.icon-button:active{transform:translateY(1px)}main{width:100%;max-width:1480px;padding:28px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:22px}.eyebrow{color:#5f6b63;font-size:13px;font-weight:700;text-transform:uppercase}h1,h2,p{margin:0}h1{margin-top:4px;font-size:32px;line-height:1.1;letter-spacing:0}h2{font-size:18px;letter-spacing:0}.topbar-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px}.last-update{min-width:116px;color:#5f6b63;font-size:13px;text-align:right}.icon-button{width:42px;justify-content:center;border:1px solid #d7ddd8;color:#17201b;background:#fff}.status-pill{display:inline-flex;align-items:center;min-height:28px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:800;white-space:nowrap}.status-pill.normal{color:#0d5936;background:#dff5e9}.status-pill.attention{color:#795100;background:#fff0c2}.status-pill.alert{color:#8b1d16;background:#ffe0dd}.status-pill.unknown{color:#4d5660;background:#e8ecef}.metric-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;margin-bottom:14px}.metric-card,.panel{border:1px solid #d7ddd8;border-radius:8px;background:#fffffff0;box-shadow:0 14px 40px #17201b12}.metric-card{min-height:176px;padding:18px;transition:transform .16s ease,box-shadow .16s ease}.metric-card:hover{transform:translateY(-2px);box-shadow:0 18px 44px #17201b1a}.metric-card.normal{border-top:3px solid #2f9e65}.metric-card.attention{border-top:3px solid #d99700}.metric-card.alert{border-top:3px solid #e0564a}.metric-card.unknown{border-top:3px solid #8b949e}.metric-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.metric-icon{color:#17201b;background:#edf2ee}.metric-label{color:#5f6b63;font-size:13px;font-weight:700}.metric-value{display:flex;align-items:baseline;gap:6px;margin-top:8px;font-size:34px;font-weight:850;line-height:1;letter-spacing:0}.metric-value span{color:#5f6b63;font-size:15px;font-weight:800}.metric-detail{margin-top:16px;color:#68756d;font-size:13px}.content-grid,.docs-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(320px,.8fr);gap:14px}.panel{padding:18px}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.panel-heading p{margin-top:4px;color:#68756d;font-size:13px}.history-controls{display:grid;grid-template-columns:repeat(3,minmax(140px,1fr)) minmax(260px,auto);gap:12px;align-items:end;margin:-2px 0 16px}.history-controls label{display:grid;gap:6px}.history-controls label span{color:#5f6b63;font-size:12px;font-weight:800;text-transform:uppercase}.history-controls select,.history-controls input{width:100%;min-height:40px;padding:0 12px;border:1px solid #d7ddd8;border-radius:8px;color:#17201b;background:#fff;font:inherit;font-size:14px}.history-controls select{padding-right:34px}.metric-toggles{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.metric-toggles button{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 12px;border:1px solid #d7ddd8;border-radius:8px;color:#5f6b63;background:#fff;cursor:pointer;font-size:13px;font-weight:800;transition:border-color .16s ease,background .16s ease,color .16s ease,transform .16s ease}.metric-toggles button:hover,.metric-toggles button.active{border-color:#8db7a0;color:#17201b;background:#edf7f1}.metric-toggles button:active{transform:translateY(1px)}.metric-swatch{width:10px;height:10px;border-radius:999px;flex:0 0 auto}.metric-swatch.temperature{background:#e0564a}.metric-swatch.humidity{background:#147f8b}.metric-swatch.vpd{background:#7957d5}.custom-range{display:grid;grid-column:1 / -1;grid-template-columns:repeat(2,minmax(180px,260px));gap:12px;justify-content:start}.chart-shell{width:100%;height:330px;min-height:330px}.chart-shell.tall{height:520px;min-height:520px}.cycle-calendar-panel{grid-column:1 / -1}.cycle-summary{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.cycle-chip{display:inline-flex;align-items:baseline;gap:7px;min-height:34px;padding:0 11px;border-radius:999px;border:1px solid rgba(23,32,27,.08);color:#17201b;background:#eef3ef}.cycle-chip strong{font-size:12px}.cycle-chip small{color:#5f6b63;font-size:11px;font-weight:800}.cycle-chip.germination,.calendar-day.germination{background:#e7f6ff}.cycle-chip.seedling,.calendar-day.seedling{background:#def8e9}.cycle-chip.vegetative,.calendar-day.vegetative{background:#d8f1c4}.cycle-chip.early_flower,.calendar-day.early_flower{background:#fff2bf}.cycle-chip.mid_flower,.calendar-day.mid_flower{background:#ffe3c8}.cycle-chip.late_flower,.calendar-day.late_flower{background:#f3dffc}.calendar-weekdays,.cycle-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}.calendar-weekdays{margin-bottom:7px}.calendar-weekdays span{color:#68756d;font-size:11px;font-weight:850;text-align:center;text-transform:uppercase}.calendar-blank,.calendar-day{min-height:54px;border-radius:8px}.calendar-day{position:relative;display:grid;align-content:center;gap:3px;padding:7px 6px;border:1px solid rgba(23,32,27,.08);color:#17201b;text-align:center}.calendar-day span{font-size:12px;font-weight:900}.calendar-day small{color:#5f6b63;font-size:10px;font-weight:750}.calendar-day.past{opacity:.58}.calendar-day.current{opacity:1;border-color:#17201b;box-shadow:0 0 0 2px #fff,0 0 0 5px #2f9e656b;transform:translateY(-1px)}.calendar-day.current:after{content:"Hoje";position:absolute;top:-8px;right:5px;padding:2px 6px;border-radius:999px;color:#fff;background:#17201b;font-size:9px;font-weight:900}.alert-list{display:grid;gap:10px}.alert-item{padding:14px;border-radius:8px;border:1px solid #e1e6e2;background:#fff}.alert-item.attention{border-left:4px solid #d99700}.alert-item.alert{border-left:4px solid #e0564a}.alert-item strong{display:block;margin-bottom:5px}.alert-item p{color:#68756d;font-size:13px}.full-panel{min-height:calc(100vh - 122px)}.device-table{display:grid;overflow:hidden;border:1px solid #d7ddd8;border-radius:8px}.device-row{display:grid;grid-template-columns:minmax(220px,1.5fr) minmax(140px,.8fr) minmax(110px,.6fr) minmax(100px,.6fr) minmax(130px,.7fr);gap:14px;align-items:center;min-height:64px;padding:10px 14px;border-bottom:1px solid #e5ebe6;background:#fff}.device-row:last-child{border-bottom:0}.device-row.head{min-height:42px;color:#5f6b63;font-size:12px;font-weight:800;text-transform:uppercase;background:#eef3ef}.device-row small{display:block;margin-top:3px;color:#68756d}.online,.offline{display:inline-flex;align-items:center;gap:7px;font-weight:800}.online{color:#0d773f}.offline{color:#8b1d16}.docs-grid{align-items:start}pre{overflow:auto;min-height:254px;margin:0;padding:14px;border-radius:8px;color:#e8f2eb;background:#17201b;font-size:13px;line-height:1.55}.empty-state{display:grid;min-height:240px;place-items:center;align-content:center;gap:10px;color:#68756d;text-align:center}.empty-state strong{color:#17201b;font-size:16px}.empty-state span{max-width:360px;font-size:13px}.error-banner{margin-bottom:14px;padding:12px 14px;border:1px solid #ffc9c3;border-radius:8px;color:#8b1d16;background:#fff0ee}.loading-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.loading-grid span{height:180px;border-radius:8px;background:linear-gradient(90deg,#e8ede9,#fff,#e8ede9);background-size:220% 100%;animation:shimmer 1.2s infinite linear}.spin{animation:spin .8s linear infinite}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:1120px){.app-shell{grid-template-columns:88px minmax(0,1fr)}.sidebar{padding:16px}.brand{justify-content:center}.brand div,nav button span{display:none}nav button{justify-content:center;padding:0}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.content-grid,.docs-grid{grid-template-columns:1fr}.history-controls{grid-template-columns:repeat(3,minmax(0,1fr))}.metric-toggles{grid-column:1 / -1;justify-content:flex-start}.custom-range{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.app-shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;padding:12px}.brand{display:none}nav{grid-template-columns:repeat(4,minmax(0,1fr))}nav button{min-height:44px}main{padding:18px}.topbar{align-items:flex-start;flex-direction:column}.topbar-actions{width:100%;justify-content:space-between}h1{font-size:26px}.metric-grid,.history-controls{grid-template-columns:1fr}.metric-toggles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.metric-toggles button{justify-content:center;padding:0 8px}.custom-range{grid-template-columns:1fr}.device-table{overflow-x:auto}.device-row{min-width:780px}.calendar-weekdays,.cycle-calendar{gap:4px}.calendar-blank,.calendar-day{min-height:48px}.calendar-day{padding:6px 3px}.calendar-day span{font-size:10px}.calendar-day small{font-size:9px}.loading-grid{grid-template-columns:1fr}}
