:root{--font-sans: "Plus Jakarta Sans", system-ui, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--bg-deep: #070b14;--bg-elevated: rgba(255, 255, 255, .045);--glass-bg: rgba(255, 255, 255, .07);--glass-bg-strong: rgba(255, 255, 255, .1);--glass-border: rgba(255, 255, 255, .12);--glass-border-bright: rgba(255, 255, 255, .18);--glass-highlight: inset 0 1px 0 rgba(255, 255, 255, .08);--text: #f1f5f9;--text-muted: #94a3b8;--text-faint: #64748b;--accent-a: #22d3ee;--accent-b: #818cf8;--accent-c: #34d399;--gradient-brand: linear-gradient(135deg, var(--accent-a) 0%, var(--accent-b) 55%, #c084fc 100%);--gradient-subtle: linear-gradient(135deg, rgba(34, 211, 238, .15) 0%, rgba(129, 140, 248, .12) 100%);--danger: #f87171;--danger-bg: rgba(248, 113, 113, .12);--radius-sm: 10px;--radius-md: 16px;--radius-lg: 22px;--radius-pill: 999px;--shadow-glass: 0 8px 32px rgba(0, 0, 0, .45);--shadow-float: 0 20px 50px rgba(0, 0, 0, .55);--blur-glass: blur(22px) saturate(165%);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;min-height:100vh;font-family:var(--font-sans);line-height:1.55;color:var(--text);background:var(--bg-deep);position:relative;overflow-x:hidden}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-2;background:radial-gradient(ellipse 100% 80% at 0% -30%,rgba(34,211,238,.18),transparent 55%),radial-gradient(ellipse 80% 60% at 100% 10%,rgba(129,140,248,.2),transparent 50%),radial-gradient(ellipse 70% 50% at 50% 110%,rgba(52,211,153,.08),transparent 45%),linear-gradient(165deg,#050810,#0a1020 40%,#070b14);pointer-events:none}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;opacity:.035;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}#root{min-height:100vh;display:flex;flex-direction:column}a{color:var(--accent-a);text-decoration:none;transition:color .2s ease,opacity .2s ease}a:hover{color:#67e8f9;text-decoration:none}.glass-panel{background:var(--glass-bg);backdrop-filter:var(--blur-glass);-webkit-backdrop-filter:var(--blur-glass);border:1px solid var(--glass-border);box-shadow:var(--shadow-glass),var(--glass-highlight)}.shell{min-height:100vh;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:50;display:flex;flex-direction:column;align-items:stretch;gap:.65rem;padding:clamp(.6rem,2vw,.85rem) clamp(.85rem,3vw,1.5rem);margin:clamp(.5rem,2vw,.75rem) clamp(.5rem,3vw,1.25rem) 0;border-radius:var(--radius-lg);background:#080c188c;backdrop-filter:var(--blur-glass);-webkit-backdrop-filter:var(--blur-glass);border:1px solid var(--glass-border);box-shadow:var(--shadow-glass),var(--glass-highlight)}.topbar__row{display:flex;align-items:center;justify-content:space-between;gap:.65rem;min-width:0;width:100%}.brand-row{display:inline-flex;align-items:center;gap:.65rem;min-width:0;text-decoration:none!important}.brand-row__text{font-weight:700;font-size:clamp(.95rem,2.5vw,1.1rem);letter-spacing:-.02em;background:var(--gradient-brand);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent}.brand-row__text--short{display:none}@media(max-width:400px){.brand-row__text--long{display:none}.brand-row__text--short{display:inline}}.brand-mark{display:block;flex-shrink:0}.brand-mark--full{height:clamp(40px,8vw,52px);width:auto}.brand-mark--icon{height:clamp(28px,5vw,34px);width:auto}.nav{display:flex;align-items:center;gap:.35rem;flex-wrap:nowrap;min-width:0;width:100%;overflow-x:auto;padding-bottom:.2rem;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.topbar__nav{flex:none}.nav::-webkit-scrollbar{height:4px}.nav::-webkit-scrollbar-thumb{background:var(--glass-border);border-radius:var(--radius-pill)}.nav__label--short{display:none}@media(max-width:420px){.nav__label--full{display:none}.nav__label--short{display:inline}}.nav a{color:var(--text-muted);font-size:.875rem;font-weight:500;padding:.45rem .85rem;border-radius:var(--radius-pill);white-space:nowrap;border:1px solid transparent;transition:background .2s ease,color .2s ease,border-color .2s ease,box-shadow .2s ease}.nav a:hover{color:var(--text);background:var(--glass-bg);border-color:var(--glass-border)}.nav a.active{color:var(--text);background:var(--gradient-subtle);border-color:#22d3ee59;box-shadow:0 0 20px #22d3ee1f}.nav a:focus-visible,.brand-row:focus-visible{outline:2px solid var(--accent-a);outline-offset:3px;border-radius:var(--radius-sm)}.btn:focus-visible{outline:2px solid rgba(255,255,255,.85);outline-offset:2px}.userbox{display:flex;align-items:center;gap:.4rem;min-width:0;flex-shrink:1}.userbox .muted{color:var(--text-muted)}.userbox__email{min-width:0;max-width:min(38vw,10.5rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(min-width:640px){.userbox__email{max-width:14rem}}@media(min-width:900px){.userbox__email{max-width:18rem}}.userbox__role{flex-shrink:0;font-size:.65rem;font-weight:650;text-transform:uppercase;letter-spacing:.05em;padding:.22rem .5rem;border-radius:6px;background:#22d3ee1a;border:1px solid rgba(34,211,238,.28);color:var(--accent-a)}.main{flex:1;padding:clamp(1rem,3vw,1.75rem) clamp(1rem,4vw,1.5rem) clamp(2rem,5vw,3rem);max-width:1200px;width:100%;margin:0 auto}.page h1{margin-top:0;margin-bottom:.35rem;font-size:clamp(1.5rem,4vw,1.85rem);font-weight:700;letter-spacing:-.03em;background:linear-gradient(120deg,#f8fafc 0%,#e2e8f0 40%,var(--accent-a) 160%);-webkit-background-clip:text;background-clip:text;color:transparent}.page__back{margin:0 0 .65rem}.back-nav{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:var(--radius-sm);color:var(--text-muted);background:var(--glass-bg);border:1px solid var(--glass-border);transition:color .2s ease,border-color .2s ease,background .2s ease}.back-nav:hover{color:var(--accent-a);border-color:#22d3ee66;background:#22d3ee0f}.back-nav:focus-visible{outline:2px solid var(--accent-a);outline-offset:2px}.back-nav__icon{width:22px;height:22px}.page-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem 1rem;margin-bottom:.35rem}.page-head h1{margin-bottom:0}.page-head--device{align-items:center;gap:.65rem;margin-bottom:.5rem}.device-page__title{margin:0;font-size:clamp(1.2rem,4vw,1.65rem);line-height:1.2}.device-page__hero-icon{width:48px;height:48px;border-radius:14px;flex-shrink:0}.device-page__hero-icon .dashboard-icon{width:26px;height:26px}@media(min-width:480px){.device-page__hero-icon{width:52px;height:52px}.device-page__hero-icon .dashboard-icon{width:28px;height:28px}}.device-detail-card.card--summary.card--dash{padding:.7rem .95rem .75rem 1rem}.device-detail-card__meta{display:grid;grid-template-columns:minmax(3.25rem,30%) 1fr;gap:.28rem .6rem;margin:0;font-size:.84rem;line-height:1.32}@media(min-width:400px){.device-detail-card__meta{grid-template-columns:5.75rem 1fr;gap:.3rem .85rem;font-size:.875rem}}.device-detail-card__meta dt{margin:0;color:var(--text-muted);font-weight:600;font-size:.78rem;letter-spacing:.02em}.device-detail-card__meta dd{margin:0;min-width:0;word-break:break-word}.device-detail-card__mono{font-family:var(--font-mono);font-size:.8em}.device-detail-card__muted{color:var(--text-muted);font-size:.92em}.page--auth{position:relative;flex:1;min-height:100vh;padding:0;box-sizing:border-box}.auth-surface{position:relative;z-index:1;display:flex;flex-direction:column;min-height:100vh;width:100%;max-width:28rem;margin:0 auto;padding:clamp(.75rem,3vw,1.25rem) clamp(1rem,4vw,1.5rem) clamp(1rem,3vw,1.5rem);box-sizing:border-box}.auth-top{flex-shrink:0;display:flex;justify-content:center;align-items:center;padding:clamp(.5rem,2vw,.75rem) 0 clamp(1rem,3vw,1.35rem)}.auth-logo-header-enercore{height:clamp(52px,12vw,72px);width:auto;max-width:min(320px,92vw);object-fit:contain}.auth-main{flex:1;display:flex;flex-direction:column;align-items:center;width:100%;min-height:0;gap:.65rem}.auth-main--center{justify-content:center;padding:.5rem 0 1.5rem}.auth-main--start{justify-content:flex-start;padding:.25rem 0 1.5rem;overflow-y:auto}.auth-main h1{text-align:center;width:100%;margin:0}.auth-intro{text-align:center;margin:0;line-height:1.5}.auth-card{width:100%}.auth-foot{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:.4rem;padding-top:clamp(1.25rem,4vw,2rem);margin-top:auto}.auth-logo-logofull-csd{height:clamp(30px,7vw,42px);width:auto;max-width:min(260px,85vw);object-fit:contain;opacity:.92}.auth-foot-label{text-align:center;letter-spacing:.02em}.muted{color:var(--text-muted)}.small{font-size:.8125rem}.grid{display:grid;gap:clamp(.85rem,2vw,1.15rem)}@media(min-width:640px){.grid.cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr))}}.u-max-w-form{max-width:480px}.u-max-w-prose{max-width:32rem}.u-max-w-admin-filter{max-width:640px}.u-mt-tight{margin-top:1rem}.u-mb-section{margin-bottom:1.5rem}.audit-details{margin:0;max-width:280px;white-space:pre-wrap;font-size:.75rem;font-family:var(--font-mono);color:var(--text-muted)}.card{background:var(--glass-bg);backdrop-filter:var(--blur-glass);-webkit-backdrop-filter:var(--blur-glass);border-radius:var(--radius-md);padding:clamp(1rem,3vw,1.25rem) clamp(1.1rem,3vw,1.35rem);border:1px solid var(--glass-border);box-shadow:var(--shadow-glass),var(--glass-highlight);transition:transform .25s ease,border-color .25s ease,box-shadow .25s ease}.card:hover{border-color:var(--glass-border-bright)}.card h2{margin:0 0 .4rem;font-size:1.05rem;font-weight:600;letter-spacing:-.02em;color:var(--text)}a.card{color:inherit!important;text-decoration:none!important;display:block}a.card:hover{transform:translateY(-3px);border-color:#22d3ee66;box-shadow:var(--shadow-float),0 0 40px #22d3ee14}a.card--plant:hover{border-color:#34d39973;box-shadow:var(--shadow-float),0 0 44px #34d3991f}a.card--device:hover{border-color:#a78bfa80;box-shadow:var(--shadow-float),0 0 44px #818cf824}a.card.card--plant.card--dash{padding:.75rem .95rem .75rem 1rem}a.card--plant .card__top{gap:.65rem}a.card--plant .card__body h2{margin:0 0 .12rem;font-size:.98rem;line-height:1.22;letter-spacing:-.02em}a.card--plant .card__body p{margin:.08rem 0 0;line-height:1.3}a.card--plant .card__cta{margin-top:.5rem;padding-top:.42rem;font-size:.72rem}.card--dash{position:relative;overflow:hidden;padding-left:clamp(1.15rem,3vw,1.45rem)}.card--dash:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;border-radius:var(--radius-md) 0 0 var(--radius-md);pointer-events:none}.card--plant:before{background:linear-gradient(180deg,#34d399,#22d3ee 55%,#22d3ee);box-shadow:0 0 16px #34d39959}.card--device:before{background:linear-gradient(180deg,#a78bfa,#818cf8,#22d3ee);box-shadow:0 0 16px #818cf859}.card--dash:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 120% 80% at 100% 0%,rgba(34,211,238,.07),transparent 55%);pointer-events:none}.card--device.card--dash:after{background:radial-gradient(ellipse 120% 80% at 100% 0%,rgba(129,140,248,.1),transparent 55%)}.card--summary{background:linear-gradient(145deg,rgba(34,211,238,.09) 0%,var(--glass-bg) 42%,rgba(129,140,248,.07) 100%);border-color:#22d3ee38}.card--summary:before{display:none}.card--summary.card--dash{padding-left:clamp(1rem,3vw,1.25rem)}.card__top{display:flex;gap:1rem;align-items:flex-start;position:relative;z-index:1}.card__body{flex:1;min-width:0}.card__body h2{margin-top:.1rem}.card__icon{flex-shrink:0;width:48px;height:48px;border-radius:14px;display:flex;align-items:center;justify-content:center;box-shadow:inset 0 1px #ffffff1f}.card__icon--plant{background:linear-gradient(155deg,#34d39938,#22d3ee1f);border:1px solid rgba(52,211,153,.38);color:#6ee7b7}.card__icon--device{background:linear-gradient(155deg,#818cf847,#c084fc1a);border:1px solid rgba(165,180,252,.45);color:#c4b5fd}.card__icon--location{background:linear-gradient(155deg,#22d3ee33,#818cf81f);border:1px solid rgba(34,211,238,.35);color:var(--accent-a)}.dashboard-icon{width:26px;height:26px}.card__cta{position:relative;z-index:1;margin-top:1rem;padding-top:.85rem;border-top:1px solid rgba(255,255,255,.08);display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:.8125rem;font-weight:650;letter-spacing:.04em;text-transform:uppercase;color:var(--accent-a)}.card--plant .card__cta{color:#5eead4}.card--device .card__cta{color:#c4b5fd}.card__cta-icon{width:18px;height:18px;opacity:.85;transition:transform .25s ease}a.card--dash:hover .card__cta-icon{transform:translate(4px)}.btn{cursor:pointer;border:none;border-radius:var(--radius-sm);padding:.55rem 1.15rem;font-size:.9rem;font-weight:600;font-family:inherit;letter-spacing:.01em;color:#041018;background:var(--gradient-brand);box-shadow:0 4px 16px #22d3ee40,inset 0 1px #ffffff40;transition:transform .2s ease,filter .2s ease,box-shadow .2s ease}.btn:hover:not(:disabled){filter:brightness(1.06) saturate(1.05);transform:translateY(-1px);box-shadow:0 8px 28px #6366f159,inset 0 1px #ffffff4d}.btn:active:not(:disabled){transform:translateY(0)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn.ghost{background:transparent;color:var(--text-muted);border:1px solid var(--glass-border);box-shadow:none;padding:.5rem 1rem}.btn.ghost:hover:not(:disabled){color:var(--text);background:var(--glass-bg);border-color:#22d3ee59;filter:none;transform:none}.btn--icon{padding:0!important;width:2.5rem;height:2.5rem;min-width:2.5rem;min-height:2.5rem;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.btn--icon.btn.ghost{box-shadow:none}.btn--icon__svg{width:20px;height:20px}@media(min-width:480px){.btn:not(.btn--icon),.btn.ghost:not(.btn--icon){min-height:44px;padding-left:1.25rem;padding-right:1.25rem}}.form{display:flex;flex-direction:column;gap:.85rem;max-width:100%}.form label{display:flex;flex-direction:column;gap:.35rem;font-size:.8125rem;font-weight:500;color:var(--text-muted)}.form input,.form select,.form textarea{padding:.65rem .9rem;border:1px solid var(--glass-border);border-radius:var(--radius-sm);font-size:.95rem;font-family:inherit;color:var(--text);background:#00000059;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);transition:border-color .2s ease,box-shadow .2s ease,background .2s ease}.form input::placeholder,.form textarea::placeholder{color:var(--text-faint)}.form input:hover,.form select:hover,.form textarea:hover{border-color:var(--glass-border-bright)}.form input:focus-visible,.form select:focus-visible,.form textarea:focus-visible{outline:none;border-color:#22d3ee8c;box-shadow:0 0 0 3px #22d3ee26;background:#00000073}.form select{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;padding-right:2.25rem}.error{color:var(--danger);font-size:.875rem;padding:.5rem .75rem;border-radius:var(--radius-sm);background:var(--danger-bg);border:1px solid rgba(248,113,113,.25)}.table-wrap{overflow-x:auto;border-radius:var(--radius-md);border:1px solid var(--glass-border);background:var(--glass-bg);backdrop-filter:var(--blur-glass);-webkit-backdrop-filter:var(--blur-glass);box-shadow:var(--shadow-glass),var(--glass-highlight)}table{width:100%;border-collapse:collapse;font-size:.875rem}th,td{text-align:left;padding:.65rem .9rem;border-bottom:1px solid rgba(255,255,255,.06)}th{background:#00000059;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}tbody tr{transition:background .15s ease}tbody tr:hover{background:#ffffff08}tbody tr:last-child td{border-bottom:none}code,.code-block{font-family:var(--font-mono);font-size:.8em}.code-block{display:block;padding:.85rem 1rem;border-radius:var(--radius-sm);background:#00000073;border:1px solid var(--glass-border);word-break:break-all;color:var(--accent-a)}.stack{display:flex;flex-direction:column;gap:.5rem}.card.table-wrap{padding:0;overflow:hidden}.card.table-wrap table{background:transparent}.card.table-wrap th:first-child,.card.table-wrap td:first-child{padding-left:1.1rem}.card.table-wrap th:last-child,.card.table-wrap td:last-child{padding-right:1.1rem}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}a.card:hover,.btn:hover:not(:disabled){transform:none}}
