:root{--navy:#101633;--navy2:#171e46;--purple:#6f3cff;--purple2:#8a57ff;--bg:#f6f7fb;--text:#11152d;--muted:#717792;--line:#e4e7f0;--white:#fff;--green:#0a9f6a;--red:#d64758}*{box-sizing:border-box}html,body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:var(--bg)}a{color:inherit;text-decoration:none}button,input,select{font:inherit}.app-shell{min-height:100vh;display:grid;grid-template-columns:260px 1fr}.sidebar{background:linear-gradient(180deg,#0f1738,#12193b);color:#fff;padding:22px 18px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.sidebar-brand{display:flex;align-items:center;gap:12px;padding:5px 6px 24px}.logo-white svg{display:block;width:150px;height:auto;max-height:52px}.product-pill{font-size:10px;font-weight:800;letter-spacing:.16em;border:1px solid #ffffff2d;padding:5px 8px;border-radius:999px;color:#d9d5ff}.sidebar nav{display:flex;flex-direction:column;gap:7px}.sidebar nav a{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:12px;font-size:14px;font-weight:650;color:#dfe4ff}.sidebar nav a span{width:18px;text-align:center;color:#bfaeff}.sidebar nav a:hover,.sidebar nav a.active{background:linear-gradient(90deg,#332573,#3a287f);color:#fff}.nav-sep{height:1px;background:#ffffff17;margin:10px 0}.sidebar-foot{margin-top:auto;border:1px solid #ffffff1b;background:#ffffff0c;border-radius:14px;padding:13px;display:flex;flex-direction:column;gap:4px}.sidebar-foot small{color:#aeb6dd}.sidebar-foot strong{font-size:14px}.sidebar-foot span{font-size:12px;color:#c6cdf0}.main{min-width:0}.topbar{height:80px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 34px;position:sticky;top:0;z-index:10}.topbar h1{margin:0;font-size:20px}.topbar p{margin:4px 0 0;font-size:12px;color:var(--muted)}.top-actions{display:flex;align-items:center;gap:14px}.icon-btn{border:1px solid var(--line);width:38px;height:38px;display:grid;place-items:center;border-radius:10px}.user-menu{display:flex;align-items:center;gap:10px}.user-menu>div{display:flex;flex-direction:column;min-width:100px}.user-menu strong{font-size:13px}.user-menu small{font-size:11px;color:var(--muted)}.avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,var(--purple),var(--purple2));color:#fff;font-weight:800}.link-btn{border:0;background:none;color:var(--purple);font-weight:700;font-size:12px;cursor:pointer}.content{padding:30px 34px 60px;max-width:1500px;margin:0 auto}.hero{background:linear-gradient(105deg,#171d4b,#30206c 65%,#5229cc);color:#fff;border-radius:22px;padding:34px;display:flex;align-items:center;justify-content:space-between;gap:20px;box-shadow:0 15px 45px #1d214215}.hero h2{font-size:32px;margin:8px 0 10px;max-width:700px}.hero p{margin:0;color:#dfe3ff;max-width:740px}.eyebrow{font-size:11px;font-weight:800;letter-spacing:.16em;color:#c9b9ff}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:22px 0}.stats article{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px;display:flex;flex-direction:column;gap:5px}.stats small{color:var(--muted);font-size:12px}.stats strong{font-size:22px}.stats span{font-size:12px;color:var(--muted)}.section-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:28px 0 14px}.section-head.compact{margin:0 0 14px}.section-head h3{margin:0;font-size:20px}.section-head p{margin:5px 0 0;color:var(--muted);font-size:13px}.product-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.product-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:22px;display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:center;box-shadow:0 10px 30px #171d3210}.product-card.locked{opacity:.85}.product-icon{width:54px;height:54px;border-radius:15px;background:#f0ebff;color:var(--purple);display:grid;place-items:center;font-size:24px}.product-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.product-top h3{margin:0;font-size:18px}.product-copy p{margin:7px 0;color:var(--muted);line-height:1.5;font-size:13px}.product-copy small{color:#8a8fa7}.product-actions{min-width:160px;text-align:right}.btn{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:11px;padding:11px 16px;font-weight:750;cursor:pointer}.btn.primary{background:linear-gradient(135deg,var(--purple),var(--purple2));color:#fff}.btn.secondary{background:#f3f1ff;color:#5c34d5;border:1px solid #e1dbff}.btn.light{background:#fff;color:#2d1a72}.btn.wide{width:100%}.btn.tiny{font-size:12px;padding:7px 10px}.btn:disabled{opacity:.55;cursor:default}.status-pill{font-size:11px;font-weight:800;padding:5px 9px;border-radius:999px}.status-pill.on{background:#e8fbf2;color:#087d55}.status-pill.off{background:#f2f2f5;color:#777d91}.notice-card{margin-top:20px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px;display:flex;align-items:center;justify-content:space-between;gap:20px}.notice-card p{margin:5px 0 0;color:var(--muted);font-size:13px}.flow{font-size:12px;color:#5f45c8;background:#f3f0ff;border-radius:10px;padding:9px 12px}.plans{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.plan-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:22px;display:flex;flex-direction:column;gap:18px}.plan-card.current{border-color:#b6a0ff;box-shadow:0 0 0 3px #7a50ff12}.plan-name{font-weight:800}.plan-card h3{font-size:34px;margin:8px 0}.plan-card h3 small{font-size:14px;color:var(--muted)}.plan-card p{color:var(--muted);font-size:13px}.plan-card ul{list-style:none;padding:0;margin:0;display:grid;gap:8px;font-size:13px}.form-card,.table-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:22px}.form-card h3,.table-card h3{margin-top:0}.form-card>p{color:var(--muted);font-size:13px}label{display:flex;flex-direction:column;gap:7px;font-size:12px;font-weight:700;margin-bottom:14px}input,select{width:100%;border:1px solid #dfe3ed;border-radius:10px;background:#fff;padding:11px 12px;color:var(--text);outline:none}input:focus,select:focus{border-color:#9d81ff;box-shadow:0 0 0 3px #8a57ff16}label small{color:var(--muted);font-weight:500}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.two-col{display:grid;grid-template-columns:2fr 1fr;gap:18px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:13px}th,td{padding:12px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em}.inline-actions{display:flex;gap:7px;align-items:flex-start}.mini-form{position:absolute;z-index:20;background:#fff;border:1px solid var(--line);box-shadow:0 12px 40px #12162f20;padding:12px;border-radius:12px;display:grid;gap:7px;min-width:180px}.mini-form select{padding:7px}.flash{margin:0 0 18px;padding:12px 14px;border-radius:11px;font-size:13px}.flash.success{background:#e9fbf3;color:#0b7956}.flash.error{background:#fff0f2;color:#a72d3d}.guest-body{background:radial-gradient(circle at 20% 0,#eee9ff,transparent 35%),linear-gradient(180deg,#fafafe,#f3f4fa);min-height:100vh}.guest-wrap{max-width:520px;margin:0 auto;padding:54px 24px}.guest-brand{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:18px}.logo-dark svg{width:260px;height:auto;display:block}.portal-badge{font-size:10px;font-weight:900;letter-spacing:.18em;color:#6041d6;border:1px solid #d9d0ff;padding:5px 10px;border-radius:999px;background:#fff}.auth-card{background:#fff;border:1px solid #e1e4ed;border-radius:22px;padding:30px;box-shadow:0 25px 65px #24284b12}.auth-card h2{text-align:center;font-size:28px;margin:0 0 8px}.auth-card>p{text-align:center;color:var(--muted);margin:0 0 24px}.auth-links{display:flex;justify-content:space-between;gap:10px;margin-top:16px;font-size:12px;color:var(--muted)}.auth-links.center{justify-content:center}.auth-links a{color:var(--purple);font-weight:700}.empty-state{text-align:center;padding:60px;background:#fff;border-radius:18px;border:1px solid var(--line)}.mobile-menu{display:none}.logo-dark svg,.logo-white svg{max-width:100%}@media(max-width:1000px){.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;left:-280px;z-index:30;width:260px;transition:.2s}.sidebar.open{left:0}.mobile-menu{display:inline-grid;border:1px solid var(--line);background:#fff;width:38px;height:38px;place-items:center;border-radius:10px}.topbar{padding:0 18px}.content{padding:22px 18px}.stats{grid-template-columns:repeat(2,1fr)}.product-grid,.plans{grid-template-columns:1fr}.two-col{grid-template-columns:1fr}.product-card{grid-template-columns:auto 1fr}.product-actions{grid-column:1/-1;text-align:left}.form-grid{grid-template-columns:1fr}}@media(max-width:620px){.stats{grid-template-columns:1fr}.hero{padding:26px;align-items:flex-start;flex-direction:column}.hero h2{font-size:26px}.user-menu>div{display:none}.content{padding:18px 12px}.topbar{height:70px}.product-card{padding:18px}.guest-wrap{padding:30px 14px}.auth-card{padding:22px}.auth-links{flex-direction:column;align-items:center}}
/* v1.0.0.7 central billing + entitlement controls */
.app-version{margin-top:8px;padding-top:8px;border-top:1px solid #ffffff14;color:#9099c7!important;font-size:10px!important}.billing-summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:0 0 18px}.billing-summary-grid article{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px;display:grid;gap:5px}.billing-summary-grid small,.billing-summary-grid span{color:var(--muted);font-size:11px}.billing-summary-grid strong{font-size:16px}.access-strip{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:0 0 22px}.access-strip>div{display:grid;grid-template-columns:1fr auto;gap:5px 12px;align-items:center;padding:16px 18px;background:#fff;border:1px solid var(--line);border-radius:15px}.access-strip small{grid-column:1/-1;color:var(--muted);text-transform:capitalize}.admin-billing-list{display:grid;gap:16px}.admin-billing-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:22px}.admin-billing-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.admin-billing-head h3{margin:0}.admin-billing-head p{margin:5px 0 0;color:var(--muted);font-size:12px}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.entitlement-control{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:6px 0 16px}.entitlement-control>div{padding:15px;border:1px solid var(--line);border-radius:14px;background:#fafafe}.entitlement-control h4{margin:0 0 10px}.entitlement-control select,.entitlement-control input{margin-bottom:8px}.billing-control-form>.btn{margin-top:4px}@media(max-width:1000px){.billing-summary-grid{grid-template-columns:repeat(2,1fr)}.form-grid.three{grid-template-columns:1fr 1fr}.entitlement-control{grid-template-columns:1fr}}@media(max-width:620px){.billing-summary-grid,.access-strip,.form-grid.three{grid-template-columns:1fr}.admin-billing-head{flex-direction:column}}

/* v1.0.0.8 central entitlement enforcement */
.locked-product-card{max-width:760px;margin:42px auto;background:#fff;border:1px solid #e3e6ef;border-radius:22px;padding:34px;display:flex;gap:22px;align-items:flex-start;box-shadow:0 18px 55px rgba(23,27,53,.06)}
.locked-product-card h2{margin:6px 0 10px;font-size:28px}.locked-product-card p{color:#656b82;line-height:1.6}.locked-icon{width:58px;height:58px;border-radius:16px;background:#f1edff;display:grid;place-items:center;font-size:24px;flex:0 0 auto}.eyebrow{font-size:11px;letter-spacing:.14em;font-weight:800;color:#7651ff}.muted{font-size:13px}

/* v1.0.0.12 central Stripe + PayPal billing */
.payment-provider-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.payment-provider-card{min-width:0}.provider-status{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.payment-choice{display:grid;gap:8px}.payment-choice form{margin:0}.provider-test-form{display:inline-block;margin:10px 0 0 8px}.payment-provider-card>form:first-of-type>.btn{margin-top:4px}@media(max-width:1050px){.payment-provider-grid{grid-template-columns:1fr}}@media(max-width:620px){.provider-status{justify-content:flex-start}.provider-test-form{display:block;margin:8px 0 0}.payment-provider-card .btn{width:100%}}

/* v1.0.0.12 multi-subscription + smart bundle upgrade */
.bundle-saving{background:#f6f3ff;border:1px solid #e4ddff;border-radius:12px;padding:11px 12px;display:grid;gap:3px}.bundle-saving strong{font-size:12px;color:#5630c9}.bundle-saving span{font-size:11px;color:var(--muted);line-height:1.45}.subscription-list{display:grid;gap:10px}.subscription-row{background:#fff;border:1px solid var(--line);border-radius:15px;padding:16px 18px;display:flex;align-items:center;justify-content:space-between;gap:18px}.subscription-row>div{display:grid;gap:4px}.subscription-row span,.subscription-row small{font-size:12px;color:var(--muted)}.admin-paid-list{margin:0 0 16px;padding:14px;border:1px solid #e5e1f8;background:#faf9ff;border-radius:14px}.admin-paid-list h4{margin:0 0 10px}.admin-paid-row{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:9px 0;border-top:1px solid #ebe7f7}.admin-paid-row:first-of-type{border-top:0}.admin-paid-row>div{display:grid;gap:3px}.admin-paid-row span,.admin-paid-row small{font-size:11px;color:var(--muted)}.admin-fallback-note{margin:0 0 14px;padding:10px 12px;border-left:3px solid #8a57ff;background:#f8f6ff;display:grid;gap:3px}.admin-fallback-note strong{font-size:12px}.admin-fallback-note span{font-size:11px;color:var(--muted)}@media(max-width:700px){.subscription-row,.admin-paid-row{align-items:flex-start;flex-direction:column}.subscription-row form,.subscription-row .btn{width:100%}}

/* v1.0.0.15 manual-access billing UI: manual plan cards correctly show access already active */


/* v1.0.0.18 central password reset return flow */
.section-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.service-active-grid{margin-bottom:10px}.service-empty{grid-column:1/-1;padding:34px}.service-empty h3,.empty-state h3{margin:0 0 8px}.service-empty p,.empty-state p{margin:0 0 18px;color:var(--muted)}.service-plan-grid{margin-bottom:8px}@media(max-width:620px){.section-actions{width:100%}.section-actions .btn{flex:1}.section-head{align-items:flex-start;flex-wrap:wrap}}

/* v1.0.0.22 external billing */
.admin-billing-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.admin-billing-actions form{margin:0}.external-billing-card{margin:0 0 14px;padding:14px 16px;border:1px solid #dfe8e5;background:#f8fffb;border-radius:14px;display:flex;align-items:center;justify-content:space-between;gap:16px}.external-billing-copy{display:grid;gap:4px}.external-billing-title{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.external-billing-copy span,.external-billing-copy small{font-size:11px;color:var(--muted)}.external-history{margin:0 0 14px;border:1px solid var(--line);border-radius:12px;background:#fbfbfe}.external-history summary{cursor:pointer;padding:11px 13px;font-weight:750;font-size:12px;color:#4c3aa6}.external-history-list{padding:0 13px 10px;display:grid;gap:0}.external-history-list>div{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--line);padding:9px 0}.external-history-list span,.external-history-list small{font-size:11px;color:var(--muted)}.external-history-list strong{color:var(--text)}.wb-dialog{width:min(720px,calc(100vw - 28px));border:0;border-radius:20px;padding:0;background:#fff;box-shadow:0 28px 90px #13172f35;color:var(--text)}.wb-dialog::backdrop{background:#10152e80;backdrop-filter:blur(3px)}.wb-dialog-head{display:flex;justify-content:space-between;gap:16px;padding:22px 24px 16px;border-bottom:1px solid var(--line)}.wb-dialog-head h3{font-size:22px;margin:5px 0 6px}.wb-dialog-head p{margin:0;color:var(--muted);font-size:12px}.dialog-x{width:36px;height:36px;border:1px solid var(--line);border-radius:10px;background:#fff;color:#6b7086;font-size:22px;cursor:pointer}.external-grant-form{padding:20px 24px 24px}.external-grant-form .form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.dialog-warning{margin:4px 0 14px;padding:11px 12px;border-radius:10px;background:#fff8e8;border:1px solid #f1dfb6;color:#765817;font-size:11px;line-height:1.45}.dialog-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:4px}.external-subscription-row{border-color:#dfe8e5;background:#fbfffd}@media(max-width:700px){.admin-billing-actions,.external-billing-card,.external-history-list>div{align-items:flex-start;flex-direction:column}.admin-billing-actions,.admin-billing-actions form,.admin-billing-actions .btn,.external-billing-card form,.external-billing-card .btn{width:100%}.external-grant-form .form-grid.two{grid-template-columns:1fr}.dialog-actions{flex-direction:column-reverse}.dialog-actions .btn{width:100%}}

/* v1.0.0.22 module connection + SSO recovery */
.module-connection-section{margin-top:22px}.module-connection-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:18px}.module-connect-card{border:1px solid #e3e6f0;border-radius:18px;padding:20px;background:#fff}.module-connect-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px}.module-connect-head strong{display:block;font-size:18px;color:#14172b}.module-connect-head small,.module-source{display:block;color:#747990;margin-top:4px}.module-connect-card form>label{display:block;margin-bottom:12px}.module-connect-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}.module-connect-actions form{margin:0}.integration-advanced{border:1px solid #eceef5;border-radius:12px;padding:10px 12px;margin:10px 0 14px}.integration-advanced summary{cursor:pointer;font-weight:700;color:#4637b7}.integration-advanced label{display:block;margin-top:12px}.module-setup-code{display:flex;flex-direction:column;gap:6px;margin-top:16px}.module-setup-code code{font-size:16px;letter-spacing:.04em;word-break:break-all;background:#f5f4ff;border:1px solid #ded9ff;border-radius:10px;padding:10px 12px;color:#3526a7}@media(max-width:900px){.module-connection-grid{grid-template-columns:1fr}}
.setup-link-card{margin-bottom:18px}.setup-link-card input{width:100%;margin-top:10px;padding:12px 14px;border:1px solid #dfe1ee;border-radius:10px;background:#fff;color:#3f36b5;font-weight:700}
