@import url("https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&display=swap");@tailwind base;@tailwind components;@tailwind utilities;:root{--bg-primary:#0a0a0f;--bg-card:#111118;--bg-card-hover:#1a1a2e;--bg-sidebar:#0d0d16;--neon-cyan:#00d4ff;--neon-purple:#a855f7;--neon-green:#0f8;--neon-amber:#f59e0b;--neon-red:#ef4444;--neon-blue:#3b82f6;--border-glow:rgba(0,212,255,.15);--border-glow-active:rgba(168,85,247,.4);--text-primary:#fff;--text-secondary:#94a3b8;--text-muted:#475569;--bg-page:#0a0a0f;--card-bg:#111118;--card-shadow:0 0 20px rgba(0,212,255,.06);--card-border:1px solid rgba(0,212,255,.12);--card-radius:16px;--nav-bg:rgba(10,10,15,.85);--nav-blur:blur(20px);--nav-border:1px solid rgba(0,212,255,.1);--accent:#00d4ff;--accent-hover:#00b8e0;--el-color:#0f8;--el-light:rgba(0,255,136,.12);--vand-color:#3b82f6;--vand-light:rgba(59,130,246,.12);--varme-color:#f59e0b;--varme-light:rgba(245,158,11,.12);--sol-color:#fbbf24;--sol-light:rgba(251,191,36,.12);--batteri-color:#0f8;--batteri-light:rgba(0,255,136,.12)}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{background-color:var(--bg-primary);color:var(--text-primary);font-family:Outfit,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}@keyframes flowDash{to{stroke-dashoffset:-20}}@keyframes travelDot{0%{offset-distance:0}to{offset-distance:100%}}@keyframes glowPulse{0%,to{box-shadow:0 0 8px 2px rgba(0,212,255,.2)}50%{box-shadow:0 0 24px 8px rgba(0,212,255,.5)}}@keyframes glowPulseGreen{0%,to{box-shadow:0 0 8px 2px rgba(0,255,136,.2)}50%{box-shadow:0 0 24px 8px rgba(0,255,136,.5)}}@keyframes glowPulseAmber{0%,to{box-shadow:0 0 8px 2px rgba(245,158,11,.2)}50%{box-shadow:0 0 24px 8px rgba(245,158,11,.5)}}@keyframes glowPulseRed{0%,to{box-shadow:0 0 8px 2px rgba(239,68,68,.2)}50%{box-shadow:0 0 24px 8px rgba(239,68,68,.5)}}@keyframes glowPulsePurple{0%,to{box-shadow:0 0 8px 2px rgba(168,85,247,.2)}50%{box-shadow:0 0 24px 8px rgba(168,85,247,.5)}}@keyframes neonPulse{0%,to{opacity:1}50%{opacity:.6}}@keyframes particleMove{0%{transform:translateX(0) translateY(0);opacity:0}10%{opacity:1}90%{opacity:1}to{transform:translateX(var(--dx,100px)) translateY(var(--dy,0));opacity:0}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes shimmer{0%{background-position:-200%}to{background-position:200%}}@keyframes darkShimmer{0%{background-position:-200%}to{background-position:200%}}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}@keyframes staggerFadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleInBounce{0%{transform:scale(0)}70%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes wobble{0%,to{transform:rotate(0deg)}15%{transform:rotate(-15deg)}30%{transform:rotate(15deg)}45%{transform:rotate(-10deg)}60%{transform:rotate(10deg)}75%{transform:rotate(-5deg)}90%{transform:rotate(5deg)}}@keyframes livePulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.8)}}@keyframes dashMove{to{stroke-dashoffset:-10}}@keyframes slideInLeft{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes typingDot{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-6px);opacity:1}}@keyframes badgeBounce{0%{transform:scale(1)}50%{transform:scale(1.3)}to{transform:scale(1)}}@keyframes neonBorderPulse{0%,to{border-color:rgba(0,212,255,.12)}50%{border-color:rgba(0,212,255,.35)}}@keyframes solarShimmer{0%{background-position:-200%}to{background-position:200%}}.animate-float{animation:float 3s ease-in-out infinite}.animate-live-pulse{animation:livePulse 1.5s ease-in-out infinite}.animate-wobble{animation:wobble .6s ease-in-out}.animate-slide-down{animation:slideDown .2s ease-out forwards}.animate-fade-in{animation:fadeIn .3s ease-out forwards}.animate-stagger-fade-up{animation:staggerFadeUp .4s ease-out forwards;opacity:0}.animate-scale-in-bounce{animation:scaleInBounce .4s ease-out forwards}.animate-slide-in-right{animation:slideInRight .3s ease-out forwards}.animate-slide-in-left{animation:slideInLeft .3s ease-out forwards}.animate-neon-pulse{animation:neonPulse 2s ease-in-out infinite}.skeleton{background:linear-gradient(90deg,#111118 25%,#1a1a2e 50%,#111118 75%);background-size:200% 100%;animation:darkShimmer 1.5s infinite;border-radius:8px}.skeleton-card{border-radius:var(--card-radius);border:var(--card-border);box-shadow:var(--card-shadow);overflow:hidden}.ems-card,.skeleton-card{background:var(--bg-card);padding:20px}.ems-card{border-radius:var(--card-radius);border:1px solid rgba(0,212,255,.12);box-shadow:0 0 20px rgba(0,212,255,.04);transition:border-color .3s ease,box-shadow .3s ease,transform .2s ease}.ems-card:hover{border-color:rgba(168,85,247,.3);box-shadow:0 0 20px rgba(168,85,247,.1),0 4px 24px rgba(0,0,0,.4);transform:translateY(-1px)}.ems-card-cyan{border-color:rgba(0,212,255,.25);box-shadow:0 0 16px rgba(0,212,255,.08)}.ems-card-green{border-color:rgba(0,255,136,.25);box-shadow:0 0 16px rgba(0,255,136,.08)}.ems-card-amber{border-color:rgba(245,158,11,.25);box-shadow:0 0 16px rgba(245,158,11,.08)}.ems-card-red{border-color:rgba(239,68,68,.25);box-shadow:0 0 16px rgba(239,68,68,.08)}.ems-card-purple{border-color:rgba(168,85,247,.25);box-shadow:0 0 16px rgba(168,85,247,.08)}.btn-primary{background:linear-gradient(135deg,#00d4ff,#09c);color:#000;border:none;border-radius:10px;padding:0 20px;height:44px;font-family:Outfit,sans-serif;font-size:15px;font-weight:700;cursor:pointer;transition:all .2s ease;display:inline-flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 0 16px rgba(0,212,255,.3)}.btn-primary:hover{background:linear-gradient(135deg,#00e5ff,#00b8e0);box-shadow:0 0 24px rgba(0,212,255,.5);transform:translateY(-1px)}.btn-primary:active{transform:scale(.97)}.btn-outline{background:transparent;color:var(--neon-cyan);border:1.5px solid rgba(0,212,255,.4);border-radius:10px;padding:0 20px;height:40px;font-family:Outfit,sans-serif;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn-outline:hover{background:rgba(0,212,255,.08);border-color:rgba(0,212,255,.7);box-shadow:0 0 12px rgba(0,212,255,.2)}.btn-outline:active{transform:scale(.97)}.ems-input{width:100%;height:44px;padding:0 14px;border:1px solid rgba(0,212,255,.2);border-radius:10px;background:#1a1a2e;font-family:Outfit,sans-serif;font-size:14px;color:#fff;outline:none;transition:border-color .2s ease,box-shadow .2s ease}.ems-input::placeholder{color:#475569}.ems-input:focus{border-color:var(--neon-cyan);box-shadow:0 0 0 3px rgba(0,212,255,.12)}.ems-select{width:100%;height:44px;border:1px solid rgba(0,212,255,.2);border-radius:10px;background:#1a1a2e;font-family:Outfit,sans-serif;font-size:14px;color:#fff;outline:none;cursor:pointer;transition:border-color .2s ease;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2394a3b8' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding:0 36px 0 14px}.ems-select:focus{border-color:var(--neon-cyan);box-shadow:0 0 0 3px rgba(0,212,255,.12)}.flow-path{stroke-dasharray:8 4;animation:flowDash .8s linear infinite}.flow-path-reverse{stroke-dasharray:8 4;animation:flowDash .8s linear infinite reverse}.category-label{font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;margin-bottom:8px;display:block}.category-label-el{color:var(--el-color)}.category-label-vand{color:var(--vand-color)}.category-label-varme{color:var(--varme-color)}.category-label-sol{color:var(--sol-color)}.category-label-batteri{color:var(--batteri-color)}.badge-green{background:rgba(0,255,136,.12);color:#0f8;border-radius:20px;border:1px solid rgba(0,255,136,.2)}.badge-green,.badge-red{padding:2px 8px;font-size:12px;font-weight:500}.badge-red{background:rgba(239,68,68,.12);color:#ef4444;border-radius:20px;border:1px solid rgba(239,68,68,.2)}.badge-yellow{background:rgba(251,191,36,.12);color:#fbbf24;padding:2px 8px;border-radius:20px;border:1px solid rgba(251,191,36,.2)}.badge-cyan,.badge-yellow{font-size:12px;font-weight:500}.badge-cyan{background:rgba(0,212,255,.12);color:#00d4ff;padding:2px 10px;border-radius:20px;border:1px solid rgba(0,212,255,.2)}.badge-purple{background:rgba(168,85,247,.12);color:#a855f7;border-radius:20px;border:1px solid rgba(168,85,247,.2)}.badge-gray,.badge-purple{padding:2px 10px;font-size:12px;font-weight:500}.badge-gray{background:rgba(71,85,105,.3);color:#94a3b8;border-radius:20px;border:1px solid rgba(71,85,105,.4)}.data-source-live{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:#0f8;font-weight:500}.data-source-live:before{content:"";width:6px;height:6px;border-radius:50%;background:#0f8;animation:livePulse 1.5s ease-in-out infinite;box-shadow:0 0 6px #0f8}.data-source-mock{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:#475569;font-weight:500}.data-source-mock:before{content:"";background:#475569}.data-source-mock:before,.typing-dot{width:6px;height:6px;border-radius:50%}.typing-dot{background:var(--neon-cyan);display:inline-block;animation:typingDot 1.2s ease-in-out infinite;box-shadow:0 0 6px var(--neon-cyan)}.typing-dot:nth-child(2){animation-delay:.2s}.typing-dot:nth-child(3){animation-delay:.4s}.upload-area{border:2px dashed rgba(0,212,255,.25);border-radius:12px;padding:32px;text-align:center;transition:all .2s ease;cursor:pointer;background:rgba(0,212,255,.02)}.upload-area.drag-over,.upload-area:hover{border-color:var(--neon-cyan);background:rgba(0,212,255,.06);box-shadow:0 0 20px rgba(0,212,255,.1)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:#0a0a0f}::-webkit-scrollbar-thumb{background:rgba(0,212,255,.2);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:rgba(0,212,255,.4)}.page-content{animation:fadeIn .25s ease-out}.recharts-tooltip-wrapper{animation:fadeIn .15s ease-out}.neon-text-cyan{color:#00d4ff;text-shadow:0 0 10px rgba(0,212,255,.5)}.neon-text-green{color:#0f8;text-shadow:0 0 10px rgba(0,255,136,.5)}.neon-text-amber{color:#f59e0b;text-shadow:0 0 10px rgba(245,158,11,.5)}.neon-text-red{color:#ef4444;text-shadow:0 0 10px rgba(239,68,68,.5)}.neon-text-purple{color:#a855f7;text-shadow:0 0 10px rgba(168,85,247,.5)}.heatmap-cell{border-radius:3px;transition:all .2s ease;cursor:pointer}.heatmap-cell:hover{transform:scale(1.15);z-index:10;position:relative}.solar-panel-grid{display:grid;grid-gap:3px;gap:3px;background:#0a0a0f;border-radius:8px;padding:8px}.solar-cell{background:linear-gradient(135deg,#0d1a2e,#0a1520 50%,#0d1a2e);border:1px solid rgba(59,130,246,.15);border-radius:2px;position:relative;overflow:hidden}.solar-cell:after{content:"";position:absolute;inset:0;background:linear-gradient(135deg,transparent 30%,rgba(0,212,255,.06) 50%,transparent 70%);background-size:200% 200%;animation:solarShimmer 3s ease-in-out infinite}.flow-line{position:absolute;border-radius:2px;overflow:hidden}.flow-particle{position:absolute;width:6px;height:6px;border-radius:50%;animation:particleMove 2s linear infinite}@media (max-width:768px){.hide-mobile{display:none!important}.show-mobile{display:flex!important}}@media (min-width:769px){.show-mobile{display:none!important}}