/* v1.18 — Investor Portal pages */
html.v118-route main{display:none !important}
.v118{display:block}
@keyframes v118in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes v118sk{0%{background-position:100% 0}100%{background-position:-100% 0}}
.v118-in,.v118-kpis>.card{animation:v118in .32s cubic-bezier(.2,.7,.2,1) both}
@media (prefers-reduced-motion:reduce){.v118-in,.v118-kpis>.card,.v118-dp{animation:none !important}}
.v118-hd{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}
.v118-hd h1{font-size:26px;font-weight:700;margin:0;letter-spacing:-.01em}
.v118-hd p.t-muted{margin:4px 0 0;font-size:14px;max-width:640px}
.v118-hbtn{display:flex;gap:10px;flex-wrap:wrap}
.v118-ext{display:inline-flex;align-items:center;gap:6px;text-decoration:none}
.v118-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin-bottom:16px}
.v118-kpis>.card{padding:14px 16px !important;display:flex;flex-direction:column;gap:3px;min-height:92px}
.v118-kpis span{font-size:12px}.v118-kpis b{font-size:24px;font-variant-numeric:tabular-nums;line-height:1.15}.v118-kpis small{font-size:11.5px}
.v118-g2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:16px}
.v118-card{padding:18px !important;display:flex;flex-direction:column;gap:10px}
.v118-card h3{margin:0;font-size:15px;font-weight:700}
.v118-h{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:2px}
.v118-li{display:flex;align-items:center;gap:12px;padding:9px 8px;border-radius:10px;text-decoration:none;color:inherit;background:none;border:0;font:inherit;text-align:left;width:100%;cursor:pointer;transition:background .15s}
.v118-li:hover{background:rgba(100,116,139,.08)}
.v118-grow{flex:1;min-width:0;display:flex;flex-direction:column}.v118-grow b{font-size:14px}.v118-grow small{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.v118-av{width:34px;height:34px;flex:none;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700;background:rgba(37,99,235,.12);color:var(--accent,#2563eb)}
.v118-av.lg{width:46px;height:46px;font-size:15px}
.v118-none{font-size:13.5px;margin:6px 0}
.v118-share{flex-direction:row;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px}
.v118-share>div:first-child{flex:1 1 360px}.v118-share p{margin:4px 0 0;font-size:13.5px;line-height:1.5}
.v118-link{display:flex;align-items:center;gap:8px}.v118-link code{padding:8px 12px;border-radius:9px;background:rgba(100,116,139,.1);font-size:13px}
.v118-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px !important;margin-bottom:14px}
.v118-bar .v118-q{flex:1 1 260px}.v118-bar .v118-f{flex:0 0 170px}
.v118-rl{display:flex;flex-direction:column;gap:12px}
.v118-rl .v117-req{padding:16px !important}
.v118-lnk{font:inherit;background:none;border:0;padding:0;color:var(--accent,#2563eb);cursor:pointer;font-weight:600}
.v118-tbl{padding:6px 12px !important}
.v118-row{width:100%;background:none;border:0;border-bottom:1px solid var(--line,rgba(15,23,42,.06));font:inherit;color:inherit;text-align:left;cursor:pointer;border-radius:8px;transition:background .15s}
.v118-row:hover{background:rgba(100,116,139,.07)}
.v118-tbl .v117-tr:last-child{border-bottom:0}
.v118-cfg{max-width:760px;gap:12px}
.v118-sk{height:54px;border-radius:12px;background:linear-gradient(90deg,rgba(100,116,139,.08) 25%,rgba(100,116,139,.16) 50%,rgba(100,116,139,.08) 75%);background-size:200% 100%;animation:v118sk 1.2s linear infinite}
.v118-kpis .v118-sk{height:92px}
.v118-dr{position:fixed;inset:0;z-index:60}
.v118-dr .v116-dr-bg{animation:v118fade .18s ease-out both}
@keyframes v118fade{from{opacity:0}to{opacity:1}}
@keyframes v118slide{from{transform:translateX(24px);opacity:0}to{transform:none;opacity:1}}
.v118-dp{position:absolute;top:0;right:0;bottom:0;width:min(480px,100vw);overflow-y:auto;padding:22px !important;border-radius:0 !important;display:flex;flex-direction:column;gap:16px;animation:v118slide .22s cubic-bezier(.2,.7,.2,1) both}
.v118-dr.out .v118-dp{transition:.18s;transform:translateX(24px);opacity:0}.v118-dr.out .v116-dr-bg{transition:.18s;opacity:0}
.v118-dbody{display:flex;flex-direction:column;gap:14px}
.v118-dbody .v116-h3{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;opacity:.6;margin-top:4px}
.v118-act>div{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-top:1px solid var(--line,rgba(15,23,42,.06));font-size:13px}
.v118-act>div small{opacity:.65;white-space:nowrap}
.v118-inv{font-size:13px}
.v118-nb[hidden]{display:none}
@media (max-width:1100px){.v118-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:760px){.v118-g2{grid-template-columns:1fr}.v118-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.v118-hd h1{font-size:22px}.v117-tr{grid-template-columns:minmax(0,1fr) auto}.v117-tr>span:nth-child(3),.v117-tr>span:nth-child(4){display:none}}

/* v1.18: pop-ups (password / revoke recovery codes / turn off 2FA) were trapped inside their card, because the card's
   entrance animation keeps a transform = new containing block for position:fixed. While a dialog is open, drop it. */
*:has(> [role="dialog"].fixed), *:has([role="dialog"].fixed) { transform: none !important; animation: none !important; filter: none !important; backdrop-filter: none !important; -webkit-backdrop-filter: none !important; contain: none !important; will-change: auto !important; perspective: none !important; }
[role="dialog"].fixed { animation: v118-fade .18s ease-out both !important; }
[role="dialog"].fixed > * { animation: v118-pop .24s cubic-bezier(.2,.9,.3,1.2) both !important; }
@keyframes v118-fade { from { opacity: 0 } to { opacity: 1 } }
@keyframes v118-pop { from { opacity: 0; transform: translateY(10px) scale(.97) } to { opacity: 1; transform: none } }
@media (prefers-reduced-motion: reduce) { [role="dialog"].fixed, [role="dialog"].fixed > * { animation: none !important; } }
[role="dialog"].fixed > .overlay { background: rgba(15, 23, 42, .5) !important; -webkit-backdrop-filter: blur(5px) saturate(1.1); backdrop-filter: blur(5px) saturate(1.1); animation: v118-fade .2s ease-out both !important; }
html.dark [role="dialog"].fixed > .overlay { background: rgba(2, 6, 18, .66) !important; }
[role="dialog"].fixed > .card-solid { box-shadow: 0 30px 80px -20px rgba(15, 23, 42, .45), 0 0 0 1px var(--border, rgba(15,23,42,.08)); }
