:root{--portal-sidebar-w:248px;--portal-sidebar-collapsed:64px;--portal-header-h:56px;--portal-rail-h:36px}.portal{min-height:100vh;background:var(--bg-base);color:var(--text-primary);display:grid;grid-template-columns:var(--portal-sidebar-w) 1fr;grid-template-rows:var(--portal-rail-h) var(--portal-header-h) 1fr;grid-template-areas:"rail rail" "sidebar header" "sidebar main";font-feature-settings:"ss01","cv11"}.portal[data-collapsed=true]{grid-template-columns:var(--portal-sidebar-collapsed) 1fr}.p-rail{grid-area:rail;background:var(--bg-graphite);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 16px;gap:16px;font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;color:var(--text-muted);position:relative;overflow:hidden;white-space:nowrap}.p-rail-left,.p-rail-right{flex-wrap:nowrap}@media (max-width:1100px){.p-rail-left .p-rail-divider:nth-child(n+5),.p-rail-left .p-rail-item:nth-child(n+5){display:none}}.p-rail-left,.p-rail-right{display:flex;align-items:center;gap:14px}.p-rail-right{margin-left:auto}.p-rail-item{display:flex;align-items:center;gap:6px;text-transform:uppercase}.p-rail-item .label{color:var(--text-faint)}.p-rail-item .val{color:var(--text-secondary)}.p-rail-item .dot{width:6px;height:6px;border-radius:50%;background:var(--status-active);box-shadow:0 0 8px var(--status-active);animation:pulseDot 2s ease-in-out infinite}.p-rail-item.warn .dot{background:var(--status-warn);box-shadow:0 0 8px var(--status-warn)}.p-rail-divider{color:var(--text-faint);opacity:.5}.p-sidebar{grid-area:sidebar;background:var(--bg-graphite);border-right:1px solid var(--line);flex-direction:column;overflow:hidden}.p-sidebar,.p-sidebar-brand{display:flex;position:relative}.p-sidebar-brand{height:var(--portal-header-h);align-items:center;gap:10px;padding:0 18px;border-bottom:1px solid var(--line)}.p-sidebar-brand .b-name{font-size:14px;font-weight:600;letter-spacing:-.01em;display:flex;flex-direction:column;line-height:1.1}.p-sidebar-brand .b-name small{font-family:var(--font-mono);font-size:9px;letter-spacing:.18em;color:var(--text-faint);text-transform:uppercase;margin-top:2px}.portal[data-collapsed=true] .b-name{display:none}.p-tenant{margin:12px 14px 4px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg-base);display:flex;align-items:center;gap:10px;cursor:pointer;transition:border-color .15s ease}.p-tenant:hover{border-color:var(--accent)}.p-tenant .t-mark{width:28px;height:28px;border-radius:6px;background:linear-gradient(135deg,var(--accent),var(--accent-strong));display:grid;place-items:center;font-family:var(--font-mono);font-size:11px;font-weight:700;color:#021121;flex:none}.p-tenant .t-meta{font-size:12px;line-height:1.2;flex:1;min-width:0;overflow:hidden}.p-tenant .t-meta .t-name{font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.p-tenant .t-meta .t-env{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase}.p-tenant .t-chev{color:var(--text-muted)}.portal[data-collapsed=true] .p-tenant .t-chev,.portal[data-collapsed=true] .p-tenant .t-meta{display:none}.portal[data-collapsed=true] .p-tenant{justify-content:center;padding:8px}.p-nav{flex:1;overflow-y:auto;padding:12px 8px 16px;display:flex;flex-direction:column;gap:2px}.p-nav-section{font-family:var(--font-mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-faint);padding:14px 12px 6px}.portal[data-collapsed=true] .p-nav-section{text-align:center;padding:14px 4px 6px;font-size:8px;color:transparent;border-top:1px solid var(--line);margin:6px 8px 0;height:1px;overflow:hidden}.p-nav-item{display:flex;align-items:center;gap:12px;padding:8px 12px;border-radius:var(--radius-sm);font-size:13px;color:var(--text-secondary);cursor:pointer;position:relative;transition:background .12s ease,color .12s ease;white-space:nowrap}.p-nav-item:hover{background:var(--bg-base);color:var(--text-primary)}.p-nav-item.active{background:var(--accent-soft);color:var(--text-primary)}.p-nav-item.active:before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:2px;background:var(--accent);border-radius:2px}.p-nav-item .icon{width:18px;height:18px;flex:none;color:var(--text-muted);display:grid;place-items:center}.p-nav-item.active .icon{color:var(--accent)}.p-nav-item .badge{margin-left:auto;font-family:var(--font-mono);font-size:10px;padding:2px 6px;border-radius:4px;background:var(--bg-base);border:1px solid var(--line);color:var(--text-muted);letter-spacing:.04em}.p-nav-item .badge.live{color:var(--status-active);border-color:rgba(34,197,94,.3)}.p-nav-item .badge.warn{color:var(--status-warn);border-color:rgba(245,158,11,.3)}.portal[data-collapsed=true] .p-nav-item{justify-content:center;padding:10px}.portal[data-collapsed=true] .p-nav-item .badge,.portal[data-collapsed=true] .p-nav-item .label{display:none}.p-sidebar-foot{border-top:1px solid var(--line);padding:10px 12px}.p-sidebar-foot,.p-user-chip{display:flex;align-items:center;gap:10px}.p-user-chip{flex:1;min-width:0}.p-avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#6366F1,#38BDF8);display:grid;place-items:center;color:#021121;font-family:var(--font-mono);font-weight:700;font-size:12px;flex:none}.p-user-chip .u-meta{font-size:12px;line-height:1.2;min-width:0}.p-user-chip .u-meta .u-name{color:var(--text-primary);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.p-user-chip .u-meta .u-role{font-family:var(--font-mono);font-size:10px;color:var(--text-muted)}.portal[data-collapsed=true] .p-user-chip .u-meta{display:none}.p-icon-btn{width:30px;height:30px;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--text-muted);display:grid;place-items:center;cursor:pointer;transition:all .15s ease}.p-icon-btn:hover{background:var(--bg-base);color:var(--text-primary);border-color:var(--line)}.p-header{grid-area:header;background:var(--bg-base);border-bottom:1px solid var(--line);padding:0 24px;gap:16px;position:sticky;top:var(--portal-rail-h);z-index:5}.p-crumbs,.p-header{display:flex;align-items:center}.p-crumbs{gap:8px;font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.p-crumbs .sep{color:var(--text-faint);opacity:.5}.p-crumbs .current{color:var(--text-primary)}.p-search{flex:1;max-width:480px;margin-left:24px;display:flex;align-items:center;gap:10px;padding:7px 12px;background:var(--bg-graphite);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--text-muted);font-size:13px;cursor:pointer;transition:border-color .15s ease;white-space:nowrap;overflow:hidden}.p-search>span:not(.kbd){overflow:hidden;text-overflow:ellipsis;flex:1}.p-search:hover{border-color:var(--text-faint);color:var(--text-secondary)}.p-search .kbd{margin-left:auto;font-family:var(--font-mono);font-size:10px;padding:2px 6px;border:1px solid var(--line);border-radius:4px;background:var(--bg-base);color:var(--text-muted)}.p-header-actions{margin-left:auto;display:flex;align-items:center;gap:8px}.p-theme-toggle{display:inline-flex;align-items:center;border:1px solid var(--line);background:var(--bg-graphite);border-radius:var(--radius-sm);padding:3px;gap:2px}.p-theme-toggle button{width:28px;height:24px;border:0;background:transparent;border-radius:4px;color:var(--text-muted);display:grid;place-items:center;cursor:pointer;transition:all .15s ease}.p-theme-toggle button.active{background:var(--accent-soft);color:var(--accent)}.p-notif-btn{position:relative}.p-notif-btn .ndot{position:absolute;top:4px;right:4px;width:7px;height:7px;background:var(--accent);border-radius:50%;border:2px solid var(--bg-base)}.p-main{grid-area:main;overflow-y:auto;padding:28px 32px 64px;background:var(--bg-base)}.p-page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:28px;flex-wrap:wrap}.p-page-head .ph-meta{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted);margin-bottom:8px;display:flex;align-items:center;gap:10px}.p-page-head .ph-meta .dot{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent-glow)}.p-page-head h1{font-size:30px;letter-spacing:-.02em;font-weight:500;line-height:1.1;margin:0}.p-page-head .ph-sub{color:var(--text-muted);font-size:14px;margin-top:6px;max-width:540px}.p-page-head .ph-actions{display:flex;gap:10px;align-items:center}.p-kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:24px}@media (max-width:1100px){.p-kpi-row{grid-template-columns:repeat(2,1fr)}}.p-kpi{background:var(--bg-graphite);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;position:relative;overflow:hidden}.p-kpi-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted);display:flex;align-items:center;gap:8px}.p-kpi-label .dot{width:5px;height:5px;border-radius:50%;background:var(--status-active);box-shadow:0 0 6px var(--status-active)}.p-kpi-value{font-size:32px;font-weight:500;letter-spacing:-.025em;margin-top:10px;font-feature-settings:"tnum";display:flex;align-items:baseline;gap:8px}.p-kpi-value .unit{font-size:13px;color:var(--text-muted);font-weight:400;letter-spacing:0}.p-kpi-trend{font-family:var(--font-mono);font-size:11px;margin-top:8px;display:flex;align-items:center;gap:8px;color:var(--text-muted)}.p-kpi-trend .delta.up{color:var(--status-active)}.p-kpi-trend .delta.down{color:var(--status-error)}.p-kpi-spark{position:absolute;right:12px;bottom:10px;width:90px;height:32px;opacity:.6}.p-grid{display:grid;gap:18px;margin-bottom:24px}.p-grid.cols-3{grid-template-columns:2fr 1fr}.p-grid.cols-2{grid-template-columns:1fr 1fr}@media (max-width:1100px){.p-grid.cols-2,.p-grid.cols-3{grid-template-columns:1fr}}.p-card{background:var(--bg-graphite);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column}.p-card-head{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px}.p-card-head h3{font-size:14px;font-weight:500;letter-spacing:-.005em;margin:0;color:var(--text-primary)}.p-card-head .meta{font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted)}.p-card-head .actions{margin-left:auto;display:flex;gap:6px;align-items:center}.p-card-body{padding:20px;flex:1}.p-card-body.flush{padding:0}.p-modules-table{width:100%;border-collapse:collapse;font-size:13px}.p-modules-table th{text-align:left;font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted);font-weight:400;padding:12px 20px;border-bottom:1px solid var(--line);background:var(--bg-base)}.p-modules-table td{padding:14px 20px;border-bottom:1px solid var(--line-soft);color:var(--text-secondary);vertical-align:middle}.p-modules-table tr:last-child td{border-bottom:0}.p-modules-table tr:hover td{background:var(--bg-base)}.p-modules-table .m-name{display:flex;align-items:center;gap:12px;color:var(--text-primary);font-weight:500}.p-modules-table .m-mark{width:28px;height:28px;border-radius:6px;background:var(--bg-elev);border:1px solid var(--line);display:grid;place-items:center;color:var(--accent);flex:none}.p-modules-table .m-id{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);display:block;margin-top:2px;letter-spacing:.04em}.p-status-pill{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding:3px 8px;border-radius:4px;border:1px solid var(--line);background:var(--bg-base)}.p-status-pill .dot{width:5px;height:5px;border-radius:50%}.p-status-pill.live{color:var(--status-active);border-color:rgba(34,197,94,.25);background:rgba(34,197,94,.06)}.p-status-pill.live .dot{background:var(--status-active);box-shadow:0 0 6px var(--status-active)}.p-status-pill.build{color:var(--accent);border-color:var(--accent-soft);background:var(--accent-soft)}.p-status-pill.build .dot{background:var(--accent);box-shadow:0 0 6px var(--accent-glow);animation:pulseDot 1.5s ease-in-out infinite}.p-status-pill.warn{color:var(--status-warn);border-color:rgba(245,158,11,.25);background:rgba(245,158,11,.06)}.p-status-pill.warn .dot{background:var(--status-warn)}.p-status-pill.idle{color:var(--text-muted)}.p-status-pill.idle .dot{background:var(--text-faint)}.p-status-pill.error{color:var(--status-error);border-color:rgba(239,68,68,.25);background:rgba(239,68,68,.06)}.p-status-pill.error .dot{background:var(--status-error)}.p-mini-bar{width:100%;height:4px;background:var(--bg-base);border-radius:2px;overflow:hidden;position:relative}.p-mini-bar>i{position:absolute;inset:0;background:linear-gradient(90deg,var(--accent),var(--accent-strong));border-radius:2px;transform-origin:left}.p-row-actions{display:flex;gap:4px;justify-content:flex-end}.p-feed{display:flex;flex-direction:column}.p-feed-item{display:grid;grid-template-columns:16px 1fr auto;gap:12px;padding:12px 20px;border-bottom:1px solid var(--line-soft);font-size:13px;align-items:flex-start}.p-feed-item:last-child{border-bottom:0}.p-feed-item .icn{margin-top:3px;width:16px;height:16px;display:grid;place-items:center;color:var(--text-muted)}.p-feed-item.success .icn{color:var(--status-active)}.p-feed-item.warn .icn{color:var(--status-warn)}.p-feed-item.info .icn{color:var(--accent)}.p-feed-item.error .icn{color:var(--status-error)}.p-feed-item .body{color:var(--text-secondary);line-height:1.5}.p-feed-item .body b{color:var(--text-primary);font-weight:500}.p-feed-item .body .src,.p-feed-item .ts{font-family:var(--font-mono);font-size:11px;color:var(--text-muted)}.p-feed-item .ts{white-space:nowrap}.p-sysmap{padding:18px;background:radial-gradient(ellipse 80% 60% at 50% 20%,var(--accent-soft),transparent 60%),var(--bg-graphite);border-top:0;position:relative;min-height:280px}.p-sysmap-svg{width:100%;height:auto;display:block}.p-queue{display:flex;flex-direction:column}.p-queue-item{padding:14px 20px;border-bottom:1px solid var(--line-soft);display:grid;grid-template-columns:1fr auto;gap:10px 16px;align-items:center}.p-queue-item:last-child{border-bottom:0}.p-queue-item .q-name{font-size:13px;color:var(--text-primary);font-weight:500}.p-queue-item .q-meta{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);margin-top:3px}.p-queue-item .q-bar{grid-column:1/-1;margin-top:4px}.p-health{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;padding:20px}.p-gauge{text-align:center;position:relative}.p-gauge svg{width:100%;height:auto;max-width:120px}.p-gauge .g-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted);margin-top:8px}.p-gauge .g-value{font-size:22px;font-weight:500;letter-spacing:-.02em;font-feature-settings:"tnum"}.p-integrations{display:grid;grid-template-columns:repeat(2,1fr);gap:0}.p-integration{padding:14px 20px;border-bottom:1px solid var(--line-soft);border-right:1px solid var(--line-soft);display:flex;align-items:center;gap:12px}.p-integration:nth-child(2n){border-right:0}.p-integration .iglyph{width:32px;height:32px;border-radius:6px;background:var(--bg-base);border:1px solid var(--line);display:grid;place-items:center;font-family:var(--font-mono);font-size:11px;font-weight:700;color:var(--text-secondary);flex:none}.p-integration .imeta{flex:1;min-width:0}.p-integration .iname{font-size:13px;color:var(--text-primary);font-weight:500}.p-integration .istat{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);margin-top:2px;letter-spacing:.06em}.p-empty{padding:40px 20px;text-align:center;color:var(--text-muted);font-size:13px}.p-toolbar{display:flex;align-items:center;gap:10px;padding:0 0 16px;flex-wrap:wrap}.p-tabs{display:inline-flex;gap:2px;background:var(--bg-graphite);border:1px solid var(--line);border-radius:var(--radius-sm);padding:3px}.p-tabs button{border:0;background:transparent;font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);padding:6px 12px;border-radius:4px;cursor:pointer;transition:all .15s ease}.p-tabs button.active{background:var(--accent-soft);color:var(--accent)}.p-tabs button:hover:not(.active){color:var(--text-primary)}.p-search-mini{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--bg-graphite);border:1px solid var(--line);border-radius:var(--radius-sm);font-size:12px;color:var(--text-muted);width:220px}.p-search-mini input{background:transparent;border:0;outline:0;color:var(--text-primary);width:100%;font-family:inherit;font-size:12px}.p-notif-panel{position:absolute;top:calc(100% + 8px);right:0;width:360px;background:var(--bg-graphite);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 18px 40px -12px rgba(0,0,0,.5);z-index:30;overflow:hidden}.p-notif-panel .nph{padding:12px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;font-size:13px}.p-notif-panel .nph small{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;color:var(--text-muted);text-transform:uppercase}@media (max-width:800px){.portal{grid-template-columns:0 1fr}.p-sidebar{position:fixed;left:0;top:var(--portal-rail-h);bottom:0;width:var(--portal-sidebar-w);z-index:40;transform:translateX(-100%);transition:transform .2s ease}.portal[data-mobile-open=true] .p-sidebar{transform:translateX(0)}.p-search{display:none}}html[data-theme=light] .p-card,html[data-theme=light] .p-kpi,html[data-theme=light] .p-rail,html[data-theme=light] .p-sidebar{background:#FFFFFF}html[data-theme=light] .p-header{background:#F4F6FA}html[data-theme=light] .p-search{background:#FFFFFF}html[data-theme=light] .p-tenant{background:#F8FAFC}html[data-theme=light] .p-search .kbd,html[data-theme=light] .p-status-pill{background:#F4F6FA}html[data-theme=light] .p-modules-table th,html[data-theme=light] .p-modules-table tr:hover td{background:#F8FAFC}html[data-theme=light] .p-mini-bar{background:#EEF2F7}html[data-theme=light] .p-icon-btn:hover{background:#F4F6FA}html[data-theme=light] .p-avatar,html[data-theme=light] .p-tenant .t-mark{color:#FFFFFF}html[data-theme=light] .p-sysmap{background:radial-gradient(ellipse 80% 60% at 50% 20%,var(--accent-soft),transparent 60%),#FFFFFF}.portal-login{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(ellipse 60% 40% at 50% 30%,var(--accent-soft),transparent 70%),var(--bg-base)}.portal-login-card{width:100%;max-width:420px}.portal-login-tabs{display:inline-flex;gap:2px;background:var(--bg-graphite);border:1px solid var(--line);border-radius:var(--radius-sm);padding:3px;margin-bottom:18px;width:100%}.portal-login-tabs button{flex:1;border:0;background:transparent;font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);padding:7px 12px;border-radius:4px;cursor:pointer;transition:all .15s ease}.portal-login-tabs button.active{background:var(--accent-soft);color:var(--accent)}.portal-login-tabs button:hover:not(.active){color:var(--text-primary)}.cx-form{gap:14px}.cx-field,.cx-form{display:flex;flex-direction:column;width:100%}.cx-field{gap:6px;min-width:0}.cx-field-label{font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted)}.cx-field-input,input.cx-field-input,select.cx-field-input,textarea.cx-field-input{display:block;width:100%;box-sizing:border-box;background:var(--bg-base);border:1px solid var(--line);border-radius:8px;padding:11px 14px;color:var(--text-primary);font-size:14px;font-family:inherit;line-height:1.4;outline:0;appearance:none;-webkit-appearance:none;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}textarea.cx-field-input{resize:vertical}.cx-field-input::placeholder{color:var(--text-faint);opacity:1}.cx-field-input:focus,.cx-field-input:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.cx-field-input:disabled{opacity:.55;cursor:not-allowed}.cx-field-input:-webkit-autofill,.cx-field-input:-webkit-autofill:focus,.cx-field-input:-webkit-autofill:hover{-webkit-text-fill-color:var(--text-primary);-webkit-box-shadow:0 0 0 1000px var(--bg-base) inset;caret-color:var(--text-primary);transition:background-color 9999s ease-in-out 0s}.portal-login-card .cx-field,.portal-login-card .cx-field-input,.portal-login-card .cx-form{width:100%}