html,body,#root{height:100%;margin:0;padding:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}:root{--bg:#f5f6f8;--surface:#fff;--text:#1a2230;--text-muted:#5b6675;--border:#e1e5eb;--primary:#0c7c66;--primary-hover:#095e4d;--primary-faded:#d6efe8;--danger:#b3261e;--shadow:0 4px 18px #0f233c14}body{background:var(--bg);color:var(--text)}button{cursor:pointer;font:inherit}a{color:var(--primary)}a:hover{color:var(--primary-hover)}.boot-screen{min-height:100vh;color:var(--text-muted);place-items:center;display:grid}.boot-error{color:var(--danger)}.login-screen{background:linear-gradient(135deg, var(--primary-faded) 0%, var(--bg) 70%);place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{background:var(--surface);box-shadow:var(--shadow);border-radius:14px;flex-direction:column;align-items:stretch;gap:12px;width:min(380px,100%);padding:36px 32px;display:flex}.login-logo{align-self:center;width:96px;margin-bottom:8px}.login-title{text-align:center;margin:0;font-size:22px}.login-sub{text-align:center;color:var(--text-muted);margin:0 0 16px;font-size:14px}.login-input{border:1px solid var(--border);border-radius:8px;outline:none;padding:12px 14px;font-size:15px;transition:border-color .15s}.login-input:focus{border-color:var(--primary)}.login-error{color:var(--danger);background:#fdecea;border-radius:6px;padding:8px 12px;font-size:13px}.btn-primary{background:var(--primary);color:#fff;border:none;border-radius:8px;padding:11px 18px;font-size:15px;font-weight:600;transition:background .15s}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-primary:disabled{opacity:.55;cursor:not-allowed}.login-btn{margin-top:4px}.hub-app{flex-direction:column;min-height:100vh;display:flex}.hub-main{flex:1;width:100%;max-width:1100px;margin:0 auto;padding:32px 24px 64px}.hub-hero{margin:24px 0 32px}.hub-hero h1{margin:0 0 6px;font-size:28px}.hub-hero p{color:var(--text-muted);margin:0}.hub-nav{background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:16px;padding:12px 24px;display:flex}.hub-nav-brand{color:var(--text);align-items:center;gap:10px;font-weight:600;text-decoration:none;display:flex}.hub-nav-mark{width:28px;height:28px}.hub-nav-title{font-size:15px}.hub-nav-switcher{margin-left:auto;margin-right:16px;position:relative}.hub-nav-current{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:8px 14px;font-size:14px}.hub-nav-current:hover{border-color:var(--primary)}.hub-nav-menu{background:var(--surface);border:1px solid var(--border);min-width:200px;box-shadow:var(--shadow);z-index:50;border-radius:10px;margin:0;padding:6px;list-style:none;position:absolute;top:calc(100% + 6px);right:0}.hub-nav-item{color:var(--text);border-radius:6px;padding:8px 12px;font-size:14px;text-decoration:none;display:block}.hub-nav-item:hover{background:var(--primary-faded);color:var(--primary-hover)}.hub-nav-item.active{background:var(--primary);color:#fff}.hub-nav-item.disabled{color:var(--text-muted);cursor:not-allowed}.hub-nav-item.disabled small{opacity:.7;font-size:11px;display:block}.hub-nav-logout{border:1px solid var(--border);color:var(--text);background:0 0;border-radius:8px;padding:8px 14px;font-size:14px}.hub-nav-logout:hover{border-color:var(--danger);color:var(--danger)}.portal-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px;display:grid}.portal-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:10px;padding:22px;transition:transform .15s,box-shadow .15s;display:flex}.portal-card:not(.disabled):hover{box-shadow:var(--shadow);transform:translateY(-2px)}.portal-card h2{margin:0;font-size:18px}.portal-card p{color:var(--text-muted);flex:1;margin:0;font-size:14px;line-height:1.5}.portal-card.disabled{opacity:.65}.portal-card-status{background:var(--primary-faded);color:var(--primary-hover);border-radius:999px;align-self:flex-start;padding:4px 10px;font-size:12px;font-weight:600}.portal-card-btn{text-align:center;align-self:flex-start;text-decoration:none;display:inline-block}
