@import "https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&display=swap";
:root,[data-theme=dark]{--bg-color:#0b0f19;--bg-body-image:radial-gradient(circle at 12% 15%, #6366f126 0%, transparent 45%), radial-gradient(circle at 88% 85%, #8b5cf61f 0%, transparent 45%);--sidebar-bg:#0f172a;--sidebar-border:#ffffff14;--header-bg:#0f172a;--header-border:#ffffff14;--card-bg:#111827;--card-border:#ffffff17;--card-hover-border:#6366f166;--metrics-bg:#0b0f19;--metrics-border:#ffffff17;--cs-box-bg:#0f172a99;--text-main:#f3f4f6;--text-muted:#9ca3af;--text-heading:#fff;--accent-cyan:#06b6d4;--accent-purple:#8b5cf6;--accent-green:#10b981;--accent-red:#ef4444;--gradient-glow:linear-gradient(135deg, #06b6d4 0%, #8b5cf6 100%);--radius-lg:16px;--radius-md:10px;--login-bg:#0b0f19;--login-splash-bg:radial-gradient(circle at 40% 40%, #6366f114 0%, transparent 60%);--login-splash-border:#ffffff0a;--login-right-bg:transparent;--login-form-text:#fff;--login-form-muted:var(--text-muted);--login-input-bg:#0f172a80;--login-input-border:#ffffff14;--login-input-focus-bg:#0f172acc;--login-divider-line:#ffffff14;--login-divider-text:#ffffff59;--login-footer-border:#ffffff0f;--login-footer-text:#ffffff73;--login-footer-link:#ffffff59;--login-label-color:#ffffffb3;--login-splash-footer:#ffffff4d;--halo-one-bg:radial-gradient(circle, #5b21b6 0%, transparent 70%);--halo-two-bg:radial-gradient(circle, #0284c7 0%, transparent 70%);--hex-stroke-one:#8b5cf659;--hex-stroke-two:#06b6d44d;--hex-stroke-complex-outer:#06b6d438;--hex-stroke-complex-inner:#8b5cf62e;--input-bg:#0b0f19b3;--item-card-bg:#0f172a80;--ms-btn-bg:#fff;--ms-btn-border:#0000001a;--ms-btn-color:#2f2f2f;--ms-btn-hover-bg:#f7f7f7;--ms-btn-shadow:0 4px 15px #00000014;--ms-btn-hover-shadow:0 6px 20px #0000001f;--error-bg:#ef44441f;--error-border:#ef444440;--error-text:#fc8181;--toggle-bg:#ffffff14;--toggle-hover-bg:#ffffff26;--toggle-color:#f3f4f6;--toggle-border:#ffffff1a}[data-theme=light]{--bg-color:#fff;--bg-body-image:none;--sidebar-bg:#fff;--sidebar-border:#e2e8f0;--header-bg:#fff;--header-border:#e2e8f0;--card-bg:#fff;--card-border:#e2e8f0;--card-hover-border:#cbd5e1;--metrics-bg:#f8fafc;--metrics-border:#e2e8f0;--cs-box-bg:#f8fafc;--text-main:#1e293b;--text-muted:#64748b;--text-heading:#0f172a;--accent-cyan:#0891b2;--accent-purple:#7c3aed;--accent-green:#059669;--accent-red:#dc2626;--gradient-glow:linear-gradient(135deg, #06b6d4 0%, #8b5cf6 100%);--radius-lg:16px;--radius-md:10px;--login-bg:#f8fafc;--login-splash-bg:linear-gradient(135deg, #1e1b4b 0%, #311042 30%, #4c1d95 60%, #1e3a8a 100%);--login-splash-border:#ffffff1f;--login-right-bg:#f8fafc;--login-form-text:#0f172a;--login-form-muted:#64748b;--login-input-bg:#fff;--login-input-border:#e2e8f0;--login-input-focus-bg:#fff;--login-divider-line:#e2e8f0;--login-divider-text:#94a3b8;--login-footer-border:#e2e8f0;--login-footer-text:#94a3b8;--login-footer-link:#64748b;--login-label-color:#475569;--login-splash-footer:#ffffffb3;--halo-one-bg:radial-gradient(circle, #ffffff59 0%, transparent 70%);--halo-two-bg:radial-gradient(circle, #ffffff40 0%, transparent 70%);--hex-stroke-one:#ffffffbf;--hex-stroke-two:#ffffff8c;--hex-stroke-complex-outer:#ffffffa6;--hex-stroke-complex-inner:#ffffff73;--input-bg:#f8fafc;--item-card-bg:#f8fafc;--ms-btn-bg:#fff;--ms-btn-border:#e2e8f0;--ms-btn-color:#0f172a;--ms-btn-hover-bg:#f8fafc;--ms-btn-shadow:0 1px 3px #0000000d;--ms-btn-hover-shadow:0 4px 12px #00000014;--error-bg:#ef444414;--error-border:#ef444433;--error-text:#dc2626;--toggle-bg:#0000000a;--toggle-hover-bg:#00000014;--toggle-color:#475569;--toggle-border:#e2e8f0}html{font-size:16px}@media (max-width:1400px){html{font-size:15px}}@media (max-width:1200px){html{font-size:14.5px}}@media (max-width:480px){html{font-size:14px}}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-color);color:var(--text-main);background-image:var(--bg-body-image);background-attachment:fixed;min-height:100vh;font-family:Plus Jakarta Sans,sans-serif;transition:background-color .3s,color .3s}.container{width:100%;max-width:1200px;margin:0 auto;padding:2.5rem 1.5rem}@media (max-width:768px){.container{padding:1.5rem 1rem}}.theme-toggle-btn{border:1px solid var(--toggle-border);background:var(--toggle-bg);width:40px;height:40px;color:var(--toggle-color);cursor:pointer;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;transition:background .25s,border-color .25s,transform .2s;display:flex;position:relative;overflow:hidden}.theme-toggle-btn:hover{background:var(--toggle-hover-bg);transform:translateY(-1px)}.theme-icon{justify-content:center;align-items:center;transition:opacity .35s,transform .35s;display:flex;position:absolute}.icon-active{opacity:1;transform:rotate(0)scale(1)}.icon-hidden{opacity:0;pointer-events:none;transform:rotate(180deg)scale(.5)}.login-theme-toggle{z-index:10;position:absolute;top:1.5rem;right:1.5rem}.header{border-bottom:1px solid var(--card-border);justify-content:space-between;align-items:center;margin-bottom:2.5rem;padding-bottom:1.5rem;display:flex}.brand{align-items:center;gap:.75rem;display:flex}.brand-logo-img{object-fit:contain;border-radius:12px;width:44px;height:44px;transition:transform .3s;box-shadow:0 4px 20px #06b6d440}.brand-logo-img:hover{transform:scale(1.05)}.brand-logo-img-left{object-fit:contain;filter:drop-shadow(0 4px 10px #06b6d44d);width:40px;height:40px}.brand-icon{background:var(--gradient-glow);border-radius:12px;justify-content:center;align-items:center;width:44px;height:44px;font-size:1.25rem;font-weight:800;display:flex;box-shadow:0 4px 20px #06b6d44d}.title-text{background:var(--gradient-glow);-webkit-text-fill-color:transparent;-webkit-background-clip:text;font-size:1.6rem;font-weight:700}.subtitle{color:var(--text-muted);font-size:.875rem}.status-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.25rem;margin-bottom:2.5rem;display:grid}@media (max-width:640px){.status-grid{grid-template-columns:1fr;margin-bottom:1.5rem}.header{flex-direction:column;align-items:flex-start;gap:1.25rem}.header div[style*="display: flex"]{justify-content:space-between;width:100%}}.glass-card{background:var(--card-bg);-webkit-backdrop-filter:blur(12px);border:1px solid var(--card-border);border-radius:var(--radius-lg);padding:1.5rem;transition:transform .2s,border-color .2s,background .3s}.glass-card:hover{border-color:var(--card-hover-border);transform:translateY(-2px)}[data-theme=light] .glass-card{-webkit-backdrop-filter:none;box-shadow:0 1px 3px #0000000f,0 1px 2px #0000000a}[data-theme=light] .glass-card:hover{box-shadow:0 4px 12px #00000014}.badge{text-transform:uppercase;letter-spacing:.05em;border-radius:20px;align-items:center;gap:.4rem;padding:.35rem .75rem;font-size:.75rem;font-weight:600;display:inline-flex}.badge-connected{color:var(--accent-green);background:#10b98126;border:1px solid #10b9814d}.badge-disconnected{color:var(--accent-red);background:#ef444426;border:1px solid #ef44444d}.badge-pulse{background-color:currentColor;border-radius:50%;width:8px;height:8px;animation:2s infinite pulse}@keyframes pulse{0%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.2)}to{opacity:1;transform:scale(1)}}.section-title{color:var(--text-heading);align-items:center;gap:.5rem;margin-bottom:1.25rem;font-size:1.25rem;font-weight:600;display:flex}.content-layout{grid-template-columns:1fr 1.6fr;gap:2rem;display:grid}@media (max-width:868px){.content-layout{grid-template-columns:1fr}}.form-group{margin-bottom:1rem}.form-group label{color:var(--text-muted);margin-bottom:.4rem;font-size:.85rem;font-weight:500;display:block}.input-field,.select-field,.textarea-field{background:var(--input-bg);border:1px solid var(--card-border);border-radius:var(--radius-md);width:100%;color:var(--text-main);outline:none;padding:.75rem 1rem;font-family:inherit;font-size:.9rem;transition:border-color .2s,background .3s}.input-field:focus,.select-field:focus,.textarea-field:focus{border-color:var(--accent-cyan)}.btn-primary{background:var(--gradient-glow);border-radius:var(--radius-md);color:#fff;cursor:pointer;border:none;width:100%;padding:.8rem 1.25rem;font-size:.95rem;font-weight:600;transition:opacity .2s,transform .1s}.btn-primary:hover{opacity:.92;transform:translateY(-1px)}.btn-delete{color:var(--accent-red);cursor:pointer;background:#ef444426;border:1px solid #ef444440;border-radius:6px;padding:.4rem .75rem;font-size:.75rem;font-weight:600;transition:background .2s}.btn-delete:hover{background:#ef44444d}.item-card{background:var(--item-card-bg);border:1px solid var(--card-border);border-radius:var(--radius-md);justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.75rem;padding:1rem 1.25rem;transition:background .3s;display:flex}.item-status{text-transform:capitalize;border-radius:4px;padding:.2rem .5rem;font-size:.75rem;font-weight:600}.status-completed{color:#34d399;background:#10b98133}.status-in_progress{color:#fbbf24;background:#f59e0b33}.status-pending{color:#d1d5db;background:#6b728033}[data-theme=light] .status-completed{color:#059669;background:#0596691a}[data-theme=light] .status-in_progress{color:#d97706;background:#d977061a}[data-theme=light] .status-pending{color:#64748b;background:#64748b1a}.login-screen-wrapper{background-color:var(--login-bg);justify-content:center;align-items:center;width:100%;min-height:100vh;transition:background-color .3s;display:flex;position:relative;overflow:hidden}.vector-bg{z-index:1;pointer-events:none;position:absolute;inset:0;overflow:hidden}.vector-bg:before{content:"";opacity:.6;background-image:radial-gradient(#ffffff14 1.5px,#0000 1.5px);background-size:32px 32px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(circle,#000 40%,#0000 80%);mask-image:radial-gradient(circle,#000 40%,#0000 80%)}.pulsing-halo{filter:blur(80px);opacity:.15;border-radius:50%;position:absolute}.halo-one{background:var(--halo-one-bg);width:60%;height:60%;animation:12s infinite alternate pulse-halo-slow;top:-10%;left:-10%}.halo-two{background:var(--halo-two-bg);width:65%;height:65%;animation:16s infinite alternate-reverse pulse-halo-slow;bottom:-15%;right:-10%}[data-theme=light] .pulsing-halo{opacity:.15}@keyframes pulse-halo-slow{0%{opacity:.12;transform:scale(1)translate(0)}50%{opacity:.18;transform:scale(1.1)translate(2%,2%)}to{opacity:.12;transform:scale(1)translate(0)}}.rotating-vector-layer{transform-origin:50%;position:absolute}.shape-hex-one{width:50vw;max-width:600px;height:50vw;animation:45s linear infinite rotate-clockwise;top:15%;left:10%}.shape-hex-two{width:40vw;max-width:500px;height:40vw;animation:35s linear infinite rotate-counter-clockwise;bottom:10%;right:15%}.shape-complex{width:45vw;max-width:550px;height:45vw;animation:70s linear infinite rotate-clockwise;top:25%;left:20%}.vector-svg{width:100%;height:100%}[data-theme=light] .rotating-vector-layer{opacity:.85}@keyframes rotate-clockwise{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes rotate-counter-clockwise{0%{transform:rotate(360deg)}to{transform:rotate(0)}}.login-split-container{z-index:2;grid-template-columns:1fr 1fr;width:100%;min-height:100vh;display:grid;position:relative}@media (max-width:1024px){.login-split-container{grid-template-columns:1fr}.login-splash-left{display:none}.login-form-right{padding:2.5rem 1.5rem!important}}@media (max-width:480px){.welcome-heading{font-size:1.65rem!important}.welcome-desc{margin-bottom:1.5rem!important}.sso-divider{margin:1.5rem 0!important}.login-footer-links{margin-top:2rem!important}}.login-splash-left{background:var(--login-splash-bg);border-right:1px solid var(--login-splash-border);-webkit-backdrop-filter:blur(16px);flex-direction:column;justify-content:space-between;padding:4rem 5rem;transition:background .4s;display:flex;position:relative;overflow:hidden}.brand-logo-text,.splash-content,.splash-footer{z-index:3;position:relative}.brand-header{align-items:center;gap:.85rem;display:flex}.brand-logo-svg{filter:drop-shadow(0 4px 10px #06b6d44d)}[data-theme=light] .brand-logo-img-left{filter:brightness(10)drop-shadow(0 4px 10px #ffffff4d)}.brand-name{letter-spacing:.1em;background:linear-gradient(135deg,#06b6d4 0%,#8b5cf6 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;font-family:Plus Jakarta Sans,sans-serif;font-size:1.5rem;font-weight:800}.splash-content{-webkit-backdrop-filter:blur(20px);background:#ffffff0d;border:1px solid #ffffff1f;border-radius:24px;max-width:520px;margin:auto 0;padding:3rem;transition:all .3s;box-shadow:0 20px 40px #00000026,inset 0 1px 1px #ffffff1a}.splash-tag{letter-spacing:.15em;color:var(--accent-cyan);background:#06b6d40d;border:1px solid #06b6d44d;border-radius:4px;margin-bottom:1.5rem;padding:.25rem .75rem;font-size:.85rem;font-weight:700;display:inline-block}[data-theme=light] .splash-tag{color:#ffffffe6;background:#ffffff1a;border-color:#ffffff4d}.splash-headline{color:#fff;margin-bottom:2rem;font-size:2.5rem;font-weight:700;line-height:1.25}.splash-desc{color:var(--text-muted);font-size:1.05rem;line-height:1.6}[data-theme=light] .splash-desc{color:#ffffffbf}.splash-footer{color:var(--login-splash-footer);font-size:.825rem}.login-form-right{background-color:var(--login-right-bg);justify-content:center;align-items:center;padding:4rem 2.5rem;transition:background-color .3s;display:flex;position:relative}[data-theme=light] .login-form-right{background-color:#f8fafc;background-image:radial-gradient(circle at 80% 10%,#6366f10a 0%,#0000 50%),radial-gradient(circle at 10% 90%,#8b5cf608 0%,#0000 50%),radial-gradient(#6366f105 0%,#0000 70%),radial-gradient(#e2e8f0 1.2px,#0000 1.2px);background-size:100% 100%,100% 100%,100% 100%,24px 24px}[data-theme=dark] .login-form-right{background-color:#0b0f19;background-image:radial-gradient(circle at 80% 10%,#6366f10d 0%,#0000 50%),radial-gradient(circle at 10% 90%,#8b5cf60a 0%,#0000 50%),radial-gradient(#111827 1.2px,#0000 1.2px);background-size:100% 100%,100% 100%,24px 24px}.form-card-wrapper{background:var(--card-bg);border:1px solid var(--card-border);z-index:5;border-radius:20px;flex-direction:column;width:100%;max-width:440px;padding:3.5rem 3rem;transition:all .4s cubic-bezier(.16,1,.3,1);display:flex;position:relative}[data-theme=light] .form-card-wrapper{background:#fff;border-color:#e2e8f0;box-shadow:0 1px 3px #00000005,0 20px 40px -10px #0f172a0f,0 0 0 1px #0f172a03}[data-theme=dark] .form-card-wrapper{background:#111827;border-color:#ffffff14;box-shadow:0 4px 30px #00000040,inset 0 1px 1px #ffffff08}@media (max-width:480px){.form-card-wrapper{padding:2.25rem 1.5rem;box-shadow:none!important;background:0 0!important;border:none!important}}.welcome-heading{color:var(--login-form-text);letter-spacing:-.02em;margin-bottom:.75rem;font-size:2rem;font-weight:700;transition:color .3s}.welcome-desc{color:var(--login-form-muted);margin-bottom:2.25rem;font-size:.95rem;line-height:1.55;transition:color .3s}.ms-login-btn{background:var(--ms-btn-bg);border:1px solid var(--ms-btn-border);width:100%;height:52px;color:var(--ms-btn-color);cursor:pointer;box-shadow:var(--ms-btn-shadow);border-radius:8px;justify-content:center;align-items:center;gap:.85rem;font-size:.95rem;font-weight:600;transition:all .2s;display:flex}.ms-login-btn:hover{background:var(--ms-btn-hover-bg);box-shadow:var(--ms-btn-hover-shadow);transform:translateY(-1px)}.ms-logo-icon{flex-shrink:0}.sso-divider{text-align:center;align-items:center;margin:2rem 0;display:flex}.sso-divider:before,.sso-divider:after{content:"";border-bottom:1px solid var(--login-divider-line);flex:1;transition:border-color .3s}.sso-divider:not(:empty):before{margin-right:.75rem}.sso-divider:not(:empty):after{margin-left:.75rem}.sso-divider span{letter-spacing:.1em;color:var(--login-divider-text);font-size:.725rem;font-weight:600;transition:color .3s}.toggle-auth-btn{color:var(--accent-cyan);cursor:pointer;background:0 0;border:none;font-size:.875rem;font-weight:600;text-decoration:none;transition:color .15s}.toggle-auth-btn:hover{color:#22d3ee;text-decoration:underline}.login-form-group{margin-bottom:1.25rem}.login-form-group label{color:var(--login-label-color);margin-bottom:.5rem;font-size:.825rem;font-weight:600;transition:color .3s;display:block}.login-input{background:var(--login-input-bg);border:1px solid var(--login-input-border);width:100%;height:46px;color:var(--login-form-text);border-radius:8px;outline:none;padding:0 1rem;font-size:.925rem;transition:all .2s}.login-input:focus{border-color:var(--accent-cyan);background:var(--login-input-focus-bg);box-shadow:0 0 0 3px #06b6d426}.login-input::placeholder{color:var(--text-muted);opacity:.6}.help-text{color:var(--text-muted);margin-top:.25rem;font-size:.75rem;display:block}.help-text code{color:var(--accent-cyan);background:#06b6d41a;border-radius:3px;padding:.05rem .25rem}.custom-submit-btn{background:var(--gradient-glow);color:#fff;cursor:pointer;border:none;border-radius:8px;width:100%;height:48px;margin-top:.5rem;font-size:.95rem;font-weight:600;transition:all .2s}.custom-submit-btn:hover{opacity:.95;transform:translateY(-1px)}.login-error-toast{background:var(--error-bg);border:1px solid var(--error-border);color:var(--error-text);border-radius:6px;margin-bottom:1.5rem;padding:.75rem 1rem;font-size:.85rem;line-height:1.4}.login-footer-links{border-top:1px solid var(--login-footer-border);margin-top:3.5rem;padding-top:1.75rem;transition:border-color .3s}.admin-notice{color:var(--login-footer-text);margin-bottom:1.5rem;font-size:.8rem;line-height:1.5;transition:color .3s}.admin-notice a{color:var(--accent-cyan);text-decoration:none}.admin-notice a:hover{text-decoration:underline}.links-group{gap:1.5rem;display:flex}.links-group a{color:var(--login-footer-link);font-size:.825rem;text-decoration:none;transition:color .15s}.links-group a:hover{color:var(--accent-cyan)}.dashboard-loading{background-color:var(--bg-color);min-height:100vh;color:var(--text-muted);justify-content:center;align-items:center;display:flex}.ethub-layout{background-color:var(--bg-color);background-image:var(--bg-body-image);min-height:100vh;color:var(--text-main);background-attachment:fixed;font-family:Plus Jakarta Sans,sans-serif;display:flex}.ethub-sidebar{background:var(--sidebar-bg);border-right:1px solid var(--sidebar-border);flex-direction:column;flex-shrink:0;justify-content:space-between;width:280px;padding:1.5rem 1rem;display:flex}.sidebar-logo{align-items:center;gap:.75rem;padding:.5rem .75rem 1.5rem;display:flex}.logo-icon-box{color:#6366f1;background:#6366f11a;border-radius:8px;justify-content:center;align-items:center;width:36px;height:36px;font-size:.85rem;font-weight:800;display:flex}.logo-text-group{flex-direction:column;display:flex}.logo-brand-name{letter-spacing:.4px;color:var(--text-heading);text-transform:uppercase;max-width:185px;font-size:.95rem;font-weight:800;line-height:1.15}.logo-brand-sub{letter-spacing:1px;color:var(--text-muted);font-size:.65rem;font-weight:700}.sidebar-nav{flex-direction:column;gap:.35rem;display:flex}.nav-item{color:var(--text-muted);cursor:pointer;border-radius:10px;justify-content:space-between;align-items:center;padding:.75rem 1rem;font-size:.9rem;font-weight:500;transition:all .2s;display:flex}.nav-item:hover{color:var(--text-heading);background:#6366f114}.nav-item.active{color:#fff;background:#6366f1;font-weight:600;box-shadow:0 4px 14px #6366f159}.nav-item-left{align-items:center;gap:.75rem;display:flex}.active-dot{background-color:#fff;border-radius:50%;width:6px;height:6px}.nav-section-label{letter-spacing:1px;color:var(--text-muted);text-transform:uppercase;margin:1.5rem .75rem .5rem;font-size:.7rem;font-weight:700}.coming-soon-box{background:var(--cs-box-bg);border:1px dashed var(--card-border);color:var(--text-muted);border-radius:10px;padding:.85rem 1rem;font-size:.8rem}.user-profile-card{border-top:1px solid var(--card-border);align-items:center;gap:.75rem;margin-top:1rem;padding:.75rem;display:flex}.user-avatar{color:#fff;background:linear-gradient(135deg,#6366f1 0%,#4f46e5 100%);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;font-size:.85rem;font-weight:700;display:flex}.user-info{flex-direction:column;flex:1;display:flex;overflow:hidden}.user-name{color:var(--text-heading);white-space:nowrap;text-overflow:ellipsis;font-size:.875rem;font-weight:600;overflow:hidden}.user-email{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;overflow:hidden}.logout-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:.4rem;transition:all .15s}.logout-btn:hover{color:#ef4444;background:#ef44441a}.ethub-main{flex-direction:column;flex:1;display:flex;overflow-y:auto}.main-header{background:var(--header-bg);border-bottom:1px solid var(--header-border);justify-content:space-between;align-items:center;height:64px;padding:0 2rem;display:flex}.header-left{align-items:baseline;gap:.75rem;display:flex}.header-title{color:var(--text-heading);font-size:1.15rem;font-weight:700}.header-sub{color:var(--text-muted);font-size:.9rem}.header-actions{align-items:center;gap:1rem;display:flex}.refresh-btn{border:1px solid var(--card-border);color:var(--text-main);cursor:pointer;background:0 0;border-radius:8px;align-items:center;gap:.5rem;padding:.45rem .85rem;font-size:.825rem;font-weight:500;transition:all .2s;display:flex}.refresh-btn:hover{background:#6366f114;border-color:#6366f1}.spin-icon{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.dashboard-body{width:100%;max-width:1200px;padding:2rem}.welcome-banner{margin-bottom:2rem}.welcome-title{color:var(--text-heading);margin-bottom:.35rem;font-size:1.65rem;font-weight:800}.welcome-subtitle{color:var(--text-muted);font-size:.95rem}.dashboard-section{margin-bottom:2.5rem}.section-header-flex{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.section-title-sm{letter-spacing:1px;color:var(--text-muted);text-transform:uppercase;font-size:.75rem;font-weight:700}.db-health-tag{color:var(--text-muted);background:#10b9811a;border:1px solid #10b98133;border-radius:12px;align-items:center;gap:.4rem;padding:.25rem .65rem;font-size:.75rem;display:flex}.db-dot{background-color:#10b981;border-radius:50%;width:6px;height:6px}.module-card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:14px;flex-direction:column;height:100%;padding:1.35rem 1.4rem;transition:all .25s;display:flex;box-shadow:0 4px 20px #0000000a}.module-card:hover{border-color:var(--card-hover-border)}.module-title-link{color:var(--text-heading);cursor:pointer;font-size:1.05rem;font-weight:700;text-decoration:none;transition:color .15s}.module-title-link:hover{color:#6366f1;text-decoration:underline}.module-title{color:var(--text-heading);font-size:1.05rem;font-weight:700}.badge-active{color:#166534;background:#dcfce7;border-radius:12px;align-items:center;gap:.35rem;padding:.15rem .5rem;font-size:.725rem;font-weight:600;display:inline-flex}.badge-dot{background-color:#166534;border-radius:50%;width:5px;height:5px}.module-category{letter-spacing:.01em;color:var(--text-muted);margin-top:.15rem;font-size:.75rem;font-weight:500;display:block}.module-description{color:var(--text-muted);flex:auto;margin:1rem 0 0;font-size:.875rem;line-height:1.55}.metrics-grid{background:var(--metrics-bg);border:1px solid var(--metrics-border);border-radius:10px;grid-template-columns:repeat(3,1fr);margin-bottom:1.25rem;padding:.85rem;display:grid}.metric-box{flex-direction:column;justify-content:center;align-items:center;display:flex}.metric-box.border-left{border-left:1px solid var(--card-border)}.metric-number{font-size:1.4rem;font-weight:800;line-height:1.2}.metric-number.text-purple{color:#6366f1}.metric-number.text-dark{color:var(--text-heading)}.metric-label{color:var(--text-muted);margin-top:.2rem;font-size:.75rem}.btn-open-module{color:#fff;white-space:nowrap;cursor:pointer;background:#6366f1;border:none;border-radius:9px;flex:none;justify-content:center;align-items:center;gap:.45rem;padding:.55rem 1.05rem;font-size:.85rem;font-weight:600;text-decoration:none;transition:all .2s;display:inline-flex;box-shadow:0 4px 12px #6366f133}.btn-open-module:hover{background:#4f46e5;transform:translateY(-1px)}.width-full{width:100%}.btn-open-module.secondary-active-btn{background:#3b82f6;box-shadow:0 4px 12px #3b82f633}.btn-open-module.secondary-active-btn:hover{background:#2563eb}.btn-redirect-link{color:var(--text-muted);border:1px solid var(--card-border);background:0 0;border-radius:10px;justify-content:center;align-items:center;gap:.4rem;padding:.75rem 1rem;font-size:.85rem;font-weight:500;text-decoration:none;transition:all .2s;display:inline-flex}.btn-redirect-link:hover{background:var(--metrics-bg);border-color:var(--card-hover-border);color:var(--text-heading)}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background:#0f172a99;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal-content{background:var(--card-bg);border:1px solid var(--card-border);border-radius:16px;width:100%;max-width:480px;padding:1.75rem}.modal-header{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.modal-header h3{color:var(--text-heading);font-size:1.15rem;font-weight:700}.close-modal-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;font-size:1.5rem}.modal-actions{justify-content:flex-end;gap:.75rem;margin-top:1.5rem;display:flex}.btn-cancel{border:1px solid var(--card-border);color:var(--text-main);cursor:pointer;background:0 0;border-radius:8px;padding:.6rem 1.25rem}.login-error{background:var(--error-bg);border:1px solid var(--error-border);color:var(--error-text);border-radius:8px;margin-bottom:1.25rem;padding:.75rem 1rem;font-size:.875rem;line-height:1.5}.dashboard-error{background:var(--error-bg);border:1px solid var(--error-border);color:var(--error-text);border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem;padding:.875rem 1.125rem;font-size:.875rem;display:flex}.dashboard-error p{margin:0}.dashboard-error button{border:1px solid var(--error-border);color:var(--error-text);cursor:pointer;background:0 0;border-radius:6px;padding:.4rem .9rem;font-size:.8125rem;font-weight:600}.dashboard-error button:hover{background:var(--error-border)}.module-empty{text-align:center;opacity:.7;grid-column:1/-1;padding:1.5rem;font-size:.875rem}.login-checking{background:var(--login-bg);min-height:100vh;color:var(--login-form-muted);letter-spacing:.01em;justify-content:center;align-items:center;font-size:.9375rem;display:flex}.coe-toast{z-index:60;border:1px solid var(--card-border);background:var(--card-bg);border-radius:12px;align-items:flex-start;gap:.75rem;max-width:min(24rem,100vw - 3rem);padding:.875rem 1rem;animation:.22s ease-out coe-toast-in;display:flex;position:fixed;bottom:1.5rem;right:1.5rem;box-shadow:0 10px 30px #0f172a29}@keyframes coe-toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.coe-toast{animation:none}}.coe-toast-icon{flex-shrink:0;margin-top:.0625rem;display:flex}.coe-toast-success .coe-toast-icon{color:var(--accent-green)}.coe-toast-info .coe-toast-icon{color:var(--accent-purple)}.coe-toast-body{flex-direction:column;gap:.15rem;min-width:0;display:flex}.coe-toast-title{color:var(--text-heading);font-size:.875rem;font-weight:700;line-height:1.35}.coe-toast-detail{color:var(--text-muted);overflow-wrap:break-word;font-size:.8125rem;line-height:1.4}.coe-toast-close{width:24px;height:24px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;transition:background .2s,color .2s;display:flex}.coe-toast-close:hover{background:var(--cs-box-bg);color:var(--text-heading)}@media (max-width:480px){.coe-toast{max-width:none;bottom:.75rem;left:.75rem;right:.75rem}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.star-rating{color:#f59e0b;gap:.15rem;display:inline-flex}.star-rating-item{cursor:pointer;color:var(--text-muted);opacity:.45;transition:opacity .15s,transform .12s,color .15s;display:inline-flex}.star-rating-item.is-active{color:#f59e0b;opacity:1}.star-rating-item:hover{transform:scale(1.12)}.star-rating-disabled .star-rating-item{cursor:not-allowed;opacity:.3}.star-rating-input{opacity:0;width:1px;height:1px;position:absolute}.star-rating-input:focus-visible+svg{outline:2px solid var(--accent-purple);outline-offset:2px;border-radius:3px}.star-display{color:var(--text-muted);align-items:center;gap:.35rem;font-size:.8125rem;display:inline-flex}.star-display-icons{color:#f59e0b;gap:.1rem;display:inline-flex}.star-display-value{color:var(--text-heading);font-weight:700}.star-display-empty{opacity:.7;font-style:italic}.feedback-privacy{color:var(--text-muted);align-items:center;gap:.35rem;font-size:.75rem;display:inline-flex}.feedback-list{flex-direction:column;gap:.75rem;display:flex}.feedback-row{border:1px solid var(--card-border);border-radius:var(--radius-md);background:var(--card-bg);padding:1rem 1.125rem;transition:border-color .2s}.feedback-row:hover{border-color:var(--card-hover-border)}.feedback-row-main{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.feedback-row-info{flex-direction:column;gap:.25rem;min-width:0;display:flex}.feedback-module-name{color:var(--text-heading);font-size:.9375rem;font-weight:700}.feedback-row-action{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.feedback-your-label{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-size:.75rem;font-weight:600}.feedback-edit-btn{border:1px solid var(--card-border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:6px;align-items:center;gap:.3rem;padding:.3rem .6rem;font-size:.75rem;font-weight:600;transition:background .2s,color .2s;display:inline-flex}.feedback-edit-btn:hover{background:var(--cs-box-bg);color:var(--text-heading)}.feedback-editor{border-top:1px dashed var(--card-border);margin-top:.875rem;padding-top:.875rem}.feedback-editor-label{color:var(--text-heading);margin-bottom:.4rem;font-size:.8125rem;font-weight:600;display:block}.feedback-optional{color:var(--text-muted);font-weight:400}.feedback-textarea{border:1px solid var(--login-input-border);background:var(--input-bg);width:100%;color:var(--text-main);resize:vertical;border-radius:8px;padding:.625rem .75rem;font-family:inherit;font-size:.875rem;line-height:1.5}.feedback-textarea:focus{outline:2px solid var(--accent-purple);outline-offset:1px;border-color:#0000}.feedback-editor-footer{justify-content:space-between;align-items:flex-start;gap:1rem;margin-top:.45rem;display:flex}.feedback-hint{color:var(--text-muted);align-items:flex-start;gap:.3rem;font-size:.6875rem;line-height:1.45;display:inline-flex}.feedback-count{color:var(--text-muted);white-space:nowrap;font-size:.6875rem}.feedback-actions{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.75rem;display:flex}.feedback-save,.feedback-cancel,.feedback-remove{cursor:pointer;border:1px solid #0000;border-radius:8px;padding:.45rem .9rem;font-size:.8125rem;font-weight:600;transition:background .2s,opacity .2s}.feedback-save{color:#fff;background:#6366f1}.feedback-save:hover:not(:disabled){background:#4f46e5}.feedback-save:disabled{opacity:.55;cursor:not-allowed}.feedback-cancel{border-color:var(--card-border);color:var(--text-muted);background:0 0}.feedback-cancel:hover:not(:disabled){background:var(--cs-box-bg)}.feedback-remove{color:var(--accent-red);background:0 0;border-color:#0000;align-items:center;gap:.3rem;margin-left:auto;display:inline-flex}.feedback-remove:hover:not(:disabled){background:var(--error-bg)}.feedback-admin{margin-top:1.25rem}.feedback-admin-toggle{border:1px solid var(--card-border);background:var(--card-bg);color:var(--text-heading);cursor:pointer;border-radius:8px;align-items:center;gap:.5rem;padding:.5rem .875rem;font-size:.8125rem;font-weight:600;transition:border-color .2s;display:inline-flex}.feedback-admin-toggle:hover{border-color:var(--card-hover-border)}.feedback-admin-badge{color:#6366f1;letter-spacing:.03em;text-transform:uppercase;background:#6366f11f;border-radius:999px;padding:.1rem .45rem;font-size:.65rem;font-weight:700}.feedback-admin-panel{flex-direction:column;gap:.625rem;margin-top:.875rem;display:flex}.feedback-comment{border:1px solid var(--card-border);border-radius:var(--radius-md);background:var(--cs-box-bg);border-left:3px solid #6366f1;padding:.875rem 1rem}.feedback-comment-head{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.feedback-comment-module{color:var(--text-heading);font-size:.8125rem;font-weight:700}.feedback-comment-date{color:var(--text-muted);margin-left:auto;font-size:.75rem}.feedback-comment-author{color:var(--text-muted);margin-top:.25rem;font-size:.75rem}.feedback-comment-author span{opacity:.8}.feedback-comment-body{color:var(--text-main);white-space:pre-wrap;overflow-wrap:anywhere;margin-top:.5rem;font-size:.875rem;line-height:1.55}.feedback-comment-empty{color:var(--text-muted);font-style:italic}@media (max-width:640px){.feedback-row-main{flex-direction:column;align-items:flex-start}.feedback-remove{margin-left:0}}.sidebar-logo{flex-direction:column;align-items:flex-start;gap:.4rem;padding:.25rem .5rem 1.25rem;display:flex}.sidebar-logo-img{width:100%;max-width:190px;height:auto}.sidebar-logo-on-dark,[data-theme=dark] .sidebar-logo-on-light{display:none}[data-theme=dark] .sidebar-logo-on-dark{display:block}.sidebar-product{letter-spacing:.11em;text-transform:uppercase;color:var(--text-muted);padding-left:.15rem;font-size:.6875rem;font-weight:700}.skeleton{background:linear-gradient(90deg, var(--cs-box-bg) 25%, var(--card-border) 37%, var(--cs-box-bg) 63%);background-size:400% 100%;border-radius:6px;animation:1.4s ease-in-out infinite skeleton-shimmer;display:block}@keyframes skeleton-shimmer{0%{background-position:100%}to{background-position:0}}@media (prefers-reduced-motion:reduce){.skeleton{animation:none}}.skeleton-card,.skeleton-row{pointer-events:none}.skeleton-card{flex-direction:column;gap:.6rem;display:flex}.skeleton-card-head{align-items:center;gap:.75rem;margin-bottom:.4rem;display:flex}.skeleton-card-titles{flex-direction:column;flex:1;gap:.4rem;display:flex}.skeleton-icon{border-radius:10px;flex-shrink:0;width:44px;height:44px}.skeleton-line{height:.75rem}.skeleton-sm{height:.625rem}.skeleton-button{border-radius:8px;height:2.6rem;margin-top:.4rem}.skeleton-stars{width:130px;height:1.35rem}.skeleton-w-30{width:30%}.skeleton-w-40{width:40%}.skeleton-w-60{width:60%}.skeleton-w-80{width:80%}.skeleton-w-90{width:90px}.skeleton-w-140{width:140px}a:focus-visible,button:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent-purple);outline-offset:2px;border-radius:6px}.module-card{transition:border-color .2s,box-shadow .2s,transform .2s}.module-card:hover{transform:translateY(-2px);box-shadow:0 6px 20px #0f172a12}[data-theme=dark] .module-card:hover{box-shadow:0 6px 20px #00000059}.coming-soon-card:hover{box-shadow:none;transform:none}@media (prefers-reduced-motion:reduce){.module-card:hover{transform:none}}.ethub-sidebar{padding:0 0 1rem}.sidebar-logo{border-bottom:1px solid var(--sidebar-border);justify-content:center;gap:.2rem;height:64px;margin-bottom:0;padding:0 1.25rem}.sidebar-logo-img{max-width:152px}.sidebar-product{letter-spacing:.13em;padding-left:.1rem;font-size:.625rem}.sidebar-nav{padding:1.25rem 1rem 0}.sidebar-footer{padding:0 1rem}.module-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));align-items:stretch;gap:1.25rem;margin-top:1rem;display:grid}.module-card-head{grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:.85rem;display:grid}.module-head-text{min-width:0}.module-head-text .module-title,.module-head-text .module-title-link{overflow-wrap:anywhere;line-height:1.3;display:block}.module-icon-wrapper{border-radius:11px;flex-shrink:0;justify-content:center;align-items:center;width:42px;height:42px;display:inline-flex}.module-icon-wrapper[data-accent=violet]{color:#6366f1;background:#6366f11f}.module-icon-wrapper[data-accent=blue]{color:#3b82f6;background:#3b82f61f}.module-icon-wrapper[data-accent=emerald]{color:#10b981;background:#10b9811f}.module-icon-wrapper[data-accent=amber]{color:#d97706;background:#f59e0b24}.module-icon-wrapper[data-accent=rose]{color:#f43f5e;background:#f43f5e1f}.module-icon-wrapper[data-accent=slate]{color:#64748b;background:#64748b24}[data-theme=dark] .module-icon-wrapper[data-accent=violet]{color:#a5b4fc}[data-theme=dark] .module-icon-wrapper[data-accent=blue]{color:#93c5fd}[data-theme=dark] .module-icon-wrapper[data-accent=emerald]{color:#6ee7b7}[data-theme=dark] .module-icon-wrapper[data-accent=amber]{color:#fcd34d}[data-theme=dark] .module-icon-wrapper[data-accent=rose]{color:#fda4af}[data-theme=dark] .module-icon-wrapper[data-accent=slate]{color:#cbd5e1}.module-card-foot{border-top:1px solid var(--card-border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-top:1.1rem;padding-top:.95rem;display:flex}.module-foot-note{color:var(--text-muted);opacity:.85;font-size:.775rem;font-style:italic}.coming-soon-card{background:var(--cs-box-bg,var(--card-bg));border-style:dashed}.coming-soon-card:hover{box-shadow:none;border-color:var(--card-border);transform:none}.coming-soon-card .module-title{color:var(--text-main)}.badge-soon{color:#475569;letter-spacing:.02em;white-space:nowrap;background:#64748b24;border-radius:12px;align-items:center;gap:.3rem;padding:.18rem .5rem;font-size:.7rem;font-weight:600;display:inline-flex}[data-theme=dark] .badge-soon{color:#cbd5e1;background:#94a3b829}.section-heading-group{align-items:center;gap:.5rem;display:inline-flex}.section-count{background:var(--metrics-bg);border:1px solid var(--card-border);min-width:20px;height:20px;color:var(--text-muted);border-radius:10px;justify-content:center;align-items:center;padding:0 .35rem;font-size:.7rem;font-weight:700;display:inline-flex}.category-filter{flex-wrap:wrap;gap:.5rem;margin-bottom:.25rem;display:flex}.category-chip{border:1px solid var(--card-border);background:var(--card-bg);color:var(--text-muted);cursor:pointer;border-radius:999px;align-items:center;gap:.4rem;padding:.36rem .8rem;font-family:inherit;font-size:.8rem;font-weight:500;transition:background .18s,border-color .18s,color .18s;display:inline-flex}.category-chip:hover{border-color:var(--card-hover-border);color:var(--text-heading)}.category-chip[aria-pressed=true]{color:#4f46e5;background:#6366f11a;border-color:#6366f173;font-weight:600}[data-theme=dark] .category-chip[aria-pressed=true]{color:#c7d2fe;background:#6366f133}.category-chip-count{opacity:.7;font-size:.7rem;font-weight:700}.dashboard-section+.dashboard-section{margin-top:0}@media (max-width:560px){.module-grid{grid-template-columns:1fr}.module-card-foot{align-items:flex-start}.btn-open-module{width:100%}}@media (max-width:900px){.ethub-layout{flex-direction:column}.ethub-sidebar{border-right:none;border-bottom:1px solid var(--sidebar-border);flex-direction:row;justify-content:space-between;align-items:center;gap:1rem;width:100%;padding:0 .5rem 0 0}.sidebar-top{align-items:center;min-width:0;display:flex}.sidebar-logo{border-bottom:none;padding:0 1rem}.sidebar-nav{display:none}.sidebar-footer{padding:0}.user-profile-card{border-top:none;margin-top:0;padding:.4rem .5rem}.main-header{flex-wrap:wrap;gap:.75rem;height:auto;padding:.85rem 1.25rem}.dashboard-body{padding:1.5rem 1.25rem}}@media (max-width:620px){.user-info{display:none}.sidebar-logo{padding:0 .75rem}.welcome-title{font-size:1.5rem}.dashboard-body{padding:1.25rem 1rem}.feedback-row-main{flex-direction:column;align-items:flex-start;gap:.75rem}}
