:root{--oecs-purple-950:#18074d;--oecs-purple-900:#21105f;--oecs-purple-800:#2e147b;--oecs-purple-700:#3e1b9f;--oecs-purple-600:#5126be;--oecs-purple-500:#6540cf;--oecs-purple-400:#8064dc;--oecs-purple-300:#a994ea;--oecs-purple-200:#cec2f5;--oecs-purple-100:#ece7fc;--oecs-purple-050:#f7f4ff;--oecs-green-800:#146a31;--oecs-green-700:#18833a;--oecs-green-600:#1d9d44;--oecs-green-500:#3dba52;--oecs-green-400:#65cb70;--oecs-green-300:#98dc9d;--oecs-green-200:#c9ecca;--oecs-green-100:#e9f7e9;--oecs-cyan-600:#0cbed6;--oecs-blue-600:#176beb;--oecs-amber-600:#e59b19;--oecs-red-600:#d92d20;--surface-page:#f5f3fc;--surface-card:#fff;--surface-card-soft:#fbfaff;--surface-muted:#f0edf9;--text-heading:#191333;--text-body:#393451;--text-muted:#6c6683;--text-soft:#918ba4;--border-soft:#e6e0f2;--border-medium:#d4c9ea;--shadow-xs:0 1px 2px #21105f0a;--shadow-sm:0 4px 16px #21105f12;--shadow-md:0 10px 30px #21105f1a;--shadow-lg:0 20px 50px #21105f21;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:20px;--radius-pill:999px;--curve-purple:#6540cf2e;--curve-green:#3dba522e}:root[data-theme=light],:root:not([data-theme=dark]){--bg:var(--surface-page);--text:var(--text-body);--border:var(--border-soft);--muted:var(--text-muted);--accent:var(--oecs-purple-700);--accent-soft:var(--oecs-purple-100);--card:var(--surface-card);--card-alt:var(--surface-card-soft);--field-bg:var(--surface-card-soft);--code-bg:var(--surface-muted);--drop-bg:#fefdff;--drop-bg-active:var(--oecs-purple-050);--good:var(--oecs-green-700);--bad:var(--oecs-red-600);--shadow:var(--shadow-sm);--elev-sm:var(--shadow-sm);--elev-md:var(--shadow-md)}.portal-page{min-height:100vh;color:var(--text-body);font-family:var(--font-portal,"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);background:radial-gradient(circle at 78% 20%,#6540cf14,#0000 32%),linear-gradient(135deg,#fbfaff 0%,#f4f1fc 48%,#f8f7fd 100%);position:relative;overflow-x:clip}.portal-container{z-index:2;width:min(1320px,100% - 64px);margin-inline:auto;position:relative}@media (max-width:1024px){.portal-container{width:min(100% - 40px,1320px)}}@media (max-width:640px){.portal-container{width:calc(100% - 32px)}}.portal-header{z-index:5;padding-top:30px;padding-bottom:18px;position:relative}.portal-header__row{justify-content:space-between;align-items:flex-start;gap:32px;display:flex}.portal-header__brand{align-items:center;gap:14px;display:flex}.portal-header__logo{width:auto;height:44px;display:block}.portal-header__title{color:var(--text-heading);letter-spacing:-.02em;margin:0;font-size:clamp(1.75rem,2.5vw,2.125rem);font-weight:700;line-height:1.15}.portal-header__subtitle{color:var(--text-muted);max-width:640px;margin:8px 0 0;font-size:15px;line-height:1.45}.portal-header__user{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:10px;display:flex}.portal-header__user-row{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}.portal-header__role{color:var(--text-muted);font-size:13px}.portal-header__scope{color:var(--text-heading);font-size:14px;font-weight:600}@media (max-width:768px){.portal-header__row{flex-direction:column}.portal-header__user{align-items:flex-start;width:100%}.portal-header__user-row{justify-content:flex-start}}.portal-nav{border-bottom:1px solid var(--border-soft);-webkit-overflow-scrolling:touch;gap:4px;margin-bottom:28px;display:flex;overflow-x:auto}.portal-nav__item{cursor:pointer;min-height:44px;color:var(--text-muted);white-space:nowrap;background:0 0;border:none;border-bottom:3px solid #0000;margin-bottom:-1px;padding:12px 18px;font-family:inherit;font-size:16px;font-weight:600;transition:color .18s,border-color .18s}.portal-nav__item:hover{color:var(--oecs-purple-600)}.portal-nav__item--active{color:var(--oecs-purple-700);border-bottom-color:var(--oecs-purple-600)}.portal-nav__item:focus-visible{outline:2px solid var(--oecs-purple-600);outline-offset:2px;border-radius:var(--radius-sm)}.portal-subnav{border-bottom:1px solid var(--border-soft);gap:8px;margin-bottom:4px;display:flex}.portal-subnav__item{cursor:pointer;min-height:40px;color:var(--text-muted);background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 16px;font-family:inherit;font-size:15px;font-weight:600;transition:color .18s,border-color .18s}.portal-subnav__item--active{color:var(--oecs-purple-700);border-bottom-color:var(--oecs-purple-600)}.portal-btn{cursor:pointer;box-sizing:border-box;border-radius:11px;justify-content:center;align-items:center;gap:8px;font-family:inherit;font-size:14px;font-weight:600;line-height:1.2;text-decoration:none;transition:background .18s,border-color .18s,box-shadow .18s,filter .18s;display:inline-flex}.portal-btn--primary{color:#fff;background:linear-gradient(135deg, var(--oecs-purple-700), var(--oecs-purple-600));border:none;min-height:48px;padding:0 22px;box-shadow:0 8px 20px #5126be2e}.portal-btn--primary:hover:not(:disabled){filter:brightness(1.06);box-shadow:0 10px 24px #5126be38}.portal-btn--primary:disabled{opacity:.65;background:var(--oecs-purple-200);color:var(--text-muted);box-shadow:none;cursor:not-allowed}.portal-btn--secondary{min-height:44px;color:var(--oecs-purple-700);background:var(--surface-card);border:1px solid var(--border-medium);padding:0 16px}.portal-btn--secondary:hover:not(:disabled){background:var(--oecs-purple-050);border-color:var(--oecs-purple-400)}.portal-btn--signout{min-height:42px;color:var(--text-heading);background:var(--surface-card);border:1px solid var(--border-medium);padding:0 16px}.portal-btn--signout:hover{background:var(--oecs-purple-050);border-color:var(--oecs-purple-400)}.portal-btn--full{width:100%}.portal-card{z-index:auto;border:1px solid var(--border-soft);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);background:#fffffff0;min-width:0;padding:24px;position:relative;overflow:hidden}.portal-card.portal-kpi-card{isolation:isolate;flex-direction:column;gap:8px;min-height:0;display:flex}.portal-card--metric{padding-top:20px;padding-bottom:20px;overflow:hidden}.portal-card--soft{background:var(--surface-card-soft)}.portal-card--alert{border-color:color-mix(in srgb, var(--oecs-red-600) 35%, var(--border-soft));background:color-mix(in srgb, var(--oecs-red-600) 6%, white)}.portal-page-heading{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:4px;display:flex}.portal-page-heading__left{align-items:flex-start;gap:14px;min-width:0;display:flex}.portal-page-heading__title{color:var(--text-heading);letter-spacing:-.01em;margin:0;font-size:clamp(1.375rem,2vw,1.75rem);font-weight:700}.portal-page-heading__desc{color:var(--text-muted);margin:6px 0 0;font-size:14px;line-height:1.45}.portal-page-heading__actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.portal-icon-tile{border-radius:12px;flex-shrink:0;place-items:center;width:46px;height:46px;display:grid}.portal-icon-tile--purple{background:var(--oecs-purple-100);color:var(--oecs-purple-700)}.portal-icon-tile--green{background:var(--oecs-green-100);color:var(--oecs-green-700)}.portal-icon-tile--blue{background:color-mix(in srgb, var(--oecs-blue-600) 12%, white);color:var(--oecs-blue-600)}.portal-icon-tile--cyan{background:color-mix(in srgb, var(--oecs-cyan-600) 12%, white);color:var(--oecs-cyan-600)}.portal-icon-tile--amber{background:color-mix(in srgb, var(--oecs-amber-600) 14%, white);color:var(--oecs-amber-600)}.portal-metric-strip{grid-template-columns:repeat(6,minmax(0,1fr));gap:0;width:100%;display:grid}@media (max-width:1200px){.portal-metric-cell{padding:8px 12px}}@media (max-width:1024px){.portal-metric-strip{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:16px}}@media (max-width:640px){.portal-metric-strip{grid-template-columns:repeat(2,minmax(0,1fr))}}.portal-metric-cell{border-right:1px solid var(--border-soft);flex-direction:column;gap:4px;min-width:0;padding:8px 16px;display:flex;overflow:hidden}.portal-metric-cell:last-child{border-right:none}@media (max-width:1024px){.portal-metric-cell:nth-child(3),.portal-metric-cell:nth-child(4),.portal-metric-cell:nth-child(5),.portal-metric-cell:nth-child(6){border-right:none}}@media (max-width:640px){.portal-metric-cell{border-right:none;padding:8px 12px}}.portal-metric-cell__value{color:var(--text-heading);letter-spacing:-.02em;text-overflow:ellipsis;font-size:clamp(1.25rem,2.5vw,1.875rem);font-weight:700;line-height:1.1;overflow:hidden}.portal-metric-cell__label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:600}.portal-kpi-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));align-items:stretch;gap:20px;display:grid}.portal-kpi-grid>.portal-kpi-card{min-width:0}.portal-kpi-column{min-width:0;overflow:hidden}.portal-kpi-card{isolation:isolate;flex-direction:column;gap:8px;min-width:0;min-height:0;display:flex;overflow:hidden}.portal-kpi-card__metric{contain:layout paint;flex:0 0 150px;width:100%;height:150px;min-height:150px;max-height:150px;position:relative;overflow:hidden}.portal-kpi-card__metric .portal-chart-wrap{height:150px;max-height:150px}.portal-kpi-card__metric .recharts-responsive-container{height:150px!important;max-height:150px!important}.portal-kpi-card__metric .recharts-wrapper,.portal-kpi-card__metric svg{max-height:150px;overflow:hidden}.portal-kpi-card__metric--value{flex-direction:column;flex:none;justify-content:center;align-items:center;gap:4px;height:auto;min-height:0;max-height:none;padding:4px 0 2px;display:flex}.portal-kpi-card__value{font-size:28px;font-weight:700;line-height:1.1}.portal-kpi-card__value-unit{color:var(--text-muted);margin-left:4px;font-size:15px;font-weight:500}.portal-kpi-card__parity-value{letter-spacing:-.02em;font-size:28px;font-weight:700;line-height:1.1}.portal-kpi-card__parity-hint{color:var(--text-muted);font-size:12px}.portal-kpi-card__title{text-align:center;justify-content:center;align-items:center;font-size:14px;font-weight:600;line-height:1.35;display:flex}.portal-kpi-card__detail{color:var(--text-muted);text-align:center;font-size:12px;line-height:1.45;overflow:hidden}.portal-kpi-card:has(.portal-kpi-card__metric:not(.portal-kpi-card__metric--value)) .portal-kpi-card__title{min-height:2.8em}.portal-kpi-card:has(.portal-kpi-card__metric:not(.portal-kpi-card__metric--value)) .portal-kpi-card__detail{flex:auto;min-height:2.5em}.portal-chart-wrap{width:100%;min-width:0;position:relative;overflow:hidden}.portal-dashboard-split{grid-template-columns:minmax(200px,240px) minmax(0,1fr);align-items:start;gap:20px;display:grid}.portal-dashboard-split>.portal-kpi-column{min-width:0;overflow:hidden}@media (max-width:960px){.portal-dashboard-split{grid-template-columns:1fr}}.portal-dashboard-charts{grid-template-rows:auto auto 1fr;gap:20px;min-width:0;display:grid}.portal-dashboard-charts__row{grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:20px;min-width:0;display:grid}.portal-dashboard-charts__row>.portal-card{min-width:0;overflow:hidden}.portal-territory-card{align-items:flex-start;gap:16px;display:flex}.portal-territory-card__body{min-width:0}.portal-territory-card__label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px;font-size:12px;font-weight:600}.portal-territory-card__value{color:var(--text-heading);font-size:16px;font-weight:600}.portal-territory-card__note{color:var(--text-muted);margin:8px 0 0;font-size:13px;line-height:1.45}.portal-empty{text-align:center;border:2px dashed var(--border-medium);border-radius:var(--radius-lg);background:var(--surface-card-soft);color:var(--text-muted);padding:48px 24px;font-size:14px;line-height:1.5}.portal-empty__icon{color:var(--oecs-purple-300);margin:0 auto 16px}.upload-dropzone{text-align:center;cursor:pointer;background:radial-gradient(circle at 50% 48%,#6540cf0f,#0000 34%),#fefdff;border:2px dashed #6540cf6b;border-radius:20px;flex-direction:column;justify-content:center;align-items:center;min-height:430px;padding:32px 24px;transition:border-color .2s,background .2s,box-shadow .2s;display:flex}.upload-dropzone--active{border-color:var(--oecs-purple-500);background:var(--oecs-purple-050);box-shadow:var(--shadow-sm)}.upload-chip{letter-spacing:.03em;color:var(--oecs-purple-700);background:var(--oecs-purple-100);border:1px solid var(--border-soft);border-radius:var(--radius-pill);padding:4px 12px;font-size:11px;font-weight:600}.portal-table-wrap{min-width:0;overflow-x:auto}.portal-table{border-collapse:collapse;width:100%;font-size:14px}.portal-table th{text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);border-bottom:1px solid var(--border-soft);padding:10px 16px 10px 0;font-size:12px;font-weight:600}.portal-table td{border-top:1px solid var(--border-soft);vertical-align:middle;padding:12px 16px 12px 0}.portal-table th.num,.portal-table td.num{text-align:right}.portal-select{border:1px solid var(--border-medium);border-radius:var(--radius-md);background:var(--surface-card);min-height:46px;color:var(--text-body);max-width:320px;padding:10px 14px;font-family:inherit;font-size:14px}.portal-select:focus-visible{outline:2px solid var(--oecs-purple-600);outline-offset:2px}.portal-approval-summary{grid-template-columns:1fr auto;align-items:flex-start;gap:24px;display:grid}@media (max-width:768px){.portal-approval-summary{grid-template-columns:1fr}}.portal-approval-summary__divider{background:var(--border-soft);align-self:stretch;width:1px}.oecs-map-dots{opacity:.055;z-index:0;pointer-events:none;-webkit-user-select:none;user-select:none;width:390px;position:fixed;top:135px;right:-50px;-webkit-mask-image:linear-gradient(270deg,#000,#00000080 58%,#0000 100%);mask-image:linear-gradient(270deg,#000,#00000080 58%,#0000 100%)}.palm-frond-left{opacity:.055;z-index:0;pointer-events:none;-webkit-user-select:none;user-select:none;width:300px;position:fixed;bottom:-100px;left:-85px;transform:rotate(-5deg)}.palm-frond-right{opacity:.035;z-index:0;pointer-events:none;-webkit-user-select:none;user-select:none;width:280px;position:fixed;bottom:-120px;right:-110px;transform:scaleX(-1)rotate(-8deg)}.background-curves{opacity:.8;z-index:0;pointer-events:none;-webkit-user-select:none;user-select:none;width:1000px;height:500px;position:fixed;top:100px;right:-180px}@media (max-width:480px){.oecs-map-dots{display:none}.palm-frond-left,.palm-frond-right{opacity:.03}}@media (prefers-reduced-motion:reduce){.portal-btn,.portal-nav__item,.upload-dropzone,.portal-nav__item,.portal-subnav__item{transition:none}}.portal-content{z-index:2;gap:24px;display:grid;position:relative}.portal-section-gap{gap:24px;display:grid}.portal-section-gap>*{min-width:0}.portal-card-title{color:var(--text-heading);margin:0 0 12px;font-size:17px;font-weight:600;line-height:1.35}.portal-chart-header{margin-bottom:18px}.portal-chart-header__title{color:var(--text-heading);font-size:16px;font-weight:600}.portal-chart-header__subtitle{color:var(--text-muted);margin-top:2px;font-size:13px}.portal-division-list{gap:14px;display:grid}.portal-division-row__head{justify-content:space-between;align-items:baseline;gap:12px;font-size:13px;display:flex}.portal-division-row__label{color:var(--text-heading);font-weight:500}.portal-division-row__value{color:var(--text-muted);text-align:right;flex-shrink:0}.portal-progress-track{background:var(--surface-muted);border-radius:var(--radius-pill);height:10px;overflow:hidden}.portal-progress-fill{border-radius:var(--radius-pill);height:100%;transition:width .4s}.portal-system-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:16px;display:grid}.portal-system-card{border:1px solid var(--border-soft);border-radius:var(--radius-md);background:var(--surface-card-soft);gap:6px;padding:14px;display:grid}.portal-table tbody tr.portal-table__row--clickable{cursor:pointer;transition:background .15s}.portal-table tbody tr.portal-table__row--clickable:hover{background:var(--oecs-purple-050)}.portal-table tbody tr.portal-table__row--clickable:focus-visible{outline:2px solid var(--oecs-purple-600);outline-offset:-2px}.portal-table__expand{color:var(--text-soft);transition:transform .25s;display:inline-block}.portal-table__expand--open{transform:rotate(90deg)}.portal-table tbody tr.portal-table__detail{background:var(--surface-muted);transition:background .25s}.portal-upload-note{color:var(--text-muted);align-items:flex-start;gap:10px;font-size:13px;line-height:1.45;display:flex}.portal-upload-note svg{color:var(--oecs-green-700);flex-shrink:0;margin-top:1px}.portal-skeleton{background:linear-gradient(90deg, var(--surface-muted) 0%, var(--oecs-purple-100) 50%, var(--surface-muted) 100%);border-radius:var(--radius-md);background-size:200% 100%;min-height:1em;animation:1.2s ease-in-out infinite portal-shimmer}@keyframes portal-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.portal-skeleton{animation:none}.portal-progress-fill{transition:none}}.portal-btn--success{color:var(--oecs-green-800);border-color:var(--oecs-green-600)}.portal-btn--success:hover:not(:disabled){background:var(--oecs-green-100);border-color:var(--oecs-green-700)}.portal-btn--danger{color:var(--oecs-red-600);border-color:color-mix(in srgb, var(--oecs-red-600) 45%, var(--border-medium))}.portal-btn--danger:hover:not(:disabled){background:color-mix(in srgb, var(--oecs-red-600) 8%, white);border-color:var(--oecs-red-600)}.portal-alert{border-radius:var(--radius-md);border:1px solid var(--border-soft);padding:12px 16px;font-size:14px;line-height:1.45}.portal-alert--error{background:color-mix(in srgb, var(--oecs-red-600) 8%, white);border-color:color-mix(in srgb, var(--oecs-red-600) 35%, var(--border-soft));color:var(--oecs-red-600)}.portal-alert--info{background:var(--oecs-purple-050);border-color:var(--border-medium);color:var(--text-body)}.portal-modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(5px);background:#18074d6b;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.portal-modal{background:var(--surface-card);border:1px solid var(--border-soft);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);flex-direction:column;width:min(1100px,95vw);max-height:90vh;display:flex;overflow:hidden}.portal-modal__header{border-bottom:1px solid var(--border-soft);align-items:center;gap:12px;padding:14px 18px;display:flex}.portal-modal__title{text-overflow:ellipsis;white-space:nowrap;color:var(--text-heading);flex:1;font-size:15px;font-weight:600;overflow:hidden}.portal-modal__body{overscroll-behavior:contain;flex:1;min-height:120px;overflow:auto}.portal-doc-item{border:1px solid var(--border-soft);border-radius:var(--radius-md);background:var(--surface-card-soft);gap:8px;padding:16px;display:grid}.portal-doc-row{grid-template-columns:150px 1fr;align-items:baseline;gap:12px;font-size:14px;display:grid}.portal-doc-row__label{color:var(--text-muted);font-weight:500}.portal-code-chip{background:var(--surface-muted);border:1px solid var(--border-soft);color:var(--text-muted);border-radius:6px;padding:2px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}.portal-field-row{border:1px solid var(--border-soft);border-radius:var(--radius-md);background:var(--surface-card);overflow:hidden}.portal-field-row__header{background:var(--surface-card-soft);cursor:pointer;text-align:left;width:100%;color:var(--text-body);border:none;justify-content:space-between;align-items:center;gap:10px;padding:11px 14px;font-family:inherit;display:flex}.portal-field-row__body{border-top:1px solid var(--border-soft);gap:14px;padding:14px 16px;display:grid}.portal-tag{border-radius:var(--radius-pill);padding:1px 8px;font-size:11px;font-weight:600;display:inline-block}.portal-tag--required{background:var(--oecs-purple-100);color:var(--oecs-purple-700)}.portal-tag--muted{background:var(--surface-muted);color:var(--text-muted)}.portal-tag--pending{background:var(--oecs-purple-100);color:var(--oecs-purple-700);border:1px solid var(--border-medium);align-items:center;gap:6px;padding:3px 10px;font-size:13px;display:inline-flex}.portal-notify-panel{background:var(--surface-card);border:1px solid var(--border-soft);border-radius:var(--radius-lg);width:min(360px,90vw);box-shadow:var(--shadow-md);z-index:50;position:absolute;top:calc(100% + 8px);right:0;overflow:hidden}
