:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f4f5f1;--surface:#fcfcfb;--border:#e2e3dc;--text-primary:#0b0b0b;--text-secondary:#52514e;--text-muted:#7a7974;--accent:#1f7a4a;--series-1:#2a78d6;--grid:#e8e8e4;--good:#0ca30c;--warning:#fab219;--serious:#ec835a;--critical:#d03b3b;color:var(--text-primary);background:var(--bg);font-family:Pretendard,system-ui,-apple-system,Apple SD Gothic Neo,sans-serif;line-height:1.5}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#121211;--surface:#1a1a19;--border:#2c2c2a;--text-primary:#f0efec;--text-secondary:#c3c2b7;--text-muted:#8f8e88;--accent:#4cc38a;--series-1:#3987e5;--grid:#2a2a28}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#121211;--surface:#1a1a19;--border:#2c2c2a;--text-primary:#f0efec;--text-secondary:#c3c2b7;--text-muted:#8f8e88;--accent:#4cc38a;--series-1:#3987e5;--grid:#2a2a28}*{box-sizing:border-box}body{background:var(--bg);margin:0}h1{margin:0 0 16px;font-size:1.5rem}h2{margin:0;font-size:1.1rem}a{color:inherit}.muted{color:var(--text-muted)}.species{font-size:.85rem;font-style:italic;font-weight:400}.topbar{background:var(--surface);border-bottom:1px solid var(--border);z-index:10;align-items:center;gap:24px;padding:12px 16px;display:flex;position:sticky;top:0}.brand{font-weight:700;text-decoration:none}.nav{flex:1;gap:4px;display:flex}.nav a{color:var(--text-secondary);border-radius:8px;padding:6px 12px;text-decoration:none}.nav a.active{background:var(--bg);color:var(--text-primary);font-weight:600}.content{max-width:1200px;margin:0 auto;padding:24px 16px 48px}.banner-error{background:color-mix(in srgb, var(--critical) 12%, var(--surface));color:var(--text-primary);border-bottom:1px solid var(--critical);padding:10px 16px}.conn{color:var(--text-secondary);white-space:nowrap;align-items:center;gap:6px;font-size:.85rem;display:inline-flex}.conn-dot{background:var(--text-muted);border-radius:50%;width:8px;height:8px}.conn-connected .conn-dot{background:var(--good);animation:2s infinite pulse}.conn-disconnected .conn-dot{background:var(--warning)}.conn-error .conn-dot{background:var(--critical)}@keyframes pulse{50%{opacity:.35}}.grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;display:grid}.grid-wide{grid-template-columns:repeat(auto-fill,minmax(min(100%,420px),1fr))}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px}.plant-card{text-decoration:none;transition:border-color .15s;display:block}.plant-card:hover{border-color:var(--accent)}.plant-card-head{justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:12px;display:flex}.plant-card-values{grid-template-columns:1fr 1fr;gap:8px 16px;margin:0;display:grid}.plant-card-values dt{color:var(--text-secondary);font-size:.8rem}.plant-card-values dd{font-variant-numeric:tabular-nums;margin:0;font-size:1.15rem;font-weight:600}.badge{border:1px solid var(--border);color:var(--text-secondary);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-size:.75rem;display:inline-flex}.badge-ok span{color:var(--good)}.badge-low span,.badge-high span{color:var(--serious)}.badge-low,.badge-high{border-color:var(--serious)}.back{color:var(--text-secondary);margin-bottom:8px;text-decoration:none;display:inline-block}.detail-top{grid-template-columns:minmax(0,3fr) minmax(0,2fr);align-items:start;gap:16px;display:grid}@media (width<=800px){.detail-top{grid-template-columns:1fr}}.tiles{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;display:grid}.tile{background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-direction:column;align-items:flex-start;gap:4px;padding:14px;display:flex}.tile-label{color:var(--text-secondary);font-size:.85rem}.tile-value{font-variant-numeric:tabular-nums;font-size:1.8rem;font-weight:700;line-height:1.2}.tile-unit{color:var(--text-muted);margin-left:3px;font-size:.8em;font-weight:400}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin:32px 0 12px;display:flex}.segmented{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:2px;display:inline-flex}.segmented button{color:var(--text-secondary);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:6px 12px;font-size:.85rem}.segmented button[aria-pressed=true]{background:var(--bg);color:var(--text-primary);font-weight:600}.charts{grid-template-columns:repeat(auto-fill,minmax(min(100%,460px),1fr));gap:16px;display:grid}.chart{background:var(--surface);border:1px solid var(--border);border-radius:12px;margin:0;padding:14px 14px 6px 4px}.chart-title{margin:0 0 8px 10px;font-weight:600}.chart-empty{height:220px;color:var(--text-muted);place-items:center;margin:0;display:grid}.chart .recharts-wrapper{color:var(--series-1)}.chart .recharts-cartesian-grid line,.chart .recharts-cartesian-axis-line{stroke:var(--grid)}.chart .recharts-cartesian-axis-tick-value{fill:var(--text-secondary);font-size:12px}.chart .chart-cursor{stroke:var(--text-muted);stroke-width:1px}.chart-tooltip{color:var(--text-primary);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:6px 10px;font-size:.8rem;box-shadow:0 2px 8px #0000001f}.chart-tooltip-value{font-variant-numeric:tabular-nums;font-weight:600}.camera{background:var(--surface);border:1px solid var(--border);border-radius:12px;margin:0;overflow:hidden}.camera-frame,.camera-placeholder{aspect-ratio:16/9;object-fit:contain;background:#000;border:0;width:100%;display:block}.camera-placeholder{color:#aaa;text-align:center;place-items:center;padding:16px;font-size:.9rem;display:grid}.camera-caption{align-items:center;gap:8px;padding:10px 14px;font-size:.9rem;display:flex}.stream-mode{color:var(--text-muted);margin-left:auto;font-size:.75rem}.link-button{font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0;font-size:.75rem;text-decoration:underline}.live-dot{background:var(--critical);border-radius:50%;width:8px;height:8px}.empty-page{text-align:center;padding:64px 16px}@media (width<=520px){.topbar{flex-wrap:wrap;gap:8px 16px}.nav{flex-basis:100%;order:3}}
