/* Shared PWA UI: offline page and the install prompt. Public, no session needed. */
:root{--pwa-ink:#171b2a;--pwa-sub:#6f6b80;--pwa-purple:#6b50cc;--pwa-purple-dark:#4a33b0;--pwa-card:#fff;--pwa-bg:#f5f4f8;--pwa-radius:18px}
.pwa-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 22px;border:0;border-radius:12px;background:var(--pwa-purple);color:#fff;font:inherit;font-weight:700;cursor:pointer;transition:background .2s,transform .2s}
.pwa-button:hover{background:var(--pwa-purple-dark)}
.pwa-button:active{transform:scale(.98)}
.pwa-button:focus-visible{outline:3px solid #b6a6f4;outline-offset:3px}

body.pwa-offline{margin:0;min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:24px max(20px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left));background:radial-gradient(circle at 20% 10%,#2b2450 0,transparent 55%),var(--pwa-ink);color:#fff;font-family:Vazirmatn,Tahoma,"Segoe UI",Arial,sans-serif;line-height:1.9}
.offline-card{max-width:420px;text-align:center}
.offline-card img{border-radius:20px;box-shadow:0 18px 50px rgba(107,80,204,.45)}
.offline-card h1{font-size:24px;margin:26px 0 10px}
.offline-card p{color:#c9c5da;margin:0 0 26px;font-size:15px}
.offline-card .offline-hint{min-height:1.9em;font-size:13px;margin:16px 0 0}

/* Install prompt: a bottom sheet on phones, a floating card on tablets. */
.pwa-install{position:fixed;z-index:9999;inset:auto 12px max(12px,env(safe-area-inset-bottom)) 12px;max-width:440px;margin-inline:auto;padding:18px 18px 16px;border-radius:var(--pwa-radius);background:var(--pwa-card);color:var(--pwa-ink);box-shadow:0 24px 60px rgba(23,27,42,.28),0 2px 8px rgba(23,27,42,.08);font-family:Vazirmatn,Tahoma,"Segoe UI",Arial,sans-serif;line-height:1.8;transform:translateY(130%);opacity:0;transition:transform .32s cubic-bezier(.2,.8,.2,1),opacity .2s}
.pwa-install.is-open{transform:none;opacity:1}
.pwa-install-head{display:flex;align-items:flex-start;gap:14px}
.pwa-install-head>div{flex:1;min-width:0}
.pwa-install-icon{flex:none;border-radius:14px;box-shadow:0 8px 20px rgba(107,80,204,.3)}
.pwa-install h2{font-size:16px;margin:2px 0 2px}
.pwa-install p{font-size:13px;margin:0;color:var(--pwa-sub)}
.pwa-install-close{flex:none;width:36px;height:36px;margin:-6px -6px 0 0;border:0;border-radius:50%;background:transparent;color:var(--pwa-sub);font-size:24px;line-height:1;cursor:pointer}
.pwa-install-close:hover{background:#f0eef7}
.pwa-install-actions{display:flex;align-items:center;gap:10px;margin-top:16px}
.pwa-install-actions .pwa-button{flex:1}
.pwa-link{min-height:48px;padding:0 16px;border:0;background:transparent;color:var(--pwa-sub);font:inherit;font-weight:600;cursor:pointer;border-radius:12px}
.pwa-link:hover{background:#f3f1f8}
.pwa-steps{margin:14px 0 2px;padding:12px 32px 12px 14px;border-radius:12px;background:#f6f4fc;font-size:13px;color:var(--pwa-ink)}
.pwa-steps li+li{margin-top:4px}
.pwa-steps{list-style:persian}
.pwa-share-icon{display:inline-block;width:24px;height:24px;padding:3px;margin:0 2px;border-radius:6px;background:#fff;vertical-align:-6px;fill:none;stroke:var(--pwa-purple);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.pwa-install-manual{margin-top:12px!important;padding:10px 12px;border-radius:12px;background:#f6f4fc;color:var(--pwa-ink)!important}
@media (prefers-reduced-motion: reduce){.pwa-install{transition:none}}
[data-theme="dark"] .pwa-install{--pwa-card:#1c2030;--pwa-ink:#eceaf5;--pwa-sub:#a9a5bd;box-shadow:0 24px 60px rgba(0,0,0,.55)}[data-theme="dark"] .pwa-steps,[data-theme="dark"] .pwa-install-manual{background:#262b3c}[data-theme="dark"] .pwa-share-icon{background:#30364a}[data-theme="dark"] .pwa-install-close:hover,[data-theme="dark"] .pwa-link:hover{background:#2a2f40}

/* Touch polish for every page: no grey tap flash, no double-tap delay on controls. */
html{-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;text-size-adjust:100%}
a,button,input,select,textarea,label,summary{touch-action:manipulation}

/* Installed app: respect the notch and home indicator, no rubber-band pull of the whole page. */
@media (display-mode: standalone){
  html{overscroll-behavior-y:none}
  body{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom)}
}

/* Brand: the app icon is the logo on every page. */
.brand-icon{display:block;flex:none;width:36px;height:36px;border-radius:10px;box-shadow:0 6px 16px rgba(107,80,204,.28)}
.login-shell .brand-icon{width:42px;height:42px;border-radius:12px}

/* Navigation: role-specific links stay hidden until the role is known. */
html:not([data-role="admin"]) .primary-nav [data-role="admin"],
html:not([data-role="investor"]) .primary-nav [data-role="investor"]{display:none!important}
/* Controls whose API needs an admin session (the server checks too). */
html:not([data-role="admin"]) .admin-only{display:none!important}
.primary-nav a[aria-current="page"]{background:#ede9fc;color:#5134b7}
.primary-nav .nav-logout{font:inherit;font-size:12px;font-weight:700;color:#8b5563;background:transparent;border:0;border-radius:11px;padding:11px 13px;white-space:nowrap;cursor:pointer;transition:.2s}
.primary-nav .nav-logout:hover{background:#fbeef1;color:#ad3542}
.primary-nav .nav-logout:disabled{opacity:.6;cursor:wait}
@media(max-width:1330px){.primary-nav .nav-logout{padding:9px;font-size:11px}}

/* Phones: the nav becomes an app-style bottom tab bar (icon above label). */
@media (max-width: 640px){
  .topbar .primary-nav{position:fixed;z-index:900;inset:auto 0 0 0;order:0;flex-basis:auto;display:flex!important;flex-wrap:nowrap;justify-content:space-around;align-items:stretch;gap:0;margin:0;padding:6px max(6px,env(safe-area-inset-right)) calc(6px + env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left));background:rgba(255,255,255,.94);-webkit-backdrop-filter:saturate(1.6) blur(14px);backdrop-filter:saturate(1.6) blur(14px);border-top:1px solid #e9e7f0;box-shadow:0 -8px 24px rgba(23,27,42,.06)}
  .topbar .primary-nav a,.topbar .primary-nav .nav-logout{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:52px;padding:4px 2px;border-radius:12px;font-size:10px;font-weight:600;line-height:1.3;text-align:center;white-space:normal;color:#6c6880;background:transparent}
  .topbar .primary-nav a[aria-current="page"]{color:#5134b7;background:transparent}
  .topbar .primary-nav a[aria-current="page"]::before{background:#5134b7}
  .topbar .primary-nav a::before,.topbar .primary-nav .nav-logout::before{content:"";width:24px;height:24px;flex:none;background:currentColor;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
  .topbar .primary-nav a[aria-current="page"]::after{content:"";position:absolute;top:0;width:28px;height:3px;border-radius:0 0 3px 3px;background:#5134b7}
  .topbar .primary-nav a{position:relative}
  .topbar .primary-nav .nav-logout{color:#9a6070}
  .topbar{min-height:64px!important;height:64px!important;flex-wrap:nowrap!important;padding-top:0!important;padding-bottom:0!important}
  body:has(.topbar .primary-nav){padding-bottom:calc(72px + env(safe-area-inset-bottom))}
  body:has(.topbar .primary-nav) .pwa-install{bottom:calc(80px + env(safe-area-inset-bottom))}
  .topbar .primary-nav [data-nav="admin"]::before{-webkit-mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M12 3 4 6v6c0 4.5 3.4 8 8 9 4.6-1 8-4.5 8-9V6z'/><path d='m9 12 2 2 4-4'/></svg>");mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M12 3 4 6v6c0 4.5 3.4 8 8 9 4.6-1 8-4.5 8-9V6z'/><path d='m9 12 2 2 4-4'/></svg>")}
  .topbar .primary-nav [data-nav="register"]::before{-webkit-mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='10' cy='8' r='4'/><path d='M3 20c.8-3.5 3.6-6 7-6 1.5 0 2.9.5 4 1.3'/><path d='M18 14v6M15 17h6'/></svg>");mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='10' cy='8' r='4'/><path d='M3 20c.8-3.5 3.6-6 7-6 1.5 0 2.9.5 4 1.3'/><path d='M18 14v6M15 17h6'/></svg>")}
  .topbar .primary-nav [data-nav="dashboard"]::before{-webkit-mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M4 11 12 4l8 7'/><path d='M6 10v10h12V10'/><path d='M10 20v-5h4v5'/></svg>");mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M4 11 12 4l8 7'/><path d='M6 10v10h12V10'/><path d='M10 20v-5h4v5'/></svg>")}
  .topbar .primary-nav [data-nav="coins"]::before{-webkit-mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><ellipse cx='12' cy='6' rx='7' ry='3'/><path d='M5 6v6c0 1.7 3.1 3 7 3s7-1.3 7-3V6'/><path d='M5 12v6c0 1.7 3.1 3 7 3s7-1.3 7-3v-6'/></svg>");mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><ellipse cx='12' cy='6' rx='7' ry='3'/><path d='M5 6v6c0 1.7 3.1 3 7 3s7-1.3 7-3V6'/><path d='M5 12v6c0 1.7 3.1 3 7 3s7-1.3 7-3v-6'/></svg>")}
  .topbar .primary-nav [data-nav="scoring"]::before{-webkit-mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M4 20V10M10 20V4M16 20v-7M22 20H2'/></svg>");mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M4 20V10M10 20V4M16 20v-7M22 20H2'/></svg>")}
  .topbar .primary-nav [data-nav="forecast"]::before{-webkit-mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M3 20h18'/><path d='M5 16l4-5 3 3 4-6 3 3'/><path d='M16 8h3v3'/></svg>");mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M3 20h18'/><path d='M5 16l4-5 3 3 4-6 3 3'/><path d='M16 8h3v3'/></svg>")}
  .topbar .primary-nav [data-nav="onchain"]::before{-webkit-mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M10 13a5 5 0 0 0 7.5.5l3-3a5 5 0 0 0-7-7l-1.7 1.7'/><path d='M14 11a5 5 0 0 0-7.5-.5l-3 3a5 5 0 0 0 7 7l1.7-1.7'/></svg>");mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M10 13a5 5 0 0 0 7.5.5l3-3a5 5 0 0 0-7-7l-1.7 1.7'/><path d='M14 11a5 5 0 0 0-7.5-.5l-3 3a5 5 0 0 0 7 7l1.7-1.7'/></svg>")}
  .topbar .primary-nav [data-nav="broker-sandbox"]::before{-webkit-mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M3 10l9-6 9 6'/><path d='M5 10v8M9.5 10v8M14.5 10v8M19 10v8'/><path d='M3 21h18'/></svg>");mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M3 10l9-6 9 6'/><path d='M5 10v8M9.5 10v8M14.5 10v8M19 10v8'/><path d='M3 21h18'/></svg>")}
  .topbar .primary-nav [data-nav="bitbank-sandbox"]::before{-webkit-mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='6' width='18' height='13' rx='2.5'/><path d='M3 10h18'/><path d='M16 14.5h2'/><path d='M7 3.5h10'/></svg>");mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='6' width='18' height='13' rx='2.5'/><path d='M3 10h18'/><path d='M16 14.5h2'/><path d='M7 3.5h10'/></svg>")}
  .topbar .primary-nav [data-action="logout"]::before{-webkit-mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M14 4h4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-4'/><path d='M10 16l-4-4 4-4M6 12h10'/></svg>");mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M14 4h4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-4'/><path d='M10 16l-4-4 4-4M6 12h10'/></svg>")}
}

/* Admin page on phones: nothing may push the page wider than the screen. */
@media (max-width: 700px){
  .admin-main{padding:0 16px}
  .admin-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .admin-actions>*{width:100%;justify-content:center;text-align:center}
  .import-help code{display:block;overflow-wrap:anywhere;word-break:break-all;margin:4px 0}
  .import-grid input[type=file]{min-width:0}
  .table-container{min-width:0}
  .stat-grid{gap:10px}
}

/* Accessibility, everywhere. */
.skip-link{position:absolute;z-index:10000;inset-inline-start:12px;top:-64px;padding:10px 16px;border-radius:10px;background:#171b2a;color:#fff;font-weight:700;text-decoration:none;transition:top .15s}
.skip-link:focus{top:12px}
main[tabindex="-1"]:focus{outline:none}
select:focus-visible,textarea:focus-visible,summary:focus-visible,[tabindex]:not([tabindex="-1"]):focus-visible{outline:3px solid #aa9dff;outline-offset:2px}
/* iOS Safari zooms into any focused field under 16px; keep phones at 16px. */
@media (max-width:640px){input:not([type=checkbox]):not([type=radio]):not([type=file]),select,textarea{font-size:16px!important}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
/* Desktop pages that already have their own sign-out button don't need the nav's. */
@media (min-width:641px){body:has(#logoutBtn) .primary-nav .nav-logout{display:none}}

/* Theme toggle (injected by pwa.js into the top bar and the login page). */
.theme-toggle{flex:none;display:inline-grid;place-items:center;width:40px;height:40px;margin-inline-start:6px;border:1px solid #e4e2ec;border-radius:12px;background:#fff;color:#4f4a63;cursor:pointer;transition:background .2s,border-color .2s,color .2s}
.theme-toggle:hover{background:#f3f1f9;color:#5134b7}
.theme-toggle::before{content:"";width:20px;height:20px;background:currentColor;-webkit-mask:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='8.5'/><path d='M12 3.5v17A8.5 8.5 0 0 0 12 3.5z' fill='%23000'/></svg>") center/contain no-repeat;mask:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='8.5'/><path d='M12 3.5v17A8.5 8.5 0 0 0 12 3.5z' fill='%23000'/></svg>") center/contain no-repeat}
.theme-toggle[data-pref="light"]::before{-webkit-mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='4'/><path d='M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4'/></svg>");mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='4'/><path d='M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4'/></svg>")}
.theme-toggle[data-pref="dark"]::before{-webkit-mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M20 14.5A8 8 0 1 1 9.5 4a6.5 6.5 0 0 0 10.5 10.5z'/></svg>");mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M20 14.5A8 8 0 1 1 9.5 4a6.5 6.5 0 0 0 10.5 10.5z'/></svg>")}
.topbar .theme-toggle{order:9}
@media (max-width:640px){.topbar .theme-toggle{margin-inline-start:auto}}

/* Dark theme: shared pieces. Page-specific dark styles live in dark/*.css. */
[data-theme="dark"]{color-scheme:dark}
[data-theme="dark"] .theme-toggle{background:#1c2030;border-color:#2c3144;color:#c9c5dc}
[data-theme="dark"] .theme-toggle:hover{background:#262b3c;color:#c4b5ff}
[data-theme="dark"] .skip-link{background:#eceaf5;color:#0f1118}
[data-theme="dark"] .primary-nav a[aria-current="page"]{background:#2a2550;color:#c4b5ff}
[data-theme="dark"] .primary-nav .nav-logout{color:#e39aac}
[data-theme="dark"] .primary-nav .nav-logout:hover{background:#3a2430;color:#f2b3c2}
@media (max-width:640px){
  [data-theme="dark"] .topbar .primary-nav{background:rgba(20,23,33,.92);border-top-color:#262b3c;box-shadow:0 -8px 24px rgba(0,0,0,.4)}
  [data-theme="dark"] .topbar .primary-nav a,[data-theme="dark"] .topbar .primary-nav .nav-logout{color:#a9a5bd;background:transparent}
  [data-theme="dark"] .topbar .primary-nav a[aria-current="page"]{color:#c4b5ff;background:transparent}
  [data-theme="dark"] .topbar .primary-nav a[aria-current="page"]::before,[data-theme="dark"] .topbar .primary-nav a[aria-current="page"]::after{background:#c4b5ff}
  [data-theme="dark"] .topbar .primary-nav .nav-logout{color:#e39aac}
}
/* Forecast page: its own header CSS stacks on phones; keep brand and toggle on one row. */
@media (max-width:640px){.forecast-body .topbar{display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;align-items:center!important;justify-content:space-between!important}}

/* research tools: one entry in the main nav, a tab strip on research pages */
.primary-nav .nav-folded{display:none!important}
.research-tabs{display:flex;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:1350px;margin:14px auto 0;padding:5px;border-radius:12px;background:#ebeaf3;width:fit-content;max-width:calc(100% - 32px)}
.research-tabs a{flex:none;padding:9px 15px;border-radius:9px;color:#5c5970;text-decoration:none;font-size:13px;white-space:nowrap}
.research-tabs a[aria-current="page"]{background:#ffffff;color:#5948bf;font-weight:700;box-shadow:0 1px 5px #1f285622}
.research-tabs a[hidden]{display:none}
.research-tabs a:focus-visible{outline:2px solid #6b50cc;outline-offset:2px}
[data-theme="dark"] .research-tabs{background:#1b2133}
[data-theme="dark"] .research-tabs a{color:#b9bfd3}
[data-theme="dark"] .research-tabs a[aria-current="page"]{background:#2a3150;color:#d7ccff}
@media (max-width:640px){.research-tabs{margin:10px 16px 0;width:auto}}
.topbar .primary-nav [data-nav="research"]::before{-webkit-mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='7'/><path d='M20 20l-3.5-3.5'/><path d='M8 13l2-2.5 2 1.5 2-3'/></svg>");mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='7'/><path d='M20 20l-3.5-3.5'/><path d='M8 13l2-2.5 2 1.5 2-3'/></svg>")}
.topbar .primary-nav [data-nav="market-bridge"]::before{-webkit-mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M3 17h18'/><path d='M5 17V9'/><path d='M19 17V9'/><path d='M5 9c3-4 11-4 14 0'/></svg>");mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M3 17h18'/><path d='M5 17V9'/><path d='M19 17V9'/><path d='M5 9c3-4 11-4 14 0'/></svg>")}

/* File inputs: pwa.js wraps each one in a Persian picker (the native control stays on top, transparent). */
.file-pick{position:relative;display:flex;align-items:center;gap:10px;min-width:0;min-height:48px;padding:5px;padding-inline-end:12px;border:1.4px dashed #cfcade;border-radius:10px;background:#fff;color:#5c5970;font-size:12.5px;font-weight:600;line-height:1.5;cursor:pointer;transition:border-color .2s,background .2s}
.file-pick:hover{border-color:#a99be8;background:#fbfaff}
.file-pick:focus-within{outline:3px solid #aa9dff;outline-offset:2px}
.file-pick input[type="file"]{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;min-width:0!important;margin:0!important;padding:0!important;border:0!important;opacity:0!important;cursor:pointer;font-size:0}
.file-pick-btn{flex:none;display:inline-flex;align-items:center;min-height:36px;padding:0 14px;border-radius:8px;background:#efebff;color:#5134b7;font-weight:700;white-space:nowrap}
.file-pick-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#8a8794;font-weight:500}
.file-pick.has-file{border-style:solid;border-color:#b9adf0}
.file-pick.has-file .file-pick-name{color:#2c2840;font-weight:600}
[data-theme="dark"] .file-pick{background:#1b1f2c;border-color:#3a3f55;color:#c9c5dc}
[data-theme="dark"] .file-pick:hover{background:#20253a;border-color:#6d61b8}
[data-theme="dark"] .file-pick-btn{background:#2a2550;color:#d2c6ff}
[data-theme="dark"] .file-pick-name{color:#9c98b0}
[data-theme="dark"] .file-pick.has-file{border-color:#5b4fa8}
[data-theme="dark"] .file-pick.has-file .file-pick-name{color:#e6e3f2}

/* Touch targets: on phones and touch screens, small buttons and controls grow to at least 40px. */
:where(input[type="checkbox"],input[type="radio"]){accent-color:#6b50cc}
@media (max-width:640px),(pointer:coarse){
  .secondary-button.small,.btn.small,.inspect,.s-detail,.history-range,.horizon,.prochart-top button,.prochart-top select,.ysp-toolbar button,.ysp-toolbar select,.ysp-controls button,.fx-select{min-height:40px!important}
  summary{padding-block:8px}
  :where(input[type="checkbox"],input[type="radio"]){width:20px;height:20px}
}
