/* ═══ SIDEBAR V2 ═══ */
/* ═══ SIDEBAR V2 — CONTROL RAIL ═══ */
.sidebar{
  width:216px;
  background:linear-gradient(180deg,rgba(9,12,16,0.97) 0%,rgba(4,4,10,0.95) 40%,rgba(4,6,8,0.97) 100%);
  border-right:1px solid rgba(61,184,130,0.10);
  box-shadow:1px 0 40px rgba(0,0,0,0.5);
}
.sidebar::before{
  content:'';position:absolute;top:0;right:-1px;bottom:0;width:1px;
  background:linear-gradient(180deg,transparent 0%,rgba(61,184,130,0.45) 18%,rgba(61,184,130,0.08) 55%,transparent 100%);
  pointer-events:none;
}
.sidebar::after{
  content:'';position:absolute;top:0;left:0;right:0;height:180px;
  background:radial-gradient(ellipse 120% 100% at 50% 0%,rgba(61,184,130,0.06) 0%,transparent 70%);
  pointer-events:none;
}
.page-wrap,.main{margin-left:216px;}
/* brand */
.sb-brand{padding:26px 22px 24px;border-bottom:1px solid rgba(61,184,130,0.08);position:relative;z-index:1;}
.sb-logo,.sb-logo-box{
  width:30px;height:30px;border:none;
  background:linear-gradient(135deg,#3db882 0%,#1f7a52 100%);
  box-shadow:0 0 18px rgba(61,184,130,0.35);
}
.sb-logo-text{color:#04040a;font-weight:700;font-size:9px;}
.sb-name{
  font-family:var(--display);font-size:15px;font-weight:700;
  text-transform:none;letter-spacing:-0.02em;color:var(--white2);
}
.sb-name::after{content:'.';color:var(--g);}
.sb-tag{color:rgba(61,184,130,0.55);font-size:6px;letter-spacing:0.3em;margin-top:1px;}
/* nav */
.sb-nav{padding:20px 0;counter-reset:nav;position:relative;z-index:1;}
.sb-link{
  counter-increment:nav;
  padding:11px 22px;margin:0 10px;
  font-size:8px;letter-spacing:0.18em;
  color:var(--t2);
  border-left:none;position:relative;
  transition:color .15s,background .15s,transform .2s cubic-bezier(.16,1,.3,1);
}
.sb-link::after{
  content:counter(nav,decimal-leading-zero);
  position:absolute;right:14px;top:50%;transform:translateY(-50%);
  font-family:var(--mono);font-size:6.5px;letter-spacing:0.08em;
  color:var(--t4);transition:color .15s;
}
.sb-link:hover{color:var(--white);background:rgba(255,255,255,0.025);transform:translateX(3px);}
.sb-link:hover::after{color:var(--t3);}
.sb-link.active{
  color:#0a0f0c;
  background:linear-gradient(90deg,#3db882 0%,#2e9c6c 100%);
  box-shadow:0 0 24px rgba(61,184,130,0.35),inset 0 1px 0 rgba(255,255,255,0.18);
  font-weight:400;
}
.sb-link.active::before{display:none;}
.sb-link.active::after{color:rgba(4,4,10,0.55);}
.sb-link.active .sb-icon{opacity:1;stroke-width:1.4;}
.sb-icon{opacity:0.4;}
.sb-sep{background:linear-gradient(90deg,transparent,rgba(61,184,130,0.15),transparent);margin:10px 22px;}
/* bottom */
.sb-bottom{border-top:1px solid rgba(61,184,130,0.08);padding:16px 20px;position:relative;z-index:1;background:rgba(0,0,0,0.25);}
.sb-new{
  background:transparent;color:var(--g);
  border:1px solid rgba(61,184,130,0.3);
  transition:all .15s;
}
.sb-new:hover{background:rgba(61,184,130,0.1);border-color:rgba(61,184,130,0.5);box-shadow:0 0 16px rgba(61,184,130,0.2);opacity:1;}
.sb-user-plan{color:rgba(61,184,130,0.6);}
/* ═══ MOBILE ═══ */
.m-topbar{display:none;}
@media(max-width:900px){
  .sidebar{
    display:flex !important;
    left:0;transform:translateX(-112%);
    transition:transform .28s cubic-bezier(.16,1,.3,1);
    backdrop-filter:none;-webkit-backdrop-filter:none;
    z-index:220;width:min(260px,80vw);
    box-shadow:20px 0 60px rgba(0,0,0,0.6);
  }
  .sidebar.m-open{transform:translateX(0);}
  .page-wrap,.main{margin-left:0 !important;padding-top:54px;}
  .m-topbar{
    display:flex;position:fixed;top:0;left:0;right:0;height:54px;z-index:210;
    align-items:center;justify-content:space-between;padding:0 16px;
    background:rgba(4,4,10,0.92);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
    border-bottom:1px solid rgba(61,184,130,0.12);
  }
  .m-brand{font-family:var(--display,'Syne',sans-serif);font-size:15px;font-weight:700;color:rgba(255,255,255,0.96);letter-spacing:-0.02em;}
  .m-brand span{color:#3db882;}
  .m-burger{
    width:40px;height:40px;background:none;border:none;cursor:pointer;
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;
  }
  .m-burger span{width:18px;height:1.5px;background:rgba(255,255,255,0.8);transition:transform .25s,opacity .2s;}
  .m-burger.x span:nth-child(1){transform:translateY(6.5px) rotate(45deg);}
  .m-burger.x span:nth-child(2){opacity:0;}
  .m-burger.x span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg);}
  .m-backdrop{
    position:fixed;inset:0;z-index:215;background:rgba(0,0,0,0.6);
    opacity:0;pointer-events:none;transition:opacity .25s;
  }
  .m-backdrop.on{opacity:1;pointer-events:auto;}
  .fab{bottom:20px;right:16px;}
}

/* ═══ V4 ═══ */
/* page fade-in + micro transitions */
@keyframes pageIn{from{opacity:0;}to{opacity:1;}}
body{animation:pageIn .22s ease;}
button,a,input,select,textarea{transition:color .12s,background-color .12s,border-color .12s,opacity .12s,box-shadow .15s;}

/* ── SELECTS — Spectra style ── */
select{
  appearance:none;-webkit-appearance:none;-moz-appearance:none;
  background-color:#07070f !important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5' viewBox='0 0 8 5'%3E%3Cpath d='M1 1l3 3 3-3' fill='none' stroke='%233db882' stroke-width='1.2'/%3E%3C/svg%3E") !important;
  background-repeat:no-repeat !important;
  background-position:right 10px center !important;
  padding-right:26px !important;
  border:1px solid rgba(255,255,255,0.08);
  color:rgba(255,255,255,0.9);
  cursor:pointer;
}
select:focus{border-color:rgba(61,184,130,0.4);outline:none;}
select option{background:#0a0a14;color:rgba(255,255,255,0.9);}

/* ── SIDEBAR V3 — TERMINAL RAIL ── */
.sidebar{
  background:#05060b;
  border-right:1px solid rgba(255,255,255,0.05);
  box-shadow:none;
}
.sidebar::after{display:none;}
.sidebar::before{
  background:linear-gradient(180deg,rgba(61,184,130,0.55) 0%,rgba(61,184,130,0.12) 30%,transparent 70%);
}
.sb-brand{padding:28px 24px 22px;border-bottom:1px solid rgba(255,255,255,0.05);}
.sb-logo,.sb-logo-box{display:none;}
.sb-name{font-size:18px;}
.sb-tag{margin-top:3px;}
.sb-nav{padding:8px 0;}
.sb-link{
  margin:0;padding:13px 24px;
  font-size:8.5px;letter-spacing:0.24em;
  color:rgba(255,255,255,0.34);
  border-bottom:1px solid rgba(255,255,255,0.028);
  background:transparent;box-shadow:none;
  gap:14px;
  transition:color .14s,background .14s,padding-left .18s cubic-bezier(.16,1,.3,1);
}
.sb-link::after{
  position:static;transform:none;order:-1;
  font-size:7px;color:rgba(255,255,255,0.14);
  letter-spacing:0.05em;min-width:14px;
}
.sb-link::before{
  content:'→';display:block;position:absolute;right:18px;top:50%;
  width:auto;height:auto;background:none;box-shadow:none;
  transform:translateY(-50%) translateX(-5px);
  color:#3db882;font-size:10px;font-family:inherit;
  opacity:0;transition:opacity .15s,transform .2s cubic-bezier(.16,1,.3,1);
}
.sb-link:hover{color:rgba(255,255,255,0.92);background:rgba(255,255,255,0.014);transform:none;padding-left:28px;}
.sb-link:hover::before{opacity:1;transform:translateY(-50%) translateX(0);}
.sb-link:hover::after{color:rgba(61,184,130,0.5);}
.sb-link.active{
  color:#3db882;background:linear-gradient(90deg,rgba(61,184,130,0.07),transparent 70%);
  box-shadow:inset 3px 0 0 #3db882;font-weight:400;
}
.sb-link.active::before{display:none;}
.sb-link.active::after{color:rgba(61,184,130,0.55);}
.sb-sep{background:rgba(255,255,255,0.05);margin:0;}
.sb-bottom{background:transparent;border-top:1px solid rgba(255,255,255,0.05);}

/* ── CHIPS ── */
.chip-row{display:flex;gap:6px;flex-wrap:wrap;margin:7px 0 4px;}
.chip{
  font-family:'JetBrains Mono',monospace;font-size:7.5px;letter-spacing:0.1em;
  padding:5px 12px;border:1px solid rgba(255,255,255,0.09);
  color:rgba(255,255,255,0.55);background:transparent;cursor:pointer;
  user-select:none;transition:all .12s;
}
.chip:hover{border-color:rgba(61,184,130,0.4);color:rgba(255,255,255,0.9);}
.chip.sel{
  border-color:rgba(61,184,130,0.55);color:#3db882;
  background:rgba(61,184,130,0.08);box-shadow:0 0 14px rgba(61,184,130,0.12);
}

/* ── SIMPLE / ADVANCED TOGGLE ── */
.logmode{display:flex;gap:0;border:1px solid rgba(255,255,255,0.09);}
.logmode button{
  font-family:'JetBrains Mono',monospace;font-size:7px;letter-spacing:0.16em;text-transform:uppercase;
  padding:6px 13px;background:transparent;color:rgba(255,255,255,0.4);border:none;cursor:pointer;
}
.logmode button.on{background:rgba(61,184,130,0.14);color:#3db882;}
.mform .mf.adv-only{display:none;}
.mform.adv .mf.adv-only{display:flex;}

/* ═══ DECK ═══ */
.sidebar{
  width:64px;overflow:hidden;
  transition:width .32s cubic-bezier(.16,1,.3,1);
}
.sidebar:hover{width:232px;box-shadow:24px 0 80px rgba(0,0,0,0.55);}
.page-wrap,.main{margin-left:64px;}
/* brand — S. monogram collapsed, wordmark on hover */
.sb-brand{position:relative;height:76px;padding:0 22px;display:flex;align-items:center;}
.sb-brand::after{
  content:'S.';position:absolute;left:0;right:0;text-align:center;
  font-family:var(--display);font-weight:700;font-size:21px;color:var(--white2);
  letter-spacing:-0.02em;transition:opacity .15s;pointer-events:none;
}
.sb-brand::after{color:var(--white2);}
.sidebar:hover .sb-brand::after{opacity:0;}
.sb-wordmark{opacity:0;transition:opacity .2s;white-space:nowrap;}
.sidebar:hover .sb-wordmark{opacity:1;transition:opacity .25s .1s;}
/* nav — icons only collapsed, text slides in */
.sb-link{font-size:0;white-space:nowrap;padding:14px 0 14px 25px;gap:13px;}
.sb-link::before{content:none;}
.sidebar:hover .sb-link{font-size:8.5px;padding-left:24px;}
.sb-icon{display:block;width:15px;height:15px;opacity:0.45;transition:opacity .15s;}
.sb-link::after{
  position:absolute;right:16px;top:50%;transform:translateY(-50%);
  order:0;min-width:0;font-size:6.5px;
  opacity:0;transition:opacity .2s;
}
.sidebar:hover .sb-link::after{opacity:1;transition:opacity .25s .12s;}
.sb-link:hover{padding-left:25px;}
.sidebar:hover .sb-link:hover{padding-left:29px;}
/* scanline sweep */
.sb-scan{
  position:absolute;left:0;right:0;height:70px;top:-90px;
  background:linear-gradient(180deg,transparent,rgba(61,184,130,0.055),transparent);
  animation:sbScan 9s linear infinite;pointer-events:none;z-index:2;
}
/* transform-only sweep — the old top-animation forced layout every frame */
@keyframes sbScan{0%{transform:translateY(0);}55%,100%{transform:translateY(calc(100vh + 180px));}}
@media(prefers-reduced-motion:reduce){.sb-scan{display:none;}}
/* bottom — clock + hidden user until hover */
.sb-bottom{padding:14px 12px;}
.sidebar:hover .sb-bottom{padding:16px 20px;}
#sb-clock{
  display:flex;align-items:center;gap:7px;justify-content:center;
  font-family:var(--mono);font-size:8px;color:var(--t2);letter-spacing:0.06em;
  white-space:nowrap;margin-bottom:10px;
}
.sidebar:hover #sb-clock{justify-content:flex-start;}
#sb-clock .cdot{width:5px;height:5px;border-radius:50%;background:var(--t3);flex-shrink:0;}
#sb-clock .cdot.live{background:var(--g);box-shadow:0 0 8px rgba(61,184,130,0.6);animation:pulse 2.4s ease-in-out infinite;}
#sb-clock{overflow:hidden;}
#sb-clock .ctxt{display:none;transition:opacity .2s;}
.sidebar:hover #sb-clock .ctxt{display:inline;}
#sb-clock .cdot.up{background:#3db882;box-shadow:0 0 8px rgba(61,184,130,0.7);animation:pulse 2.4s ease-in-out infinite;}
#sb-clock .cdot.down{background:#e05555;box-shadow:0 0 8px rgba(224,85,85,0.6);animation:pulse 2.4s ease-in-out infinite;}
.sidebar:hover #sb-clock .ctxt{opacity:1;transition:opacity .25s .12s;}
.sb-user,.sb-new{opacity:0;pointer-events:none;transition:opacity .2s;white-space:nowrap;}
.sidebar:hover .sb-user,.sidebar:hover .sb-new{opacity:1;pointer-events:auto;transition:opacity .25s .12s;}
/* mobile: always expanded */
@media(max-width:900px){
  .sidebar,.sidebar:hover{width:min(260px,80vw);}
  .page-wrap,.main{margin-left:0;}
  .sb-link{font-size:8.5px;padding-left:24px;}
  .sb-link::after{opacity:1;}
  .sb-brand::after{display:none;}
  .sb-wordmark{opacity:1;}
  .sb-user,.sb-new{opacity:1;pointer-events:auto;}
  #sb-clock{justify-content:flex-start;}
  #sb-clock .ctxt{opacity:1;max-width:none;}
  .sb-bottom{padding:16px 20px;}
}

/* ═══ V6 ═══ */
/* solid surfaces — no see-through popups */
.modal,.ci-modal,.pw-box,.paywall,.calc-panel,.detail-panel{
  background:#0b0e15 !important;
  border-color:rgba(255,255,255,0.14) !important;
  box-shadow:0 30px 90px rgba(0,0,0,0.85);
}
.modal-head,.modal-foot{background:#0b0e15 !important;}
.backdrop,.modal-back,.checkin-overlay,.pw-back,.paywall-back{background:rgba(0,0,0,0.9) !important;}
/* chips — readable */
.chip{
  font-size:9px;padding:8px 15px;
  color:rgba(255,255,255,0.82);
  border-color:rgba(255,255,255,0.22);
  background:rgba(255,255,255,0.04);
}
.chip:hover{border-color:rgba(61,184,130,0.6);color:#fff;background:rgba(61,184,130,0.08);}
.chip.sel{border-color:#3db882;color:#5ee6a8;background:rgba(61,184,130,0.14);}
/* inputs solid */
.mf input,.mf select,.mf textarea,.cf input,.cf select,.ci-field input,.q-answer{
  background:#0e1118 !important;
  border-color:rgba(255,255,255,0.16) !important;
  color:rgba(255,255,255,0.94) !important;
}
.ci-field input,.q-answer{border-width:0 0 1px 0 !important;background:rgba(255,255,255,0.03) !important;padding:9px 10px !important;}
.mf label,.cf label,.ci-field label{color:rgba(255,255,255,0.52) !important;}
.mf input::placeholder,.mf textarea::placeholder,.ci-field input::placeholder,.q-answer::placeholder,.ci-input::placeholder{color:rgba(255,255,255,0.32) !important;}
.ci-input{background:rgba(255,255,255,0.03) !important;padding:9px 10px !important;color:rgba(255,255,255,0.94) !important;}
/* toggles / tags */
.logmode{border-color:rgba(255,255,255,0.18);}
.logmode button{color:rgba(255,255,255,0.55);}
.logmode button.on{background:rgba(61,184,130,0.2);color:#5ee6a8;}
.tag-toggle{color:rgba(255,255,255,0.6);border-color:rgba(255,255,255,0.2);font-size:8px;padding:6px 11px;}
.rank-btn{color:rgba(255,255,255,0.6);border-color:rgba(255,255,255,0.2);}
.seg{border-color:rgba(255,255,255,0.14);background:rgba(255,255,255,0.045);}
/* modal titles/labels pop */
.modal-title{color:#fff;}
.ci-modal-title{color:rgba(255,255,255,0.75);}
.ci-modal-sub{color:rgba(255,255,255,0.8);}

/* ═══ V7 ═══ */
/* micro-labels: minimum 7.5px + >=0.5 alpha */
.kpi-label,.kpi-l,.np-title,.ts-title,.perf-title,.cs-l,.ic-label,.rev-head,
.checkin-label,.sec-title,.mc-label,.sc-title,.cp-head,.rc-label,.rh-label,
.hist-title,.brk-head,.dp-fl,.dp-sl,.as-l,.sb-l,.ac-phase,.pl-name,.arch-date,
.mf label,.cf label,.ci-field label,.q-num,.ec-tag,.ct-l,.ct-eyebrow,.trend-caption,
.eq-legend .leg,.cal-header,.hb-label,.spnl-l,.dim-name{
  font-size:7.5px !important;
  color:rgba(255,255,255,0.55) !important;
}
.q-num,.ec-tag,.ct-eyebrow{color:rgba(61,184,130,0.75) !important;}
.sb-tag{font-size:7px;}
/* secondary text: >=0.5 */
.kpi-sub,.kpi-s,.page-sub,.pt-sub,.sec-meta,.np-action,.date-btn,.ml-hint,
.ts-subtitle,.modal-count,.pag-info,.hist-count,.sec-note,.eq-empty,.tc-disclaimer,
.checkin-hint,.foot-copy,.cf-hint,.rh-sub,.ed-sub,.trades-empty-sub,.ee-sub,
.chart-no-data,.cal-trades,.dp-date,.hr-date,.brk-band,.arch-sub{
  color:rgba(255,255,255,0.52) !important;
}
/* empty states readable */
.np-text.empty,.cl-empty,.vault-empty,.empty-state,.empty-row td,.hist-empty,.arch-empty{
  color:rgba(255,255,255,0.5) !important;font-style:italic;
}
/* interactive rest-states >=0.55 */
.filter-btn,.range-tab,.pag-btn,.mn-btn,.tab,.forgot{color:rgba(255,255,255,0.55);}
.trade-row.head>div,.ap-tr-h{font-size:7.5px !important;color:rgba(255,255,255,0.5) !important;}
/* placeholders visible */
.goal-textarea::placeholder,.ml-input::placeholder,.rev-textarea::placeholder,
.filter-search::placeholder{color:rgba(255,255,255,0.34) !important;}
/* other-month calendar cells slightly clearer */
.cal-cell.other-month{opacity:0.45;}
.pp-l,.sb-out,.sb-new-kbd,.ann-text{color:rgba(255,255,255,0.52) !important;}
.sb-out{font-size:7px;}

.filter-label,.trade-table th,.ph-eyebrow,.sc-status,.ring-sub,.mn-label span,.mn-btn,
.settings-label,.pc-per,.set-label,label{color:rgba(255,255,255,0.52) !important;}
.sc-status.done{color:#3db882 !important;}

/* ═══ MOTION ═══ */
@media(prefers-reduced-motion:no-preference){
  html{scroll-behavior:smooth;}
  button,.btn,.chip,.sb-link,.range-tab,.filter-btn,.mbtn,.pw-btn,.save-btn,.lo-btn,.ts-btn,
  .rank-btn,.tag-toggle,.mn-btn,.date-btn,.logmode button,.pag-btn,.nav-cta,.btn-primary,.cta{
    transition:transform .11s cubic-bezier(.2,.8,.2,1),background-color .12s,border-color .12s,color .12s,box-shadow .15s,opacity .12s;
    -webkit-tap-highlight-color:transparent;
  }
  button:active,.btn:active,.chip:active,.range-tab:active,.filter-btn:active,.mbtn:active,
  .pw-btn:active,.save-btn:active,.lo-btn:active,.ts-btn:active,.rank-btn:active,.tag-toggle:active,
  .mn-btn:active,.date-btn:active,.logmode button:active,.pag-btn:active,.nav-cta:active,.btn-primary:active{
    transform:translateY(1px) scale(.978);
  }
  .kpi:active,.acc-card:active,.stat-box:active{transform:scale(.994);}
  /* ripple */
  .rippling{position:relative;overflow:hidden;}
  .ripple{position:absolute;border-radius:50%;transform:scale(0);pointer-events:none;
    background:rgba(255,255,255,0.22);animation:rip .5s cubic-bezier(.2,.7,.3,1) forwards;mix-blend-mode:overlay;}
  @keyframes rip{to{transform:scale(2.4);opacity:0;}}
  /* scroll reveal */
  .v8-rv{opacity:0;transform:translateY(14px);}
  .v8-rv.v8-in{opacity:1;transform:none;transition:opacity .55s cubic-bezier(.16,1,.3,1),transform .55s cubic-bezier(.16,1,.3,1);}
}
body{overscroll-behavior-y:none;}

/* ═══ HUD ═══ */
.kpi-strip,.stats-row{position:relative;}
.kpi-strip{
  background:linear-gradient(180deg,rgba(16,20,26,0.88),rgba(8,10,14,0.92)) !important;
  border:1px solid rgba(255,255,255,0.09) !important;
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  box-shadow:0 18px 50px rgba(0,0,0,0.45),inset 0 1px 0 rgba(255,255,255,0.05);
  overflow:hidden;
}
.kpi-strip::after{
  content:'';position:absolute;bottom:0;left:-40%;width:36%;height:1px;
  background:linear-gradient(90deg,transparent,#3db882,transparent);
  animation:hudscan 4.5s cubic-bezier(.4,0,.2,1) infinite;opacity:0.8;
}
/* transform-only: element is 36% wide, sweep spans 145% of the strip = ~403% of own width */
@keyframes hudscan{0%{transform:translateX(0);}60%,100%{transform:translateX(403%);}}
.kpi,.kpi-card{background:transparent !important;}
.kpi:hover,.kpi-card:hover{background:rgba(255,255,255,0.03) !important;}
@media(prefers-reduced-motion:reduce){.kpi-strip::after{animation:none;display:none;}}

/* ═══ V9 ═══ */
/* premium primary CTAs */
.fab,.btn.primary,.mbtn.primary,.ts-btn.primary,.pw-btn,.ci-submit,.lo-btn{
  background:linear-gradient(135deg,#41d492 0%,#28a06a 100%) !important;
  color:#04120b !important;border:none !important;
  box-shadow:0 8px 28px rgba(61,184,130,0.32),inset 0 1px 0 rgba(255,255,255,0.25);
  font-weight:500;
}
.fab:hover,.btn.primary:hover,.mbtn.primary:hover,.ts-btn.primary:hover,.pw-btn:hover{
  transform:translateY(-1px);
  box-shadow:0 12px 36px rgba(61,184,130,0.45),inset 0 1px 0 rgba(255,255,255,0.3);
  opacity:1 !important;
}
.fab{
  padding:15px 30px !important;font-size:9px !important;letter-spacing:0.22em;
  border-radius:2px;
}
.sb-new{border-color:rgba(61,184,130,0.5) !important;}
/* perf hints — desktop only: on mobile the sidebar slides via its own transform,
   and this translateZ(0) (later in the cascade) would override that and pin it open */
@media(min-width:901px){.sidebar{will-change:width;transform:translateZ(0);}}
.history-section,.arch,.review-section{content-visibility:auto;contain-intrinsic-size:auto 600px;}

/* ═══ V10 ═══ */
input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
input[type=number]{-moz-appearance:textfield;appearance:textfield;}

/* ═══ V11 FORMS — kill the wireframe look ═══ */
.mf input,.mf select,.mf textarea,.cf input,.cf select,
.search,.add-input,.filter-search,.po-amount,#po-amount,#po-date,.tc-row input,.tc-row select{
  background:linear-gradient(180deg,#10141c,#0b0e15) !important;
  border:1px solid rgba(255,255,255,0.07) !important;
  border-radius:7px !important;
  padding:11px 13px !important;
  transition:border-color .15s,box-shadow .18s,background .15s !important;
}
.money input{padding-left:26px !important;}
.mf input:hover,.mf select:hover,.mf textarea:hover,.cf input:hover,.cf select:hover{
  border-color:rgba(255,255,255,0.14) !important;
}
.mf input:focus,.mf select:focus,.mf textarea:focus,.cf input:focus,.cf select:focus,
.add-input:focus,.filter-search:focus,.tc-row input:focus{
  border-color:rgba(61,184,130,0.55) !important;
  box-shadow:0 0 0 3px rgba(61,184,130,0.12),0 0 20px rgba(61,184,130,0.08) !important;
  outline:none !important;
}
/* chips → pills */
.chip,.chipsel .chip{
  border-radius:999px !important;
  padding:7px 15px !important;
  background:rgba(255,255,255,0.03) !important;
  border:1px solid rgba(255,255,255,0.10) !important;
}
.chip:hover{background:rgba(61,184,130,0.07) !important;border-color:rgba(61,184,130,0.4) !important;}
.chip.sel{
  background:linear-gradient(180deg,rgba(61,184,130,0.22),rgba(61,184,130,0.12)) !important;
  border-color:rgba(61,184,130,0.65) !important;color:#7df0bb !important;
  box-shadow:0 0 16px rgba(61,184,130,0.18),inset 0 1px 0 rgba(255,255,255,0.08) !important;
}
/* toggles + primary/ghost buttons soften */
.logmode,.view-toggle,.cal-toggle,.tc-term{border-radius:8px !important;overflow:hidden;}
.mbtn,.btn,.save-btn,.payout-btn,.lo-btn,.pw-btn,.act,.add-btn,.ts-btn{border-radius:6px !important;}
.fab{border-radius:10px !important;}
.modal,.ci-modal,.pw-box{border-radius:12px !important;}
.modal-head,.modal-foot{border-radius:0 !important;}
/* labels breathe */
.mf label,.cf label{margin-bottom:2px;}

/* ═══ V12 PERF+PRIMA ═══ */
.sidebar{backdrop-filter:none !important;-webkit-backdrop-filter:none !important;}
/* crisp text rendering on numeric displays */
.kpi-v,.kpi-val,.rc-val,.tc-net,.ak-v,.sb-v,.ct-net{font-variant-numeric:tabular-nums;}
/* selects match V11 fill even outside .mf/.cf */
select{border-radius:7px !important;}
/* textarea consistency in modals */
.mf textarea{min-height:64px;line-height:1.6;}

/* ═══ V13 TYPE — Sora body ═══ */
body,input,textarea,select,.hero-sub,.fb-desc,.mf-p,.page-sub,.page-hero-sub,.psy-sub,
.ic-caption,.ec-directive,.ct-verdict,.mind-verdict,.rb-directive,.sd-txt,.q-text,.rev-prompt{
  font-family:'Inter','Sora','Inter',sans-serif !important;
}
.mf input,.mf select,.mf textarea,.cf input,.cf select,.filter-search,.add-input,
.tr-pair,.td-sym,.trade-table td,.mono,.hs-n,.dg-v,.wd-v,.cmp-row,.q-p,.q-t{
  font-family:'JetBrains Mono',monospace !important;   /* numeriskt förblir mono */
}
body{font-weight:400;}

/* ═══ V13 TYPE SYSTEM — the KUNG pass ═══ */
/* Body: Sora, warm & confident, tight premium tracking */
body{font-family:'Inter','Sora','Inter',sans-serif !important;font-weight:400;letter-spacing:-0.006em;}
p,li,.page-sub,.page-hero-sub,.psy-sub,.hero-sub,.ic-caption,.ec-directive,.ct-verdict,
.rb-directive,.mind-verdict,.sd-txt,.hist-caption,.arch-sub,.cmp-note,.dp-text{
  font-family:'Inter','Sora','Inter',sans-serif !important;line-height:1.72;
}
/* Headings: Syne, slightly tighter */
.page-title,.page-hero-title,.ritual-greeting,.psy-title,.kpi-v,.kpi-val,.rh-val,.rc-val,
.ec-title,.arch-title,.rb-verdict,.ak-v,.sb-v,.ct-net,.tc-net,.mind-panel .ring-num,.pt-price{
  letter-spacing:-0.032em;
}
/* THE FIX: soften the micro-label epidemic — bigger, less machine-tracked, brighter */
.kpi-l,.kpi-label,.sec-title,.sec-note,.np-title,.ts-title,.perf-title,.cs-l,.ic-label,
.rev-head,.checkin-label,.mc-label,.sc-title,.rc-label,.rh-label,.hist-title,.dp-fl,.dp-sl,
.as-l,.sb-l,.pl-name,.q-num,.ec-tag,.ct-l,.ct-eyebrow,.ph-eyebrow,.ak-l,.kl,.wd-l,.dg-l,
.mf-sec span,.cf label,.mf label,.arch-meta,.leg,.eq-legend .leg,.gh-line,.rui-signal-label{
  font-size:8px !important;
  letter-spacing:0.14em !important;
  color:rgba(255,255,255,0.58) !important;
}
.q-num,.ec-tag,.ct-eyebrow,.ph-eyebrow{color:rgba(94,230,168,0.78) !important;}
/* nav labels a touch calmer */
.sb-link{font-size:8.5px !important;letter-spacing:0.16em !important;}
/* numeric displays stay mono + tabular */
.kpi-v,.kpi-val,.tr-pnl,.td-pnl,.mono,.hs-n,.cmp-v,.q-p,.dg-v,.wd-v,.ak-v .num,
.trade-table td,.dp-pnl-val,.pt-val{font-family:'JetBrains Mono',monospace !important;font-variant-numeric:tabular-nums;}
/* buttons: Sora medium, no shouty tracking */
.btn,.mbtn,.save-btn,.payout-btn,.chip,.lo-btn,.pw-btn,.ts-btn,.filter-btn,.range-tab,
.view-toggle button,.cal-toggle button,.logmode button{
  font-family:'Inter',sans-serif !important;letter-spacing:0.04em !important;font-weight:500;
}
/* Remove any lingering dead shimmer keyframe usage */
.page-title em,.psy-title em,.final-h em,h1 em{animation:none !important;background:none !important;-webkit-text-fill-color:initial !important;color:var(--g) !important;}

/* ═══ V13.1 — kill the rigid mono micro-labels (keep numbers mono) ═══ */
.kpi-l,.kpi-label,.sec-title,.sec-note,.np-title,.ts-title,.perf-title,.cs-l,.ic-label,
.rev-head,.checkin-label,.mc-label,.sc-title,.rc-label,.rh-label,.hist-title,.dp-fl,.dp-sl,
.as-l,.sb-l,.pl-name,.ec-tag,.ct-l,.ct-eyebrow,.ph-eyebrow,.ak-l,.kl,.wd-l,.dg-l,.mf-sec span,
.cf label,.mf label,.field label,.ci-field label,.arch-meta,.leg,.eq-legend .leg,.gh-line,
.rui-signal-label,.sb-tag,.sb-user-plan,.ann-text,.kpi-s,.kpi-sub,.ts-subtitle,.pt-sub,
.pc-name,.pc-per,.date-str,.ml-prefix,.hb-label,.cw-l,.q-l,.rc-label,.brk-head,.cp-head,
.hr-dim-l,.trend-caption,.spnl-l,.dim-name,.ch-title,.kl,.plan-badge,.owner-badge{
  font-family:'Inter',sans-serif !important;
  font-weight:500 !important;
  letter-spacing:0.08em !important;
}
/* keep these truly numeric/tabular in mono */
.tr-pnl,.td-pnl,.hs-n,.cmp-v,.q-p,.dg-v,.wd-v,.ak-v,.sb-v,.ct-net,.tc-net,
.trade-table td,.dp-pnl-val,.pt-val,.ring-num,.sim-rl .val,.mono{
  font-family:'JetBrains Mono',monospace !important;
}

/* ═══ V13.2 — de-terminal the labels: bigger, sentence-case, breathing ═══ */
.kpi-l,.kpi-label,.sec-title,.sec-note,.np-title,.ts-title,.perf-title,.cs-l,.ic-label,
.rev-head,.checkin-label,.mc-label,.sc-title,.rc-label,.rh-label,.hist-title,.dp-fl,.dp-sl,
.as-l,.sb-l,.pl-name,.ec-tag,.ct-l,.ct-eyebrow,.ph-eyebrow,.ak-l,.kl,.wd-l,.dg-l,.mf-sec span,
.cf label,.mf label,.field label,.ci-field label,.arch-meta,.gh-line,.rui-signal-label,
.kpi-s,.kpi-sub,.ts-subtitle,.pt-sub,.pc-name,.date-str,.hb-label,.cw-l,.q-l,.brk-head,.cp-head,
.hr-dim-l,.spnl-l,.dim-name,.ch-title,.rh-label,.mn-label,.filter-label{
  font-family:'Inter',sans-serif !important;
  font-size:10px !important;
  font-weight:500 !important;
  letter-spacing:0.005em !important;
  text-transform:none !important;
  color:rgba(255,255,255,0.6) !important;
}
/* section headings a touch stronger */
.sec-title,.np-title,.ts-title,.perf-title,.hist-title,.mc-label,.sc-title,.ch-title,.cp-head{
  font-size:11px !important;font-weight:600 !important;color:rgba(255,255,255,0.82) !important;
}
/* eyebrows keep green accent, no caps */
.ph-eyebrow,.ec-tag,.ct-eyebrow,.q-num{color:rgba(94,230,168,0.85) !important;text-transform:none !important;font-size:10px !important;letter-spacing:0.02em !important;}
/* sidebar nav: readable, softer */
.sb-link{font-family:'Inter',sans-serif !important;font-size:11px !important;font-weight:500 !important;letter-spacing:0.01em !important;text-transform:none !important;}
.sb-tag{font-family:'Inter',sans-serif !important;font-size:8px !important;text-transform:none !important;letter-spacing:0.06em !important;}
.sb-name{font-family:'Syne',sans-serif !important;}
/* crisp rendering everywhere */
body{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}

/* ═══ V13.3 — final holdouts: date, links, table heads, buttons ═══ */
.ritual-date,.ritual-log,.np-action,.date-str,.date-btn,.mn-btn,.sec-meta,.ann-text,
.trade-row.head>div,.trade-table th,.ap-tr-h,.pag-info,.pag-btn,.filter-btn,.range-tab,
.view-toggle button,.cal-toggle button,.logmode button,.cal-header,.ys-days span,
.foot-link,.foot-copy,.foot-logo,.hours-cap,.sim-pick,.eq-legend .leg,.leg,.gh-hint,
.cf-hint,.rui-h-title,.rui-h-date,.rep-ht,.rep-hd,.tag,.fb-num,.mf-tag,.p-tag,.pt-period,
.sb-out,.sb-new,.sb-new-kbd,.ml-hint,.trades-empty-sub,.ee-sub,.eq-empty,.chart-no-data,
.hist-count,.modal-count,.pag-info,.dp-date,.hr-date,.brk-band,.brk-rate,.cmp-c{
  font-family:'Inter',sans-serif !important;
  text-transform:none !important;
  letter-spacing:0.01em !important;
}
.ritual-date,.date-str,.trade-row.head>div,.trade-table th,.ap-tr-h,.cal-header{font-size:9.5px !important;}
/* CTA buttons: confident, not shouty caps */
.btn,.mbtn,.fab,.ts-btn,.save-btn,.pw-btn,.lo-btn,.payout-btn,.sb-new,.add-btn,.nav-cta,.btn-primary,.cta,.pt-cta,.pc-btn{
  font-family:'Inter',sans-serif !important;
  text-transform:none !important;
  letter-spacing:0.02em !important;
  font-weight:600 !important;
  font-size:11px !important;
}
.fab{font-size:12px !important;}

/* ═══ V13.4 — last button/label holdouts ═══ */
.trades-empty-cta,.ci-submit,.ci-skip,.ed-sub,.ed-title,.rev-save,.mbtn.ghost,.mbtn.primary,
.act,.lo-sub,.lo-title,.rules-note,.plan-badge,.owner-badge,.step,.dp-tag,.tr-tag,.rule-tag,
.setup-tag,.tag-toggle,.rank-btn,.seg,.checkin-btn,.checkin-hint,.filter-search,.search{
  font-family:'Inter',sans-serif !important;text-transform:none !important;letter-spacing:0.02em !important;
}
.trades-empty-cta,.ci-submit,.rev-save,.checkin-btn{font-size:11px !important;font-weight:600 !important;}


/* ═══ V14 · PREMIUM ENTRANCE ═══ */
@media (prefers-reduced-motion:no-preference){
  @keyframes sjRise{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:translateY(0);}}
  .page>*{animation:sjRise .55s cubic-bezier(.16,1,.3,1) both;}
  .page>*:nth-child(1){animation-delay:.02s;}
  .page>*:nth-child(2){animation-delay:.07s;}
  .page>*:nth-child(3){animation-delay:.12s;}
  .page>*:nth-child(4){animation-delay:.17s;}
  .page>*:nth-child(5){animation-delay:.22s;}
  .page>*:nth-child(6){animation-delay:.27s;}
  .page>*:nth-child(7){animation-delay:.32s;}
  .page>*:nth-child(n+8){animation-delay:.36s;}
  /* modals glide, not pop */
  .modal-back.open .modal{animation:sjRise .38s cubic-bezier(.16,1,.3,1) both;}
  /* cards lift on hover — subtle, physical */
  .acc-card,.letter-card,.ff-card{transition:transform .22s cubic-bezier(.16,1,.3,1),border-color .18s,box-shadow .22s;}
  .acc-card:hover,.letter-card:hover{transform:translateY(-2px);box-shadow:0 10px 32px rgba(0,0,0,0.45);}
  /* buttons: press feedback */
  button{transition:transform .12s cubic-bezier(.16,1,.3,1),opacity .12s,box-shadow .15s;}
  button:active{transform:scale(0.985);}
}

/* V14 TYPE POLISH — tighter rhythm, no AI-slop tracking */
body{letter-spacing:-0.008em;}
.page-title{letter-spacing:-0.035em !important;}


/* ═══ V15 · HARD POLISH ═══ */
/* 1 · KPI numerals — Manrope, no dotted zeros, no glow */
.kpi-val,.rh-val,.rc-val{
  font-family:'Inter',sans-serif !important;
  font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-0.02em;
}
.kpi-val.g{color:var(--g);text-shadow:none !important;}
.kpi-val.r{color:var(--r);text-shadow:none !important;}
.kpi-v.g,.kpi-v.r{text-shadow:none !important;}

.kpi-v.dim,.kpi-val.dim{color:rgba(255,255,255,0.28) !important;}
.kpi-v{font-family:'Inter',sans-serif !important;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-0.02em;}

/* 2 · sidebar clock — quiet, human */
#sb-clock{
  font-family:'Inter',sans-serif !important;
  font-size:10px !important;letter-spacing:0 !important;text-transform:none !important;
  color:rgba(255,255,255,0.34) !important;
}

/* 3 · rounded sidebar rail */
.sidebar{border-radius:0 14px 14px 0;overflow:hidden;}
.sb-link{border-radius:10px;margin:2px 10px;padding:9px 12px;transition:background .2s,color .15s;}
.sb-link.active{background:linear-gradient(180deg,rgba(61,184,130,0.14),rgba(61,184,130,0.06));}
.sb-link.active::before{display:none;}
.sb-link:hover{background:rgba(255,255,255,0.045);}
.sb-new,.sb-bottom .sb-new{border-radius:10px;}
.sb-bottom{border-radius:0 0 14px 0;}

/* 4 · entrance you can actually feel — gentle fade/rise, safe outside the motion gate */
@keyframes sjRise15{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:translateY(0);}}
@keyframes sjHero{from{opacity:0;transform:translateY(16px);filter:blur(6px);}to{opacity:1;transform:translateY(0);filter:blur(0);}}
body .page>*{animation:sjRise15 .65s cubic-bezier(.16,1,.3,1) both;}
.page>*:nth-child(1){animation-delay:.03s;}
.page>*:nth-child(2){animation-delay:.09s;}
.page>*:nth-child(3){animation-delay:.16s;}
.page>*:nth-child(4){animation-delay:.23s;}
.page>*:nth-child(5){animation-delay:.30s;}
.page>*:nth-child(6){animation-delay:.36s;}
.page>*:nth-child(n+7){animation-delay:.40s;}
body .ritual{animation:sjHero .9s cubic-bezier(.16,1,.3,1) .08s both;}
@media (prefers-reduced-motion:reduce){
  body .page>*,body .ritual{animation-duration:.25s;animation-delay:0s !important;}
}


/* ═══ V16.1 · DET LILLA EXTRA ═══ */
/* text selection — brand green, felt everywhere */
::selection{background:rgba(61,184,130,0.35);color:#eafff5;}

/* brand heartbeat — the green dot breathes, slowly */
@keyframes sjBeat{0%,100%{opacity:1;transform:scale(1);}50%{opacity:0.55;transform:scale(0.82);}}
.sb-logo-text::after,.m-brand span{display:inline-block;}
.m-brand span{animation:sjBeat 3.2s ease-in-out infinite;}

/* primary buttons — light sweep on hover, like polished metal catching light */
.run-btn,.new-btn,.btn-primary,.mbtn.primary,.pt-cta,.ff-card .ff-badge{position:relative;overflow:hidden;}
.run-btn::after,.new-btn::after,.btn-primary::after,.mbtn.primary::after{
  content:'';position:absolute;top:0;left:-80%;width:60%;height:100%;
  background:linear-gradient(105deg,transparent,rgba(255,255,255,0.22),transparent);
  transform:skewX(-20deg);transition:left .55s cubic-bezier(.16,1,.3,1);pointer-events:none;
}
.run-btn:hover::after,.new-btn:hover::after,.btn-primary:hover::after,.mbtn.primary:hover::after{left:120%;}

/* inputs — caret in brand green */
input,textarea{caret-color:#5ee6a8;}

/* focus ring — visible, branded, never default blue */
:focus-visible{outline:2px solid rgba(94,230,168,0.55);outline-offset:2px;border-radius:4px;}

/* scrollbar — thin obsidian */
::-webkit-scrollbar{width:9px;height:9px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.1);border-radius:8px;border:2px solid #04040a;}
::-webkit-scrollbar-thumb:hover{background:rgba(94,230,168,0.35);}


/* ═══════════════════════════════════════════════
   V17 · COHESION — one design language, every page
   Radius: cards 12 · buttons 9 · pills 999 · modals 16
   Buttons: green primary / ghost secondary — never white slabs
   Labels: Manrope sentence-case — never terminal caps
   ═══════════════════════════════════════════════ */

/* ── 1 · RADIUS SYSTEM ── */
.acc-card,.letter-card,.plan-card,.pw-strip,.table-wrap,.panel,.chartcard,
.sec,.edge-card,.hist-box,.hours-box,.sim-box,.mind-card,.sc-card,.arch-item,
.tax-card,.q-card,.cmp-card,.brk-box,.cal-cell,.dp-panel,.wk-cell,.stream-row,
.insight-card,.kpi-strip,.coldtruth,.ct-grid,.rev-box,.checkin-box,.goal-box,
.trades-panel,.note-panel,.eq-card,.day-panel,.ff-card,.session-card,.result-card,.tax-form,.tax-result,.rates-table,.q-grid>div,.brk-table,.checkin-card,.goal-card,.reflect-card,.hist-item,.mind-panel{border-radius:12px !important;overflow:hidden;}
.modal{border-radius:16px !important;}
.kpi-card:first-child{border-radius:12px 0 0 12px;}
.kpi-card:last-child{border-radius:0 12px 12px 0;}
.ac-status,.lc-status,.td-result,.setup-tag,.rule-tag,.tr-tag,.plan-badge,
.kpi-badge,.sd-tag,.ec-tag,.ct-eyebrow{border-radius:999px !important;padding-left:10px;padding-right:10px;}

/* ── 2 · BUTTONS — kill the white slabs ── */
.new-btn,.save-btn,.pw-strip button,.mbtn.primary{
  font-family:'Inter',sans-serif !important;
  font-size:12px !important;font-weight:600 !important;
  letter-spacing:0 !important;text-transform:none !important;
  padding:10px 20px !important;border-radius:9px !important;
  background:linear-gradient(135deg,#41d492,#28a06a) !important;
  color:#04120b !important;border:none !important;
  box-shadow:0 6px 20px rgba(61,184,130,0.25);
  transition:transform .15s cubic-bezier(.16,1,.3,1),box-shadow .18s,opacity .15s;
}
.new-btn:hover,.save-btn:hover,.pw-strip button:hover,.mbtn.primary:hover{
  opacity:1 !important;transform:translateY(-1px);box-shadow:0 10px 28px rgba(61,184,130,0.38);
}
.save-btn.saved{background:transparent !important;color:var(--g) !important;border:1px solid rgba(61,184,130,0.4) !important;box-shadow:none;}
.mbtn.ghost,.add-btn,.danger-btn,.payout-btn,.pag-btn,.btn.ghost{
  font-family:'Inter',sans-serif !important;font-size:12px !important;font-weight:500 !important;
  letter-spacing:0 !important;text-transform:none !important;
  border-radius:9px !important;padding:9px 16px !important;
}
.danger-btn{font-size:11.5px !important;}
.btn.danger{border-radius:9px !important;font-family:'Inter',sans-serif !important;text-transform:none !important;font-size:12px !important;letter-spacing:0 !important;}

/* ── 3 · STATUS & MICRO-LABELS — sentence case, humane ── */
.ac-status,.lc-status,.ac-phase,.pl-name,.pl-val,.as-l,.mf-hint,.pt-period,
.modal-title,.pc-per,.foot-copy,.read-meta,.lc-meta,.lc-countdown,.vault-empty,
.sec-meta,.li-handle{
  font-family:'Inter',sans-serif !important;
  text-transform:none !important;letter-spacing:0.01em !important;
}
.ac-status,.lc-status{font-size:10px !important;font-weight:600 !important;}
.modal-title{font-size:13px !important;font-weight:600 !important;letter-spacing:0 !important;}
.as-l,.pl-name,.pl-val{font-size:9.5px !important;color:rgba(255,255,255,0.42) !important;}
.ac-phase{font-size:10.5px !important;}
.lc-meta,.read-meta,.lc-countdown{font-size:10.5px !important;}
.vault-empty,.empty-state{font-family:'Inter',sans-serif !important;font-size:12px !important;letter-spacing:0 !important;text-transform:none !important;font-style:normal !important;}

/* ── 4 · CARDS — one surface ── */
.acc-card,.letter-card,.plan-card{
  background:linear-gradient(180deg,rgba(255,255,255,0.028),rgba(255,255,255,0.012)) !important;
  border:1px solid rgba(255,255,255,0.07) !important;
}
.acc-card:hover,.letter-card:hover{border-color:rgba(255,255,255,0.14) !important;}
.acc-card.active-acc{border-color:rgba(61,184,130,0.3) !important;}
.letter-card.unlocked{border-color:rgba(212,174,74,0.28) !important;}

/* ── 5 · INPUTS — filled fields everywhere (kills the bare-underline look) ── */
.field input,.field select{
  background:linear-gradient(180deg,#10141c,#0b0e15) !important;
  border:1px solid rgba(255,255,255,0.08) !important;border-radius:8px !important;
  padding:10px 12px !important;
}
.field input:focus,.field select:focus{border-color:rgba(61,184,130,0.5) !important;box-shadow:0 0 0 3px rgba(61,184,130,0.1);}
.add-input{
  background:linear-gradient(180deg,#10141c,#0b0e15) !important;
  border:1px solid rgba(255,255,255,0.08) !important;border-radius:8px !important;
  padding:9px 12px !important;
}

/* ── 6 · PAGE SUBTITLE — same voice everywhere ── */
.page-sub{font-family:'Inter',sans-serif !important;font-size:13px !important;
  letter-spacing:0 !important;text-transform:none !important;color:rgba(255,255,255,0.5) !important;line-height:1.65;}


/* ═══ V17.1 · SCROLL PERF ═══ */
/* noise overlay → own GPU layer, zero scroll repaint (all app pages) */
body::before{transform:translateZ(0);will-change:transform;}
/* kill remaining backdrop blurs on scroll-persistent chrome */
.m-topbar{backdrop-filter:none !important;-webkit-backdrop-filter:none !important;background:rgba(4,4,10,0.97) !important;}
/* modal backdrop blur only while open — cheaper radius */
.modal-back{backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);}
/* long lists: skip offscreen rows' render work */
.trade-table tbody tr,.letter-card,.acc-card,.arch-item,.hist-item{content-visibility:auto;contain-intrinsic-size:auto 52px;}
.letter-card,.acc-card{contain-intrinsic-size:auto 180px;}


/* ═══════════════════════════════════════════════
   V19 · MOBILE — make every page usable on a phone
   Bundle loads last, so these win. Targets the whole app.
   ═══════════════════════════════════════════════ */
@media(max-width:720px){
  /* page padding tightens */
  .page,.page-wrap>.page,.main{padding-left:16px !important;padding-right:16px !important;}
  .page-title,.page-hero-title{font-size:clamp(24px,7vw,32px) !important;}
  /* page headers: title + controls stack instead of colliding */
  .page-head,.cal-head,.j-head,.head-row{flex-wrap:wrap !important;gap:14px !important;row-gap:14px !important;}
  .toolbar,.view-toggle,.cal-controls{flex-wrap:wrap !important;}

  /* KPI strips: 4-5 cols → 2 cols */
  .kpi-strip{grid-template-columns:1fr 1fr !important;}
  .kpi-strip .kpi-card:nth-child(n),.kpi-card{border-radius:0 !important;}
  .kpi-val,.kpi-v{font-size:20px !important;}

  /* wide tables → horizontal scroll instead of overflow */
  .table-wrap,.rates-table,.cmp-table,.pt-table,.ptable{overflow-x:auto !important;-webkit-overflow-scrolling:touch;}
  .trade-table{min-width:640px;}

  /* calendar: keep 7 cols but shrink cells so the month fits */
  .cal-grid{gap:1px !important;}
  .cal-cell{min-height:44px !important;padding:3px !important;}
  .cal-day{font-size:10px !important;width:16px !important;height:16px !important;line-height:16px !important;}
  .cal-cell .cell-pnl,.cal-pnl{font-size:8px !important;}
  .cal-weekday{font-size:8px !important;}

  /* multi-column layouts collapse */
  .grid,.psy-grid,.edge-grid,.plan-grid,.field-row,.ct-grid,.foot-grid,
  .insights-grid,.hours-grid,.acc-stats,.ac-stats,.stats-row,.stat-strip,.summary-row{grid-template-columns:1fr 1fr !important;}
  .ct-grid{grid-template-columns:1fr 1fr !important;}
  .accounts-grid,.vault-grid{grid-template-columns:1fr !important;}

  /* modals: full-width sheets from the bottom */
  .modal{width:100% !important;max-width:100% !important;max-height:92vh !important;border-radius:16px 16px 0 0 !important;}
  .modal-back{align-items:flex-end !important;}

  /* onboarding + firm finder steps stack */
  #ob-steps{grid-template-columns:1fr !important;}

  /* charts don't blow the viewport */
  canvas{max-width:100% !important;}

  /* sticky loss bar sits under the mobile topbar */
  .dp-row{grid-template-columns:64px 40px 30px 1fr 52px !important;font-size:8px !important;}
  #sj-lossbar{top:54px !important;}
}

/* ═══════════════════════════════════════════════
   V23 · SIDEBAR — FLOATING PILLS
   Kills the box structure: no row dividers, no terminal
   numbering. Airy floating nav items, smooth rounded
   active pill. Keeps the collapse-on-hover deck.
   ═══════════════════════════════════════════════ */
.sidebar{background:#06070c;border-right:1px solid rgba(255,255,255,0.045);}
.sidebar::before{background:linear-gradient(180deg,rgba(61,184,130,0.4) 0%,rgba(61,184,130,0.08) 26%,transparent 60%);}

/* brand — a touch more air */
.sb-brand{border-bottom:1px solid rgba(255,255,255,0.045);}

/* nav container — no counter, breathing room */
.sb-nav{counter-reset:none;padding:14px 10px;display:flex;flex-direction:column;gap:3px;}

/* NAV ITEM — floating pill, zero dividers */
.sb-link{
  position:relative;
  border-bottom:none !important;
  border-radius:11px;
  margin:0;padding:11px 12px;
  gap:13px;
  color:rgba(255,255,255,0.42);
  background:transparent;box-shadow:none !important;
  transition:color .16s, background .2s cubic-bezier(.16,1,.3,1), transform .18s cubic-bezier(.16,1,.3,1);
  overflow:visible;
}
/* remove the terminal number entirely */
.sb-link::after{content:none !important;counter-increment:none !important;}
/* remove the '→' terminal caret */
.sb-link::before{content:none !important;}

.sb-link:hover{
  color:rgba(255,255,255,0.92);
  background:rgba(255,255,255,0.04);
  transform:none;padding-left:12px;
}
.sb-link .sb-icon{width:16px;height:16px;opacity:0.5;transition:opacity .16s,transform .18s cubic-bezier(.16,1,.3,1);}
.sb-link:hover .sb-icon{opacity:0.85;transform:scale(1.06);}

/* ACTIVE — soft filled pill, rounded, glowing dot marker */
.sb-link.active{
  color:#7df0bb;
  background:linear-gradient(120deg,rgba(61,184,130,0.16),rgba(61,184,130,0.05));
  box-shadow:inset 0 0 0 1px rgba(61,184,130,0.22) !important;
  font-weight:500;
}
.sb-link.active::before{
  content:'' !important;
  position:absolute;left:-10px;top:50%;transform:translateY(-50%);
  width:3px;height:18px;border-radius:3px;background:#3db882;
  box-shadow:0 0 10px rgba(61,184,130,0.6);
}
.sb-link.active .sb-icon{opacity:1;}

/* separator — barely-there hairline, generous margin */
.sb-sep{background:rgba(255,255,255,0.05);margin:10px 14px;height:1px;}

/* ── DECK collapse tuning for pills ── */
.sidebar{width:70px;}
.sidebar:hover{width:236px;}
.page-wrap,.main{margin-left:70px;}
/* collapsed: icon centered in the pill, no text, active pill still reads */
.sb-link{font-size:0 !important;padding:11px 0;justify-content:center;}
.sb-link .sb-icon{margin:0 auto;}
.sidebar:hover .sb-link{font-size:9px !important;letter-spacing:0.1em;padding:11px 14px;justify-content:flex-start;}
.sidebar:hover .sb-link .sb-icon{margin:0;}
/* active left marker hidden when collapsed (pill fill is enough), shown expanded */
.sb-link.active::before{opacity:0;transition:opacity .2s;}
.sidebar:hover .sb-link.active::before{opacity:1;left:4px;}
/* brand monogram tuning */
.sb-brand::after{font-size:22px;}

/* mobile: full pills, always expanded */
@media(max-width:900px){
  .sb-nav{padding:14px 12px;}
  .sb-link{font-size:9px !important;padding:12px 14px;justify-content:flex-start;}
  .sb-link .sb-icon{margin:0;}
  .sb-link.active::before{opacity:1;left:4px;}
}


/* ═══════════════════════════════════════════════
   V20 · APPLE FEEL — premium polish on the existing look.
   Glass chrome, hairline window-light, press physics, spring motion.
   Loads last, so these win.
   ═══════════════════════════════════════════════ */
:root{--sj-spring:cubic-bezier(0.32,0.72,0,1);}

/* frosted chrome — V17.1 killed blur for scroll perf; re-enabled lighter,
   on its own GPU layer (the jank came from the noise overlay, fixed since) */
.m-topbar{
  background:rgba(8,9,14,0.72) !important;
  backdrop-filter:saturate(180%) blur(18px) !important;
  -webkit-backdrop-filter:saturate(180%) blur(18px) !important;
  transform:translateZ(0);
}

/* modals read as macOS windows: hairline top-light + deep soft shadow */
.modal,.ci-modal,.pw-box,.paywall{
  box-shadow:inset 0 1px 0 rgba(255,255,255,0.07),inset 0 0 0 0.5px rgba(255,255,255,0.04),
             0 32px 90px rgba(0,0,0,0.65) !important;
}
.modal-back,.pw-back,.paywall-back,.checkin-overlay{
  background:rgba(2,2,6,0.55) !important;
  backdrop-filter:saturate(150%) blur(14px) !important;
  -webkit-backdrop-filter:saturate(150%) blur(14px) !important;
}

/* cards carry the same hairline top-light */
.kpi-card,.acc-card,.edge-card,.mind-card,.insight-card,.session-card,.letter-card{
  box-shadow:inset 0 1px 0 rgba(255,255,255,0.04);
}

/* hover lift — pointer devices only */
@media(hover:hover){
  .acc-card,.edge-card,.mind-card,.insight-card,.session-card,.letter-card{
    transition:transform .3s var(--sj-spring),box-shadow .3s ease;
  }
  .acc-card:hover,.edge-card:hover,.mind-card:hover,.insight-card:hover,.session-card:hover,.letter-card:hover{
    transform:translateY(-2px);
    box-shadow:inset 0 1px 0 rgba(255,255,255,0.06),0 14px 40px rgba(0,0,0,0.45);
  }
}

/* press physics — Apple scales, Android ripples; we scale */
.btn,.mbtn,.pw-btn,.save-btn,.lo-btn,.ts-btn,.nav-cta,.btn-primary,.sb-new,.fab,.act,.add-btn,.payout-btn{
  transition:transform .18s var(--sj-spring),opacity .18s ease;
}
.btn:active,.mbtn:active,.pw-btn:active,.save-btn:active,.lo-btn:active,.ts-btn:active,
.nav-cta:active,.btn-primary:active,.sb-new:active,.fab:active,.act:active,.add-btn:active,.payout-btn:active{
  transform:scale(0.965);
}
.ripple{display:none !important;}

/* mobile sheets: grabber + spring entrance */
@media(max-width:720px){
  .modal{position:relative;}
  .modal::after{content:"";position:absolute;top:7px;left:50%;transform:translateX(-50%);
    width:36px;height:5px;border-radius:3px;background:rgba(255,255,255,0.18);}
  .modal-back.open .modal{animation:sjSheet .45s var(--sj-spring) both;}
}
@keyframes sjSheet{from{transform:translateY(56px);opacity:.4;}to{transform:none;opacity:1;}}

/* macOS-style focus + brand selection */
:focus-visible{outline:2px solid rgba(95,189,139,0.55) !important;outline-offset:2px;}
::selection{background:rgba(95,189,139,0.28);}

@media(prefers-reduced-motion:reduce){
  .modal-back.open .modal{animation:none;}
  .btn:active,.mbtn:active,.pw-btn:active,.save-btn:active,.lo-btn:active,.ts-btn:active,
  .nav-cta:active,.btn-primary:active,.sb-new:active,.fab:active,.act:active,.add-btn:active,.payout-btn:active{transform:none;}
}


/* ═══════════════════════════════════════════════
   V21 · DISCIPLINE GATE — the STAND DOWN moment, in the app's own language.
   Follows the V17 cohesion contract: modal radius 16, green primary /
   ghost secondary, Manrope sentence-case, color only on numbers that matter.
   ═══════════════════════════════════════════════ */
.sj-disc-back{position:fixed;inset:0;z-index:400;display:flex;align-items:center;justify-content:center;
  padding:20px;background:rgba(0,0,0,0.78);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  opacity:0;transition:opacity .25s ease;}
.sj-disc-back.on{opacity:1;}
.sj-disc{max-width:480px;width:100%;
  background:#0b0e15;border:1px solid rgba(255,255,255,0.14);
  border-radius:16px;padding:28px 28px 22px;
  font-family:'Inter',system-ui,sans-serif;
  box-shadow:0 30px 90px rgba(0,0,0,0.85);
  transform:translateY(18px);transition:transform .4s cubic-bezier(.16,1,.3,1);}
.sj-disc-back.on .sj-disc{transform:none;}
.sj-disc .tag{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;margin-bottom:14px;}
.sj-disc.red .tag{color:#e05555;}
.sj-disc.amber .tag{color:#d4ae4a;}
.sj-disc .tag i{width:6px;height:6px;border-radius:50%;background:currentColor;
  box-shadow:0 0 8px currentColor;animation:sjPulse 2.4s ease-in-out infinite;font-style:normal;}
@keyframes sjPulse{0%,100%{opacity:1;}50%{opacity:0.35;}}
.sj-disc h2{font-size:18px;font-weight:700;letter-spacing:-0.01em;color:rgba(255,255,255,0.95);line-height:1.35;margin:0 0 16px;}
.sj-disc .rows{margin-bottom:18px;}
.sj-disc .row{display:flex;justify-content:space-between;align-items:baseline;gap:14px;
  padding:10px 0;border-bottom:1px solid rgba(255,255,255,0.055);}
.sj-disc .row:first-child{border-top:1px solid rgba(255,255,255,0.055);}
.sj-disc .row .l{font-size:13px;color:rgba(255,255,255,0.5);}
.sj-disc .row .v{font-family:'JetBrains Mono',ui-monospace,monospace;font-size:13.5px;
  color:rgba(255,255,255,0.92);font-variant-numeric:tabular-nums;}
.sj-disc .row .v.bad{color:#e05555;}
.sj-disc .row .v.warn{color:#d4ae4a;}
.sj-letter{margin:0 0 20px;padding:2px 0 2px 14px;border-left:2px solid rgba(255,255,255,0.15);}
.sj-letter .lt{font-size:11px;color:rgba(255,255,255,0.4);margin-bottom:6px;}
.sj-letter .lb{font-size:14px;font-weight:300;line-height:1.7;color:rgba(255,255,255,0.75);}
.sj-disc .acts{display:flex;flex-direction:column;gap:8px;}
.sj-disc .stop{width:100%;border:none;border-radius:9px;padding:11px 20px;cursor:pointer;
  font-family:inherit;font-size:12.5px;font-weight:600;color:#04120b;
  background:linear-gradient(135deg,#41d492,#28a06a);
  box-shadow:0 6px 20px rgba(61,184,130,0.25);
  transition:transform .15s cubic-bezier(.16,1,.3,1),box-shadow .18s;}
.sj-disc .stop:hover{transform:translateY(-1px);box-shadow:0 10px 28px rgba(61,184,130,0.38);}
.sj-disc .stop:active{transform:scale(0.97);}
.sj-disc .anyway{width:100%;background:none;border:1px solid rgba(255,255,255,0.08);border-radius:9px;
  padding:9px 16px;cursor:pointer;font-family:inherit;font-size:12px;font-weight:500;
  color:rgba(255,255,255,0.4);transition:color .15s,border-color .15s;}
.sj-disc .anyway:hover:not(:disabled){color:rgba(255,255,255,0.7);border-color:rgba(255,255,255,0.16);}
.sj-disc .anyway:disabled{cursor:default;opacity:0.55;}
@media(max-width:720px){
  .sj-disc-back{align-items:flex-end;padding:0;}
  .sj-disc{max-width:100%;border-radius:16px 16px 0 0;padding:26px 20px calc(20px + env(safe-area-inset-bottom));position:relative;}
  .sj-disc::before{content:"";position:absolute;top:8px;left:50%;transform:translateX(-50%);
    width:36px;height:5px;border-radius:3px;background:rgba(255,255,255,0.15);}
}
@media(prefers-reduced-motion:reduce){
  .sj-disc{transition:none;transform:none;}
  .sj-disc .tag i{animation:none;}
}


/* ═══════════════════════════════════════════════
   V22 · SPECTRA OS UPDATES — small "what's new" chat launcher.
   Docks above the Add Trade FAB; follows the V17 cohesion contract
   (radius 16 panel, green primary, Manrope sentence-case, tag pills).
   ═══════════════════════════════════════════════ */
.sj-upd-launch{
  position:fixed;right:28px;bottom:84px;z-index:90;
  width:44px;height:44px;border-radius:50%;
  background:#12161f;border:1px solid rgba(255,255,255,0.14);
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  box-shadow:0 10px 30px rgba(0,0,0,0.5);
  transition:transform .18s cubic-bezier(.16,1,.3,1),border-color .15s,background .15s;
}
.sj-upd-launch:hover{border-color:rgba(61,184,130,0.4);background:#151a24;}
.sj-upd-launch:active{transform:scale(0.94);}
.sj-upd-launch svg{width:19px;height:19px;stroke:rgba(255,255,255,0.7);fill:none;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;}
.sj-upd-dot{position:absolute;top:-2px;right:-2px;min-width:15px;height:15px;padding:0 3px;border-radius:999px;
  background:#3db882;color:#04120b;font-family:'Inter',sans-serif;font-size:9.5px;font-weight:700;
  display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 2px #04040a;}
@media(max-width:720px){.sj-upd-launch{right:16px;bottom:74px;width:40px;height:40px;}}

.sj-upd-panel{
  position:fixed;right:28px;bottom:138px;z-index:91;
  width:368px;max-width:calc(100vw - 40px);max-height:min(72vh,560px);
  background:#0b0e15;border:1px solid rgba(255,255,255,0.14);border-radius:16px;
  box-shadow:0 30px 90px rgba(0,0,0,0.85);
  display:flex;flex-direction:column;overflow:hidden;
  font-family:'Inter',sans-serif;
  opacity:0;transform:translateY(10px) scale(0.98);pointer-events:none;
  transition:opacity .2s ease,transform .2s cubic-bezier(.16,1,.3,1);
  transform-origin:bottom right;
}
.sj-upd-panel.on{opacity:1;transform:none;pointer-events:auto;}
.sj-upd-head{padding:16px 18px;border-bottom:1px solid rgba(255,255,255,0.08);
  display:flex;align-items:center;justify-content:space-between;flex:none;}
.sj-upd-head h3{font-size:14px;font-weight:700;color:rgba(255,255,255,0.94);letter-spacing:-0.01em;}
.sj-upd-head span{font-size:11.5px;color:rgba(255,255,255,0.4);display:block;margin-top:2px;}
.sj-upd-x{background:none;border:none;color:rgba(255,255,255,0.35);font-size:17px;line-height:1;cursor:pointer;padding:4px;}
.sj-upd-x:hover{color:rgba(255,255,255,0.7);}
.sj-upd-list{overflow-y:auto;padding:6px 14px 14px;flex:1;}
.sj-upd-item{display:flex;gap:10px;padding:12px 4px;border-bottom:1px solid rgba(255,255,255,0.045);}
.sj-upd-item:last-child{border-bottom:none;}
.sj-upd-mark{width:26px;height:26px;border-radius:8px;background:rgba(61,184,130,0.12);
  display:flex;align-items:center;justify-content:center;flex:none;margin-top:1px;
  font-family:var(--display,'Syne',sans-serif);font-weight:700;font-size:12px;color:#3db882;}
.sj-upd-body{min-width:0;flex:1;}
.sj-upd-top{display:flex;align-items:center;gap:8px;margin-bottom:3px;flex-wrap:wrap;}
.sj-upd-tag{font-size:10px;font-weight:700;padding:2px 8px;border-radius:999px;letter-spacing:0.01em;}
.sj-upd-tag.new{color:#5ee6a8;background:rgba(61,184,130,0.14);}
.sj-upd-tag.improved{color:#d4ae4a;background:rgba(212,174,74,0.13);}
.sj-upd-tag.fix{color:rgba(255,255,255,0.6);background:rgba(255,255,255,0.07);}
.sj-upd-time{font-size:11px;color:rgba(255,255,255,0.32);}
.sj-upd-title{font-size:13px;font-weight:600;color:rgba(255,255,255,0.92);line-height:1.4;margin-bottom:2px;}
.sj-upd-desc{font-size:12.5px;font-weight:300;color:rgba(255,255,255,0.58);line-height:1.55;}
.sj-upd-empty{padding:36px 20px;text-align:center;font-size:12.5px;color:rgba(255,255,255,0.35);}
@media(max-width:720px){
  .sj-upd-panel{right:16px;left:16px;width:auto;bottom:122px;max-height:64vh;}
}
@media(prefers-reduced-motion:reduce){.sj-upd-panel{transition:opacity .15s;}}


/* ═══════════════════════════════════════════════
   V23 · CHECK-IN STATE CARDS — replaces the generic pills.
   Cards communicate state, not just list options: the State field
   colours by valence (good/caution/risk) so the check-in reflects
   your readiness back to you. Linear/Raycast-grade restraint.
   ═══════════════════════════════════════════════ */
.sc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:10px 0 12px;}
.state-card{
  display:flex;align-items:center;gap:9px;
  padding:12px 13px;border-radius:12px;
  background:rgba(255,255,255,0.02);
  border:1px solid rgba(255,255,255,0.08);
  cursor:pointer;text-align:left;width:100%;
  font-family:'Inter',sans-serif;font-size:13px;font-weight:500;letter-spacing:-0.005em;
  color:rgba(255,255,255,0.7);
  transition:border-color .15s,background .15s,color .15s,transform .16s cubic-bezier(.16,1,.3,1);
}
.state-card:hover{border-color:rgba(255,255,255,0.18);color:rgba(255,255,255,0.92);background:rgba(255,255,255,0.035);}
.state-card:active{transform:scale(.97);}
.state-card:focus-visible{outline:2px solid rgba(61,184,130,0.55);outline-offset:2px;}
.state-card .sc-ind{width:8px;height:8px;border-radius:50%;flex:none;background:rgba(255,255,255,0.22);transition:background .15s,box-shadow .15s;}
/* selected — neutral green default (Intention / Risk) */
.state-card.sel{border-color:rgba(61,184,130,0.5);background:rgba(61,184,130,0.1);color:#eafff5;box-shadow:inset 0 1px 0 rgba(255,255,255,0.06);}
.state-card.sel .sc-ind{background:#3db882;box-shadow:0 0 10px rgba(61,184,130,0.6);}
/* valence overrides — only on the State field, where mental state = readiness */
.state-card.sel[data-valence="caution"]{border-color:rgba(212,174,74,0.5);background:rgba(212,174,74,0.1);color:#fff4dc;}
.state-card.sel[data-valence="caution"] .sc-ind{background:#d4ae4a;box-shadow:0 0 10px rgba(212,174,74,0.6);}
.state-card.sel[data-valence="risk"]{border-color:rgba(224,85,85,0.5);background:rgba(224,85,85,0.1);color:#ffe0e0;}
.state-card.sel[data-valence="risk"] .sc-ind{background:#e05555;box-shadow:0 0 10px rgba(224,85,85,0.6);}
@media(max-width:520px){.sc-grid{grid-template-columns:repeat(2,1fr);}}
@media(prefers-reduced-motion:reduce){.state-card{transition:border-color .15s,background .15s,color .15s;}.state-card:active{transform:none;}}
