:root{--ink:#10203a;--muted:#718096;--blue:#2f80ed;--blue2:#4f9cf9;--nav:#0b1730;--nav2:#102445;--bg:#f5f7fb;--card:#fff;--border:#e4e9f1;--green:#18a85f;--red:#df3e55;--amber:#d59112;--shadow:0 10px 30px rgba(20,39,74,.08);--radius:16px}
*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,system-ui,-apple-system,"Noto Sans Bengali",sans-serif;-webkit-font-smoothing:antialiased}.hidden{display:none!important}button,input,textarea,select{font:inherit}button{transition:.18s ease}button:hover{transform:translateY(-1px)}
.login{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 15% 5%,#dfeeff 0,transparent 32%),radial-gradient(circle at 90% 10%,#e5fbf3 0,transparent 28%),linear-gradient(180deg,#f8fbff,#eef3f9)}.loginbox{max-width:430px;width:100%;text-align:center;padding:34px;border:1px solid #dfe6ef;background:rgba(255,255,255,.94);backdrop-filter:blur(14px);box-shadow:0 24px 70px rgba(31,60,100,.14)}.loginbox h1{margin:16px 0 7px;font-size:28px}.loginbox p{margin:0 0 20px;color:var(--muted)}.loginbox small{display:block;margin-top:10px;color:var(--muted)}
.admin-logo{width:54px;height:54px;border-radius:15px;background:linear-gradient(145deg,#0b1f42,#173b6c);color:#61e3ba;display:grid;place-items:center;font-weight:900;font-size:18px;letter-spacing:.03em;margin:auto;box-shadow:0 10px 26px rgba(5,23,55,.24)}
.panel{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}.panel h3{margin:0 0 8px;font-size:17px}.muted{color:var(--muted)}label{display:block;font-weight:750;font-size:12px;color:#42526b;margin:13px 0}
input,textarea,select{width:100%;border:1px solid #d8e0ea;border-radius:10px;padding:11px 12px;background:#fff;color:var(--ink);margin-top:6px;outline:none;transition:.16s}input:focus,textarea:focus,select:focus{border-color:#7db5f7;box-shadow:0 0 0 3px rgba(47,128,237,.11)}textarea{min-height:96px;resize:vertical}.code{min-height:250px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;background:#0a1630;color:#d9ecff}.lightcode{background:#f7f9fc;color:#142642;min-height:130px}.mfa-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.12em;text-align:center;font-size:18px}
.primary{border:0;border-radius:10px;background:linear-gradient(135deg,var(--blue),var(--blue2));color:#fff;padding:10px 16px;font-weight:800;cursor:pointer;box-shadow:0 6px 14px rgba(47,128,237,.2)}
.layout{display:grid;grid-template-columns:250px minmax(0,1fr);min-height:100vh}aside{background:linear-gradient(180deg,var(--nav),var(--nav2));color:#fff;padding:20px 14px 16px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;box-shadow:12px 0 30px rgba(13,29,57,.08);z-index:10}.aside-brand{display:flex;align-items:center;gap:11px;padding:0 9px 22px;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:14px}.aside-brand .admin-logo{margin:0;width:40px;height:40px;border-radius:12px}.aside-brand b{font-size:17px}
aside nav{display:grid;gap:4px;overflow:auto;padding-right:2px}aside nav button,.logout{border:0;background:transparent;color:#aebbd0;text-align:left;padding:11px 12px;border-radius:10px;font-weight:720;cursor:pointer;display:flex;align-items:center;gap:9px}aside nav button::before{content:'•';width:18px;text-align:center;color:#7187a8;font-size:16px}aside nav button[data-tab=dashboard]::before{content:'▦'}aside nav button[data-tab=saas]::before{content:'◈'}aside nav button[data-tab=content]::before{content:'✎'}aside nav button[data-tab=modules]::before{content:'▤'}aside nav button[data-tab=apis]::before{content:'↔'}aside nav button[data-tab=scanners]::before{content:'⌁'}aside nav button[data-tab=indicators]::before{content:'∿'}aside nav button[data-tab=manual]::before{content:'＋'}aside nav button[data-tab=backtest]::before{content:'◷'}aside nav button[data-tab=reports]::before{content:'!'}aside nav button:hover{background:rgba(255,255,255,.06);color:#fff;transform:none}aside nav button.active{background:linear-gradient(135deg,#246ec5,#318de9);color:#fff;box-shadow:0 8px 20px rgba(20,91,173,.24)}aside nav button.active::before{color:#fff}.logout{margin-top:auto;color:#ff9cab;border-top:1px solid rgba(255,255,255,.08);border-radius:0;padding-top:16px}.logout:hover{color:#fff;transform:none}
.workspace{min-width:0}.workspace header{min-height:78px;background:rgba(255,255,255,.92);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:14px 28px;position:sticky;top:0;z-index:5}.workspace header h2{margin:0 0 4px;font-size:22px}.workspace header span{font-size:12px;color:var(--muted)}.workspace header a{text-decoration:none;color:#176fc6;font-weight:800;background:#edf6ff;border:1px solid #d7e9fa;border-radius:10px;padding:9px 12px}.workspace main{padding:24px;max-width:1500px;margin:auto}.tab{display:none}.tab.active{display:block;animation:fadein .18s ease}@keyframes fadein{from{opacity:.5;transform:translateY(3px)}to{opacity:1;transform:none}}
.dashcards{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin-bottom:18px}.dashcard{background:linear-gradient(180deg,#fff,#fbfcfe);border:1px solid var(--border);border-radius:14px;padding:17px;box-shadow:0 7px 20px rgba(20,39,74,.05)}.dashcard span{color:var(--muted);font-size:12px;font-weight:700}.dashcard b{display:block;font-size:27px;margin-top:6px;color:#16345d}
.grid2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px}.row2,.row3{display:grid;gap:10px}.row2{grid-template-columns:1fr 1fr}.row3{grid-template-columns:repeat(3,1fr)}.checkgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.checkgrid span{padding:12px;background:#f1faf6;border-radius:10px;color:#13884d}
.item{border-bottom:1px solid #edf0f4;padding:11px 0;display:flex;align-items:center;justify-content:space-between;gap:12px}.item:last-child{border:0}.item small{color:var(--muted)}.item .actions,.actions{display:flex;gap:7px;flex-wrap:wrap}.item button,.panelhead button,.actions button,#refreshHealth,#previewModule{border:1px solid #dce3ec;background:#fff;color:#31445f;border-radius:9px;padding:8px 10px;cursor:pointer;font-weight:700}.item button:hover,.panelhead button:hover,.actions button:hover{background:#f6f9fc}.danger{color:#d83b50!important}.panelhead{display:flex;align-items:center;justify-content:space-between;gap:12px}.panelhead h3{margin:0}.panelhead p{margin:4px 0 0}
.filterbar{display:flex;gap:10px;margin-bottom:12px}.filterbar select{max-width:220px}.health-row{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid #edf0f4;padding:10px 0}.health-row:last-child{border:0}.health-row b.ok,.ok{color:var(--green)}.health-row b.warn,.warn{color:var(--amber)}.health-row b.error,.error{color:var(--red)}pre{background:#08152e;color:#d9e7ff;border-radius:12px;padding:15px;overflow:auto;max-height:70vh}.badge,.security-badge{display:inline-block;padding:4px 9px;border-radius:999px;background:#eef3f8;font-size:11px;font-weight:800}.security-badge.ok{background:#e9f8f0;color:#13884d}.module-version{border-bottom:1px solid #edf0f4;padding:10px 0}.report-meta{display:flex;flex-wrap:wrap;gap:8px;color:#718096;font-size:12px;margin:6px 0}.err{border-left:4px solid #ef445b;padding:11px 13px;background:#fff7f8;margin:9px 0;border-radius:10px}.err.resolved{opacity:.55;border-left-color:#8c96a6}.toast{position:fixed;right:24px;bottom:24px;background:#0b1c38;color:#fff;border-radius:10px;padding:11px 15px;opacity:0;transform:translateY(15px);transition:.2s;z-index:50;box-shadow:0 12px 30px rgba(0,0,0,.18)}.toast.show{opacity:1;transform:none}
.api-simple-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:18px;margin-bottom:18px}.api-kicker{font-size:11px;font-weight:900;letter-spacing:.12em;color:#718096}.api-main-line{display:flex;align-items:center;justify-content:space-between;gap:16px}.api-main-line h3{font-size:24px;margin:8px 0 2px}.api-status{padding:7px 11px;border-radius:999px;background:#eef3f8;color:#667085;font-size:12px;font-weight:900}.api-status.ok{background:#e7f8ef;color:#13884d}.api-meta{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.api-meta span{background:#f5f7fa;border-radius:999px;padding:7px 10px;font-size:12px}.api-message{min-height:20px;margin-top:10px;font-size:13px;font-weight:700}.api-advanced{margin-top:14px;border-top:1px solid #edf0f4;padding-top:12px}.api-check{display:flex;align-items:center;justify-content:space-between;border:1px solid #e3e8ef;border-radius:11px;padding:10px 12px;margin-top:12px}.api-check input{width:auto;margin:0}.api-source-row{display:grid;grid-template-columns:1fr 1.4fr;gap:18px;padding:12px 0;border-bottom:1px solid #edf0f4}.api-source-right{text-align:right}
.stock-meta-panel{margin-top:18px}.stock-meta-toggle-list{display:grid;gap:10px;margin:14px 0}.stock-meta-toggle{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0;padding:12px 14px;border:1px solid #e4e9f0;border-radius:12px;background:#fafcff}.stock-meta-toggle input{width:20px;height:20px;margin:0;accent-color:var(--blue)}.security-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:18px}.security-hero{background:linear-gradient(135deg,#f7fbff,#f4fbf7)}.security-note{padding:10px 12px;border-radius:10px;background:#f7f9fc;color:#60708a;font-size:12px}
@media(max-width:1150px){.dashcards{grid-template-columns:repeat(3,1fr)}}@media(max-width:920px){.layout{grid-template-columns:1fr}aside{height:auto;position:relative;padding-bottom:10px}.aside-brand{border-bottom:0;margin-bottom:5px}aside nav{grid-template-columns:repeat(3,1fr);overflow:visible}aside nav button{justify-content:center;text-align:center}.logout{margin:8px 0 0;border-top:0}.grid2,.security-grid,.api-simple-grid{grid-template-columns:1fr}.workspace header{position:relative}.api-source-row{grid-template-columns:1fr}.api-source-right{text-align:left}}@media(max-width:620px){.workspace main{padding:12px}.workspace header{padding:12px 14px}.workspace header span{display:none}.workspace header h2{font-size:19px}.workspace header a{font-size:12px}.grid2,.dashcards,.checkgrid,.row2,.row3{grid-template-columns:1fr}aside nav{grid-template-columns:1fr 1fr}.panel{padding:15px}.filterbar{flex-direction:column}.filterbar select{max-width:none}.item{align-items:flex-start;flex-direction:column}.item .actions{width:100%}.loginbox{padding:26px 20px}}
