:root,:root[data-theme=green]{color-scheme:dark;font-family:Inter,PingFang SC,Microsoft YaHei,Noto Sans CJK SC,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;--bg: #164b32;--sidebar: #103a27;--surface: #28533a;--surface-raised: #345f47;--surface-quiet: rgba(238, 247, 241, .07);--surface-hover: rgba(238, 247, 241, .1);--nav-active: #486a59;--border: rgba(238, 247, 241, .12);--border-strong: rgba(238, 247, 241, .22);--text: #f3f7f4;--text-muted: #c0cec5;--text-faint: #9cb0a3;--accent: #83c99a;--accent-strong: #a1ddb2;--accent-ink: #0a2a19;--danger: #e56c6c;--danger-hover: #f17c7c;--warning: #e8c06f;--scrim: rgba(0, 0, 0, .48);--shadow: 0 8px 24px rgba(3, 18, 10, .18);--sidebar-width: 248px;--topbar-height: 64px;--content-width: 1180px;--radius: 8px;--radius-small: 6px}:root[data-theme=black]{--bg: #090b0a;--sidebar: #101311;--surface: #181c19;--surface-raised: #222824;--surface-quiet: rgba(255, 255, 255, .055);--surface-hover: rgba(255, 255, 255, .085);--nav-active: #2b332e;--border: rgba(255, 255, 255, .11);--border-strong: rgba(255, 255, 255, .2);--text: #f5f7f5;--text-muted: #adb6b0;--text-faint: #89918c;--accent: #71c38c;--accent-strong: #8dd3a4;--accent-ink: #07180d;--danger: #f07171;--danger-hover: #fb8181;--warning: #e4b962;--scrim: rgba(0, 0, 0, .58);--shadow: 0 8px 24px rgba(0, 0, 0, .32)}*{box-sizing:border-box}html{width:100%;min-width:320px;min-height:100%;overflow-x:clip;background:var(--bg)}body{width:100%;min-width:320px;min-height:100vh;min-height:100dvh;margin:0;overflow-x:clip;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;letter-spacing:0}#root{width:100%;min-width:0;min-height:100vh;min-height:100dvh}img,svg{max-width:100%}button,input,select,textarea{margin:0;border:0;font:inherit;letter-spacing:0}button,select{cursor:pointer}button:disabled,input:disabled,select:disabled,textarea:disabled{cursor:not-allowed;opacity:.5}button,a,input,select,textarea,[tabindex]{outline:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent-strong);outline-offset:2px}input::placeholder,textarea::placeholder{color:var(--text-faint);opacity:1}::selection{background:var(--accent);color:var(--accent-ink)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{border:3px solid transparent;border-radius:8px;background:color-mix(in srgb,var(--text-muted) 42%,transparent);background-clip:padding-box}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.app-shell{min-height:100vh;min-height:100dvh;background:var(--bg);color:var(--text)}.app-sidebar{position:fixed;z-index:40;inset:0 auto 0 0;display:flex;width:var(--sidebar-width);min-height:100vh;min-height:100dvh;flex-direction:column;border-right:1px solid var(--border);background:var(--sidebar)}.brand-block{display:flex;min-height:88px;align-items:center;gap:12px;padding:max(16px,env(safe-area-inset-top)) 16px 14px;border-bottom:1px solid var(--border)}.brand-mark{position:relative;display:grid;width:42px;height:42px;flex:0 0 42px;place-items:center;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface-raised);color:var(--text);font-size:19px;font-weight:700;line-height:1}.brand-avatar-button{overflow:hidden;padding:0;transition:border-color .15s ease,background-color .15s ease}.brand-avatar-button:hover{border-color:var(--accent-strong);background:var(--surface-hover)}.brand-avatar{display:block;width:100%;height:100%;object-fit:cover}.brand-avatar-edit{position:absolute;right:2px;bottom:2px;display:grid;width:16px;height:16px;place-items:center;border:1px solid color-mix(in srgb,var(--text) 28%,transparent);border-radius:50%;background:color-mix(in srgb,var(--sidebar) 88%,transparent);color:var(--text)}.brand-copy{display:grid;min-width:0;gap:1px}.brand-copy strong{font-size:18px;font-weight:700;line-height:24px}.brand-copy span{color:var(--text-muted);font-size:12px;line-height:18px}.sidebar-close{display:none;margin-left:auto}.sidebar-nav{display:grid;min-height:0;flex:1;align-content:start;gap:4px;overflow-y:auto;padding:14px 12px}.nav-item{display:flex;width:100%;min-height:44px;align-items:center;gap:12px;padding:0 14px;border:1px solid transparent;border-radius:var(--radius);background:transparent;color:var(--text-muted);font-size:14px;font-weight:500;text-align:left;transition:color .16s ease,background-color .16s ease,border-color .16s ease}.nav-item svg{flex:0 0 auto;color:var(--text-faint)}.nav-item:hover{background:var(--surface-hover);color:var(--text)}.nav-item.is-active{border-color:var(--border);background:var(--nav-active);color:var(--text);box-shadow:0 6px 18px #00000017}.nav-item.is-active svg{color:var(--accent-strong)}.sidebar-footer{display:flex;min-height:52px;align-items:center;gap:8px;padding:12px 16px max(12px,env(safe-area-inset-bottom));border-top:1px solid var(--border);color:var(--text-faint);font-size:12px}.save-indicator{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.save-indicator.has-error{background:var(--danger);box-shadow:0 0 0 3px color-mix(in srgb,var(--danger) 18%,transparent)}.sidebar-scrim{display:none}.app-main{min-width:0;min-height:100vh;min-height:100dvh;margin-left:var(--sidebar-width)}.app-topbar{position:sticky;z-index:20;top:0;display:flex;height:var(--topbar-height);align-items:center;justify-content:space-between;padding:0 24px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--bg) 93%,transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.topbar-leading{display:flex;min-width:0;align-items:center;gap:10px}.mobile-menu-button,.mobile-route-title{display:none}.topbar-actions{display:flex;align-items:center;gap:8px;margin-left:auto}.icon-button{display:inline-grid;width:44px;height:44px;flex:0 0 44px;place-items:center;border:1px solid transparent;border-radius:var(--radius-small);background:transparent;color:var(--text-muted);transition:color .15s ease,background-color .15s ease,border-color .15s ease}.icon-button.mobile-menu-button,.icon-button.sidebar-close{display:none}.icon-button:hover{border-color:var(--border);background:var(--surface-hover);color:var(--text)}.icon-button.danger,.danger.icon-button{color:var(--danger-hover)}.icon-button.danger:hover,.danger.icon-button:hover{border-color:color-mix(in srgb,var(--danger) 40%,var(--border));background:color-mix(in srgb,var(--danger) 14%,transparent);color:var(--danger-hover)}.app-content{width:100%;min-width:0;padding:32px 28px 56px}.app-loading{display:grid;min-height:calc(100vh - var(--topbar-height) - 88px);min-height:calc(100dvh - var(--topbar-height) - 88px);place-items:center;color:var(--text-muted);font-size:13px}.page-shell,.page{width:min(100%,var(--content-width));min-width:0;margin:0 auto}.page-shell>*,.page>*,.section>*,.panel>*,.record-card>*{min-width:0;max-width:100%}.page-header{display:flex;min-height:54px;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:24px}.page-header>*{min-width:0}.page-header>svg{width:28px;height:28px;flex:0 0 28px;color:var(--accent-strong)}.page-header h1,.page-title{margin:0;color:var(--text);font-size:22px;font-weight:700;line-height:28px}.page-header p,.page-description,.page-status{margin:5px 0 0;color:var(--text-muted);font-size:13px;line-height:20px}.page-description,.page-status,.section-subtitle{overflow-wrap:anywhere}.section{margin-top:28px}.section:first-child{margin-top:0}.section-header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px}.section-header>*,.section-heading>*,.stats-toolbar>*,.record-card-header>*{min-width:0}.section-title,.section-header h2{margin:0;color:var(--text);font-size:16px;font-weight:650;line-height:24px}.section-subtitle{margin:3px 0 0;color:var(--text-muted);font-size:13px}.button,.btn{display:inline-flex;min-height:44px;align-items:center;justify-content:center;gap:8px;padding:0 15px;border:1px solid var(--border);border-radius:var(--radius-small);background:var(--surface-quiet);color:var(--text);font-size:14px;font-weight:600;line-height:20px;white-space:nowrap;transition:transform .12s ease,background-color .15s ease,border-color .15s ease}.button:hover,.btn:hover{border-color:var(--border-strong);background:var(--surface-hover)}.button:active,.btn:active{transform:translateY(1px)}.button-primary,.button--primary,.btn-primary,.primary{border-color:transparent;background:var(--accent);color:var(--accent-ink)}.button-primary:hover,.button--primary:hover,.btn-primary:hover,.primary:hover{border-color:transparent;background:var(--accent-strong)}.button-secondary,.button--secondary,.btn-secondary{background:var(--surface)}.button-ghost,.button--ghost,.btn-ghost{border-color:transparent;background:transparent;color:var(--text-muted)}.button-danger,.button--danger,.btn-danger{border-color:color-mix(in srgb,var(--danger) 45%,transparent);background:color-mix(in srgb,var(--danger) 13%,transparent);color:#fff}.button-danger:hover,.button--danger:hover,.btn-danger:hover{background:color-mix(in srgb,var(--danger-hover) 22%,transparent)}.button-icon,.btn-icon{width:44px;padding:0}.text-input,.input,.select,.textarea,.text-area,input[type=text],input[type=number],input[type=date],input[type=month],input[type=password],select,textarea{width:100%;min-height:44px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-small);background:var(--surface-quiet);color:var(--text);font-size:14px;line-height:22px;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease}textarea,.textarea,.text-area{min-height:112px;resize:vertical}.text-input:hover,.input:hover,.select:hover,.textarea:hover,.text-area:hover,input:hover,select:hover,textarea:hover{border-color:var(--border-strong)}.text-input:focus,.input:focus,.select:focus,.textarea:focus,.text-area:focus,input:focus,select:focus,textarea:focus{border-color:var(--accent);background:var(--surface);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}select option{background:var(--surface);color:var(--text)}.field,.form-field{display:grid;gap:7px}.field>label,.form-field>label,.field-label,.field__label{color:var(--text-muted);font-size:12px;font-weight:600;line-height:18px}.field-error,.field__error{color:var(--danger-hover);font-size:12px}.field__hint{color:var(--text-faint);font-size:12px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.form-actions,.toolbar,.inline-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px}.stack{display:grid;gap:16px}.inline{display:flex;align-items:center;gap:10px}.panel,.card,.record-card,.stat-card,.chart-card{min-width:0;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-quiet);box-shadow:var(--shadow)}.panel,.card,.record-card,.chart-card{padding:18px}.record-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.record-card-header>.icon-button{flex:0 0 44px}.record-card>.page-description{margin:0;color:var(--text-muted);font-size:13px;line-height:22px;white-space:pre-wrap}.record-card .section-title{overflow-wrap:anywhere}.card-grid,.responsive-grid,.stats-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.card-grid>*,.responsive-grid>*,.stats-grid>*,.form-grid>*{min-width:0}.stats-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.stat-card{min-width:0;padding:16px}.stat-label{color:var(--text-muted);font-size:12px;line-height:18px}.stat-value{margin-top:6px;color:var(--text);font-size:22px;font-weight:700;line-height:28px}.segmented-control,.tabs{display:inline-flex;max-width:100%;gap:3px;overflow-x:auto;padding:3px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-quiet)}.segment,.tab{display:inline-flex;min-height:44px;flex:0 0 auto;align-items:center;justify-content:center;gap:7px;padding:0 13px;border-radius:5px;background:transparent;color:var(--text-muted);font-size:13px;font-weight:600;white-space:nowrap}.segment:hover,.tab:hover{color:var(--text)}.segment.is-active,.tab.is-active,.segment[aria-selected=true],.tab[aria-selected=true]{background:var(--surface-raised);color:var(--text)}.tag,.status-tag{display:inline-flex;min-height:26px;align-items:center;gap:6px;padding:2px 8px;border:1px solid var(--border);border-radius:999px;background:var(--surface-quiet);color:var(--text-muted);font-size:12px;line-height:18px;white-space:nowrap}.table-wrap,.table-wrapper{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius)}table{width:100%;border-collapse:collapse;color:var(--text)}th,td{padding:12px 14px;border-bottom:1px solid var(--border);text-align:left;vertical-align:middle}th{background:var(--surface-quiet);color:var(--text-muted);font-size:12px;font-weight:600}tbody tr:last-child td{border-bottom:0}tbody tr:hover td{background:var(--surface-quiet)}.modal-backdrop{position:fixed;z-index:80;inset:0;display:grid;place-items:center;padding:20px;background:var(--scrim)}.modal,.dialog{width:min(100%,560px);max-height:min(88vh,760px);max-height:min(88dvh,760px);overflow-y:auto;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);box-shadow:0 24px 70px #0000006b}.modal-header,.modal-body,.modal-footer,.dialog-header,.dialog-body,.dialog-footer{padding:18px 20px}.modal-header,.dialog-header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border)}.modal-footer,.dialog-footer{display:flex;justify-content:flex-end;gap:10px;border-top:1px solid var(--border)}.avatar-dialog{padding:0;color:var(--text)}.avatar-dialog::backdrop{background:var(--scrim)}.avatar-dialog .dialog-header h2{margin:2px 0 0;font-size:18px;line-height:26px}.avatar-editor{display:grid;justify-items:center;gap:16px}.avatar-preview{display:grid;width:128px;aspect-ratio:1;overflow:hidden;place-items:center;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface-raised);color:var(--text);font-size:48px;font-weight:700;line-height:1}.avatar-preview img{display:block;width:100%;height:100%;object-fit:cover}.avatar-editor__hint,.avatar-editor__status{margin:0;color:var(--text-muted);font-size:13px;line-height:20px;text-align:center}.avatar-editor__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}.avatar-file-picker{position:relative;overflow:hidden;cursor:pointer}.avatar-file-picker.is-disabled{cursor:not-allowed;opacity:.56}.avatar-file-picker__input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.avatar-file-picker__input:disabled{cursor:not-allowed}.avatar-file-picker:focus-within{outline:2px solid var(--accent-strong);outline-offset:2px}.avatar-editor__status{min-height:20px}.avatar-editor__status.has-error{color:var(--danger-hover)}.empty-state{display:grid;min-height:260px;place-items:center;align-content:center;gap:8px;padding:36px 20px;border:1px dashed var(--border-strong);border-radius:var(--radius);color:var(--text-muted);text-align:center}.empty-state-icon{display:grid;width:50px;height:50px;margin-bottom:4px;place-items:center;border:1px solid var(--border);border-radius:50%;background:var(--surface-quiet);color:var(--accent)}.empty-state h2{margin:0;color:var(--text);font-size:16px;line-height:24px}.empty-state p{max-width:360px;margin:0;font-size:13px}.toast{position:fixed;z-index:100;right:22px;bottom:22px;max-width:min(360px,calc(100vw - 32px));padding:11px 14px;border:1px solid var(--border-strong);border-radius:var(--radius-small);background:var(--surface-raised);box-shadow:0 16px 42px #00000047;color:var(--text);font-size:13px;opacity:0;pointer-events:none;transform:translateY(10px);transition:opacity .16s ease,transform .16s ease}.toast.is-visible{opacity:1;transform:translateY(0)}.todo-page{max-width:860px}.todo-composer{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;margin-bottom:22px}.todo-input{min-height:46px;background:var(--surface-quiet)}.todo-add{min-height:46px}.todo-list{display:grid;gap:10px}.todo-row{position:relative;min-height:64px;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius);background:color-mix(in srgb,var(--danger) 82%,var(--surface));box-shadow:var(--shadow);content-visibility:auto;contain-intrinsic-size:auto 64px}.todo-row-content{--swipe-offset: 0px;position:relative;z-index:1;display:grid;min-height:64px;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;gap:10px;padding:8px 10px 8px 12px;background:var(--surface);touch-action:pan-y;transform:translate(var(--swipe-offset));will-change:transform}.todo-row-content.is-animating{transition:transform .18s ease}.todo-row-content:hover{background:var(--surface-raised)}.todo-check{display:grid;width:44px;height:44px;cursor:pointer;place-items:center}.todo-check input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.todo-check-box{display:grid;width:21px;height:21px;place-items:center;border:1.5px solid var(--border-strong);border-radius:5px;color:transparent;transition:background-color .14s ease,border-color .14s ease,color .14s ease}.todo-check input:focus-visible+.todo-check-box{outline:2px solid var(--accent-strong);outline-offset:2px}.todo-check input:checked+.todo-check-box{border-color:var(--accent);background:var(--accent);color:var(--accent-ink)}.todo-text{min-width:0;overflow-wrap:anywhere;color:var(--text);font-size:14px;line-height:22px;transition:color .15s ease,opacity .15s ease}.todo-row.is-completed .todo-text{color:var(--text-muted);text-decoration:line-through;text-decoration-thickness:1px;opacity:.72}.todo-more{opacity:0}.todo-row:hover .todo-more,.todo-row:focus-within .todo-more{opacity:1}.todo-swipe-delete{position:absolute;z-index:0;inset:0 auto 0 0;display:grid;width:76px;place-items:center;align-content:center;gap:1px;background:transparent;color:#fff;font-size:11px;font-weight:600}.context-menu{position:fixed;z-index:90;width:160px;padding:4px;border:1px solid var(--border-strong);border-radius:var(--radius-small);background:var(--surface-raised);box-shadow:0 18px 48px #00000061}.context-menu button{display:flex;width:100%;min-height:44px;align-items:center;gap:9px;padding:0 10px;border-radius:4px;background:transparent;color:var(--danger-hover);font-size:13px;text-align:left}.context-menu button:hover,.context-menu button:focus-visible{background:color-mix(in srgb,var(--danger) 14%,transparent)}.page-stack{display:grid;gap:18px}.ledger-page,.study-page,.work-page,.research-page{min-width:0}.ledger-page>.tabs+.page-stack{margin-top:18px}.page-subtitle{margin:6px 0 0;color:var(--text-muted);font-size:13px}.eyebrow{margin:0 0 4px;color:var(--text-faint);font-size:10px;font-weight:700;line-height:16px;text-transform:uppercase}.section-heading,.stats-toolbar,.debt-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.section-heading h2,.stats-toolbar h2,.debt-card-header h2,.debt-card-header h3{margin:0;font-size:16px;line-height:24px}.panel>.section-heading+.form-grid,.panel>.section-heading+.list-stack{margin-top:16px}.section-heading+.page-description{margin-top:12px}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(280px,.75fr);gap:16px}.ledger-entry-form>label,.debt-form>label,.payment-form>label,.compact-form>label,.form-span-2{display:grid;gap:7px}.ledger-entry-form>label>span,.debt-form>label>span,.payment-form>label>span,.compact-form>label>span,.form-span-2>span{color:var(--text-muted);font-size:12px;font-weight:600}.form-span-2,.ledger-entry-form .form-actions,.debt-form .form-actions{grid-column:1 / -1}.input-with-prefix{position:relative;display:flex;align-items:center}.input-with-prefix>span{position:absolute;z-index:1;left:12px;color:var(--text-muted);pointer-events:none}.input-with-prefix>input{padding-left:30px}.form-error{grid-column:1 / -1;margin:0;color:var(--danger-hover);font-size:12px}.section-toggle{display:flex;width:100%;min-height:48px;align-items:center;justify-content:space-between;gap:16px;padding:0;background:transparent;color:var(--text);text-align:left}.section-toggle>span{display:grid;gap:2px}.section-toggle small{color:var(--text-muted);font-size:12px;font-weight:400}.section-toggle svg{flex:0 0 auto;transition:transform .16s ease}.section-toggle svg.rotated,.section-toggle .rotated{transform:rotate(180deg)}.collapsible-content{padding-top:14px;border-top:1px solid var(--border)}.inline-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:9px;margin-bottom:14px}.list-stack{display:grid;gap:8px}.list-row{display:flex;min-width:0;min-height:48px;align-items:center;gap:11px;padding:9px 10px;border:1px solid var(--border);border-radius:var(--radius-small);background:var(--surface-quiet)}.category-list,.ledger-list,.category-panel{min-width:0}.category-list .list-row>input{flex:1 1 160px}.list-row>input{min-width:0}.row-icon{display:grid;width:34px;height:34px;flex:0 0 34px;place-items:center;border-radius:var(--radius-small);background:color-mix(in srgb,var(--danger) 14%,transparent);color:var(--danger-hover);font-weight:700}.row-icon[data-kind=income]{background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent-strong)}.row-main{display:grid;min-width:0;flex:1;gap:2px}.row-main strong,.row-main small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-main strong{color:var(--text);font-size:13px;font-weight:600}.row-main small{color:var(--text-muted);font-size:12px}.row-actions{display:flex;flex:0 0 auto;align-items:center;gap:4px}.icon-btn.danger{color:var(--danger-hover)}.money{flex:0 0 auto;font-variant-numeric:tabular-nums;white-space:nowrap}.income,.positive{color:var(--accent-strong)}.expense,.negative{color:var(--danger-hover)}.count-label{color:var(--text-faint);font-size:12px}.stats-toolbar{align-items:center}.compact-field{display:inline-flex;align-items:center;gap:8px}.compact-field input{width:auto;min-height:44px}.stat-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.stat-card>span,.stat-card>small{display:block;color:var(--text-muted);font-size:12px}.stat-card>strong{display:block;margin:8px 0 3px;overflow-wrap:anywhere;font-size:19px;font-variant-numeric:tabular-nums;line-height:25px}.chart-panel,.monthly-panel{min-width:0}.chart-wrap{width:100%;height:300px;min-height:300px;overflow:hidden;margin-top:8px}.chart-wrap .recharts-responsive-container,.chart-wrap .recharts-wrapper{min-width:0!important;max-width:100%}.chart-wrap .recharts-legend-item-text,.chart-wrap .recharts-text{color:var(--text-muted)!important;fill:var(--text-muted);font-size:12px}.chart-wrap .recharts-default-tooltip{border-color:var(--border-strong)!important;border-radius:var(--radius-small);background:var(--surface-raised)!important;color:var(--text)!important}.monthly-list{display:grid;gap:12px;margin-top:20px}.monthly-row{display:grid;grid-template-columns:72px minmax(90px,1fr) auto;align-items:center;gap:12px;color:var(--text-muted);font-size:12px}.monthly-row strong{color:var(--text);font-variant-numeric:tabular-nums}.monthly-bar,.progress-track{display:block;height:7px;overflow:hidden;border-radius:4px;background:var(--surface-hover)}.monthly-bar i,.progress-track i,.progress-track>span{display:block;height:100%;min-width:3px;border-radius:inherit;background:var(--accent)}.monthly-bar i.negative,.progress-track i.negative,.progress-track>span.negative{background:var(--danger)}.debt-grid{align-items:start}.debt-card{display:grid;gap:16px;min-width:0;padding:18px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-quiet);box-shadow:var(--shadow)}.debt-card-header{align-items:center}.debt-card-header>.compact-form{min-width:0;flex:1 1 auto}.debt-amounts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.debt-amounts>div{min-width:0}.debt-amounts span{display:block;color:var(--text-muted);font-size:11px}.debt-amounts strong{display:block;margin-top:4px;overflow-wrap:anywhere;color:var(--text);font-size:14px;font-variant-numeric:tabular-nums}.payment-history{display:grid;gap:10px;padding-top:14px;border-top:1px solid var(--border)}.payment-history h3{margin:0;font-size:13px}.compact-form{gap:10px}.payment-edit-form{width:100%}.completion-note{display:flex;align-items:center;gap:7px;margin:0;color:var(--accent-strong);font-size:12px}.study-tabs,.work-tabs{width:fit-content}.study-toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px}.study-toolbar h2,.study-toolbar p{margin:0}.study-toolbar .eyebrow{margin-bottom:4px}.study-toolbar>div:first-child>p:last-child{margin-top:3px;color:var(--text-muted);font-size:12px}.study-add-controls{flex:0 0 auto}.study-add-controls .compact-field{min-width:156px}.study-card-grid,.work-card-grid,.research-grid{align-items:stretch}.study-card{display:grid;min-height:360px;grid-template-rows:auto minmax(0,1fr) auto;gap:14px}.study-card-header{align-items:center}.study-card-header>div{display:flex;min-width:0;align-items:center;flex-wrap:wrap;gap:8px}.study-card-header strong{overflow-wrap:anywhere;font-size:15px;line-height:22px}.study-content-field{min-height:0}.study-content-field textarea{height:100%;min-height:230px}.autosave-label{display:block;color:var(--text-faint);font-size:11px;line-height:18px;text-align:right}.work-tabs .tab small{display:inline-grid;min-width:22px;height:22px;place-items:center;padding:0 6px;border-radius:999px;background:var(--surface-hover);color:var(--text-faint);font-size:11px;line-height:1}.work-tabs .tab.is-active small{background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent-strong)}.work-card{display:grid;align-content:start;gap:16px}.work-card-header{align-items:center}.work-card-header>div{display:flex;min-width:0;align-items:baseline;gap:9px}.work-card-header span{color:var(--text-muted);font-size:12px}.work-card-header strong{color:var(--accent-strong);font-size:19px;font-variant-numeric:tabular-nums;line-height:24px}.work-fields{gap:14px}.work-fields textarea{min-height:126px}.research-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.research-card{display:grid;min-height:430px;grid-template-rows:auto auto minmax(0,1fr) auto;gap:14px}.research-card-header{align-items:center}.research-index{color:var(--accent-strong);font-size:20px;font-weight:700;font-variant-numeric:tabular-nums;line-height:28px}.research-title-field input{color:var(--text);font-size:16px;font-weight:700;line-height:22px}.research-content-field{min-height:0}.research-content-field textarea{height:100%;min-height:270px;line-height:23px}.chart-card{overflow:hidden}.chart-card>svg{width:100%!important;height:270px!important;min-height:270px!important}.stats-grid .stat-value{overflow-wrap:anywhere;font-variant-numeric:tabular-nums}@media(max-width:1100px)and (min-width:768px){:root{--sidebar-width: 224px}.app-content{padding-inline:22px}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-grid,.study-card-grid,.work-card-grid,.research-grid{grid-template-columns:minmax(0,1fr)}}@media(max-width:767px){:root{--topbar-height: 56px}.app-sidebar{width:min(78vw,300px);box-shadow:20px 0 56px #00000047;transform:translate(-102%);transition:transform .19s ease}.app-sidebar.is-open{transform:translate(0)}.brand-block{min-height:78px}.icon-button.sidebar-close{display:inline-grid}.sidebar-nav{padding-block:10px}.nav-item{min-height:44px}.sidebar-scrim{position:fixed;z-index:35;inset:0;display:block;width:100%;height:100%;background:var(--scrim);opacity:0;pointer-events:none;transition:opacity .19s ease}.sidebar-scrim.is-visible{opacity:1;pointer-events:auto}.app-main{margin-left:0}.app-topbar{padding:0 max(12px,env(safe-area-inset-right)) 0 max(10px,env(safe-area-inset-left))}.icon-button.mobile-menu-button{display:inline-grid}.mobile-route-title{display:block;overflow:hidden;color:var(--text);font-size:15px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.topbar-actions{gap:2px}.icon-button{width:44px;height:44px;flex-basis:44px}.app-content{padding:22px 16px calc(40px + env(safe-area-inset-bottom))}.page-header{min-height:48px;align-items:flex-start;margin-bottom:18px}.page-header h1,.page-title{font-size:20px;line-height:26px}.page-header-actions{align-self:center}.form-grid,.card-grid,.responsive-grid,.stats-grid,.stat-grid,.dashboard-grid,.debt-amounts{grid-template-columns:minmax(0,1fr)}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.section-header,.section-heading,.debt-card-header,.stats-toolbar{flex-wrap:wrap}.section-header>.toolbar,.section-header>.segmented-control,.stats-toolbar>.compact-field{width:100%}.toolbar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.toolbar .compact-field,.toolbar select,.stats-toolbar .compact-field input{width:100%;min-width:0}.study-toolbar{display:grid;align-items:start}.study-add-controls{display:grid;width:100%;grid-template-columns:minmax(0,1fr) auto;gap:10px}.study-add-controls .compact-field{display:grid;min-width:0;grid-template-columns:auto minmax(0,1fr)}.study-add-controls input{width:100%;min-width:0}.study-card{min-height:330px}.study-content-field textarea{min-height:210px}.research-card{min-height:390px}.research-content-field textarea{min-height:240px}.chart-card>svg{height:220px!important;min-height:220px!important}.payment-history .list-row{align-items:flex-start;flex-wrap:wrap}.payment-history .payment-edit-form,.debt-card-header>.compact-form{width:auto;flex:1 1 100%}.payment-history .row-actions{margin-left:auto}.monthly-row{grid-template-columns:58px minmax(70px,1fr) auto;gap:8px}.form-actions,.toolbar,.inline-actions{flex-wrap:wrap}.modal-backdrop{align-items:end;padding:0}.modal,.dialog{width:100%;max-height:92vh;max-height:92dvh;border-width:1px 0 0;border-radius:var(--radius) var(--radius) 0 0}.avatar-dialog{max-width:100%;margin:auto 0 0}.avatar-editor__actions{display:grid;width:100%}.avatar-editor__actions .button{width:100%}.avatar-dialog .dialog-footer{padding-bottom:calc(18px + env(safe-area-inset-bottom))}.avatar-dialog .dialog-footer .button{min-width:0;flex:1 1 0}.toast{right:16px;bottom:calc(16px + env(safe-area-inset-bottom));left:16px;max-width:none}.todo-composer{grid-template-columns:minmax(0,1fr) 46px}.todo-add{width:46px;padding:0}.todo-add span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.todo-more{opacity:.72}.todo-row-content{grid-template-columns:44px minmax(0,1fr) 44px}}@media(max-width:420px){.topbar-actions .icon-button{width:44px;flex-basis:44px}.app-content{padding-inline:12px}.panel,.card,.record-card,.chart-card{padding:15px}}@media(max-width:359px){.stats-grid,.toolbar{grid-template-columns:minmax(0,1fr)}}@media(hover:none){.todo-more{opacity:.72}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media print{.app-sidebar,.app-topbar,.sidebar-scrim,.toast,.button,.btn,.icon-button{display:none!important}.app-main{margin:0}.app-content{padding:0}}
