:root{--g:#2e7d32;--gl:#66bb6a;--gp:#e8f5e9;--gd:#1b5e20;--bg:#f5f7fa;--w:#fff;--t:#2d3436;--t2:#636e72;--t3:#b2bec3;--bd:#e0e6ed;--sh:0 2px 8px rgba(0,0,0,.06);--r:14px;--rs:10px;--err:#e74c3c;--warn:#f39c12;--ok:#27ae60;--st:env(safe-area-inset-top,0px);--sb:env(safe-area-inset-bottom,0px)}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;background:var(--bg);color:var(--t);min-height:100dvh;-webkit-font-smoothing:antialiased}
.screen{display:none;min-height:100dvh}.screen.active{display:block}
.login-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100dvh;padding:24px;background:linear-gradient(135deg,var(--gd),#43a047)}
.login-header{text-align:center;margin-bottom:28px}.login-header h1{color:#fff;font-size:1.4rem;margin-top:12px}.login-header p{color:rgba(255,255,255,.8);font-size:.9rem}
#login-form{width:100%;max-width:320px;background:var(--w);padding:28px 24px;border-radius:var(--r);box-shadow:0 8px 32px rgba(0,0,0,.15)}
.fg{margin-bottom:12px}.fg input{width:100%;padding:13px;border:2px solid var(--bd);border-radius:var(--rs);font-size:1rem;background:var(--bg)}.fg input:focus{outline:none;border-color:var(--g)}
.btn{width:100%;padding:14px;background:linear-gradient(135deg,var(--g),var(--gl));color:#fff;border:none;border-radius:var(--rs);font-size:1rem;font-weight:600;cursor:pointer;margin-top:4px}
.err{background:#fdecea;color:var(--err);padding:10px;border-radius:var(--rs);margin-top:12px;font-size:.85rem;text-align:center}
.hdr{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;padding-top:calc(12px + var(--st));background:var(--w);border-bottom:1px solid var(--bd);position:sticky;top:0;z-index:100;box-shadow:var(--sh)}
.hdr-l{display:flex;align-items:center;gap:10px}.hdr-logo{width:30px;height:30px;border-radius:6px}.hdr h1{font-size:1.1rem;color:var(--gd)}
.hdr-r{display:flex;gap:8px}.ib{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:var(--gp);border:none;border-radius:50%;color:var(--g);cursor:pointer}.ib:active{background:var(--gl);color:#fff}
.sbar{padding:7px 16px;background:var(--w);border-bottom:1px solid var(--bd);font-size:.75rem;color:var(--t2);display:flex;align-items:center;gap:6px}.sbar.ok{color:var(--ok)}.sbar.warn{color:var(--warn);background:#fff8e1}
.sd{width:7px;height:7px;border-radius:50%;background:var(--ok);display:inline-block}.sbar.warn .sd{background:var(--warn);animation:pulse 1.5s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}
.tabs{display:flex;background:var(--w);border-bottom:1px solid var(--bd);position:sticky;top:calc(55px + var(--st));z-index:99}
.tab{flex:1;padding:13px 4px;background:none;border:none;border-bottom:3px solid transparent;color:var(--t2);font-size:.8rem;font-weight:600;cursor:pointer}.tab.active{color:var(--g);border-bottom-color:var(--g)}
.tc{display:none;padding:14px;padding-bottom:calc(14px + var(--sb))}.tc.active{display:block}
.card{background:var(--w);border-radius:var(--r);padding:16px;box-shadow:var(--sh);border:1px solid var(--bd);margin-bottom:14px}
.card-t{font-size:.72rem;font-weight:700;color:var(--g);text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px}
.card-green{border-left:4px solid var(--g)}
.run-card{background:linear-gradient(135deg,var(--gp),#f1f8e9);border:1px solid #c8e6c9;border-radius:var(--r);padding:14px 16px;margin-bottom:14px}
.run-item{display:flex;gap:12px;padding:10px 0;border-bottom:1px solid rgba(0,0,0,.05);align-items:center}.run-item:last-child{border-bottom:none}
.run-img{width:55px;height:55px;object-fit:cover;border-radius:var(--rs);border:1px solid var(--bd);flex-shrink:0}
.run-info{flex:1;min-width:0}.run-name{font-size:.88rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.run-meta{display:flex;gap:8px;font-size:.72rem;color:var(--t2);margin-top:3px;flex-wrap:wrap}.run-cost{color:var(--gd);font-weight:700}
.ausl-row{display:flex;align-items:center;gap:10px}.ausl-bg{flex:1;height:20px;background:var(--bg);border-radius:10px;overflow:hidden;border:1px solid var(--bd)}.ausl-fill{height:100%;background:linear-gradient(90deg,var(--gl),var(--g));border-radius:10px;transition:width .5s}.ausl-pct{font-size:1.1rem;font-weight:800;color:var(--g);min-width:45px}
.ausl-fill-warn{height:100%;background:linear-gradient(90deg,var(--warn),#ff7043);border-radius:10px;transition:width .5s}
.ausl-pct-warn{font-size:1.1rem;font-weight:800;color:var(--warn);min-width:45px}
.ausl-meta{display:flex;gap:12px;margin-top:8px;font-size:.72rem;color:var(--t2)}
.st-tbl{overflow-x:auto}.st-h,.st-r{display:grid;grid-template-columns:55px repeat(5,1fr);gap:4px;padding:7px 0;font-size:.72rem;border-bottom:1px solid var(--bd);align-items:center}
.st-h{font-weight:700;color:var(--t2);font-size:.6rem;text-transform:uppercase}.st-h span,.st-r span{text-align:right}.st-h span:first-child,.st-r span:first-child{text-align:left}
.st-r:last-child{border-bottom:none}.st-r.muted{opacity:.5}.st-l{font-weight:700;color:var(--t)}
.chart-c{overflow-x:auto;padding-bottom:4px}.chart-f{display:flex;gap:4px;align-items:flex-end;height:150px;padding:8px 0}
.fd{display:flex;flex-direction:column;align-items:center;min-width:26px;height:100%}.fd-top{font-size:.58rem;font-weight:700;color:var(--t);margin-bottom:3px;min-height:12px}
.fd-bars{display:flex;gap:2px;align-items:flex-end;height:100%;width:100%}.fd-bar{width:7px;border-radius:2px 2px 0 0;min-height:1px;transition:height .3s}
.fd-e{background:#4caf50}.fd-a{background:#ff7043}.fd-g{background:var(--gd)}.fd-lbl{font-size:.55rem;color:var(--t2);margin-top:3px;white-space:nowrap}
.fd-info{display:none;background:var(--t);color:#fff;padding:8px 12px;border-radius:var(--rs);font-size:.75rem;text-align:center;margin-top:8px}
.fd-leg{display:flex;gap:12px;justify-content:center;margin-top:10px;padding-top:8px;border-top:1px solid var(--bd);font-size:.7rem;color:var(--t2)}
.leg-i{display:flex;align-items:center;gap:4px}.leg-d{width:10px;height:10px;border-radius:2px}
.pr-card{border-left:4px solid var(--g)}.pr-hdr{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:10px}
.pr-hdr h3{font-size:1rem;font-weight:700}.pr-model{font-size:.72rem;color:var(--t2);display:block;margin-top:2px}
.pr-st{display:flex;align-items:center;gap:6px}.pr-st-l{font-size:.72rem;font-weight:600}.pr-st-d{width:10px;height:10px;border-radius:50%}
.pr-st-l.on,.pr-st-d.on{color:var(--ok)}.pr-st-d.on{background:var(--ok);animation:pulse 1.5s infinite}.pr-st-l.off{color:var(--err)}.pr-st-d.off{background:var(--err)}.pr-st-d.idle{background:var(--t3)}
.pr-active{font-size:.75rem;color:var(--g);font-weight:600;margin-bottom:8px}
.ink-s{margin-top:12px;padding-top:12px;border-top:1px solid var(--bd)}.ink-t{font-size:.68rem;font-weight:600;color:var(--t2);text-transform:uppercase;margin-bottom:8px}
.ink-bars{display:flex;gap:5px;justify-content:center}.ink-i{display:flex;flex-direction:column;align-items:center;gap:3px;flex:1;max-width:34px}
.ink-bg{width:100%;height:48px;background:var(--bg);border-radius:4px;position:relative;overflow:hidden;border:1px solid var(--bd)}.ink-fill{position:absolute;bottom:0;left:0;right:0;border-radius:0 0 3px 3px;transition:height .5s}
.ink-n{font-size:.58rem;color:var(--t2);font-weight:600}.ink-p{font-size:.55rem;color:var(--t3)}
.ink-i.low .ink-bg{border-color:var(--err)}.ink-i.warn .ink-bg{border-color:var(--warn)}
.pr-meta{font-size:.68rem;color:var(--t3);margin-top:10px;padding-top:8px;border-top:1px solid var(--bd)}
.j-sec{font-size:.72rem;font-weight:700;color:var(--g);text-transform:uppercase;margin:14px 0 8px;padding-bottom:6px;border-bottom:1px solid var(--bd)}.j-sec:first-child{margin-top:0}
.j-item{background:var(--w);border-radius:var(--r);padding:13px 14px;box-shadow:var(--sh);border:1px solid var(--bd);margin-bottom:8px;display:flex;align-items:center;gap:12px}
.j-item.active{border-left:3px solid var(--g)}.j-img{width:50px;height:50px;object-fit:cover;border-radius:var(--rs);border:1px solid var(--bd);flex-shrink:0}
.j-info{flex:1;min-width:0}.j-name{font-size:.88rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.j-meta{display:flex;gap:8px;font-size:.72rem;color:var(--t2);margin-top:3px;flex-wrap:wrap}
.h-item{background:var(--w);border-radius:var(--rs);padding:11px 13px;box-shadow:var(--sh);border:1px solid var(--bd);margin-bottom:6px}
.h-hdr{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:3px}.h-name{font-size:.85rem;font-weight:600}.h-cost{font-size:.75rem;font-weight:700;color:var(--gd);background:var(--gp);padding:2px 8px;border-radius:8px}
.h-meta{font-size:.72rem;color:var(--t2);display:flex;gap:10px;flex-wrap:wrap}
.set-t{font-size:1rem;font-weight:700;color:var(--t);margin-bottom:14px}.set-g{display:flex;flex-direction:column;gap:10px}
.set-i{background:var(--w);border:1px solid var(--bd);border-radius:var(--rs);padding:12px 14px}.set-i label{display:block;font-size:.75rem;color:var(--t2);margin-bottom:6px;font-weight:600}
.set-iw{display:flex;align-items:center;gap:6px}.set-iw input{flex:1;padding:10px;border:2px solid var(--bd);border-radius:var(--rs);font-size:1rem;background:var(--bg)}.set-iw input:focus{border-color:var(--g);outline:none}.set-u{font-size:.85rem;color:var(--t2);font-weight:600}
.btn2{width:100%;padding:12px;background:var(--bg);color:var(--g);border:2px solid var(--g);border-radius:var(--rs);font-size:.9rem;font-weight:600;cursor:pointer;margin-top:10px}
.empty{text-align:center;padding:40px 20px;color:var(--t2);font-size:.9rem}
.spin{display:inline-block;width:18px;height:18px;border:3px solid var(--bd);border-top-color:var(--g);border-radius:50%;animation:sp .8s linear infinite}@keyframes sp{to{transform:rotate(360deg)}}
.ib.spinning svg{animation:sp 1s linear infinite}
@media(min-width:390px){.ink-bg{height:56px}.ausl-pct{font-size:1.2rem}}
