:root{--bg:#0e1116;--panel:#161b22;--line:#2a313c;--tx:#e6edf3;--mut:#8b949e;--acc:#2dd4bf;--red:#f85149;--grn:#3fb950;--amb:#f0b429}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:var(--bg);color:var(--tx);font:15px/1.35 system-ui,Roboto,sans-serif}
body{display:flex;flex-direction:column;height:100dvh;overflow:hidden}
header{display:flex;gap:8px;align-items:center;padding:8px;padding-top:max(8px,env(safe-area-inset-top));background:var(--panel);border-bottom:1px solid var(--line)}
header select{font-size:16px}
#tfs{display:flex;gap:4px}
#px{margin-left:auto;font-variant-numeric:tabular-nums;color:var(--acc);font-weight:600}
main{flex:1;position:relative;overflow:hidden}
.tab{display:none;position:absolute;inset:0;overflow:auto;padding:8px}
.tab.on{display:block}
#tab-chart{padding:0;display:none;flex-direction:column}
#tab-chart.on{display:flex}
#chart{flex:1;min-height:200px;touch-action:none;user-select:none;-webkit-user-select:none}
#chartbar{display:flex;gap:6px;align-items:center;padding:6px;background:var(--panel);flex-wrap:wrap}
#hint{color:var(--mut);font-size:12px}
nav{display:flex;background:var(--panel);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}
nav button{flex:1;padding:12px 0;background:none;border:0;color:var(--mut);font-size:14px}
nav button.on{color:var(--acc);font-weight:600}
button,select,input{background:#21262d;color:var(--tx);border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:15px}
button.on,button.primary{background:var(--acc);color:#04201c;border-color:var(--acc)}
button.danger{background:#3d1214;border-color:var(--red);color:#ffb3ae}
button.active{outline:2px solid var(--amb)}
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:10px}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:6px 0}
.row label{min-width:110px;color:var(--mut)}
.lv{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--line)}
.lv .p{font-weight:600;font-variant-numeric:tabular-nums;min-width:90px}
.lv .m{color:var(--mut);font-size:13px;flex:1}
.pill{font-size:11px;padding:2px 6px;border-radius:10px;background:#21262d;color:var(--mut)}
.pill.alarm{background:#4a1d10;color:#ffb38a}.pill.off{opacity:.5}
.sheet{position:fixed;inset:0;background:rgba(0,0,0,.5);display:flex;align-items:flex-end;z-index:10}
.sheet.hidden,#toast.hidden{display:none}
.sheet-body{background:var(--panel);width:100%;border-radius:16px 16px 0 0;padding:16px;padding-bottom:max(16px,env(safe-area-inset-bottom));max-height:85dvh;overflow:auto}
.sheet-body h3{margin:0 0 8px}
.sheet-body input[type=number],.sheet-body input[type=text]{width:150px}
.seg{display:flex;gap:4px;flex-wrap:wrap}.seg button{padding:8px}
#toast{position:fixed;left:50%;bottom:80px;transform:translateX(-50%);background:#30363d;padding:10px 14px;border-radius:10px;z-index:20}
.al{padding:8px 0;border-bottom:1px solid var(--line)}.al .t{font-weight:600}.al .b{color:var(--mut);font-size:13px}
.err{color:var(--red)}
h4{margin:6px 0}
.small{font-size:12px;color:var(--mut)}
.days button{padding:6px 8px;font-size:12px}
body.login{align-items:center;justify-content:center}
body.login .card{width:300px;text-align:center}body.login input{width:100%;margin:8px 0;font-size:20px;text-align:center}
code{background:#21262d;padding:2px 4px;border-radius:4px;word-break:break-all}
nav button.on{background:none;border:0;color:var(--acc);font-weight:700;box-shadow:inset 0 3px 0 var(--acc)}

.chips{display:flex;gap:6px;flex-wrap:wrap;padding:0 6px;background:var(--panel)}.chips:empty{display:none}.chips button{padding:4px 8px;font-size:12px}
.pospanel{background:var(--panel);border-top:1px solid var(--line);padding:6px 8px;max-height:46dvh;overflow:auto}
.pospanel.hidden{display:none}.pospanel .row{margin:4px 0}.pospanel .seg button{padding:6px 8px;font-size:13px}
.pp3 label{display:flex;flex-direction:column;font-size:11px;color:var(--mut);min-width:0;flex:1}.pp3 input{width:100%}
.posread{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;margin:6px 0}.posread div{background:#0e1116;border-radius:8px;padding:4px;text-align:center}
.posread span{display:block;font-size:10px;color:var(--mut)}.posread b{display:block;font-size:14px;font-variant-numeric:tabular-nums}.posread i{display:block;font-size:10px;color:var(--mut);font-style:normal}
.pos{color:var(--grn)}.neg{color:var(--red)}
button.long{background:#123d1f;border-color:#3fb950;color:#7ee787}button.short{background:#3d1214;border-color:#f85149;color:#ffa198}
