:root{--background: #f5f8fb;--foreground: #10233f;--card: #ffffff;--primary: #00a54e;--primary-strong: #008b42;--primary-soft: #e8f7ee;--primary-tint: rgba(0, 165, 78, .1);--primary-foreground: #ffffff;--secondary: #5d6f7d;--muted: #eef4f6;--accent: #003399;--accent-strong: #000099;--accent-soft: #e8efff;--cyan: #00cccc;--cyan-strong: #0099cc;--cyan-soft: #e5fbfb;--mint: #00cc66;--mint-soft: #e8fbf0;--warning: #ffd200;--warning-strong: #b77d00;--warning-soft: #fff8d6;--magenta: #ec008c;--magenta-soft: #ffedf8;--surface: #fbfdff;--destructive: #d9236f;--destructive-soft: #ffedf8;--border: #dbe7ed;--success: #00a54e;--info: #0099ff;--radius: 8px;--shadow: 0 16px 38px rgba(16, 35, 63, .08);--shadow-sm: 0 8px 22px rgba(16, 35, 63, .06);font-family:Inter,Noto Sans,Roboto,Arial,system-ui,sans-serif;font-weight:400;color:var(--foreground);background:var(--background);color-scheme:light}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 12% 0%,rgba(0,204,204,.13),transparent 260px),radial-gradient(circle at 88% 4%,rgba(255,210,0,.16),transparent 260px),linear-gradient(180deg,#ffffff 0%,#f7fbff 280px,var(--background) 100%)}button,input,select{font:inherit}button{border:1px solid var(--border);background:var(--card);border-radius:var(--radius);min-height:38px;padding:0 12px;cursor:pointer;transition:border-color .16s ease,background-color .16s ease,color .16s ease,transform .16s ease}button:hover{border-color:#0099ff61;background:var(--surface)}button:disabled{cursor:not-allowed;opacity:.55}input,select{width:100%;border:1px solid var(--border);border-radius:var(--radius);background:#fff;min-height:42px;padding:0 12px;color:var(--foreground);outline:none;transition:border-color .16s ease,box-shadow .16s ease}input:focus,select:focus{border-color:#0099ffad;box-shadow:0 0 0 3px #0099ff21}select[multiple]{min-height:128px;padding-block:8px}a{color:inherit;text-decoration:none}.app-shell{display:flex;min-height:100vh}.sidebar{width:264px;background:#fffffff0;border-right:1px solid var(--border);display:flex;flex-direction:column;justify-content:space-between;padding:18px;position:sticky;top:0;height:100vh;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.brand{display:grid;align-content:center;gap:8px;min-height:82px;border-bottom:1px solid var(--border);min-width:0}.brand img{width:162px;max-width:100%;height:auto;object-fit:contain}.brand>div{min-width:0}.brand strong,.brand span,.profile strong,.profile span{display:block;overflow-wrap:anywhere}.brand strong,.profile strong{font-weight:650}.brand strong{font-size:13px}.brand span{font-size:12px}.brand span,.profile span{font-weight:400}.brand span,.profile span,.breadcrumbs,.panel p,.metric-card small,.metric-card span{color:var(--secondary)}.nav-label{margin:28px 8px 10px;color:var(--secondary);font-size:12px;font-weight:650;text-transform:uppercase;letter-spacing:.06em}.nav-list{display:grid;gap:6px}.nav-list a,.logout-button{padding:12px;border-radius:var(--radius);color:var(--secondary);font-weight:550;display:flex;align-items:center;gap:10px}.nav-list a.active{color:var(--accent);background:linear-gradient(90deg,#0099ff24,#00cccc0f);border-right:3px solid var(--info)}.nav-list a:hover,.logout-button:hover{background:var(--muted)}.logout-button{color:var(--destructive);text-align:left}.main-panel{flex:1;min-width:0}.topbar{height:80px;background:#ffffffe0;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 32px;position:sticky;top:0;z-index:5;gap:18px;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.topbar h1{margin:4px 0 0;font-size:24px;font-weight:650;letter-spacing:0}.profile{display:flex;align-items:center;gap:12px;min-width:0}.avatar{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;color:#fff;background:linear-gradient(135deg,var(--primary),var(--primary-strong));font-weight:650;box-shadow:0 10px 24px #00a54e38}.content-pane{padding:28px 32px 40px;min-width:0}.stack{display:grid;gap:24px;min-width:0}.grid{display:grid;min-width:0}.gap-5{gap:20px}.gap-6{gap:24px}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.metric-card,.panel,.login-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.icon{width:18px;height:18px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.metric-card{padding:22px;display:grid;gap:8px}.metric-card strong{font-size:30px;font-weight:700}.panel{padding:22px;background:linear-gradient(180deg,#ffffff,var(--surface));min-width:0}.panel-heading{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:18px;min-width:0}.panel h2,.panel p{margin:0}.panel h2{margin-bottom:6px;font-weight:700}.chart-surface{min-height:340px;border:1px solid var(--border);border-radius:var(--radius);background:linear-gradient(#fff,var(--surface));display:flex;align-items:end;gap:12px;padding:28px}.chart-surface span{flex:1;min-width:12px;background:linear-gradient(180deg,var(--primary),var(--primary-strong));border-radius:6px 6px 0 0;cursor:crosshair}.table-wrap{overflow-x:auto;max-width:100%;min-width:0}.data-table{width:100%;border-collapse:collapse;min-width:760px}.data-table td{vertical-align:middle}.data-table th{text-align:left;background:#eef5f1;color:#31443a;font-size:12px;letter-spacing:.04em;text-transform:uppercase}.data-table th,.data-table td{padding:14px 12px;border-bottom:1px solid var(--border)}.data-table tbody tr{transition:background-color .14s ease}.data-table tbody tr:hover{background:#00a54e09}.sort-button{border:0;padding:0;min-height:0;background:transparent;font-weight:700}.sort-button.muted{cursor:default}.table-footer,.pager,.actions,.check-row{display:flex;align-items:center;gap:10px}.table-footer{justify-content:space-between;padding-top:16px;color:var(--secondary);flex-wrap:wrap}.actions a,.actions button,.table-link{color:var(--primary-strong);font-weight:600}.actions button{min-height:32px}.actions{flex-wrap:wrap}.actions .danger,.danger{color:var(--destructive);border-color:#ec008c38;background:var(--destructive-soft)}.text-button{border:0;background:transparent;min-height:0;padding:0;color:var(--primary-strong);font-weight:600}.status{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:650}.status.ok{color:#067a3f;background:var(--mint-soft)}.status.off{color:var(--secondary);background:#eef2ef}.status.warn{color:var(--warning-strong);background:var(--warning-soft)}.form-panel{display:grid;gap:16px}.form-panel label{display:grid;gap:7px;color:var(--foreground);font-weight:600}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.device-list{display:grid;gap:10px}.device-row{display:grid;grid-template-columns:145px 1.1fr minmax(150px,1fr) 105px minmax(145px,.9fr) minmax(145px,.9fr) minmax(145px,.9fr) auto;gap:10px;align-items:end;padding:14px;border:1px solid var(--border);border-radius:var(--radius);background:#f7faf8}.primary-button{color:var(--primary-foreground);background:linear-gradient(135deg,var(--primary),var(--primary-strong));border-color:var(--primary-strong);font-weight:700;box-shadow:0 10px 20px #00a54e2e}.primary-button:hover{transform:translateY(-1px);background:linear-gradient(135deg,var(--mint),var(--primary-strong))}.replace-confirm-button,.replace-button{color:#fff;border-color:#b10069;background:linear-gradient(135deg,var(--magenta),#b10069);box-shadow:0 10px 20px #ec008c29}.replace-confirm-button:hover,.replace-button:hover{color:#fff;border-color:#9b005e;background:linear-gradient(135deg,#ff2aa4,#b10069)}.firmware-button{color:#4a3900;border-color:#ffd20085;background:linear-gradient(135deg,var(--warning),#fff4a8);box-shadow:0 10px 20px #ffd2002e}.firmware-button:hover{color:#3b2d00;border-color:#b77d0080;background:linear-gradient(135deg,#ffe45c,#fff8c2)}.search-input{max-width:280px}.toolbar{display:flex;justify-content:flex-end;gap:10px;width:min(720px,100%);flex-shrink:0}.toolbar .search-input{flex:1 1 180px}.toolbar select{flex:0 1 170px}.section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:4px}.empty-cell{text-align:center;color:var(--secondary)}.error-text{color:var(--destructive);font-weight:400}.field-hint{color:var(--secondary);font-size:12px;font-weight:400}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;padding:24px;background:#0f172a6b}.modal-card{width:min(760px,100%);max-height:min(780px,calc(100vh - 48px));overflow:hidden;display:flex;flex-direction:column;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 24px 80px #0f172a38}.modal-card.layout-editor-modal{width:90vw;height:90vh;max-height:90vh}.layout-editor-modal .modal-body{min-height:0}.modal-header,.modal-footer{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 22px;border-bottom:1px solid var(--border)}.modal-header h2,.modal-header p{margin:0}.modal-header h2{margin-bottom:5px;font-weight:600}.modal-header p{color:var(--secondary)}.modal-body{overflow-y:auto;padding:22px}.modal-footer{justify-content:flex-end;border-top:1px solid var(--border);border-bottom:0;background:#f7faf8}.icon-button{width:38px;min-width:38px;padding:0;font-weight:400;color:var(--secondary)}.login-screen{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(135deg,#00a54e1a,#fff0 38%),linear-gradient(180deg,#ffffff,var(--background))}.login-panel{width:min(980px,100%);display:grid;grid-template-columns:1fr 410px;gap:32px;align-items:center}.login-brand img{width:min(260px,72vw);height:auto;object-fit:contain}.login-brand h1{margin:26px 0 10px;font-size:52px;font-weight:750;line-height:1.08;color:#0e2619}.login-brand p{color:var(--secondary);font-size:18px;max-width:460px;line-height:1.55}.login-card{display:grid;gap:18px;padding:32px;background:linear-gradient(180deg,#fffffffa,#fbfdfcfa)}.login-card h2{margin:0;font-size:24px;font-weight:700}.login-card label{display:grid;gap:7px;font-weight:600}.site-hero{display:flex;justify-content:space-between;align-items:center;background:linear-gradient(135deg,#fff,#eef8f2);gap:18px}.site-hero h2{font-size:34px;font-weight:600;overflow-wrap:anywhere}.hero-metrics{display:grid;text-align:right}.hero-metrics strong{color:var(--primary-strong);font-size:42px;font-weight:750}.section-title strong,.device-card strong{font-weight:600}.device-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.device-card{display:grid;gap:8px;padding:16px;border:1px solid var(--border);border-radius:var(--radius);background:var(--muted)}.site-title-row{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;background:linear-gradient(135deg,#00a54e17,#0099ff0f 44%,#fff0 72%),var(--card);border:1px solid rgba(223,232,227,.92);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px 22px}.site-title-row h2,.site-title-row p{margin:0}.site-title-row h2{margin-top:8px;font-size:28px;font-weight:700}.site-title-row p,.site-title-row span,.muted-text{color:var(--secondary)}.site-title-row>span{border:1px solid var(--border);border-radius:999px;padding:7px 12px;background:var(--accent-soft);color:var(--accent);white-space:nowrap;display:inline-flex;align-items:center;gap:7px}.site-title-row p{display:inline-flex;align-items:center;gap:7px}.site-title-pills{margin-top:10px}.group-selector-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}.group-card{display:grid;justify-items:start;gap:10px;min-height:190px;padding:20px;text-align:left;background:linear-gradient(135deg,#0099ff14,#fff0 46%),var(--card);border:1px solid rgba(223,232,227,.92);box-shadow:var(--shadow)}.group-card:hover{transform:translateY(-1px);border-color:#0099ff4d}.group-card:nth-child(2n){background:linear-gradient(135deg,#00cccc17,#fff0 46%),var(--card)}.group-card:nth-child(3n){background:linear-gradient(135deg,#ffd20021,#fff0 46%),var(--card)}.group-card-icon,.metric-pill-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:var(--radius);color:var(--accent);background:var(--accent-soft)}.group-card:nth-child(2n) .group-card-icon{color:var(--cyan-strong);background:var(--cyan-soft)}.group-card:nth-child(3n) .group-card-icon{color:var(--warning-strong);background:var(--warning-soft)}.group-card strong{font-size:22px;font-weight:700}.group-card small{color:var(--secondary)}.group-header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;border:1px solid var(--border);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow);padding:18px 20px}.group-header h3,.group-header p{margin:0}.group-header h3{display:flex;align-items:center;gap:8px;margin-top:6px;font-size:22px;font-weight:700}.group-header p{color:var(--secondary)}.group-header>span{border:1px solid var(--border);border-radius:999px;padding:7px 12px;color:var(--secondary);background:var(--muted);white-space:nowrap}.meter-card,.inverter-monitor-card{display:grid;grid-column:1 / -1;gap:20px;width:100%;min-width:0;background:linear-gradient(180deg,#fffffffa,#fbfdfce6),var(--card);border:1px solid rgba(223,232,227,.82);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px}.meter-header{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;border-bottom:1px solid var(--border);padding-bottom:18px}.meter-header p,.meter-header h2,.meter-header span{margin:0}.meter-header p,.meter-header span,.meter-status small{color:var(--secondary)}.meter-header h2{margin:4px 0;font-size:24px;font-weight:700;overflow-wrap:anywhere}.meter-status{display:grid;justify-items:end;gap:6px;text-align:right}.metric-pills{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px}.metric-pill{display:flex;align-items:center;gap:12px;border:1px solid rgba(223,232,227,.86);border-radius:var(--radius);background:#fff;padding:12px;box-shadow:var(--shadow-sm)}.metric-pill span{color:var(--secondary);font-size:12px;display:block;margin-bottom:3px}.metric-pill strong{font-size:18px;font-weight:700;color:var(--foreground)}.metric-pill.col-3{grid-column:span 3}.metric-pill.col-2{grid-column:span 2}.daily-energy-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.daily-panel{min-width:0}.trend-grid-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}.trend-panel{display:grid;gap:12px;border:1px solid rgba(223,232,227,.86);border-radius:var(--radius);padding:16px;background:linear-gradient(180deg,#fff,var(--surface));box-shadow:var(--shadow-sm)}.trend-panel h3,.trend-panel p{margin:0}.trend-panel h3{font-size:16px;font-weight:700;display:flex;align-items:center;gap:8px}.trend-panel p{color:var(--secondary);font-size:13px}.trend-chart{display:grid;gap:8px;position:relative}.trend-chart svg{width:100%;height:150px;overflow:visible}.trend-grid{fill:none;stroke:var(--border);stroke-width:1}.trend-line{fill:none;stroke:var(--info);stroke-width:2.8;stroke-linecap:round;stroke-linejoin:round}.trend-hitpoint{fill:#0099ff14;stroke:#0099ff38;cursor:crosshair;pointer-events:all}.daily-chart{display:grid;gap:8px;position:relative}.daily-chart svg{width:100%;height:180px;overflow:visible}.daily-bar{fill:var(--cyan);cursor:crosshair;transition:opacity .16s ease,filter .16s ease}.daily-bar:hover{filter:brightness(.92)}.daily-bar.no-data{fill:var(--border);opacity:.9}.chart-axis-label{fill:var(--secondary);font-size:11px}.chart-tooltip{position:absolute;z-index:2;min-width:118px;max-width:min(220px,90%);pointer-events:none;transform:translate(-50%,calc(-100% - 10px));display:grid;gap:3px;padding:8px 10px;border:1px solid rgba(15,23,42,.1);border-radius:7px;color:var(--foreground);background:#fffffffa;box-shadow:0 12px 28px #112d1f29}.chart-tooltip span{color:var(--secondary);font-size:11px;white-space:nowrap}.chart-tooltip strong{font-size:13px;font-weight:500;white-space:nowrap}.trend-caption{display:flex;justify-content:space-between;gap:10px;color:var(--secondary);font-size:12px}.trend-caption strong{color:var(--foreground);font-weight:700}.empty-trend{display:grid;place-items:center;min-height:150px;border:1px dashed var(--border);border-radius:var(--radius);color:var(--secondary);text-align:center;padding:18px}.empty-trend.large{min-height:190px}.inverter-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.inverter-summary-card,.inverter-device-card{border:1px solid rgba(223,232,227,.86);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow-sm)}.inverter-summary-card{display:grid;gap:8px;padding:18px}.inverter-summary-card.highlight{background:linear-gradient(135deg,#00a54e1f,#00cccc14 58%,#fff0 78%),var(--card);border-color:#00a54e3d}.inverter-summary-card:nth-child(2n):not(.highlight){border-color:#0099ff2e;background:linear-gradient(135deg,#0099ff14,#fff0 52%),var(--card)}.inverter-summary-card:nth-child(3n):not(.highlight){border-color:#ffd2003d;background:linear-gradient(135deg,#ffd2001f,#fff0 52%),var(--card)}.inverter-summary-card span,.inverter-device-card p,.inverter-device-card small,.inverter-device-card header span:not(.status),.compact-metric span{color:var(--secondary)}.inverter-summary-card strong{font-size:24px;font-weight:750;overflow-wrap:anywhere}.inverter-device-grid{display:grid;grid-template-columns:1fr;gap:14px}.inverter-tabs{display:flex;gap:8px;align-items:stretch;overflow-x:auto;border-bottom:1px solid var(--border);padding-bottom:8px}.inverter-tab{display:grid;gap:3px;min-width:172px;height:auto;padding:10px 12px;text-align:left;border-color:#dfe8e3eb;background:var(--card)}.inverter-tab:hover{border-color:#0099ff5c}.inverter-tab.active{border-color:#0099ff94;background:linear-gradient(135deg,#0099ff1f,#00cccc0d);box-shadow:0 10px 24px #0099ff1a}.inverter-tab span,.inverter-tab small{color:var(--secondary);font-size:12px}.inverter-tab strong{font-weight:700;overflow-wrap:anywhere}.inverter-device-card{display:grid;gap:14px;padding:18px}.inverter-device-card header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.inverter-device-card h3,.inverter-device-card p{margin:0}.inverter-device-card h3{margin:4px 0;font-size:20px;font-weight:700;overflow-wrap:anywhere}.compact-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.compact-metric{display:grid;gap:4px;min-width:0;padding:10px;border:1px solid var(--border);border-radius:var(--radius);background:#f7fbff}.compact-metric strong{font-weight:700;overflow-wrap:anywhere}.inverter-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.inverter-detail-grid.wide{align-items:start}.inverter-detail-panel{display:grid;gap:14px;min-width:0;border:1px solid rgba(223,232,227,.86);border-radius:var(--radius);padding:16px;background:linear-gradient(180deg,#fff,var(--surface));box-shadow:var(--shadow-sm)}.inverter-detail-panel h3,.inverter-detail-panel p{margin:0}.inverter-detail-panel h3{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:700}.inverter-detail-panel p{color:var(--secondary);font-size:13px}.inverter-status-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.inverter-status-grid>div{display:grid;gap:4px;min-width:0;padding:10px;border:1px solid var(--border);border-radius:var(--radius);background:linear-gradient(135deg,#00cccc0d,#f7fbff)}.inverter-status-grid span,.inverter-metric-table th,.string-current-cell span{color:var(--secondary);font-size:12px}.inverter-status-grid strong,.string-current-cell strong{font-weight:700;overflow-wrap:anywhere}.inverter-table-wrap{overflow-x:auto}.inverter-metric-table{width:100%;min-width:520px;border-collapse:collapse}.inverter-metric-table th,.inverter-metric-table td{padding:10px;border-bottom:1px solid var(--border);text-align:left}.inverter-metric-table th{background:#eef5f1;font-weight:700}.string-current-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:8px}.string-current-cell{display:grid;gap:4px;padding:10px;border:1px solid var(--border);border-radius:var(--radius);background:#f7faf8}.device-management-page>.panel{background:transparent;border:0;box-shadow:none;padding:0}.device-management-hero{display:flex;justify-content:space-between;gap:20px;align-items:end;border:1px solid rgba(223,232,227,.9);border-radius:var(--radius);background:radial-gradient(circle at 82% 0%,rgba(255,210,0,.18),transparent 180px),linear-gradient(135deg,#00a54e1f,#00cccc14 48%,#fff0 70%),var(--card);box-shadow:var(--shadow);padding:22px}.device-management-hero p,.device-management-hero h2,.device-management-hero span{margin:0}.device-management-hero p,.device-management-hero span,.logger-meta span,.logger-devices span,.logger-identity span,.logger-identity small,.logger-devices small{color:var(--secondary)}.device-management-hero p{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.device-management-hero h2{margin:6px 0 8px;font-size:28px;font-weight:750}.device-management-stats{display:grid;grid-template-columns:repeat(4,minmax(86px,1fr));gap:10px;min-width:min(520px,100%)}.device-management-stats>div{display:grid;gap:4px;padding:12px;border:1px solid var(--border);border-radius:var(--radius);background:#ffffffc7}.device-management-stats>div:nth-child(1){border-color:#0033992e;background:linear-gradient(135deg,var(--accent-soft),rgba(255,255,255,.86))}.device-management-stats>div:nth-child(2){border-color:#00cccc38;background:linear-gradient(135deg,var(--cyan-soft),rgba(255,255,255,.86))}.device-management-stats>div:nth-child(3){border-color:#00a54e33;background:linear-gradient(135deg,var(--mint-soft),rgba(255,255,255,.86))}.device-management-stats>div:nth-child(4){border-color:#ffd20047;background:linear-gradient(135deg,var(--warning-soft),rgba(255,255,255,.88))}.device-management-stats span{color:var(--secondary);font-size:12px}.device-management-stats strong{font-size:22px;font-weight:750}.device-site-list{display:grid;gap:16px}.device-site-card{display:grid;gap:14px;min-width:0;border:1px solid rgba(223,232,227,.9);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow-sm);padding:18px}.device-site-header{display:flex;justify-content:space-between;gap:18px;align-items:start;padding-bottom:14px;border-bottom:1px solid var(--border)}.device-site-header h2,.device-site-header p{margin:0}.device-site-header h2{margin-top:5px;font-size:20px;font-weight:700;overflow-wrap:anywhere}.device-site-header p{display:inline-flex;align-items:center;gap:7px;color:var(--secondary)}.device-site-summary{display:grid;justify-items:end;gap:5px;min-width:110px;text-align:right}.device-site-summary span{color:var(--secondary);font-size:12px}.device-site-summary strong{color:var(--primary-strong);font-size:20px;font-weight:750}.logger-list{display:grid;gap:10px}.logger-row{display:grid;grid-template-columns:minmax(260px,1.6fr) minmax(132px,.75fr) minmax(120px,.7fr) minmax(110px,.58fr) minmax(108px,.58fr) minmax(178px,.95fr) minmax(150px,.8fr);gap:12px;align-items:center;min-width:0;padding:14px;border:1px solid var(--border);border-radius:var(--radius);background:linear-gradient(90deg,#0099ff0d,#00cccc0a 32%,#fff0 58%),#fff}.logger-identity{display:flex;align-items:center;gap:12px;min-width:0}.logger-thumb{position:relative;width:50px;height:50px;flex:0 0 50px;display:grid;place-items:center;border:1px solid rgba(0,204,204,.3);border-radius:8px;color:var(--accent);background:linear-gradient(180deg,#e5fbfbeb,#fffffff5);box-shadow:inset 0 -10px 18px #00cccc14}.logger-thumb:before{content:"";position:absolute;top:-7px;left:50%;width:18px;height:8px;border:1px solid rgba(0,153,255,.36);border-bottom:0;border-radius:8px 8px 0 0;transform:translate(-50%)}.logger-thumb .icon{width:26px;height:26px}.logger-identity strong,.logger-meta strong,.logger-devices strong{display:block;min-width:0;font-weight:700;overflow-wrap:anywhere}.logger-identity strong{font-size:17px}.logger-identity small,.logger-devices small{display:block;margin-top:3px;overflow-wrap:anywhere}.logger-meta,.logger-devices{display:grid;gap:4px;min-width:0}.logger-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.logger-actions button{min-height:34px;font-size:13px;font-weight:700}.firmware-upgrade-panel,.replace-logger-form{display:grid;gap:16px}.firmware-status-card,.replace-imei-box{display:grid;gap:6px;padding:16px;border-radius:var(--radius)}.firmware-status-card{border:1px solid rgba(255,210,0,.42);background:linear-gradient(135deg,#ffd20033,#fff0 50%),#fffdf0}.replace-imei-box{border:1px solid rgba(236,0,140,.24);background:linear-gradient(135deg,#ec008c1a,#fff0 52%),#fff}.firmware-status-card span,.replace-imei-box span,.firmware-detail-grid span{color:var(--secondary);font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.firmware-status-card strong,.replace-imei-box strong{font-size:22px;font-weight:750;overflow-wrap:anywhere}.firmware-status-card p,.replace-imei-box small{margin:0;color:var(--secondary)}.firmware-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.firmware-detail-grid>div{display:grid;gap:5px;min-width:0;padding:12px;border:1px solid var(--border);border-radius:var(--radius);background:#f7fbff}.firmware-detail-grid strong{font-weight:700;overflow-wrap:anywhere}.signal-wrap{display:inline-flex;align-items:end;gap:8px}.signal-wrap strong{color:var(--secondary);font-size:13px}.signal-bars{display:inline-flex;align-items:end;gap:3px;height:18px}.signal-bars span{width:5px;border-radius:2px;background:#cfd8d3}.signal-bars span:nth-child(1){height:6px}.signal-bars span:nth-child(2){height:10px}.signal-bars span:nth-child(3){height:14px}.signal-bars span:nth-child(4){height:18px}.signal-bars span.active{background:var(--primary)}.device-management-footer{padding:16px 0 0}.master-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:start}.master-shell>.panel{min-width:0}.master-hero{display:flex;justify-content:space-between;gap:18px;align-items:end;background:radial-gradient(circle at 88% 0%,rgba(0,204,204,.14),transparent 210px),linear-gradient(135deg,#0099ff1f,#fff0 54%),var(--card)}.master-hero p,.master-hero h2,.master-hero span{margin:0}.master-hero p{color:var(--secondary);font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.master-hero h2{margin:6px 0;font-size:28px;font-weight:800}.master-hero>div:first-child>span{color:var(--secondary)}.master-hero-stat{display:grid;gap:4px;min-width:180px;padding:14px;border:1px solid rgba(0,153,255,.18);border-radius:var(--radius);background:#ffffffd1}.master-hero-stat span{color:var(--secondary);font-size:12px;font-weight:700}.master-hero-stat strong{color:var(--accent);font-size:20px;font-weight:800}.master-workspace{display:grid;gap:16px}.master-tabs{display:inline-grid;grid-template-columns:repeat(3,minmax(130px,1fr));gap:8px;width:min(420px,100%);padding:6px;border:1px solid var(--border);border-radius:var(--radius);background:#f7fbff}.master-tab{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;padding:9px 12px;border:1px solid transparent;border-radius:6px;color:var(--secondary);font-weight:800}.master-tab strong{min-width:30px;padding:3px 8px;border-radius:999px;color:var(--accent);background:var(--accent-soft);text-align:center}.master-tab.active{color:var(--foreground);border-color:#0099ff38;background:#fff;box-shadow:var(--shadow-sm)}.master-tab.active strong{color:var(--primary-strong);background:var(--mint-soft)}.master-table-panel{display:grid;gap:14px;min-width:0}.pill-row{display:flex;flex-wrap:wrap;gap:6px;min-width:0}.master-pill,.group-pill,.colour-chip{display:inline-flex;align-items:center;min-height:26px;max-width:100%;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:800;line-height:1;overflow-wrap:anywhere}.master-pill.blue{color:var(--accent);background:var(--accent-soft);border:1px solid rgba(0,51,153,.14)}.master-pill.cyan{color:var(--cyan-strong);background:var(--cyan-soft);border:1px solid rgba(0,204,204,.18)}.group-pill{--group-color: var(--info);color:color-mix(in srgb,var(--group-color) 72%,#10233f);background:color-mix(in srgb,var(--group-color) 13%,#ffffff);border:1px solid color-mix(in srgb,var(--group-color) 34%,#dbe7ed)}.group-pill:before{content:"";width:7px;height:7px;margin-right:6px;border-radius:50%;background:var(--group-color)}.colour-chip{--chip-color: var(--info);color:color-mix(in srgb,var(--chip-color) 72%,#10233f);background:color-mix(in srgb,var(--chip-color) 12%,#ffffff);border:1px solid color-mix(in srgb,var(--chip-color) 34%,#dbe7ed)}.colour-chip:before,.group-name-cell i,.group-colour-dot{content:"";width:10px;height:10px;flex:0 0 10px;border-radius:50%;background:var(--chip-color)}.colour-chip:before{margin-right:7px}.group-name-cell{display:inline-flex;align-items:center;gap:8px;min-width:0;font-weight:800}.colour-input-row{display:grid;grid-template-columns:54px 1fr;gap:10px}.colour-input-row input[type=color]{padding:3px}.site-group-picker{display:grid;gap:10px;padding:14px;border:1px solid rgba(0,153,255,.14);border-radius:var(--radius);background:#f7fbff}.group-option-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px;max-height:190px;overflow:auto}.group-option{display:grid!important;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:8px!important;min-width:0;padding:9px 10px;border:1px solid var(--border);border-radius:var(--radius);background:#fff}.group-option input{width:16px;min-height:16px}.group-option strong{overflow-wrap:anywhere}.group-option small{color:var(--secondary);font-weight:700}.site-layout-section,.replacement-history-section{display:grid;gap:14px;min-width:0;border:1px solid rgba(223,232,227,.9);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow-sm);padding:18px}.section-heading-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.section-heading-row h2,.section-heading-row p{margin:0}.section-heading-row h2{font-size:20px;font-weight:750}.section-heading-row p{margin-top:4px;color:var(--secondary)}.site-layout-view{display:grid;gap:12px;min-width:0}.layout-summary-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.layout-summary-strip>div,.layout-editor-stat{display:grid;gap:3px;min-width:0;padding:11px 12px;border:1px solid rgba(223,232,227,.92);border-radius:var(--radius);background:#f7fbff}.layout-summary-strip>div:nth-child(1),.layout-editor-stat:nth-of-type(1){border-color:#0099ff2e;background:linear-gradient(135deg,var(--accent-soft),#ffffff)}.layout-summary-strip>div:nth-child(2),.layout-editor-stat:nth-of-type(2){border-color:#00cccc38;background:linear-gradient(135deg,var(--cyan-soft),#ffffff)}.layout-summary-strip>div:nth-child(3){border-color:#00a54e33;background:linear-gradient(135deg,var(--mint-soft),#ffffff)}.layout-summary-strip span,.layout-editor-stat span{color:var(--secondary);font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.layout-summary-strip strong,.layout-editor-stat strong{font-size:18px;font-weight:800}.layout-canvas{position:relative;min-width:0;overflow:auto;padding:84px 14px 14px 88px;border:1px solid rgba(223,232,227,.9);border-radius:var(--radius);background:radial-gradient(circle at 28px 28px,rgba(0,153,255,.12),transparent 92px),radial-gradient(circle at calc(100% - 40px) 42px,rgba(255,210,0,.12),transparent 120px),linear-gradient(180deg,#f7fbfff5,#fffffff5),#fff}.layout-canvas.editor{max-height:min(68vh,760px)}.layout-compass{position:absolute;top:12px;left:12px;z-index:2;width:58px;height:58px;border:1px solid rgba(0,153,255,.24);border-radius:50%;color:var(--accent);background:#ffffffeb;box-shadow:var(--shadow-sm);font-size:10px;font-weight:800}.layout-compass span,.layout-compass i{position:absolute}.layout-compass .north{top:4px;left:50%;transform:translate(-50%)}.layout-compass .east{right:6px;top:50%;transform:translateY(-50%)}.layout-compass .south{bottom:4px;left:50%;transform:translate(-50%)}.layout-compass .west{left:6px;top:50%;transform:translateY(-50%)}.layout-compass i{top:17px;right:17px;bottom:17px;left:17px;border-top:12px solid var(--cyan);border-inline:6px solid transparent;transform:translateY(1px)}.solar-layout-grid{display:grid;grid-template-columns:repeat(var(--layout-columns),100px);gap:6px;min-width:max-content}.solar-panel-cell{position:relative;display:grid;place-items:center;width:100px;height:150px;min-width:100px;min-height:150px;padding:4px;overflow:hidden;border:1px solid rgba(207,216,211,.92);border-radius:6px;color:var(--secondary);background:linear-gradient(135deg,#10233f09,#fff0 50%),#eef3f6}button.solar-panel-cell{cursor:pointer;height:auto}button.solar-panel-cell:hover{border-color:#0099ff61;background:linear-gradient(135deg,#0099ff14,#fff0 50%),#f5fbff}.solar-panel-cell.mapped{border-style:solid;border-color:#00cccc4d;color:var(--foreground);background:#f9fcfa}.solar-panel-cell.selected{outline:2px solid rgba(0,153,255,.68);outline-offset:2px}.panel-image-wrap{position:relative;display:grid;place-items:center;width:100%;height:100%;max-width:100%;max-height:100%;min-height:42px;overflow:hidden;border-radius:5px;transform:perspective(420px) rotateX(var(--panel-rotate-x)) rotateY(var(--panel-rotate-y));transform-style:preserve-3d;transition:transform .18s ease,filter .18s ease}.panel-image-wrap img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain;object-position:center;filter:drop-shadow(0 8px 10px rgba(17,45,31,.14));pointer-events:none}.panel-image-wrap strong{position:absolute;left:5px;right:5px;bottom:5px;max-width:calc(100% - 10px);padding:3px 4px;border-radius:4px;color:#fff;background:#0a1811b8;font-size:10px;font-weight:800;line-height:1.15;text-align:center;overflow-wrap:anywhere}.layout-editor{display:grid;gap:16px;min-height:0}.layout-editor-controls{display:grid;grid-template-columns:repeat(4,minmax(0,160px));gap:12px}.layout-editor-controls label{display:grid;gap:6px;font-weight:700}.layout-editor-workbench{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:16px;align-items:start;min-height:0}.panel-inspector{position:sticky;top:0;display:grid;gap:14px;min-width:0;padding:16px;border:1px solid rgba(223,232,227,.92);border-radius:var(--radius);background:#fff;box-shadow:var(--shadow-sm)}.panel-inspector>div,.selected-device-card{display:grid;gap:5px}.panel-inspector-preview{display:grid;place-items:center;height:50px;min-height:50px;overflow:hidden;padding:6px;border:1px solid rgba(0,204,204,.2);border-radius:var(--radius);background:linear-gradient(135deg,#00cccc1f,#ffd2001a 56%,#fff0 78%),#f7fbff}.panel-inspector-preview .panel-image-wrap{width:min(72px,100%);height:44px;max-height:44px}.panel-inspector span,.selected-device-card span{color:var(--secondary);font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.panel-inspector strong,.selected-device-card strong{font-weight:750;overflow-wrap:anywhere}.panel-inspector small,.selected-device-card small{color:var(--secondary);overflow-wrap:anywhere}.panel-inspector label,.range-field{display:grid;gap:7px;font-weight:700}.range-field span{display:flex;justify-content:space-between;gap:10px;color:var(--foreground);letter-spacing:0;text-transform:none}.range-axis-labels{display:flex;justify-content:space-between;margin-bottom:-3px;color:var(--secondary);font-size:11px;font-style:normal;font-weight:800}.range-axis-labels em{font-style:normal}.range-field input[type=range]{accent-color:var(--primary)}.range-field small{color:var(--secondary);font-weight:500}.replacement-history-list{display:grid;gap:10px}.replacement-history-card{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:14px;border:1px solid var(--border);border-radius:var(--radius);background:#fff}.replacement-history-card div{display:grid;gap:4px;min-width:0}.replacement-history-card span{color:var(--secondary);font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.replacement-history-card strong{font-weight:700;overflow-wrap:anywhere}.replacement-history-card small{color:var(--secondary)}@media(max-width:1100px){.kpi-grid{grid-template-columns:1fr 1fr}.inverter-summary-grid,.inverter-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.device-management-hero{align-items:stretch;display:grid}.device-management-stats{min-width:0}.master-grid{grid-template-columns:1fr}.master-hero{display:grid;align-items:stretch}.master-hero-stat{min-width:0}.logger-row{grid-template-columns:minmax(240px,1.4fr) repeat(2,minmax(120px,.8fr))}.logger-actions{justify-content:flex-start}.solar-layout-grid{overflow-x:auto}.layout-editor-workbench{grid-template-columns:1fr}.panel-inspector{position:static}.layout-editor-controls{grid-template-columns:repeat(2,minmax(0,1fr))}.login-panel{grid-template-columns:1fr 380px}}@media(max-width:900px){.app-shell{display:block}.sidebar{width:100%;height:auto;position:static;padding:14px 18px;gap:14px}.brand{min-height:56px}.nav-label{margin-top:18px}.nav-list{grid-template-columns:repeat(auto-fit,minmax(132px,1fr))}.nav-list a.active{border-right:0;border-bottom:2px solid var(--primary)}.logout-button{width:100%;margin-top:8px}.topbar{position:static}.content-pane{padding:24px}}@media(max-width:760px){.login-panel{display:block}.topbar{height:auto;padding:18px;align-items:flex-start}.profile{display:none}.content-pane{padding:18px}.kpi-grid,.form-grid{grid-template-columns:1fr}.toolbar,.panel-heading{flex-direction:column;align-items:stretch}.device-row{grid-template-columns:1fr}.table-wrap{margin-inline:-10px;padding-inline:10px}.data-table{min-width:680px}.empty-cell{text-align:left}.table-footer{align-items:flex-start}.pager{width:100%;justify-content:space-between}.chart-surface{min-height:240px;gap:7px;padding:16px}.metric-card{padding:18px}.modal-backdrop{padding:10px;align-items:end}.modal-card{max-height:calc(100vh - 20px)}.modal-header,.modal-footer,.modal-body{padding:16px}.modal-footer{flex-direction:column-reverse;align-items:stretch}.login-brand{margin-bottom:22px}.login-brand h1{font-size:36px}.login-card{padding:22px}.site-hero{display:grid}.site-title-row,.meter-header,.group-header,.inverter-device-card header{display:grid}.group-header>span{justify-self:start}.metric-pill.col-3,.metric-pill.col-2{grid-column:span 6}.daily-energy-grid{grid-template-columns:1fr}.meter-status{justify-items:start;text-align:left}.hero-metrics{text-align:left}.inverter-summary-grid,.inverter-detail-grid,.inverter-status-grid,.compact-metrics{grid-template-columns:1fr}.device-management-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.device-site-header{display:grid}.device-site-summary{justify-items:start;text-align:left}.logger-row{grid-template-columns:1fr;align-items:stretch}.logger-meta,.logger-devices,.logger-actions{grid-template-columns:minmax(110px,.7fr) 1fr;align-items:center;padding-top:10px;border-top:1px solid var(--border)}.logger-meta .status{justify-self:start}.logger-devices small{grid-column:2}.logger-actions{display:grid;grid-template-columns:1fr}.firmware-detail-grid{grid-template-columns:1fr}.section-heading-row,.replacement-history-card{grid-template-columns:1fr;display:grid}.layout-summary-strip{grid-template-columns:1fr 1fr 1fr}.layout-canvas{padding:84px 10px 10px 78px}}@media(max-width:460px){.sidebar,.topbar,.content-pane{padding-inline:14px}.brand img{width:112px;max-width:54%;height:auto}.topbar h1{font-size:22px}.login-screen{padding:14px}.login-brand h1{font-size:31px}.metric-card strong{font-size:26px}.site-hero h2{font-size:28px}.hero-metrics strong{font-size:34px}.metric-pill.col-3,.metric-pill.col-2{grid-column:span 12}.device-management-hero{padding:18px}.device-management-hero h2{font-size:24px}.device-management-stats{grid-template-columns:1fr 1fr}.device-site-card{padding:14px}.logger-row{padding:12px}.logger-thumb{width:44px;height:44px;flex-basis:44px}.layout-editor-controls{grid-template-columns:1fr 1fr}.layout-summary-strip{grid-template-columns:1fr}.panel-image-wrap strong{font-size:9px}}
