/* ============ DESIGN TOKENS ============ */
:root{
  --bg:#09090B;--surface:#111113;--card:#151518;--hover:#1B1B1F;
  --border:#1F1F23;--border2:#27272A;--panel:#111113;
  --primary:#6D5DF6;--accent:#8B7CFF;--primary-soft:color-mix(in srgb,var(--primary) 14%,transparent);
  --text:#FAFAFA;--text2:#B4B4BD;--text3:#7B7B85;
  --green:#22C55E;--amber:#F59E0B;--red:#EF4444;
  --green-soft:rgba(34,197,94,.12);--amber-soft:rgba(245,158,11,.12);--red-soft:rgba(239,68,68,.12);
  --s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--s8:64px;
  --rf:1;
  --r1:calc(6px*var(--rf));--r2:calc(8px*var(--rf));--r3:calc(12px*var(--rf));--r4:calc(16px*var(--rf));
  --shadow-a:1;--glass:.6;
  --sh-sm:0 1px 2px rgba(0,0,0,calc(.35*var(--shadow-a)));
  --sh-md:0 4px 16px rgba(0,0,0,calc(.35*var(--shadow-a))),0 1px 3px rgba(0,0,0,calc(.3*var(--shadow-a)));
  --sh-lg:0 24px 64px rgba(0,0,0,calc(.5*var(--shadow-a))),0 8px 24px rgba(0,0,0,calc(.35*var(--shadow-a)));
  --sh-glow:0 0 0 1px color-mix(in srgb,var(--primary) 35%,transparent),0 4px 24px color-mix(in srgb,var(--primary) calc(35%*var(--shadow-a,1)),transparent);
  --ease:cubic-bezier(.22,1,.36,1);--spring:cubic-bezier(.34,1.56,.64,1);
  --d1:.15s;--d2:.25s;--d3:.5s;
  --z-head:10;--z-drop:50;--z-modal:100;--z-toast:200;--z-pl:300;
  --fs:13.5px;--glow-int:25;
  --sb-w:232px;--sb-rail-w:64px;--header-h:48px;--container-w:1040px;
  --icon-xs:12px;--icon-sm:14px;--icon-md:16px;--icon-lg:20px;
  --sw1:1.7;
}
[data-theme="light"]{
  --bg:#F7F7F8;--surface:#FFFFFF;--card:#FFFFFF;--hover:#F1F1F3;
  --border:#E7E7EA;--border2:#DCDCE0;--panel:#FFFFFF;
  --text:#18181B;--text2:#52525B;--text3:#A1A1AA;
  --primary-soft:color-mix(in srgb,var(--primary) 10%,transparent);
  --sh-sm:0 1px 2px rgba(24,24,27,calc(.06*var(--shadow-a)));
  --sh-md:0 4px 16px rgba(24,24,27,calc(.07*var(--shadow-a))),0 1px 3px rgba(24,24,27,calc(.05*var(--shadow-a)));
  --sh-lg:0 24px 64px rgba(24,24,27,calc(.14*var(--shadow-a))),0 8px 24px rgba(24,24,27,calc(.08*var(--shadow-a)));
}

/* ============ BASE ============ */
*{box-sizing:border-box;margin:0;padding:0}
html{height:100%}
body.font-inter{font-family:'Inter Tight',-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif}
body.font-system{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif}
body.dev-mode .logo-script::after{content:'DEV';font-family:'Geist',sans-serif;font-size:9px;font-weight:700;letter-spacing:.04em;color:var(--text3);background:var(--hover);border:1px solid var(--border2);border-radius:4px;padding:1px 4px;margin-left:6px;vertical-align:middle}
#cursorGlow{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:0;transition:opacity .4s var(--ease);
  background:radial-gradient(420px circle at var(--cx,50%) var(--cy,50%),color-mix(in srgb,var(--primary) 14%,transparent),transparent 70%)}
body.experimental #cursorGlow{opacity:1}
body{
  font-family:'Geist',-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;
  font-size:var(--fs);line-height:1.55;letter-spacing:-.006em;
  background:var(--bg);color:var(--text);height:100vh;overflow:hidden;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  font-variant-numeric:tabular-nums;
}
::selection{background:color-mix(in srgb,var(--primary) 35%,transparent)}
*{scrollbar-width:thin;scrollbar-color:rgba(128,128,140,.28) transparent}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(128,128,140,.16);border-radius:99px;border:3px solid transparent;background-clip:content-box;transition:background .2s var(--ease)}
::-webkit-scrollbar-thumb:hover{background:rgba(128,128,140,.4);background-clip:content-box;border-width:2.5px}
::-webkit-scrollbar-corner{background:transparent}
svg{flex:none}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
:focus{outline:none}
:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:var(--r1)}
input:focus-visible,textarea:focus-visible,select:focus-visible{outline:none}
select:focus{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 22%,transparent);outline:none}
.muted{color:var(--text3)}.small{font-size:12px}
.sub{font-size:11.5px;color:var(--text3);letter-spacing:-.005em}
.card>.sub{margin:2px 0 14px}
.viz-empty{min-height:140px;display:flex;align-items:center;justify-content:center;text-align:center;padding:20px;font-size:12.5px;line-height:1.6;color:var(--text3);border:1px dashed var(--border2);border-radius:var(--r2)}
.pos{color:var(--green)}.neg{color:var(--red)}.neu{color:var(--text2)}
body.no-anim *,body.no-anim *::before,body.no-anim *::after{animation:none!important;transition:none!important}
body.hc{--border:#3F3F46;--border2:#52525B;--text2:#D4D4D8;--text3:#A1A1AA}
[data-theme="light"] body.hc,body.hc[data-theme]{}

/* ============ GLOW BACKGROUND ============ */
#glow{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:calc(var(--glow-int,25)/100);transition:opacity .35s;
  background:
    radial-gradient(1000px 640px at 12% -6%,var(--glow,#6D5DF6) 0%,transparent 62%),
    radial-gradient(1100px 700px at 96% 104%,var(--accent,#8B7CFF) 0%,transparent 60%),
    radial-gradient(700px 500px at 55% 120%,var(--glow,#6D5DF6) 0%,transparent 65%);}
[data-theme="light"] #glow{opacity:calc(var(--glow-int,25)/100*.4)}
body.perf #glow{display:none}
#bgFx,#bgFxGl{position:fixed;inset:0;z-index:0;pointer-events:none;width:100%;height:100%;
  opacity:0;filter:blur(calc(var(--bgfx-blur,14px)));transition:opacity .5s var(--ease);will-change:opacity}
#bgFxGl{filter:blur(calc(var(--bgfx-blur,14px)*.3)) saturate(1.05)}
body.bgfx-on:not(.bgfx-gl) #bgFx{opacity:var(--bgfx-opacity,.5)}
body.bgfx-on.bgfx-gl #bgFxGl{opacity:var(--bgfx-opacity,.5)}
body.perf #bgFx,body.no-anim #bgFx,body.perf #bgFxGl,body.no-anim #bgFxGl{display:none}
.frame,.sidebar{isolation:isolate}

/* ============ PRELOADER ============ */
#preloader{position:fixed;inset:0;z-index:var(--z-pl);background:transparent;display:flex;align-items:center;justify-content:center;overflow:hidden;
  clip-path:circle(150% at 50% 50%);transition:clip-path .7s var(--ease) .05s,visibility .75s}
#preloader.done{clip-path:circle(0% at 50% 50%);visibility:hidden;pointer-events:none}
#preloader::before{content:"";position:absolute;inset:0;background:rgba(8,8,14,.82);z-index:0}#preloader canvas{position:absolute;inset:0;width:100%;height:100%;opacity:.45}
#preloader .pl-center{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:24px;transform:translateY(-4vh)}
.pl-mark{position:relative;width:72px;height:72px;border-radius:20px;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(145deg,color-mix(in srgb,var(--primary) 82%,#fff 18%),var(--primary));
  box-shadow:0 8px 40px color-mix(in srgb,var(--primary) 50%,transparent),inset 0 1px 0 rgba(255,255,255,.25);
  animation:plPop .9s var(--spring) both}
.pl-mark svg{width:32px;height:32px;overflow:visible}
.pl-mark svg path{fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:64;stroke-dashoffset:64;animation:plDraw 1.1s var(--ease) .25s forwards}
.pl-mark .ring{position:absolute;inset:-10px;border-radius:26px;border:1px solid color-mix(in srgb,var(--primary) 35%,transparent);animation:plRing 2s var(--ease) infinite}
.pl-mark .ring2{position:absolute;inset:-20px;border-radius:32px;border:1px solid color-mix(in srgb,var(--primary) 18%,transparent);animation:plRing 2s var(--ease) .5s infinite}
.pl-word{display:flex;gap:2px;font-family:'Geist',-apple-system,sans-serif;font-size:27px;font-weight:700;letter-spacing:-.02em}
.pl-word span{opacity:0;animation:plChar .6s var(--ease) forwards}
.pl-meter{display:flex;flex-direction:column;align-items:center;gap:8px}
.pl-bar{width:140px;height:3px;border-radius:99px;background:var(--border2);overflow:hidden;position:relative}
.pl-bar i{display:block;height:100%;width:0%;border-radius:99px;background:linear-gradient(90deg,var(--primary),var(--accent));transition:width .25s linear}
.pl-row{display:flex;align-items:center;gap:10px}
.pl-pct{font-family:'Geist Mono',ui-monospace,monospace;font-size:11px;color:var(--text3);min-width:32px;text-align:right}
.pl-sub{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--text3);font-weight:500}
@keyframes plPop{from{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}
@keyframes plDraw{to{stroke-dashoffset:0}}
@keyframes plRing{0%{transform:scale(.9);opacity:0}40%{opacity:1}100%{transform:scale(1.3);opacity:0}}
@keyframes plChar{from{opacity:0;transform:translateY(8px);filter:blur(4px)}to{opacity:1;transform:none;filter:none}}
@keyframes plSweep{from{transform:translateX(-120%)}to{transform:translateX(320%)}}

/* ============ LAYOUT ============ */
.sidebar{position:fixed;top:0;left:0;bottom:0;width:var(--sb-w);z-index:1;display:flex;flex-direction:column;padding:12px 12px 16px;overflow:hidden;
  will-change:width;transition:width .3s cubic-bezier(.25,.8,.25,1),background .3s var(--ease),box-shadow .3s var(--ease),border-radius .3s var(--ease)}
body.sb-rail{--sb-w:var(--sb-rail-w)}
.frame{position:fixed;top:8px;right:8px;bottom:8px;left:var(--sb-w);z-index:1;
  background:var(--surface);border:1px solid var(--border);border-radius:var(--r3);
  box-shadow:var(--sh-md);overflow:hidden;transition:left var(--d2) var(--ease),background var(--d2) var(--ease)}

.main{position:absolute;inset:0;padding:calc(var(--header-h) + 24px) 40px 48px;overflow-y:auto;overflow-x:hidden;scroll-behavior:smooth}
body.compact .main{padding:64px 28px 32px}

/* ============ FRAME HEADER (glass) ============ */
.frame-head{position:absolute;top:0;left:0;right:0;height:var(--header-h);z-index:var(--z-head);
  display:flex;align-items:center;justify-content:space-between;padding:0 16px;
  background:color-mix(in srgb,var(--surface) calc(100% - var(--glass)*45%),transparent);
  -webkit-backdrop-filter:blur(calc(var(--glass)*20px)) saturate(1.4);backdrop-filter:blur(calc(var(--glass)*20px)) saturate(1.4);
  border-bottom:1px solid var(--border);box-shadow:inset 0 1px 0 rgba(255,255,255,.03)}
.fh-left{gap:10px}.fh-right{gap:4px}
body.no-glass .frame-head,body.perf .frame-head{background:var(--surface);-webkit-backdrop-filter:none;backdrop-filter:none}
.fh-left{display:flex;align-items:center;gap:8px}
.fh-title{font-size:13px;font-weight:550;letter-spacing:-.01em}
.fh-star{width:14px;height:14px;stroke:var(--text3);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;cursor:pointer;transition:stroke var(--d1)}
.fh-star:hover{stroke:var(--amber)}.fh-star{display:none!important}
.fh-right{display:flex;align-items:center;gap:2px}
.fh-count{font-size:11.5px;color:var(--text3);margin-right:8px;font-weight:500}

/* ============ SIDEBAR ============ */
.ws-row{position:relative;display:flex;align-items:center;padding:4px 4px 12px}
.ws-switch{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;letter-spacing:-.01em;padding:4px 8px;cursor:default}
.ws-switch .mark{width:22px;height:22px;border-radius:7px;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(145deg,color-mix(in srgb,var(--primary) 85%,#fff),color-mix(in srgb,var(--primary) 80%,#000));box-shadow:0 2px 8px color-mix(in srgb,var(--primary) 40%,transparent),inset 0 1px 0 rgba(255,255,255,.25)}
.ws-switch .mark svg{width:11px;height:11px;stroke:#fff;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.ws-switch .chev{width:12px;height:12px;stroke:var(--text3);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.ws-icons{position:absolute;right:4px;top:4px;display:flex;gap:2px;transition:opacity var(--d2) var(--ease)}
.icon-btn{width:28px;height:28px;border-radius:var(--r1);display:flex;align-items:center;justify-content:center;color:var(--text3);transition:background var(--d1),color var(--d1)}
.icon-btn:hover{background:var(--hover);color:var(--text)}
.icon-btn svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.nav{display:flex;flex-direction:column;gap:1px}
.nav button{display:flex;align-items:center;gap:12px;height:32px;padding:0 12px;border-radius:var(--r2);
  font-size:13px;font-weight:500;color:var(--text2);text-align:left;white-space:nowrap;position:relative;
  transition:background var(--d1),color var(--d1),transform var(--d1)}
.nav button:hover{background:var(--hover);color:var(--text)}
.nav button:active{transform:scale(.94);transition:transform .12s var(--spring)}
.nav button.active{background:transparent;color:var(--text)}
.nav button.active::before{content:"";position:absolute;left:-6px;top:8px;bottom:8px;width:2px;border-radius:2px;background:var(--primary)}
.nav button svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;opacity:.85}
.nav button.active svg{stroke:var(--accent);opacity:1}
.nav-label{display:flex;align-items:center;gap:4px;font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text3);padding:0 12px;margin:24px 0 8px}
.nav-label svg{width:10px;height:10px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.fav-ic{width:16px;height:16px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;color:#0b0b0d;flex:none}
.fav-empty{font-size:12px;color:var(--text3);padding:8px 12px}
.spacer{flex:1}
/* --- unlocked sidebar: compact rail that expands over content on hover --- */
body.sb-rail .sidebar{width:var(--sb-rail-w);z-index:40}
body.sb-rail .sidebar.open{width:248px;
  background:var(--surface);
  border-right:1px solid var(--border);border-radius:0 var(--r3) var(--r3) 0;
  box-shadow:var(--sh-lg),inset 1px 0 0 rgba(255,255,255,.04),inset -6px 0 16px -8px rgba(0,0,0,.5)}
body.no-glass.sb-rail .sidebar.open,body.perf.sb-rail .sidebar.open{background:var(--surface);-webkit-backdrop-filter:none;backdrop-filter:none}
.sidebar .lbl{white-space:nowrap;transition:opacity var(--d2) var(--ease)}
.sidebar .chev{transition:opacity var(--d2) var(--ease)}
body.sb-rail .sidebar:not(.open) .lbl{opacity:0}
body.sb-rail .sidebar:not(.open) .ws-icons{opacity:0;pointer-events:none}
body.sb-rail .sidebar:not(.open) .chev{opacity:0}
body.sb-rail .sidebar:not(.open) .nav button.active::before{display:none}
#sbScrim{position:fixed;inset:8px;left:var(--sb-rail-w);z-index:2;background:rgba(0,0,0,.38);opacity:0;
  pointer-events:none;transition:opacity .3s var(--ease);border-radius:var(--r3)}
body.sb-scrim-on #sbScrim{opacity:1}
.nav{position:relative}
.nav-ind{display:none!important;position:absolute;left:0;right:0;height:32px;border-radius:var(--r2);background:var(--primary-soft);
  opacity:0;transform:translateY(0);transition:transform var(--d2) var(--spring),opacity var(--d1) var(--ease);z-index:0;pointer-events:none}
.nav-ind.ready{opacity:1}
body.nav-pill .nav button.active{background:transparent}
.nav button{position:relative;z-index:1}
.nav-label{position:relative}
.nav-label:not(:first-of-type)::before{content:"";position:absolute;left:12px;right:12px;top:-12px;height:1px;background:var(--border)}
.nav button,.ws-switch{white-space:nowrap;overflow:hidden;flex:none}
#sbLock.on{color:var(--accent)}
/* --- wordmark --- */
.logo-script{font-family:'Geist',-apple-system,sans-serif;font-size:14px;font-weight:650;letter-spacing:-.02em;line-height:1;color:var(--text)}
.logo-a{font-family:'Geist',-apple-system,sans-serif;font-size:12px;font-weight:700;letter-spacing:-.02em;color:#fff;line-height:1}
.pl-a{font-family:'Geist',-apple-system,sans-serif;font-size:26px;font-weight:700;letter-spacing:-.02em;color:#fff;line-height:1}

/* ============ TOOLTIP ============ */
[data-tip]{position:relative}
[data-tip]::after{content:attr(data-tip);position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%) translateY(-4px);
  padding:5px 9px;border-radius:var(--r1);background:color-mix(in srgb,var(--card) 92%,transparent);color:var(--text);
  font-size:11.5px;font-weight:550;letter-spacing:-.005em;white-space:nowrap;border:1px solid var(--border2);
  box-shadow:var(--sh-md);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
  opacity:0;pointer-events:none;transition:opacity var(--d1) var(--ease),transform var(--d1) var(--ease);z-index:var(--z-drop)}
[data-tip]:hover::after,[data-tip]:focus-visible::after{opacity:1;transform:translateX(-50%) translateY(0);transition-delay:.35s}
body.no-glass [data-tip]::after,body.perf [data-tip]::after{-webkit-backdrop-filter:none;backdrop-filter:none}

/* ============ COMMAND PALETTE ============ */
.cmdk-overlay{position:fixed;inset:0;z-index:var(--z-modal);display:flex;align-items:flex-start;justify-content:center;padding:14vh 24px 24px;
  background:rgba(4,4,6,.55);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity var(--d2) var(--ease)}
.cmdk-overlay.show{opacity:1;pointer-events:auto}
.cmdk{width:min(560px,100%);background:color-mix(in srgb,var(--card) 94%,transparent);border:1px solid var(--border2);border-radius:var(--r4);
  box-shadow:var(--sh-lg);-webkit-backdrop-filter:blur(24px) saturate(1.4);backdrop-filter:blur(24px) saturate(1.4);overflow:hidden;
  transform:scale(.96) translateY(-8px);opacity:0;transition:transform var(--d2) var(--spring),opacity var(--d2) var(--ease)}
.cmdk-overlay.show .cmdk{transform:none;opacity:1}
body.no-glass .cmdk,body.perf .cmdk{background:var(--card);-webkit-backdrop-filter:none;backdrop-filter:none}
.cmdk-input-row{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border)}
.cmdk-input-row svg{width:16px;height:16px;stroke:var(--text3);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
.cmdk-input-row input{flex:1;height:auto;border:none;background:none;padding:0;font-size:14.5px;box-shadow:none!important}
.cmdk-input-row input:focus{border:none;box-shadow:none!important;background:none}
.cmdk-input-row kbd{font-size:11px}
.cmdk-list{max-height:340px;overflow-y:auto;padding:6px}
.cmdk-item{display:flex;align-items:center;gap:12px;padding:9px 10px;border-radius:var(--r2);cursor:pointer;color:var(--text2);transition:background var(--d1)}
.cmdk-item svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none;opacity:.8}
.cmdk-item .cmdk-t{flex:1;font-size:13px;color:var(--text);font-weight:500}
.cmdk-item .cmdk-g{font-size:11px;color:var(--text3)}
.cmdk-item:hover,.cmdk-item.kb{background:var(--hover)}
.cmdk-empty{padding:32px 16px;text-align:center;font-size:13px;color:var(--text3)}

/* ============ VIEWS ============ */
.view{display:none}
.view.active{display:block;max-width:var(--container-w);margin:0 auto}
.view.active>*{animation:fadeUp var(--d3) var(--ease) backwards}
.view.active>*:nth-child(2){animation-delay:.05s}
.view.active>*:nth-child(3){animation-delay:.1s}
.view.active>*:nth-child(4){animation-delay:.15s}
@keyframes fadeUp{from{opacity:0;transform:translateY(10px);filter:blur(3px)}to{opacity:1;transform:none;filter:none}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes popIn{from{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:none}}
@keyframes spin{to{transform:rotate(360deg)}}
.page-head{margin-bottom:32px}
.page-head h1{font-size:24px;font-weight:650;letter-spacing:-.025em;line-height:1.2}
.page-head p{margin-top:8px;font-size:13.5px;color:var(--text3);letter-spacing:-.005em}
body.compact .page-head{margin-bottom:20px}
.section-title{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text3);margin-bottom:16px}
*+.section-title{margin-top:24px}
.card>.section-title:first-child,.card>*:first-child>.section-title:first-child{margin-top:0}

/* ============ BUTTONS ============ */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:34px;padding:0 16px;
  border-radius:var(--r2);font-size:13px;font-weight:550;letter-spacing:-.005em;white-space:nowrap;position:relative;
  background:linear-gradient(180deg,color-mix(in srgb,var(--primary) 85%,#fff 15%),var(--primary));color:#fff;border:none;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 1px 2px rgba(0,0,0,.3);
  transition:box-shadow var(--d2) var(--ease),transform var(--d1) var(--ease),filter var(--d2)}
.btn:hover{box-shadow:inset 0 1px 0 rgba(255,255,255,.18),var(--sh-glow);filter:brightness(1.06)}
.btn:active{transform:translateY(1px) scale(.99)}
.btn:disabled{opacity:.45;pointer-events:none}
.btn svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.btn.sm{height:28px;padding:0 12px;font-size:12.5px;border-radius:var(--r1)}
.btn.lg{height:40px;padding:0 24px;font-size:14px;border-radius:var(--r2)}
.btn.secondary{background:rgba(255,255,255,.05);color:var(--text);border:1px solid var(--border2);box-shadow:none;
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
[data-theme="light"] .btn.secondary{background:rgba(255,255,255,.6)}
.btn.secondary:hover{background:var(--hover);border-color:var(--text3);box-shadow:var(--sh-sm);filter:none}
.btn.ghost{background:transparent;color:var(--text2);box-shadow:none;border:none}
.btn.ghost:hover{background:var(--hover);color:var(--text);box-shadow:none;filter:none}
.btn.danger{background:var(--red-soft);color:var(--red);box-shadow:none;border:1px solid transparent}
.btn.danger:hover{border-color:rgba(239,68,68,.4);box-shadow:0 4px 16px rgba(239,68,68,.15);filter:none}
.btn.loading{color:transparent;pointer-events:none}
.btn.loading::after{content:"";position:absolute;width:14px;height:14px;border-radius:50%;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;animation:spin .7s linear infinite}
.linklike{background:none;border:none;color:var(--text3);font-size:12px;cursor:pointer;padding:0;transition:color var(--d1)}
.linklike:hover{color:var(--red)}
.acct-actions{display:flex;align-items:center;gap:14px;margin-top:3px}
.linklike.fund:hover{color:var(--green)}

/* ============ INPUTS ============ */
input[type="text"],input[type="email"],input[type="number"],input[type="password"],input[type="date"],input[type="search"],textarea{
  width:100%;height:36px;padding:0 12px;border-radius:var(--r2);
  background:var(--card);border:1px solid var(--border2);color:var(--text);
  font:inherit;font-size:13px;letter-spacing:-.005em;
  transition:border-color var(--d2) var(--ease),box-shadow var(--d2) var(--ease),background var(--d2)}
textarea{height:auto;min-height:76px;padding:12px 12px;resize:vertical;line-height:1.55}
input::placeholder,textarea::placeholder{color:var(--text3)}
input:hover:not(:focus),textarea:hover:not(:focus){border-color:var(--text3)}
input:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 22%,transparent);background:var(--surface)}
input:invalid:not(:placeholder-shown):focus,textarea:invalid:not(:placeholder-shown):focus{border-color:rgba(239,68,68,.65);box-shadow:0 0 0 3px rgba(239,68,68,.18)}
input:invalid:not(:placeholder-shown):not(:focus){border-color:rgba(239,68,68,.65)}
input[type="date"]::-webkit-calendar-picker-indicator{filter:invert(.6);cursor:pointer}
[data-theme="light"] input[type="date"]::-webkit-calendar-picker-indicator{filter:none;opacity:.5}
.search{padding-left:32px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%237B7B85' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M21 21l-4.3-4.3'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:10px center;background-size:14px}
.field{margin-bottom:16px}
.label{display:block;font-size:12px;font-weight:550;color:var(--text2);margin-bottom:8px;letter-spacing:-.005em}
.label .muted,.label span.opt{color:var(--text3);font-weight:450}
input[type="color"]{width:36px;height:36px;padding:4px;border:1px solid var(--border2);border-radius:var(--r2);background:var(--card);cursor:pointer;transition:border-color var(--d1)}
input[type="color"]:hover{border-color:var(--text3)}
input[type="color"]::-webkit-color-swatch-wrapper{padding:0}
input[type="color"]::-webkit-color-swatch{border:none;border-radius:calc(var(--r2) - 4px)}

/* ============ CUSTOM SELECT ============ */
.sel{position:relative;min-width:0}
.sel select{position:absolute;inset:0;opacity:0;pointer-events:none}
.sel-btn{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;height:36px;padding:0 12px 0 12px;
  border-radius:var(--r2);background:var(--card);border:1px solid var(--border2);color:var(--text);font-size:13px;letter-spacing:-.005em;
  transition:border-color var(--d2),box-shadow var(--d2)}
.sel-btn:hover{border-color:var(--text3)}
.sel.open .sel-btn{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 22%,transparent)}
.sel-btn svg{width:13px;height:13px;stroke:var(--text3);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:transform var(--d2) var(--ease)}
.sel.open .sel-btn svg{transform:rotate(180deg)}
.sel-btn span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sel-menu{position:absolute;top:calc(100% + 6px);left:0;min-width:100%;z-index:var(--z-drop);padding:4px;
  background:color-mix(in srgb,var(--card) 88%,transparent);border:1px solid var(--border2);border-radius:var(--r2);
  box-shadow:var(--sh-lg);-webkit-backdrop-filter:blur(16px) saturate(1.4);backdrop-filter:blur(16px) saturate(1.4);
  opacity:0;transform:translateY(-4px) scale(.98);transform-origin:top;pointer-events:none;
  transition:opacity var(--d2) var(--ease),transform var(--d2) var(--ease);max-height:280px;overflow-y:auto}
body.no-glass .sel-menu,body.perf .sel-menu{background:var(--card);-webkit-backdrop-filter:none;backdrop-filter:none}
.sel.open .sel-menu{opacity:1;transform:none;pointer-events:auto}
.sel-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;border-radius:var(--r1);
  font-size:13px;color:var(--text2);cursor:pointer;white-space:nowrap;transition:background var(--d1),color var(--d1)}
.sel-item:hover,.sel-item.kb{background:var(--hover);color:var(--text)}
.sel-item.sel-on{color:var(--text);font-weight:550}
.sel-item svg{width:13px;height:13px;stroke:var(--primary);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* ============ SWITCH ============ */
.switch{position:relative;display:inline-flex;align-items:center;cursor:pointer;flex:none}
.switch input{position:absolute;opacity:0;width:100%;height:100%;cursor:pointer}
.sw{width:36px;height:21px;border-radius:99px;background:var(--border2);position:relative;transition:background var(--d2) var(--ease);flex:none}
.sw::after{content:"";position:absolute;top:2px;left:2px;width:17px;height:17px;border-radius:50%;background:#fff;
  box-shadow:0 1px 3px rgba(0,0,0,.4);transition:transform var(--d2) var(--spring)}
.switch input:checked+.sw{background:var(--primary)}
.switch input:checked+.sw::after{transform:translateX(15px)}
.switch input:focus-visible+.sw{outline:2px solid var(--primary);outline-offset:2px}
.switch:active .sw::after{width:20px}

/* ============ SLIDER ============ */
input[type="range"]{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:99px;
  background:linear-gradient(90deg,var(--primary) 50%,var(--border2) 50%);outline:none;cursor:pointer;transition:none}
input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;
  background:#fff;border:none;box-shadow:0 0 0 4px color-mix(in srgb,var(--primary) 25%,transparent),0 2px 6px rgba(0,0,0,.4);
  transition:box-shadow var(--d2) var(--ease),transform var(--d1)}
input[type="range"]::-webkit-slider-thumb:hover{transform:scale(1.15);box-shadow:0 0 0 6px color-mix(in srgb,var(--primary) 30%,transparent),0 2px 8px rgba(0,0,0,.4)}
input[type="range"]:active::-webkit-slider-thumb{transform:scale(1.05)}

/* ============ CARDS ============ */
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--r3);padding:24px;box-shadow:var(--sh-sm)}
body.compact .card{padding:16px}
.card+.card{margin-top:16px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}

/* ============ KPI ============ */
.kpi-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-top:24px;margin-bottom:24px}
.stats-section{margin-top:32px}
.stats-section>h3{font-size:13px;font-weight:600;letter-spacing:-.01em;margin-bottom:12px;color:var(--text2)}
.two-col-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:stretch}
.two-col-row .card{height:100%;margin-top:0}
.bw-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 40px}
.bw-grid .bw-row{border-bottom:none}
.eq-wrap{position:relative}
.eq-tip{position:absolute;pointer-events:none;transform:translate(-50%,-100%) translateY(-12px) scale(.94);background:var(--card);border:1px solid var(--border2);border-radius:10px;padding:8px 12px;font-size:12px;line-height:1.5;box-shadow:0 12px 32px rgba(0,0,0,.35);opacity:0;transition:opacity .16s ease,transform .22s cubic-bezier(.34,1.56,.64,1);white-space:nowrap;z-index:5}
.eq-tip.show{opacity:1;transform:translate(-50%,-100%) translateY(-12px) scale(1)}
.eq-tip .tt-d{font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--text3);font-weight:600;margin-bottom:2px}
.eq-tip .tt-v{font-size:15px;font-weight:700}
.eq-tip .tt-p{font-size:11.5px;color:var(--text3)}
.cal-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:14px}
.cal-nav{display:flex;align-items:center;gap:4px}
.cal-nav button{width:30px;height:30px;border-radius:8px;background:var(--hover);color:var(--text2);font-size:17px;line-height:1;display:flex;align-items:center;justify-content:center;transition:background var(--d1),color var(--d1)}
.cal-nav button:hover{background:var(--border);color:var(--text)}
.cal-title{font-size:14.5px;font-weight:650;min-width:148px;text-align:center}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.cal-dow{font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--text3);text-align:center;padding:2px 0 6px}
.cal-cell{min-height:76px;border-radius:10px;border:1px solid var(--border);padding:8px 9px;display:flex;flex-direction:column;gap:3px;background:var(--surface);transition:border-color var(--d1),transform var(--d1)}
.cal-cell.win{background:var(--green-soft);border-color:rgba(34,197,94,.28)}
.cal-cell.loss{background:var(--red-soft);border-color:rgba(239,68,68,.28)}
.cal-cell.win:hover,.cal-cell.loss:hover{transform:translateY(-2px);border-color:var(--border2)}
.cal-cell.out{opacity:.3;background:transparent;border-style:dashed}
.cal-cell.today{box-shadow:inset 0 0 0 2px var(--accent)}
.cal-cell .cd{font-size:10.5px;color:var(--text3);font-weight:600}
.cal-cell .cp{font-size:12.5px;font-weight:700}
.cal-cell .cn{font-size:10px;color:var(--text3)}
.cal-cell[data-day]{cursor:pointer}
.modal.wide{width:min(720px,96vw)}
/* ============ HOME ============ */
.home-hero{padding:26px 4px 4px;display:flex;flex-direction:column;gap:13px}
.home-badge{display:inline-flex;align-items:center;gap:8px;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text3);font-weight:600}
.home-badge .dot{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 10px var(--green)}
#homeGreet{font-size:38px;font-weight:700;letter-spacing:-.03em;margin:0}
.home-sub{color:var(--text2);font-size:14px;margin:0}
.home-cta{display:flex;gap:10px;margin-top:6px;flex-wrap:wrap}
.home-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:24px 0}
.hk{background:var(--card);border:1px solid var(--border);border-radius:var(--r3);padding:16px 18px;box-shadow:var(--sh-sm)}
.hk-l{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text3);font-weight:600;margin-bottom:6px}
.hk-v{font-size:22px;font-weight:700;letter-spacing:-.02em}
.hk-l-row{display:flex;align-items:center;gap:6px;margin-bottom:6px}
.hk-eye{width:20px;height:20px;display:flex;align-items:center;justify-content:center;color:var(--text3);cursor:pointer;border-radius:4px;transition:color var(--d1),background var(--d1);margin-left:auto;flex-shrink:0;background:none;border:none;padding:0}
.hk-eye:hover{color:var(--text);background:var(--hover)}
.hk-eye svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.pnl-blurred{filter:blur(7px);user-select:none;transition:filter .25s ease}
.home-comm-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px;flex-wrap:wrap}.home-community .section-title{color:var(--text)!important;letter-spacing:.04em}
.dc-btn{background:#5865F2;text-decoration:none}
.dc-btn:hover{filter:brightness(1.1);text-decoration:none}
@media (max-width:900px){.home-kpis{grid-template-columns:repeat(2,1fr)}#homeGreet{font-size:30px}}

/* ---- logo loop (vanilla port of React Bits LogoLoop) ---- */
.logoloop{position:relative;overflow:hidden;--ll-gap:56px;--ll-h:30px;padding:16px 0 8px}
.logoloop::before,.logoloop::after{display:none}
.logoloop__track{display:flex;width:max-content;will-change:transform}
.logoloop__list{display:flex;align-items:center;list-style:none;margin:0;padding:0}
.logoloop__item{flex:0 0 auto;margin-right:var(--ll-gap)}
.logoloop__link{display:inline-flex;align-items:center;gap:12px;color:var(--text3);text-decoration:none;transition:color .25s var(--ease),transform .25s var(--ease)}
.logoloop__link:hover{color:#5865F2;transform:scale(1.12)}
.logoloop__link svg{height:var(--ll-h);width:auto;display:block}
.logoloop__word{font-weight:700;font-size:15px;letter-spacing:.16em;white-space:nowrap}
.ai-local-note{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:12px;background:var(--amber-soft);border:1px solid rgba(245,158,11,.25);color:var(--amber);font-size:12.5px;line-height:1.55;margin-bottom:16px}
.ai-local-note b{color:var(--amber);font-weight:650}
.ai-local-note svg{width:16px;height:16px;stroke:var(--amber);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.sess-row{display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border);font-size:13px}
.sess-row:last-child{border-bottom:none}
.sess-bar{flex:1;height:5px;border-radius:99px;background:var(--border2);margin:0 12px;overflow:hidden}
.sess-bar i{display:block;height:100%;border-radius:99px}
.bw-row{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--border)}
.bw-row:last-child{border-bottom:none}
.bw-label{font-size:11.5px;color:var(--text3);text-transform:uppercase;letter-spacing:.06em;font-weight:600}
.bw-date{font-size:12px;color:var(--text3);margin-top:2px}
.insight-row{display:flex;gap:12px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--border);font-size:13px;line-height:1.55;color:var(--text2)}
.insight-row:last-child{border-bottom:none}
.insight-row svg{width:15px;height:15px;flex:none;margin-top:1px;stroke:var(--accent);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.kpi{background:var(--card);border:1px solid var(--border);border-radius:var(--r2);padding:16px;
  transition:border-color var(--d2),transform var(--d2) var(--ease),box-shadow var(--d2)}
.kpi:hover{border-color:var(--border2);transform:translateY(-2px);box-shadow:var(--sh-md)}
.kpi .k{font-size:11px;font-weight:550;letter-spacing:.04em;text-transform:uppercase;color:var(--text3)}
.kpi .v{font-size:22px;font-weight:650;letter-spacing:-.03em;margin-top:8px;line-height:1.15}
.kpi .sub{font-size:11.5px;color:var(--text3);margin-top:4px}

/* ============ CHARTS ============ */
.charts-row{display:grid;grid-template-columns:1.6fr 1fr;gap:16px;margin-top:24px;align-items:stretch}
.chart-card{display:flex;flex-direction:column;height:100%;box-sizing:border-box}
.chart-card h4{font-size:13px;font-weight:600;letter-spacing:-.01em;flex:none}
.chart-card .sub{font-size:11.5px;color:var(--text3);margin:2px 0 16px;flex:none}
.chart-card .chart-body{flex:1 1 auto;display:flex;flex-direction:column;justify-content:center;align-items:stretch;min-height:190px}
.chart-card .chart-body svg{width:100%;height:auto;max-height:100%}
.chart-card .chart-body>.donut-wrap{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:12px}
.eq-area{opacity:.5}
.eq-path{stroke-dasharray:2000;stroke-dashoffset:2000;animation:drawPath 1.6s var(--ease) forwards}
@keyframes drawPath{to{stroke-dashoffset:0}}
.cbar{transform-origin:bottom;transform:scaleY(0);animation:growY .7s var(--ease) forwards}
@keyframes growY{to{transform:scaleY(1)}}
.donut-seg{stroke-dasharray:var(--full);stroke-dashoffset:var(--full);animation:donutSpin 1.2s var(--ease) forwards}
@keyframes donutSpin{to{stroke-dashoffset:var(--target)}}
.donut-val{font-size:26px;font-weight:650;letter-spacing:-.03em;fill:var(--text)}
.donut-lbl{font-size:11px;fill:var(--text3)}
.wd-row{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.wd-row .d{width:34px;font-size:11.5px;font-weight:550;color:var(--text3)}
.wd-row .track{flex:1;height:8px;border-radius:99px;background:var(--hover);overflow:hidden}
.wd-row .bar{height:100%;border-radius:99px;transform-origin:left;animation:growX .9s var(--ease) both}
@keyframes growX{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.wd-row .val{width:72px;text-align:right;font-size:12px;font-weight:550}
.spark{margin-top:12px;opacity:.9}

/* ============ AI / NOTICES ============ */
.notice{display:flex;align-items:flex-start;gap:12px;padding:12px 16px;border-radius:var(--r2);font-size:13px;
  background:var(--hover);border:1px solid var(--border2);color:var(--text2);animation:fadeUp .35s var(--ease) both}
.notice.ok{background:var(--green-soft);border-color:rgba(34,197,94,.25);color:var(--green)}
.notice.warn{background:var(--amber-soft);border-color:rgba(245,158,11,.25);color:var(--amber)}
.notice.err{background:var(--red-soft);border-color:rgba(239,68,68,.25);color:var(--red)}
.spinner{width:14px;height:14px;border-radius:50%;border:2px solid var(--border2);border-top-color:var(--primary);animation:spin .7s linear infinite;flex:none;margin-top:2px}

/* ============ SKELETON ============ */
.skel{position:relative;overflow:hidden;background:var(--hover);border-radius:var(--r1)}
.skel::after{content:"";position:absolute;inset:0;transform:translateX(-100%);
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.06),transparent);animation:shimmer 1.4s infinite}
@keyframes shimmer{to{transform:translateX(100%)}}

/* ============ BADGES / TAGS ============ */
.badge{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 8px;border-radius:99px;font-size:10.5px;font-weight:600;letter-spacing:.03em;text-transform:uppercase}
.badge .dot{width:5px;height:5px;border-radius:50%;background:currentColor}
.badge.eval{background:var(--amber-soft);color:var(--amber);border:1px solid rgba(245,158,11,.25)}
.badge.funded{background:var(--green-soft);color:var(--green);border:1px solid rgba(34,197,94,.25)}
.tags{display:flex;flex-wrap:wrap;gap:8px}
.tag{height:28px;padding:0 12px;border-radius:99px;font-size:12.5px;font-weight:500;color:var(--text2);
  background:var(--card);border:1px solid var(--border2);cursor:pointer;
  transition:all var(--d2) var(--ease)}
.tag:hover{border-color:var(--text3);color:var(--text);transform:translateY(-1px)}
.tag.on{background:var(--primary-soft);border-color:color-mix(in srgb,var(--primary) 50%,transparent);color:var(--accent)}
.tag.on.bad{background:var(--red-soft);border-color:rgba(239,68,68,.5);color:var(--red)}
.tag-chip{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:99px;font-size:11.5px;
  background:var(--hover);border:1px solid var(--border2);color:var(--text2);margin:0 4px 4px 0}

/* ============ SEGMENTED TABS ============ */
.seg{position:relative;display:inline-flex;gap:2px;padding:4px;background:var(--card);border:1px solid var(--border);border-radius:var(--r2)}
.seg button{position:relative;z-index:1;display:flex;align-items:center;gap:8px;height:28px;padding:0 12px;border-radius:calc(var(--r2) - 4px);
  font-size:12.5px;font-weight:550;color:var(--text3);transition:color var(--d2)}
.seg button:hover{color:var(--text2)}
.seg button.on{color:var(--text)}
.seg button svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.seg-ind{position:absolute;top:4px;bottom:4px;z-index:0;border-radius:calc(var(--r2) - 4px);background:var(--hover);
  border:1px solid var(--border2);box-shadow:var(--sh-sm);transition:transform var(--d2) var(--spring),width var(--d2) var(--ease)}

/* ============ TOOLBAR ============ */
.toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px;position:relative;z-index:5}
.toolbar .sel{min-width:150px}
.toolbar .search{width:230px;flex:none}

/* ============ TABLE ============ */
.table-scroll{border:1px solid var(--border);border-radius:var(--r3);overflow:hidden;overflow-y:auto;max-height:calc(100vh - 300px);background:var(--card);box-shadow:var(--sh-sm)}
table{width:100%;border-collapse:collapse;font-size:13px}
thead th{position:sticky;top:0;z-index:2;text-align:left;font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--text3);
  padding:12px 16px;background:color-mix(in srgb,var(--card) 92%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  border-bottom:1px solid var(--border2);white-space:nowrap}
tbody td{padding:12px 16px;border-bottom:1px solid var(--border);color:var(--text2);white-space:nowrap}
tbody tr{cursor:pointer;transition:background var(--d1)}
tbody tr:hover{background:var(--hover)}
tbody tr:last-child td{border-bottom:none}
.pnl-cell{font-weight:600;letter-spacing:-.01em}
.ellip{max-width:260px;overflow:hidden;text-overflow:ellipsis}
.cam{color:var(--text3)}
.ci{width:12px;height:12px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;vertical-align:-1.5px}

/* ============ GALLERY ============ */
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px}
.g-card{background:var(--card);border:1px solid var(--border);border-radius:var(--r3);overflow:hidden;cursor:pointer;
  transition:transform var(--d2) var(--ease),box-shadow var(--d2),border-color var(--d2);animation:popIn .5s var(--ease) both}
.g-card:hover{transform:translateY(-3px);box-shadow:var(--sh-md);border-color:var(--border2)}
.g-card .cover{height:120px;overflow:hidden;position:relative}
.g-card .cover img{width:100%;height:100%;object-fit:cover;transition:transform var(--d3) var(--ease)}
.g-card:hover .cover img{transform:scale(1.04)}
.g-card .ph{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:700;letter-spacing:.02em}
.g-card .ph.pos{background:linear-gradient(145deg,rgba(34,197,94,.16),rgba(34,197,94,.05));color:var(--green)}
.g-card .ph.neg{background:linear-gradient(145deg,rgba(239,68,68,.16),rgba(239,68,68,.05));color:var(--red)}
.g-card .ph.neu{background:linear-gradient(145deg,var(--hover),var(--card));color:var(--text3)}
.g-card .body{padding:16px 16px 16px}
.g-card .date{font-size:11.5px;color:var(--text3);font-weight:500}
.g-card .pnl{font-size:18px;font-weight:650;letter-spacing:-.02em;margin-top:4px}
.g-card .meta{display:flex;align-items:center;gap:8px;margin-top:8px}
.g-card .why{font-size:12.5px;color:var(--text2);margin-top:12px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* ============ EMPTY STATES ============ */
.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;
  padding:56px 24px;color:var(--text3);font-size:13.5px;border:1px dashed var(--border2);border-radius:var(--r3)}
.empty-ill{width:120px;height:80px;margin-bottom:12px}
.empty-t{font-size:15px;font-weight:600;color:var(--text);letter-spacing:-.015em}
.empty-d{max-width:320px;line-height:1.6}
.empty .btn{margin-top:16px}

/* ============ LOG FORM ============ */
.acct-chips{display:flex;flex-wrap:wrap;gap:8px}
.acct-chip{display:flex;align-items:center;gap:8px;height:36px;padding:0 16px;border-radius:var(--r2);
  background:var(--card);border:1px solid var(--border2);cursor:pointer;font-size:13px;font-weight:500;color:var(--text2);
  transition:all var(--d2) var(--ease)}
.acct-chip:hover{border-color:var(--text3);color:var(--text)}
.acct-chip.selected{border-color:var(--primary);background:var(--primary-soft);color:var(--text);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 15%,transparent)}
.rating{display:flex;gap:2px}
.rating button{color:var(--border2);transition:color var(--d1),transform var(--d1)}
.rating button svg{width:22px;height:22px;fill:currentColor;stroke:none;display:block}
.rating button:hover{transform:scale(1.15)}
.rating button.on{color:var(--amber)}
.dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:28px;
  border:1.5px dashed var(--border2);border-radius:var(--r3);color:var(--text3);font-size:13px;cursor:pointer;text-align:center;
  transition:border-color var(--d2),background var(--d2)}
.dropzone:hover,.dropzone.drag{border-color:var(--primary);background:var(--primary-soft);color:var(--text2)}
.dropzone .ic svg{width:26px;height:26px;stroke:var(--text3);fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.dropzone b{color:var(--accent);font-weight:550}
.photo-strip{display:flex;flex-wrap:wrap;gap:12px;margin-top:12px}
.photo-thumb{position:relative;width:88px;height:64px;border-radius:var(--r2);overflow:hidden;border:1px solid var(--border2);animation:popIn .35s var(--ease) both}
.photo-thumb img{width:100%;height:100%;object-fit:cover}
.photo-thumb .rm{position:absolute;top:4px;right:4px;width:18px;height:18px;border-radius:6px;display:flex;align-items:center;justify-content:center;
  background:rgba(0,0,0,.65);color:#fff;font-size:10px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.edit-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;margin-bottom:16px;
  border-radius:var(--r2);background:var(--primary-soft);border:1px solid color-mix(in srgb,var(--primary) 35%,transparent);font-size:13px;color:var(--accent)}

/* ============ ACCOUNTS ============ */
.acct-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-top:24px}
.acct-card{background:var(--card);border:1px solid var(--border);border-radius:var(--r3);padding:20px;
  transition:transform var(--d2) var(--ease),box-shadow var(--d2),border-color var(--d2);animation:popIn .5s var(--ease) both}
.acct-card:hover{transform:translateY(-2px);box-shadow:var(--sh-md);border-color:var(--border2)}
.acct-card .top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.acct-card .nm{font-size:14.5px;font-weight:600;letter-spacing:-.015em}
.pnl-big{font-size:26px;font-weight:650;letter-spacing:-.03em;margin:12px 0 2px}
.mrow{display:flex;gap:24px;margin-top:12px}
.mrow .v{font-size:14px;font-weight:600}
.mrow .k{font-size:11px;color:var(--text3);text-transform:uppercase;letter-spacing:.05em;margin-top:2px}

/* ============ MODAL ============ */
.overlay{position:fixed;inset:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;padding:24px;
  background:rgba(0,0,0,.6);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  opacity:0;pointer-events:none;transition:opacity var(--d2) var(--ease)}
body.no-glass .overlay,body.perf .overlay{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(0,0,0,.75)}
.overlay.show{opacity:1;pointer-events:auto}
.modal{width:min(560px,100%);max-height:86vh;overflow-y:auto;background:var(--card);border:1px solid var(--border2);
  border-radius:var(--r4);padding:24px;box-shadow:var(--sh-lg);
  transform:scale(.96) translateY(10px);opacity:0;transition:transform var(--d2) var(--spring),opacity var(--d2) var(--ease)}
.overlay.show .modal{transform:none;opacity:1}
.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:20px}
.modal-head>div:first-child>div:first-child{font-size:24px;font-weight:650;letter-spacing:-.03em}
.xbtn{width:28px;height:28px;border-radius:var(--r1);display:flex;align-items:center;justify-content:center;color:var(--text3);font-size:13px;
  transition:background var(--d1),color var(--d1)}
.xbtn:hover{background:var(--hover);color:var(--text)}
.kv{margin-bottom:16px}
.kv .k{font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--text3);margin-bottom:4px}
.kv .v{font-size:13.5px;color:var(--text2);line-height:1.6}
.modal-photos{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px}
.modal-photos img{width:104px;height:72px;object-fit:cover;border-radius:var(--r2);border:1px solid var(--border2);cursor:zoom-in;transition:transform var(--d1)}
.modal-photos img:hover{transform:scale(1.04)}
.modal-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:24px;padding-top:16px;border-top:1px solid var(--border)}
.lightbox{position:fixed;inset:0;z-index:calc(var(--z-modal) + 10);display:flex;align-items:center;justify-content:center;padding:32px;
  background:rgba(0,0,0,.85);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);opacity:0;pointer-events:none;transition:opacity var(--d2)}
.lightbox.show{opacity:1;pointer-events:auto}
.lightbox img{max-width:100%;max-height:100%;border-radius:var(--r3);box-shadow:var(--sh-lg)}

/* ============ TOAST (sonner style) ============ */
.toast{position:fixed;right:20px;bottom:20px;z-index:var(--z-toast);display:flex;align-items:center;gap:12px;
  min-width:260px;max-width:380px;padding:12px 16px;border-radius:var(--r3);font-size:13px;font-weight:500;color:var(--text);
  background:color-mix(in srgb,var(--card) 90%,transparent);border:1px solid var(--border2);box-shadow:var(--sh-lg);
  -webkit-backdrop-filter:blur(16px) saturate(1.4);backdrop-filter:blur(16px) saturate(1.4);overflow:hidden;
  transform:translateY(16px) scale(.97);opacity:0;pointer-events:none;transition:transform var(--d2) var(--spring),opacity var(--d2)}
body.no-glass .toast,body.perf .toast{background:var(--card);-webkit-backdrop-filter:none;backdrop-filter:none}
.toast.show{transform:none;opacity:1;pointer-events:auto}
.t-ic{width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex:none}
.t-ic svg{width:12px;height:12px;stroke:#fff;fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.toast.success .t-ic{background:var(--green)}
.toast.error .t-ic{background:var(--red)}
.toast.warn .t-ic{background:var(--amber)}
.toast.info .t-ic{background:var(--primary)}
.t-bar{position:absolute;left:0;bottom:0;height:2px;background:linear-gradient(90deg,var(--primary),var(--accent));width:100%;transform-origin:left}
.toast.show .t-bar{animation:tbar 3.2s linear forwards}
@keyframes tbar{from{transform:scaleX(1)}to{transform:scaleX(0)}}

/* ============ SETTINGS ============ */
.set-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
.set-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--border)}
.set-row:last-child{border-bottom:none}
.set-t{font-size:13px;font-weight:550;letter-spacing:-.005em}
.set-d{font-size:11.5px;color:var(--text3);margin-top:2px;line-height:1.45}
.set-ctl{display:flex;align-items:center;gap:12px;flex:none}
.set-ctl input[type="range"]{width:140px}
.set-val{font-size:11.5px;color:var(--text3);min-width:38px;text-align:right;font-weight:500}
.swatches{display:flex;gap:8px}
.swatch{width:22px;height:22px;border-radius:50%;cursor:pointer;border:2px solid transparent;transition:transform var(--d1),border-color var(--d1)}
.swatch:hover{transform:scale(1.12)}
.swatch.on{border-color:var(--text);transform:scale(1.08)}
.kbd-row{display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border);font-size:13px;color:var(--text2)}
.kbd-row:last-child{border-bottom:none}
kbd{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 8px;
  border-radius:6px;background:var(--hover);border:1px solid var(--border2);border-bottom-width:2px;
  font-family:'Geist Mono',ui-monospace,monospace;font-size:11px;color:var(--text2)}

/* ============ AI ANALYSIS ============ */
.ai-head{display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap;margin-bottom:24px}
.ai-head h1{font-size:24px;font-weight:650;letter-spacing:-.025em;line-height:1.2}
.ai-head p{margin-top:8px;font-size:13.5px;color:var(--text3);letter-spacing:-.005em}
.ai-filters{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin-bottom:24px}
.ai-filter{display:flex;flex-direction:column;gap:6px;min-width:150px}
.ai-filter label{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text3)}
.ai-filter select{height:36px}
.ai-chips{display:flex;flex-wrap:wrap;gap:6px;max-width:220px}
.ai-chip{height:28px;padding:0 10px;border-radius:99px;border:1px solid var(--border2);background:var(--card);font-size:12px;color:var(--text2);cursor:pointer;transition:all var(--d1)}
.ai-chip.on{background:var(--primary);border-color:var(--primary);color:#fff}
.ai-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:10px;padding:80px 24px;color:var(--text3)}
.ai-empty svg{width:56px;height:56px;stroke:var(--border2);fill:none;stroke-width:1.4}
.ai-report{display:flex;flex-direction:column;gap:16px}
.ai-report .stats-section{margin-top:8px}
.ai-summary-text{font-size:13.5px;line-height:1.7;color:var(--text2)}
.score-grid{display:grid;grid-template-columns:auto 1fr;gap:24px;align-items:center}
.score-ring-wrap{display:flex;flex-direction:column;align-items:center;gap:4px;flex:none}
.score-num{font-size:13px;color:var(--text3);font-weight:550}
.score-cats{display:flex;flex-direction:column;gap:12px}
.score-cat-row{display:grid;grid-template-columns:110px 1fr 38px;align-items:center;gap:12px;font-size:12.5px}
.score-cat-row .track{height:6px;border-radius:99px;background:var(--border2);overflow:hidden}
.score-cat-row .track i{display:block;height:100%;border-radius:99px;background:var(--accent)}
.mistake-grid,.habit-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.mistake-card,.habit-card{background:var(--card);border:1px solid var(--border);border-radius:var(--r2);padding:16px;display:flex;flex-direction:column;gap:8px;transition:border-color var(--d1),transform var(--d1)}
.mistake-card:hover,.habit-card:hover{border-color:var(--border2);transform:translateY(-2px)}
.mistake-card .mc-top,.habit-card .mc-top{display:flex;align-items:center;justify-content:space-between}
.mistake-card .mc-ic,.habit-card .mc-ic{width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:var(--red-soft);flex:none}
.mistake-card .mc-ic svg,.habit-card .mc-ic svg{width:16px;height:16px;stroke:var(--red);fill:none;stroke-width:1.8}
.habit-card .mc-ic{background:var(--green-soft)}
.habit-card .mc-ic svg{stroke:var(--green)}
.mc-title{font-size:13.5px;font-weight:600;letter-spacing:-.01em}
.mc-desc{font-size:12px;color:var(--text3);line-height:1.5}
.mc-stats{display:flex;gap:14px;font-size:11.5px;color:var(--text3);margin-top:2px}
.mc-stats b{color:var(--text)}
.sev{font-size:10px;font-weight:650;letter-spacing:.04em;text-transform:uppercase;padding:2px 8px;border-radius:99px}
.sev.high{background:var(--red-soft);color:var(--red)}
.sev.med{background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent)}
.sev.low{background:var(--border2);color:var(--text3)}
.timeline-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.tl-week{background:var(--card);border:1px solid var(--border);border-radius:var(--r2);padding:14px}
.tl-week .tw-t{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text3)}
.tl-week .tw-v{font-size:17px;font-weight:650;margin-top:6px}
.tl-week .tw-s{font-size:11.5px;color:var(--text3);margin-top:2px}
.rec-list{display:flex;flex-direction:column;gap:0}
.rec-row{display:flex;gap:12px;align-items:flex-start;padding:12px 0;border-bottom:1px solid var(--border);font-size:13px;color:var(--text2);line-height:1.55}
.rec-row:last-child{border-bottom:none}
.rec-row .rn{width:22px;height:22px;border-radius:50%;background:var(--hover);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:650;flex:none;color:var(--text2)}
.pattern-list{display:flex;flex-direction:column;gap:0}
.chat-box{display:flex;flex-direction:column;gap:14px}
.chat-suggest{display:flex;flex-wrap:wrap;gap:8px}
.chat-suggest button{height:30px;padding:0 12px;border-radius:99px;border:1px solid var(--border2);background:var(--card);font-size:12px;color:var(--text2);cursor:pointer;transition:all var(--d1)}
.chat-suggest button:hover{border-color:var(--accent);color:var(--accent)}
.chat-log{display:flex;flex-direction:column;gap:12px;max-height:340px;overflow-y:auto}
.chat-msg{max-width:78%;padding:10px 14px;border-radius:14px;font-size:13px;line-height:1.55}
.chat-msg.me{align-self:flex-end;background:var(--primary);color:#fff}
.chat-msg.ai{align-self:flex-start;background:var(--hover);color:var(--text2)}
.chat-msg.err{align-self:flex-start;background:var(--red-soft);color:var(--red);border:1px solid rgba(239,68,68,.3)}
.chat-msg.err b{color:var(--red)}
.chat-input-row{display:flex;gap:8px}
.chat-input-row input{flex:1}
.chat-trade-row{display:flex;gap:8px;align-items:center}
.chat-trade-row .sel{flex:1;min-width:0}
.heat-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.heat-cell{height:40px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:10px;color:var(--text3);font-weight:600}
.heat-cell .hc-d{position:absolute}
.bar-list{display:flex;flex-direction:column;gap:8px}
.bar-list-row{display:flex;align-items:center;gap:10px;font-size:12.5px}
.bar-list-row .bl-track{flex:1;height:8px;border-radius:99px;background:var(--border2);overflow:hidden}
.bar-list-row .bl-track i{display:block;height:100%;border-radius:99px}
.trade-explorer{margin-top:8px;border-top:1px solid var(--border);padding-top:16px}
.trade-explorer table{width:100%;font-size:12.5px;border-collapse:collapse}
.trade-explorer th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--text3);padding:6px 8px;font-weight:600}
.trade-explorer td{padding:8px 8px;border-top:1px solid var(--border)}
.explorer-empty{min-height:140px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;color:var(--text3);font-size:12.5px;line-height:1.6;border:1px dashed var(--border2);border-radius:var(--r2);padding:24px}
.explorer-empty svg{width:28px;height:28px;stroke:var(--border2);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.explorer-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:4px 0 16px}
.ex-stat{background:var(--hover);border-radius:var(--r2);padding:12px;text-align:center}
.ex-stat .v{display:block;font-size:16px;font-weight:650;letter-spacing:-.01em}
.ex-stat .l{display:block;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text3);margin-top:3px}
.ai-overview{display:grid;grid-template-columns:1.55fr 1fr;gap:16px;align-items:stretch}
.ai-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:16px}
.ai-overview>.card{display:flex;flex-direction:column;margin-top:0}
.ai-overview .ai-kpis{margin-top:auto;padding-top:16px}
.ai-kpi{background:var(--hover);border-radius:var(--r2);padding:10px 12px}
.ai-kpi .l{display:block;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text3)}
.ai-kpi .v{display:block;font-size:15px;font-weight:650;margin-top:3px;letter-spacing:-.01em}
.stats-section .sec-sub{font-size:12px;color:var(--text3);margin:-6px 0 12px}
.dir-tag{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:99px;font-size:10.5px;font-weight:650;letter-spacing:.02em}
.dir-tag.long{background:var(--green-soft);color:var(--green)}
.dir-tag.short{background:var(--red-soft);color:var(--red)}
.dir-tag.mixed{background:var(--border2);color:var(--text3)}
svg .ax{font-size:10px;fill:var(--text3);font-weight:500}

/* ============ RESPONSIVE ============ */
@media(max-width:1100px){
  .kpi-grid{grid-template-columns:repeat(3,1fr)}
  .charts-row{grid-template-columns:1fr}
  .two-col-row{grid-template-columns:1fr}
  .bw-grid{grid-template-columns:1fr;gap:0}
  .cal-cell{min-height:54px;padding:5px 6px}
  .cal-cell .cn{display:none}
  .set-grid{grid-template-columns:1fr}
  .mistake-grid,.habit-grid{grid-template-columns:repeat(2,1fr)}
  .ai-overview{grid-template-columns:1fr}
  .ai-kpis,.explorer-stats{grid-template-columns:repeat(2,1fr)}
  .timeline-row{grid-template-columns:repeat(2,1fr)}
  .score-grid{grid-template-columns:1fr}
}
@media(max-width:820px){
  body{overflow:auto}
  .sidebar{position:sticky;top:0;width:100%!important;height:auto;flex-direction:row;align-items:center;gap:4px;
    padding:8px 12px;background:color-mix(in srgb,var(--bg) 80%,transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
    border-bottom:1px solid var(--border);z-index:20;overflow-x:auto}
  .ws-row{padding:0;margin-right:8px}
  .ws-icons,.nav-label,.fav-empty,#favNav,.spacer{display:none}
  .nav{flex-direction:row;gap:2px}
  .nav button{height:34px;padding:0 12px}
  .nav button.active::before{display:none}
  .frame{position:static;border-radius:0;border:none;box-shadow:none;min-height:calc(100vh - 51px)}
  .frame-head{position:sticky}
  .main{position:static;padding:20px 16px 48px}
  .sidebar .lbl{opacity:1!important}
  body.sb-rail .sidebar{width:100%!important}
  .grid2,.grid3,.grid4{grid-template-columns:1fr}
  .kpi-grid{grid-template-columns:repeat(2,1fr)}
  .two-col-row{grid-template-columns:1fr}
  .mistake-grid,.habit-grid{grid-template-columns:1fr}
  .toolbar .search{width:100%}
  .table-scroll{max-height:none}
}


/* ---- auth & license screens ---- */
.auth-screen{position:fixed;inset:0;z-index:9000;display:flex;align-items:center;justify-content:center;background:var(--surface,#0d0d14)}
.auth-card{width:min(420px,92vw);background:var(--card);border:1px solid var(--border);border-radius:var(--r4,16px);padding:32px;box-shadow:var(--sh-md,0 8px 30px rgba(0,0,0,.35));max-height:92vh;overflow:auto}
.auth-logo{display:flex;align-items:center;gap:12px;margin-bottom:22px}
.auth-logo .badge-logo{width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,var(--primary,#6D5DF6),#4338ca);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:19px;flex-shrink:0}
.auth-logo h2{font-size:19px;font-weight:700;margin:0}
.auth-logo p{font-size:12.5px;color:var(--text3);margin:2px 0 0}
.auth-tabs{display:flex;gap:2px;padding:4px;background:var(--hover);border-radius:var(--r2,8px);margin-bottom:18px}
.auth-tabs button{flex:1;height:32px;border-radius:6px;font-size:13px;font-weight:600;color:var(--text3)}
.auth-tabs button.on{background:var(--card);color:var(--text);box-shadow:0 1px 4px rgba(0,0,0,.25)}
.auth-field{margin-bottom:13px}
.auth-at{display:flex;align-items:center;gap:0}
.auth-at span{padding:0 10px;height:36px;display:flex;align-items:center;background:var(--hover);border:1px solid var(--border);border-right:none;border-radius:8px 0 0 8px;color:var(--text3);font-weight:600}
.auth-at input{border-radius:0 8px 8px 0!important;flex:1}
.auth-err{display:none;margin:0 0 13px;padding:10px 12px;border-radius:8px;background:color-mix(in srgb,var(--red) 10%,transparent);border:1px solid color-mix(in srgb,var(--red) 30%,transparent);color:var(--red);font-size:12.5px}
.auth-err.show{display:block}
.auth-sub{width:100%;justify-content:center;height:40px;font-size:14px}
.auth-note{text-align:center;font-size:11.5px;color:var(--text3);margin-top:14px}
.auth-note a{color:var(--accent)}
.auth-extras{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;font-size:12.5px;color:var(--text2)}
.auth-extras label{display:flex;align-items:center;gap:6px;cursor:pointer}
.auth-extras a{color:var(--accent);text-decoration:none}
.lic-plans{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-bottom:16px}
.lic-plan{border:1px solid var(--border);border-radius:10px;padding:10px 8px;text-align:center;display:flex;flex-direction:column;gap:2px}
.lic-plan b{font-size:12px}
.lic-plan span{font-size:15px;font-weight:700;color:var(--accent)}
.lic-plan.hot{border-color:var(--primary);background:var(--primary-soft,rgba(109,93,246,.08))}
body:not(.is-admin) button[data-view="admin"]{display:none}
/* ---- leaderboard ---- */
.lb-controls{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:18px}
.lb-seg{display:inline-flex;gap:2px;padding:4px;background:var(--hover);border-radius:8px;flex-wrap:wrap}
.lb-seg button{height:28px;padding:0 12px;border-radius:6px;font-size:12px;font-weight:600;color:var(--text3);white-space:nowrap}
.lb-seg button.on{background:var(--card);color:var(--text);box-shadow:0 1px 4px rgba(0,0,0,.25)}
.lb-podium{display:flex;gap:12px;justify-content:center;align-items:flex-end;margin-bottom:20px}
.lb-pod{flex:1;max-width:200px;background:var(--card);border:1px solid var(--border);border-radius:14px;padding:18px 14px;text-align:center}
.lb-pod.p1{border-color:#eab308;padding-top:26px;padding-bottom:26px;box-shadow:0 0 0 3px color-mix(in srgb,#eab308 15%,transparent)}
.lb-pod.p2{border-color:#94a3b8}.lb-pod.p3{border-color:#b45309}
.lb-pod-rank{width:30px;height:30px;margin:0 auto 8px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;background:var(--hover)}
.lb-pod.p1 .lb-pod-rank{background:#eab308;color:#111}.lb-pod.p2 .lb-pod-rank{background:#94a3b8;color:#111}.lb-pod.p3 .lb-pod-rank{background:#b45309;color:#fff}
.lb-pod-name{font-weight:700;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lb-pod-user{font-size:11.5px;color:var(--text3);margin-bottom:6px}
.lb-pod-val{font-size:17px;font-weight:700;color:var(--accent)}
.lb-merow td{background:var(--primary-soft,rgba(109,93,246,.08))}
.lb-me{margin-top:14px;padding:12px 16px;border:1px solid var(--border);border-radius:10px;background:var(--card);font-size:13px;color:var(--text2)}
#lbSearch{height:32px;padding:0 12px;border-radius:8px;border:1px solid var(--border);background:var(--card);color:var(--text);font-size:13px}
/* ---- brokers ---- */
.bk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.bk-card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:18px}
.bk-card.connected{border-color:color-mix(in srgb,var(--green) 45%,transparent)}
.bk-head{display:flex;align-items:center;gap:8px;font-size:15px;margin-bottom:4px}
.bk-dot{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 6px var(--green)}
.bk-desc{font-size:12px;color:var(--text3);margin-bottom:12px}
.bk-soon{font-size:12px;font-weight:700;color:var(--text3);letter-spacing:.06em;text-transform:uppercase;padding:14px 0;text-align:center;border:1px dashed var(--border);border-radius:8px}
.bk-form{display:flex;flex-direction:column;gap:8px}
.bk-form input:not([type=checkbox]){height:34px;padding:0 10px;border-radius:8px;border:1px solid var(--border);background:var(--surface,transparent);color:var(--text);font-size:12.5px}
.bk-demo{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text2);cursor:pointer}
.bk-meta{font-size:12px;color:var(--text2);margin-bottom:10px}
.bk-actions{display:flex;gap:8px}
/* ---- admin ---- */
.adm-role{display:inline-block;font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:99px;letter-spacing:.04em;text-transform:uppercase}
.adm-role.admin{background:color-mix(in srgb,var(--primary) 16%,transparent);color:var(--accent)}
.adm-role.user{background:var(--hover);color:var(--text2)}
.adm-lic{font-size:11px;font-weight:600;padding:2px 8px;border-radius:99px}
.adm-lic.active{background:color-mix(in srgb,var(--green) 14%,transparent);color:var(--green)}
.adm-lic.expired,.adm-lic.revoked{background:color-mix(in srgb,var(--red) 12%,transparent);color:var(--red)}
.adm-lic.unused{background:var(--hover);color:var(--text2)}
.adm-lic.none{background:var(--hover);color:var(--text3)}
.adm-licgen{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.adm-licgen select,.adm-licgen input{height:34px;padding:0 10px;border-radius:8px;border:1px solid var(--border);background:var(--card);color:var(--text);font-size:12.5px}
.adm-act{display:flex;gap:4px;justify-content:flex-end}
.adm-act button{width:26px;height:26px;display:flex;align-items:center;justify-content:center;border-radius:6px;color:var(--text3)}
.adm-act button:hover{background:var(--hover);color:var(--text)}
/* ---- profile card ---- */
.pf-card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:20px;margin-bottom:20px}
.pf-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.pf-grid input,.pf-grid select{height:36px;padding:0 10px;border-radius:8px;border:1px solid var(--border);background:var(--surface,transparent);color:var(--text);font-size:13px;width:100%}
.pf-note{font-size:11px;color:var(--text3);margin-top:4px}
.pf-row{display:flex;align-items:center;justify-content:space-between;margin-top:14px;flex-wrap:wrap;gap:10px}
.pf-lic{font-size:12.5px;color:var(--text2)}
@media(max-width:640px){.pf-grid{grid-template-columns:1fr}.lb-podium{flex-direction:column;align-items:stretch}.lb-pod{max-width:none}}

/* ---- expenses view ---- */
.exp-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px}
.exp-stat{background:var(--card);border:1px solid var(--border);border-radius:var(--r3);padding:16px 18px}
.exp-stat .es-lbl{font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--text3);margin-bottom:6px}
.exp-stat .es-val{font-size:22px;font-weight:700;line-height:1.1}
.exp-stat .es-sub{font-size:11.5px;color:var(--text3);margin-top:4px}
.exp-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:16px;flex-wrap:wrap}
.exp-toolbar .seg{flex:none}
.exp-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px;table-layout:fixed;border-radius:var(--r3)}
.exp-table thead th{position:sticky;top:0;z-index:2;text-align:left;font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--text3);padding:12px 16px;background:color-mix(in srgb,var(--card) 92%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--border2);white-space:nowrap}
.exp-table tbody td{padding:12px 16px;border-bottom:1px solid var(--border);color:var(--text2);white-space:nowrap;vertical-align:middle}
.exp-table tbody tr{cursor:default;transition:background var(--d1)}
.exp-table tbody tr:hover td{background:var(--hover)}
.exp-table tbody tr:last-child td{border-bottom:none}
.exp-empty{text-align:center;padding:48px 24px;color:var(--text3)}
.exp-net-pos{color:var(--green)!important}
.exp-net-neg{color:var(--red)!important}
@media(max-width:700px){.exp-summary{grid-template-columns:repeat(2,1fr)}}

/* ---- v4.1: table corners + license lock + profile view ---- */
.exp-table thead th:first-child{border-top-left-radius:var(--r3)}
.exp-table thead th:last-child{border-top-right-radius:var(--r3)}
.exp-table tbody tr:last-child td:first-child{border-bottom-left-radius:var(--r3)}
.exp-table tbody tr:last-child td:last-child{border-bottom-right-radius:var(--r3)}
.view.active{position:relative}
.lic-lock{position:absolute;inset:0;z-index:60;display:flex;align-items:flex-start;justify-content:center;padding:9vh 20px 0;backdrop-filter:blur(2.5px);-webkit-backdrop-filter:blur(2.5px);background:color-mix(in srgb,var(--bg) 22%,transparent);border-radius:18px;min-height:70vh}
.lic-lock-card{text-align:center;background:var(--card);border:1px solid var(--border);border-radius:16px;padding:28px 32px;max-width:380px;box-shadow:0 24px 70px rgba(0,0,0,.4)}
.lic-lock-ico{font-size:30px;margin-bottom:10px}
.lic-lock-card h3{margin:0 0 8px;font-size:16px}
.lic-lock-card p{margin:0 0 16px;font-size:13px;color:var(--text3);line-height:1.5}
#licCard .lic-plans{justify-content:flex-start;margin-bottom:14px}
#licCard .auth-err{margin-bottom:10px}
#licCard{max-width:560px}

/* ---- v4.2 ---- */
.lic-lock-fixed{position:fixed;inset:0;z-index:200;align-items:center;padding:0 20px;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);background:color-mix(in srgb,var(--bg) 55%,transparent);border-radius:0;min-height:0}
.pass-wrap{position:relative}
.pass-wrap input{width:100%;padding-right:38px}
.pass-eye{position:absolute;right:5px;top:50%;transform:translateY(-50%);width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:6px;color:var(--text3);background:none;border:none;cursor:pointer}
.pass-eye:hover{color:var(--text);background:var(--hover)}
.pass-eye svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2}
.pass-eye.on{color:var(--accent)}
#syncCard .bk-grid{margin-top:4px}

/* ---- v4.3 admin ---- */
#view-admin.active{max-width:1400px}
.adm-toolbar{padding:12px 14px;border-bottom:1px solid var(--border)}
.adm-toolbar input{max-width:300px;width:100%}
.exp-table th.sortable{cursor:pointer;user-select:none;white-space:nowrap}
.exp-table th.sortable:hover{color:var(--text)}
.sort-arrow{display:inline-block;width:12px;font-size:8px;margin-left:3px;color:var(--accent)}
#view-admin .exp-table td{white-space:nowrap}
.adm-key{display:flex;align-items:center;gap:8px}
.key-txt{font-family:monospace;font-size:11.5px;transition:filter .18s}
.key-txt.blurred{filter:blur(5px);user-select:none}
.key-eye{width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:6px;color:var(--text3);background:none;border:none;cursor:pointer;flex:none}
.key-eye:hover{color:var(--text);background:var(--hover)}
.key-eye.on{color:var(--accent)}
