*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-bg: #0f1923;--color-surface: #1a2733;--color-surface-hover: #223344;--color-border: #2a3a4a;--color-primary: #22c55e;--color-primary-hover: #16a34a;--color-danger: #ef4444;--color-warning: #f59e0b;--color-info: #3b82f6;--color-text: #e2e8f0;--color-text-muted: #94a3b8;--color-input-bg: #0f1923;--radius: 8px;--shadow: 0 1px 3px rgba(0, 0, 0, .3)}[data-theme=light]{--color-bg: #f0f4f8;--color-surface: #ffffff;--color-surface-hover: #e8f0eb;--color-border: #d1dbe4;--color-primary: #16a34a;--color-primary-hover: #15803d;--color-danger: #dc2626;--color-warning: #d97706;--color-info: #2563eb;--color-text: #1e293b;--color-text-muted: #64748b;--color-input-bg: #f8fafc;--shadow: 0 1px 3px rgba(0, 0, 0, .1)}.theme-toggle{background:none;border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text-muted);cursor:pointer;font-size:1.1rem;padding:.3rem .5rem;transition:all .2s;line-height:1}.theme-toggle:hover{background:var(--color-surface-hover);color:var(--color-text)}.crop-status-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.75rem;margin-top:1rem}.crop-condition{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border-radius:var(--radius);border:1px solid var(--color-border);font-size:.85rem}.crop-condition.optimal{border-color:#22c55e;background:#22c55e14}.crop-condition.warning{border-color:#f59e0b;background:#f59e0b14}.crop-condition.critical{border-color:#ef4444;background:#ef444414}.crop-condition.unknown{border-color:var(--color-border)}.stage-timeline{display:flex;align-items:center;gap:0;margin:1rem 0;overflow-x:auto}.stage-step{display:flex;flex-direction:column;align-items:center;flex:1;min-width:80px}.stage-step-dot{width:28px;height:28px;border-radius:50%;border:2px solid var(--color-border);background:var(--color-surface);display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700;position:relative;z-index:1}.stage-step.done .stage-step-dot{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.stage-step.current .stage-step-dot{background:var(--color-warning);border-color:var(--color-warning);color:#fff;box-shadow:0 0 0 4px #f59e0b33}.stage-step-label{font-size:.7rem;color:var(--color-text-muted);margin-top:.35rem;text-align:center;white-space:nowrap}.stage-step.current .stage-step-label{color:var(--color-warning);font-weight:600}.stage-step.done .stage-step-label{color:var(--color-primary)}.stage-connector{flex:1;height:2px;background:var(--color-border);margin-top:-14px}.stage-connector.done{background:var(--color-primary)}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--color-bg);color:var(--color-text);line-height:1.6;min-height:100vh}a{color:var(--color-primary);text-decoration:none}.app-layout{display:flex;min-height:100vh}.sidebar{width:240px;background:var(--color-surface);border-right:1px solid var(--color-border);padding:1.5rem 0;display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:10}.sidebar-logo{padding:0 1.5rem 1.5rem;border-bottom:1px solid var(--color-border);font-size:1.25rem;font-weight:700;display:flex;align-items:center;gap:.5rem}.sidebar-nav{flex:1;padding:1rem 0}.sidebar-nav a{display:flex;align-items:center;gap:.75rem;padding:.75rem 1.5rem;color:var(--color-text-muted);transition:all .2s;font-size:.95rem}.sidebar-nav a:hover,.sidebar-nav a.active{color:var(--color-text);background:var(--color-surface-hover);border-right:3px solid var(--color-primary)}.sidebar-footer{padding:1rem 1.5rem;border-top:1px solid var(--color-border)}.main-content{flex:1;margin-left:240px;padding:2rem;max-width:1200px}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.5rem;box-shadow:var(--shadow)}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem;margin-bottom:2rem}.sensor-card{text-align:center}.sensor-card .sensor-icon{font-size:2rem;margin-bottom:.5rem}.sensor-card .sensor-value{font-size:2.5rem;font-weight:700;color:var(--color-primary)}.sensor-card .sensor-label{color:var(--color-text-muted);font-size:.85rem;text-transform:uppercase;letter-spacing:.05em;margin-top:.25rem}.sensor-card .sensor-time{color:var(--color-text-muted);font-size:.75rem;margin-top:.5rem}.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.6rem 1.2rem;border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);font-size:.9rem;cursor:pointer;transition:all .2s}.btn:hover{background:var(--color-surface-hover)}.btn-primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.btn-primary:hover{background:var(--color-primary-hover)}.btn-danger{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.btn-sm{padding:.35rem .75rem;font-size:.8rem}.toggle{position:relative;width:56px;height:28px;border-radius:14px;background:var(--color-border);cursor:pointer;transition:background .3s;border:none}.toggle.active{background:var(--color-primary)}.toggle:after{content:"";position:absolute;top:2px;left:2px;width:24px;height:24px;border-radius:50%;background:#fff;transition:transform .3s}.toggle.active:after{transform:translate(28px)}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.4rem;font-size:.85rem;color:var(--color-text-muted)}.form-group input,.form-group select{width:100%;padding:.6rem .75rem;border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-input-bg);color:var(--color-text);font-size:.95rem}.form-group input:focus,.form-group select:focus{outline:none;border-color:var(--color-primary)}table{width:100%;border-collapse:collapse}th,td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid var(--color-border)}th{color:var(--color-text-muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}.badge{display:inline-block;padding:.2rem .6rem;border-radius:12px;font-size:.75rem;font-weight:600}.badge-success{background:#22c55e26;color:var(--color-primary)}.badge-danger{background:#ef444426;color:var(--color-danger)}.badge-warning{background:#f59e0b26;color:var(--color-warning)}.badge-info{background:#3b82f626;color:var(--color-info)}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.page-header h1{font-size:1.5rem;font-weight:700}.alert-banner{padding:.75rem 1rem;border-radius:var(--radius);margin-bottom:1rem;font-size:.9rem}.alert-banner.error{background:#ef444426;border:1px solid var(--color-danger);color:var(--color-danger)}.alert-banner.success{background:#22c55e26;border:1px solid var(--color-primary);color:var(--color-primary)}.login-container{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:2rem}.login-card{width:100%;max-width:400px}.login-card h1{text-align:center;margin-bottom:.5rem;font-size:1.75rem}.login-card p{text-align:center;color:var(--color-text-muted);margin-bottom:2rem}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:.5rem}.status-dot.online{background:var(--color-primary);box-shadow:0 0 6px var(--color-primary)}.status-dot.offline{background:var(--color-danger)}.chart-container{width:100%;height:300px;margin-top:1rem}@media(max-width:768px){.sidebar{width:60px;overflow:hidden}.sidebar-logo span,.sidebar-nav a span,.sidebar-footer{display:none}.sidebar-nav a{justify-content:center;padding:.75rem}.main-content{margin-left:60px;padding:1rem}.card-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}}
