:root{--bg:#eceef0;--panel:#fff;--border:#e3e7eb;--text:#1f2933;--muted:#6b7280;--accent:#2563eb;--radius:16px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,sans-serif}.card{background:var(--panel);border-radius:var(--radius);padding:1.25rem;box-shadow:0 1px 2px #1018280a}.muted{color:var(--muted)}.app{flex-direction:column;gap:16px;height:100vh;padding:16px;display:flex;overflow:hidden}.navbar{flex:none;align-items:center;gap:2.5rem;height:84px;padding:0 1.5rem 0 2.25rem;display:flex}.logo{flex:none;width:auto;height:48px;display:block}.navbar-greeting{letter-spacing:-.01em;white-space:nowrap;font-size:1.55rem;font-weight:800}.navbar-spacer{flex:1}.profile-menu{flex:none;position:relative}.profile-btn{cursor:pointer;color:#fff;letter-spacing:.02em;background:#2e7d32;border:none;border-radius:50%;justify-content:center;align-items:center;width:42px;height:42px;font-size:.95rem;font-weight:700;transition:background-color .15s;display:inline-flex}.profile-btn:hover{background:#276b2b}.profile-dropdown{border:1px solid var(--border);z-index:40;background:#fff;border-radius:12px;min-width:210px;padding:.45rem;animation:.15s profileDrop;position:absolute;top:calc(100% + 10px);right:0;box-shadow:0 16px 40px #1018282e}@keyframes profileDrop{0%{opacity:0;transform:translateY(-4px)}}.profile-id{border-bottom:1px solid var(--border);margin-bottom:.4rem;padding:.5rem .6rem .65rem}.profile-name{font-size:.92rem;font-weight:700}.profile-email{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.78rem;overflow:hidden}.profile-signout{text-align:left;cursor:pointer;width:100%;color:var(--text);background:0 0;border:none;border-radius:8px;padding:.5rem .6rem;font-size:.9rem}.profile-signout:hover{color:#b91c1c;background:#fef4f4}@media (prefers-reduced-motion:reduce){.profile-dropdown{animation:none}}.shell{flex:1;grid-template-columns:264px 1fr;gap:16px;min-height:0;display:grid}.main{min-width:0;min-height:0;display:flex}.view-fade{flex:1;min-width:0;min-height:0;animation:.22s viewFade;display:flex}@keyframes viewFade{0%{opacity:0;transform:translateY(6px)}}@media (prefers-reduced-motion:reduce){.view-fade{animation:none}}.dashboard-main{flex:1;grid-template:"stats stats""charts chat"1fr/1fr 1fr;gap:16px;min-width:0;min-height:0;display:grid}.sidebar{flex-direction:column;gap:16px;min-height:0;display:flex;overflow-y:auto}.context-card{flex-direction:column;display:flex}.context-farm{border-bottom:1px solid var(--border);align-items:center;gap:.5rem;min-width:0;margin-bottom:.95rem;padding-bottom:.85rem;font-size:1.02rem;font-weight:700;display:flex}.context-farm svg{color:#2e7d32;flex:none}.context-farm span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.auid{color:var(--muted);word-break:break-all;margin-top:.25rem;font-size:.8rem;display:inline-block}.menu{flex-direction:column;gap:4px;display:flex}.menu button{text-align:left;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:8px;align-items:center;gap:.7rem;padding:.7rem .9rem;font-size:.95rem;display:flex}.menu-icon{color:var(--muted);flex:none;display:inline-flex}.menu button.active .menu-icon{color:#fff}.menu button:disabled .menu-icon{color:#b8c0cc}.menu button:not(.active):hover:not(:disabled){background:#eef2f7}.menu button.active{color:#fff;background:#2e7d32;font-weight:600}.menu button.active:hover{background:#276b2b}.menu button:disabled{color:#9aa3af;cursor:not-allowed}.stats-area{grid-area:stats}.stats-bar{flex-direction:column;gap:.6rem;height:100%;display:flex}.stats-bar.muted{justify-content:center;align-items:center}.stats-when{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-size:.75rem}.stats-items{gap:.6rem;display:flex}.stat{border:1px solid var(--border);background:#fafbfc;border-radius:10px;flex-direction:column;flex:1 1 0;gap:.3rem;min-width:0;padding:.7rem .85rem;display:flex}.stat-label{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-size:.72rem}.stat-value{font-size:1.35rem;font-weight:700}.stat-unit{color:var(--muted);font-size:.75rem;font-weight:400}.charts-col{grid-area:charts;min-height:0;overflow-y:auto}.charts-header{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.data-through{color:var(--muted);font-size:.95rem}.header-actions{align-items:center;gap:.6rem;display:flex}.refresh-btn{border:1px solid var(--accent);color:var(--accent);cursor:pointer;background:#eef4ff;border-radius:8px;padding:6px 12px;font-size:.85rem}.refresh-btn:disabled{opacity:.5;cursor:default}.window-picker button{border:1px solid var(--border);background:var(--panel);cursor:pointer;border-radius:8px;margin-left:6px;padding:6px 14px;font-size:.85rem}.window-picker button.active{background:var(--accent);color:#fff;border-color:var(--accent)}.window-picker button:disabled{opacity:.5;cursor:default}.chart-grid{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.chart-card{border:1px solid var(--border);border-radius:12px;padding:.9rem .9rem .4rem}.chart-card h3{margin:0 0 .4rem;font-size:.9rem}.chart-unit{color:var(--muted);font-size:.78rem;font-weight:400}.state{text-align:center;color:var(--muted);border:1px dashed var(--border);border-radius:8px;margin:2rem 0;padding:1.5rem}.state.error{color:#b91c1c;border-style:solid;border-color:#fecaca}.chat-col{grid-area:chat;min-width:0;min-height:0;display:flex}.chat-panel{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.presets{flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem;display:flex}.presets button{border:1px solid var(--accent);color:var(--accent);cursor:pointer;background:#eef4ff;border-radius:999px;padding:6px 12px;font-size:.82rem}.presets button:disabled{opacity:.5;cursor:default}.chat-alert{color:#8a5a00;background:#fff7e6;border:1px solid #f5c97a;border-radius:10px;align-items:center;gap:.5rem;margin-bottom:.6rem;padding:8px 12px;font-size:.82rem;display:flex}.chat-alert span{flex:1}.chat-alert button{color:#8a5a00;cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:1.1rem;line-height:1}.messages{flex-direction:column;flex:1;gap:.6rem;min-width:0;min-height:0;padding:.5rem .25rem;display:flex;overflow-y:auto}.messages .empty{text-align:center;max-width:280px;margin:auto;font-size:.9rem}.msg{white-space:pre-wrap;border-radius:10px;max-width:85%;padding:.7rem .9rem;font-size:.88rem;line-height:1.45}.msg.user{background:var(--accent);color:#fff;border-bottom-right-radius:2px;align-self:flex-end}.msg.assistant{color:var(--text);background:#f1f4f8;border-bottom-left-radius:2px;align-self:flex-start}.msg.pending{color:var(--muted);font-style:italic}.msg.md{white-space:normal;min-width:0;max-width:100%}.msg.md>:first-child{margin-top:0}.msg.md>:last-child{margin-bottom:0}.msg.md p{margin:0 0 .6rem}.msg.md h1,.msg.md h2,.msg.md h3,.msg.md h4{margin:.9rem 0 .45rem;font-weight:700;line-height:1.25}.msg.md h1{font-size:1.05rem}.msg.md h2{font-size:1rem}.msg.md h3,.msg.md h4{font-size:.92rem}.msg.md ul,.msg.md ol{margin:0 0 .6rem;padding-left:1.25rem}.msg.md li{margin:.15rem 0}.msg.md li>p{margin:0}.msg.md a{color:var(--accent);text-decoration:underline}.msg.md strong{font-weight:700}.msg.md code{background:#e4e9f0;border-radius:4px;padding:.08em .34em;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.82em}.msg.md pre{color:#e6edf3;background:#1f2733;border-radius:8px;margin:0 0 .6rem;padding:.7rem .8rem;overflow-x:auto}.msg.md pre code{color:inherit;background:0 0;padding:0;font-size:.82rem}.msg.md blockquote{border-left:3px solid var(--border);color:var(--muted);margin:0 0 .6rem;padding:.2rem 0 .2rem .8rem}.msg.md .md-table-wrap{max-width:100%;margin:0 0 .6rem;overflow-x:auto}.msg.md table{border-collapse:collapse;width:max-content;min-width:100%;font-size:.82rem}.msg.md th,.msg.md td{text-align:left;vertical-align:top;border:1px solid #d8dee8;padding:.35rem .55rem}.msg.md th{white-space:nowrap;background:#e9eef5;font-weight:700}.msg.md tr:nth-child(2n) td{background:#f6f8fb}.msg-activity-row{align-self:center;display:flex}.msg-activity{color:#2e7d32;cursor:help;background:#f3faf2;border:1px solid #d8ecd6;border-radius:999px;padding:.32rem .8rem;font-family:inherit;font-size:.78rem;font-weight:700;transition:background-color .15s,border-color .15s}.msg-activity:hover,.msg-activity:focus-visible{background:#e8f5e6;border-color:#bfe0bb;outline:none}.activity-pop{z-index:60;border:1px solid var(--border);pointer-events:none;background:#fff;border-radius:12px;flex-direction:column;gap:.25rem;max-width:320px;padding:.7rem .85rem;animation:.14s activityPop;display:flex;position:fixed;box-shadow:0 12px 32px #1018282e}.activity-pop-kind{letter-spacing:.02em;text-transform:uppercase;color:#2e7d32;font-size:.7rem;font-weight:700}.activity-pop-note{color:var(--text);white-space:pre-wrap;word-break:break-word;font-size:.86rem;line-height:1.45}@keyframes activityPop{0%{opacity:0}}@media (prefers-reduced-motion:reduce){.activity-pop{animation:none}}.chat-input{border-top:1px solid var(--border);gap:.5rem;padding-top:.75rem;display:flex}.chat-input input{border:1px solid var(--border);border-radius:8px;flex:1;padding:.6rem .75rem;font-size:.9rem}.chat-input button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:.6rem 1.1rem;font-size:.9rem}.chat-input button:disabled{opacity:.5;cursor:default}.boot{height:100vh;color:var(--muted);justify-content:center;align-items:center;display:flex}.auth-shell{background:#fff;grid-template-columns:1fr 1fr;align-items:start;min-height:100vh;display:grid}.auth-form-side{min-height:100vh;color:var(--text);justify-content:flex-end;align-items:flex-start;padding:22vh 0 56px;display:flex}.auth-form-side.top{padding-top:10vh}.auth-form-inner{width:30vw;min-width:320px;max-width:560px;margin-right:56px}.auth-form-inner.wide{width:34vw;max-width:640px}.auth-brand{align-items:center;gap:8px;margin-bottom:26px;display:flex}.auth-brand img{width:auto;height:42px}.onboard-brand{justify-content:space-between}.onboard-signout{color:var(--muted);border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:999px;align-items:center;gap:.4rem;padding:.45rem .9rem;font-size:.85rem;font-weight:600;transition:color .18s,border-color .18s,background-color .18s;display:inline-flex}.onboard-signout:hover{color:#b91c1c;background:#fef4f4;border-color:#f3c0c0}.onboard-signout-icon{font-size:.95rem;line-height:1}.auth-back{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0;font-size:.85rem}.auth-back:hover{color:var(--text)}.auth-headline{letter-spacing:-.02em;margin:0 0 14px;font-size:2.1rem;font-weight:700;line-height:1.22}.auth-headline.sm{font-size:1.7rem}.auth-lede{color:var(--muted);margin:0 0 30px;font-size:1rem;line-height:1.55}.auth-form-side form{flex-direction:column;display:flex}.auth-collapse{opacity:0;grid-template-rows:0fr;transition:grid-template-rows .35s,opacity .25s;display:grid}.auth-collapse.open{opacity:1;grid-template-rows:1fr}.auth-collapse-inner{min-height:0;overflow:hidden}.auth-collapse-inner .auth-remember{padding-top:16px}.auth-field{flex-direction:column;gap:8px;margin-bottom:18px;display:flex}.auth-field .lbl{color:var(--text);font-size:.95rem;font-weight:600}.auth-field input{border:1px solid var(--border);color:var(--text);background:#fff;border-radius:8px;padding:.8rem .9rem;font-size:1.02rem}.auth-field input::placeholder{color:#9aa3af}.auth-field input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #2563eb1f}.auth-pw-wrap{display:flex;position:relative}.auth-pw-wrap input{flex:1;padding-right:3.4rem}.auth-pw-toggle{color:var(--muted);cursor:pointer;background:0 0;border:none;font-size:.9rem;position:absolute;top:50%;right:.85rem;transform:translateY(-50%)}.auth-pw-toggle:hover{color:var(--text)}.auth-btn{background:var(--text);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:.85rem 1rem;font-size:1.02rem;font-weight:600}.auth-btn:hover{background:#111827}.auth-btn:disabled{opacity:.5;cursor:default}.auth-remember{color:var(--text);align-items:center;gap:9px;font-size:.92rem;display:flex}.auth-remember input{width:17px;height:17px;accent-color:var(--text)}.auth-alt{color:var(--muted);margin-top:30px;font-size:.95rem}.auth-alt button{color:var(--text);cursor:pointer;font-weight:600;font-size:inherit;background:0 0;border:none;padding:0}.auth-err{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;align-items:center;gap:.5rem;margin-bottom:18px;padding:.6rem .8rem;font-size:.84rem;line-height:1.3;display:flex}.auth-image-side{background:url(/auth-side.png) 50%/cover no-repeat,linear-gradient(135deg,#ff5f8f 0%,#c026d3 48%,#7c3aed 100%);border-radius:18px;align-self:start;height:80vh;margin:10vh 6vw 10vh 0;position:sticky;top:10vh}@media (width<=760px){.auth-shell{grid-template-columns:1fr}.auth-image-side{display:none}.auth-form-side{justify-content:center;padding:40px 28px}.auth-form-inner{margin-right:0}}.onboard-progress{margin-bottom:1.7rem}.progress-track{background:#eceef2;border-radius:999px;height:6px;overflow:hidden}.progress-fill{background:linear-gradient(90deg,#2e7d32 0%,#4caf28 100%);border-radius:999px;height:100%;transition:width .4s cubic-bezier(.4,0,.2,1);display:block}.progress-copy{margin-top:.95rem;animation:.3s progressCopyIn}.progress-count{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:.78rem;font-weight:600}.progress-title{margin:.3rem 0 .35rem;font-size:1.15rem;font-weight:700;display:block}.progress-desc{color:var(--muted);margin:0;font-size:.92rem;line-height:1.5}@keyframes progressCopyIn{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.progress-fill{transition:none}.progress-copy{animation:none}}.onboard-step.fwd{animation:.3s onboardStepFwd}.onboard-step.back{animation:.3s onboardStepBack}@keyframes onboardStepFwd{0%{opacity:0;transform:translate(18px)}to{opacity:1;transform:translate(0)}}@keyframes onboardStepBack{0%{opacity:0;transform:translate(-18px)}to{opacity:1;transform:translate(0)}}@media (prefers-reduced-motion:reduce){.onboard-step.fwd,.onboard-step.back{animation:none}}.auth-form-side .onboard-body{gap:1.1rem}.auth-form-side .onboard-body label{gap:.45rem;font-size:.95rem}.auth-form-side .onboard-body input,.auth-form-side .onboard-body select{padding:.8rem .9rem;font-size:1.02rem}.auth-form-side .onboard-body input:focus,.auth-form-side .onboard-body select:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #2563eb1f}.auth-form-side .optional{font-size:.85rem}.auth-form-side .hint{font-size:.92rem}.auth-form-side .crops-label{font-size:.82rem}.auth-form-side .onboard-nav{gap:.75rem;margin-top:1.6rem}.auth-form-side .auth-submit{background:var(--text);padding:.82rem 1.5rem;font-size:1.02rem}.auth-form-side .auth-submit:hover:not(:disabled){background:#111827}.auth-form-side .ghost-btn{padding:.72rem 1.2rem;font-size:.98rem}.onboard-body label{color:var(--text);flex-direction:column;gap:.3rem;font-size:.85rem;font-weight:600;display:flex}.onboard-body input,.onboard-body select{border:1px solid var(--border);border-radius:8px;padding:.6rem .7rem;font-size:.92rem;font-weight:400}.optional{color:var(--muted);font-size:.78rem;font-weight:400}.auth-error{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:.55rem .75rem;font-size:.85rem}.auth-submit{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:.7rem 1rem;font-size:.95rem;font-weight:600}.auth-submit:disabled{opacity:.5;cursor:default}.link-btn{color:var(--accent);cursor:pointer;font-size:inherit;background:0 0;border:none;padding:0}.link-btn.danger{color:#b91c1c}.ghost-btn{background:var(--panel);border:1px solid var(--border);cursor:pointer;border-radius:8px;padding:.55rem .9rem;font-size:.9rem}.onboard-body{flex-direction:column;gap:.85rem;display:flex}.onboard-body .row{gap:.75rem;display:flex}.onboard-body .row label{flex:1}.hint{color:var(--muted);margin:0;font-size:.82rem}.tower-block{border:1px solid var(--border);background:#fafbfc;border-radius:12px;flex-direction:column;gap:.7rem;padding:1rem;animation:.28s towerExpand;display:flex}@keyframes towerExpand{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.tower-block{animation:none}}.tower-block.collapsed{background:#fff;padding:0;animation:none}.tower-summary{cursor:pointer;text-align:left;width:100%;font:inherit;color:var(--text);background:0 0;border:none;border-radius:12px;justify-content:space-between;align-items:center;gap:.75rem;padding:.85rem 1rem;transition:background-color .18s;display:flex}.tower-summary:hover{background:#f4f6f9}.tower-summary-main{align-items:baseline;gap:.55rem;min-width:0;display:flex}.tower-summary-main .muted{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tower-summary-edit{color:var(--accent);flex:none;font-size:.85rem;font-weight:600}.tower-head{justify-content:space-between;align-items:center;display:flex}.crops{flex-direction:column;gap:.6rem;display:flex}.crops-label{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-size:.78rem}.crop-block{border:1px dashed var(--border);background:var(--panel);border-radius:10px;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.onboard-body.review{gap:.7rem}.review-card{border:1px solid var(--border);background:#fff;border-radius:14px;flex-direction:column;padding:1.1rem 1.2rem;display:flex}.review-eyebrow{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:.72rem;font-weight:700}.review-farm{background:linear-gradient(135deg,#f3faf2 0%,#fff 60%);border-color:#d8ecd6}.review-farm-name{letter-spacing:-.01em;margin:.35rem 0 .5rem;font-size:1.35rem;font-weight:700}.review-meta{color:var(--text);align-items:center;gap:.4rem;margin:0;font-size:.95rem;display:flex}.review-pin{font-size:.9rem}.review-section-label{margin-top:.5rem;padding:0 .2rem}.review-tower-card{gap:.7rem}.review-tower-top{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.review-tower-name{margin:0;font-size:1.08rem;font-weight:700}.review-crop-count{color:var(--muted);background:#f1f4f8;border-radius:999px;flex:none;padding:.2rem .6rem;font-size:.8rem;font-weight:600}.review-chips{flex-wrap:wrap;gap:.4rem;display:flex}.review-chip{color:var(--text);border:1px solid var(--border);background:#f1f4f8;border-radius:8px;padding:.25rem .6rem;font-size:.8rem;font-weight:500}.review-chip.mono{letter-spacing:-.01em;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.74rem}.review-chip.ghost{color:var(--muted);background:0 0;border-style:dashed}.review-crop-list{border-top:1px solid var(--border);margin:.2rem 0 0;padding:0;list-style:none}.review-crop{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:.75rem;padding:.55rem 0;display:flex}.review-crop:last-child{border-bottom:none;padding-bottom:0}.review-crop-name{font-size:.95rem;font-weight:600}.review-crop-tags{align-items:center;gap:.4rem;display:flex}.review-crop-species{color:var(--muted);font-size:.85rem}.onboard-nav{align-items:center;margin-top:1.25rem;display:flex}.onboard-nav .spacer{flex:1}.context-switch{border:1px solid var(--border);background:var(--panel);cursor:pointer;text-align:left;border-radius:10px;justify-content:space-between;align-items:center;gap:.6rem;width:100%;padding:.7rem .8rem;display:flex}.context-switch:hover{border-color:var(--accent);background:#f6f9ff}.context-switch-meta{flex-direction:column;gap:.18rem;min-width:0;display:flex}.context-switch-label{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:.68rem}.context-switch-value{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;font-weight:600;overflow:hidden}.context-switch-action{color:var(--accent);flex:none;align-items:center;display:inline-flex}.context-growing{border-left:3px solid #2e7d32;flex-direction:column;gap:.18rem;min-width:0;margin-top:.95rem;padding-left:.8rem;display:flex}.context-growing-label{text-transform:uppercase;letter-spacing:.05em;color:#5f8a63;font-size:.68rem}.context-growing-value{color:#2e7d32;text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;font-weight:700;overflow:hidden}.activity-view{flex:1;justify-content:center;min-width:0;min-height:0;display:flex;overflow-y:auto}.activity-card{flex-direction:column;align-self:flex-start;gap:1.1rem;width:100%;max-width:720px;display:flex}.activity-head{align-items:baseline;gap:.6rem;display:flex}.activity-head h2{margin:0;font-size:1.25rem}.activity-composer{border:1px solid var(--border);background:#fafbfc;border-radius:12px;flex-direction:column;gap:.6rem;padding:1rem;display:flex}.activity-composer-row{gap:.6rem;display:flex}.activity-composer select{flex:1;min-width:0}.activity-composer select,.activity-composer input[type=date],.activity-composer textarea{border:1px solid var(--border);color:var(--text);background:#fff;border-radius:8px;padding:.6rem .7rem;font-family:inherit;font-size:.95rem}.activity-composer textarea{resize:vertical;min-height:2.6rem}.activity-composer select:focus,.activity-composer input:focus,.activity-composer textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #2563eb1f}.activity-composer-actions{justify-content:flex-end;display:flex}.activity-empty{margin:0;font-size:.92rem;line-height:1.5}.activity-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.activity-item{border-top:1px solid var(--border);align-items:flex-start;gap:.85rem;padding:.9rem 0;display:flex}.activity-item:first-child{border-top:none}.activity-meta{align-items:center;gap:.6rem;display:flex}.activity-kind{letter-spacing:.01em;white-space:nowrap;color:var(--muted);background:#eef2f7;border-radius:999px;flex:none;padding:.18rem .55rem;font-size:.72rem;font-weight:700}.activity-kind.k-recommendation{color:#1d4ed8;background:#e7f0ff}.activity-kind.k-adjustment{color:#b45309;background:#fef3e2}.activity-kind.k-maintenance{color:#6d28d9;background:#f1edff}.activity-kind.k-observation{color:#2e7d32;background:#e7f5e7}.activity-body{flex-direction:column;flex:1;gap:.4rem;min-width:0;display:flex}.activity-note{word-break:break-word;margin:0;font-size:.95rem;line-height:1.45}.activity-when{color:var(--muted);font-size:.78rem}.activity-del{color:var(--muted);cursor:pointer;opacity:0;background:0 0;border:none;flex:none;padding:0 .2rem;font-size:1.3rem;line-height:1;transition:opacity .15s,color .15s}.activity-item:hover .activity-del{opacity:1}.activity-del:hover{color:#b91c1c}.reports-view{flex:1;grid-template-columns:40fr 60fr;gap:16px;min-width:0;min-height:0;display:grid}.report-config{flex-direction:column;gap:.9rem;min-height:0;display:flex}.report-config-title{flex:none;margin:0;font-size:1.2rem}.config-body{flex-direction:column;flex:1;gap:1.1rem;min-height:0;display:flex;overflow-y:auto}.report-config-footer{border-top:1px solid var(--border);flex-direction:column;flex:none;gap:.6rem;padding-top:.9rem;display:flex}.config-group{flex-direction:column;gap:.45rem;display:flex}.config-head{flex-direction:column;gap:.1rem;display:flex}.config-label{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:.72rem;font-weight:700}.config-sub{color:var(--muted);font-size:.78rem}.config-checks{flex-wrap:wrap;gap:.5rem 1.1rem;display:flex}.config-checks .config-check{flex:none}.config-check{color:var(--text);cursor:pointer;align-items:center;gap:.55rem;font-size:.88rem;display:flex}.config-check input{accent-color:#2e7d32;width:16px;height:16px}.config-chip{border:1px solid var(--border);background:var(--panel);color:var(--text);cursor:pointer;border-radius:999px;align-self:flex-start;margin-top:.4rem;padding:.4rem .75rem;font-size:.82rem;font-weight:600}.config-chip.active{color:#fff;background:#2e7d32;border-color:#2e7d32}.config-chip:disabled{opacity:.5;cursor:not-allowed}.config-target{color:var(--text);text-overflow:ellipsis;white-space:nowrap;background:#f4f6f9;border-radius:8px;padding:.55rem .7rem;font-size:.85rem;overflow:hidden}.seg{background:#eef2f7;border-radius:10px;gap:4px;padding:4px;display:flex}.seg.vertical{flex-direction:column}.seg button{color:var(--muted);cursor:pointer;text-align:center;background:0 0;border:none;border-radius:7px;flex:1;padding:.45rem .8rem;font-size:.85rem;font-weight:500;transition:background-color .15s,color .15s}.seg button:hover:not(.active){color:var(--text)}.seg button.active{color:#fff;background:#2e7d32;font-weight:600;box-shadow:0 1px 2px #1018281f}.report-preview{min-width:0;min-height:0;overflow-y:auto}.report-header{border-bottom:1px solid var(--border);margin-bottom:1.5rem;padding-bottom:1.3rem}.report-kicker{letter-spacing:.07em;text-transform:uppercase;color:#2e7d32;font-size:.74rem;font-weight:700}.report-h1{letter-spacing:-.01em;margin:.25rem 0 1.1rem;font-size:1.7rem;font-weight:700}.report-meta{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem 1.6rem;margin:0;display:grid}.report-meta>div{flex-direction:column;gap:.2rem;min-width:0;display:flex}.report-meta dt{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:.7rem;font-weight:700}.report-meta dd{color:var(--text);margin:0;font-size:.95rem}.markdown>:first-child{margin-top:0}.markdown>:last-child{margin-bottom:0}.markdown h1{margin:0 0 .6rem;font-size:1.5rem}.markdown h2{margin:1.4rem 0 .6rem;font-size:1.15rem}.markdown h3{margin:1rem 0 .4rem;font-size:1rem}.markdown p{margin:0 0 .6rem;line-height:1.55}.markdown ul{margin:0 0 .6rem;padding-left:1.25rem}.markdown li{margin:.2rem 0}.markdown strong{font-weight:700}.markdown blockquote{border-left:3px solid var(--border);color:var(--muted);background:#f7f9fb;border-radius:0 8px 8px 0;margin:0 0 .6rem;padding:.4rem .9rem}.markdown code{background:#eef2f7;border-radius:4px;padding:.08em .34em;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.85em}.markdown .md-table-wrap{max-width:100%;margin:0 0 .8rem;overflow-x:auto}.markdown table{border-collapse:collapse;width:max-content;min-width:100%;font-size:.88rem}.markdown th,.markdown td{text-align:left;vertical-align:top;border:1px solid #d8dee8;padding:.45rem .7rem}.markdown th{white-space:nowrap;background:#eef2f5;font-weight:700}.markdown tr:nth-child(2n) td{background:#f7f9fb}@media print{body{background:#fff}.navbar,.sidebar,.report-config{display:none!important}.app,.shell,.main,.view-fade,.reports-view,.report-preview{gap:0!important;height:auto!important;min-height:0!important;padding:0!important;display:block!important;overflow:visible!important}.report-preview{max-width:none;box-shadow:none;border:none;padding:0}}.modal-overlay{z-index:50;background:#0f172a73;justify-content:center;align-items:center;padding:24px;animation:.18s modalFade;display:flex;position:fixed;inset:0}.modal-card{background:var(--panel);border-radius:16px;flex-direction:column;width:100%;max-width:440px;max-height:80vh;animation:.2s cubic-bezier(.34,1.3,.64,1) modalPop;display:flex;overflow:hidden;box-shadow:0 24px 60px #10182847}.modal-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:1.1rem 1.25rem;display:flex}.modal-head h2{margin:0;font-size:1.1rem}.modal-close{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0 .2rem;font-size:1.5rem;line-height:1}.modal-close:hover{color:var(--text)}@keyframes modalFade{0%{opacity:0}to{opacity:1}}@keyframes modalPop{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@media (prefers-reduced-motion:reduce){.modal-overlay,.modal-card{animation:none}}.switcher-body{flex-direction:column;gap:1.1rem;padding:.9rem 1.1rem 1.2rem;display:flex;overflow-y:auto}.switcher-farm-head{align-items:center;gap:.45rem;margin-bottom:.5rem;font-size:.95rem;display:flex}.switcher-farm-head svg{color:#2e7d32;flex:none}.switcher-empty{margin:0;font-size:.85rem}.switcher-towers{flex-direction:column;gap:6px;display:flex}.switcher-tower{border:1px solid var(--border);background:var(--panel);cursor:pointer;text-align:left;border-radius:10px;justify-content:space-between;align-items:center;gap:.5rem;padding:.7rem .85rem;font-size:.95rem;display:flex}.switcher-tower:hover{background:#eef2f7}.switcher-tower.active{border-color:var(--accent);background:#f6f9ff}.switcher-tower-label{font-weight:600}.switcher-tower-meta{color:var(--muted);align-items:center;gap:.6rem;font-size:.8rem;display:flex}.switcher-check{color:var(--accent);font-weight:700}.manage-grid{flex:1;grid-template-columns:1fr 1fr;gap:16px;min-width:0;min-height:0;display:grid}.pane{min-height:0;overflow-y:auto}.pane-head{justify-content:space-between;align-items:center;gap:.6rem;margin-bottom:1rem;display:flex}.pane-head h2{margin:0;font-size:1.2rem}.auth-submit.small{padding:.4rem .8rem;font-size:.85rem}.add-tower{gap:.6rem;margin-bottom:1rem;display:flex}.add-tower input{border:1px solid var(--border);border-radius:8px;min-width:0;padding:.55rem .7rem;font-size:.9rem}.add-tower input:first-child{flex:1}.add-tower input[type=number]{width:80px}.tower-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.tower-row{border:1px solid var(--border);background:var(--panel);cursor:pointer;text-align:left;border-radius:10px;justify-content:space-between;align-items:center;gap:.5rem;width:100%;padding:.7rem .85rem;font-size:.95rem;transition:background-color .15s,border-color .15s,box-shadow .15s;display:flex;position:relative}.tower-row:hover{background:#f4f7fb;border-color:#d3dcea}.tower-row.active{box-shadow:inset 3px 0 0 var(--accent);background:#eff4ff;border-color:#c3d4ff}.tower-row-main{align-items:center;gap:.55rem;min-width:0;display:flex}.tower-row-icon{color:var(--muted);flex:none;display:inline-flex}.tower-row.active .tower-row-icon{color:var(--accent)}.tower-row-label{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.tower-row.active .tower-row-label{color:var(--accent);font-weight:700}.tower-row-meta{flex:none;align-items:center;gap:.35rem;display:flex}.row-chip{color:var(--muted);background:#eef2f7;border-radius:999px;padding:.12rem .45rem;font-size:.72rem;font-weight:600}.row-chip.device{color:#2e7d32;background:#e7f5e7}.add-farm{flex-direction:column;gap:.55rem;margin-bottom:1rem;display:flex}.add-farm input{border:1px solid var(--border);border-radius:8px;padding:.6rem .75rem;font-size:.92rem}.farm-list{flex-direction:column;gap:.85rem;display:flex}.farm-group{border:1px solid var(--border);background:#fafbfc;border-radius:12px;padding:.85rem .9rem}.farm-group-head{cursor:pointer;border-radius:12px 12px 0 0;justify-content:space-between;align-items:center;gap:.5rem;margin:-.85rem -.9rem .7rem;padding:.85rem .9rem;transition:background-color .15s;display:flex}.farm-group-head:hover,.farm-group-head.open{background:#eef2f7}.farm-name-display{min-width:0;color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:1.02rem;overflow:hidden}.farm-name-display strong{font-weight:700}.farm-name-input{border:1px solid var(--accent);border-radius:7px;flex:1;min-width:0;padding:.25rem .4rem;font-size:1.02rem;font-weight:700}.farm-group-actions{flex:none;align-items:center;gap:.4rem;display:flex}.farm-env-badge{color:#2e7d32;background:#e7f5e7;border-radius:999px;padding:.16rem .5rem;font-size:.7rem;font-weight:600}.farm-settings{border:1px solid var(--border);background:#fff;border-radius:10px;flex-direction:column;gap:.7rem;margin:.3rem 0 .85rem;padding:.85rem;display:flex}.farm-settings .fld{flex-direction:column;gap:.35rem;display:flex}.farm-settings .fld-cap{color:var(--text);font-size:.82rem;font-weight:600}.farm-settings .fld input,.farm-settings .fld select{border:1px solid var(--border);color:var(--text);background:#fff;border-radius:8px;padding:.5rem .65rem;font-size:.9rem}.farm-settings .fld input:focus,.farm-settings .fld select:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #2563eb1f}.farm-solutions{border-top:1px solid var(--border);flex-direction:column;gap:.5rem;padding-top:.7rem;display:flex}.farm-solutions .small{margin:0;font-size:.85rem}.solution-row{justify-content:space-between;align-items:center;gap:.6rem;font-size:.88rem;display:flex}.solution-info{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.add-solution{border:1px dashed var(--border);background:#fafbfc;border-radius:8px;flex-direction:column;gap:.5rem;padding:.7rem;display:flex}.add-solution input{border:1px solid var(--border);border-radius:8px;padding:.5rem .65rem;font-size:.88rem}.add-solution-actions{justify-content:flex-end;gap:.5rem;display:flex}.btn-add-tower{color:var(--accent);cursor:pointer;background:#eef3ff;border:1px solid #d8e3ff;border-radius:999px;align-items:center;gap:.25rem;padding:.34rem .7rem;font-size:.82rem;font-weight:600;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}.btn-add-tower:hover{background:#e0eaff;border-color:#c3d4ff}.btn-add-tower.cancel{color:var(--muted);border-color:var(--border);background:#f1f4f8}.btn-farm-delete{width:30px;height:30px;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;transition:background-color .15s,color .15s;display:inline-flex}.btn-farm-delete:hover{color:#b91c1c;background:#fef4f4}.farm-towers{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.farm-empty{padding:.3rem .1rem;font-size:.85rem}.add-tower-inline{gap:.5rem;margin-top:.6rem;display:flex}.add-tower-inline input{border:1px solid var(--border);border-radius:8px;flex:1;min-width:0;padding:.5rem .7rem;font-size:.9rem}.tower-block.editor{background:0 0;border:none;gap:1rem;padding:0}.editor-title{font-size:1.15rem;font-weight:700}.editor-fields{gap:.9rem;display:flex}.editor-fields .fld{flex-direction:column;flex:1;gap:.45rem;min-width:0;display:flex}.fld-cap{color:var(--text);font-size:.9rem;font-weight:600}.editor-fields .fld input{border:1px solid var(--border);border-radius:8px;width:100%;padding:.7rem .8rem;font-size:.98rem}.editor-fields .fld input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #2563eb1f}.editor-save-row{justify-content:flex-end;margin-top:-.3rem;display:flex}.device-block{border:1px solid var(--border);background:#fafbfc;border-radius:10px;flex-direction:column;gap:.5rem;padding:.85rem;display:flex}.device-attach{gap:.5rem;display:flex}.device-attach input{border:1px solid var(--border);border-radius:8px;flex:1;min-width:0;padding:.6rem .7rem;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.9rem}.device-attached{justify-content:space-between;align-items:center;gap:.6rem;display:flex}.device-info{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.device-info code{background:#eef2f7;border-radius:6px;padding:.15rem .4rem;font-size:.85rem}.tower-edit{flex:1;align-items:center;gap:.5rem;min-width:0;display:flex}.tower-label-input{background:0 0;border:1px solid #0000;border-radius:6px;flex:1;min-width:0;padding:.3rem .4rem;font-size:1.05rem;font-weight:700}.tower-label-input:hover,.tower-label-input:focus{border-color:var(--border);background:var(--panel)}.tower-levels-input{border:1px solid var(--border);border-radius:6px;width:90px;padding:.4rem .5rem;font-size:.85rem}.tower-card-actions{gap:.75rem;margin-left:auto;display:flex}.crop-list{flex-direction:column;gap:.5rem;margin-top:.85rem;display:flex}.crop-item{background:var(--panel);border:1px solid var(--border);border-radius:8px;justify-content:space-between;align-items:center;gap:1rem;padding:.55rem .75rem;font-size:.9rem;display:flex}.crop-item-main{min-width:0}.crop-item-actions{flex-shrink:0;gap:.75rem;display:flex}.crop-tag{color:#166534;text-transform:capitalize;background:#dcfce7;border-radius:999px;margin-left:.5rem;padding:1px 8px;font-size:.72rem;display:inline-block}.crop-form{border:1px dashed var(--border);background:var(--panel);border-radius:10px;flex-direction:column;gap:.6rem;padding:.85rem;display:flex}.crop-form .row{gap:.6rem;display:flex}.crop-form .row label{flex-direction:column;flex:1;gap:.25rem;font-size:.8rem;font-weight:600;display:flex}.crop-form input,.crop-form select{border:1px solid var(--border);border-radius:8px;padding:.5rem .6rem;font-size:.88rem;font-weight:400}.crop-form-actions{justify-content:flex-end;gap:.6rem;display:flex}
