@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&family=Sora:wght@400;500;600;700;800&display=swap";:root{--bg: #050b13;--bg-soft: #0a1421;--panel: #0f1b2a;--panel-strong: #142437;--panel-border: #1f354d;--text: #e5f1ff;--muted: #8ea8bf;--accent: #00d7a3;--accent-strong: #4fffd0;--danger: #ff6f8a;--warning: #f2d68d;--shadow: rgba(2, 7, 13, .78);--safe-top: calc(var(--tg-safe-area-inset-top, 0px) + var(--tg-content-safe-area-inset-top, 0px));--safe-right: calc(var(--tg-safe-area-inset-right, 0px) + var(--tg-content-safe-area-inset-right, 0px));--safe-bottom: calc(var(--tg-safe-area-inset-bottom, 0px) + var(--tg-content-safe-area-inset-bottom, 0px));--safe-left: calc(var(--tg-safe-area-inset-left, 0px) + var(--tg-content-safe-area-inset-left, 0px))}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:Sora,Avenir Next,Segoe UI,sans-serif}body{position:relative;overflow-x:hidden;line-height:1.5}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-2;background:radial-gradient(circle at 8% -4%,rgba(0,215,163,.19),transparent 36%),radial-gradient(circle at 100% 0%,rgba(95,156,255,.14),transparent 42%),linear-gradient(160deg,#02060c,#071220 40%,#06101b)}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;background-image:linear-gradient(rgba(166,213,255,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(166,213,255,.05) 1px,transparent 1px);background-size:34px 34px;-webkit-mask-image:radial-gradient(circle at 50% 16%,black 35%,transparent 82%);mask-image:radial-gradient(circle at 50% 16%,black 35%,transparent 82%);opacity:.45}h1,h2,h3,button,code,input,select,textarea,.chip,.topbar-kicker{font-family:IBM Plex Mono,SFMono-Regular,Menlo,Monaco,Consolas,monospace}a{color:var(--accent-strong)}button,input,select,textarea{color:var(--text)}button{border:1px solid var(--panel-border);background:linear-gradient(180deg,#101d2de6,#0b1521eb),var(--panel);border-radius:12px;padding:.74rem .95rem;font-size:.92rem;letter-spacing:.02em;cursor:pointer;transition:transform .16s ease,border-color .16s ease,box-shadow .18s ease,background .16s ease}button:hover{border-color:#72addcb3;box-shadow:0 10px 22px -16px #60a0d473}button:active{transform:translateY(1px) scale(.99)}button:disabled{cursor:not-allowed;opacity:.55}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn-accent{border-color:#00d7a385;background:linear-gradient(180deg,#00d7a333,#00d7a314),linear-gradient(130deg,#0a1a1bcc,#091c21c7);color:#cffff3;box-shadow:inset 0 0 0 1px #4fffd01f}.btn-accent:hover{border-color:#4fffd0b8;box-shadow:inset 0 0 0 1px #4fffd02e,0 14px 24px -14px #00d7a37a}.btn-danger{border-color:#ff6f8a85;color:#ffc2cf}.app-shell{width:min(100%,860px);margin:0 auto;min-height:100vh;padding:calc(.8rem + var(--safe-top)) calc(.8rem + var(--safe-right)) calc(6.2rem + var(--safe-bottom)) calc(.8rem + var(--safe-left))}.topbar{position:sticky;top:calc(.65rem + var(--safe-top));z-index:15;margin-bottom:.9rem;border:1px solid var(--panel-border);border-radius:18px;padding:.92rem;overflow:hidden;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:linear-gradient(164deg,rgba(0,215,163,.1),transparent 42%),linear-gradient(180deg,#121e2ee6,#0a141ff0);box-shadow:0 18px 34px -26px var(--shadow),inset 0 0 0 1px #80b7e914}.topbar:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(circle at 88% 12%,rgba(79,255,208,.18),transparent 28%)}.topbar-app{background:linear-gradient(150deg,rgba(0,215,163,.15),transparent 42%),linear-gradient(180deg,#0d1826f0,#08101af2)}.topbar-main{display:flex;align-items:flex-start;justify-content:space-between;gap:.8rem}.topbar h1{margin:.12rem 0 0;font-size:1.28rem;letter-spacing:.01em}.topbar-kicker{margin:0;color:#95d7bf;font-size:.68rem;letter-spacing:.16em;text-transform:uppercase}.topbar-action{min-height:42px;border-color:#00d7a366;background:linear-gradient(180deg,#070f18db,#050b12f2)}.subtitle{margin:.34rem 0 0;color:var(--muted);font-size:.82rem}.chips{display:flex;align-items:center;flex-wrap:wrap;gap:.48rem;margin-top:.7rem}.chip{display:inline-flex;align-items:center;min-height:30px;padding:.16rem .58rem;border-radius:999px;border:1px solid rgba(96,138,174,.45);background:#060e18e0;color:#a7c0d6;font-size:.72rem}.chip-accent{border-color:#00d7a37a;background:#00d7a31f;color:#b0ffe9}.list{display:grid;gap:.72rem}.list+.list{margin-top:.62rem}.card{position:relative;overflow:hidden;border:1px solid rgba(42,66,90,.88);border-radius:16px;padding:.88rem;background:linear-gradient(130deg,rgba(0,215,163,.06),transparent 47%),linear-gradient(180deg,#0e1926f5,#0a141ff2);box-shadow:inset 0 0 0 1px #5a86aa14,0 16px 30px -24px var(--shadow);animation:card-in .32s ease both}.list .card:nth-child(2){animation-delay:70ms}.list .card:nth-child(3){animation-delay:.13s}.list .card:nth-child(4){animation-delay:.18s}.card:before{content:"";position:absolute;left:-38%;top:-54%;width:78%;height:200%;background:linear-gradient(180deg,rgba(79,255,208,.1),transparent 52%);transform:rotate(24deg);pointer-events:none}.card h2{margin:0;font-size:.98rem}.row{display:flex;align-items:flex-start;justify-content:space-between;gap:.7rem}.row-wrap{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}.meta-line{margin:.2rem 0 0;color:var(--muted);font-size:.78rem}.metric-block{display:grid;gap:.12rem;justify-items:end}.metric-label{font-size:.66rem;letter-spacing:.11em;text-transform:uppercase}.amount{font-size:1.02rem;color:var(--accent-strong);text-shadow:0 0 18px rgba(0,215,163,.2)}.muted{color:var(--muted);font-size:.82rem}.note{margin:.6rem 0;padding-left:.68rem;border-left:2px solid rgba(95,144,186,.48)}.cycle-toggle{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.cycle-toggle button{min-height:42px}.cycle-toggle .toggle-active{border-color:#4fffd0a6;background:linear-gradient(180deg,#00d7a32e,#00d7a314),linear-gradient(130deg,#0a1a1bcc,#091c21c7)}.project-card .row-wrap,.cost-card .row-wrap{margin-top:.68rem}.empty-state{display:grid;gap:.6rem;min-height:220px;align-content:center}.empty-state h2{font-size:1.08rem}.empty-state .row-wrap{margin-top:.24rem}.tab-card{padding:.42rem;margin-bottom:.62rem}.tab-switch{display:grid;grid-template-columns:1fr 1fr;gap:.45rem}.tab-switch button{min-height:46px;display:grid;align-content:center;justify-items:center;gap:.1rem;text-transform:lowercase}.tab-switch button span{font-size:.66rem;color:var(--muted)}.tab-switch .tab-active{border-color:#4fffd0a8;background:linear-gradient(180deg,#00d7a32e,#00d7a314),linear-gradient(130deg,#0a1a1bcc,#091c21c7);box-shadow:inset 0 0 0 1px #4fffd024,0 12px 20px -16px #00d7a373}.tab-switch .tab-active span{color:#b0ffe9}.section-card{padding:.74rem .86rem;border-style:dashed;border-color:#5988b094;background:linear-gradient(120deg,rgba(52,119,171,.1),transparent 44%),linear-gradient(180deg,#0e1926f5,#0a141ff2)}.section-card h2{margin:0}.section-card .muted{margin:.42rem 0 0}.yearly-section-card{border-color:#f2d68d85;background:linear-gradient(120deg,rgba(242,214,141,.12),transparent 44%),linear-gradient(180deg,#0e1926f5,#0a141ff2)}.month-chip-wrap{margin-top:.55rem}.ledger-list{display:grid;gap:.6rem;margin-top:.75rem}.ledger-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.7rem;border:1px solid rgba(54,84,112,.66);border-radius:12px;padding:.7rem;background:#060e18a3}.ledger-item h3{margin:0;font-size:.88rem;text-transform:lowercase}.ledger-right{display:grid;justify-items:end;gap:.38rem}.ledger-note{margin:.44rem 0 0;padding-left:.55rem;border-left:2px solid rgba(95,144,186,.38)}.cadence-pill{display:inline-flex;align-items:center;min-height:24px;padding:.1rem .45rem;border-radius:999px;border:1px solid rgba(0,215,163,.46);background:#00d7a31f;color:#b0ffe9;font-family:IBM Plex Mono,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.68rem;text-transform:uppercase;letter-spacing:.06em}.cadence-yearly{border-color:#f2d68d80;background:#f2d68d24;color:#ffe7ab}.cadence-annual{border-color:#ffa07a73;background:#ffa07a24;color:#ffd8c7}.cadence-reminder{border-color:#f2d68d99;background:#f2d68d2e;color:#ffe49f}.fab-bar{position:fixed;left:50%;right:auto;bottom:calc(.85rem + var(--safe-bottom));z-index:30;width:min(860px,calc(100% - 1.1rem - var(--safe-left) - var(--safe-right)));transform:translate(-50%);display:grid;grid-template-columns:1fr 1fr;gap:.55rem;padding:.5rem;border:1px solid rgba(54,84,112,.78);border-radius:18px;background:linear-gradient(180deg,#09111beb,#050b11f5),#050b11e6;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 20px 36px -24px #000000db}.fab-bar button{min-height:48px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;padding:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left);background:radial-gradient(circle at 50% 120%,rgba(0,215,163,.14),transparent 55%),#000000b3;display:grid;place-items:end center}.modal{width:min(100%,840px);background:linear-gradient(180deg,#101d2dfa,#0b1521fa),var(--bg-soft);border:1px solid var(--panel-border);border-radius:20px 20px 0 0;box-shadow:0 -18px 38px -20px var(--shadow);padding:1rem;animation:modal-up .22s ease}.form{display:grid;gap:.75rem}.form label{display:grid;gap:.26rem;color:var(--muted);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase}.form input,.form select,.form textarea{width:100%;min-height:45px;padding:.64rem .72rem;border:1px solid rgba(54,84,112,.8);border-radius:10px;background:#08101af2;font-size:16px;transition:border-color .16s ease,box-shadow .16s ease}.form input:focus,.form select:focus,.form textarea:focus{border-color:#4fffd08c;box-shadow:0 0 0 3px #00d7a31f}.form textarea{min-height:86px;resize:vertical}.form-actions{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}@keyframes card-in{0%{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes modal-up{0%{transform:translateY(16px);opacity:0}to{transform:translateY(0);opacity:1}}@media(min-width:840px){.app-shell{padding-top:1rem}.modal-backdrop{place-items:center}.modal{border-radius:16px;max-width:640px}}@media(max-width:460px){.topbar h1{font-size:1.16rem}.fab-bar{width:calc(100% - .8rem - var(--safe-left) - var(--safe-right));bottom:calc(.4rem + var(--safe-bottom));padding:.42rem}.card{padding:.8rem}.ledger-item{grid-template-columns:1fr}.ledger-right{justify-items:start}}
