:root{font:13px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#111c2e;background:#f7f9fa;--green:#005b48;--blue:#4499f5;--red:#b93d53;--line:#e9eef1;--muted:#64758a;--soft:#e3f1ed}*{box-sizing:border-box;min-width:0}body,h1,h2,p{margin:0}h1{font-size:24px;letter-spacing:-.4px}h2{font-size:16px;margin:0 0 15px}p{color:var(--muted);margin:8px 0}small{display:block;color:var(--muted);font-size:11px;line-height:1.5}button,input,select{font:inherit}button,summary{cursor:pointer}button:focus-visible,summary:focus-visible,a:focus-visible{outline:3px solid #48b49b;outline-offset:3px}button,input,select{border:1px solid #dce5e9;background:#fff;border-radius:7px;padding:8px 12px;color:inherit}button:disabled{opacity:.5;cursor:wait}input,select{max-width:100%}a{color:var(--green)}.app{display:grid;grid-template-columns:208px minmax(0,1fr);min-height:100dvh}.app>aside{background:linear-gradient(120deg,#fbfcfc,#f1f6f4);border-right:1px solid var(--line);padding:26px 16px;display:flex;flex-direction:column;gap:20px}.brand{font-size:25px;font-weight:700;letter-spacing:-.8px;margin:0 10px 15px}.brand small{font-weight:400;letter-spacing:0;margin-top:4px}.app nav{display:grid;gap:6px}.app nav button{border:0;background:none;display:block;text-align:left;padding:13px 15px;color:#47566c}.app nav button[aria-current]{background:var(--soft);color:var(--green);font-weight:650}.side-note{margin:20px 10px auto}.app aside>a{font-size:12px;margin:10px}.app main{padding:20px 24px;max-width:1700px;width:100%}header{display:flex;align-items:center;justify-content:space-between;gap:15px;color:var(--muted);font-size:11px;margin-bottom:23px}.header-tools{display:flex;gap:9px;align-items:center}.header-tools label{display:flex;gap:8px;align-items:center}.header-tools button{font-size:12px}.heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;gap:15px}.heading p{font-size:12px}.badge{background:var(--soft);color:var(--green);padding:5px 10px;border-radius:7px;white-space:nowrap}.panel{background:#fff;border:1px solid var(--line);border-radius:15px;padding:19px;margin-bottom:15px;box-shadow:0 3px 12px #182e3c04}.grid{display:grid;gap:15px;margin-bottom:15px}.grid>.panel{margin:0}.two{grid-template-columns:repeat(2,minmax(0,1fr))}.three{grid-template-columns:repeat(3,minmax(0,1fr))}.hero{background:radial-gradient(ellipse at 30% -60%,#176d57 0,#064b3e 54%,#003b30);color:#fff;border-color:#13674f;padding:25px}.hero small,.hero p{color:#c0ded4}.hero .hero-alert{color:#ffb4bf}.big{font-size:39px;letter-spacing:-1.4px;font-weight:650;margin:10px 0}.number{font-size:25px;font-weight:650;letter-spacing:-.6px;margin:10px 0}.mini{display:flex;gap:25px;border-top:1px solid #ffffff20;margin-top:20px;padding-top:14px}.mini b{display:block;font-size:17px}.mini span{font-size:11px}.summary-row,summary,.row{display:flex;justify-content:space-between;align-items:center;gap:12px}.row{padding:10px 0;border-bottom:1px solid var(--line)}details{padding:12px 0;border-top:1px solid var(--line)}summary{list-style:none;min-height:27px}summary::-webkit-details-marker{display:none}summary:before{content:"▸";font-size:10px;color:var(--muted);flex:0 0 9px}details[open]>summary:before{content:"▾"}summary>span:first-of-type{flex:1}.indent{margin:12px 0 0 14px;padding-left:12px;border-left:1px solid var(--line)}.indent p{overflow-wrap:anywhere}.metrics{display:flex;gap:17px;text-align:right;flex-wrap:wrap;font-size:11px;color:var(--muted)}.metrics b{display:block;font-size:13px;color:#111c2e}.danger,.metrics b.danger{color:var(--red)}.track{height:7px;background:var(--line);border-radius:5px;position:relative;display:flex;margin:12px 0}.track>span{display:block;height:100%;background:var(--green);border-radius:inherit}.track .blue-fill{background:var(--blue)}.track.large{height:15px;overflow:hidden}.time-marker{position:absolute;width:2px;top:-4px;bottom:-4px;background:#111c2e}.track-note{display:flex;justify-content:space-between;gap:10px;font-size:11px;color:var(--muted);flex-wrap:wrap}.budget>summary{display:block}.budget>summary:before{display:none}.budget>summary .summary-row>b:before{content:"▸";font-size:10px;color:var(--muted);margin-right:10px}.budget[open]>summary .summary-row>b:before{content:"▾"}.tx-title{display:flex;align-items:center;gap:9px}.transaction strong{white-space:nowrap}.transaction summary{font-size:12px}.semi{width:64px;flex:0 0 64px}.semi svg{width:64px;height:38px;display:block}.semi small{text-align:center;font-size:10px}.ring-track{fill:none;stroke:var(--line);stroke-width:6}.ring-value{fill:none;stroke:var(--green);stroke-width:6;stroke-linecap:round}.semi text{fill:#111c2e;font-size:11px;font-weight:600}.ok,.notice,.warning{padding:13px;border-radius:8px;margin-bottom:12px;font-size:12px;background:var(--soft);color:var(--green)}.warning{background:#fff3d8;color:#895b13}.warning p{color:inherit}.legend{display:flex;gap:18px;font-size:11px;color:var(--muted);flex-wrap:wrap}.legend i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:5px}.tabs{display:flex;gap:6px;margin:8px 0 15px;flex-wrap:wrap}.tabs button[aria-pressed=true]{background:var(--soft);color:var(--green);border-color:var(--green)}.chart{margin:0}.chart figcaption{font-size:12px;color:var(--muted);margin-bottom:8px}.chart svg{width:100%;height:auto;display:block}.chart svg text{fill:var(--muted);font-size:11px}.grid-line{stroke:var(--line)}.table-scroll{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch}table{width:100%;border-collapse:collapse;font-size:12px}th,td{padding:10px 9px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}th{color:var(--muted);font-weight:500}td:not(:first-child){font-variant-numeric:tabular-nums;white-space:nowrap}table.future{min-width:720px;font-size:11px}.future td:not(:first-child),.future th:not(:first-child){text-align:right}.future .total{background:var(--soft);font-weight:650}.future details{white-space:normal;min-width:85px}.picker{display:flex;justify-content:flex-end;gap:10px;align-items:center;margin-bottom:18px;font-size:12px}.asset-group>summary{display:grid;grid-template-columns:9px 140px minmax(50px,1fr) 110px;gap:10px;font-size:12px}.asset-group>summary strong{text-align:right}.asset-group .track{margin:0}.filters{display:flex;gap:15px;margin-bottom:15px;flex-wrap:wrap}.filters label{display:grid;gap:5px;font-size:12px}.filters input{min-width:200px}pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:11px}footer{padding:10px 0;color:var(--muted);font-size:11px}.login{min-height:100dvh;display:grid;place-items:center;padding:20px}.login>.panel{max-width:430px;width:100%;padding:32px}.login .brand{margin-left:0}.primary{display:inline-block;background:var(--green);color:#fff;text-decoration:none;padding:12px 18px;border-radius:8px;margin:15px 0;font-weight:600}strong,b{font-weight:650;font-variant-numeric:tabular-nums}s{color:var(--muted)}@media(max-width:1000px){.app{grid-template-columns:160px minmax(0,1fr)}.app>aside{padding:22px 10px}.app main{padding:18px}.three{grid-template-columns:repeat(2,minmax(0,1fr))}.three>.panel:last-child{grid-column:1/-1}}@media(max-width:760px){.app{display:block}.app>aside{padding:15px max(14px,env(safe-area-inset-left));border-right:0;border-bottom:1px solid var(--line);gap:10px}.brand{margin:0;font-size:24px}.brand small{display:inline;margin-left:12px}.app nav{display:flex;flex-wrap:wrap;gap:4px}.app nav button{padding:9px 11px;min-height:44px;font-size:12px}.side-note,.app aside>a{display:none}.app main{padding:16px max(14px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left))}.two,.three{grid-template-columns:1fr}.three>.panel:last-child{grid-column:auto}.panel{padding:16px}header{flex-wrap:wrap;gap:10px}.header-tools{width:100%;justify-content:space-between}.heading{margin-bottom:15px}h1{font-size:23px}.big{font-size:37px}.asset-group>summary{grid-template-columns:9px 90px minmax(30px,1fr) 100px;gap:6px;font-size:11px}.metrics{gap:10px}.summary-row{flex-wrap:wrap}.metrics b{font-size:12px}.indent{padding-left:8px;margin-left:6px}.transaction summary{align-items:flex-start}.picker{justify-content:flex-start;flex-wrap:wrap}.filters{display:grid;grid-template-columns:1fr}.filters input{min-width:0;width:100%}}@media(pointer:coarse){button,select,summary{min-height:44px}input,select{font-size:16px}}@media(prefers-reduced-motion:no-preference){button{transition:background .15s}.track>span{transition:width .2s}}
