:root,[data-theme=light]{--color-bg: #f7f8fa;--color-surface: #ffffff;--color-surface-2: #f0f2f5;--color-border: #e2e6ea;--color-text: #1a1f29;--color-text-muted: #6b7280;--color-text-inverse: #ffffff;--color-accent: #2563eb;--color-accent-hover: #1d4ed8;--color-success: #16a34a;--color-warning: #d97706;--color-error: #dc2626;--color-info: #0ea5e9;--color-trust-official: #2563eb;--color-trust-partner: #0ea5e9;--color-trust-community: #6b7280;--color-trust-internal: #7c3aed;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: 32px;--space-12: 48px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-full: 9999px;--elevation-1: 0 1px 2px rgba(0, 0, 0, .06);--elevation-2: 0 4px 12px rgba(0, 0, 0, .1);--elevation-3: 0 12px 32px rgba(0, 0, 0, .16);--opacity-disabled: .4;--opacity-overlay: .5;--opacity-hover: .08;--z-base: 0;--z-sticky: 100;--z-drawer: 1000;--z-modal: 1100;--z-toast: 1200;--z-tooltip: 1300;--font-sans: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--text-xs: 12px;--text-sm: 14px;--text-base: 16px;--text-lg: 20px;--text-xl: 24px;--text-2xl: 32px;--text-3xl: 40px;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--lh-tight: 1.2;--lh-normal: 1.5;--lh-loose: 1.75;--icon-sm: 16px;--icon-md: 20px;--icon-lg: 24px;--container-max: 1440px;--container-narrow: 720px;--motion-fast: .15s;--motion-base: .25s;--easing-standard: cubic-bezier(.4, 0, .2, 1)}[data-theme=dark]{--color-bg: #0f1216;--color-surface: #171b21;--color-surface-2: #1f242c;--color-border: #2a313b;--color-text: #e6e9ed;--color-text-muted: #9aa4b2;--color-text-inverse: #0f1216;--color-accent: #3b82f6;--color-accent-hover: #60a5fa;--color-success: #22c55e;--color-warning: #f59e0b;--color-error: #ef4444;--color-info: #38bdf8;--color-trust-official: #3b82f6;--color-trust-partner: #38bdf8;--color-trust-community: #9aa4b2;--color-trust-internal: #a78bfa;--elevation-1: 0 1px 2px rgba(0, 0, 0, .4);--elevation-2: 0 4px 12px rgba(0, 0, 0, .5);--elevation-3: 0 12px 32px rgba(0, 0, 0, .6);--opacity-hover: .12}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:var(--color-bg);color:var(--color-text);font:var(--text-base) / var(--lh-normal) var(--font-sans)}.px-shell{display:flex;min-height:100vh}.px-shell>[data-shell-area=sidebar],.px-shell>.px-shell-sidebar,.px-shell aside{width:240px;flex-shrink:0;border-right:1px solid var(--color-border, rgba(128, 128, 128, .2));padding:var(--space-4);background:var(--color-surface, var(--color-bg))}.px-shell>[data-shell-area=content],.px-portal-content{flex:1 1 auto;min-width:0}.px-nav-sidebar .px-nav-group-label{font-weight:var(--weight-semibold);color:var(--color-text-muted);text-transform:uppercase;font-size:var(--text-xs);letter-spacing:.04em}.px-nav-sidebar a.px-nav-item{display:block;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm, 6px);color:var(--color-text);text-decoration:none;cursor:pointer}.px-nav-sidebar a.px-nav-item:hover{background:var(--color-surface-hover, rgba(128, 128, 128, .12))}.px-nav-sidebar a.px-nav-item[aria-current=page]{background:var(--color-accent-soft, rgba(59, 130, 246, .15));color:var(--color-accent, #3b82f6);font-weight:var(--weight-semibold)}.px-login input,.px-login button,.px-portal-header button{display:block;width:100%;margin:var(--space-2) 0;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm, 6px);border:1px solid var(--color-border, rgba(128, 128, 128, .3));background:var(--color-surface, #fff);color:var(--color-text);font:inherit}.px-portal-header button{width:auto}.px-login button,.px-portal-header button{cursor:pointer;background:var(--color-accent, #3b82f6);color:#fff;border:none}.px-login-error{color:var(--color-danger, #dc2626);font-size:var(--text-sm)}:focus-visible{outline:2px solid var(--color-accent, #3b82f6);outline-offset:2px}@media (max-width: 720px){.px-shell{flex-direction:column}.px-shell>[data-region=sidebar],.px-shell>.px-nav-sidebar,.px-shell aside{width:100%;border-right:none;border-bottom:1px solid var(--color-border, rgba(128, 128, 128, .2))}.px-nav-sidebar .px-nav-group-children{display:flex;flex-wrap:wrap;gap:var(--space-2)}}@media (prefers-reduced-motion: reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}.px-mp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-4);margin-top:var(--space-4)}.px-product-card{border:1px solid var(--color-border, rgba(128, 128, 128, .25));border-radius:var(--radius-md, 10px);padding:var(--space-4);background:var(--color-surface, #fff)}.px-product-card h3{margin:0 0 var(--space-2) 0;font-size:var(--text-lg)}.px-product-card p{color:var(--color-text-muted);font-size:var(--text-sm);min-height:2.4em}.px-meta{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:var(--space-2) 0;font-size:var(--text-xs)}.px-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3)}.px-actions button{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm, 6px);border:1px solid var(--color-border, rgba(128, 128, 128, .3));background:var(--color-accent, #3b82f6);color:#fff;cursor:pointer;font:inherit;font-size:var(--text-sm)}.px-actions button:disabled{opacity:.5;cursor:not-allowed}.px-reality-badge,.px-installed-badge,.px-trust,.px-commercial,.px-cert{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:var(--text-xs);border:1px solid var(--color-border, rgba(128, 128, 128, .3))}.px-reality-badge[data-reality=proven]{background:#22c55e26;color:#15803d;border-color:#22c55e}.px-reality-badge[data-reality=not-proven]{background:#ef444426;color:#b91c1c;border-color:#ef4444}.px-reality-badge[data-reality=unknown]{background:#eab30826;color:#a16207;border-color:#eab308}.px-installed-badge[data-installed=yes]{background:#22c55e1a}.px-installed-badge[data-installed=no]{background:#8080801a}.px-installed{list-style:none;padding:0;margin:var(--space-4) 0;display:flex;flex-direction:column;gap:var(--space-3)}.px-installed li{border:1px solid var(--color-border, rgba(128, 128, 128, .25));border-radius:var(--radius-md, 10px);padding:var(--space-4);background:var(--color-surface, #fff)}.px-installed-head{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.px-installed-meta{display:flex;flex-wrap:wrap;gap:var(--space-4);margin:var(--space-2) 0;font-size:var(--text-xs);color:var(--color-text-muted)}.px-installed-meta code{font-family:var(--font-mono, monospace);background:#8080801f;padding:1px 6px;border-radius:4px}.px-reality-summary{margin:var(--space-4) 0}.px-reality-counts{display:flex;flex-wrap:wrap;gap:var(--space-4);font-weight:var(--weight-semibold);margin-top:var(--space-2)}.px-dashboard-reality{margin-top:var(--space-6);border-top:1px solid var(--color-border, rgba(128, 128, 128, .2));padding-top:var(--space-4)}.px-reality-module-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.px-reality-module-list li{display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border, rgba(128, 128, 128, .2));border-radius:var(--radius-sm, 6px)}.px-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.px-modal{background:var(--color-surface, #fff);color:var(--color-text);border-radius:var(--radius-md, 12px);padding:var(--space-6);max-width:620px;width:92%;max-height:88vh;overflow:auto;position:relative}.px-modal-close{position:absolute;top:var(--space-3);right:var(--space-3);border:none;background:transparent;font-size:1.2rem;cursor:pointer;color:var(--color-text-muted)}.px-reality-detail section{margin:var(--space-3) 0;border-top:1px solid var(--color-border, rgba(128, 128, 128, .2));padding-top:var(--space-2)}.px-reality-ids{display:flex;flex-wrap:wrap;gap:var(--space-4);margin:var(--space-2) 0;font-size:var(--text-xs)}.px-reality-ids code{font-family:var(--font-mono, monospace);background:#8080801f;padding:1px 6px;border-radius:4px;word-break:break-all}.px-reality-detail ul{list-style:none;padding:0;margin:var(--space-2) 0}.px-reality-detail li{padding:2px 0;font-size:var(--text-sm)}.px-reality-diagnose{background:#8080800f;border-radius:var(--radius-sm, 6px);padding:var(--space-3)}.px-diag-reason{font-size:var(--text-xs);color:var(--color-text-muted);margin-left:var(--space-4)}.px-reality-flow{list-style:none;counter-reset:stage;padding:0;margin:var(--space-3) 0;display:flex;flex-direction:column;gap:var(--space-2)}.px-reality-flow li{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border, rgba(128, 128, 128, .25));border-radius:var(--radius-sm, 6px)}.px-reality-flow li[data-done=yes]{border-color:#22c55e;background:#22c55e14}.px-reality-flow li[data-done=no]{border-color:#eab30880;background:#eab3080f}.px-flow-idx{width:1.6rem;height:1.6rem;border-radius:999px;background:var(--color-accent, #3b82f6);color:#fff;display:flex;align-items:center;justify-content:center;font-size:var(--text-xs);flex-shrink:0}.px-flow-label{font-weight:var(--weight-semibold);min-width:140px}.px-flow-note{font-size:var(--text-xs);color:var(--color-text-muted)}.px-note{font-size:var(--text-xs);color:var(--color-text-muted);font-style:italic}.px-cust-dashboard,.px-marketplace-view,.px-apps-view,.px-detail-view,.px-help{max-width:1080px;margin:0 auto}.px-cust-dashboard h1,.px-marketplace-view h1,.px-apps-view h1,.px-detail-view h1,.px-help h1{font-size:var(--text-2xl, 1.75rem);font-weight:700;margin:0 0 var(--space-2);color:var(--color-text)}.px-tenant-name{color:var(--color-text-muted);margin:0 0 var(--space-6)}.px-sub{color:var(--color-text-muted);margin:0 0 var(--space-5)}.px-app-grid{display:grid;grid-template-columns:1fr;gap:var(--space-4)}@media (min-width: 640px){.px-app-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 960px){.px-app-grid{grid-template-columns:repeat(3,1fr)}}.px-app-card,.px-mp-card{display:flex;flex-direction:column;gap:var(--space-3);background:var(--color-surface, #fff);border:1px solid var(--color-border, #e5e7eb);border-radius:var(--radius-lg, 14px);padding:var(--space-5);box-shadow:0 1px 3px #0000000a;transition:box-shadow .15s ease,transform .15s ease}.px-app-card:hover,.px-mp-card:hover{box-shadow:0 6px 18px #00000014;transform:translateY(-2px)}.px-app-icon{font-size:2.4rem;line-height:1}.px-app-name{font-size:var(--text-lg, 1.15rem);font-weight:700;margin:0}.px-app-desc{color:var(--color-text-muted);margin:0;font-size:var(--text-sm)}.px-features{margin:var(--space-2) 0 0;padding-left:1.1rem;color:var(--color-text-muted);font-size:var(--text-sm)}.px-features li{margin:2px 0}.px-app-actions{display:flex;gap:var(--space-2);margin-top:auto;flex-wrap:wrap}.px-cta-primary{background:var(--color-accent, #16a34a);color:#fff;border:none;border-radius:var(--radius-md, 9px);padding:.6rem 1.1rem;font-weight:600;cursor:pointer;font-size:var(--text-sm)}.px-cta-primary:hover{filter:brightness(1.05)}.px-cta-ghost{background:transparent;color:var(--color-accent, #16a34a);border:1px solid var(--color-border, #e5e7eb);border-radius:var(--radius-md, 9px);padding:.6rem 1.1rem;font-weight:600;cursor:pointer;font-size:var(--text-sm)}.px-cta-ghost:hover{background:#00000008}.px-cust-status{display:inline-flex;align-items:center;gap:.35rem;font-size:var(--text-sm);font-weight:600;padding:.25rem .6rem;border-radius:999px}.px-cust-status.tone-ready{background:#22c55e26;color:#15803d}.px-cust-status.tone-checking{background:#eab30826;color:#a16207}.px-cust-status.tone-notready{background:#ef444426;color:#b91c1c}.px-dash-summary{margin-top:var(--space-6)}.px-dash-count{font-size:var(--text-lg, 1.15rem);font-weight:600}.px-dash-list{list-style:none;padding:0;display:grid;gap:var(--space-2)}.px-dash-list li{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-surface,#fff);border:1px solid var(--color-border,#e5e7eb);border-radius:var(--radius-md, 9px)}.px-empty-state{text-align:center;padding:var(--space-8) var(--space-4)}.px-empty-title{font-size:var(--text-lg, 1.15rem);font-weight:700;margin:0 0 var(--space-2)}.px-empty-action{color:var(--color-text-muted);margin:0 0 var(--space-4)}.px-loading{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-4);color:var(--color-text-muted)}.px-spinner{width:1.1rem;height:1.1rem;border:2px solid var(--color-border,#e5e7eb);border-top-color:var(--color-accent,#16a34a);border-radius:999px;animation:px-spin .8s linear infinite}@keyframes px-spin{to{transform:rotate(360deg)}}.px-success{color:#15803d;font-weight:600;padding:var(--space-4)}.px-error-state{background:#ef444414;border:1px solid rgba(239,68,68,.3);border-radius:var(--radius-md, 9px);padding:var(--space-4)}.px-error-title{font-weight:700;color:#b91c1c;margin:0 0 .25rem}.px-error-detail{color:var(--color-text-muted);margin:0;font-size:var(--text-sm)}.px-install-flow{max-width:480px;margin:var(--space-6) auto;background:var(--color-surface,#fff);border:1px solid var(--color-border,#e5e7eb);border-radius:var(--radius-lg, 14px);padding:var(--space-6);text-align:center}.px-diagnostic{margin-top:var(--space-5);border-top:1px dashed var(--color-border,#e5e7eb);padding-top:var(--space-3)}.px-diagnostic summary{cursor:pointer;font-weight:600;color:var(--color-text-muted)}.px-diagnostic ul{list-style:none;padding:0;font-size:var(--text-xs);color:var(--color-text-muted)}.px-diagnostic code{background:#0000000d;padding:0 .3rem;border-radius:4px}.px-help ol,.px-help ul{color:var(--color-text);line-height:1.7}.px-launch-error{color:var(--color-danger, #dc2626);background:#ef44441a;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm, 6px)}
