:root{color-scheme:light;--bg: #ffffff;--bg-soft: #f7f8fa;--panel: #ffffff;--panel-strong: #ffffff;--border: rgba(15,23,42,.06);--text: #0b1220;--muted: #6b7280;--accent: #0b5fff;--accent-strong: #0047d1;--danger: #d9534f;--shadow: 0 6px 18px rgba(12,20,32,.06);--radius: 8px}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;font-family:Inter,Segoe UI,system-ui,-apple-system,BlinkMacSystemFont,sans-serif;background:var(--bg-soft);color:var(--text)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.app-shell{display:grid;grid-template-columns:260px minmax(0,1fr);min-height:100vh}.sidebar{padding:20px;border-right:1px solid var(--border);background:var(--panel)}.brand-block{padding:14px;border:1px solid var(--border);border-radius:8px;background:var(--panel);color:var(--text)}.brand-block h1{margin:6px 0 0;font-size:1.4rem}.brand-block p{margin:8px 0 0;color:var(--muted);font-size:.95rem}.brand-kicker{display:inline-block;font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.nav-links{display:grid;gap:8px;margin-top:18px}.nav-link{display:block;padding:8px 10px;border-radius:8px;color:var(--muted);transition:all .12s ease}.nav-link:hover,.nav-link.is-active{background:rgba(11,95,255,.06);color:var(--text);border-left:3px solid var(--accent)}.main-panel{padding:20px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;padding:12px;border-bottom:1px solid var(--border);background:transparent}.topbar strong{display:block;margin-top:4px}.topbar .topbar-actions{display:flex;gap:10px;align-items:center}.role-pill{padding:6px 10px;border-radius:999px;border:1px solid var(--border);font-size:.82rem;text-transform:uppercase;color:var(--muted)}.page-stack{display:grid;gap:12px}.page-heading{padding:16px;border:1px solid var(--border);border-radius:8px;background:var(--panel)}.page-heading h2{margin:6px 0 0;font-size:1.6rem}.page-heading p{margin:8px 0 0;color:var(--muted)}.fridge-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}@media (max-width:920px){.app-shell,.fridge-grid{grid-template-columns:1fr}}.fridge-card{display:grid;gap:10px;padding:14px;border:1px solid var(--border);border-radius:8px;background:var(--panel);cursor:pointer;transition:box-shadow .12s ease,transform .12s ease}.fridge-card:hover{transform:translateY(-4px);box-shadow:var(--shadow)}.fridge-card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.card-label{display:block;color:var(--muted);font-size:.85rem}.fridge-card h3{margin:4px 0 0;font-size:1.1rem}.status-dot{padding:6px 10px;border-radius:999px;border:1px solid var(--border);font-size:.78rem;text-transform:uppercase}.status-ok{background:rgba(34,197,94,.12);color:#16a34a}.status-alert{background:rgba(220,38,38,.08);color:#dc2626}.status-neutral{background:rgba(15,23,42,.04);color:var(--muted)}.section-title{padding-top:8px;margin-top:4px;border-top:1px solid var(--border);color:var(--muted);font-size:.85rem;font-weight:600}.fridge-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.fridge-metrics span{color:var(--muted);font-size:.9rem}.fridge-metrics strong{display:block;margin-top:6px;font-size:1.2rem}.fridge-meta{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding-top:8px;align-items:center}.fridge-meta small{display:block;color:var(--muted);font-size:.85rem}.fridge-name-input{padding:8px;border:1px solid var(--border);border-radius:6px}.icon-button{background:transparent;border:1px solid var(--border);padding:6px 8px;border-radius:6px;cursor:pointer}.auth-form{display:grid;gap:12px;padding:18px}.auth-form label{display:grid;gap:8px;color:var(--muted);font-size:.95rem}.auth-form input{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:#ffffff;color:var(--text);outline:none}.auth-form input:focus{border-color:#0b5fff3d;box-shadow:var(--shadow)}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.login-card{display:flex;flex-direction:column;width:100%;max-width:420px;margin:40px auto;border-radius:12px;border:1px solid var(--border);background:var(--panel);box-shadow:var(--shadow);overflow:hidden}.login-copy{padding:24px 24px 12px;text-align:center}.auth-form{display:grid;gap:16px;padding:0 24px 24px}.button{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:10px 14px;border-radius:8px;border:0;cursor:pointer}.button-primary{background:linear-gradient(135deg,var(--accent),var(--accent-strong));color:#fff;font-weight:700}.button-secondary{background:transparent;border:1px solid var(--border);color:var(--text)}.button:disabled{opacity:.7;cursor:wait}.card-shell{padding:16px;border:1px solid var(--border);border-radius:8px;background:var(--panel)}.state-card{padding:12px;border:1px solid var(--border);border-radius:8px;background:transparent;color:var(--muted)}.state-error{border-color:#d9464a26;color:var(--danger)}.admin-layout{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:12px}.admin-form{display:grid;gap:12px}.admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.admin-table{display:grid;gap:10px}.admin-table-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px;border:1px solid var(--border);border-radius:8px;background:transparent}.admin-table-row strong{display:block}.admin-table-row small{display:block;color:var(--muted)}.button-row{display:flex;gap:8px}.chart-shell{display:grid;gap:12px}.chart-frame{min-height:300px;background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:12px}.empty-chart{padding:18px;border:1px dashed var(--border);border-radius:8px;text-align:center;color:var(--muted)}.route-state{color:var(--muted)}.placeholder-page{display:grid;place-items:center;padding:24px}.kiosk-layout-container{width:100vw;height:100vh;margin:0;padding:0;overflow:hidden;background-color:#0f172a}.kiosk-viewport{width:100vw;height:100vh;padding:24px;box-sizing:border-box;background-color:#0f172a;display:flex;flex-direction:column;justify-content:center;align-items:center;position:fixed;top:0;left:0;z-index:9999}.kiosk-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;width:100%;height:100%;box-sizing:border-box}@media (max-aspect-ratio: 16/10){.kiosk-grid{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(2,1fr)}}.fridge-tile{background:#1e293b;border-radius:16px;padding:28px;display:flex;flex-direction:column;justify-content:space-between;border:3px solid #334155;box-shadow:0 10px 15px -3px #00000080;box-sizing:border-box;height:100%}.fridge-tile.kiosk-ok{border-color:#22c55e}.fridge-tile.kiosk-alert{border-color:#ef4444;background-color:#2c0f14;animation:pulse-alert 2s infinite}@keyframes pulse-alert{0%{box-shadow:0 0 #ef444466}70%{box-shadow:0 0 0 16px #ef444400}to{box-shadow:0 0 #ef444400}}.kiosk-tile-header{display:flex;flex-direction:column;gap:6px}.kiosk-location{font-size:.9rem;color:#94a3b8;text-transform:uppercase;letter-spacing:.08em;font-weight:600}.kiosk-name{margin:0;font-size:1.8rem;font-weight:700;color:#fff}.kiosk-badge{align-self:flex-start;margin-top:8px;padding:6px 14px;border-radius:8px;font-size:.85rem;font-weight:800;letter-spacing:.05em}.kiosk-badge.kiosk-ok{background-color:#15803d;color:#dcfce7}.kiosk-badge.kiosk-alert{background-color:#b91c1c;color:#fee2e2}.kiosk-badge.kiosk-neutral{background-color:#475569;color:#f1f5f9}.kiosk-tile-metrics{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:auto 0}.kiosk-metric{display:flex;flex-direction:column}.kiosk-metric-label{font-size:.85rem;color:#94a3b8;font-weight:700}.kiosk-metric-value{font-size:2.8rem;font-weight:900;color:#fff;line-height:1;margin:8px 0}.kiosk-range-hint{font-size:.8rem;color:#64748b}.kiosk-tile-footer{border-top:1px solid #334155;padding-top:16px;font-size:.85rem;color:#94a3b8}.kiosk-exit-btn{position:absolute;top:16px;right:16px;z-index:10000;background:rgba(30,41,59,.8);border:1px solid #475569;color:#94a3b8;padding:8px 16px;border-radius:8px;cursor:pointer;font-weight:600;opacity:.3;transition:opacity .2s ease}.kiosk-exit-btn:hover{opacity:1;background:#334155;color:#fff}.dashboard-controls-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.realtime-status-indicator{display:flex;align-items:center;gap:8px;font-size:.85rem;color:#64748b}.kiosk-status-overlay{position:absolute;top:16px;left:24px;z-index:10000;display:flex;align-items:center;gap:8px;font-size:.75rem;font-weight:700;color:#94a3b8;letter-spacing:.05em;background:rgba(15,23,42,.6);padding:6px 12px;border-radius:20px}.status-dot-mini{width:8px;height:8px;border-radius:50%;display:inline-block}.status-dot-mini.connected{background-color:#22c55e;box-shadow:0 0 8px #22c55e}.status-dot-mini.connecting,.status-dot-mini.disconnected{background-color:#f59e0b;animation:blink 1s infinite alternate}@keyframes blink{0%{opacity:.3}to{opacity:1}}.cron-preview-badge{background-color:#f1f5f9;border-left:3px solid #0284c7;padding:8px 12px;border-radius:4px;font-size:.88rem;color:#0f172a;margin-top:-4px;margin-bottom:8px}.schedule-human-cron{color:#0284c7!important;font-weight:600}.field-hint{display:block;font-size:.75rem;color:#64748b;margin-top:4px}.fridge-checkbox-section{display:flex;flex-direction:column;gap:10px;margin-top:6px;margin-bottom:12px}.fridge-checkbox-header{display:flex;justify-content:space-between;align-items:center;font-size:.88rem;font-weight:600;color:#334155}.checkbox-field-inline{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:.82rem;color:#0284c7}.fridge-checkbox-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}.fridge-checkbox-card{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid #cbd5e1;border-radius:6px;background-color:#f8fafc;cursor:pointer;transition:all .15s ease}.fridge-checkbox-card:hover{border-color:#94a3b8;background-color:#f1f5f9}.fridge-checkbox-card.selected{border-color:#0284c7;background-color:#f0f9ff}.fridge-checkbox-info{display:flex;flex-direction:column}.fridge-name{font-size:.88rem;font-weight:600;color:#0f172a}.fridge-sub{font-size:.75rem;color:#64748b}@keyframes fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (max-width:640px){.fridge-grid,.fridge-meta{grid-template-columns:1fr}}
