:root{--bg:#0D1316;--card:#151D21;--chip:#1F2A30;--ink:#F2F6F8;--muted:#8E9BA3;--line:#26333A;--track:#26333A;--heroBg:#151D21;--heroFg:#F2F6F8;--heroMuted:#8E9BA3;--heroCell:#1F2A30;--heroWarn:#FF9F4A;--accent:#2379F4;--accentText:#6AA6FF;--onAccent:#fff;--accentSoft:#152B4A;--warn:#FF9F4A;--onWarn:#151D21;--warnSoft:#33240F;--warnText:#FFC48E;--ok:#3DD68C;--okSoft:#133026;--navBg:#151D21;--navActive:#1F2A30;--navFg:#F2F6F8;--navIcon:#8E9BA3}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--ink);font-family:'Onest',system-ui,sans-serif;font-size:15px}
body{min-height:100vh}
#app{max-width:520px;margin:0 auto;padding:0 12px calc(110px + env(safe-area-inset-bottom))}
a{color:var(--accentText);text-decoration:none}
button{font-family:inherit;cursor:pointer;color:inherit}
input,select,textarea{font-family:inherit}
.loading{padding:40vh 0;text-align:center;color:var(--muted)}
.mono{font-family:'JetBrains Mono',ui-monospace,monospace}
.uh{font-family:'Unbounded',sans-serif;font-weight:700;letter-spacing:-.02em}
.muted{color:var(--muted)}
.warnc{color:var(--warn)}.okc{color:var(--ok)}
.hdr{display:flex;align-items:center;gap:10px;padding:10px 0}
.hdr .t{flex:1;display:flex;flex-direction:column;min-width:0}
.hdr .t b{font-family:'Unbounded',sans-serif;font-weight:700;font-size:18px;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hdr .t span{font-size:12px;color:var(--muted)}
.logo{flex:1;text-align:center;font-family:'Unbounded',sans-serif;font-weight:700;font-size:16px}
.ib{width:44px;height:44px;border:0;border-radius:14px;background:var(--chip);color:var(--ink);display:flex;align-items:center;justify-content:center;flex:none}
.ib svg,.tabbar svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.hero{background:var(--heroBg);color:var(--heroFg);border-radius:28px;padding:20px;display:flex;flex-direction:column;gap:14px;margin-top:6px}
.hero .hm{color:var(--heroMuted);font-size:13px}
.hero .cell{background:var(--heroCell);border-radius:16px;padding:12px;display:flex;flex-direction:column;gap:4px}
.ring{width:76px;height:76px;border-radius:50%;background:var(--accent);color:var(--onAccent);display:flex;flex-direction:column;align-items:center;justify-content:center;flex:none}
.ring b{font-family:'Unbounded',sans-serif;font-size:24px;line-height:1}.ring span{font-size:11px}
.ring.warn{background:var(--warn);color:var(--onWarn)}
.big{font-family:'Unbounded',sans-serif;font-weight:700;font-size:38px;letter-spacing:-.04em;line-height:1}
.big small{font-size:20px;color:var(--heroMuted)}
.sec{margin-top:20px;display:flex;flex-direction:column;gap:10px}
.sec>h2,.sh{margin:0 6px;font-family:'Unbounded',sans-serif;font-weight:500;font-size:15px;display:flex;justify-content:space-between;align-items:baseline}
.sh a,.sh button{font-family:'Onest',sans-serif;font-size:13px;font-weight:600;background:none;border:0;color:var(--accentText);padding:0}
.card{background:var(--card);border-radius:22px;padding:16px;display:flex;flex-direction:column;gap:12px}
.card.list{padding:4px 16px;gap:0}
.card.warnb{box-shadow:inset 0 0 0 2px var(--warn)}
.row{display:flex;align-items:center;gap:12px;min-height:56px;border-bottom:1px solid var(--bg);color:var(--ink)}
.row:last-child{border-bottom:0}
.row .grow{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.row .grow b{font-weight:600;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row .grow span{font-size:12px;color:var(--muted)}
.av{width:40px;height:40px;border-radius:12px;background:var(--chip);display:flex;align-items:center;justify-content:center;font-family:'Unbounded',sans-serif;font-weight:700;font-size:12px;flex:none}
.tag{font-size:11px;font-weight:700;border-radius:7px;padding:3px 7px;background:var(--chip);white-space:nowrap}
.tag.w{background:var(--warn);color:var(--onWarn)}.tag.a{background:var(--accent);color:var(--onAccent)}.tag.ok{background:var(--okSoft);color:var(--ok)}
.bar{position:relative;height:6px;background:var(--track);border-radius:3px}
.bar>i{display:block;height:100%;border-radius:3px;background:var(--accent)}
.bar>i.w{background:var(--warn)}
.bar>em{position:absolute;top:-3px;width:2px;height:12px;background:var(--ink)}
.hero .bar{background:var(--heroCell);height:10px;border-radius:5px}.hero .bar>i{background:var(--heroFg)}.hero .bar>em{background:var(--heroWarn);height:16px}
.ticket{display:flex;background:var(--card);border-radius:22px;overflow:hidden;color:var(--ink)}
.ticket .m{flex:1;padding:16px;display:flex;flex-direction:column;gap:9px;min-width:0}
.ticket .s{width:92px;position:relative;border-left:2px dashed var(--line);background:var(--chip);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;flex:none;text-align:center}
.ticket .s.w{background:var(--warnSoft)}.ticket .s.a{background:var(--accentSoft)}
.ticket .s:before,.ticket .s:after{content:"";position:absolute;left:-10px;width:18px;height:18px;border-radius:50%;background:var(--bg)}
.ticket .s:before{top:-9px}.ticket .s:after{bottom:-9px}
.ticket .s b{font-family:'Unbounded',sans-serif;font-size:30px;line-height:1}
.ticket .s span{font-size:12px;color:var(--muted)}
.ticket .s .mono{font-size:12px;font-weight:700;margin-top:6px;color:var(--ink)}
.ticket .amt{font-family:'Unbounded',sans-serif;font-weight:700;font-size:23px;letter-spacing:-.03em}
.stack{position:relative;padding-bottom:12px}
.stack:before,.stack:after{content:"";position:absolute;background:var(--card);border-radius:22px;height:30px}
.stack:before{left:20px;right:20px;bottom:0;opacity:.45}.stack:after{left:10px;right:10px;bottom:6px;opacity:.75}
.stack .ticket{position:relative;z-index:1}
.week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.week a,.week div{height:58px;border-radius:16px;background:var(--card);color:var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px}
.week span{font-size:11px;opacity:.8}.week b{font-family:'Unbounded',sans-serif;font-weight:500;font-size:15px}
.week i{font-style:normal;font-size:10px;font-weight:700;line-height:1;min-height:10px}
.week .today{background:var(--ink);color:var(--bg)}
.week .heavy{background:var(--accent);color:var(--onAccent)}
.week .short{background:var(--warnSoft)}
.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px}
.tile{background:var(--card);border-radius:18px;padding:12px 14px;display:flex;flex-direction:column;gap:4px;color:var(--ink);min-width:0}
.tile span{font-size:12px;color:var(--muted)}.tile b{font-family:'Unbounded',sans-serif;font-size:16px}
.tile small{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.seg{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:4px;background:var(--chip);border-radius:16px;padding:4px}
.seg button{height:40px;border:0;border-radius:12px;background:transparent;font-size:13px;font-weight:500}
.seg button.on{background:var(--card);font-weight:700}
.pills{display:flex;gap:6px;flex-wrap:wrap}
.pill{height:38px;padding:0 14px;border-radius:12px;border:0;background:var(--card);font-size:13px}
.pill.on{background:var(--ink);color:var(--bg);font-weight:600}
.chips{display:flex;flex-wrap:wrap;gap:4px}
.chips span{font-family:'JetBrains Mono',monospace;font-size:11px;padding:4px 7px;border-radius:7px;background:var(--chip)}
.cells{display:grid;gap:4px}
.cells i{height:16px;border-radius:4px;display:block}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--heroMuted)}
.legend span{display:flex;align-items:center;gap:6px}.legend i{width:10px;height:10px;border-radius:3px;display:inline-block}
.btn{height:56px;border:0;border-radius:18px;background:var(--accent);color:var(--onAccent);font-size:15px;font-weight:700;padding:0 18px;width:100%}
.btn2{height:48px;border:0;border-radius:14px;background:var(--chip);color:var(--ink);font-size:14px;font-weight:600;padding:0 14px}
.btn2.w{background:var(--warnSoft);color:var(--warnText)}
.btn:disabled,.btn2:disabled{opacity:.5}
.btns{display:flex;gap:8px}.btns>*{flex:1}
.fld{display:flex;flex-direction:column;gap:6px}
.fld>span{font-size:13px;color:var(--muted);padding:0 6px}
.in{height:52px;border-radius:16px;border:0;background:var(--card);color:var(--ink);font-size:15px;padding:0 16px;outline:none;width:100%}
.card .in{background:var(--bg)}
textarea.in{height:auto;padding:14px 16px;font-family:'JetBrains Mono',monospace;font-size:13px;line-height:1.5;resize:vertical}
.in:focus{box-shadow:inset 0 0 0 2px var(--accent)}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.tog{width:48px;height:30px;border-radius:15px;border:0;padding:3px;background:var(--line);display:flex;justify-content:flex-start;flex:none}
.tog i{width:24px;height:24px;border-radius:50%;background:var(--muted);display:block}
.tog.on{background:var(--accent);justify-content:flex-end}.tog.on i{background:var(--onAccent)}
.note{font-size:12px;color:var(--muted);line-height:1.45;padding:0 6px}
.box{padding:12px 14px;border-radius:18px;background:var(--chip);font-size:13px;line-height:1.45;display:flex;flex-direction:column;gap:6px}
.chart{display:flex;align-items:flex-end;gap:8px;height:130px}
.chart>div{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0}
.chart .col{width:100%;display:flex;flex-direction:column;gap:2px}
.chart .col i{display:block;border-radius:4px}
.chart span{font-size:11px;color:var(--muted)}.chart small{font-family:'JetBrains Mono',monospace;font-size:9px;color:var(--muted)}
.sw{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.sw button{border:0;border-radius:16px;padding:10px;display:flex;flex-direction:column;gap:8px;align-items:flex-start;font-size:13px;font-weight:600}
.sw button.on{box-shadow:inset 0 0 0 2px var(--accent)}
.sw .dots{display:flex;gap:4px}.sw .dots i{width:16px;height:16px;border-radius:50%;display:block}
.dot{width:8px;height:8px;border-radius:50%;flex:none;background:var(--ok)}.dot.w{background:var(--warn)}.dot.m{background:var(--muted)}
.empty{padding:28px 16px;text-align:center;color:var(--muted);display:flex;flex-direction:column;gap:12px;align-items:center}
.tabbar{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(14px + env(safe-area-inset-bottom));width:calc(100% - 24px);max-width:496px;height:76px;background:var(--navBg);border-radius:24px;padding:0 6px;display:flex;align-items:center;justify-content:space-between;z-index:10;box-shadow:0 8px 30px rgba(0,0,0,.25)}
.tabbar a{flex:1;max-width:72px;height:62px;border-radius:16px;color:var(--navIcon);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:11px}
.tabbar a.on{background:var(--navActive);color:var(--navFg);font-weight:600}
.tabbar a.plus{background:var(--accent);color:var(--onAccent);font-weight:600}
.toast{position:fixed;left:50%;transform:translateX(-50%) translateY(20px);bottom:110px;background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:14px;font-size:14px;opacity:0;pointer-events:none;transition:.2s;z-index:20;max-width:90%}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.receipt{font-family:'JetBrains Mono',monospace;font-size:13px;display:flex;flex-direction:column;gap:8px}
.receipt div{display:flex;align-items:baseline;gap:6px}.receipt div span:first-child{font-family:'Onest',sans-serif}
.receipt .dl{flex:1;border-bottom:2px dotted var(--line)}
.receipt .tot{padding-top:8px;border-top:2px dashed var(--line);font-weight:700;font-size:16px}
.step{display:flex;gap:12px;padding:10px 0;border-bottom:1px solid var(--bg)}
.step:last-child{border-bottom:0}
.step .ic{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;flex:none;background:var(--okSoft);color:var(--ok)}
.step .ic.w{background:var(--warnSoft);color:var(--warn)}
.spin{display:inline-block;width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:sp .8s linear infinite;vertical-align:-2px}
@keyframes sp{to{transform:rotate(360deg)}}
