:root{--bg:#080706;--bg2:#0D0C0A;--bg3:#13120F;--card:rgba(255,255,255,.028);--tx:#F6F4EF;--tx2:#ABA79F;--tx3:#7A766E;--gold:#E2B85A;--loss:#C9776B;--line:rgba(255,255,255,.08);color-scheme:dark}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--tx);font:15px/1.5 "Noto Sans Bengali","Hind Siliguri",system-ui,sans-serif}
button,select,input,textarea{font:inherit;color:inherit}
button{cursor:pointer;background:none;border:0}
a{color:var(--tx2)}
.up{color:var(--tx)}.dn{color:var(--loss)}.dim{color:var(--tx3)}
#app{display:grid;grid-template-columns:220px 1fr;height:100vh}
.sh-side{border-right:1px solid var(--line);padding:18px 12px;background:var(--bg2);display:flex;flex-direction:column;gap:18px}
.sh-brand{display:flex;gap:10px;align-items:center;padding:0 6px}
.sh-brand b{display:block;font-size:18px}.sh-brand small{color:var(--tx3);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase}
.sh-logo{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;color:var(--gold);border:1px solid rgba(226,184,90,.35);background:linear-gradient(145deg,#2a2112,#120e07)}
.sh-nav{display:flex;flex-direction:column;gap:2px}
.sh-credit{margin-top:auto;padding:0 8px;display:flex;flex-direction:column;gap:8px;font-size:11px;line-height:1.4}
.sh-credit a{color:var(--tx3);text-decoration:none}.sh-credit a:hover{color:var(--tx2)}
.sh-demo{align-self:flex-start;padding:3px 8px;border:1px solid rgba(226,184,90,.35);border-radius:999px;color:var(--gold);font-size:11px}
.sh-nav a{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:11px;color:var(--tx2);text-decoration:none;font-size:15px}
.sh-nav a:hover{background:rgba(255,255,255,.04);color:var(--tx)}
.sh-nav a.on{background:rgba(255,255,255,.05);color:var(--tx);box-shadow:inset 2px 0 0 var(--gold)}
.sh-nav a.on svg{color:var(--gold)}
.sh-main{display:flex;flex-direction:column;min-width:0;min-height:0}
.sh-top{display:flex;align-items:center;justify-content:space-between;padding:16px 26px 8px}
.sh-title{margin:0;font-size:24px;font-weight:600}
.sh-lang{display:flex;border:1px solid var(--line);border-radius:10px;padding:3px}
.sh-lang button{padding:5px 10px;border-radius:7px;color:var(--tx3);font-size:13px}.sh-lang button.on{background:rgba(226,184,90,.12);color:var(--gold)}
.sh-page{flex:1;overflow:auto;padding:10px 26px 40px;display:flex;flex-direction:column;gap:14px}
#app.sh-full .sh-page{padding:6px 14px 14px;overflow:hidden}
.sh-chartbox{flex:1;min-height:0}
.sh-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px}
.sh-lab{font-size:11.5px;color:var(--gold);letter-spacing:.12em;text-transform:uppercase;font-weight:600;margin-bottom:8px}
.sh-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.sh-kpi span{font-size:12px;color:var(--tx3)}.sh-kpi b{display:block;font:600 24px "IBM Plex Mono",monospace;margin-top:6px}
.sh-two{display:grid;grid-template-columns:2fr 1fr;gap:12px}
.sh-eq{height:230px}
.sh-disc{display:flex;flex-direction:column}.sh-disc small{color:var(--tx3)}
.sh-ring{--p:0;width:130px;height:130px;border-radius:50%;margin:14px auto;display:grid;place-items:center;background:conic-gradient(var(--gold) calc(var(--p)*1%),rgba(255,255,255,.06) 0)}
.sh-ring b{width:104px;height:104px;border-radius:50%;background:var(--bg);display:grid;place-items:center;font:600 34px "IBM Plex Mono",monospace}
.sh-grade{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:10px;margin-top:auto;color:var(--tx3)}
.sh-grade b{font-size:28px;color:var(--gold)}
.sh-weak{background:linear-gradient(160deg,rgba(226,184,90,.08),transparent 60%),var(--card);border-color:rgba(226,184,90,.22)}
.sh-weak p{font-size:19px;line-height:1.5;margin:8px 0 0}
.sh-mrow{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px dashed var(--line);font-size:14px}.sh-mrow small{color:var(--tx3)}
.sh-mrow b{font:500 14px "IBM Plex Mono",monospace}
.sh-mtotal{text-align:right;margin-top:8px;color:var(--loss);font:600 15px "IBM Plex Mono",monospace}
.sh-calhead{color:var(--tx2);font-size:14px;margin-bottom:8px}
.sh-calgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.sh-calgrid .h{font-size:11.5px;color:var(--tx3);text-align:center}
.sh-calgrid .d{min-height:58px;border:1px solid var(--line);border-radius:9px;padding:5px 7px;display:flex;flex-direction:column;justify-content:space-between;font-size:11.5px;color:var(--tx3)}
.sh-calgrid .d b{font:500 11.5px "IBM Plex Mono",monospace;text-align:right}.sh-calgrid .d small{text-align:right;font-size:10px}
.sh-calgrid .d.w{background:rgba(246,244,239,var(--a))}.sh-calgrid .d.w b{color:var(--tx)}
.sh-calgrid .d.l{background:rgba(201,119,107,var(--a))}.sh-calgrid .d.l b{color:#f0c2ba}
.sh-tablewrap{padding:4px;overflow:auto}
.sh-tbl{width:100%;border-collapse:collapse;font-size:14px}
.sh-tbl th{text-align:left;font-weight:500;color:var(--tx3);font-size:12px;padding:9px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
.sh-tbl td{padding:10px;border-bottom:1px solid var(--line);color:var(--tx2);white-space:nowrap}
.sh-tbl tr.click{cursor:pointer}.sh-tbl tr.click:hover td{background:rgba(255,255,255,.03)}
.sh-tbl td b{color:var(--tx)}
.sh-stars{color:var(--gold);letter-spacing:2px;font-size:12px}.sh-stars .dim{color:#3a3833}
.sh-tag{display:inline-block;font-size:11.5px;padding:2px 8px;border-radius:999px;border:1px solid var(--line);margin-right:4px;color:var(--tx2)}
.sh-tag.bad{border-color:rgba(201,119,107,.4);color:#e3a99f}
.sh-row{display:flex;gap:8px;align-items:center}.sh-between{justify-content:space-between}.sh-wrap{flex-wrap:wrap;gap:10px}
.sh-seg{display:flex;border:1px solid var(--line);border-radius:10px;padding:3px}
.sh-seg button{padding:6px 12px;border-radius:7px;color:var(--tx3);font-size:14px}.sh-seg button.on{background:rgba(255,255,255,.07);color:var(--tx)}
.sh-btn{display:inline-flex;align-items:center;padding:8px 14px;border-radius:10px;border:1px solid var(--line);color:var(--tx2);font-size:14px;cursor:pointer}
.sh-btn:hover{color:var(--tx);border-color:rgba(255,255,255,.18)}
.sh-primary{padding:9px 16px;border-radius:10px;background:var(--gold);color:#120e05;font-weight:600;font-size:14px}
.sh-filters select,.sh-help select{background:var(--bg2);border:1px solid var(--line);border-radius:9px;padding:7px 10px;font-size:13.5px}
.sh-help{color:var(--tx2);font-size:13.5px}.sh-help summary{cursor:pointer;color:var(--tx3)}.sh-help p{margin:6px 0}
.sh-empty{text-align:center;padding:60px 20px;border:1px dashed var(--line);border-radius:16px}
.sh-empty h2{margin:0 0 6px;font-size:22px}.sh-empty p{color:var(--tx2);margin:0 0 16px}
.sh-empty .sh-row{justify-content:center;flex-wrap:wrap}
.sh-sample{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--tx3)}
.sh-sample button{color:var(--gold);text-decoration:underline}
.sh-toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--bg3);border:1px solid rgba(226,184,90,.35);color:var(--tx);padding:10px 16px;border-radius:12px;z-index:100;font-size:14px}
.sh-drawer-wrap{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.55);display:flex;justify-content:flex-end}
.sh-drawer{width:min(520px,100%);height:100%;overflow:auto;background:var(--bg3);border-left:1px solid rgba(255,255,255,.1);padding:20px;display:flex;flex-direction:column;gap:10px}
.sh-drawer h3{margin:0 0 4px;font-size:19px}
.sh-f2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.sh-drawer label{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--tx2)}
.sh-drawer input:not([type=checkbox]),.sh-drawer textarea{background:var(--bg);border:1px solid var(--line);border-radius:9px;padding:8px 10px;font:13.5px "IBM Plex Mono",monospace;color:var(--tx)}
.sh-drawer textarea{font-family:inherit}
.sh-auto{font:13px "IBM Plex Mono",monospace;color:var(--gold);min-height:18px}
.sh-checks{display:flex;flex-direction:column;gap:6px}.sh-checks label{flex-direction:row;align-items:center;gap:8px;font-size:14px;color:var(--tx)}
.sh-checks input{accent-color:var(--gold);width:16px;height:16px}
.sh-chips{display:flex;flex-wrap:wrap;gap:6px}
.sh-chips button{padding:6px 11px;border-radius:999px;border:1px solid var(--line);font-size:13px;color:var(--tx2)}
.sh-chips button.on{border-color:rgba(226,184,90,.5);color:var(--gold);background:rgba(226,184,90,.08)}
.sh-chips button.on.bad{border-color:rgba(201,119,107,.55);color:#e3a99f;background:rgba(201,119,107,.1)}
.sh-rate button{font-size:22px;color:#3a3833;padding:0 2px}.sh-rate button.on{color:var(--gold)}
.sh-shots{display:flex;flex-wrap:wrap;gap:8px}
.sh-shots img{width:110px;height:72px;object-fit:cover;border-radius:8px;border:1px solid var(--line)}
.sh-addshot{width:110px;height:72px;border:1px dashed rgba(255,255,255,.2);border-radius:8px;display:grid !important;place-items:center;cursor:pointer;color:var(--tx3)}
@media (max-width:900px){.sh-grid{grid-template-columns:repeat(2,1fr)}.sh-two{grid-template-columns:1fr}}
@media (max-width:700px){
  #app{grid-template-columns:1fr;grid-template-rows:1fr 60px}
  .sh-side{grid-row:2;flex-direction:row;padding:0;border-right:0;border-top:1px solid var(--line)}
  .sh-brand,.sh-credit{display:none}
  .sh-nav{flex-direction:row;width:100%;justify-content:space-around}
  .sh-nav a{flex-direction:column;gap:2px;padding:7px 4px;font-size:10.5px;text-align:center;box-shadow:none !important;background:none !important}
  .sh-nav a.on{color:var(--gold)}
  .sh-main{grid-row:1}
  .sh-top{padding:12px 16px 4px}.sh-title{font-size:20px}
  .sh-page{padding:8px 16px 24px}
  #app.sh-full .sh-page{padding:0}
  .sh-kpi b{font-size:19px}
  .sh-calgrid .d{min-height:46px;padding:3px 4px}.sh-calgrid .d b{font-size:9.5px}
  .sh-f2{grid-template-columns:1fr 1fr}
}
/* tools */
.tl-top{grid-template-columns:1fr 1fr}
.tl-f{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
.tl-f label,.tl-sliders label,.tl-plan label{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--tx2)}
.tl-f input,.tl-f select,.tl-plan textarea{background:var(--bg);border:1px solid var(--line);border-radius:9px;padding:8px 9px;font:13.5px "IBM Plex Mono",monospace;color:var(--tx);min-width:0}
.tl-plan textarea{font-family:inherit;resize:vertical}
.tl-out{margin-top:14px;display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
.tl-lots{font:600 34px "IBM Plex Mono",monospace;color:var(--gold)}.tl-lotsub{color:var(--tx2);font-size:14px}
.tl-now{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px}.tl-now span{color:var(--tx3);font-size:13px}
.tl-time{font:600 30px "IBM Plex Mono",monospace}
.tl-cols{display:grid;grid-template-columns:1fr 1fr;gap:14px}.tl-cols small{color:var(--tx3);font-size:12px}
.tl-item{display:flex;justify-content:space-between;padding:7px 9px;margin-top:6px;border:1px solid var(--line);border-radius:9px;font-size:13.5px;color:var(--tx2)}
.tl-item b{font:500 13px "IBM Plex Mono",monospace}
.tl-item.live{border-color:rgba(226,184,90,.45);background:rgba(226,184,90,.07);color:var(--tx)}.tl-item.live b{color:var(--gold)}
.tl-item i{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--gold);margin-right:7px;vertical-align:middle}
.tl-sliders{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.tl-sliders b{color:var(--tx);font-family:"IBM Plex Mono",monospace}.tl-sliders input{accent-color:var(--gold)}
.tl-range{margin:34px 8px 6px}
.tl-bar{position:relative;height:8px;border-radius:99px;background:linear-gradient(90deg,rgba(201,119,107,.5),rgba(255,255,255,.12),rgba(226,184,90,.6))}
.tl-bar .start{position:absolute;top:-6px;width:2px;height:20px;background:var(--tx3)}
.tl-pt{position:absolute;top:-30px;transform:translateX(-50%);text-align:center;white-space:nowrap}
.tl-pt b{display:block;font:600 14px "IBM Plex Mono",monospace}.tl-pt small{display:block;color:var(--tx3);font-size:11px;margin-top:22px}
.tl-pt.worst b{color:var(--loss)}.tl-pt.best b{color:var(--gold)}
.tl-dd{margin-top:40px;color:var(--tx2);font-size:14px}.tl-dd b{color:var(--tx)}
.tl-tables{margin-top:10px}.tl-tables small{color:var(--tx3);font-size:12px}
.tl-guess{font-size:12.5px;margin:10px 0 0}
.tl-plan{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:6px}
.tl-print{display:none}
@media (max-width:900px){.tl-top{grid-template-columns:1fr}.tl-f{grid-template-columns:repeat(2,1fr)}.tl-sliders{grid-template-columns:1fr 1fr}.tl-plan{grid-template-columns:1fr}.tl-cols{grid-template-columns:1fr}}
@media print{
  body{background:#fff;color:#111}
  #app{display:block;height:auto}
  .sh-side,.sh-top,.sh-page>*:not(.tl-print){display:none !important}
  .sh-page{padding:0;overflow:visible}
  .tl-print{display:block;color:#111;font:14px/1.6 "Noto Sans Bengali",sans-serif;padding:24px}
  .tl-print h1{font-size:24px;border-bottom:2px solid #B98C35;padding-bottom:6px}.tl-print h3{font-size:15px;margin:16px 0 4px;color:#7a5a12}
  .tl-pdate,.tl-pfoot{color:#666;font-size:12px}
}
.sh-two>*,.sh-grid>*,.tl-cols>*{min-width:0}
.sh-card{min-width:0}
/* strategies */
.st-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.st-card{text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:6px;transition:border-color .2s}
.st-card:hover{border-color:rgba(226,184,90,.4)}
.st-card h3,.st-pb h3{margin:4px 0 0;font-size:17px;color:var(--tx)}
.st-card p{margin:0;color:var(--tx2);font-size:13.5px;line-height:1.55}
.st-foot{margin-top:auto;font-size:12.5px;padding-top:6px}
.st-level{font-size:11.5px;padding:2px 9px;border-radius:999px;border:1px solid var(--line);color:var(--tx2)}
.st-level.beginner{color:var(--gold);border-color:rgba(226,184,90,.4)}
.st-tf{font:12px "IBM Plex Mono",monospace}
.st-in{color:var(--gold);font-size:12px}
.st-detail p{margin:0 0 4px;color:var(--tx);font-size:14.5px;line-height:1.6}
.st-disc{color:var(--tx3) !important;font-size:12.5px !important}
.st-meta{display:flex;flex-direction:column;gap:2px;font-size:13px;color:var(--tx2)}.st-meta b{color:var(--tx3);font-weight:500;margin-right:6px}
.st-ets{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
.st-mis{margin:0;padding-left:18px;color:#e3a99f;font-size:14px}
.st-stats{display:flex;gap:14px;flex-wrap:wrap;align-items:center;font-size:13.5px;color:var(--tx2);border-top:1px solid var(--line);padding-top:8px}
.st-stats b{margin-left:auto;font-family:"IBM Plex Mono",monospace}
.st-actions{justify-content:flex-end;margin-top:8px}
.st-pb ol{margin:6px 0;padding-left:20px;color:var(--tx2);font-size:14px}
.st-pb small{display:block}
@media (max-width:700px){.st-ets{grid-template-columns:1fr}}
