:root{color:#17211a;background:#edf2ee;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0}.shell{min-height:100vh;padding:24px}.loading-panel{display:grid;min-height:calc(100vh - 48px);place-items:center}.loading-panel span{width:42px;height:42px;border:4px solid #c9d6cd;border-top-color:#276749;border-radius:50%;animation:spin .9s linear infinite}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 420px;gap:16px;min-height:calc(100vh - 48px)}.map-pane{position:relative;overflow:hidden;min-height:520px;border:1px solid #c9d6cd;border-radius:8px;background:linear-gradient(90deg,rgba(23,33,26,.08) 1px,transparent 1px),linear-gradient(rgba(23,33,26,.08) 1px,transparent 1px),#dde9e0;background-size:42px 42px}.plot-shape{position:absolute;top:18%;right:22%;bottom:20%;left:18%;clip-path:polygon(12% 28%,62% 9%,91% 42%,75% 83%,28% 75%);border:2px solid #276749;background:#2f855a4d}.attribution{position:absolute;right:12px;bottom:8px;margin:0;padding:4px 6px;border-radius:4px;background:#ffffffd1;color:#2f3a33;font-size:12px}.panel{align-self:stretch;padding:20px;border:1px solid #c9d6cd;border-radius:8px;background:#fff}.auth-panel,.dashboard-panel{align-content:start}.topline{display:flex;align-items:center;justify-content:space-between;gap:12px}.eyebrow{margin:0 0 12px;color:#276749;font-size:13px;font-weight:700;text-transform:uppercase}h1{margin:0 0 12px;font-size:28px;line-height:1.15}.summary{margin:0 0 18px;color:#3f4b43;line-height:1.5}.form-stack{display:grid;gap:14px}.form-stack label{display:grid;gap:6px;color:#2f3a33;font-size:14px;font-weight:700}input,select{width:100%;min-height:42px;border:1px solid #bac8bf;border-radius:6px;background:#fff;color:#17211a;font:inherit;padding:8px 10px}input:focus,select:focus,button:focus{outline:3px solid rgba(39,103,73,.22);outline-offset:2px}button{min-height:42px;border:0;border-radius:6px;cursor:pointer;font:inherit;font-weight:700}button:disabled{cursor:wait;opacity:.65}.primary-button{background:#276749;color:#fff}.ghost-button{min-height:34px;padding:0 12px;border:1px solid #c9d6cd;background:#f7faf8;color:#17211a}.tenant-switcher{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0 0 18px}.tenant-button{border:1px solid #c9d6cd;background:#f7faf8;color:#17211a}.tenant-button.active{border-color:#276749;background:#276749;color:#fff}.error-message{margin:14px 0 0;padding:10px 12px;border-left:4px solid #b83232;border-radius:4px;background:#fff5f5;color:#7b1f1f;font-size:14px}.data-list{display:grid;gap:10px;margin:0 0 18px}.plot-detail{grid-template-columns:repeat(2,minmax(0,1fr))}.data-list div{padding:10px 12px;border:1px solid #d8e2da;border-radius:6px;background:#f7faf8}.data-list dt{color:#56635c;font-size:12px;font-weight:700;text-transform:uppercase}.data-list dd{margin:3px 0 0;color:#17211a;font-weight:700}.runtime-strip{display:grid;gap:10px;margin:0 0 18px;padding:12px;border:1px solid #d5e0e7;border-radius:6px;background:#f6fafc}.runtime-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.runtime-item{min-width:0;padding:8px 10px;border:1px solid #d5e0e7;border-radius:6px;background:#fff}.runtime-item span,.runtime-item strong{display:block;overflow-wrap:anywhere}.runtime-item span{color:#53636f;font-size:12px;font-weight:800;text-transform:uppercase}.runtime-item strong{margin-top:3px;color:#1f5f8b;font-size:12px}.runtime-item strong.good{color:#276749}.runtime-item strong.muted{color:#6b7280}.runtime-item strong.warn{color:#9a5b00}.workspace-section{display:grid;gap:10px;margin:0 0 18px;padding-top:14px;border-top:1px solid #d8e2da}.section-title{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.section-title h2{margin:0;font-size:16px;line-height:1.2}.section-title span{overflow:hidden;color:#56635c;font-size:12px;font-weight:700;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.compact-form{display:grid;grid-template-columns:minmax(0,1fr) minmax(112px,.75fr) auto;gap:8px}.compact-form input,.compact-form select{min-height:38px}.compact-form button{min-height:38px;padding:0 12px}.farm-list,.plot-list,.device-list,.weather-list,.telemetry-list,.history-list{display:grid;gap:8px}.farm-button,.plot-button{display:grid;min-height:48px;padding:8px 10px;border:1px solid #d8e2da;background:#f7faf8;color:#17211a;text-align:left}.farm-button.active,.plot-button.active{border-color:#276749;background:#e6f4ed;box-shadow:inset 3px 0 #276749}.farm-button span,.plot-button span{overflow:hidden;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.farm-button small,.plot-button small{overflow:hidden;color:#56635c;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.device-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;min-height:54px;padding:8px 10px;border:1px solid #d8e2da;border-radius:6px;background:#f7faf8}.device-row span,.device-row small{display:block;overflow-wrap:anywhere}.device-row span{font-weight:800}.device-row small{margin-top:3px;color:#56635c;font-size:12px}.credential-box{display:grid;gap:8px;margin:0;padding:10px;border:1px solid #7fb596;border-radius:6px;background:#f0fff5}.credential-box div{min-width:0}.credential-box dt{color:#276749;font-size:12px;font-weight:800;text-transform:uppercase}.credential-box dd{margin:2px 0 0;overflow-wrap:anywhere;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:12px}.weather-row,.telemetry-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 10px;align-items:baseline;padding:10px 12px;border:1px solid #d8e2da;border-radius:6px;background:#f7faf8}.weather-row div,.telemetry-row div{min-width:0}.weather-row span,.weather-row small,.telemetry-row span,.telemetry-row small{display:block;overflow-wrap:anywhere}.weather-row span,.telemetry-row span{font-weight:800}.weather-row strong,.telemetry-row strong{color:#276749;font-size:14px;text-align:right;white-space:nowrap}.weather-row small,.telemetry-row small{color:#56635c;font-size:12px}.weather-row>small,.telemetry-row>small{grid-column:1 / -1}.history-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.history-controls select,.history-controls button{min-height:38px}.history-chart{display:flex;align-items:end;gap:3px;height:82px;padding:8px;border:1px solid #d5e0e7;border-radius:6px;background:#f6fafc}.history-chart span{flex:1 1 10px;min-width:4px;border-radius:3px 3px 0 0;background:#1f5f8b}.history-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 10px;align-items:baseline;padding:9px 10px;border:1px solid #d8e2da;border-radius:6px;background:#f7faf8}.history-row span,.history-row small{display:block;overflow-wrap:anywhere}.history-row span{color:#56635c;font-size:12px;font-weight:700}.history-row strong{color:#276749;font-size:13px;text-align:right;white-space:nowrap}.history-row small{grid-column:1 / -1;color:#56635c;font-size:12px}.empty-state{margin:0;padding:10px 12px;border:1px dashed #bac8bf;border-radius:6px;color:#56635c;font-size:14px}@media(max-width:800px){.shell{padding:12px}.workspace{grid-template-columns:1fr;min-height:auto}.map-pane{min-height:360px}.compact-form,.plot-detail,.device-row,.weather-row,.telemetry-row,.runtime-grid,.history-controls,.history-row{grid-template-columns:1fr}.weather-row strong,.telemetry-row strong,.history-row strong{text-align:left;white-space:normal}}@keyframes spin{to{transform:rotate(360deg)}}
