:root{color-scheme:light}html,body{margin:0}img{max-width:100%}[hidden]{display:none!important}:root{--bg:#ffffff;--surface:#f6f5f8;--ink:#0b0a0d;--muted:#69656f;--line:#e6e4ea;--accent:#3a1a6b;--accent-soft:#efe9f8;--on-accent:#ffffff;--panel:#0b0a0d;--panel-ink:#ffffff;--panel-muted:#a29daa;--panel-line:#26232d;--panel-accent:#a98be8;--good:#12754a;--good-soft:#e3f3ea;--bad:#b3261e;--bad-soft:#fbe9e7;--scrim:rgba(11,10,13,.5);--shadow:0 18px 50px rgba(11,10,13,.18);--display:"Bricolage Grotesque","Geist",system-ui,sans-serif;--body:"Geist",system-ui,-apple-system,"Segoe UI",sans-serif;--mono:"Geist Mono",ui-monospace,"SF Mono",Menlo,monospace;--r:14px}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg:#09080b;--surface:#141218;--ink:#f5f4f7;--muted:#9c97a6;--line:#26232d;--accent:#b79cf0;--accent-soft:#221a36;--on-accent:#140b26;--panel:#141218;--panel-ink:#f5f4f7;--panel-muted:#9c97a6;--panel-line:#2a2632;--panel-accent:#b79cf0;--good:#5fd3a0;--good-soft:#10291f;--bad:#ff8a80;--bad-soft:#331614;--scrim:rgba(0,0,0,.66);--shadow:0 18px 50px rgba(0,0,0,.6);color-scheme:dark}}:root[data-theme=dark]{--bg:#09080b;--surface:#141218;--ink:#f5f4f7;--muted:#9c97a6;--line:#26232d;--accent:#b79cf0;--accent-soft:#221a36;--on-accent:#140b26;--panel:#141218;--panel-ink:#f5f4f7;--panel-muted:#9c97a6;--panel-line:#2a2632;--panel-accent:#b79cf0;--good:#5fd3a0;--good-soft:#10291f;--bad:#ff8a80;--bad-soft:#331614;--scrim:rgba(0,0,0,.66);--shadow:0 18px 50px rgba(0,0,0,.6);color-scheme:dark}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);font:15px/1.5 var(--body);-webkit-font-smoothing:antialiased}h1,h2,p,ul,dl,dd{margin:0}ul{padding:0;list-style:none}button,input,select{font:inherit;color:inherit}button{cursor:pointer;border:0;background:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app{display:grid;grid-template-columns:232px minmax(0,1fr);min-height:100vh}.logo{font:800 26px/1 var(--display);letter-spacing:.14em}.logo.mobile{display:none}.side{background:var(--panel);color:var(--panel-ink);border-right:1px solid var(--panel-line);padding:28px 16px 20px;display:flex;flex-direction:column;gap:28px;position:sticky;top:0;height:100vh}.side .logo{padding-left:12px}.side nav{display:flex;flex-direction:column;gap:2px}.side nav button{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:10px;color:var(--panel-muted);font-weight:500;text-align:left}.side nav button:hover{color:var(--panel-ink)}.side nav button.on{background:var(--panel-ink);color:var(--panel)}.side-foot{margin-top:auto;padding:14px 12px;border-top:1px solid var(--panel-line);display:flex;flex-direction:column;gap:6px}.side-foot .lbl{color:var(--panel-muted)}.side-num{font:600 18px/1.2 var(--mono)}.side-num span{color:var(--panel-muted);font-weight:400;font-size:13px}.main{padding:28px 32px 56px;min-width:0;max-width:1180px;width:100%}.top{display:flex;align-items:center;gap:16px;margin-bottom:24px;flex-wrap:wrap}.top-title{flex:1;min-width:0}h1{font:700 28px/1.15 var(--display);letter-spacing:-.01em}.top-title p{color:var(--muted);font-size:13px}.stack{display:flex;flex-direction:column;gap:20px}.cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.lbl,.eyebrow{font-size:11px;letter-spacing:.08em;text-transform:uppercase;font-weight:600;color:var(--muted)}.muted{color:var(--muted);font-size:13px}.sec{font:600 13px/1.3 var(--body);color:var(--muted);margin-bottom:10px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;border-radius:10px;font-weight:600;font-size:14px;border:1px solid transparent;white-space:nowrap}.btn.primary{background:var(--accent);color:var(--on-accent)}.btn.primary:hover{filter:brightness(1.12)}.btn.ghost{border-color:var(--line)}.btn.ghost:hover{background:var(--surface)}.btn.small{padding:6px 10px;font-size:13px;border-color:var(--line);gap:5px}.btn.small:hover{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.btn.danger{color:var(--bad)}.btn.danger-solid{background:var(--bad);color:var(--bg)}.btn:disabled{opacity:.6;cursor:default}.icon-btn{width:34px;height:34px;display:inline-grid;place-items:center;border-radius:9px;color:var(--muted)}.icon-btn:hover{background:var(--surface);color:var(--ink)}.link{color:var(--accent);font-weight:600;font-size:13px}.link:hover{text-decoration:underline}.hero{background:var(--panel);color:var(--panel-ink);border:1px solid var(--panel-line);border-radius:20px;padding:28px;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:32px}.hero .eyebrow{color:var(--panel-muted)}.hero-num{font:600 clamp(30px,5.2vw,52px)/1.1 var(--mono);letter-spacing:-.03em;margin-top:8px;overflow-wrap:anywhere}.hero-sub{color:var(--panel-muted);font:400 14px var(--mono);margin-top:4px}.bar{position:relative;height:12px;border-radius:99px;background:var(--panel-line);margin-top:22px}.bar-fill{height:100%;border-radius:99px;background:var(--panel-accent);min-width:0;transition:width .5s ease}.bar-mark{position:absolute;top:-5px;width:2px;height:22px;background:var(--panel-ink);transform:translate(-1px)}.bar.thin{height:5px;margin-top:2px}.bar-note{color:var(--panel-muted);font-size:12px;margin-top:10px}.hero-side{display:flex;flex-direction:column;gap:16px;border-left:1px solid var(--panel-line);padding-left:28px;justify-content:center}.hero-side dt{font-size:11px;letter-spacing:.08em;text-transform:uppercase;font-weight:600;color:var(--panel-muted);margin-bottom:3px}.hero-side dd{font:600 17px/1.3 var(--body)}.hero-side small{display:block;font-weight:400;font-size:12px;color:var(--panel-muted)}.pill{display:inline-block;padding:4px 11px;border-radius:99px;font-size:13px;font-weight:600}.pill.good{background:var(--good-soft);color:var(--good)}.pill.bad{background:var(--bad-soft);color:var(--bad)}.needs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid var(--line);border-radius:var(--r)}.need{padding:16px 20px;min-width:0}.need+.need{border-left:1px solid var(--line)}.need .num{font:600 20px/1.3 var(--mono);letter-spacing:-.02em;margin-top:4px;overflow-wrap:anywhere}.need .sub{font-size:12px;color:var(--muted)}.need .up{color:var(--bad)}.need .down{color:var(--good)}.card{border:1px solid var(--line);border-radius:var(--r);padding:20px;min-width:0}.card.narrow{max-width:560px}.card-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:14px;flex-wrap:wrap}h2{font:600 16px/1.3 var(--body)}.total{font:600 16px var(--mono)}.lead{color:var(--muted);margin-bottom:16px}.foot-note{font-size:12px;color:var(--muted);margin-top:14px}.empty{color:var(--muted);padding:12px 0;display:flex;flex-direction:column;gap:14px;align-items:flex-start;max-width:52ch}.chart{position:relative}.chart svg{display:block;touch-action:pan-y}.grid{stroke:var(--line);stroke-width:1}.tick{fill:var(--muted);font:11px var(--mono)}.target-line{stroke:var(--muted);stroke-width:1.5;stroke-dasharray:5 5}.actual-line{stroke:var(--accent);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}.proj-line{stroke:var(--accent);stroke-width:1.5;stroke-dasharray:2 5;opacity:.7}.area{fill:var(--accent);opacity:.1}.dot{fill:var(--accent);stroke:var(--bg);stroke-width:2}.cross{stroke:var(--ink);stroke-width:1;opacity:.3}.tip{position:absolute;top:4px;width:170px;background:var(--ink);color:var(--bg);border-radius:10px;padding:8px 10px;font-size:12px;display:flex;flex-direction:column;gap:2px;pointer-events:none}.tip span{display:flex;justify-content:space-between;gap:8px}.tip i{font:normal 12px var(--mono)}.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-top:10px}.legend span{display:inline-flex;align-items:center;gap:6px}.k{width:18px;height:0;border-top:2px solid var(--accent);display:inline-block}.k-target{border-top:2px dashed var(--muted)}.k-proj{border-top:2px dotted var(--accent)}.bars{display:flex;flex-direction:column;gap:14px}.bars-top{display:flex;justify-content:space-between;gap:12px;font-size:14px;margin-bottom:6px;flex-wrap:wrap}.bars-top .n{font:500 13px var(--mono)}.bars-top em{font-style:normal;color:var(--muted)}.track{height:6px;border-radius:99px;background:var(--surface);overflow:hidden;margin-top:6px}.track div{height:100%;background:var(--accent);border-radius:99px}.track.big{height:10px;margin-top:16px}.notes{display:flex;flex-direction:column;gap:12px}.notes li{padding-left:16px;position:relative}.notes li:before{content:"";position:absolute;left:0;top:.6em;width:6px;height:6px;border-radius:50%;background:var(--accent)}.rows li{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--line)}.rows li:first-child{border-top:0;padding-top:0}.rows li:last-child{padding-bottom:0}.rows.compact li{padding:10px 0}.row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.row-main b{font-weight:500;overflow-wrap:anywhere}.row-main>span{font-size:12.5px;color:var(--muted)}.amt{font:600 14px var(--mono);white-space:nowrap}.pos{color:var(--good)}.neg{color:var(--bad)}.acts{display:flex;align-items:center;gap:2px;flex-shrink:0}.tag{display:inline-block;padding:1px 8px;border-radius:99px;background:var(--surface);color:var(--ink);font-size:12px}.tag.st-ditagih,.tag.now{background:var(--accent-soft);color:var(--accent)}.tag.now{margin-left:8px;font-weight:500}.late{color:var(--bad);font-style:normal;font-weight:600}.filters{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr);gap:10px}input,select{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--bg);min-width:0}input:focus,select:focus{outline:2px solid var(--accent);outline-offset:0;border-color:transparent}.week-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:14px}.week-grid .n{font:600 16px var(--mono);margin-top:2px}.form{display:flex;flex-direction:column;gap:14px}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field label{font-size:13px;font-weight:500}.hint{font-size:12px;color:var(--muted)}.err{color:var(--bad);font-size:13px;font-weight:500}.two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.money{display:flex;align-items:center;border:1px solid var(--line);border-radius:10px;padding-left:12px;background:var(--bg)}.money:focus-within{outline:2px solid var(--accent);border-color:transparent}.money span{color:var(--muted);font:500 15px var(--mono)}.money input{border:0;outline:0!important;font:600 18px var(--mono);background:transparent;padding-left:8px}.form-foot{display:flex;gap:8px;align-items:center;margin-top:6px;flex-wrap:wrap}.grow{flex:1}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--scrim);display:grid;place-items:center;padding:16px;z-index:50}.sheet{background:var(--bg);border:1px solid var(--line);border-radius:18px;padding:22px;width:min(460px,100%);max-height:calc(100% - 16px);overflow:auto;box-shadow:var(--shadow)}.sheet-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.sheet-head h2{font:700 20px var(--display)}.menu{display:flex;flex-direction:column}.menu button{display:flex;gap:12px;align-items:center;padding:14px 4px;border-top:1px solid var(--line);font-weight:500;text-align:left}.menu button:first-child{border-top:0}.toast{position:fixed;left:50%;bottom:calc(28px + env(safe-area-inset-bottom,0px));transform:translate(-50%);background:var(--ink);color:var(--bg);padding:10px 18px;border-radius:99px;font-weight:500;font-size:14px;z-index:60;box-shadow:var(--shadow)}.loading{display:flex;flex-direction:column;gap:16px;color:var(--muted)}.sk{border-radius:var(--r);background:var(--surface)}.sk.a{height:180px}.sk.b{height:72px}.tabs,.fab{display:none}@media (max-width:860px){.app{display:block}.side{display:none}.logo.mobile{display:block;flex-basis:100%;font-size:22px}.main{padding:18px 16px calc(96px + env(safe-area-inset-bottom,0px))}.top{margin-bottom:18px;gap:10px}h1{font-size:24px}.top-add{display:none}.hero{grid-template-columns:minmax(0,1fr);padding:22px;gap:22px}.hero-side{border-left:0;border-top:1px solid var(--panel-line);padding:18px 0 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.hero-side>div:first-child{grid-column:1/-1}.needs,.cols,.filters{grid-template-columns:minmax(0,1fr)}.need+.need{border-left:0;border-top:1px solid var(--line)}.card{padding:16px}.rows li{flex-wrap:wrap}.rows:not(.compact) .row-main{flex-basis:100%}.rows:not(.compact) .amt{flex:1}.tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));position:fixed;left:0;right:0;bottom:0;background:var(--bg);border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom,0px));z-index:40}.tabs button{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 0;color:var(--muted);font-size:10.5px;font-weight:500;border-radius:10px;min-width:0}.tabs button span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tabs button.on{color:var(--accent)}.fab{display:grid;place-items:center;position:fixed;right:16px;bottom:calc(76px + env(safe-area-inset-bottom,0px));width:54px;height:54px;border-radius:50%;background:var(--accent);color:var(--on-accent);box-shadow:var(--shadow);z-index:41}.scrim{place-items:end center;padding:0}.sheet{border-radius:20px 20px 0 0;width:100%;padding:20px 16px calc(20px + env(safe-area-inset-bottom,0px));max-height:92%}.toast{bottom:calc(140px + env(safe-area-inset-bottom,0px))}}.side{overflow-y:auto}.side nav button .badge,.menu .badge{margin-left:auto}.badge{font:600 11px/1 var(--mono);font-style:normal;background:var(--bad);color:var(--bg);border-radius:99px;padding:3px 6px;min-width:18px;text-align:center}.quick{border:1px solid var(--line);border-radius:var(--r);padding:10px;display:flex;flex-direction:column;gap:10px;background:var(--surface)}.quick-row{display:flex;gap:8px;align-items:center}.quick-ic{color:var(--accent);display:grid;place-items:center;padding-left:6px}.quick input{border-color:transparent;background:transparent;flex:1;font-size:15px;padding-left:4px}.quick-prev{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center;padding:0 6px 2px;font-size:13px}.quick-prev b{font:600 14px var(--mono)}.alerts{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}.alerts button{text-align:left;border:1px solid var(--bad);background:var(--bad-soft);color:var(--ink);border-radius:var(--r);padding:12px 16px;display:flex;flex-direction:column;gap:2px;min-width:0}.alerts b{color:var(--bad);font-weight:600}.alerts span{font-size:13px;color:var(--muted)}.meta{display:flex;flex-wrap:wrap;gap:4px 6px;align-items:center}.tag.t-in{background:var(--good-soft);color:var(--good)}.tag.t-out,.tag.t-late{background:var(--bad-soft);color:var(--bad)}.tag.t-p{border:1px solid var(--line);background:transparent}.tag.t-lock{background:var(--ink);color:var(--bg)}.track.mark{position:relative;overflow:visible}.track.mark div{max-width:100%}.track.mark i{position:absolute;top:-3px;width:2px;height:12px;background:var(--ink);transform:translate(-1px)}.amt small{display:block;font:400 11px var(--body);color:var(--muted);text-align:right}.form.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 12px}.form.grid>*{grid-column:1/-1}.form.grid>.field.half{grid-column:span 1}.seg{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border:1px solid var(--line);border-radius:10px;padding:3px;gap:3px}.seg button{padding:7px;border-radius:7px;font-weight:500;color:var(--muted)}.seg button.on{background:var(--ink);color:var(--bg)}.filters.four{grid-template-columns:minmax(0,1.4fr) repeat(3,minmax(0,1fr))}.checks{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:10px}.checks label{display:flex;align-items:center;gap:10px;padding:10px 12px;border-top:1px solid var(--line);font-weight:400;font-size:14px;cursor:pointer}.checks label:first-child{border-top:0}.checks span{flex:1;min-width:0;overflow-wrap:anywhere}.checks b{font:500 13px var(--mono)}.checks input{width:18px;height:18px;padding:0;accent-color:var(--accent);flex-shrink:0}.scen{align-items:start}.hero.solo{grid-template-columns:minmax(0,1fr);gap:22px;position:sticky;top:20px}.hero-side.flat{border-left:0;padding-left:0;border-top:1px solid var(--panel-line);padding-top:18px}.data-btns{display:flex;flex-wrap:wrap;gap:8px}label.btn{cursor:pointer}@media (max-width:860px){.filters.four{grid-template-columns:repeat(2,minmax(0,1fr))}.filters.four input{grid-column:1/-1}.tabs button{position:relative}.tabs .badge{position:absolute;top:0;right:calc(50% - 22px);padding:2px 5px;font-size:10px}.hero.solo{position:static}.hero-side.flat{display:flex}.quick-row .btn{padding:10px 12px}}@media (prefers-reduced-motion:reduce){.bar-fill{transition:none}}
