.portal-top{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 22px;background:rgba(255,255,255,.95);border-bottom:1px solid var(--line);backdrop-filter:blur(10px)}
.portal-top .app-brand{padding:0}
.portal-me{color:var(--muted);font-size:12px}
.portal-main{max-width:1500px;margin:0 auto}
.portal-gap{margin-top:14px}
#login-name{width:100%;height:43px}
.portal-card{padding:0}
.portal-tabs{display:flex;gap:4px;padding:12px 18px 0;border-bottom:1px solid var(--line)}
.portal-tabs button{display:inline-flex;align-items:center;gap:6px;border:0;border-bottom:2px solid transparent;border-radius:0;background:none;color:var(--muted);padding:8px 12px}
.tab-icon{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.portal-tabs button[aria-selected=true]{color:#0c69c8;border-bottom-color:var(--primary)}
.portal-toolbar{padding-top:14px}
.portal-table th{cursor:pointer;user-select:none}
.portal-table th[aria-sort=ascending]:after{content:" ↑";color:var(--primary)}
.portal-table th[aria-sort=descending]:after{content:" ↓";color:var(--primary)}
.portal-table th,.portal-table td{text-align:center}
.portal-table td.num{font-variant-numeric:tabular-nums;white-space:nowrap}
.portal-table td.gain{color:var(--success);font-weight:600}
.portal-table td.lose{color:var(--danger);font-weight:600}
.portal-table td{white-space:nowrap;max-width:260px;overflow:hidden;text-overflow:ellipsis}
.progress{display:flex;align-items:center;gap:8px;min-width:150px}
.progress-bar{flex:1;height:6px;border:0;border-radius:3px;background:#eef1f4;overflow:hidden;appearance:none;-webkit-appearance:none}
.progress-bar::-webkit-progress-bar{background:#eef1f4;border-radius:3px}
.progress-bar::-webkit-progress-value{background:var(--primary);border-radius:3px}
.progress-bar::-moz-progress-bar{background:var(--primary);border-radius:3px}
.progress.done .progress-bar::-webkit-progress-value{background:var(--success)}
.progress.done .progress-bar::-moz-progress-bar{background:var(--success)}
.portal-dialog{border:0;border-radius:14px;padding:20px 22px;width:min(640px,94vw);box-shadow:0 18px 50px -12px rgba(22,28,36,.35)}
.portal-dialog::backdrop{background:rgba(22,28,36,.4)}
#password-form input{width:100%}
.tier-basis input[type=radio]{width:auto;min-height:0;margin:0 4px 0 0}
.portal-dialog .dialog-actions{justify-content:flex-end;margin-top:16px}
.portal-fieldset{border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:12px}
.portal-fieldhead{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.portal-fieldhead button{min-height:28px;padding:3px 9px;font-size:12px}
.portal-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px 12px}
.portal-fields label,.portal-check{font-weight:500;font-size:12px;display:flex;gap:6px;align-items:center}
@media(max-width:700px){.portal-top{padding:8px 12px}.portal-top .app-brand{font-size:14px}.portal-me{display:none}.portal-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.page-intro{flex-wrap:wrap}.portal-tabs{padding:10px 12px 0}}
.portal-table td.pending,.pending{color:#919eab;font-weight:400;font-style:italic}
.tier{display:inline-block;padding:3px 8px;border-radius:6px;font-size:11px;font-weight:600;background:#f4f6f8;color:var(--ink);white-space:nowrap}
.tier-a{background:#e9fcd4;color:#1a7a10}.tier-b{background:#eaf4ff;color:#0c53b7}.tier-c{background:#fff7cd;color:#7a5a00}
.tier-d{background:#f0ecff;color:#4a3aa7}.tier-e,.tier-f,.tier-g,.tier-h{background:#eef1f4;color:#454f5b}
.tier-loss{background:#ffe7d9;color:#b72136}.tier-none{background:#f4f6f8;color:#919eab}
.expand-col{width:36px;padding-left:8px!important;padding-right:0!important}
.expand{min-height:26px;width:26px;padding:0;display:inline-grid;place-items:center;border-radius:6px}
.expand svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;transition:transform .15s}
.expand.open svg{transform:rotate(90deg)}
.sub-row>td{background:#f9fafb;padding:6px 10px 12px 44px!important}
.sub-row:hover>td{background:#f9fafb!important}
.sub-wrap{border:1px solid var(--line);border-radius:8px;background:#fff;overflow-x:auto}
.sub-table th{background:#fbfcfd;padding:7px 10px}.sub-table td{padding:7px 10px}
.analysis-pane{padding:16px 18px 18px}
.analysis-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
.analysis-kpis>div:after{display:none}
.analysis-kpis strong{font-size:20px}
.viz-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.viz-card{border:1px solid var(--line);border-radius:10px;padding:14px 16px;background:#fcfcfb}
.viz-card h3{margin:0 0 2px;font-size:13px}
.viz-sub{margin:0 0 8px;color:var(--muted);font-size:12px}
.viz-svg{width:100%;height:auto;display:block}
.viz-axis{stroke:#dfe3e8;stroke-width:1}
.viz-label{fill:#52514e;font-size:12px}
.viz-value{fill:#212b36;font-size:12px;font-weight:600;font-variant-numeric:tabular-nums}
.viz-hit{fill:transparent}
.viz-bar{cursor:default;outline:none}
.viz-bar:hover path,.viz-bar:focus path{opacity:.82}
.viz-bar:focus-visible .viz-hit{stroke:#74caff;stroke-width:2}
.viz-empty{padding:26px 8px}
.viz-tip{position:fixed;left:var(--x,0);top:var(--y,0);z-index:40;display:flex;flex-direction:column;gap:2px;max-width:260px;padding:8px 10px;border-radius:8px;background:#fff;border:1px solid var(--line);box-shadow:0 8px 24px -10px rgba(22,28,36,.35);font-size:12px;pointer-events:none}
.viz-tip strong{font-size:14px;color:var(--ink)}.viz-tip span{color:var(--muted)}.viz-tip small{color:#919eab}
@media(max-width:900px){.viz-grid{grid-template-columns:1fr}.analysis-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
.portal-table .stick-1,.portal-table .stick-2{position:sticky;z-index:1;background:#fff}
.portal-table th.stick-1,.portal-table th.stick-2{background:#f4f6f8;z-index:2}
.portal-table .stick-1{left:0}.portal-table .stick-2{left:36px;box-shadow:1px 0 0 var(--line)}
.portal-table tbody tr:hover>td.stick-1,.portal-table tbody tr:hover>td.stick-2{background:#f9fafb}
[data-tip]{cursor:help}
.portal-table td[data-tip]:not(.pending){max-width:220px}
.tier-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:-4px 0 14px;font-size:12px;color:var(--muted)}
.tier-pills{display:inline-flex;gap:6px;flex-wrap:wrap}
.tier-bar button{min-height:28px;padding:3px 10px;font-size:12px}
.help{min-height:18px;width:18px;height:18px;padding:0;border-radius:50%;font-size:11px;line-height:16px;color:var(--muted);vertical-align:middle;display:inline-grid;place-items:center}
th .help{margin-left:2px}
.tier-dialog{width:min(760px,96vw)}
.tier-basis{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:6px 0 10px;font-size:13px}
.tier-table td{padding:6px 6px}.tier-table th{padding:8px 6px;text-align:left}
.tier-table input{width:100%;min-width:60px}
.tier-table td:nth-child(1) input{min-width:110px}.tier-table td:nth-child(4) input{min-width:150px}
.tier-remove{min-height:30px;padding:3px 8px;font-size:12px;white-space:nowrap}
.tier-table td:last-child{width:1%}
.tier-speed{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;margin-top:14px;padding-top:12px;border-top:1px dashed var(--line);font-size:13px}
.tier-speed label{display:inline-flex;align-items:center;gap:6px;font-weight:500}
.tier-speed input{width:72px;min-height:32px}
.muted-box{opacity:.55}
