/*! خط Cairo مستضاف ذاتياً (SIL OFL 1.1 — انظر static/fonts/OFL-Cairo.txt): مجموعتا الأحرف العربية واللاتينية فقط، woff2، وfont-display: swap.
   ثلاثة أوزان فقط (400 · 700 يخدم 600–700 · 800) = 6 ملفات؛ المسارات مطلقة لأن الملف يُدمج في حزمة /static/dist/ */@font-face{font-family:'Cairo';font-style:normal;font-weight:400;font-display:swap;src:url(/static/fonts/cairo-arabic-400-normal.woff2) format('woff2');unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0897-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC4,U+10EFC-10EFF,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}@font-face{font-family:'Cairo';font-style:normal;font-weight:400;font-display:swap;src:url(/static/fonts/cairo-latin-400-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Cairo';font-style:normal;font-weight:600 700;font-display:swap;src:url(/static/fonts/cairo-arabic-700-normal.woff2) format('woff2');unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0897-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC4,U+10EFC-10EFF,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}@font-face{font-family:'Cairo';font-style:normal;font-weight:600 700;font-display:swap;src:url(/static/fonts/cairo-latin-700-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Cairo';font-style:normal;font-weight:800;font-display:swap;src:url(/static/fonts/cairo-arabic-800-normal.woff2) format('woff2');unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0897-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC4,U+10EFC-10EFF,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}@font-face{font-family:'Cairo';font-style:normal;font-weight:800;font-display:swap;src:url(/static/fonts/cairo-latin-800-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{color-scheme:dark;--bg:#0a0f1e;--bg-2:#0f1729;--bg-3:#131c33;--card:rgba(255,255,255,0.04);--card-hover:rgba(255,255,255,0.07);--card-solid:#111a2f;--border:rgba(255,255,255,0.08);--border-strong:rgba(255,255,255,0.18);--overlay:rgba(3,6,14,0.72);--text:#e8eaf0;--text-2:#8892a4;--text-3:#7f89a0;--text-on-accent:#ffffff;--text-on-green:#05261c;--green:#00d4aa;--green-soft:rgba(0,212,170,0.12);--green-line:rgba(0,212,170,0.35);--red:#ff4757;--red-soft:rgba(255,71,87,0.12);--red-line:rgba(255,71,87,0.35);--gold:#ffd700;--gold-soft:rgba(255,215,0,0.12);--gold-line:rgba(255,215,0,0.35);--blue:#4a90e2;--blue-soft:rgba(74,144,226,0.12);--blue-line:rgba(74,144,226,0.35);--purple:#9a76ff;--purple-soft:rgba(154,118,255,0.14);--orange:#ff9800;--orange-soft:rgba(255,152,0,0.12);--accent:#1a73e8;--accent-2:#00d4aa;--accent-grad:linear-gradient(135deg,#008a6f,#1a6fd8);--focus:0 0 0 3px rgba(74,144,226,0.45);--chart-1:#4a90e2;--chart-2:#0aa387;--chart-3:#b08600;--chart-4:#8b5cf6;--chart-5:#c86a1c;--chart-grid:rgba(255,255,255,0.07);--chart-base:#1a2440;--shadow-1:0 4px 14px rgba(0,0,0,0.25);--shadow-2:0 14px 40px rgba(0,0,0,0.45);--font:'Cairo',-apple-system,BlinkMacSystemFont,'Segoe UI',Tahoma,sans-serif;--mono:Consolas,'SF Mono',Menlo,monospace;--fs-xs:0.74rem;--fs-sm:0.84rem;--fs-md:0.95rem;--fs-lg:1.1rem;--fs-xl:1.35rem;--fs-2xl:1.7rem;--lh:1.75;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--r-sm:8px;--r-md:12px;--r-lg:16px;--r-pill:999px;--sidebar-w:250px;--topbar-h:60px;--tabbar-h:60px;--content-max:1400px;--t-fast:0.15s ease;--t-med:0.25s ease}:root[data-theme="light"]{color-scheme:light;--bg:#f3f5fa;--bg-2:#ffffff;--bg-3:#eef1f7;--card:#ffffff;--card-hover:#f7f9fd;--card-solid:#ffffff;--border:#e2e7f0;--border-strong:#c9d2e0;--overlay:rgba(15,23,42,0.45);--text:#111827;--text-2:#4b5563;--text-3:#626d81;--text-on-green:#ffffff;--green:#087961;--green-soft:rgba(8,121,97,0.12);--green-line:rgba(8,121,97,0.4);--red:#c62938;--red-soft:rgba(198,41,56,0.1);--red-line:rgba(198,41,56,0.4);--gold:#926019;--gold-soft:rgba(146,96,25,0.12);--gold-line:rgba(146,96,25,0.4);--blue:#1d4ed8;--blue-soft:rgba(29,78,216,0.1);--blue-line:rgba(29,78,216,0.35);--purple:#6742ff;--purple-soft:rgba(103,66,255,0.1);--orange:#a25904;--orange-soft:rgba(162,89,4,0.12);--accent-grad:linear-gradient(135deg,#098268,#2563eb);--focus:0 0 0 3px rgba(29,78,216,0.35);--chart-1:#2b6fc2;--chart-2:#0b9f7f;--chart-3:#a37f00;--chart-4:#6d4fd0;--chart-5:#cf7420;--chart-grid:rgba(16,24,40,0.08);--chart-base:#dfe5ef;--shadow-1:0 4px 14px rgba(16,24,40,0.08);--shadow-2:0 14px 40px rgba(16,24,40,0.14)}@media (prefers-reduced-motion:reduce){:root{--t-fast:0s;--t-med:0s}*,*::before,*::after{animation-duration:0.01ms!important;animation-iteration-count:1!important;transition-duration:0.01ms!important;scroll-behavior:auto!important}}
*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;font-family:var(--font);font-size:15px;line-height:var(--lh);background:var(--bg);color:var(--text);min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased}body::before{content:'';position:fixed;inset:0;pointer-events:none;z-index:0;background:radial-gradient(ellipse at 20% 0%,rgba(74,144,226,0.08) 0%,transparent 60%),radial-gradient(ellipse at 80% 100%,rgba(124,77,255,0.06) 0%,transparent 60%)}:root[data-theme="light"] body::before{opacity:0.5}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}a:not([class]){text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:0.18em;text-decoration-color:color-mix(in srgb,currentColor 55%,transparent)}a:not([class]):hover{text-decoration-color:currentColor}img,svg{max-width:100%}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}:focus-visible{outline:none;box-shadow:var(--focus);border-radius:var(--r-sm)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:3px}[hidden]{display:none!important}.skip-link{position:absolute;top:-50px;right:8px;background:var(--accent);color:#fff;padding:8px 14px;border-radius:var(--r-sm);z-index:3000}.skip-link:focus{top:8px}.app{position:relative;z-index:1;min-height:100vh}.sidebar{position:fixed;top:0;bottom:0;right:0;width:var(--sidebar-w);z-index:1200;background:var(--bg-2);border-left:1px solid var(--border);display:flex;flex-direction:column;overflow-y:auto;transition:transform var(--t-med)}.brand{display:flex;align-items:center;gap:10px;padding:16px 18px 12px;border-bottom:1px solid var(--border);color:var(--text)}.brand:hover{text-decoration:none}.brand img,.brand svg{width:36px;height:36px;flex:0 0 auto}.brand .brand-name{font-weight:800;font-size:1.02em;line-height:1.2}.brand .brand-sub{font-size:var(--fs-xs);color:var(--text-2);white-space:nowrap}.brand>a>span{min-width:0;overflow:hidden;text-overflow:ellipsis}.nav{padding:8px 10px 16px;flex:1}.nav-group{margin-top:10px}.nav-group-title{font-size:var(--fs-xs);color:var(--text-3);font-weight:700;padding:6px 10px 4px;letter-spacing:0.2px}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--r-md);color:var(--text-2);font-weight:600;font-size:var(--fs-md);transition:background var(--t-fast),color var(--t-fast);min-height:42px}.nav-item:hover{background:var(--card-hover);color:var(--text);text-decoration:none}.nav-item.active{background:var(--blue-soft);color:var(--text);box-shadow:inset 3px 0 0 var(--blue)}.nav-item .ico{width:22px;text-align:center;font-size:1.05em;flex:0 0 22px}.nav-item .lock{margin-right:auto;font-size:var(--fs-xs);color:var(--gold)}.sidebar-foot{padding:12px 14px 16px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:8px;font-size:var(--fs-sm);color:var(--text-2)}.shell{margin-right:var(--sidebar-w);min-height:100vh;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:1000;min-height:var(--topbar-h);background:color-mix(in srgb,var(--bg-2) 88%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px;padding:8px 18px}.topbar .menu-btn{display:none}.icon-btn{width:40px;height:40px;border-radius:var(--r-md);border:1px solid var(--border);background:var(--card);color:var(--text);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:1.05em;position:relative;flex:0 0 auto;transition:background var(--t-fast)}.icon-btn:hover{background:var(--card-hover);text-decoration:none}.topbar .page-title{font-weight:800;font-size:1.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar .spacer{flex:1}.search{position:relative;flex:0 1 360px;min-width:120px}.search .search-open{display:none}.search input{width:100%;min-height:40px;padding:8px 38px 8px 12px;border-radius:var(--r-md);border:1px solid var(--border);background:var(--card);color:var(--text);font-size:var(--fs-sm)}.search input::placeholder{color:var(--text-3)}.search .search-ico{position:absolute;right:12px;top:50%;transform:translateY(-50%);color:var(--text-3);pointer-events:none}.search-results{position:absolute;top:calc(100% + 6px);right:0;left:0;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-2);max-height:60vh;overflow-y:auto;z-index:1500;padding:6px}.search-results .item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;border-radius:var(--r-sm);color:var(--text);cursor:pointer}.search-results .item:hover,.search-results .item.sel{background:var(--card-hover);text-decoration:none}.search-results .item .code{font-family:var(--mono);color:var(--text-2);font-size:var(--fs-xs)}.search-results .empty{padding:12px;color:var(--text-2);font-size:var(--fs-sm);text-align:center}.chip{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:700;white-space:nowrap;border:1px solid var(--border);color:var(--text-2);background:var(--card);min-height:32px}.chip:hover{text-decoration:none;background:var(--card-hover)}.chip.ok{color:var(--green);background:var(--green-soft);border-color:var(--green-line)}.chip.warn{color:var(--gold);background:var(--gold-soft);border-color:var(--gold-line)}.chip.off{color:var(--red);background:var(--red-soft);border-color:var(--red-line)}.chip.info{color:var(--blue);background:var(--blue-soft);border-color:var(--blue-line)}.chip .dot{width:8px;height:8px;border-radius:50%;background:currentColor}.chip.ok .dot{animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.35}}.badge-count{position:absolute;top:-5px;left:-5px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--red);color:#fff;font-size:0.65em;font-weight:700;display:none;align-items:center;justify-content:center}.badge-count.show{display:inline-flex}.user-menu{position:relative}.user-menu .menu{position:absolute;top:calc(100% + 6px);left:0;min-width:200px;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-2);padding:6px;z-index:1500;display:none}.user-menu.open .menu{display:block}.user-menu .menu a,.user-menu .menu button{display:flex;align-items:center;gap:8px;width:100%;text-align:right;padding:9px 10px;border-radius:var(--r-sm);border:0;background:transparent;color:var(--text);cursor:pointer;font-size:var(--fs-sm);min-height:40px}.user-menu .menu a:hover,.user-menu .menu button:hover{background:var(--card-hover);text-decoration:none}.user-menu .menu .who{padding:8px 10px 6px;color:var(--text-2);font-size:var(--fs-xs);border-bottom:1px solid var(--border);margin-bottom:4px}.page{flex:1;width:100%;max-width:var(--content-max);margin:0 auto;padding:18px 18px 40px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px}.page-head h1{font-size:var(--fs-xl);font-weight:800;margin:0}.page-head .lead{color:var(--text-2);font-size:var(--fs-sm);margin:4px 0 0}.footer{border-top:1px solid var(--border);padding:14px 18px;font-size:var(--fs-xs);color:var(--text-3);display:flex;gap:10px 18px;flex-wrap:wrap;justify-content:space-between}.flashes{margin-bottom:14px;display:flex;flex-direction:column;gap:8px}.flash{padding:10px 14px;border-radius:var(--r-md);border:1px solid var(--border);background:var(--card);font-size:var(--fs-sm);display:flex;justify-content:space-between;gap:10px}.flash.success{border-color:var(--green-line);background:var(--green-soft)}.flash.warning{border-color:var(--gold-line);background:var(--gold-soft)}.flash.error,.flash.danger{border-color:var(--red-line);background:var(--red-soft)}.flash button{background:none;border:0;color:var(--text-2);cursor:pointer;font-size:1.1em;line-height:1}.tabbar{display:none}.scrim{position:fixed;inset:0;background:var(--overlay);z-index:1100;display:none}.scrim.show{display:block}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);padding:18px;margin-bottom:16px}.card.tight{padding:12px 14px}.card-h{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px}.card-h h2,.card-h h3{font-size:1em;font-weight:800;margin:0;display:flex;align-items:center;gap:8px}.card-h h2.lg{font-size:var(--fs-lg)}.card .sub{color:var(--text-2);font-size:var(--fs-sm)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:8px 18px;border-radius:var(--r-md);border:1px solid var(--border);background:var(--card);color:var(--text);font-weight:700;cursor:pointer;transition:background var(--t-fast),transform var(--t-fast),opacity var(--t-fast);white-space:nowrap;text-decoration:none}.btn:hover{background:var(--card-hover);text-decoration:none}.btn:active{transform:translateY(1px)}.btn:disabled,.btn[aria-disabled="true"]{opacity:0.55;cursor:default;pointer-events:none}.btn-primary{background:var(--accent-grad);border-color:transparent;color:var(--text-on-accent)}.btn-primary:hover{filter:brightness(1.07)}.btn-ok{color:var(--green);background:var(--green-soft);border-color:var(--green-line)}.btn-danger{color:var(--red);background:var(--red-soft);border-color:var(--red-line)}.btn-gold{color:var(--gold);background:var(--gold-soft);border-color:var(--gold-line)}:root[data-theme="light"] .btn-gold{color:#fff;background:var(--gold);border-color:var(--gold)}:root[data-theme="light"] .btn-gold:hover{background:#7a4f14}.btn-ghost{background:transparent;border-color:transparent;color:var(--text-2)}.btn-sm{min-height:34px;padding:5px 12px;font-size:var(--fs-sm)}.btn-block{width:100%}.pill{display:inline-block;padding:2px 10px;border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:700;background:var(--card-hover);color:var(--text-2);line-height:1.6;white-space:nowrap}.pill.ok{background:var(--green-soft);color:var(--green)}.pill.warn{background:var(--gold-soft);color:var(--gold)}.pill.danger{background:var(--red-soft);color:var(--red)}.pill.info{background:var(--blue-soft);color:var(--blue)}.pill.purple{background:var(--purple-soft);color:var(--purple)}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}.table th{padding:8px 10px;color:var(--text-2);font-weight:600;border-bottom:1px solid var(--border);text-align:right;white-space:nowrap}.table td{padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:middle}.table tr:last-child td{border-bottom:0}.table.hover tbody tr:hover td{background:var(--card-hover)}.table .num,.num{direction:ltr;unicode-bidi:isolate;display:inline-block}.mono{font-family:var(--mono);direction:ltr;unicode-bidi:isolate;display:inline-block;letter-spacing:0.3px}.field{display:block;margin-bottom:12px}.field>label,.label{display:block;font-size:var(--fs-sm);color:var(--text-2);margin-bottom:5px}.input,.field input:not([type="checkbox"]):not([type="radio"]),.field select,.field textarea{width:100%;min-height:42px;padding:8px 12px;border-radius:var(--r-md);border:1px solid var(--border);background:var(--card);color:var(--text);font-size:var(--fs-md);transition:border-color var(--t-fast)}.input:focus,.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--blue);box-shadow:var(--focus);outline:none}.field textarea{min-height:80px;resize:vertical}.field .hint{font-size:var(--fs-xs);color:var(--text-3);margin-top:4px}.check{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:var(--fs-sm)}.check input{width:18px;height:18px;accent-color:var(--green)}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px}.stat{background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);padding:14px;text-align:center}.stat .k{font-size:var(--fs-xs);color:var(--text-2);margin-bottom:4px}.stat .v{font-size:1.55em;font-weight:800;direction:ltr;unicode-bidi:isolate}.stat .s{font-size:var(--fs-xs);color:var(--text-3);margin-top:3px}.grid{display:grid;gap:14px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-auto{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.split{display:grid;grid-template-columns:290px minmax(0,1fr);gap:14px;align-items:start}.split>.card{margin-bottom:0}.two{display:grid;grid-template-columns:1fr 1fr;gap:8px}.tabs{display:flex;gap:6px;border-bottom:1px solid var(--border);margin-bottom:14px;overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{padding:9px 14px;border:0;background:none;color:var(--text-2);font-weight:700;cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;min-height:42px}.tab.active{color:var(--text);border-bottom-color:var(--green)}.tab-panel[hidden]{display:none}.modal-root{position:fixed;inset:0;z-index:2000;display:none;align-items:center;justify-content:center;padding:16px;background:var(--overlay)}.modal-root.open{display:flex}.modal-box{width:100%;max-width:480px;max-height:92vh;overflow-y:auto;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--r-lg);padding:18px;box-shadow:var(--shadow-2)}.modal-box h2{margin:0 0 8px;font-size:var(--fs-lg)}.modal-box .actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.toasts{position:fixed;bottom:calc(var(--tabbar-h) + 12px);left:50%;transform:translateX(-50%);z-index:2500;display:flex;flex-direction:column;gap:8px;width:min(92vw,420px);pointer-events:none}.toast{pointer-events:auto;padding:11px 14px;border-radius:var(--r-md);background:var(--bg-3);border:1px solid var(--border);box-shadow:var(--shadow-2);font-size:var(--fs-sm);display:flex;gap:10px;align-items:flex-start;animation:rise var(--t-med)}.toast.ok{border-color:var(--green-line)}.toast.warn{border-color:var(--gold-line)}.toast.error{border-color:var(--red-line)}.toast a{font-weight:700}@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.skeleton{position:relative;overflow:hidden;background:var(--card-hover);border-radius:var(--r-sm);color:transparent!important;min-height:1em}.skeleton::after{content:'';position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,0.08),transparent);animation:shimmer 1.4s infinite}@keyframes shimmer{to{transform:translateX(100%)}}.empty{text-align:center;padding:28px 16px;color:var(--text-2);border:1px dashed var(--border);border-radius:var(--r-lg);font-size:var(--fs-sm)}.empty .ico{font-size:1.8em;margin-bottom:6px}.alert-box{padding:10px 14px;border-radius:var(--r-md);border:1px solid var(--border);background:var(--card);font-size:var(--fs-sm);line-height:1.7}.alert-box.warn{border-color:var(--gold-line);background:var(--gold-soft)}.alert-box.danger{border-color:var(--red-line);background:var(--red-soft)}.alert-box.info{border-color:var(--blue-line);background:var(--blue-soft)}.lock-box{padding:14px 16px;border-radius:var(--r-md);border:1px solid var(--gold-line);background:var(--gold-soft);line-height:1.8}.lock-box b{display:block}.filters{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.filters.scroll{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}.filters.scroll::-webkit-scrollbar{display:none}.filter{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:4px 12px;border-radius:var(--r-pill);border:1px solid var(--border);background:var(--card);color:var(--text-2);font-size:var(--fs-sm);font-weight:700;cursor:pointer;white-space:nowrap;transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast)}.filter:hover{background:var(--card-hover)}.filter.active{color:var(--green);background:var(--green-soft);border-color:var(--green-line)}.filter .n{font-size:var(--fs-xs);color:var(--text-3);font-weight:600}.filter.active .n{color:inherit}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}.toolbar .input,.toolbar select.input{width:auto;min-width:150px;min-height:38px}.table th.sortable{cursor:pointer;user-select:none}.table th.sortable:hover{color:var(--text)}.table th.sortable::after{content:'↕';margin-right:4px;opacity:0.35;font-size:0.85em}.table th.sortable.asc::after{content:'↑';opacity:1;color:var(--green)}.table th.sortable.desc::after{content:'↓';opacity:1;color:var(--green)}.table-wrap.sticky{overflow:visible}.table-wrap.sticky thead th{position:sticky;top:var(--topbar-h);z-index:5;background:var(--card-solid);box-shadow:0 1px 0 var(--border)}.sigbar{display:inline-flex;align-items:center;gap:6px;min-width:88px}.sigbar .track{flex:1;height:6px;border-radius:3px;background:var(--card-hover);overflow:hidden;min-width:40px}.sigbar .fill{height:100%;border-radius:3px}.sigbar .v{font-weight:800;font-size:var(--fs-sm);min-width:22px;text-align:left;direction:ltr}.sparkline{width:84px;height:28px;display:block}.star-btn{border:0;background:none;cursor:pointer;font-size:1.15em;line-height:1;padding:6px;border-radius:var(--r-sm);color:var(--text-3);min-width:34px;min-height:34px}.star-btn:hover{background:var(--card-hover);color:var(--gold)}.star-btn.on{color:var(--gold)}.expander{border:1px solid var(--border);background:var(--card);color:var(--text-2);border-radius:var(--r-sm);min-height:32px;padding:3px 10px;cursor:pointer;font-size:var(--fs-xs);font-weight:700;white-space:nowrap}.expander:hover,.expander[aria-expanded="true"]{background:var(--card-hover);color:var(--text)}.detail-row td{background:var(--bg-2);padding:12px 14px}.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px 14px;font-size:var(--fs-sm)}.detail-grid .k{color:var(--text-3);font-size:var(--fs-xs)}.detail-grid .v{font-weight:700}.rec{display:inline-block;padding:2px 9px;border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:800;white-space:nowrap;background:var(--card-hover);color:var(--text-2)}.rec.buy{background:var(--green-soft);color:var(--green)}.rec.strong{background:var(--green);color:var(--text-on-green)}.rec.sell{background:var(--red-soft);color:var(--red)}.rec.hold{background:var(--gold-soft);color:var(--gold)}.rec.lock{background:var(--gold-soft);color:var(--gold);border:1px dashed var(--gold-line)}.chart{position:relative;direction:ltr}.chart svg{display:block;width:100%;height:auto;overflow:visible;font-family:var(--font)}.chart text{fill:var(--text-2);font-size:11px}.chart .grid line{stroke:var(--chart-grid);stroke-width:1}.chart .axis line{stroke:var(--border-strong)}.chart .hit{fill:transparent}.chart .hover-band{fill:var(--text);fill-opacity:0;pointer-events:none}.chart .hit:hover + .hover-band,.chart .hover-band.on{fill-opacity:0.05}.chart .bar{stroke:var(--card-solid);stroke-width:1}.chart .line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.chart .area{fill-opacity:0.12}.chart .dot{stroke:var(--card-solid);stroke-width:2}.chart .seg{stroke:var(--card-solid);stroke-width:2}.chart .cross{stroke:var(--text-2);stroke-width:1;stroke-dasharray:3 3;pointer-events:none}.chart .val{font-size:10.5px;font-weight:700;fill:var(--text)}.chart .lbl{font-size:11px}.chart .center-v{font-size:20px;font-weight:800;fill:var(--text)}.chart .center-k{font-size:10.5px;fill:var(--text-2)}.chart-legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:6px;font-size:var(--fs-xs);color:var(--text-2);direction:rtl}.chart-legend .lg{display:inline-flex;align-items:center;gap:6px}.chart-legend .lg i{width:10px;height:10px;border-radius:3px;display:inline-block}.chart-legend .lg b{color:var(--text)}.chart-toggle{display:inline-block;margin-top:4px;border:1px solid var(--border);background:var(--card);color:var(--text-3);border-radius:var(--r-sm);font-size:var(--fs-xs);padding:2px 8px;min-height:26px;cursor:pointer;direction:rtl}.chart-toggle:hover{color:var(--text);background:var(--card-hover)}.chart-table{direction:rtl;margin-top:4px}.chart-table .table td,.chart-table .table th{padding:5px 8px;font-size:var(--fs-xs)}.chart-empty{display:flex;align-items:center;justify-content:center;color:var(--text-3);font-size:var(--fs-sm);direction:rtl;min-height:120px;border:1px dashed var(--border);border-radius:var(--r-md)}.chart-tip{position:absolute;z-index:3000;pointer-events:none;background:var(--bg-3);color:var(--text);border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:6px 10px;font-size:var(--fs-xs);line-height:1.7;box-shadow:var(--shadow-1);direction:rtl;max-width:260px;white-space:nowrap}.chart-tip b{display:block;margin-bottom:2px}.chart-tip .r{display:flex;justify-content:space-between;gap:12px}.chart-tip .r i{width:8px;height:8px;border-radius:2px;display:inline-block;margin-left:5px}.chart-tip .num{direction:ltr}.muted{color:var(--text-2)}.faint{color:var(--text-3)}.small{font-size:var(--fs-sm)}.xs{font-size:var(--fs-xs)}.up{color:var(--green)}.down{color:var(--red)}.gold{color:var(--gold)}.blue{color:var(--blue)}.flex{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.between{justify-content:space-between}.mt-1{margin-top:8px}.mt-2{margin-top:16px}.mb-1{margin-bottom:8px}.mb-2{margin-bottom:16px}.center{text-align:center}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media (max-width:1023px){.sidebar{transform:translateX(100%);box-shadow:none;visibility:hidden;transition:transform var(--t-med),visibility 0s var(--t-med)}.sidebar:not(.open)>*{content-visibility:hidden}.sidebar.open{transform:none;box-shadow:var(--shadow-2);visibility:visible;transition:transform var(--t-med),visibility 0s}.shell{margin-right:0}.topbar{padding:8px 12px}.topbar .menu-btn{display:inline-flex}.topbar .page-title{flex:0 1 auto;max-width:38%}.topbar .spacer{display:none}.search{flex:1 1 auto}.topbar .user-menu .name{display:none}.page{padding:12px 12px calc(var(--tabbar-h) + 20px)}.footer{padding-bottom:calc(var(--tabbar-h) + 12px)}.tabbar{position:fixed;bottom:0;right:0;left:0;height:var(--tabbar-h);z-index:1000;display:grid;grid-template-columns:repeat(5,1fr);background:color-mix(in srgb,var(--bg-2) 92%,transparent);backdrop-filter:blur(10px);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom)}.tabbar a,.tabbar button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--text-2);font-size:0.68rem;font-weight:700;border:0;background:none;text-decoration:none;cursor:pointer}.tabbar .ico{font-size:1.25em;line-height:1}.tabbar .active{color:var(--green)}.grid-2,.grid-3,.split{grid-template-columns:minmax(0,1fr)}.card{padding:14px}.page-head h1{font-size:var(--fs-lg)}}@media (max-width:640px){body{font-size:14px}.stats{grid-template-columns:repeat(2,1fr);gap:8px}.stat .v{font-size:1.3em}.chip .txt{display:none}.chip{padding:5px 8px;min-height:30px}.topbar{gap:6px;padding:6px 10px}.topbar .icon-btn{width:36px;height:36px}.topbar .page-title{flex:1 1 auto;max-width:none}.search{flex:0 0 auto;min-width:0}.search input,.search .search-ico{display:none}.search .search-open{display:inline-flex}.topbar.searching .page-title,.topbar.searching .chip,.topbar.searching .user-menu,.topbar.searching .icon-btn:not(.menu-btn):not(.search-open){display:none}.topbar.searching .search{flex:1 1 auto}.topbar.searching .search input{display:block}.topbar.searching .search .search-open{display:none}.toasts{bottom:calc(var(--tabbar-h) + 8px)}}@media (min-width:1024px){.sidebar .close-btn{display:none}}
