@font-face{font-family:Montserrat;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/montserrat-500-DRFEGfly.woff2)format("woff2")}@font-face{font-family:Montserrat;font-style:normal;font-weight:600;font-display:swap;src:url(/assets/montserrat-600-UVxSCcoG.woff2)format("woff2")}@font-face{font-family:Montserrat;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/montserrat-700-BdjcYUrC.woff2)format("woff2")}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-family:Montserrat,system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-weight:500}*{box-sizing:border-box}html,body{background:#fff;margin:0;padding:0}#root{min-height:100svh}a{color:inherit}button{font-family:inherit}:root{--brand:#1e50a0;--brand-strong:#163d7d;--brand-soft:#eaf1fb;--accent:#f59e0b;--bg:#fff;--surface:#fff;--border:#e4e8f0;--border-strong:#d3d9e6;--text:#1b2333;--text-muted:#64708a;--text-faint:#97a1b5;--danger:#dc2626;--danger-soft:#fef2f2;--danger-border:#fca5a5;--success:#16a34a;--radius:14px;--radius-sm:10px;--shadow-sm:0 1px 2px #101e3c0f;--shadow-md:0 10px 30px -12px #101e3c40;--shadow-lg:0 24px 60px -20px #101e3c59}body{background:var(--bg);color:var(--text)}.btn{border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:.5rem;padding:.7rem 1.1rem;font-size:.95rem;font-weight:600;text-decoration:none;transition:background .15s,border-color .15s,transform 50ms;display:inline-flex}.btn:active{transform:translateY(1px)}.btn-primary{background:linear-gradient(180deg, var(--brand) 0%, var(--brand-strong) 100%);color:#fff;box-shadow:var(--shadow-sm)}.btn-primary:hover{filter:brightness(1.06)}.btn-block{width:100%}.btn-ghost{color:var(--text-muted);background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--brand-soft);color:var(--brand)}.link{color:var(--brand);font-size:.85rem;font-weight:600;text-decoration:none}.link:hover{text-decoration:underline}.muted{color:var(--text-muted)}.login-screen{background:#fff;place-items:center;min-height:100svh;padding:2rem 1.25rem;display:grid}.login-card{background:var(--surface);border:1px solid var(--border);width:100%;max-width:420px;box-shadow:var(--shadow-lg);border-radius:18px;padding:2.25rem;position:relative;overflow:hidden}.login-card:before{content:"";background:linear-gradient(90deg, var(--brand), var(--accent));height:4px;position:absolute;inset:0 0 auto}.logo{align-items:center;gap:.7rem;display:inline-flex}.brand-logo{object-fit:contain;flex:none;width:42px;height:42px}.logo-text{text-align:left;line-height:1.2}.logo-text strong{color:var(--text);letter-spacing:-.01em;font-size:1.1rem;font-weight:600;display:block}.logo-text span{letter-spacing:.14em;color:var(--text-faint);text-transform:uppercase;font-size:.72rem}.login-head{margin:1.6rem 0 1.4rem}.login-head h1{color:var(--text);margin:0 0 .35rem;font-size:1.5rem;font-weight:700}.login-head p{color:var(--text-muted);margin:0;font-size:.9rem}.field{margin-bottom:1rem}.field-label{justify-content:space-between;align-items:center;margin-bottom:.4rem;display:flex}.field-label label{letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted);font-size:.72rem;font-weight:700}.input-wrap{align-items:center;display:flex;position:relative}.input-wrap .lead{color:var(--text-faint);pointer-events:none;display:inline-flex;position:absolute;left:.85rem}.input{border:1px solid var(--border-strong);border-radius:var(--radius-sm);width:100%;color:var(--text);background:#fff;padding:.72rem .9rem .72rem 2.5rem;font-size:.95rem;transition:border-color .15s,box-shadow .15s}.input:focus{border-color:var(--brand);outline:none;box-shadow:0 0 0 3px #1e50a024}.input-toggle{color:var(--text-faint);cursor:pointer;background:0 0;border:none;padding:.25rem;display:inline-flex;position:absolute;right:.6rem}.input-toggle:hover{color:var(--text-muted)}.divider{color:var(--text-faint);letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:.9rem;margin:1.4rem 0;font-size:.75rem;display:flex}.divider:before,.divider:after{content:"";background:var(--border);flex:1;height:1px}.btn-sso{color:#fff;background:linear-gradient(135deg,#0f2f66 0%,#1e50a0 55%,#2b6fd6 100%);border:1px solid #ffffff1f;border-radius:12px;gap:.65rem;width:100%;padding:.9rem 1.1rem;font-size:1rem;box-shadow:0 10px 24px -10px #1e50a0b3}.btn-sso:hover{filter:brightness(1.08)}.btn-sso .keys{background:#ffffff29;border-radius:8px;flex:none;place-items:center;width:30px;height:30px;display:grid}.login-foot{text-align:center;color:var(--text-faint);margin-top:1.6rem;font-size:.78rem}.login-error{background:var(--danger-soft);border:1px solid var(--danger-border);color:var(--danger);border-radius:var(--radius-sm);align-items:center;gap:.5rem;margin-bottom:1rem;padding:.6rem .8rem;font-size:.85rem;display:flex}.portal{min-height:100svh}.topbar{background:var(--surface);border-bottom:1px solid var(--border);z-index:20;position:sticky;top:0}.topbar-inner{justify-content:space-between;align-items:center;max-width:1120px;margin:0 auto;padding:.85rem 1.5rem;display:flex}.user-menu{position:relative}.user-trigger{cursor:pointer;color:var(--text);background:0 0;border:1px solid #0000;border-radius:999px;align-items:center;gap:.6rem;padding:.35rem .6rem .35rem .4rem;display:inline-flex}.user-trigger:hover{background:var(--bg);border-color:var(--border)}.avatar{background:var(--brand-soft);width:34px;height:34px;color:var(--brand);border-radius:50%;flex:none;place-items:center;display:grid}.user-name{text-overflow:ellipsis;white-space:nowrap;max-width:180px;font-size:.9rem;font-weight:600;overflow:hidden}.dropdown{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);min-width:190px;box-shadow:var(--shadow-md);z-index:30;padding:.35rem;position:absolute;top:calc(100% + 8px);right:0}.dropdown-item{width:100%;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:8px;align-items:center;gap:.6rem;padding:.6rem .7rem;font-size:.9rem;text-decoration:none;display:flex}.dropdown-item:hover{background:var(--bg)}.dropdown-item.danger{color:var(--danger)}.dropdown-sep{background:var(--border);height:1px;margin:.25rem 0}.content{max-width:1120px;margin:0 auto;padding:1.75rem 1.5rem 3rem}.alert{background:var(--danger-soft);border:1px solid var(--danger-border);border-radius:var(--radius);align-items:flex-start;gap:.75rem;margin-bottom:1.75rem;padding:1rem 1.15rem;display:flex}.alert .alert-icon{color:var(--danger);flex:none;margin-top:2px}.alert strong{color:var(--danger);margin-bottom:.2rem;display:block}.alert p{color:#7f1d1d;margin:0;font-size:.88rem;line-height:1.5}.section-title{color:var(--text);align-items:center;gap:.55rem;margin:0 0 1rem;font-size:1.1rem;font-weight:700;display:flex}.section-title svg{color:var(--brand)}.profile-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);align-items:center;gap:1.25rem;padding:1.4rem 1.5rem;display:flex;position:relative;overflow:hidden}.profile-photo{background:linear-gradient(135deg, var(--brand-soft), #dbe6fa);width:72px;height:72px;color:var(--brand);border-radius:16px;flex:none;place-items:center;display:grid}.profile-body{min-width:0}.profile-name-row{flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:.3rem;display:flex}.profile-name{color:var(--text);font-size:1.15rem;font-weight:700}.badge{letter-spacing:.08em;text-transform:uppercase;background:var(--brand);color:#fff;border-radius:6px;padding:.2rem .55rem;font-size:.65rem;font-weight:800}.profile-title{color:var(--text-muted);margin-bottom:.7rem;font-size:.9rem}.profile-meta{color:var(--text-muted);flex-wrap:wrap;gap:.5rem 1.4rem;font-size:.85rem;display:flex}.profile-meta span{align-items:center;gap:.4rem;display:inline-flex}.profile-meta svg{color:var(--text-faint)}.profile-meta b{color:var(--text);font-weight:600}.section{margin-top:2rem}.app-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1.1rem;display:grid}.app-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);color:inherit;flex-direction:column;gap:.9rem;padding:1.25rem;text-decoration:none;transition:transform .12s,box-shadow .15s,border-color .15s;display:flex;position:relative}.app-card:hover{box-shadow:var(--shadow-md);border-color:var(--border-strong);transform:translateY(-3px)}.app-star{color:var(--text-faint);cursor:pointer;background:0 0;border:none;padding:.15rem;display:inline-flex;position:absolute;top:.9rem;right:.9rem}.app-star.on{color:var(--accent)}.app-icon{color:#fff;border-radius:14px;place-items:center;width:54px;height:54px;display:grid}.app-name{color:var(--text);font-size:1rem;font-weight:700}.app-desc{color:var(--text-muted);margin-top:.15rem;font-size:.8rem;line-height:1.4}.app-open{color:var(--brand);align-items:center;gap:.35rem;margin-top:auto;font-size:.85rem;font-weight:700;display:inline-flex}.detail-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);max-width:620px;padding:1.75rem}.detail-card h2{margin:0 0 .4rem;font-size:1.35rem}.details{grid-template-columns:9rem 1fr;gap:.75rem 1rem;margin-top:1.25rem;display:grid}.details dt{color:var(--text-muted);font-size:.9rem}.details dd{color:var(--text);margin:0;font-weight:600}.state-center{min-height:60svh;color:var(--text-muted);place-items:center;display:grid}.gate{min-height:100svh;color:var(--text-muted);background:#fff;flex-direction:column;justify-content:center;align-items:center;gap:1rem;padding:2rem;display:flex}.gate p{font-size:.95rem}.gate-logo{background:linear-gradient(135deg, var(--brand) 0%, var(--brand-strong) 100%);color:#fff;width:54px;height:54px;box-shadow:var(--shadow-md);border-radius:14px;place-items:center;display:grid}.gate-spin{color:var(--brand);animation:.9s linear infinite gate-rotate}@keyframes gate-rotate{to{transform:rotate(360deg)}}@media (width<=560px){.profile-card{text-align:left;flex-direction:column;align-items:flex-start}.user-name{display:none}}
