:root{--ink:#17233f;--muted:#71809d;--line:#e7ebf3;--bg:#f7f9fc}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif}main{min-height:100vh}aside,main{display:flex}aside{width:250px;background:#101b35;color:#fff;padding:30px 20px;flex-direction:column}.brand{font-weight:750;font-size:17px;display:flex;gap:10px;align-items:center;margin:0 10px 58px}.brand span{color:#5e8bff;font-size:24px}nav{display:grid;grid-gap:8px;gap:8px}nav a{padding:13px 14px;border-radius:9px;color:#aebbd6;font-size:14px}nav a.active{background:#24385f;color:#fff}.asideFoot{margin-top:auto;color:#8292b4;font-size:12px;line-height:1.7;padding:14px 10px}.content{max-width:1280px;width:100%;padding:45px 58px}header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:38px}.eyebrow{font-size:11px;letter-spacing:.13em;color:#6a83b6;font-weight:700;margin:0 0 10px}h1{font-size:31px;letter-spacing:-.04em}h1,h2{margin:0 0 7px}h2{font-size:17px}.muted{color:var(--muted);font-size:13px;margin:0;line-height:1.6}.avatar{border:0;background:#dce8ff;color:#3864cf;width:38px;height:38px;border-radius:50%;font-size:12px;font-weight:700}.cards{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:18px;gap:18px;margin-bottom:25px}.card,.panel{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 3px 12px #1d315b05}.card{padding:21px}.card p{margin:12px 0 11px;color:var(--muted);font-size:13px}.card strong{display:block;font-size:29px;letter-spacing:-.04em}.card span{color:#93a0b7;font-size:11px;display:block;margin-top:12px}.dot{width:9px;height:9px;border-radius:50%}.blue{background:#5085ff}.green{background:#32c59b}.orange{background:#ffb54c}.red{background:#f17d91}.grid{display:grid;grid-template-columns:1.5fr 1fr;grid-gap:18px;gap:18px}.panel{padding:26px}.panelHead{display:flex;justify-content:space-between}.link{border:0;background:none;color:#4878e4;font-size:12px}.empty{text-align:center;border:1px dashed #d9e0ec;border-radius:10px;margin-top:25px;padding:35px}.emptyIcon{margin:auto auto 13px;background:#e7f8f1;color:#1ca77e;width:34px;height:34px;border-radius:50%;display:grid;place-items:center}.empty strong{font-size:14px}.empty p{font-size:12px;color:var(--muted);margin:8px}.highlight{background:linear-gradient(145deg,#203b78,#172956);color:#fff}.highlight .muted{color:#b9c7e5;margin:14px 0 23px}.highlight .eyebrow{color:#91b4ff}.primary{border:0;background:#76a0ff;color:#122451;border-radius:7px;padding:11px 16px;font-weight:700}.notice{background:#fff4db;color:#815d12;border:1px solid #f6dfaa;padding:12px 15px;border-radius:8px;font-size:13px;margin-bottom:20px}@media(max-width:850px){aside{width:190px}.content{padding:30px}.cards{grid-template-columns:repeat(2,1fr)}.grid{grid-template-columns:1fr}}@media(max-width:560px){aside{display:none}.content{padding:24px 16px}.cards{gap:10px}.card{padding:16px}}.loginPage{display:grid;place-items:center;width:100%;background:linear-gradient(135deg,#f7f9fc,#eaf0ff)}.loginCard{width:min(420px,calc(100% - 32px));background:#fff;padding:40px;border-radius:16px;box-shadow:0 20px 60px #1d315b15}.loginBrand{color:var(--ink);margin:0 0 45px}.loginCard h1{margin-top:0;margin-bottom:8px}.loginCard label{display:block;font-size:12px;font-weight:700;margin-top:20px}.loginCard input{display:block;width:100%;margin-top:7px;padding:12px;border:1px solid var(--line);border-radius:7px;font:inherit}.loginButton{width:100%;margin-top:24px}nav button{border:0;background:transparent;text-align:left;cursor:pointer;padding:13px 14px;border-radius:9px;color:#aebbd6;font-size:14px}nav button.active{background:#24385f;color:#fff}.tableWrap{overflow-x:auto;margin-top:25px}table{width:100%;border-collapse:collapse;font-size:13px}td,th{text-align:left;padding:15px 12px;border-bottom:1px solid var(--line)}th{color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.status,th{font-size:11px}.status{display:inline-block;padding:5px 9px;border-radius:20px;background:#e7f8f1;color:#168461}.status.past_due{background:#fff3db;color:#9a6b12}.status.cancelled{background:#ffebef;color:#b34b60}.emptyPage{min-height:260px;display:grid;place-items:center;text-align:center;align-content:center;grid-gap:4px;gap:4px}.emptyPage .emptyIcon{margin-bottom:10px}.inlineForm{display:flex;gap:10px;margin-top:22px;padding:16px;background:#f7f9fc;border:1px solid var(--line);border-radius:9px}.inlineForm input{flex:1 1;min-width:0;border:1px solid var(--line);border-radius:7px;padding:10px;font:inherit}.actions{white-space:nowrap}.actions button{border:0;background:none;color:#4674d7;font-size:11px;cursor:pointer;margin-right:8px}.actions button:last-child{color:#b34b60}.logout{display:block;border:0;background:none;color:#8292b4;padding:12px 0 0;font-size:12px;cursor:pointer}@media(max-width:650px){.inlineForm{display:grid}.actions{white-space:normal}.actions button{margin-bottom:5px}}.portalPage{display:block;min-height:100vh;background:radial-gradient(circle at 10% 0,#e4edff,transparent 36%),var(--bg)}.portalLoading{min-height:100vh;display:grid;place-items:center;color:var(--muted);font-size:14px}.portalAuthCard{width:min(460px,calc(100% - 32px));margin:8vh auto;padding:40px;border:1px solid var(--line);border-radius:20px;background:#fff;box-shadow:0 20px 60px #1d315b12}.portalBrand{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:800}.portalBrand span{color:#5e8bff;font-size:25px}.portalAuthCard .portalBrand{margin-bottom:38px}.portalAuthCard h1,.portalContent h1{margin-bottom:10px}.portalPrimary{width:100%;margin-top:24px}.portalTextButton{display:block;border:0;background:none;color:#4674d7;font:inherit;font-size:13px;margin:17px auto 0;cursor:pointer}.portalLegacyForm{margin-top:22px;padding-top:20px;border-top:1px solid var(--line)}.portalLegacyForm label{display:block;margin-top:16px;font-size:12px;font-weight:700}.portalLegacyForm input{display:block;width:100%;margin-top:7px;padding:12px;border:1px solid var(--line);border-radius:8px;font:inherit}.portalLegacyForm .secondary{width:100%;margin-top:20px}.portalDashboard{padding:0 5vw 60px}.portalHeader{max-width:1280px;margin:auto;padding:26px 0;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.portalHeaderActions{display:flex;align-items:center;gap:20px}.portalGreeting{font-size:13px;color:var(--muted)}.portalAdminLink,.portalSignOut{font-size:13px;color:#4674d7;text-decoration:none}.portalSignOut{border:0;background:none;cursor:pointer}.portalContent{max-width:1120px;margin:64px auto 0}.portalContent>.eyebrow{margin-bottom:12px}.portalProductGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));grid-gap:18px;gap:18px;margin-top:30px}.portalProductCard{min-height:245px;padding:24px;display:flex;flex-direction:column;align-items:flex-start;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:0 5px 22px #1d315b08}.portalEmptyIcon,.portalProductIcon{width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:#edf3ff;color:#5079d5;font-size:19px}.portalProductCard h2{margin:19px 0 7px;font-size:18px}.portalProductCard p{flex:1 1}.portalLaunchLink{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:22px;text-decoration:none}.portalUnavailable{margin-top:22px;color:var(--muted);font-size:13px}.portalEmptyState{max-width:640px;margin:36px 0;padding:34px;border:1px dashed #cfd8e8;border-radius:16px;background:#fff}.portalEmptyState h2{margin:18px 0 8px}.portalEmptyState p{max-width:540px}.portalEmptyActions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.portalEmptyActions button{min-width:120px}.portalEmptyActions .secondary,.portalEmptyState>.secondary{margin-top:20px}.portalEmptyActions .secondary{margin-top:0}.portalEmptyState .secondary,.portalLegacyForm .secondary{border:1px solid var(--line);background:#fff;color:#3b5eaa;border-radius:7px;padding:11px 16px;font-weight:700;cursor:pointer}@media(max-width:650px){.portalAuthCard{padding:28px 22px}.portalDashboard{padding:0 18px 40px}.portalHeader{align-items:flex-start;gap:14px}.portalHeaderActions{justify-content:flex-end;gap:12px;flex-wrap:wrap}.portalGreeting{width:100%;text-align:right}.portalContent{margin-top:42px}.portalEmptyState{padding:24px}}