:root{--color-primary: #1e6652;--color-primary-hover: #164f40;--color-background: #f4f6f1;--color-surface: #fff;--color-text: #18322c;--color-text-muted: #5d706a;--color-border: #d8e1da;--color-danger: #a33b36;--color-success: #195d49;--color-focus: #e6a63b;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:var(--color-text);background:var(--color-background);font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,textarea,select{font:inherit}button{min-height:44px;border:0;border-radius:.7rem;padding:.65rem 1rem;background:var(--color-primary);color:#fff;font-weight:700;cursor:pointer}button:hover{background:var(--color-primary-hover)}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,a:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}button:disabled{cursor:wait;opacity:.65}button.secondary{color:#24463e;background:#e5ece7}button.danger{background:var(--color-danger)}input,textarea,select{width:100%;min-height:44px;border:1px solid #b8c6be;border-radius:.55rem;padding:.65rem .75rem;background:var(--color-surface);color:var(--color-text)}textarea{min-height:6rem;resize:vertical}label{display:grid;gap:.4rem;color:#294d43;font-weight:650}h1,h2,p{overflow-wrap:anywhere}h1{margin:.2rem 0;font-size:clamp(1.8rem,6vw,2.6rem);letter-spacing:-.035em}h2{margin:0;font-size:1.15rem}.eyebrow{margin:0;color:#4f7468;font-size:.74rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase}.centered,.setup{min-height:100vh;display:grid;place-items:center;padding:1rem}.setup{background:radial-gradient(circle at top left,#dbeae0,transparent 55%),#f4f6f1}.setup-card{width:min(100%,34rem);padding:clamp(1.5rem,6vw,3rem);border:1px solid #d6dfd8;border-radius:1.2rem;background:#ffffffeb;box-shadow:0 1rem 3rem #26463b1a}.setup-card h1{margin:.4rem 0 1rem}.setup-card form,.editor{display:grid;gap:1rem}.setup-card form{margin-top:1.5rem}.app-shell{min-height:100vh;display:grid;grid-template:auto 1fr auto / 1fr}.app-header{position:sticky;z-index:5;top:0;display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:72px;padding:.7rem 1rem;border-bottom:1px solid #dbe2dc;background:#fafbf8f0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.app-header>div{display:flex;align-items:center;gap:.65rem}.brand-mark{display:grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:.7rem;background:var(--color-primary);color:#fff;font-weight:900}.book-switcher{width:min(58vw,19rem);gap:.15rem;font-size:.7rem}.book-switcher select{min-height:38px;padding:.35rem .5rem;font-size:.9rem}.app-nav{position:sticky;z-index:6;bottom:0;display:grid;grid-template-columns:repeat(8,1fr);border-top:1px solid #d8e0da;background:var(--color-surface)}.app-nav a{display:flex;min-width:0;min-height:64px;align-items:center;justify-content:center;flex-direction:column;gap:.2rem;padding:.35rem .1rem;color:#557068;text-decoration:none;font-size:clamp(.58rem,2.6vw,.72rem)}.app-nav a>span:first-child{font-size:1.25rem;line-height:1}.app-nav a>span:last-child{max-width:100%;overflow:hidden;text-overflow:ellipsis}.app-nav a.active{color:#15533f;background:#edf4ef;font-weight:800}.app-content{min-width:0;padding:1.25rem 1rem 6rem}.page-header{display:flex;align-items:end;justify-content:space-between;gap:1rem;max-width:70rem;margin:0 auto 1.25rem}.hero-card,.info-panel,.editor,.empty-state,.detail-panel{max-width:70rem;margin:0 auto 1rem;padding:1.25rem;border:1px solid var(--color-border);border-radius:1rem;background:var(--color-surface);box-shadow:0 .25rem 1rem #18322c0d}.hero-card{padding:clamp(1.4rem,5vw,2.5rem);color:#fff;background:linear-gradient(135deg,#174e41,#2d7560)}.hero-card>p:first-child{margin-top:0;color:#cce1d7;font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em}.hero-card h2{font-size:clamp(1.6rem,6vw,2.6rem)}.stats{max-width:70rem;display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem;margin:0 auto}.stats article{display:grid;gap:.2rem;padding:1rem;border:1px solid #d8e1da;border-radius:.85rem;background:#fff}.stats strong{font-size:1.8rem;color:#1e6652}.stats span{color:#567068;font-size:.83rem}.empty-state{text-align:center;padding:2.5rem 1.25rem;border-style:dashed;box-shadow:none}.empty-state p{color:#5d706a}.editor{max-width:42rem;margin-bottom:1.5rem}.editor h2{margin-bottom:.3rem}.form-error{margin:0;color:#a12e2a;font-weight:700}.field-note,.context-line{color:#5d706a}.context-line,.toggle{max-width:70rem;margin:0 auto 1rem}.toggle{display:flex;align-items:center;gap:.55rem;font-size:.9rem}.toggle input{width:1.15rem;min-height:1.15rem}.card-list,.tree-list{max-width:70rem;display:grid;gap:.75rem;margin:0 auto}.entity-card{display:grid;gap:1rem;padding:1rem;border:1px solid #d8e1da;border-radius:.9rem;background:#fff;box-shadow:0 .2rem .8rem #18322c0a}.entity-card p{margin:.5rem 0;color:#5a6f68}.entity-card small{color:#61776f}.card-title{display:flex;align-items:center;gap:.6rem}.status{flex:none;border-radius:99px;padding:.2rem .5rem;font-size:.7rem;font-weight:800}.status.active{color:#195d49;background:#dff1e7}.status.inactive{color:#725d38;background:#f2e9d6}.status.pending{color:#725416;background:#fff0c7}.success-message{max-width:70rem;margin:0 auto 1rem;padding:.75rem 1rem;border-radius:.7rem;color:#195d49;background:#dff1e7;font-weight:700}.selected-note{display:block;margin-top:.5rem;color:#1e6652;font-size:.8rem}.button-row{display:flex;flex-wrap:wrap;gap:.5rem}.confirm-box{padding:.8rem;border-radius:.65rem;background:#fff4ef}.confirm-box p{margin-top:0;color:#71342f}.tree-item{margin-left:min(calc(var(--depth) * 1rem),4rem);border-left:4px solid #aac9bc}.info-panel dl{display:grid;grid-template-columns:max-content 1fr;gap:.5rem 1rem}.info-panel dt{font-weight:800}.info-panel dd{margin:0}.filter-bar{max-width:70rem;margin:0 auto 1rem}.filter-bar label{max-width:14rem}.transaction-filters{max-width:70rem;margin:0 auto 1rem;border:1px solid var(--color-border);border-radius:.8rem;background:var(--color-surface)}.transaction-filters summary{min-height:44px;padding:.75rem 1rem;cursor:pointer;font-weight:800}.filter-grid{display:grid;grid-template-columns:1fr;gap:.75rem;padding:0 1rem 1rem}.reset-filters{align-self:end}.transaction-list{max-width:70rem;display:grid;gap:.65rem;margin:0 auto}.transaction-card{display:grid;grid-template-columns:minmax(7rem,auto) 1fr;gap:1rem;width:100%;padding:1rem;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);text-align:left}.transaction-card:hover{background:#edf4ef}.transaction-card>span{display:grid;gap:.25rem}.transaction-card small{color:var(--color-text-muted)}.amount{align-content:center;font-size:.75rem;font-weight:800}.amount strong{font-size:1.05rem}.amount.expense{color:var(--color-danger)}.amount.income{color:var(--color-success)}.transaction-form details,.transaction-form fieldset{min-width:0}.transaction-form details{border:1px solid var(--color-border);border-radius:.7rem}.transaction-form summary{min-height:44px;padding:.75rem;cursor:pointer;font-weight:750}.details-content{display:grid;min-width:0;gap:.8rem;padding:0 .8rem .8rem}.category-picker{display:grid;gap:.75rem;padding:.85rem;border:1px solid var(--color-border);border-radius:.7rem;background:#f9fbf8}.category-editor{scroll-margin-top:6rem}.form-grid,.kind-switch,.extra-entry{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.kind-switch button{width:100%}.radio{display:flex;align-items:center;gap:.5rem}.radio input{width:1.1rem;min-height:1.1rem}.transaction-form fieldset{display:grid;gap:.5rem;border:1px solid var(--color-border);border-radius:.7rem}.share-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;align-items:end}.share-row .toggle{margin:0}.detail-panel dl{display:grid;grid-template-columns:minmax(9rem,auto) 1fr;gap:.55rem 1rem}.detail-panel dt{font-weight:800}.detail-panel dd{margin:0}.transaction-table-wrap{display:none;max-width:70rem;margin:0 auto;overflow:hidden;border:1px solid var(--color-border);border-radius:.85rem;background:#fff}.transaction-table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:.78rem}.transaction-table th,.transaction-table td{padding:.65rem .5rem;border-bottom:1px solid var(--color-border);text-align:left;vertical-align:top;overflow-wrap:anywhere}.transaction-table th{color:#294d43;background:#edf4ef}.transaction-table tbody tr:last-child td{border-bottom:0}.transaction-table td small,.transaction-table td strong{display:block}.transaction-table td small{margin-top:.15rem;color:var(--color-text-muted)}.transaction-table th:nth-child(1){width:10%}.transaction-table th:nth-child(2){width:9%}.transaction-table th:nth-child(3){width:11%}.transaction-table th:nth-child(4){width:14%}.transaction-table th:nth-child(5){width:17%}.transaction-table th:nth-child(6){width:15%}.transaction-table th:nth-child(7){width:14%}.transaction-table th:nth-child(8){width:10%}.table-sort{display:grid;min-height:0;padding:0;border-radius:0;background:transparent;color:inherit;text-align:left}.table-sort:hover{background:transparent;color:var(--color-primary)}.sort-direction{font-size:.66rem;font-weight:600}.compact-button{min-height:36px;padding:.35rem .5rem;font-size:.74rem}.table-amount{font-weight:800;white-space:nowrap}.table-amount.expense{color:var(--color-danger)}.table-amount.income{color:var(--color-success)}.update-prompt{position:fixed;z-index:10;right:1rem;bottom:5rem;display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border:1px solid #c8d0c8;border-radius:.5rem;background:#fff;box-shadow:0 .25rem 1rem #19324a1f;font-size:.9rem}.recurring-section,.ended-rules{max-width:70rem;margin:0 auto 1.5rem}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.75rem}.section-heading>span,.pending-count{display:grid;place-items:center;min-width:2rem;min-height:2rem;border-radius:99px;color:#195d49;background:#dff1e7;font-weight:800}.pending-card{border-color:#e7c86f}.action-required{padding:.65rem .75rem;border-radius:.6rem;color:#7a352f!important;background:#fff0eb}.ended-rules{border:1px solid var(--color-border);border-radius:.8rem;background:#fff}.ended-rules>summary{min-height:44px;padding:.8rem 1rem;cursor:pointer;font-weight:800}.ended-rules .recurring-section{padding:0 1rem 1rem;margin-bottom:0}.recurring-targets{display:grid;gap:.85rem}.recurring-targets h3{margin:0}.target-editor{display:grid;min-width:0;gap:.8rem;padding:.9rem;border:1px solid var(--color-border);border-radius:.8rem;background:#f9fbf8}.target-editor .section-heading{margin:0}.target-editor details{background:#fff}.pending-stat a{color:var(--color-primary);font-size:.8rem;font-weight:750}@media(min-width:768px){.app-shell{grid-template:auto 1fr / 14rem minmax(0,1fr)}.app-header{grid-column:1 / -1;padding-inline:1.5rem}.app-nav{position:sticky;top:72px;bottom:auto;align-self:start;grid-template-columns:1fr;align-content:start;height:calc(100vh - 72px);padding:1rem .75rem;border-top:0;border-right:1px solid #d8e0da;background:#f9faf7}.app-nav a{min-height:48px;flex-direction:row;justify-content:flex-start;gap:.7rem;padding:.6rem .8rem;border-radius:.65rem;font-size:.9rem}.app-content{padding:2rem clamp(1.5rem,4vw,4rem)}.entity-card{grid-template-columns:minmax(0,1fr) auto;align-items:center;padding:1.15rem 1.25rem}.filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.update-prompt{bottom:1rem}}@media(min-width:1100px){.transaction-filters summary{display:none}.transaction-filters:not([open])>.filter-grid{display:grid!important}.filter-grid{grid-template-columns:repeat(4,minmax(0,1fr));padding-top:1rem}.transaction-table-wrap{display:block}.mobile-transaction-list{display:none}}@media(max-width:430px){.app-header strong{display:none}.stats{grid-template-columns:1fr}.page-header{align-items:stretch;flex-direction:column}.page-header>button{width:100%}.button-row>button{flex:1}.app-nav a{font-size:.53rem}.transaction-card,.form-grid,.extra-entry{grid-template-columns:1fr}.detail-panel dl{grid-template-columns:1fr;gap:.15rem}.detail-panel dd{margin-bottom:.65rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important}}
