.ob-shell{min-height:100vh;background:radial-gradient(900px 600px at 15% -10%,color-mix(in oklch,var(--accent) 22%,transparent),transparent 60%),radial-gradient(800px 500px at 90% 110%,color-mix(in oklch,var(--primary) 22%,transparent),transparent 60%),var(--background)}.ob-card{background:color-mix(in oklch,var(--card) 88%,transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid color-mix(in oklch,var(--border) 90%,transparent);box-shadow:0 30px 80px -40px color-mix(in oklch,var(--accent) 35%,transparent)}.ob-step{animation:ob-step-in .38s cubic-bezier(.22,1,.36,1)}@keyframes ob-step-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.ob-progress-track{height:6px;border-radius:999px;background:color-mix(in oklch,var(--muted) 70%,transparent);overflow:hidden}.ob-progress-fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--accent));box-shadow:0 0 18px color-mix(in oklch,var(--accent) 50%,transparent);transition:width .5s cubic-bezier(.22,1,.36,1)}.ob-step-dot{display:inline-flex;width:26px;height:26px;border-radius:999px;align-items:center;justify-content:center;font-size:12px;font-weight:600;background:color-mix(in oklch,var(--muted) 70%,transparent);color:var(--muted-foreground);border:1px solid color-mix(in oklch,var(--border) 90%,transparent)}.ob-step-dot[data-active=true]{background:var(--accent);color:var(--accent-foreground, white);box-shadow:0 0 14px color-mix(in oklch,var(--accent) 50%,transparent)}.ob-step-dot[data-done=true]{background:var(--success);color:#fff}@media(prefers-reduced-motion:reduce){.ob-step,.ob-progress-fill{animation:none!important;transition:none!important}}.lb-grid{display:grid;grid-template-columns:repeat(25,minmax(0,1fr));gap:6px}.lb-dot{position:relative;aspect-ratio:1 / 1;border-radius:3px;background:var(--lb-dot-bg, var(--muted));border:1px solid color-mix(in oklch,var(--lb-dot-bg, var(--muted)) 60%,transparent);cursor:pointer;transition:transform .16s cubic-bezier(.2,.8,.2,1),filter .16s;will-change:transform}.lb-dot:hover,.lb-dot:focus-visible{transform:scale(1.45);filter:brightness(1.2);z-index:5;outline:none}.lb-dot[data-status=online]{--lb-dot-bg: var(--success);opacity:.85}.lb-dot[data-status=charging]{--lb-dot-bg: var(--accent)}.lb-dot[data-status=offline]{--lb-dot-bg: var(--muted-foreground);opacity:.45}.lb-dot[data-status=fault]{--lb-dot-bg: var(--error)}.lb-dot[data-status=charging]{animation:lb-dot-pulse 1.6s ease-in-out infinite}.lb-dot[data-status=fault]{animation:lb-dot-pulse .9s ease-in-out infinite}@keyframes lb-dot-pulse{0%,to{opacity:.65;transform:scale(.92)}50%{opacity:1;transform:scale(1.06)}}.lb-dot[data-real=true]{outline:1.5px solid color-mix(in oklch,var(--accent) 70%,transparent);outline-offset:1px}.lb-cap-track{position:relative;height:18px;border-radius:999px;overflow:hidden;background:linear-gradient(90deg,color-mix(in oklch,var(--success) 18%,transparent) 0% 60%,color-mix(in oklch,var(--accent) 18%,transparent) 60% 80%,color-mix(in oklch,var(--warning) 22%,transparent) 80% 95%,color-mix(in oklch,var(--error) 25%,transparent) 95% 100%);border:1px solid color-mix(in oklch,var(--border) 80%,transparent)}.lb-cap-fill{position:absolute;inset:0 auto 0 0;width:var(--lb-cap-w, 0%);background:linear-gradient(90deg,color-mix(in oklch,var(--primary) 90%,transparent),color-mix(in oklch,var(--accent) 85%,transparent));box-shadow:0 0 22px color-mix(in oklch,var(--accent) 35%,transparent);transition:width 1.2s cubic-bezier(.22,1,.36,1)}.lb-cap-fill:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,color-mix(in oklch,white 35%,transparent),transparent);transform:translate(-100%);animation:lb-shimmer 2.6s linear infinite}@keyframes lb-shimmer{to{transform:translate(100%)}}.lb-cap-mini{position:relative;height:8px;border-radius:999px;background:color-mix(in oklch,var(--muted) 80%,transparent);overflow:hidden}.lb-cap-mini-fill{position:absolute;inset:0 auto 0 0;width:var(--lb-cap-w, 0%);background:var(--lb-cap-color, var(--primary));transition:width .9s cubic-bezier(.22,1,.36,1)}.lb-live-dot{display:inline-block;width:8px;height:8px;border-radius:999px;background:var(--success);box-shadow:0 0 color-mix(in oklch,var(--success) 55%,transparent);animation:lb-live 1.8s ease-out infinite}@keyframes lb-live{0%{box-shadow:0 0 color-mix(in oklch,var(--success) 55%,transparent)}70%{box-shadow:0 0 0 10px color-mix(in oklch,var(--success) 0%,transparent)}to{box-shadow:0 0 color-mix(in oklch,var(--success) 0%,transparent)}}.lb-surface{background:color-mix(in oklch,var(--card) 72%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid color-mix(in oklch,var(--border) 90%,transparent)}@media(prefers-reduced-motion:reduce){.lb-dot,.lb-cap-fill,.lb-cap-fill:after,.lb-cap-mini-fill,.lb-live-dot{animation:none!important;transition:none!important}}.sp-log{max-height:360px;overflow-y:auto;scroll-behavior:smooth;scrollbar-width:thin}.sp-log::-webkit-scrollbar{width:6px}.sp-log::-webkit-scrollbar-thumb{background:color-mix(in oklch,var(--muted-foreground) 30%,transparent);border-radius:999px}.sp-log-row{animation:sp-row-in .36s cubic-bezier(.22,1,.36,1)}@keyframes sp-row-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.sp-dot{display:inline-block;width:8px;height:8px;border-radius:999px;background:var(--sp-dot, var(--muted-foreground));box-shadow:0 0 8px color-mix(in oklch,var(--sp-dot, var(--muted-foreground)) 55%,transparent)}.sp-savings-bar{position:relative;height:28px;border-radius:6px;background:color-mix(in oklch,var(--muted) 70%,transparent);overflow:hidden}.sp-savings-fill{position:absolute;inset:0 auto 0 0;width:var(--sp-w, 0%);background:var(--sp-c, var(--primary));transition:width 1.1s cubic-bezier(.22,1,.36,1)}.sp-savings-fill.is-dashed{background-image:repeating-linear-gradient(45deg,color-mix(in oklch,var(--sp-c, var(--error)) 80%,transparent) 0 8px,color-mix(in oklch,var(--sp-c, var(--error)) 35%,transparent) 8px 16px)}@media(prefers-reduced-motion:reduce){.sp-log-row,.sp-savings-fill{animation:none!important;transition:none!important}}
