
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{--p:#6366f1;--pl:#818cf8;--pd:#4f46e5;--ac:#06b6d4;--ok:#10b981;--warn:#f59e0b;--err:#ef4444;--inf:#3b82f6;--bg:#f1f2f7;--card:#ffffff;--side:#ffffff;--tx:#0f172a;--tx2:#475569;--muted:#94a3b8;--brd:#e5e7eb;--brd2:#f1f2f7;--s1:0 1px 2px rgba(0,0,0,.04),0 1px 6px rgba(0,0,0,.04);--s2:0 4px 12px rgba(0,0,0,.08);--s3:0 10px 40px rgba(0,0,0,.12);--r:12px;--rsm:8px;--rxs:6px;--fh:'Inter',system-ui,sans-serif;--fb:'Inter',system-ui,sans-serif;--sw:256px;--th:60px;--bh:62px;--tr:.18s ease;--sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px)}
[data-theme="dark"]{--bg:#0d1117;--card:#161b22;--side:#161b22;--tx:#e6edf3;--tx2:#8b949e;--muted:#6e7681;--brd:#30363d}
@media(prefers-color-scheme:dark){[data-theme="auto"]{--bg:#0f0e1a;--card:#1a1830;--side:#120f1f;--tx:#f1f5f9;--tx2:#94a3b8;--muted:#64748b;--brd:#2d2b4e}}
* { -webkit-tap-highlight-color: transparent; touch-action: manipulation; }

html{font-size:16px}body{font-family:var(--fb);background:var(--bg);color:var(--tx);min-height:100vh;overflow-x:hidden}
::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-thumb{background:var(--brd);border-radius:3px}
h1,h2,h3,h4{font-family:var(--fh);font-weight:700;line-height:1.2}
.hidden{display:none!important}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 18px;border-radius:var(--rsm);border:none;cursor:pointer;font-family:var(--fb);font-size:.875rem;font-weight:600;transition:all var(--tr);text-decoration:none;line-height:1;white-space:nowrap}
.btn:disabled{opacity:.5;cursor:not-allowed}
.bp{background:var(--p);color:#fff}.bp:hover:not(:disabled){background:var(--pl);transform:translateY(-1px);box-shadow:var(--s2)}
.bs{background:var(--bg);color:var(--tx);border:1px solid var(--brd)}.bs:hover:not(:disabled){background:var(--brd)}
.bd{background:var(--err);color:#fff}.bd:hover:not(:disabled){background:#dc2626}
.bg2{background:transparent;color:var(--tx2);padding:8px}.bg2:hover{background:var(--brd);color:var(--tx)}
.bsm{padding:6px 12px;font-size:.78rem}.blg{padding:13px 26px;font-size:1rem}.chip{padding:8px 14px;border-radius:20px;border:2px solid var(--brd);background:var(--bg2);cursor:pointer;font-size:.82rem;font-weight:600;transition:all .2s;color:var(--tx2)}
.chip.selected{border-color:var(--p);background:rgba(79,70,229,.12);color:var(--p)}
.bbl{width:100%}.bic{width:35px;height:35px;padding:0;border-radius:var(--rxs)}
.fg{margin-bottom:13px}.fl{display:block;font-size:.82rem;font-weight:600;color:var(--tx2);margin-bottom:5px}
.fc{width:100%;padding:10px 12px;border:1.5px solid var(--brd);border-radius:var(--rsm);background:var(--bg);color:var(--tx);font-family:var(--fb);font-size:.875rem;transition:border-color var(--tr);outline:none}
.fc:focus{border-color:var(--p);box-shadow:0 0 0 3px rgba(79,70,229,.12)}.fc::placeholder{color:var(--muted)}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:11px}@media(max-width:480px){.frow{grid-template-columns:1fr}}
.ig{position:relative;display:flex;align-items:center}.ig .fc{padding-right:40px}
.igb{position:absolute;right:9px;background:none;border:none;cursor:pointer;color:var(--muted);padding:4px}.igb:hover{color:var(--tx)}
select.fc{cursor:pointer}textarea.fc{resize:vertical;min-height:65px}
.card{background:var(--card);border-radius:var(--r);box-shadow:var(--s1);border:1px solid var(--brd);padding:17px}.card:hover{box-shadow:var(--s2)}
.ch{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.ct{font-family:var(--fh);font-size:.9rem;font-weight:700}
.badge{display:inline-flex;align-items:center;padding:3px 8px;border-radius:20px;font-size:.7rem;font-weight:600}
.ba{background:rgba(79,70,229,.15);color:var(--p)}.bok{background:rgba(16,185,129,.15);color:var(--ok)}.bw{background:rgba(245,158,11,.15);color:var(--warn)}.ber{background:rgba(239,68,68,.15);color:var(--err)}.bgr{background:var(--brd);color:var(--tx2)}.bac{background:rgba(6,182,212,.15);color:var(--ac)}
#tc{position:fixed;top:16px;right:16px;z-index:9999;display:flex;flex-direction:column;gap:7px;max-width:320px;pointer-events:none}
.toast{display:flex;align-items:flex-start;gap:9px;padding:11px 13px;border-radius:var(--rsm);background:var(--card);border:1px solid var(--brd);box-shadow:var(--s3);animation:tIn .25s ease;min-width:210px;pointer-events:all}
.toast.out{animation:tOut .25s ease forwards}
.tic{font-size:.9rem;flex-shrink:0;margin-top:1px}.tbd{flex:1}.tti{font-weight:700;font-size:.8rem}.tms{font-size:.73rem;color:var(--muted);margin-top:1px}
.tcl{cursor:pointer;background:none;border:none;color:var(--muted);font-size:.85rem;padding:2px;flex-shrink:0}
.tok{border-left:3px solid var(--ok)}.tok .tic{color:var(--ok)}.ter{border-left:3px solid var(--err)}.ter .tic{color:var(--err)}.twn{border-left:3px solid var(--warn)}.twn .tic{color:var(--warn)}.tin{border-left:3px solid var(--inf)}.tin .tic{color:var(--inf)}
@keyframes tIn{from{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}@keyframes tOut{to{opacity:0;transform:translateX(100%)}}
.mo{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:1000;display:flex;align-items:center;justify-content:center;padding:16px;animation:fIn .2s ease}
.modal{background:var(--card);border-radius:var(--r);box-shadow:var(--s3);width:100%;max-width:480px;max-height:90vh;overflow-y:auto;animation:sUp .25s ease}
.mh{display:flex;align-items:center;justify-content:space-between;padding:17px 20px 0}.mt{font-family:var(--fh);font-size:1rem;font-weight:700}.mb{padding:13px 20px 17px}.mf{display:flex;gap:7px;justify-content:flex-end;padding:0 20px 18px}
@keyframes fIn{from{opacity:0}to{opacity:1}}@keyframes sUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
.spin{width:32px;height:32px;border:3px solid var(--brd);border-top-color:var(--p);border-radius:50%;animation:sp .7s linear infinite}@keyframes sp{to{transform:rotate(360deg)}}
#ls{position:fixed;inset:0;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:13px;z-index:9999}
.ltxt{font-family:var(--fh);font-size:1.4rem;font-weight:800;background:linear-gradient(135deg,var(--p),var(--ac));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
#pwa-banner{position:fixed;bottom:0;left:0;right:0;background:linear-gradient(135deg,#3730a3,#4f46e5);color:#fff;padding:14px 18px calc(14px + var(--sab));z-index:2000;display:flex;align-items:center;gap:12px;box-shadow:0 -4px 20px rgba(0,0,0,.2)}
.pwai{width:44px;height:44px;border-radius:12px;background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:1.3rem}
.pwai2{flex:1}.pwai2 strong{display:block;font-family:var(--fh);font-weight:700;font-size:.95rem}.pwai2 span{font-size:.78rem;opacity:.85}
.pwab{display:flex;gap:7px;flex-shrink:0}
.pwa-yes{background:#fff;color:var(--p);font-weight:700;padding:9px 17px;border-radius:9px;border:none;cursor:pointer;font-family:var(--fb);font-size:.85rem}
.pwa-no{background:rgba(255,255,255,.15);color:#fff;border:none;border-radius:9px;padding:9px 12px;cursor:pointer;font-family:var(--fb);font-size:.8rem}
#ios-hint{position:fixed;bottom:0;left:0;right:0;background:var(--card);border-top:1px solid var(--brd);padding:18px 18px calc(18px + var(--sab));z-index:2000;box-shadow:0 -4px 20px rgba(0,0,0,.12)}
.ihclose{position:absolute;top:12px;right:14px;background:none;border:none;cursor:pointer;color:var(--muted);font-size:1.2rem}
#auth{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1e1b4b,#312e81,#0e7490);padding:20px}
.auth-card{background:var(--card);border-radius:var(--r);box-shadow:var(--s3);padding:30px;width:100%;max-width:390px}
.auth-logo{text-align:center;margin-bottom:20px}
.auth-ic{width:56px;height:56px;border-radius:16px;background:linear-gradient(135deg,var(--p),var(--ac));display:flex;align-items:center;justify-content:center;margin:0 auto 9px;box-shadow:0 4px 18px rgba(79,70,229,.35)}
.auth-title{font-family:var(--fh);font-size:1.4rem;font-weight:800;background:linear-gradient(135deg,var(--p),var(--ac));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.tabs{display:flex;background:var(--bg);border-radius:var(--rsm);padding:4px;margin-bottom:17px;gap:4px}
.tab{flex:1;padding:8px;border:none;border-radius:8px;cursor:pointer;font-family:var(--fb);font-size:.85rem;font-weight:600;background:transparent;color:var(--tx2);transition:all var(--tr)}.tab.on{background:var(--card);color:var(--p);box-shadow:var(--s1)}
.alert{display:flex;gap:9px;padding:10px 13px;border-radius:var(--rsm);border:1px solid;margin-bottom:12px;font-size:.83rem}
.ad{background:rgba(239,68,68,.08);border-color:rgba(239,68,68,.25);color:#dc2626}
.as2{background:rgba(16,185,129,.08);border-color:rgba(16,185,129,.25);color:#059669}
.acrit{border-color:var(--err);border-width:2px;background:rgba(239,68,68,.12);color:#dc2626;font-weight:700;animation:pls 1s infinite}
@keyframes pls{0%,100%{border-color:#ef4444}50%{border-color:#fca5a5}}
#app{display:none;height:100vh;overflow:hidden}.app-layout{display:flex;height:100vh;overflow:hidden}
.sidebar{width:var(--sw);min-width:var(--sw);height:100vh;background:#fff;display:flex;flex-direction:column;overflow:hidden;flex-shrink:0;z-index:100}
.sbh{padding:14px 11px 12px;border-bottom:1px solid #f3f4f6;flex-shrink:0}
.sblogo{display:flex;align-items:center;gap:8px}
.sblogoi{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,var(--p),var(--ac));display:flex;align-items:center;justify-content:center;flex-shrink:0}
.sblogot{font-family:var(--fh);font-size:.875rem;font-weight:800;color:#111827}.sblogov{font-size:.58rem;color:#9ca3af}
.sbnav{flex:1;overflow-y:auto;padding:7px 4px}
.sbsec{font-size:.58rem;font-weight:700;letter-spacing:.08em;color:#9ca3af;text-transform:uppercase;padding:6px 9px 3px}
.ni{display:flex;align-items:center;gap:7px;padding:7px 9px;border-radius:8px;cursor:pointer;margin-bottom:1px;color:#374151;font-weight:600;font-size:.825rem;transition:all var(--tr);border:none;background:transparent;width:100%;text-align:left}
.ni:hover{background:#f3f4f6;color:#111827}.ni.on{background:rgba(99,102,241,.1);color:#4f46e5}
.niic{width:16px;height:16px;flex-shrink:0;font-size:13px;display:flex;align-items:center;justify-content:center}
.sbfoot{padding:7px 4px;border-top:1px solid #f3f4f6;flex-shrink:0}
.sbusr{display:flex;align-items:center;gap:7px;padding:7px 9px;border-radius:8px;cursor:pointer;transition:background var(--tr)}.sbusr:hover{background:rgba(255,255,255,.06)}
.uav{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,var(--p),var(--ac));display:flex;align-items:center;justify-content:center;font-weight:800;font-size:.72rem;color:#fff;flex-shrink:0;font-family:var(--fh)}
.uname{font-size:.78rem;font-weight:600;color:#111827;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.urole{font-size:.58rem;color:rgba(255,255,255,.35)}
.main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}
.topbar{height:var(--th);background:var(--card);border-bottom:1px solid var(--brd);display:flex;align-items:center;padding:0 16px;gap:8px;flex-shrink:0;box-shadow:var(--s1);padding-top:var(--sat)}
.tbtitle{font-family:var(--fh);font-size:.9rem;font-weight:700;flex:1}
#mbtn{display:none}
.pg{flex:1;overflow-y:auto;padding:16px}
.view{display:none}.view.on{display:block;animation:fUp .25s ease forwards}
@keyframes fUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.hsc{background:linear-gradient(135deg,var(--pd),var(--p),var(--ac));border-radius:var(--r);padding:18px;color:#fff;margin-bottom:15px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.hssvg{flex-shrink:0;position:relative;width:94px;height:94px}.hsnum{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-family:var(--fh);font-size:1.5rem;font-weight:800;color:#fff;text-align:center;line-height:1}.hsnum small{display:block;font-size:.44rem;opacity:.7;font-weight:600}
.hsi{flex:1;min-width:150px}.hsl{font-family:var(--fh);font-size:1rem;font-weight:800;margin-bottom:2px}.hss{font-size:.78rem;opacity:.8;margin-bottom:8px}.hsf{display:flex;flex-direction:column;gap:4px}
.sf{display:flex;align-items:center;gap:5px;font-size:.67rem}.sfb{flex:1;height:3px;background:rgba(255,255,255,.2);border-radius:2px;overflow:hidden}.sff{height:100%;background:rgba(255,255,255,.8);border-radius:2px;transition:width .6s ease}.sfv{font-weight:700;min-width:28px;text-align:right;opacity:.85;font-size:.65rem}
.modgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(115px,1fr));gap:8px;margin-bottom:15px}
.mc{background:var(--card);border-radius:var(--r);border:1px solid var(--brd);padding:12px 8px;display:flex;flex-direction:column;align-items:center;gap:5px;cursor:pointer;transition:all var(--tr);text-align:center}.mc:hover{border-color:var(--p);transform:translateY(-2px);box-shadow:var(--s2)}
.mi{width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center;font-size:1rem}.mn{font-size:.7rem;font-weight:700;color:var(--tx)}
.el{display:flex;flex-direction:column;gap:5px}
.ei{display:flex;align-items:center;gap:9px;padding:9px 12px;background:var(--card);border-radius:var(--rsm);border:1px solid var(--brd);cursor:pointer;transition:background var(--tr)}.ei:hover{background:var(--bg)}
.edot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.einfo{flex:1;min-width:0}.emod{font-size:.65rem;font-weight:600;color:var(--muted);text-transform:uppercase}.eval{font-weight:700;font-size:.82rem}.etime{font-size:.65rem;color:var(--muted);flex-shrink:0}
.mvh{margin-bottom:14px;display:flex;align-items:center;gap:9px}.mvic{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.1rem;flex-shrink:0}.mvt{font-family:var(--fh);font-size:1.15rem;font-weight:800}.mvs{font-size:.74rem;color:var(--muted)}
.mlay{display:grid;grid-template-columns:1fr 1fr;gap:14px}@media(max-width:860px){.mlay{grid-template-columns:1fr}}
.cw{position:relative;height:180px;margin-top:6px}.cw canvas{border-radius:var(--rsm)}
.dt{width:100%;border-collapse:collapse;font-size:.8rem}.dt th{text-align:left;padding:7px 10px;font-size:.66rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:2px solid var(--brd)}.dt td{padding:7px 10px;border-bottom:1px solid var(--brd);color:var(--tx)}.dt tr:last-child td{border-bottom:none}.dt tr:hover td{background:var(--bg)}.tw{overflow-x:auto;border-radius:var(--rsm)}
.prog{height:5px;background:var(--brd);border-radius:3px;overflow:hidden}.progb{height:100%;border-radius:3px;transition:width .5s ease}
.ss{font-size:.7rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid var(--brd)}
.si{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--brd)}.si:last-child{border-bottom:none}.sil{font-weight:600;font-size:.85rem}.sid{font-size:.73rem;color:var(--muted);margin-top:2px}
.ths{display:flex;gap:5px}.tho{flex:1;padding:7px;border:2px solid var(--brd);border-radius:var(--rsm);cursor:pointer;text-align:center;font-size:.72rem;font-weight:600;transition:all var(--tr);background:var(--bg);color:var(--tx2)}.tho.on,.tho:hover{border-color:var(--p);color:var(--p)}
.bnav{display:none;position:fixed;bottom:0;left:0;right:0;background:var(--card);border-top:1px solid var(--brd);z-index:200;padding-bottom:var(--sab)}.bnavi{display:flex;align-items:center;justify-content:space-around;height:var(--bh)}
.bni{min-height:44px;min-width:44px;display:flex;flex-direction:column;align-items:center;gap:2px;padding:5px 9px;border-radius:var(--rsm);cursor:pointer;color:var(--muted);font-size:.58rem;font-weight:600;transition:all var(--tr);border:none;background:none;min-width:46px}.bni.on{color:var(--p)}.bni svg{width:18px;height:18px}
.sob{display:none;position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:99;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.sob.on{display:block}
@media(max-width:768px){.sidebar{position:fixed;top:0;left:0;height:100vh;z-index:100;transform:translateX(-100%);transition:transform var(--tr);overflow-y:auto;-webkit-overflow-scrolling:touch}.sidebar.op{transform:translateX(0)}#mbtn{display:flex}.bnav{display:block}.pg{padding:12px;padding-bottom:calc(var(--bh) + var(--sab) + 12px)}.topbar{padding:0 12px;padding-top:var(--sat)}.modgrid{grid-template-columns:repeat(auto-fill,minmax(95px,1fr))}.hsc{flex-direction:column;text-align:center}}
.cr{background:rgba(239,68,68,.12);color:var(--err)}.cb{background:rgba(59,130,246,.12);color:var(--inf)}.cg{background:rgba(16,185,129,.12);color:var(--ok)}.cy{background:rgba(245,158,11,.12);color:var(--warn)}.cp{background:rgba(139,92,246,.12);color:#8b5cf6}.cc{background:rgba(6,182,212,.12);color:var(--ac)}.cpk{background:rgba(236,72,153,.12);color:#ec4899}.co{background:rgba(249,115,22,.12);color:#f97316}.ct2{background:rgba(20,184,166,.12);color:#14b8a6}.ci{background:rgba(79,70,229,.12);color:var(--p)}.clm{background:rgba(16,185,129,.12);color:#059669}.cgr{background:rgba(34,197,94,.12);color:#16a34a}
.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 16px;text-align:center;gap:7px}.empi{font-size:2rem;opacity:.3}.empt{font-size:.875rem;font-weight:700;color:var(--tx2)}.empd{font-size:.77rem;color:var(--muted);max-width:220px}
.sh{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.st{font-family:var(--fh);font-size:.875rem;font-weight:700}
.chip{display:inline-flex;align-items:center;padding:4px 10px;border-radius:20px;font-size:.7rem;font-weight:600;background:var(--brd);color:var(--tx2);cursor:pointer;border:none;transition:all var(--tr)}.chip.on,.chip:hover{background:var(--p);color:#fff}
.adst{background:var(--card);border-radius:var(--rsm);padding:12px;border:1px solid var(--brd);text-align:center}.adsv{font-family:var(--fh);font-size:1.7rem;font-weight:800;color:var(--p)}.adsl{font-size:.73rem;color:var(--muted);font-weight:600}
.bpart{fill:#e2e8f0;stroke:#94a3b8;stroke-width:1.5;cursor:pointer;transition:fill .15s}.bpart:hover{fill:#c7d2fe}.bpart.sel{fill:var(--err);stroke:#dc2626}[data-theme="dark"] .bpart{fill:#2d2b4e;stroke:#4a4870}
.emc{background:#fff;border:2px solid #1e1b4b;border-radius:var(--r);padding:16px;max-width:440px}.emhd{display:flex;align-items:center;gap:8px;background:#1e1b4b;color:#fff;border-radius:8px;padding:11px;margin-bottom:11px}.ems{margin-bottom:10px}.ems h4{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:4px;font-weight:700}.emchip{display:inline-flex;background:rgba(239,68,68,.1);color:#dc2626;border:1px solid rgba(239,68,68,.3);border-radius:20px;padding:2px 8px;font-size:.72rem;font-weight:600;margin:2px}
.lh{color:var(--err);font-weight:700}.ll{color:var(--warn);font-weight:700}.lok{color:var(--ok);font-weight:700}
input[type=range]{-webkit-appearance:none;width:100%;height:4px;background:var(--brd);border-radius:2px;outline:none;cursor:pointer}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:var(--p);cursor:pointer;box-shadow:0 0 0 3px rgba(79,70,229,.2)}
.aitem{display:flex;align-items:flex-start;gap:10px;background:var(--card);border-radius:var(--rsm);border:1px solid var(--brd);padding:10px;margin-bottom:6px}.adt{background:linear-gradient(135deg,var(--p),var(--ac));color:#fff;border-radius:8px;padding:5px 9px;text-align:center;flex-shrink:0;min-width:42px}.aday{font-family:var(--fh);font-size:1rem;font-weight:800;line-height:1}.amon{font-size:.57rem;font-weight:600;text-transform:uppercase;opacity:.85}
.ritem{display:flex;align-items:center;gap:8px;background:var(--card);border-radius:var(--rsm);border:1px solid var(--brd);padding:9px 11px;margin-bottom:6px}.rtim{font-family:var(--fh);font-weight:800;color:var(--p);font-size:.875rem;flex-shrink:0;min-width:44px}
.gitem{background:var(--card);border-radius:var(--rsm);border:1px solid var(--brd);padding:12px;margin-bottom:8px}
@media print{.sidebar,.topbar,.bnav,#tc,#pwa-banner,#ios-hint,.noprint{display:none!important}.main,.pg{overflow:visible!important}body{background:#fff;color:#000}.printonly{display:block!important}}

.icd-dropdown{position:absolute;top:100%;left:0;right:0;background:var(--card);border:1.5px solid var(--p);border-radius:var(--rsm);z-index:500;max-height:280px;overflow-y:auto;box-shadow:var(--s2);display:none}
.icd-item:hover{background:var(--bg)}
.icd-wrap{position:relative}

/* ── Globale Suche ──────────────────────────────────── */
#global-search-overlay input::placeholder{color:var(--muted)}
#gs-results::-webkit-scrollbar{width:4px}
#gs-results::-webkit-scrollbar-track{background:transparent}
#gs-results::-webkit-scrollbar-thumb{background:var(--brd);border-radius:4px}

/* ── FAB (Schnellerfassung) ─────────────────────────── */
#fab-btn{
  display:flex!important;
  position:fixed;
  bottom:24px;
  right:20px;
  width:56px;
  height:56px;
  background:linear-gradient(135deg,#4f46e5,#7c3aed);
  color:#fff;
  border:none;
  border-radius:50%;
  font-size:28px;
  cursor:pointer;
  box-shadow:0 4px 20px rgba(79,70,229,.5);
  z-index:9001;
  align-items:center;
  justify-content:center;
  transition:transform .2s,box-shadow .2s;
}
#fab-btn:hover{transform:scale(1.08);box-shadow:0 6px 24px rgba(79,70,229,.6)}
#fab-menu{
  position:fixed;
  bottom:88px;
  right:20px;
  display:flex;
  flex-direction:column;
  gap:10px;
  align-items:flex-end;
  z-index:9000;
  opacity:0;
  pointer-events:none;
  transition:opacity .2s,transform .2s;
  transform:translateY(10px);
}
#fab-menu.open{opacity:1;pointer-events:all;transform:translateY(0)}
#fab-menu .fab-item{
  display:flex;
  align-items:center;
  gap:8px;
  cursor:pointer;
}
#fab-menu .fab-label{
  background:var(--card);
  border:1px solid var(--brd);
  border-radius:20px;
  padding:6px 14px;
  font-size:13px;
  font-weight:600;
  white-space:nowrap;
  box-shadow:0 2px 8px rgba(0,0,0,.15);
  color:var(--tx);
}
#fab-menu .fab-icon{
  width:44px;
  height:44px;
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:20px;
  box-shadow:0 2px 10px rgba(0,0,0,.25);
  flex-shrink:0;
}
@media(max-width:768px){
  #fab-btn{bottom:calc(var(--bh,60px) + 12px)}
  #fab-menu{bottom:calc(var(--bh,60px) + 76px)}
}

/* ── Hilfe-Modal ────────────────────────────────────── */
#help-modal .btn{transition:background .15s}
#help-modal .btn:hover{filter:brightness(1.1)}

/* ── Settings Berichte ──────────────────────────────── */
#view-settings .btn[onclick*="Report"]:hover,
#view-settings .btn[onclick*="Passport"]:hover{filter:brightness(1.05)}

/* ── Dark Mode Verbesserungen ───────────────────────────────── */
[data-theme="dark"],@media(prefers-color-scheme:dark){
  [data-theme="auto"]{
    --bg:#0a0915;
    --card:#13112b;
    --side:#0d0b20;
    --bs2:#1e1b38;
    --tx:#f1f5f9;
    --tx2:#a0aec0;
    --muted:#64748b;
    --brd:#2d2b4e;
    --p:#818cf8;
    --ok:#34d399;
    --warn:#fbbf24;
    --err:#f87171;
    --inf:#60a5fa;
    --ac:#22d3ee;
  }
}
[data-theme="dark"]{
  --bg:#0a0915!important;
  --card:#13112b!important;
  --side:#0d0b20!important;
  --bs2:#1e1b38!important;
  --tx:#f1f5f9!important;
  --tx2:#a0aec0!important;
  --muted:#64748b!important;
  --brd:#2d2b4e!important;
  --p:#818cf8!important;
}

/* ── Stat-Karten (Dashboard) ── */
.statcard{background:var(--card);border:1px solid var(--brd);border-radius:var(--r);padding:16px 20px;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;box-shadow:var(--s1)}
.statcard-icon{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}
.statcard-label{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}
.statcard-value{font-size:28px;font-weight:700;color:var(--tx);line-height:1;font-family:var(--fh)}
/* ── Quick-Access Kacheln ── */
.qacard{background:var(--card);border:1px solid var(--brd);border-radius:var(--r);padding:14px 16px;display:flex;align-items:center;gap:12px;cursor:pointer;transition:all var(--tr);box-shadow:var(--s1)}
.qacard:hover{border-color:var(--p);box-shadow:var(--s2);transform:translateY(-1px)}
.qacard-icon{width:36px;height:36px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}
.qacard-label{font-size:13px;font-weight:600;color:var(--tx)}
/* ── Recent Entries ── */
.recent-item{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--brd)}
.recent-item:last-child{border-bottom:none}
.recent-icon{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0}
.recent-title{font-size:13px;font-weight:600;color:var(--tx)}
.recent-sub{font-size:12px;color:var(--muted);margin-top:1px}
.recent-date{font-size:11px;color:var(--muted);white-space:nowrap;margin-left:auto}
/* ── Modul-Header (neue Variante) ── */
.mvh2{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--brd)}
.mvh2-left{display:flex;align-items:center;gap:12px}
.mvh2-icon{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:20px}
.mvh2-title{font-size:20px;font-weight:700;color:var(--tx);font-family:var(--fh)}
/* ── Saubere Tabelle ── */
.dt2{width:100%;border-collapse:collapse;font-size:.835rem}
.dt2 thead th{text-align:left;padding:10px 12px;font-size:.72rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:1.5px solid var(--brd)}
.dt2 tbody tr{border-bottom:1px solid var(--brd);transition:background var(--tr)}
.dt2 tbody tr:hover{background:#f9fafb}
.dt2 tbody tr:last-child{border-bottom:none}
.dt2 tbody td{padding:11px 12px;color:var(--tx);vertical-align:middle}
[data-theme="dark"] .dt2 tbody tr:hover{background:#1f2937}

/* ═══════════════════════════════════════════════════════════
   VITALTRACK PRO — Design System (Final)
   ═══════════════════════════════════════════════════════════ */

/* ── Tokens ── */
:root {
  --p: #6366f1; --pl: #818cf8; --pd: #4f46e5;
  --bg: #f1f5f9; --card: #ffffff; --side: #ffffff;
  --tx: #0f172a; --tx2: #334155; --muted: #64748b;
  --brd: #e2e8f0; --brd2: #f1f5f9;
  --ok: #10b981; --warn: #f59e0b; --err: #ef4444; --inf: #3b82f6;
  --s1: 0 1px 3px rgba(0,0,0,.06);
  --s2: 0 4px 16px rgba(0,0,0,.08);
  --s3: 0 10px 40px rgba(0,0,0,.12);
  --r: 12px; --rsm: 8px; --rxs: 6px;
  --fh: 'Inter', system-ui, sans-serif;
  --fb: 'Inter', system-ui, sans-serif;
  --sw: 256px; --th: 56px; --tr: .15s ease;
}
[data-theme="dark"] {
  --bg: #0f1117; --card: #161b22; --side: #161b22;
  --tx: #e6edf3; --tx2: #8b949e; --muted: #6e7681;
  --brd: #30363d; --brd2: #21262d;
}
body { background: var(--bg); font-family: var(--fb); color: var(--tx); }

/* ══ SIDEBAR ══ */
.sidebar {
  width: var(--sw); min-width: var(--sw);
  background: #fff; border-right: 1px solid #e2e8f0;
  display: flex; flex-direction: column;
  overflow: hidden; flex-shrink: 0;
}
[data-theme="dark"] .sidebar { background: #161b22; border-right-color: #30363d; }

.sbh { padding: 14px 12px 12px; border-bottom: none; flex-shrink: 0; }
.sblogo { display: flex; align-items: center; gap: 10px; }
.sblogoi {
  width: 34px; height: 34px; border-radius: 9px; background: #6366f1;
  display: flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 800; color: #fff; flex-shrink: 0;
}
.sblogot { font-size: .875rem; font-weight: 700; color: #0f172a; line-height: 1.2; }
.sblogov { font-size: .6rem; color: #94a3b8; }
[data-theme="dark"] .sblogot { color: #e6edf3; }

.sbnav { flex: 1; overflow-y: auto; padding: 4px 6px 8px; }
.sbsec {
  font-size: .65rem; font-weight: 700; letter-spacing: .08em;
  color: #94a3b8; text-transform: uppercase;
  padding: 12px 8px 4px;
  display: flex; align-items: center; justify-content: space-between;
  cursor: default; user-select: none;
}
.sbsec-arr { opacity: .5; font-size: 9px; }

/* Nav-Items */
.ni {
  display: flex; align-items: center; gap: 9px;
  padding: 7px 8px; margin: 1px 0;
  border-radius: 8px; cursor: pointer;
  color: #475569; font-weight: 500; font-size: .825rem;
  transition: all .13s ease;
  border: none; background: none; width: 100%; text-align: left;
}
.ni:hover { background: #f1f5f9; color: #0f172a; }
.ni.on { background: #6366f1; color: #fff; font-weight: 600; }
.ni.on .niic { opacity: 1; }
.ni.on svg { stroke: #fff !important; fill: none; }
[data-theme="dark"] .ni { color: #64748b; }
[data-theme="dark"] .ni:hover { background: #21262d; color: #e6edf3; }
[data-theme="dark"] .ni.on { background: #6366f1; color: #fff; }

/* Nav-Icon — KEIN display:flex auf svg direkt, nutze wrapper */
.niic {
  width: 18px; height: 18px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
}
.niic svg { width: 16px; height: 16px; display: block; flex-shrink: 0; }

.sbfoot { padding: 8px 6px 10px; border-top: 1px solid #f1f5f9; flex-shrink: 0; }
.sbusr { display: flex; align-items: center; gap: 8px; padding: 8px 8px; border-radius: 8px; cursor: pointer; transition: background .13s; }
.sbusr:hover { background: #f1f5f9; }
.uav { width: 30px; height: 30px; border-radius: 50%; background: #6366f1; display: flex; align-items: center; justify-content: center; font-size: .68rem; font-weight: 700; color: #fff; flex-shrink: 0; }
.uname { font-size: .78rem; font-weight: 600; color: #0f172a; }
.urole { font-size: .62rem; color: #94a3b8; }
[data-theme="dark"] .sbfoot { border-top-color: #21262d; }
[data-theme="dark"] .sbusr:hover { background: #21262d; }
[data-theme="dark"] .uname { color: #e6edf3; }

/* ══ TOPBAR ══ */
.topbar {
  height: var(--th); background: #fff;
  border-bottom: 1px solid #e2e8f0;
  display: flex; align-items: center;
  padding: 0 20px; gap: 10px; flex-shrink: 0;
}
.tbtitle { font-size: .875rem; font-weight: 700; color: #0f172a; flex: 1; font-family: 'Inter', sans-serif; }
[data-theme="dark"] .topbar { background: #161b22; border-bottom-color: #30363d; }
[data-theme="dark"] .tbtitle { color: #e6edf3; }
@media (min-width: 769px) { .tbtitle { display: none !important; } }

/* ══ PAGE ══ */
.main { flex: 1; display: flex; flex-direction: column; overflow: hidden; min-width: 0; }
.pg { flex: 1; overflow-y: auto; padding: 24px; background: var(--bg); }

/* ══ DASHBOARD ══ */
#dash-page-title { margin-bottom: 20px; }
#dash-page-title h2 {
  font-size: 1.5rem; font-weight: 700; color: #0f172a;
  font-family: 'Inter', sans-serif; line-height: 1.2;
  margin: 0;
}
.dash-date { font-size: .825rem; color: #64748b; margin-top: 4px; }
[data-theme="dark"] #dash-page-title h2 { color: #e6edf3; }

/* Stat-Karten */
.statcard {
  background: #fff; border: 1px solid #e2e8f0; border-radius: 12px;
  padding: 18px 20px; display: flex; align-items: flex-start;
  justify-content: space-between; gap: 12px;
  box-shadow: 0 1px 3px rgba(0,0,0,.04);
  transition: box-shadow .15s, transform .15s;
}
.statcard:hover { box-shadow: 0 4px 16px rgba(0,0,0,.07); transform: translateY(-1px); }
.statcard-label {
  font-size: .62rem; font-weight: 700; color: #64748b;
  text-transform: uppercase; letter-spacing: .08em; margin-bottom: 8px;
}
.statcard-value {
  font-size: 1.875rem; font-weight: 700; color: #0f172a;
  line-height: 1; font-family: 'Inter', sans-serif;
}
.statcard-icon {
  width: 44px; height: 44px; border-radius: 11px;
  display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.statcard-icon svg { width: 20px; height: 20px; display: block; }
[data-theme="dark"] .statcard { background: #161b22; border-color: #30363d; }
[data-theme="dark"] .statcard-value { color: #e6edf3; }

/* Letzte Einträge */
.recent-item {
  display: flex; align-items: center; gap: 12px;
  padding: 11px 0; border-bottom: 1px solid #f1f5f9;
  cursor: pointer; transition: all .12s;
}
.recent-item:last-child { border-bottom: none; }
.recent-item:hover { background: #f8fafc; border-radius: 8px; margin: 0 -8px; padding: 11px 8px; border-bottom-color: transparent; }
.recent-icon { width: 36px; height: 36px; border-radius: 9px; display: flex; align-items: center; justify-content: center; font-size: 16px; flex-shrink: 0; }
.recent-title { font-size: .825rem; font-weight: 600; color: #0f172a; line-height: 1.3; }
.recent-sub { font-size: .75rem; color: #64748b; margin-top: 1px; }
.recent-date { font-size: .72rem; color: #94a3b8; white-space: nowrap; margin-left: auto; padding-left: 12px; flex-shrink: 0; }
[data-theme="dark"] .recent-title { color: #e6edf3; }
[data-theme="dark"] .recent-item { border-bottom-color: #21262d; }
[data-theme="dark"] .recent-item:hover { background: #1c2128; border-bottom-color: transparent; }

/* Schnellzugriff */
.qacard {
  background: #fff; border: 1px solid #e2e8f0; border-radius: 10px;
  padding: 12px 14px; display: flex; align-items: center; gap: 11px;
  cursor: pointer; transition: all .13s;
}
.qacard:hover { border-color: #a5b4fc; background: #fafbff; box-shadow: 0 2px 8px rgba(99,102,241,.1); }
.qacard-icon { width: 34px; height: 34px; border-radius: 9px; display: flex; align-items: center; justify-content: center; font-size: 15px; flex-shrink: 0; }
.qacard-icon svg { width: 16px; height: 16px; display: block; }
.qacard-label { font-size: .825rem; font-weight: 500; color: #0f172a; flex: 1; }
.qacard-arrow { color: #cbd5e1; font-size: 12px; flex-shrink: 0; }
[data-theme="dark"] .qacard { background: #161b22; border-color: #30363d; }
[data-theme="dark"] .qacard-label { color: #e6edf3; }
[data-theme="dark"] .qacard:hover { background: #21262d; border-color: #6366f1; }

/* Dashboard Responsive */
@media (max-width: 1024px) { #dash-main { grid-template-columns: 1fr !important; } #dash-main > div:last-child { order: -1; } }
@media (max-width: 640px) { #stat-grid { grid-template-columns: 1fr 1fr !important; } }
@media (max-width: 380px) { #stat-grid { grid-template-columns: 1fr !important; } }

/* ══ KARTEN ══ */
.card {
  background: #fff; border-radius: 12px;
  box-shadow: 0 1px 3px rgba(0,0,0,.04);
  border: 1px solid #e2e8f0; padding: 17px;
}
.card:hover { box-shadow: 0 4px 16px rgba(0,0,0,.07); }
[data-theme="dark"] .card { background: #161b22; border-color: #30363d; }

/* ══ MODUL-HEADER — KORREKTE STRUKTUR ══
   <div class="mvh">
     <div class="mvic">ICON</div>     ← 44px, flex-shrink:0
     <div>TITLE+SUB</div>            ← flex:1
     <button>Drucken</button>
     <button>Neuer Eintrag</button>
   </div>
*/
.mvh {
  display: flex; align-items: center;
  gap: 12px; margin-bottom: 20px;
  flex-wrap: nowrap;
}
/* Das Icon-Div — NICHT flex:1 */
.mvic {
  width: 44px !important;
  height: 44px !important;
  min-width: 44px !important;
  max-width: 44px !important;
  border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  font-size: 22px; flex-shrink: 0;
  overflow: hidden;
}
/* Der Titel-Container — DIESER bekommt flex:1 */
.mvh > div:not(.mvic):first-of-type { flex: 1; min-width: 0; }
/* Alternativ: zweites div-Kind */
.mvh > div + div { flex: 1; min-width: 0; }

.mvt {
  font-size: 1.25rem; font-weight: 700; color: #0f172a;
  font-family: 'Inter', sans-serif; line-height: 1.2;
}
.mvs { font-size: .75rem; color: #64748b; margin-top: 2px; }
[data-theme="dark"] .mvt { color: #e6edf3; }

/* ❓ FRAGEZEICHEN-BUTTON — verstecken */
.btn.bg2[onclick*="showHelp"], 
button[onclick*="showHelp"] {
  display: none !important;
}

/* ══ TABELLEN ══ */
.dt { width: 100%; border-collapse: collapse; font-size: .82rem; }
.dt thead th {
  text-align: left; padding: 9px 12px;
  font-size: .67rem; font-weight: 700; color: #64748b;
  text-transform: uppercase; letter-spacing: .05em;
  border-bottom: 1.5px solid #e2e8f0; background: transparent;
}
.dt tbody td { padding: 11px 12px; color: #0f172a; border-bottom: 1px solid #f1f5f9; vertical-align: middle; }
.dt tbody tr:last-child td { border-bottom: none; }
.dt tbody tr:hover td { background: #f8fafc; }
[data-theme="dark"] .dt thead th { color: #6e7681; border-bottom-color: #30363d; }
[data-theme="dark"] .dt tbody td { color: #e6edf3; border-bottom-color: #21262d; }
[data-theme="dark"] .dt tbody tr:hover td { background: #1c2128; }

/* ══ BUTTONS ══ */
.btn { font-family: 'Inter', system-ui, sans-serif; }
.bp { background: #6366f1; color: #fff; border-radius: 8px; font-weight: 600; border: none; }
.bp:hover:not(:disabled) { background: #5558e8; transform: none; box-shadow: 0 2px 8px rgba(99,102,241,.25); }
.bs { background: #fff; color: #374151; border: 1.5px solid #e2e8f0; border-radius: 8px; }
.bs:hover:not(:disabled) { background: #f8fafc; border-color: #cbd5e1; transform: none; box-shadow: none; }
.bd { background: #ef4444; color: #fff; border-radius: 8px; }
.bd:hover:not(:disabled) { background: #dc2626; transform: none; }
[data-theme="dark"] .bs { background: #21262d; color: #e6edf3; border-color: #30363d; }

/* ══ FORMULAR ══ */
.fg { margin-bottom: 14px; }
.fl { font-size: .78rem; font-weight: 600; color: #374151; margin-bottom: 5px; display: block; }
.fc {
  border: 1.5px solid #e2e8f0; border-radius: 8px;
  background: #fff; color: #0f172a;
  padding: 9px 12px; font-size: .875rem;
  font-family: 'Inter', sans-serif;
  transition: border-color .13s, box-shadow .13s;
  width: 100%;
}
.fc:focus { border-color: #6366f1; box-shadow: 0 0 0 3px rgba(99,102,241,.12); outline: none; }
.fc::placeholder { color: #94a3b8; }
[data-theme="dark"] .fc { background: #21262d; border-color: #30363d; color: #e6edf3; }

/* ══ BADGES ══ */
.badge { border-radius: 6px; font-size: .7rem; font-weight: 600; padding: 3px 8px; }
.ba { background: #eef2ff; color: #4f46e5; }
.bok { background: #ecfdf5; color: #059669; }
.bw { background: #fffbeb; color: #d97706; }
.ber { background: #fef2f2; color: #dc2626; }
.bgr { background: #f1f5f9; color: #64748b; }
[data-theme="dark"] .ba { background: rgba(99,102,241,.2); }
[data-theme="dark"] .bok { background: rgba(16,185,129,.2); }
[data-theme="dark"] .bw { background: rgba(245,158,11,.2); }
[data-theme="dark"] .ber { background: rgba(239,68,68,.2); }

/* ══ HEALTH SCORE ══ */
.hsc { border-radius: 12px; background: linear-gradient(135deg,#4338ca,#6366f1,#06b6d4) !important; }
#hs-sec:empty { display: none; }

/* ══ CRITICAL ALERT ══ */
#crit-al { display: none; }
#crit-al:not(:empty) { display: flex; }

/* ══ TOAST ══ */
.toast { background: #fff; border: 1px solid #e2e8f0; border-radius: 10px; box-shadow: 0 4px 20px rgba(0,0,0,.1); }
[data-theme="dark"] .toast { background: #161b22; border-color: #30363d; }

/* ══ MODUL-ICON FARBEN (mvic backgrounds) ══ */
.mvic.cr { background: rgba(239,68,68,.1); }
.mvic.cb { background: rgba(59,130,246,.1); }
.mvic.cg { background: rgba(16,185,129,.1); }
.mvic.cw { background: rgba(245,158,11,.1); }
.mvic.ca { background: rgba(99,102,241,.1); }
.mvic.cp { background: rgba(244,63,94,.1); }
.mvic.cv { background: rgba(139,92,246,.1); }

/* ══ MOBILE (≤768px) ══ */
@media (max-width: 768px) {
  /* Sidebar */
  .sidebar {
    position: fixed; top: 0; left: 0;
    height: 100vh; z-index: 200;
    transform: translateX(-100%);
    transition: transform .25s ease;
    box-shadow: none;
  }
  .sidebar.op { transform: translateX(0); box-shadow: 4px 0 24px rgba(0,0,0,.15); }
  .sob { display: none; position: fixed; inset: 0; background: rgba(0,0,0,.5); z-index: 199; cursor: pointer; }
  .sob.on { display: block; }

  /* Topbar Mobile */
  .topbar { padding: 0 14px; height: 52px; }
  .tbtitle { display: block !important; font-size: .85rem; }

  /* Page */
  .pg { padding: 14px; padding-bottom: 80px; }

  /* Modul-Header Mobile */
  .mvh { flex-wrap: wrap; gap: 10px; margin-bottom: 14px; }
  .mvt { font-size: 1.1rem; }
  .mvic { width: 38px !important; height: 38px !important; min-width: 38px !important; font-size: 18px; }

  /* Tabellen horizontal scrollbar */
  .view.on .card { overflow-x: auto; }
  .dt { min-width: 480px; }

  /* Formular */
  .fc { font-size: 16px !important; }
  .frow { grid-template-columns: 1fr !important; }
  .btn { min-height: 44px; }

  /* FAB über Bottom Nav */
  #fab-btn { bottom: 72px !important; right: 14px !important; }
  #fab-menu { bottom: 138px !important; right: 14px !important; }

  /* Stat-Karten */
  .statcard { padding: 14px 16px; }
  .statcard-value { font-size: 1.5rem; }
  .statcard-icon { width: 38px; height: 38px; }
}

/* ══ BOTTOM NAV ══ */
.bnav {
  display: none; position: fixed;
  bottom: 0; left: 0; right: 0;
  background: #fff; border-top: 1px solid #e2e8f0;
  z-index: 150;
  padding-bottom: max(env(safe-area-inset-bottom, 0px), 4px);
  height: 60px; align-items: stretch;
}
[data-theme="dark"] .bnav { background: #161b22; border-top-color: #30363d; }
.bnavi { display: flex; width: 100%; }
.bni {
  flex: 1; display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 2px;
  padding: 6px 2px; cursor: pointer;
  color: #94a3b8; font-size: .6rem; font-weight: 500;
  border: none; background: none; transition: color .13s;
  min-height: 44px; min-width: 44px;
}
.bni svg { width: 20px; height: 20px; }
.bni.on { color: #6366f1; }
.bni span { font-size: .6rem; margin-top: 1px; }
@media (max-width: 768px) { .bnav { display: flex; } }

/* ══ PDF DIALOG ══ */
@media (max-width: 768px) {
  #pdf-preview-modal > div { width: 100% !important; max-height: calc(100vh - 16px) !important; border-radius: 10px !important; }
  #pdf-preview-frame { height: 58vh !important; }
}

/* ══ ANIMATIONS ══ */
.view.on { animation: vIn .2s ease; }
@keyframes vIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }

/* ══ PRINT ══ */
@media print {
  .sidebar, .topbar, .bnav, #tc, #pwa-banner, #fab-btn, #fab-menu, .noprint { display: none !important; }
  .main, .pg { overflow: visible !important; }
  body { background: #fff !important; }
}
