/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-ease:initial}}}@layer theme{:root,:host{--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-bold:700;--font-weight-extrabold:800;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--shadow-sm:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-y-0{inset-block:0}.-top-1{top:calc(var(--spacing) * -1)}.top-0{top:0}.top-1{top:var(--spacing)}.top-1\/2{top:50%}.top-10{top:calc(var(--spacing) * 10)}.-right-1{right:calc(var(--spacing) * -1)}.-right-\[2px\]{right:-2px}.right-0{right:0}.right-2{right:calc(var(--spacing) * 2)}.bottom-0{bottom:0}.bottom-1{bottom:var(--spacing)}.left-0{left:0}.left-2{left:calc(var(--spacing) * 2)}.left-2\.5{left:calc(var(--spacing) * 2.5)}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-0{margin:0}.my-1{margin-block:var(--spacing)}.mb-\[18px\]{margin-bottom:18px}.ml-1{margin-left:var(--spacing)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-\[2px\]{height:2px}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-40{width:calc(var(--spacing) * 40)}.w-56{width:calc(var(--spacing) * 56)}.w-\[2px\]{width:2px}.w-\[5px\]{width:5px}.w-full{width:100%}.min-w-0{min-width:0}.min-w-3\.5{min-width:calc(var(--spacing) * 3.5)}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-col-resize{cursor:col-resize}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.rounded-\[var\(--radius-lg\)\]{border-radius:var(--radius-lg)}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-\[var\(--line\)\]{border-color:var(--line)}.border-\[var\(--line-strong\)\]{border-color:var(--line-strong)}.bg-\[var\(--accent\)\]{background-color:var(--accent)}.bg-\[var\(--accent-soft\)\]{background-color:var(--accent-soft)}.bg-\[var\(--card\)\]{background-color:var(--card)}.bg-\[var\(--card-raised\)\]{background-color:var(--card-raised)}.bg-\[var\(--surface-2\)\]{background-color:var(--surface-2)}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:var(--spacing)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[11px\]{font-size:11px}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.tracking-\[0\.1em\]{--tw-tracking:.1em;letter-spacing:.1em}.tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.text-\[var\(--accent-ink\)\]{color:var(--accent-ink)}.text-\[var\(--text\)\]{color:var(--text)}.text-\[var\(--text-faint\)\]{color:var(--text-faint)}.text-\[var\(--text-muted\)\]{color:var(--text-muted)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.opacity-40{opacity:.4}.shadow-\[0_-1px_0_var\(--line\)\]{--tw-shadow:0 -1px 0 var(--tw-shadow-color,var(--line));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_1px_0_var\(--line-strong\)\]{--tw-shadow:0 1px 0 var(--tw-shadow-color,var(--line-strong));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[var\(--shadow\)\]{--tw-shadow:var(--shadow);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[var\(--shadow-lg\)\]{--tw-shadow:var(--shadow-lg);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.select-none{-webkit-user-select:none;user-select:none}.last\:border-r-0:last-child{border-right-style:var(--tw-border-style);border-right-width:0}@media (hover:hover){.hover\:border-\[var\(--accent-ring\)\]:hover{border-color:var(--accent-ring)}.hover\:bg-\[var\(--accent-ring\)\]:hover{background-color:var(--accent-ring)}.hover\:bg-\[var\(--row-hover\)\]:hover{background-color:var(--row-hover)}.hover\:text-\[var\(--accent-ink\)\]:hover{color:var(--accent-ink)}.hover\:text-\[var\(--text\)\]:hover{color:var(--text)}}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:opacity-30:disabled{opacity:.3}.data-\[dragging\]\:bg-\[var\(--accent\)\][data-dragging]{background-color:var(--accent)}@media (width>=40rem){.sm\:w-52{width:calc(var(--spacing) * 52)}}}:root{--bg:#1a1a2e;--bg-deep:#14142a;--surface:#16213e;--surface-2:#1b2a4d;--card:#16213e;--card-raised:#1b2a4d;--line:#ffffff17;--line-strong:#ffffff29;--text:#e7ecf7;--text-muted:#94a3c4;--text-faint:#6f7d9c;--accent:#4a90e2;--accent-ink:#8fbef7;--accent-soft:#4a90e229;--accent-ring:#4a90e273;--btn-grad-a:#3373c6;--btn-grad-b:#2b62a9;--btn-grad-a-hover:#3a7cd0;--btn-grad-b-hover:#2f6ab5;--prosumer:#f5a623;--prosumer-ink:#ffc766;--producing:#2ecc71;--producing-ink:#58e08f;--consuming:#e74c3c;--consuming-ink:#ff8577;--grid:#8e44ad;--grid-ink:#c78ade;--stale:#9e9e9e;--stale-ink:#b9c0cf;--danger:#e74c3c;--danger-ink:#ff8577;--danger-soft:#e74c3c24;--warn:#f5a623;--warn-ink:#ffc766;--warn-soft:#f5a62321;--ok:#2ecc71;--ok-ink:#58e08f;--ok-soft:#2ecc7121;--info-soft:#4a90e221;--field-bg:#ffffff0a;--field-bg-focus:#ffffff12;--row-hover:#ffffff0b;--code-bg:#ffffff0f;--scrim:#080a16a8;--header-grad:linear-gradient(105deg, #16213e 0%, #1b2a4d 55%, #16213e 100%);--page-grad:radial-gradient(1200px 600px at 80% -10%, #4a90e217, transparent 60%);--auth-grad:radial-gradient(900px 500px at 15% 0%, #4a90e238, transparent 60%), radial-gradient(700px 500px at 90% 100%, #f5a62324, transparent 60%), linear-gradient(155deg, #14142a 0%, #16213e 45%, #0f3460 100%);--shadow-sm:0 1px 2px #00000059;--shadow:0 1px 2px #00000052, 0 6px 18px #0000004d;--shadow-lg:0 2px 6px #0000004d, 0 24px 60px #00000080;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--fs-xs:11px;--fs-sm:12.5px;--fs-base:14.5px;--fs-md:16px;--fs-lg:19px;--fs-xl:24px;--fs-2xl:30px;--radius-sm:8px;--radius:12px;--radius-lg:14px;--radius-pill:999px;--t:.15s ease;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--bg:#f4f6fb;--bg-deep:#eef1f8;--surface:#fff;--surface-2:#f2f5fa;--card:#fff;--card-raised:#f7f9fc;--line:#e2e8f1;--line-strong:#cdd6e4;--text:#16213e;--text-muted:#5b6a86;--text-faint:#7b88a1;--accent:#4a90e2;--accent-ink:#2f6fbf;--accent-soft:#4a90e21f;--accent-ring:#4a90e259;--prosumer-ink:#8a5a06;--producing-ink:#167a4a;--consuming-ink:#b03024;--grid-ink:#6b2f8a;--stale-ink:#5b6a86;--danger-ink:#b03024;--danger-soft:#e74c3c1a;--warn-ink:#8a5a06;--warn-soft:#f5a62329;--ok-ink:#167a4a;--ok-soft:#2ecc7124;--info-soft:#4a90e21a;--field-bg:#fff;--field-bg-focus:#fff;--row-hover:#f5f8fc;--code-bg:#eef2f8;--scrim:#16213e6b;--header-grad:linear-gradient(105deg, #16213e 0%, #22355f 55%, #16213e 100%);--page-grad:radial-gradient(1200px 600px at 80% -10%, #4a90e212, transparent 60%);--shadow-sm:0 1px 2px #16213e0f;--shadow:0 1px 2px #16213e0d, 0 8px 20px #16213e12;--shadow-lg:0 2px 6px #16213e14, 0 24px 60px #16213e38;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);background-image:var(--page-grad);color:var(--text);font-family:var(--font);font-size:var(--fs-base);-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;background-attachment:fixed;margin:0;line-height:1.5}h1,h2,h3{letter-spacing:-.01em;line-height:1.25}a{color:var(--accent-ink);text-decoration:none}a:hover{text-decoration:underline}code,.mono{font-family:var(--mono);word-break:break-all;font-size:.92em}.num,.table td,.stat-value,.pin-input,.cred-row code{font-variant-numeric:tabular-nums}::selection{background:var(--accent-ring);color:#fff}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.app-shell{flex-direction:column;height:100%;display:flex}.app-main{flex-direction:column;flex:1;min-height:0;display:flex;overflow:auto}.topbar{background:var(--header-grad);color:#e7ecf7;z-index:20;--text:#e7ecf7;--text-muted:#b9c6dd;--text-faint:#93a3bd;--line:#ffffff1f;--line-strong:#fff3;--surface-2:#ffffff14;--card-raised:#ffffff24;--row-hover:#ffffff1a;--accent-ink:#8fbef7;--ok-ink:#58e08f;--ok-soft:#2ecc712e;--info-soft:#4a90e233;--danger-ink:#ff8577;--prosumer-ink:#ffc766;--consuming-ink:#ff8577;--stale-ink:#c3cbdb;border-bottom:1px solid #ffffff14;flex-shrink:0;align-items:center;gap:14px;padding:10px 16px;display:flex;position:relative;box-shadow:0 1px #00000040,0 8px 24px #0000002e}.topbar:after{content:"";pointer-events:none;background:linear-gradient(90deg,#0000,#f5a6238c,#4a90e28c,#0000);height:1px;position:absolute;bottom:-1px;left:0;right:0}.brand{font-weight:700;font-size:var(--fs-md);letter-spacing:-.01em;color:#fff;flex:none;align-items:center;gap:9px;text-decoration:none;display:inline-flex}.brand:hover{text-decoration:none}a.brand:hover .brand-mark{transform:rotate(25deg)}.brand-mark{color:#f5c542;filter:drop-shadow(0 0 8px #f5c54273);transition:transform var(--t)}.brand-name{white-space:nowrap}.topnav{gap:4px;min-width:0;display:flex}.navlink{color:#b9c6dd;border-radius:var(--radius-pill);font-size:var(--fs-sm);white-space:nowrap;transition:background var(--t), color var(--t), border-color var(--t);border:1px solid #0000;align-items:center;gap:6px;padding:6px 12px;font-weight:600;text-decoration:none;display:inline-flex}.navlink:hover{color:#fff;background:#ffffff12;text-decoration:none}.navlink.active{background:var(--accent-soft);color:#cfe2fb;border-color:#4a90e280}.topbar-user{font-size:var(--fs-sm);align-items:center;gap:8px;min-width:0;margin-left:auto;display:flex}.user-chip{border-radius:var(--radius-pill);background:#ffffff0f;border:1px solid #ffffff17;align-items:center;gap:8px;min-width:0;padding:4px 6px 4px 11px;display:inline-flex}.user-email{text-overflow:ellipsis;white-space:nowrap;color:#d4dcec;max-width:30vw;overflow:hidden}.icon-btn{color:#dbe3f2;cursor:pointer;width:32px;height:32px;transition:background var(--t), border-color var(--t), color var(--t);background:#ffffff0f;border:1px solid #ffffff1f;border-radius:10px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.icon-btn:hover{color:#fff;background:#ffffff21;border-color:#ffffff3d}.icon-btn-plain{border-color:var(--line);background:var(--surface);color:var(--text-muted)}.icon-btn-plain:hover{background:var(--card-raised);border-color:var(--line-strong);color:var(--text)}.page{width:100%;max-width:1120px;padding:24px 22px 48px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:14px;margin-bottom:20px;display:flex}.page h1{font-size:var(--fs-xl);margin:2px 0 0;font-weight:700}.page-head p{color:var(--text-muted);font-size:var(--fs-sm);margin:6px 0 0}.crumb{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.09em;color:var(--text-faint);font-weight:700}.crumb a,.muted{color:var(--text-muted)}.steps{color:var(--text-muted);max-width:70ch;padding-left:20px;line-height:1.9}.steps strong{color:var(--text)}.panel,.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow)}.panel{margin-bottom:18px;padding:18px 20px 20px}.panel>h2,.panel-head h2{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.1em;color:var(--text-faint);margin:0 0 14px;font-weight:800}.panel-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.panel-head h2{margin:0}.panel>p.muted:first-of-type{max-width:72ch;font-size:var(--fs-sm);margin-top:-6px}.stat-row{flex-wrap:wrap;gap:10px;margin-bottom:18px;display:flex}.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);flex-direction:column;gap:2px;min-width:104px;padding:10px 16px;display:flex}.stat-value,.stat span{font-size:var(--fs-lg);color:var(--text);font-weight:700;line-height:1.15}.stat-label,.stat{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);font-weight:700}.card-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;display:grid}.card{padding:18px}.card h2{font-size:var(--fs-md);margin:0;font-weight:700}.card p{font-size:var(--fs-sm);margin:0}.group-card{transition:border-color var(--t), box-shadow var(--t), transform var(--t);flex-direction:column;gap:14px;display:flex}.group-card:hover{border-color:var(--accent-ring);box-shadow:var(--shadow), 0 0 0 1px var(--accent-ring);transform:translateY(-1px)}.group-card-head{align-items:flex-start;gap:11px;display:flex}.group-card-head .group-card-mark{background:var(--accent-soft);width:34px;height:34px;color:var(--accent-ink);border-radius:10px;flex:none;justify-content:center;align-items:center;display:inline-flex}.group-card-meta{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.07em;color:var(--text-faint);flex-wrap:wrap;gap:14px;font-weight:700;display:flex}.group-card-meta b{color:var(--text);font-size:var(--fs-sm);letter-spacing:0}.card-actions{flex-wrap:wrap;gap:8px;margin-top:auto;display:flex}.card-link{color:inherit;text-decoration:none;display:block}.card-link:hover{border-color:var(--accent-ring);box-shadow:var(--shadow), 0 0 0 1px var(--accent-ring);text-decoration:none}.empty{text-align:center;border:1px dashed var(--line-strong);border-radius:var(--radius);background:var(--surface-2);color:var(--text-muted);font-size:var(--fs-sm);flex-direction:column;align-items:center;gap:10px;padding:30px 18px;display:flex}.empty-icon{background:var(--accent-soft);width:40px;height:40px;color:var(--accent-ink);border-radius:12px;justify-content:center;align-items:center;display:inline-flex}.empty-title{font-size:var(--fs-md);color:var(--text);font-weight:700}.empty p{max-width:46ch;margin:0}.field{flex-direction:column;gap:5px;min-width:0;margin-bottom:14px;display:flex}.field-label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);font-weight:700}.field-hint{font-size:var(--fs-xs);color:var(--text-faint);max-width:62ch;line-height:1.45}.field-error{color:var(--danger-ink);font-weight:700}input,select,textarea{font:inherit;font-size:var(--fs-base);color:var(--text);background:var(--field-bg);border:1px solid var(--line-strong);border-radius:var(--radius-sm);width:100%;min-width:0;transition:border-color var(--t), box-shadow var(--t), background var(--t);padding:9px 11px}input::placeholder,textarea::placeholder{color:var(--text-faint)}input:hover:not(:disabled),select:hover:not(:disabled),textarea:hover:not(:disabled){border-color:var(--accent-ring)}input:focus,select:focus,textarea:focus{background:var(--field-bg-focus);border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-ring);outline:none}input:disabled,select:disabled,textarea:disabled{opacity:.55;cursor:not-allowed}input[aria-invalid=true],select[aria-invalid=true],textarea[aria-invalid=true]{border-color:var(--danger)}input[aria-invalid=true]:focus,textarea[aria-invalid=true]:focus{box-shadow:0 0 0 2px var(--danger-soft)}textarea{font-family:var(--mono);font-size:var(--fs-sm);resize:vertical;line-height:1.5}select{appearance:none;background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:right 14px center,right 9px center;background-repeat:no-repeat;background-size:5px 5px,5px 5px;padding-right:30px}.save-note{font-size:var(--fs-sm);color:var(--ok-ink);margin-left:10px;font-weight:600}p.save-note{margin:12px 0 0}.form-row{flex-wrap:wrap;align-items:flex-start;gap:12px;display:flex}.form-row-add{border-top:1px solid var(--line);margin-top:18px;padding-top:16px}.form-row .field{flex:170px;margin-bottom:0}.form-row .btn{margin-top:23px;margin-bottom:0}.form-row .switch-row{flex:none;align-items:center;margin-top:21px;margin-bottom:0}.form-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:4px 18px;margin-bottom:16px;display:grid}.form-grid .checkline,.form-grid .switch-row{grid-column:1/-1}.checkline{font-size:var(--fs-sm);align-items:center;gap:9px;margin-bottom:12px;display:flex}.checkline input{width:auto;accent-color:var(--accent);width:17px;height:17px}.switch-row{cursor:pointer;align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.switch-row input{opacity:0;width:0;height:0;position:absolute}.switch-track{border-radius:var(--radius-pill);background:var(--surface-2);border:1px solid var(--line-strong);width:42px;height:24px;transition:background var(--t), border-color var(--t);flex:none;margin-top:1px;position:relative}.switch-track:after{content:"";background:var(--text-muted);width:18px;height:18px;box-shadow:var(--shadow-sm);transition:transform var(--t), background var(--t);border-radius:50%;position:absolute;top:2px;left:2px}.switch-row input:checked+.switch-track{background:linear-gradient(180deg, var(--btn-grad-a), var(--btn-grad-b));border-color:var(--accent)}.switch-row input:checked+.switch-track:after{background:#fff;transform:translate(18px)}.switch-row input:focus-visible+.switch-track{box-shadow:0 0 0 2px var(--accent-ring)}.switch-text{flex-direction:column;gap:2px;min-width:0;display:flex}.switch-label{font-size:var(--fs-base);font-weight:600}.switch-hint{font-size:var(--fs-xs);color:var(--text-faint);max-width:60ch}.search{max-width:260px}.toggle-group{border:1px solid var(--line-strong);background:var(--surface-2);border-radius:10px;align-self:flex-start;gap:3px;padding:3px;display:inline-flex}.toggle{cursor:pointer;font:inherit;font-size:var(--fs-sm);color:var(--text-muted);transition:background var(--t), color var(--t);background:0 0;border:none;border-radius:8px;padding:7px 16px;font-weight:600}.toggle:hover{color:var(--text)}.toggle.active{background:linear-gradient(180deg, var(--btn-grad-a), var(--btn-grad-b));color:#fff;box-shadow:var(--shadow-sm)}.sign-row{gap:12px;display:flex}.sign-group{align-items:center;gap:6px;display:flex}.sign-label{color:var(--text-muted);text-transform:uppercase;font-weight:700;font-size:var(--fs-sm)}.sign-group select{width:68px}.btn{font:inherit;font-size:var(--fs-sm);border:1px solid var(--line-strong);background:var(--surface-2);color:var(--text);cursor:pointer;white-space:nowrap;transition:background var(--t), border-color var(--t), color var(--t), box-shadow var(--t), transform var(--t);border-radius:10px;justify-content:center;align-items:center;gap:7px;padding:9px 15px;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover:not(:disabled){border-color:var(--accent-ring);background:var(--card-raised);color:var(--text);text-decoration:none}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:linear-gradient(180deg, var(--btn-grad-a), var(--btn-grad-b));color:#fff;box-shadow:var(--shadow-sm);border-color:#ffffff24}.btn-primary:hover:not(:disabled){background:linear-gradient(180deg, var(--btn-grad-a), var(--btn-grad-b));color:#fff;box-shadow:var(--shadow-sm), 0 0 0 3px var(--accent-ring);border-color:#ffffff4d}.btn-danger{color:var(--danger-ink);background:0 0;border-color:#e74c3c8c}.btn-danger:hover:not(:disabled){background:var(--danger);border-color:var(--danger);color:#fff;box-shadow:none}.btn-ghost{color:var(--text-muted);background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--row-hover);color:var(--text);border-color:#0000}.btn-sm{font-size:var(--fs-xs);border-radius:9px;padding:6px 11px}.btn-block{width:100%}.btn-lg{font-size:var(--fs-base);padding:11px 18px}.actions{flex-wrap:wrap;align-items:center;gap:7px;display:flex}.confirm{align-items:center;gap:7px;display:inline-flex}.confirm-q{font-size:var(--fs-xs);color:var(--danger-ink);font-weight:700}.danger-row{border-top:1px solid var(--line);font-size:var(--fs-sm);flex-wrap:wrap;align-items:center;gap:12px;margin-top:18px;padding-top:15px;display:flex}.pill{border-radius:var(--radius-pill);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.07em;background:var(--surface-2);color:var(--text-muted);white-space:nowrap;border:1px solid #0000;align-items:center;gap:5px;padding:3px 10px;font-weight:800;display:inline-flex}.pill:before{content:"";background:currentColor;border-radius:50%;flex:none;width:6px;height:6px}.pill-admin,.pill-active{background:var(--ok-soft);color:var(--ok-ink);border-color:#2ecc7159}.pill-prosumer{background:var(--warn-soft);color:var(--prosumer-ink);border-color:#f5a62359}.pill-consumer{background:var(--danger-soft);color:var(--consuming-ink);border-color:#e74c3c52}.pill-member,.pill-provisioned{background:var(--info-soft);color:var(--accent-ink);border-color:#4a90e259}.pill-disabled,.pill-stale,.pill-unknown{background:var(--surface-2);border-color:var(--line-strong);color:var(--stale-ink)}.alert{border-radius:var(--radius);font-size:var(--fs-sm);border:1px solid var(--line);background:var(--surface-2);justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;padding:12px 14px;line-height:1.5;display:flex}.alert-icon{flex:none;margin-top:1px}.alert-body{align-items:flex-start;gap:10px;min-width:0;display:flex}.alert-error{background:var(--danger-soft);color:var(--danger-ink);border-color:#e74c3c66}.alert-warn{background:var(--warn-soft);color:var(--warn-ink);border-color:#f5a62366}.alert-warn strong{color:var(--warn-ink)}.alert-info{background:var(--info-soft);color:var(--text);border-color:#4a90e259}.alert-code{font-size:var(--fs-xs);opacity:.8;font-family:var(--mono);margin-top:3px;display:block}.crash{max-width:680px}.crash-detail{background:var(--code-bg);border:1px solid var(--line);border-radius:var(--radius);font-family:var(--mono);font-size:var(--fs-sm);white-space:pre-wrap;word-break:break-word;color:var(--text-muted);padding:12px 14px;overflow-x:auto}.crash-actions{flex-wrap:wrap;gap:10px;margin-top:18px;display:flex}.spinner{color:var(--text-muted);font-size:var(--fs-sm);align-items:center;gap:12px;padding:30px 24px;display:flex}.spinner-dot{background:var(--accent);width:11px;height:11px;box-shadow:0 0 12px var(--accent-ring);border-radius:50%;animation:1.1s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.5}}.table-scroll{-webkit-overflow-scrolling:touch;margin:0 -20px;padding:0 20px;overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}.table-scroll .table{width:auto;min-width:100%}.table-scroll .table th,.table-scroll .table td{white-space:nowrap}.table-scroll .table code{word-break:normal}.table th,.table td{text-align:left;border-bottom:1px solid var(--line);vertical-align:middle;padding:11px 12px}.table thead th{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);white-space:nowrap;border-bottom-color:var(--line-strong);padding-top:4px;font-weight:800}.table tbody tr{transition:background var(--t)}.table tbody tr:hover{background:var(--row-hover)}.table tbody tr:last-child td{border-bottom:none}.table .num,.table th.num{text-align:right;font-variant-numeric:tabular-nums}.table .when{color:var(--text-muted);white-space:nowrap}.table code{background:var(--code-bg);color:var(--text-muted);border-radius:6px;padding:2px 6px}.table-note{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.07em;color:var(--text-faint);margin:16px 0 0;padding-left:12px;font-weight:700}.th-sort{font:inherit;color:inherit;cursor:pointer;text-transform:inherit;letter-spacing:inherit;font-weight:inherit;transition:color var(--t);background:0 0;border:none;align-items:center;padding:0;display:inline-flex}.th-sort:hover{color:var(--accent-ink)}.login-page,.public-page{background:var(--auth-grad);background-attachment:fixed;justify-content:center;align-items:center;min-height:100%;padding:24px 18px;display:flex}:root[data-theme=light] .login-page,:root[data-theme=light] .public-page{--auth-grad:radial-gradient(900px 500px at 15% 0%, #4a90e24d, transparent 60%), radial-gradient(700px 500px at 90% 100%, #f5a62333, transparent 60%), linear-gradient(155deg, #1d2947 0%, #16213e 45%, #0f3460 100%)}.auth-card,.login-card{background:var(--card);border:1px solid var(--line);width:100%;max-width:400px;box-shadow:var(--shadow-lg);border-radius:18px;padding:30px 28px 28px}.public-page .login-card,.public-page .auth-card{max-width:440px}.auth-card-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.login-brand{font-size:var(--fs-lg);letter-spacing:-.015em;color:var(--text);align-items:center;gap:10px;font-weight:700;display:inline-flex}.login-brand .brand-mark{color:#f5c542}.login-title{font-size:var(--fs-xl);margin:20px 0 0;font-weight:700}.login-sub{color:var(--text-muted);font-size:var(--fs-sm);margin:6px 0 22px;line-height:1.55}.pin-head{align-items:flex-start;gap:12px;display:flex}.pin-head .public-sub{margin-top:0}.public-h1{font-size:var(--fs-lg);margin:18px 0 0}.public-sub{color:var(--text-muted);font-size:var(--fs-sm);margin:6px 0 18px;line-height:1.55}.pin-input{font-family:var(--mono);letter-spacing:.32em;text-align:center;font-variant-numeric:tabular-nums;padding:14px 12px;font-size:26px}.public-topbar-title{align-items:center;gap:8px;min-width:0;display:flex}.public-title{font-size:var(--fs-sm);color:#c8d3e6;text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.public-link-row{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2);font-size:var(--fs-sm);flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px;padding:10px 12px;display:flex}.public-link-row code{color:var(--text);flex:220px}.public-link-row a{align-items:center;gap:5px;font-weight:600;display:inline-flex}.admin{flex:1;min-height:0;display:flex;position:relative}.sidebar{border-right:1px solid var(--line);background:var(--surface);flex-direction:column;flex-shrink:0;gap:22px;width:276px;padding:16px 12px 44px;display:flex;overflow-y:auto}.sidebar-section{flex-direction:column;gap:6px;display:flex}.sidebar-head{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.1em;color:var(--text-faint);justify-content:space-between;align-items:center;gap:8px;padding:0 6px 4px;font-weight:800;display:flex}.sidebar-head-actions{align-items:center;gap:6px;display:inline-flex}.sidebar-form{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2);margin:2px 4px 6px;padding:8px}.sidebar-close{display:none}.admin-main{flex:1;min-width:0;overflow:auto}.sidebar-toggle,.sidebar-scrim{display:none}.tree{margin:0;padding:0;list-style:none}.tree-nested{border-left:1px solid var(--line);margin-left:15px;padding-left:5px}.tree-row{align-items:center;gap:2px;display:flex}.tree-caret{cursor:pointer;width:22px;height:26px;color:var(--text-faint);transition:color var(--t), background var(--t);background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}button.tree-caret:hover{color:var(--text);background:var(--row-hover)}.tree-link{min-width:0;color:var(--text-muted);font-size:var(--fs-sm);transition:background var(--t), color var(--t), border-color var(--t);border-left:2px solid #0000;border-radius:9px;flex:1;align-items:center;gap:8px;padding:6px 9px;font-weight:500;text-decoration:none;display:flex;overflow:hidden}.tree-link span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tree-link:hover{background:var(--row-hover);color:var(--text);text-decoration:none}.tree-link.active{background:var(--accent-soft);border-left-color:var(--accent);color:var(--accent-ink);font-weight:700}.tree-icon{color:var(--text-faint);flex:none}.tree-link.active .tree-icon{color:var(--accent-ink)}.tree-icon-prosumer{color:var(--prosumer-ink)}.tree-icon-consumer{color:var(--consuming-ink)}.tree-muted{color:var(--text-faint);font-size:var(--fs-xs);padding:4px 8px 4px 24px;font-style:italic}.modal-backdrop{background:var(--scrim);-webkit-backdrop-filter:blur(3px);z-index:1000;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--card);border:1px solid var(--line-strong);width:100%;max-width:440px;max-height:90vh;box-shadow:var(--shadow-lg);border-radius:16px;flex-direction:column;display:flex}.modal:focus,.modal:focus-visible{outline:none}.modal-wide{max-width:580px}.modal-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;padding:16px 18px;display:flex}.modal-head h2{font-size:var(--fs-md);margin:0;font-weight:700}.modal-body{padding:18px;overflow:auto}.modal-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;margin-top:18px;display:flex}.cred-list{border:1px solid var(--line);border-radius:var(--radius);margin:16px 0 0;overflow:hidden}.cred-row{border-bottom:1px solid var(--line);background:var(--surface-2);flex-direction:column;gap:5px;padding:11px 13px;display:flex}.cred-row:last-child{border-bottom:none}.cred-row dt{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);font-weight:800}.cred-row dd{justify-content:space-between;align-items:center;gap:10px;margin:0;display:flex}.cred-row code{font-family:var(--mono);font-size:var(--fs-base);background:var(--code-bg);border:1px solid var(--line);min-width:0;color:var(--text);-webkit-user-select:all;user-select:all;border-radius:8px;flex:1;padding:7px 10px}.cred-secret{letter-spacing:.05em;font-weight:700;border-color:var(--accent-ring)!important}.cred-all{background:var(--code-bg);border:1px solid var(--line-strong);border-radius:var(--radius);font-family:var(--mono);font-size:var(--fs-sm);white-space:pre-wrap;word-break:break-word;-webkit-user-select:all;user-select:all;margin:14px 0 0;padding:12px}.cred-ack{font-weight:600;font-size:var(--fs-base);margin-top:16px}.cred-gate{text-align:right;margin:8px 0 0}.copy-wrap{flex-direction:column;flex:none;align-items:flex-end;gap:5px;display:inline-flex}.copy-failed{font-size:var(--fs-xs);color:var(--danger-ink);text-align:right;max-width:230px;font-weight:600}.live-root{flex-direction:column;flex:1;width:100%;min-height:0;display:flex;overflow:hidden}.live-overlay{z-index:12;border-radius:var(--radius);border:1px solid var(--line);font-size:var(--fs-sm);box-shadow:var(--shadow);padding:9px 16px;position:absolute;top:18px;left:50%;transform:translate(-50%)}.live-overlay-error{background:var(--danger-soft);color:var(--danger-ink);-webkit-backdrop-filter:blur(6px);border:1px solid #e74c3c73}.live-degraded-veil{z-index:11;-webkit-backdrop-filter:saturate(.25);pointer-events:none;background:#787c8273;position:absolute;inset:0}.live-degraded .echarts-for-react{filter:grayscale(.85);opacity:.65}.live-degraded-banner{text-align:center;flex-direction:column;gap:3px;max-width:min(420px,100% - 24px);display:flex}.live-degraded-detail{font-size:var(--fs-xs);opacity:.9}.live-quality{background:var(--warn-soft);color:var(--warn-ink);font-size:var(--fs-sm);border-top:1px solid #f5a62366;flex-shrink:0;align-items:flex-start;gap:8px;padding:8px 14px;display:flex}@media (width<=767px){.topbar{flex-wrap:wrap;gap:10px;padding:9px 12px}.brand-name{display:none}.topnav{order:3;width:100%;padding-bottom:2px;overflow-x:auto}.topbar-user{gap:6px}.user-email{display:none}.user-chip{padding:4px 5px}.page{padding:16px 13px 40px}.page h1{font-size:var(--fs-lg)}.panel{border-radius:var(--radius);padding:15px 14px 16px}.table-scroll{margin:0 -14px;padding:0 14px}.sidebar-toggle{z-index:30;display:inline-flex;position:absolute;top:10px;left:12px}.sidebar-close{display:inline-flex}.sidebar{z-index:40;width:86%;max-width:320px;transition:transform .2s;position:absolute;top:0;bottom:0;left:0;transform:translate(-102%);box-shadow:0 0 40px #00000073}.admin.sidebar-open .sidebar{transform:translate(0)}.admin.sidebar-open .sidebar-scrim{z-index:35;background:var(--scrim);border:none;padding:0;display:block;position:absolute;inset:0}.admin-main{padding-top:46px}.form-row{flex-direction:column;align-items:stretch}.form-row .field{flex:none}.form-row .btn{width:100%;margin-top:0}.form-row .switch-row{margin-top:4px}.form-grid,.card-grid{grid-template-columns:1fr}.modal-actions .btn,.modal-actions .copy-wrap,.modal-actions .copy-wrap .btn{width:100%}.cred-row dd{flex-direction:column;align-items:stretch}.cred-row dd .btn,.cred-row dd .copy-wrap{align-self:flex-end}}@media (width<=420px){.actions{gap:6px}.btn-sm{padding:6px 9px}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
