:root{color-scheme:dark;--bg:#0f172a;--card:#162033;--line:#253449;--mut:#8b9bb4;--txt:#e2e8f0;--lnk:#93c5fd;--cp:#4ade80;--cj:#c084fc;--me:#38bdf8;--ip:#f472b6;--pay:#fbbf24}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,Malgun Gothic,Apple SD Gothic Neo,sans-serif;font-size:13px;color:var(--txt);background:var(--bg);letter-spacing:-.03em}a{color:var(--lnk);text-decoration:none}.app{max-width:1240px;margin:0 auto;padding:12px 14px 40px}header{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}header h1{font-size:16px;margin:0}header .sp{flex:1 1}.nav{display:inline-flex;align-items:center}.nav a{border:1px solid var(--line);border-radius:6px;padding:3px 10px;color:var(--txt)}.nav b{font-size:15px;margin:0 8px}.btn,.nav b{white-space:nowrap}.btn{display:inline-block;border:1px solid var(--line);border-radius:6px;padding:3px 10px;color:var(--txt);font-size:11px}button.btn{font:inherit;font-size:11px;background:none;cursor:pointer}.out{font-size:11px;color:var(--mut)}.cards{display:grid;grid-template-columns:1.4fr repeat(4,minmax(0,1fr));gap:8px;margin-bottom:12px}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:8px 12px;min-width:0;color:var(--txt)}.card .k{color:var(--mut);font-size:11px}.card .k,.card .v{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card .v{font-size:20px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:0}.card .v small{font-size:12px;font-weight:600;margin-left:2px}.card.all .v{color:var(--pay)}.card.cp .v{color:var(--cp)}.card.cj .v{color:var(--cj)}.card.me .v{color:var(--me)}.card.ip .v{color:var(--ip)}.card.on{background:#1d2c4a}.card.all.on{border-color:var(--pay)}.card.cp.on{border-color:var(--cp)}.card.cj.on{border-color:var(--cj)}.card.me.on{border-color:var(--me)}.card.ip.on{border-color:var(--ip)}.card.z .v{color:#334155}.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr)) minmax(0,1.3fr);gap:4px}.cal .wd{text-align:center;color:var(--mut);font-size:11px;font-weight:600;padding:4px 0}.cal .d{min-height:70px;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:4px 5px;display:flex;flex-direction:column;color:var(--txt);min-width:0}.cal .d.blank{background:none;border-color:transparent}.cal .d.off{opacity:.45}.cal .d.today{border-color:#3b82f6}.cal .d:has(>.cover):hover{border-color:#3b82f6}.cal .wd.sh{color:#e0a84a;margin-left:8px}.cal .d.s{background:#241f15;border-color:#5c4a22}.cal .d.s:not(.ws){margin-left:8px}.cal .d.s .dn{color:#e0a84a;font-weight:700}.cal .d.s .dn.sun{color:#f87171}.cal .d.s .dn.sat{color:#93c5fd}.cal .d.s .r+.r{border-top-color:#3f3420}.cal .d.tot,.cal .d.ws{margin-top:8px}.cal .d.tot{background:#3a2e12;border-color:#c08a2c;border-width:2px;opacity:1}.cal .d.tot .dn{color:#fcd34d}.cal .dn{font-size:11px;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:0}.cal .sun{color:#f87171}.cal .sat{color:#93c5fd}.cal .rows{margin-top:auto;display:flex;flex-direction:column;padding-top:4px}.cal .r{display:grid;grid-template-columns:2.6em minmax(0,1fr) auto;gap:0 6px;align-items:baseline;padding:2px 0;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:0;white-space:nowrap}.cal .r+.r{border-top:1px solid var(--line)}.cal .r em{font-style:normal;font-size:10px;font-weight:600;overflow:hidden;text-overflow:ellipsis}.cal .r b{text-align:right;font-size:12px;font-weight:700}.cal .r i{font-style:normal;text-align:right;font-size:11px}.cal .r.cp b,.cal .r.cp em,.cal .r.cp i{color:var(--cp)}.cal .r.cj b,.cal .r.cj em,.cal .r.cj i{color:var(--cj)}.cal .r.me em,.cal .r.me i{color:var(--me)}.cal .r.ip em,.cal .r.ip i{color:var(--ip)}.cal .d:not(.s) .r em{color:rgba(226,232,240,.45)}.cal .d:not(.s) .r b{color:rgba(226,232,240,.8)}.cal .d:not(.s) .r i{color:rgba(226,232,240,.6)}.cal .d:not(.s) .r.sum i{color:rgba(226,232,240,.95)}.cal .d .r.z b,.cal .d .r.z em,.cal .d .r.z i{color:#334155;font-weight:400}.cal .r.sum{border-top:1px solid #5b6b85;margin-top:1px}.cal .r.sum em{color:var(--mut)}.cal .r.sum i{grid-column:2/4;color:var(--pay);font-weight:700;font-size:12px}.cal .r.a{align-items:center}.cal .r.a b{display:none}.cal .r.a i{grid-column:2/4}details.avgbox{margin-top:14px}details.avgbox>summary{cursor:pointer;list-style:none;-webkit-user-select:none;user-select:none;color:var(--mut);font-size:11px;font-weight:600;padding:7px 4px;border-top:1px solid var(--line)}details.avgbox>summary::-webkit-details-marker{display:none}details.avgbox>summary:before{content:"▸";display:inline-block;width:1.3em}details.avgbox[open]>summary:before{content:"▾"}details.avgbox>summary:hover{color:var(--txt)}table.avg{width:100%;border-collapse:collapse;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:0}table.avg td,table.avg th{padding:7px 10px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}table.avg thead th{color:var(--mut);font-size:11px;font-weight:600;background:#131d31}table.avg tbody th{text-align:left;font-weight:700;width:5em}table.avg td b{font-size:14px;margin-right:1px}table.avg tr.cp b,table.avg tr.cp th{color:var(--cp)}table.avg tr.cj b,table.avg tr.cj th{color:var(--cj)}table.avg tr.me b,table.avg tr.me th{color:var(--me)}table.avg tr.ip b,table.avg tr.ip th{color:var(--ip)}table.avg tr.sum{background:#1a2942}table.avg tr.sum b,table.avg tr.sum th{color:var(--pay)}table.avg tr.sum td,table.avg tr.sum th{border-top:1px solid #5b6b85}table.avg tr.z b,table.avg tr.z td,table.avg tr.z th{color:#334155}.note{color:var(--mut);font-size:11px;margin-top:10px;line-height:1.6}.err{color:#fca5a5}.mn{display:inline-block;font-size:9px;font-weight:600;color:var(--bg);background:var(--mut);border-radius:3px;padding:0 3px;margin-left:3px;vertical-align:1px;letter-spacing:0;align-self:flex-start}.app.edit #edBtn{background:#b45309;border-color:#b45309;color:#fff}.app.edit .cal [data-day]{border-style:dashed;border-color:#b45309;opacity:1;cursor:text}@media (max-width:1000px){.app{padding:10px 10px 32px}.cards{gap:6px}.card{padding:6px 8px}.card .v{font-size:17px}.card .k{font-size:10px}.cal{gap:3px;grid-template-columns:repeat(7,minmax(0,1fr)) minmax(0,1.25fr)}.cal .d{min-height:64px;padding:3px 4px;border-radius:6px}.cal .d.s:not(.ws),.cal .wd.sh{margin-left:5px}.cal .d.tot,.cal .d.ws{margin-top:6px}.cal .r{grid-template-columns:auto minmax(0,1fr);gap:0 3px;padding:1px 0}.cal .r em{font-size:9px}.cal .r b{font-size:11px}.cal .r i{grid-column:1/-1;font-size:10px;letter-spacing:-.02em;line-height:1.2}.cal .r.a i,.cal .r.sum i{grid-column:2/3;font-size:11px}table.avg td,table.avg th{padding:6px}}@media (max-width:480px){.cards{grid-template-columns:1fr 1fr}.cards .all{grid-column:1/3}.cal{gap:2px}.cal .wd{font-size:10px}.cal .d{min-height:58px;padding:3px 2px}.cal .dn{font-size:10px}}html{background:var(--bg)}button.out{font:inherit;font-size:11px;color:var(--mut);background:none;border:0;padding:0;cursor:pointer}button.out:hover{color:var(--txt)}.hint{color:#f59e0b;font-size:11px;margin-right:6px}.live{font-size:10px;color:var(--mut);display:inline-flex;align-items:center;gap:4px;margin-left:4px}.live:before{content:"";width:7px;height:7px;border-radius:50%;background:#475569}.live.on{color:#86efac}.live.on:before{background:#22c55e;box-shadow:0 0 6px #22c55e}.live.off{color:#fca5a5}.live.off:before{background:#ef4444}.dlg-bg{position:fixed;inset:0;background:rgba(2,6,23,.6);display:flex;align-items:center;justify-content:center;padding:16px;z-index:10}.dlg{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px;width:100%;max-width:320px}.dlg h2{font-size:15px;margin:0 0 12px}.dlg label{display:grid;grid-template-columns:6.5em 1fr;align-items:center;gap:8px;margin-top:8px}.dlg label span{font-size:12px;font-weight:600}.dlg label .cp{color:var(--cp)}.dlg label .me{color:var(--me)}.dlg label .ip{color:var(--ip)}.dlg input{width:100%;font:inherit;font-size:15px;padding:7px 9px;border-radius:6px;border:1px solid var(--line);background:var(--bg);color:var(--txt);text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:0}.dlg input:focus{outline:none;border-color:#3b82f6}.dlg .sub{color:var(--mut);font-size:10px;margin:3px 0 4px 6.5em;padding-left:8px}.dlg .err{margin-top:10px;font-size:12px}.dlg .bt{display:flex;justify-content:flex-end;gap:6px;margin-top:14px}.dlg .bt .btn{font-size:12px;padding:5px 14px}.dlg .bt .ok{background:#ca8a04;border-color:#ca8a04;color:#fff;font-weight:700}.dlg .bt .ok:disabled{opacity:.6}.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}.login form{background:#1e293b;border-radius:14px;padding:24px 20px;width:100%;max-width:340px}.login h1{font-size:18px;margin:0 0 16px}.login input{width:100%;font-size:18px;padding:12px;border-radius:8px;border:1px solid #334155;background:var(--bg);color:var(--txt)}.login button{width:100%;margin-top:12px;font-size:16px;padding:12px;border:0;border-radius:8px;background:#ca8a04;color:#fff;font-weight:700;cursor:pointer}.login button:disabled{opacity:.6}.login .err{color:#fca5a5;font-size:14px;margin-top:10px}.cal .d{position:relative}.cal .d>.cover{position:absolute;inset:0;z-index:0;border-radius:inherit}.cal .d>span{position:relative;z-index:1;pointer-events:none}.cal .d.off:focus-within,.cal .d.off:hover{opacity:1}.cal .ed{pointer-events:auto;cursor:text;border-radius:3px;padding:0 3px;margin:0 -3px;min-width:2.2em;outline:none}.cal .ed:focus-visible,.cal .ed:hover{background:rgba(148,163,184,.16);color:var(--txt)!important}.cal .ed.wait{opacity:.55}.cal .ed.bad{box-shadow:inset 0 0 0 1px #ef4444}.cal .ed.on{padding:0;margin:0}.cal input.inl{width:100%;min-width:0;height:17px;font:inherit;font-size:11px;font-weight:600;text-align:right;letter-spacing:0;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--txt);background:var(--bg);border:1px solid #3b82f6;border-radius:3px;padding:0 3px}.cal input.inl:focus{outline:none}.app.edit .cal .ed{cursor:text}.cal .d .r.sum.z em,.cal .d .r.sum.z i{color:#334155;font-weight:400}header .btn .ver{color:var(--mut);font-size:10px;margin-left:2px}