.planning-card{overflow:hidden}.planning-card>*{position:relative}.planning-hero{grid-template-columns:repeat(2,1fr);gap:10px;margin-top:14px;display:grid}.planning-hero>div,.planning-metric,.goal-item{border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--bg);transition:border-color .2s}.planning-hero>div:hover,.planning-metric:hover{border-color:var(--border)}.planning-hero>div{padding:16px}.planning-hero span,.planning-metric span,.planning-metric small,.goal-meta,.goal-head span{color:var(--muted);font-size:11px}.planning-hero strong{font:700 20px/1.05 var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em;margin-top:5px;display:block}.planning-grid{grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px;display:grid}.planning-grid-duo{grid-template-columns:repeat(2,1fr)}.planning-goal-source{margin-top:4px;line-height:1.45;display:block}.planning-metric{padding:10px}.planning-metric strong{font:700 14px/1 var(--font-mono);font-variant-numeric:tabular-nums;margin:5px 0 3px;display:block}.planning-metric.positive strong{color:var(--accent)}.planning-metric.negative strong{color:var(--danger)}.goal-list{gap:8px;margin-top:10px;display:grid}.goal-item{padding:10px}.goal-head,.goal-meta{justify-content:space-between;gap:12px;display:flex}.goal-head strong{font:700 12px/1 var(--font-mono);color:var(--accent)}.goal-progress{background:var(--border);border-radius:999px;height:6px;margin:8px 0;overflow:hidden}.goal-progress span{border-radius:inherit;background:var(--accent);height:100%;display:block}.goal-progress.warning span{background:linear-gradient(90deg, var(--warning), var(--danger))}.goal-manager{gap:12px;display:grid}.goal-manager-head{justify-content:space-between;align-items:center;display:flex}.goal-manager-head .card-title{margin-bottom:0}.goal-round-add{border:1px solid var(--border);width:32px;height:32px;color:var(--fg);font:400 20px/1 var(--font-body);cursor:pointer;background:0 0;border-radius:50%}.goal-annual-card{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);padding:14px}.goal-annual-card>span,.goal-list-section h4{color:var(--muted);font:600 12px/1.2 var(--font-body)}.goal-annual-card strong{color:var(--fg);font:600 28px/.95 var(--font-mono);font-variant-numeric:tabular-nums;margin-top:6px;display:block}.goal-annual-meta,.finance-goal-foot,.goal-actions{align-items:center;display:flex}.goal-annual-meta,.finance-goal-foot{justify-content:space-between;gap:12px}.goal-annual-meta small,.finance-goal-card p,.finance-goal-foot span,.goal-empty{color:var(--muted);font-size:12px}.goal-list-section{gap:10px;display:grid}.goal-card-list{gap:12px;display:grid}.finance-goal-card{border-radius:var(--radius);background:var(--gradient-card);box-shadow:var(--shadow-md);border:1px solid var(--border);padding:20px}.finance-goal-card.completed{border:1px solid var(--border);box-shadow:none;opacity:.82;background:0 0}.finance-goal-main{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:10px;display:flex}.finance-goal-main h3{font:700 15px/1.25 var(--font-display);margin-bottom:4px}.finance-goal-main strong{color:var(--accent);font:800 24px/1 var(--font-mono);font-variant-numeric:tabular-nums}.finance-goal-foot{margin-top:8px}.finance-goal-foot span{color:var(--fg);font-variant-numeric:tabular-nums;font-weight:700}.goal-actions{gap:8px}.goal-mini-btn{border:1px solid var(--border);background:var(--surface2);width:36px;height:36px;color:var(--muted);font:700 18px/1 var(--font-body);cursor:pointer;border-radius:8px}.goal-mini-btn.add{background:var(--warning);border-color:var(--warning);color:var(--on-accent)}.goal-check{width:38px;height:38px;color:var(--on-accent);font:800 20px/1 var(--font-body);background:#3f9b658c;background:lab(57.4832% -38.1772 19.6732/.55);border-radius:50%;place-items:center;display:grid}.goal-empty{border:1px dashed var(--border);border-radius:14px;padding:16px;line-height:1.5}.goal-wisdom-card{border-radius:var(--radius);border:1px solid var(--border);background:linear-gradient(#0000000d,#000c),radial-gradient(circle at 70% 20%,#2bbb714d,#0000 32%),linear-gradient(135deg,#141207,#08090d);background:linear-gradient(lab(0% 0 0/.05),lab(0% 0 0/.8)),radial-gradient(circle at 70% 20%,lab(67.2682% -51.2682 26.4705/.3),#0000 32%),linear-gradient(135deg,lab(5.35405% -.532672 4.89109),lab(2.4487% .11421 -1.91408));align-items:flex-end;min-height:140px;padding:20px;display:flex;overflow:hidden}.goal-wisdom-card span{color:var(--warning);font:800 12px/1.2 var(--font-body)}.goal-wisdom-card p{color:#e0e7e2;color:lab(90.8559% -3.08841 1.58141);margin-top:6px;font-size:12px;font-style:italic;line-height:1.55}.goal-sheet{background:var(--gradient-card);border:1px solid var(--border)}.goal-sheet-top{grid-template-columns:32px 1fr 32px;align-items:center;margin-bottom:16px;display:grid}.goal-sheet-top button{width:30px;height:30px;color:var(--fg);font:300 26px/1 var(--font-body);cursor:pointer;background:0 0;border:none}.goal-sheet-top h3{text-align:center;margin:0}.goal-preview-card{border:1px solid var(--border);background:var(--surface);border-radius:12px;grid-template-columns:1fr auto;align-items:center;gap:12px;margin-bottom:20px;padding:16px;display:grid}.goal-preview-card .goal-progress{grid-column:1/-1;margin-bottom:0}.goal-preview-card strong,.goal-preview-card em{display:block}.goal-preview-card strong{font:800 14px/1.2 var(--font-display)}.goal-preview-card em{color:var(--muted);font-size:11px;font-style:normal}.goal-preview-card b{color:var(--warning);font:800 28px/1 var(--font-mono);font-variant-numeric:tabular-nums}.goal-sheet-actions{grid-template-columns:1fr 2fr;gap:12px;margin-top:20px;display:grid}.goal-sheet-actions .btn-secondary,.goal-sheet-actions .btn-submit{height:48px;margin:0}.goal-sheet-actions .btn-submit{background:var(--warning);color:var(--on-accent)}.progress-sheet-copy{color:var(--muted);margin:-4px 0 16px;font-size:12px;line-height:1.5}.goals-overview-card{overflow:hidden}.goal-metric-grid,.large-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.goal-metric{border:1px solid var(--border);background:var(--bg);border-radius:14px;min-width:0;padding:10px}.goal-metric span,.goal-metric small,.goal-copy{color:var(--muted);font-size:11px;display:block}.goal-metric strong{font:700 14px/1 var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;margin:5px 0 3px;display:block;overflow:hidden}.goal-copy{margin-top:3px;line-height:1.45}.annual-budget-strip{border:1px solid var(--border);background:var(--bg);border-radius:14px;margin:12px 0;padding:12px}.annual-budget-strip>div{color:var(--muted);justify-content:space-between;gap:12px;margin-bottom:8px;font-size:11px;display:flex}.annual-budget-strip strong{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.budget-table .budget-total-row td,.budget-table .budget-row td{color:#b58bf9;color:lab(65.2599% 33.202 -49.8811);border-top:1px solid var(--border);font-weight:600}.budget-table .budget-row .sub-cell{color:var(--muted)}.large-summary-grid{margin:12px 0}.large-expense-list{gap:10px;display:grid}.large-expense-item,.empty-state{border:1px solid var(--border);background:var(--bg);border-radius:14px;padding:12px}.empty-state{color:var(--muted);text-align:center;font-size:12px}.large-expense-main{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.large-expense-main h3{font:700 15px/1.25 var(--font-display);margin-top:6px}.large-expense-main p,.large-expense-numbers{color:var(--muted);font-size:11px}.large-expense-numbers{font-family:var(--font-mono);font-variant-numeric:tabular-nums;justify-content:space-between;gap:8px;display:flex}.status-pill{background:var(--accent-dim);color:var(--accent);font:700 11px/1 var(--font-body);border-radius:999px;align-items:center;padding:4px 8px;display:inline-flex}.status-pill.completed{color:var(--accent);background:#00c47133;background:lab(69.8359% -57.9457 29.9591/.2)}.status-pill.inProgress{background:var(--warning-dim);color:var(--warning)}.status-pill.paused{background:var(--danger-dim);color:var(--danger)}.text-btn{color:var(--accent);font:700 12px/1 var(--font-body);cursor:pointer;background:0 0;border:none}.contribution-list{border-top:1px solid var(--border-subtle);gap:0;margin-top:14px;padding-top:14px;display:grid}.contribution-item{color:var(--fg-secondary);border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;gap:12px;padding:9px 0;font-size:13px;display:flex}.contribution-item:last-child{border-bottom:none}.contribution-item strong{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:14px}.positive{color:var(--accent)}.negative{color:var(--danger)}.warning{color:var(--warning)}.donut-section{align-items:center;gap:20px;min-width:0;display:flex}.donut-chart{flex-shrink:0;width:140px;height:140px;display:block}.donut-center-label{fill:var(--muted);font:600 11px var(--font-body);text-anchor:middle}.donut-center-value{fill:var(--fg);font:700 14px var(--font-mono);text-anchor:middle}.donut-legend{flex-direction:column;flex:1;gap:10px;min-width:0;display:flex}.legend-item{align-items:center;gap:8px;display:flex}.legend-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.legend-label{color:var(--muted);flex:1;font-size:12px}.legend-value{font:600 12px/1 var(--font-mono);font-variant-numeric:tabular-nums;text-overflow:ellipsis;min-width:0;overflow:hidden}.table-wrapper{--table-sticky-offset:0px;--table-cat-width:64px;--table-sub-width:112px;-webkit-overflow-scrolling:touch;min-width:0;max-width:100%;margin:0;padding:0;overflow-x:auto}.data-table{border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums;width:max-content;min-width:100%;font-size:12px}.data-table th,.data-table td{text-align:right;white-space:nowrap;border-bottom:1px solid var(--border);padding:8px 6px}.data-table th{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;background:var(--surface);font-size:11px;font-weight:600;position:sticky;top:0}.month-edit-btn{color:inherit;cursor:pointer;font:inherit;background:0 0;border:none;justify-items:end;gap:2px;display:grid}.month-edit-btn span{color:var(--accent);letter-spacing:0;font-size:11px}.table-edit-hint{color:var(--muted);margin:-4px 0 10px;font-size:11px;line-height:1.5}.inline-metric-input{width:86px;color:var(--fg);font:12px/1.2 var(--font-mono);font-variant-numeric:tabular-nums;text-align:right;background:0 0;border:1px solid #0000;border-radius:8px;outline:none;padding:5px 6px}.inline-metric-input:hover{border-color:var(--border);background:var(--surface2)}.inline-metric-input:focus{border-color:var(--accent);background:var(--bg);box-shadow:0 0 0 2px var(--accent-dim)}.data-table th:first-child,.data-table th:nth-child(2){text-align:left;background:var(--surface);position:sticky}.data-table th:first-child{left:var(--table-sticky-offset);width:var(--table-cat-width);min-width:var(--table-cat-width);z-index:5}.data-table th:nth-child(2){left:calc(var(--table-sticky-offset) + var(--table-cat-width));width:var(--table-sub-width);min-width:var(--table-sub-width);z-index:4}.data-table .cat-cell{text-align:left;color:var(--fg);vertical-align:middle;background:var(--surface2);border-right:2px solid var(--border);writing-mode:horizontal-tb;width:var(--table-cat-width);min-width:64px;left:var(--table-sticky-offset);z-index:4;padding:10px 8px 10px 12px;font-size:12px;font-weight:700;position:sticky}.data-table .cat-cell:before{content:"";background:var(--cat-accent);pointer-events:none;width:3px;position:absolute;top:0;bottom:0;left:0}.data-table .cat-cell.asset{--cat-accent:var(--accent)}.data-table .cat-cell.liability{--cat-accent:var(--danger)}.data-table .sub-cell{text-align:left;color:var(--muted);width:var(--table-sub-width);min-width:var(--table-sub-width);max-width:var(--table-sub-width);text-overflow:ellipsis;left:calc(var(--table-sticky-offset) + var(--table-cat-width));z-index:3;background:var(--surface);box-shadow:1px 0 0 var(--border);padding-left:10px;font-weight:400;position:sticky;overflow:hidden}.data-table .formula-cell{z-index:12;overflow:visible}.data-table .subtotal td{color:var(--accent);border-bottom:2px solid var(--border);font-weight:700}.data-table .subtotal .sub-cell{color:var(--accent);font-weight:600}.data-table .subtotal.liability td,.data-table .subtotal.liability .sub-cell{color:var(--danger)}.data-table .key-net td{color:#00b4bc;color:lab(66.7266% -49.7646 -20.3395);border-top:1.5px solid var(--border);border-bottom:1.5px solid var(--border);font-size:12px;font-weight:700}.data-table .key-net .sub-cell:before{content:"★ ";font-size:11px}.formula-tooltip{cursor:help;text-underline-offset:3px;align-items:center;gap:4px;-webkit-text-decoration:underline dotted #6e7278bf;text-decoration:underline dotted #6e7278bf;-webkit-text-decoration:underline dotted lab(47.7666% -.495315 -3.72248/.75);text-decoration:underline dotted lab(47.7666% -.495315 -3.72248/.75);display:inline-flex;position:relative}.formula-floating-tooltip{z-index:1000;background:var(--surface);border:1px solid var(--border);max-width:260px;color:var(--fg);box-shadow:var(--shadow-lg);font:500 11px/1.5 var(--font-body);pointer-events:none;border-radius:10px;padding:8px 10px;position:fixed}.split-tooltip{cursor:help;text-underline-offset:3px;justify-content:flex-end;-webkit-text-decoration:underline dotted #6e72788c;text-decoration:underline dotted #6e72788c;-webkit-text-decoration:underline dotted lab(47.7666% -.495315 -3.72248/.55);text-decoration:underline dotted lab(47.7666% -.495315 -3.72248/.55);display:inline-flex;position:relative}.split-tooltip:after{content:attr(data-tooltip);z-index:20;background:var(--surface);border:1px solid var(--border);width:max-content;max-width:260px;color:var(--fg);box-shadow:var(--shadow-lg);font:500 11px/1.5 var(--font-body);white-space:normal;opacity:0;pointer-events:none;border-radius:10px;padding:8px 10px;transition:opacity .15s,transform .15s;position:absolute;bottom:calc(100% + 8px);right:0;transform:translateY(4px)}.split-tooltip:hover:after,.split-tooltip:focus-visible:after{opacity:1;transform:translateY(0)}.data-table .grand-total td{color:var(--fg);background:var(--surface2);border-bottom:none;font-size:12px;font-weight:700}.data-table .grand-total .sub-cell{background:var(--surface2)}.data-table .income-row td{color:#00c471;color:lab(69.8359% -57.9457 29.9591);border-top:1px solid var(--border);font-weight:600}.data-table .income-row.passive td{color:#dea052;color:lab(70.814% 18.3009 49.1648)}.data-table .income-row.windfall td{color:#ae84f2;color:lab(62.9231% 33.3667 -49.8432)}.data-table .expense-row td{color:var(--warning);border-top:1px solid var(--border);font-weight:600}.data-table .expense-row.surplus td{color:var(--fg)}.data-table .expense-row.savings td{color:#00b4bc;color:lab(66.7266% -49.7646 -20.3395)}.data-table .subtotal td:first-child,.data-table .key-net td:first-child,.data-table .grand-total td:first-child{left:var(--table-sticky-offset);z-index:4;background:var(--surface);position:sticky}.data-table .grand-total td:first-child{background:var(--surface2)}.table-scroll-hint{color:var(--muted);text-align:center;opacity:.6;margin-top:8px;font-size:11px}.person-toggle{gap:8px;margin-bottom:12px;display:flex}.person-btn{border:1px solid var(--border);color:var(--muted);font:500 12px/1 var(--font-body);cursor:pointer;background:0 0;border-radius:20px;padding:6px 14px;transition:all .2s}.person-btn.active{background:var(--surface2);color:var(--fg);border-color:var(--border)}.fab{bottom:calc(84px + var(--safe-bottom));background:var(--gradient-accent);width:50px;height:50px;color:var(--on-accent);cursor:pointer;box-shadow:var(--shadow-md), var(--shadow-glow-accent);z-index:100;border:none;border-radius:50%;place-items:center;font-size:24px;font-weight:300;line-height:1;transition:transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s;display:grid;position:fixed;right:18px}.fab:active{transform:scale(.92)}.bottom-nav{background:var(--surface-floating);-webkit-backdrop-filter:blur(24px);border-top:1px solid var(--border-subtle);width:100%;max-width:430px;padding:8px 12px calc(10px + var(--safe-bottom));z-index:90;gap:4px;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.nav-item{color:var(--muted);font:400 11px/1 var(--font-body);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:3px;padding:8px 0;transition:color .2s,background .2s,transform .15s;display:flex}.nav-item.active{color:var(--accent);background:var(--accent-dim)}.nav-item:active{transform:scale(.95)}.nav-item svg{width:22px;height:22px;transition:transform .2s}.nav-item.active svg{transform:scale(1.05)}.sheet-overlay,.import-overlay,.clear-overlay{background:var(--scrim);z-index:200;opacity:0;pointer-events:none;transition:opacity .3s;position:fixed;inset:0}.import-overlay,.clear-overlay{background:var(--scrim-strong);z-index:300}.sheet-overlay.open,.import-overlay.open,.clear-overlay.open{opacity:1;pointer-events:all}.sheet,.import-sheet,.clear-sheet{background:var(--surface);width:100%;max-width:430px;padding:20px;padding-bottom:calc(20px + var(--safe-bottom));border-radius:20px 20px 0 0;transition:transform .35s cubic-bezier(.32,.72,0,1);position:fixed;bottom:0;left:50%;overflow-y:auto;transform:translate(-50%)translateY(100%)}.sheet{z-index:201;max-height:80dvh}.import-sheet{z-index:301;max-height:85dvh}.clear-sheet{z-index:301;max-height:70dvh}.sheet-overlay.open .sheet,.import-overlay.open .import-sheet,.clear-overlay.open .clear-sheet{transform:translate(-50%)translateY(0)}.sheet-handle{background:var(--border);border-radius:2px;width:36px;height:4px;margin:0 auto 16px}.sheet h3,.import-sheet h3,.clear-sheet h3{font:600 17px/1.3 var(--font-display);margin-bottom:16px}.form-group{margin-bottom:14px}.form-group label{color:var(--muted);margin-bottom:4px;font-size:12px;font-weight:500;display:block}.form-group select,.form-group input,.form-group textarea{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--fg);font:14px/1.4 var(--font-body);border-radius:10px;outline:none;padding:10px 12px;transition:border-color .2s}.form-group select:focus,.form-group input:focus,.form-group textarea:focus{border-color:var(--accent)}.form-group textarea{resize:vertical;min-height:76px}.form-row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.sheet-section-title,.settings-subtitle{color:var(--muted);letter-spacing:.02em;margin:16px 0 10px;font-size:12px;font-weight:600}.passive-goal-form{border:1px solid var(--border);background:var(--bg);border-radius:14px;margin-top:12px;padding:12px}.passive-goal-form .settings-subtitle{margin-top:0}.btn-submit,.btn-import-confirm{background:var(--accent);width:100%;color:var(--on-accent);font:600 15px/1 var(--font-body);cursor:pointer;border:none;border-radius:12px;padding:14px;transition:opacity .2s}.btn-secondary{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--fg);font:600 12px/1 var(--font-body);cursor:pointer;border-radius:12px;margin-bottom:12px;padding:11px 12px}.btn-secondary.danger{color:var(--danger);border-color:#e6434359;border-color:lab(53.9062% 63.1954 38.5555/.35);margin-top:10px;margin-bottom:0}.btn-secondary:disabled{opacity:.45;cursor:not-allowed}.btn-submit{margin-top:8px}.btn-submit:active,.btn-import-confirm:active{opacity:.8}.btn-import-confirm:disabled{opacity:.4;cursor:not-allowed}.import-btn{border:1px solid var(--border);background:var(--surface);color:var(--muted);font:500 11px/1 var(--font-body);cursor:pointer;border-radius:8px;align-items:center;gap:4px;padding:6px 10px;transition:all .2s;display:inline-flex}.import-btn:active,.sheet-chip:active{transform:scale(.95)}.import-btn.danger{color:var(--danger);border-color:#e6434359;border-color:lab(53.9062% 63.1954 38.5555/.35)}.import-btn svg{width:14px;height:14px}.import-dropzone{border:2px dashed var(--border);text-align:center;cursor:pointer;border-radius:14px;margin-bottom:16px;padding:28px 20px;transition:all .2s}.import-dropzone.dragover{border-color:var(--accent);background:var(--accent-dim)}.import-dropzone .icon{opacity:.5;margin-bottom:8px;font-size:32px}.import-dropzone .label{color:var(--muted);font-size:12px;line-height:1.5}.import-dropzone .label strong{color:var(--accent)}.import-dropzone input[type=file]{display:none}.import-file-info{background:var(--bg);border-radius:10px;align-items:center;gap:10px;margin-bottom:16px;padding:12px 14px;display:flex}.import-file-info .file-icon{background:#4d935126;background:lab(55.0689% -33.6318 27.5919/.15);border-radius:8px;flex-shrink:0;place-items:center;width:36px;height:36px;font-size:16px;display:grid}.import-file-info .file-name{white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:12px;font-weight:500;overflow:hidden}.import-file-info .file-size{color:var(--muted);font-size:11px}.sheet-chips{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.sheet-chip{border:1px solid var(--border);color:var(--muted);font:500 12px/1 var(--font-body);cursor:pointer;background:0 0;border-radius:20px;padding:7px 12px;transition:all .2s}.sheet-chip.selected{background:var(--accent-dim);color:var(--accent);border-color:var(--accent)}.import-preview{margin-bottom:16px}.import-preview-title{color:var(--muted);margin-bottom:8px;font-size:12px;font-weight:500}.import-preview-table{border-collapse:collapse;font-variant-numeric:tabular-nums;border-radius:8px;width:100%;font-size:11px;overflow:hidden}.import-preview-table th{background:var(--bg);color:var(--muted);text-align:right;letter-spacing:.03em;padding:6px 8px;font-size:11px;font-weight:600}.import-preview-table th:first-child,.import-preview-table td:first-child{text-align:left}.import-preview-table td{text-align:right;border-bottom:1px solid var(--border);color:var(--fg);padding:5px 8px}.import-preview-table td:first-child{color:var(--muted);font-weight:500}.import-preview-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto}.import-mode-panel{margin-bottom:16px}.clear-options{gap:10px;margin-bottom:16px;display:grid}.clear-option{border:1px solid var(--border);background:var(--bg);cursor:pointer;border-radius:14px;align-items:flex-start;gap:10px;padding:12px;display:flex}.clear-option input{width:16px;height:16px;accent-color:var(--danger);flex-shrink:0;margin-top:2px}.clear-option span,.clear-option strong,.clear-option small{display:block}.clear-option strong{color:var(--fg);margin-bottom:4px;font-size:12px}.clear-option small{color:var(--muted);font-size:11px;line-height:1.45}.import-mode-options{gap:8px;display:grid}.mode-option{border:1px solid var(--border);background:var(--bg);color:var(--fg);text-align:left;cursor:pointer;border-radius:12px;padding:10px 12px}.mode-option.selected{border-color:var(--accent);background:var(--accent-dim)}.mode-option strong,.mode-option span{display:block}.mode-option strong{margin-bottom:4px;font-size:12px}.mode-option span{color:var(--muted);font-size:11px}.import-summary{grid-template-columns:repeat(2,1fr);gap:8px;margin-top:10px;display:grid}.import-summary span{background:var(--bg);color:var(--muted);border-radius:10px;padding:8px 10px;font-size:11px}.import-status{border-radius:10px;margin-bottom:12px;padding:10px 14px;font-size:12px;display:none}.import-status.success{color:var(--accent);background:#00c4711a;background:lab(69.8359% -57.9457 29.9591/.1);border:1px solid #00c4714d;border:1px solid lab(69.8359% -57.9457 29.9591/.3);display:block}.import-status.error{color:var(--danger);background:#e643431a;background:lab(53.9062% 63.1954 38.5555/.1);border:1px solid #e643434d;border:1px solid lab(53.9062% 63.1954 38.5555/.3);display:block}.import-copy{color:var(--muted);margin-bottom:16px;font-size:12px;line-height:1.5}.settings-panel{margin-bottom:8px}.settings-form-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--gradient-card);box-shadow:var(--shadow-soft);gap:12px;margin-top:10px;padding:16px;display:grid}.settings-form-head h3{font:700 15px/1.2 var(--font-display);letter-spacing:-.01em}.settings-form-head p{color:var(--muted);margin-top:4px;font-size:12px;line-height:1.45}.list-sub-inline{max-width:40%;color:var(--muted);text-align:right;white-space:nowrap;text-overflow:ellipsis;flex-shrink:0;font-size:12px;overflow:hidden}.list-check{opacity:0;flex-shrink:0;width:20px;height:20px}.list-check.on{opacity:1}.list-check.on:after{content:"";border-right:2.5px solid var(--accent);border-bottom:2.5px solid var(--accent);width:7px;height:12px;margin:2px auto 0;display:block;transform:rotate(45deg)}.danger-caption{color:var(--danger)}.settings-meta{color:var(--muted);gap:4px;margin-top:14px;font-size:11px;display:grid}.hidden-file-input{display:none}@media (min-width:768px){.app,.bottom-nav,.sheet,.import-sheet{max-width:720px}.donut-section{gap:32px}}.toast-stack{top:calc(env(safe-area-inset-top,12px) + 12px);z-index:500;pointer-events:none;gap:8px;width:min(390px,100% - 24px);display:grid;position:fixed;left:50%;transform:translate(-50%)}.toast{border:1px solid var(--border);background:var(--surface);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:var(--shadow-lg);pointer-events:auto;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;font-size:12px;display:flex}.toast-success{border-color:#00c47159;border-color:lab(69.8359% -57.9457 29.9591/.35)}.toast-error{border-color:#e6434359;border-color:lab(53.9062% 63.1954 38.5555/.35)}.toast-dismiss{color:var(--muted);cursor:pointer;background:0 0;border:none;font-size:18px;line-height:1}.sync-status{color:var(--muted);align-items:center;gap:6px;font-size:11px;display:inline-flex}.sync-status-dot{background:var(--muted);border-radius:50%;width:6px;height:6px}.sync-status-loading .sync-status-dot{background:var(--warning);animation:1.2s ease-in-out infinite sync-pulse}.sync-status-synced .sync-status-dot{background:var(--accent)}.sync-status-offline .sync-status-dot{background:var(--danger)}.sync-status-pending .sync-status-dot{background:var(--warning);animation:1.2s ease-in-out infinite sync-pulse}.sync-status-error .sync-status-dot{background:var(--danger);animation:1.2s ease-in-out infinite sync-pulse}@keyframes sync-pulse{0%,to{opacity:.45}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.sync-status-loading .sync-status-dot,.sync-status-pending .sync-status-dot,.sync-status-error .sync-status-dot{animation:none}}.sheet-overlay-high{z-index:320}.sheet-overlay-high .sheet,.sheet-overlay-high .ui-sheet-half,.sheet-overlay-high .ui-sheet-full{z-index:321}.ui-sheet-half{max-height:50dvh}.ui-sheet-full{max-height:92dvh}.confirm-copy{color:var(--muted);margin-bottom:16px;font-size:12px;line-height:1.5}.confirm-actions{grid-template-columns:1fr 1fr;gap:10px;display:grid}.form-error{color:var(--danger);margin-top:6px;font-size:11px}.fab-menu{right:20px;bottom:calc(80px + var(--safe-bottom));z-index:100;position:fixed}.fab-menu .fab{position:static}.fab-icon{transition:transform .35s cubic-bezier(.34,1.56,.64,1);display:inline-block}.fab-menu.open .fab-icon{transform:rotate(135deg)}.fab-action-sheet{border:1px solid var(--border);background:var(--surface);min-width:220px;box-shadow:var(--shadow-lg);transform-origin:100% 100%;opacity:0;pointer-events:none;border-radius:14px;transition:transform .3s cubic-bezier(.34,1.56,.64,1),opacity .2s;position:absolute;bottom:calc(100% + 10px);right:0;overflow:hidden;transform:scale(.85)translateY(8px)}.fab-menu.open .fab-action-sheet{opacity:1;pointer-events:auto;transform:scale(1)translateY(0)}.fab-action-item{border:none;border-bottom:1px solid var(--border);width:100%;color:var(--fg);text-align:left;cursor:pointer;opacity:0;background:0 0;gap:2px;padding:12px 14px;display:grid;transform:translate(12px)}.fab-menu.open .fab-action-item{opacity:1;transition:opacity .25s,transform .3s cubic-bezier(.34,1.56,.64,1),background .15s;transition-delay:calc(var(--fab-item-index,0) * 40ms + 50ms);transform:translate(0)}.fab-action-item:last-child{border-bottom:none}.fab-action-item strong{font-size:12px}.fab-action-item span{color:var(--muted);font-size:11px}.fab-action-item:active{background:var(--surface2);transform:scale(.98)}.card-head-actions{align-items:center;gap:8px;display:flex}.edit-mode-btn{border:1px solid var(--border);color:var(--muted);font:600 11px/1 var(--font-body);cursor:pointer;background:0 0;border-radius:999px;padding:6px 12px}.edit-mode-btn.active{border-color:var(--accent);background:var(--accent-dim);color:var(--accent)}.table-wrapper-sticky{position:relative}.table-wrapper-sticky .data-table th:first-child,.table-wrapper-sticky .data-table td:first-child{box-shadow:6px 0 10px color-mix(in srgb, var(--shadow-color) 9%, transparent)}.chart-empty{color:var(--muted);text-align:center;place-items:center;gap:10px;padding:28px 12px;display:grid}.planning-goals{gap:10px;margin-top:12px;display:grid}.planning-goal-row{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);padding:10px}.planning-goal-head{justify-content:space-between;gap:12px;margin-bottom:6px;font-size:12px;display:flex}.planning-goal-row small{color:var(--muted);margin-top:6px;font-size:11px;display:block}.planning-hero strong.positive,.planning-metric.positive strong{color:var(--accent)}.planning-hero strong.negative,.planning-metric.negative strong{color:var(--danger)}.planning-metric.warning strong{color:var(--warning)}.annual-budget-meta,.budget-month-meta{color:var(--muted);justify-content:space-between;gap:8px;margin-top:8px;font-size:11px;display:flex}.budget-card-list{gap:10px;display:grid}.budget-month-card{border:1px solid var(--border);background:var(--bg);border-radius:14px;padding:12px}.budget-month-card.over-budget{border-color:#e6434359;border-color:lab(53.9062% 63.1954 38.5555/.35)}.budget-month-head{justify-content:space-between;gap:12px;display:flex}.budget-month-head h3{font:700 15px/1.2 var(--font-display)}.budget-month-head p{color:var(--muted);margin-top:4px;font-size:11px}.budget-month-actions{justify-content:flex-end;gap:12px;margin-top:10px;display:flex}.danger-text{color:var(--danger)}.goal-flag-icon{width:18px;height:18px;color:var(--warning)}.goal-manager-head>div{align-items:center;gap:8px;display:flex}.alignment-banner{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);text-align:left;gap:4px;width:100%;margin-top:10px;padding:10px 12px;display:grid}.alignment-banner strong{font-size:12px}.alignment-banner span,.alignment-banner small{color:var(--muted);font-size:11px}.alignment-banner.warning{border-color:color-mix(in srgb, var(--warning) 35%, var(--border));background:color-mix(in srgb, var(--warning) 8%, var(--bg))}.alignment-banner.positive{border-color:color-mix(in srgb, var(--accent) 35%, var(--border))}.budget-alert{cursor:pointer}.alignment-banner.info{border-color:color-mix(in srgb, var(--info) 30%, var(--border));background:color-mix(in srgb, var(--info) 8%, var(--bg))}.planning-params{color:var(--muted);flex-wrap:wrap;gap:6px 10px;margin-top:10px;font-size:11px;display:flex}.planning-paired-hint{color:var(--muted);margin-top:8px;font-size:11px}.planning-paired-hint.warning{color:var(--warning)}.month-delete-btn{color:var(--danger);margin:4px auto 0;font-size:11px;display:block}.reconcile-summary,.reconcile-list{gap:8px;display:grid}.reconcile-row,.reconcile-list-item{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);gap:4px;padding:10px;display:grid}.reconcile-row span,.reconcile-list-metrics span{color:var(--muted);font-size:11px}.reconcile-gap{border-radius:var(--radius-sm);border:1px solid var(--border);padding:12px}.reconcile-gap.warning{border-color:color-mix(in srgb, var(--warning) 35%, var(--border))}.reconcile-list-head{justify-content:space-between;align-items:center;display:flex}.reconcile-list-metrics{flex-wrap:wrap;gap:8px;display:flex}.reconcile-toggle{border-radius:var(--radius-sm);background:var(--surface2);width:100%;color:var(--accent);font:600 12px/1 var(--font-body);cursor:pointer;border:none;margin-top:10px;padding:8px;display:block}.close-step-actions{gap:10px;margin-top:16px;display:flex}.close-step-actions .btn-submit,.close-step-actions .btn-secondary{flex:1}.planning-screen .family-hub{flex-direction:column;gap:16px;display:flex}.planning-screen .family-glass-panel{background:var(--gradient-card);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);padding:20px}.planning-screen .family-hub-tabs{background:var(--surface);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);gap:4px;padding:4px;display:flex}.planning-screen .family-tab-btn{color:var(--muted);font:500 14px/20px var(--font-body);border-radius:var(--radius-xs);cursor:pointer;background:0 0;border:none;flex:1;padding:8px 12px;transition:background .2s,color .2s,box-shadow .2s}.planning-screen .family-tab-btn:hover{color:var(--fg-secondary)}.planning-screen .family-tab-btn.active{background:var(--surface2);color:var(--fg);box-shadow:var(--shadow-sm);font-weight:600}.planning-screen .family-label-caps{font:600 12px/16px var(--font-body);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin:0 0 12px}.planning-screen .family-label-secondary{color:var(--accent)}.planning-screen .family-label-primary{color:var(--accent-bright)}.planning-screen .family-all-layout{padding-left:44px;position:relative}.planning-screen .family-month-rail{left:max(8px, env(safe-area-inset-left,0px));z-index:30;background:color-mix(in oklch, var(--surface) 92%, transparent);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-subtle);box-shadow:var(--shadow-md);pointer-events:auto;border-radius:999px;flex-direction:column;align-items:center;gap:8px;padding:6px;display:flex;position:fixed;top:50%;transform:translateY(-50%)}.planning-screen .family-month-rail-btn{width:32px;height:32px;color:var(--muted);font:600 11px/1 var(--font-body);letter-spacing:.05em;cursor:pointer;background:0 0;border:none;border-radius:999px;transition:background .2s,color .2s}.planning-screen .family-month-rail-btn:hover{background:var(--border-subtle)}.planning-screen .family-month-rail-btn.active{background:var(--accent-dim);color:var(--accent);box-shadow:none}.planning-screen .family-month-rail-divider{background:color-mix(in srgb, var(--border) 30%, transparent);width:1px;height:16px}.planning-screen .family-month-rail-expand{width:32px;height:32px;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:999px;justify-content:center;align-items:center;transition:color .2s,background .2s;display:inline-flex}.planning-screen .family-month-rail-expand:hover{color:var(--accent);background:var(--accent-dim)}.planning-screen .family-month-rail-expand svg{width:18px;height:18px}.planning-screen .family-all-timeline{flex-direction:column;gap:16px;min-width:0;display:flex}.planning-screen .family-hub-tabs-triple .family-tab-btn{padding:8px 6px;font-size:12px}.planning-screen .family-hub-tabs-quad .family-tab-btn{padding:8px 4px;font-size:12px}.planning-screen .family-hub-tabs-multi .family-tab-btn{flex:1 1 0;padding:8px 4px;font-size:12px}.planning-screen .family-all-subtitle{margin-top:24px}.planning-screen .family-month-section{scroll-margin-top:16px}.planning-screen .family-month-section+.family-month-section{margin-top:28px}.planning-screen .family-month-heading{font:600 16px/24px var(--font-display);color:var(--fg);margin:0 0 16px}.planning-screen .family-month-pending+.family-month-completed{margin-top:20px}.planning-screen .family-month-pending h5,.planning-screen .family-month-completed h5{margin:0 0 12px}.planning-screen .family-calendar-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.planning-screen .family-calendar-head strong{font:600 16px/24px var(--font-body);color:var(--fg)}.planning-screen .family-calendar-nav{border-radius:var(--radius-xs);background:var(--surface2);width:32px;height:32px;color:var(--fg-secondary);cursor:pointer;border:none;font-size:18px;transition:background .2s,color .2s}.planning-screen .family-calendar-nav:hover{background:var(--surface3);color:var(--fg)}.planning-screen .family-calendar-weekdays,.planning-screen .family-calendar-grid{grid-template-columns:repeat(7,1fr);gap:8px 4px;display:grid}.planning-screen .family-calendar-weekdays span{text-align:center;font:600 12px/16px var(--font-body);letter-spacing:.05em;color:var(--muted);padding:4px 0}.planning-screen .family-calendar-day{min-height:44px;color:var(--fg);font:400 14px/20px var(--font-body);cursor:pointer;background:0 0;border:none;flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex;position:relative}.planning-screen .family-calendar-day-num{justify-content:center;align-items:center;min-width:32px;min-height:32px;display:flex}.planning-screen .family-calendar-markers{flex-wrap:wrap;justify-content:center;align-items:center;gap:2px;min-height:14px;display:flex}.planning-screen .family-calendar-marker{border-radius:50%;flex-shrink:0;width:5px;height:5px}.planning-screen .family-calendar-marker.todo{background:var(--warning)}.planning-screen .family-calendar-marker.moment{background:var(--accent)}.planning-screen .family-calendar-mood,.planning-screen .family-calendar-anniv{flex-shrink:0;font-size:13px;line-height:1}.planning-screen .family-calendar-day.has-mood,.planning-screen .family-calendar-day.has-anniv{min-height:56px}.planning-screen .family-calendar-day.out-month{color:var(--border-subtle);cursor:default}.planning-screen .family-calendar-lunar{color:var(--muted);font-size:11px;line-height:1}.planning-screen .family-calendar-lunar.festival{color:var(--danger);font-weight:600}.planning-screen .family-calendar-day.has-festival .family-calendar-day-num{color:var(--danger)}.planning-screen .family-calendar-day.is-holiday:after{content:"";background:var(--danger);opacity:.6;border-radius:1px;width:16px;height:2px;position:absolute;bottom:2px;left:50%;transform:translate(-50%)}.planning-screen .family-calendar-day.is-workday:after{content:"";background:var(--muted);opacity:.5;border-radius:1px;width:16px;height:2px;position:absolute;bottom:2px;left:50%;transform:translate(-50%)}.planning-screen .family-calendar-marker.todo.overdue{background:var(--danger)}.planning-screen .family-calendar-day.in-month:hover:not(.selected){opacity:.85}.planning-screen .family-calendar-day.selected .family-calendar-day-num{border:1px solid var(--accent);border-radius:var(--radius-xs);background:var(--accent-dim);width:32px;height:32px;color:var(--accent);font-weight:600}.planning-screen .family-calendar-day.out-month .family-calendar-marker{opacity:.35}.planning-screen .family-day-panel{flex-direction:column;gap:16px;min-width:0;display:flex}.planning-screen .family-day-head{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;gap:8px;padding-bottom:12px;display:flex}.planning-screen .family-day-head h3{font:400 14px/20px var(--font-body);color:var(--muted);margin:0}.planning-screen .family-day-add-row{flex-shrink:0;align-items:center;gap:8px;display:flex}.planning-screen .family-day-add-btn{border:1px solid var(--accent);background:var(--accent-dim);color:var(--accent-bright);cursor:pointer;white-space:nowrap;border-radius:14px;min-height:32px;padding:6px 12px;font-size:12px;font-weight:600;transition:transform .15s}.planning-screen .family-day-add-btn.secondary{border-color:var(--border);color:var(--fg-secondary);background:0 0}.planning-screen .family-day-add-btn:active{transform:scale(.96)}.planning-screen .family-day-section h4{font:400 14px/20px var(--font-body);color:var(--muted);margin:0 0 12px}.planning-screen .family-day-mood{text-align:left;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;align-items:center;gap:12px;width:100%;padding:12px 14px;transition:border-color .2s,background .2s;display:flex}.planning-screen .family-day-mood:active{background:var(--surface2)}.planning-screen .family-day-mood-emoji{flex-shrink:0;font-size:28px;line-height:1}.planning-screen .family-day-mood-body{flex-direction:column;gap:2px;min-width:0;display:flex}.planning-screen .family-day-mood-body strong{font:600 15px/1.3 var(--font-body)}.planning-screen .family-day-mood-body span{color:var(--muted);font-size:13px}.planning-screen .family-day-anniv-list{gap:8px;display:grid}.planning-screen .family-day-anniv{text-align:left;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;align-items:center;gap:12px;width:100%;padding:12px 14px;transition:border-color .2s,background .2s,transform .15s;display:flex}.planning-screen .family-day-anniv:active{background:var(--surface2);transform:scale(.99)}.planning-screen .family-day-anniv-icon{flex-shrink:0;font-size:26px;line-height:1}.planning-screen .family-day-anniv-body{flex-direction:column;gap:2px;min-width:0;display:flex}.planning-screen .family-day-anniv-body strong{font:600 15px/1.3 var(--font-body)}.planning-screen .family-day-anniv-body span{color:var(--muted);font-size:13px}.planning-screen .family-all-panel{padding:20px}.planning-screen .family-all-section+.family-all-section{margin-top:24px}.planning-screen .family-empty{font:400 14px/20px var(--font-body);color:var(--muted);text-align:center;margin:0}.planning-screen .family-empty-hint{font:400 12px/18px var(--font-body);color:var(--muted);opacity:.7;margin-top:6px}.planning-screen .family-todo-list{gap:12px;margin:0;padding:0;list-style:none;display:grid}.planning-screen .family-todo-card{border:1px solid var(--border-subtle);border-radius:var(--radius-xs);background:var(--gradient-card);overflow-wrap:anywhere;flex-direction:column;gap:8px;min-width:0;padding:12px;display:flex}.planning-screen .family-todo-card.pending{border-left:3px solid var(--accent)}.planning-screen .family-todo-card.priority-high.pending{border-left-color:var(--danger)}.planning-screen .family-todo-card.priority-low.pending{border-left-color:var(--info)}.planning-screen .family-todo-card-main{align-items:flex-start;gap:10px;width:100%;display:flex;position:relative}.planning-screen .family-todo-card-body{flex:1 1 0;min-width:0}.planning-screen .family-todo-card-body .family-todo-title{word-break:break-word;overflow-wrap:anywhere;display:block}.planning-screen .family-todo-tags{flex-wrap:wrap;align-items:center;gap:6px;max-width:100%;margin-top:4px;display:flex}.planning-screen .family-todo-priority-tag{border-radius:4px;padding:3px 6px;font-size:11px;font-weight:600;line-height:1}.planning-screen .family-todo-priority-tag.high{background:var(--danger-dim);color:var(--danger)}.planning-screen .family-todo-priority-tag.low{background:var(--info-dim);color:var(--info)}.planning-screen .family-todo-recurrence-tag{color:var(--muted);font-size:12px}.planning-screen .family-todo-subtask-summary{background:var(--surface2);color:var(--text-secondary);cursor:pointer;border:none;border-radius:10px;padding:3px 8px;font-size:11px}.planning-screen .family-todo-completed-by{color:var(--muted);font-size:11px}.planning-screen .family-todo-subtasks{flex-direction:column;gap:6px;width:100%;margin:0;padding:0 0 0 28px;list-style:none;display:flex}.planning-screen .family-todo-subtask{align-items:center;gap:8px;display:flex}.planning-screen .family-todo-subtask-check{border:1.5px solid var(--border);cursor:pointer;width:20px;min-width:20px;height:20px;color:var(--accent);background:0 0;border-radius:5px;justify-content:center;align-items:center;display:flex}.planning-screen .family-todo-subtask-check.checked{background:var(--accent);border-color:var(--accent)}.planning-screen .family-todo-subtask-check svg{width:12px;height:12px}.planning-screen .family-todo-subtask-check:disabled{cursor:default;opacity:.6}.planning-screen .family-todo-subtask-title{color:var(--fg-secondary);font-size:12px}.planning-screen .family-todo-subtask-title.checked{opacity:.5;text-decoration:line-through}.planning-screen .family-filter-bar{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.planning-screen .family-filter-chip{border:1px solid var(--border-subtle);color:var(--fg-secondary);cursor:pointer;background:0 0;border-radius:16px;padding:6px 14px;font-size:12px}.planning-screen .family-filter-chip.active{background:var(--accent-dim);border-color:var(--accent);color:var(--accent-bright);font-weight:600}.planning-screen .family-search-bar{background:var(--gradient-card,var(--surface2));border:1px solid var(--border-subtle);border-radius:999px;align-items:center;gap:8px;height:40px;margin-bottom:12px;padding:0 12px;display:flex}.planning-screen .family-search-icon{width:16px;height:16px;color:var(--text-secondary);flex-shrink:0}.planning-screen .family-search-input{font:500 14px/1 var(--font-body);color:var(--fg,var(--family-on-surface));background:0 0;border:none;outline:none;flex:1;min-width:0}.planning-screen .family-search-input::placeholder{color:var(--text-tertiary)}.planning-screen .family-search-summary{font:500 12px/1.3 var(--font-body);color:var(--text-secondary);margin:0 0 12px}.planning-screen .family-search-group{flex-direction:column;gap:8px;margin-bottom:16px;display:flex}.planning-screen .family-search-group+.family-search-group{margin-top:8px}.planning-screen .family-subtask-list{flex-direction:column;gap:6px;margin-bottom:8px;display:flex}.planning-screen .family-subtask-row{background:var(--surface2);border-radius:var(--radius-xs);justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.planning-screen .family-subtask-title{color:var(--fg-secondary);font-size:12px}.planning-screen .family-subtask-remove{color:var(--danger);cursor:pointer;background:0 0;border:none;min-width:32px;min-height:32px;font-size:18px;line-height:1}.planning-screen .family-subtask-input-row{gap:8px;display:flex}.planning-screen .family-subtask-input{flex:1}.planning-screen .family-subtask-add{background:var(--accent-dim);color:var(--accent-bright);border-radius:var(--radius-xs);cursor:pointer;border:none;padding:0 16px;font-size:12px;font-weight:600}.planning-screen .family-add-pill.family-add-priority.active.high{background:var(--danger-dim);color:var(--danger)}.planning-screen .family-add-pill.family-add-priority.active.low{background:var(--info-dim);color:var(--info)}.planning-screen .family-add-pill.family-add-priority.active.medium{background:var(--surface3);color:var(--fg-secondary)}.planning-screen .family-todo-card.history{background:var(--surface);border-color:color-mix(in srgb, var(--border-subtle) 30%, transparent);border-left:4px solid var(--border-subtle);opacity:.7}.planning-screen .family-todo-check{border:1px solid var(--border);background:var(--bg);width:20px;height:20px;color:var(--bg);cursor:pointer;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;margin-top:2px;padding:0;transition:border-color .2s,background .2s;display:inline-flex}.planning-screen .family-todo-check.checked{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.planning-screen .family-todo-check svg{width:14px;height:14px}.planning-screen .family-todo-title{font:400 14px/20px var(--font-body);color:var(--fg)}.planning-screen .family-todo-card.checked .family-todo-title,.planning-screen .family-todo-card.history .family-todo-title{text-decoration:line-through}.planning-screen .owner-tag{width:fit-content;font:600 11px/1 var(--font-body);letter-spacing:.05em;border-radius:4px;padding:2px 8px;display:inline-flex}.planning-screen .owner-tag.kim{background:var(--accent-dim);color:var(--accent)}.planning-screen .owner-tag.enya{background:var(--purple-dim);color:var(--purple)}.planning-screen .owner-tag.both{background:var(--warning-dim);color:var(--warning)}.planning-screen .family-todo-card.overdue{border-color:var(--danger-glow)}.planning-screen .family-todo-date.overdue{color:var(--danger)}.planning-screen .family-todo-card.reorderable{cursor:default}.planning-screen .family-todo-card.dragging{opacity:.92;z-index:10;box-shadow:var(--shadow-glow-accent,0 8px 24px #00000038);cursor:grabbing}.planning-screen .family-todo-drag-handle{width:24px;height:36px;color:var(--text-tertiary);opacity:.7;cursor:grab;touch-action:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.planning-screen .family-todo-drag-handle svg{width:18px;height:18px}.planning-screen .family-todo-drag-handle:hover{opacity:1;color:var(--text-secondary)}.planning-screen .family-todo-drag-handle:active{cursor:grabbing}.planning-screen .family-todo-card{position:relative}.planning-screen .family-moment-comment-delete{color:var(--text-secondary);font:500 11px/1 var(--font-body);background:0 0;border:none;justify-content:center;align-items:center;min-width:36px;min-height:36px;margin-left:4px;padding:10px 6px;display:inline-flex}.planning-screen .family-expense-summary{flex-direction:column;gap:8px;margin-bottom:12px;padding:16px;display:flex}.planning-screen .family-expense-summary-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.planning-screen .family-expense-summary-head h3{font:600 15px/1.3 var(--font-body);margin:0}.planning-screen .family-expense-summary-head p{color:var(--text-secondary);font:500 12px/1.3 var(--font-body);margin:4px 0 0}.planning-screen .family-expense-summary-head strong{font:700 20px/1 var(--font-display)}.planning-screen .family-expense-summary-meta{color:var(--text-secondary);font:500 12px/1.4 var(--font-body);margin:0}.planning-screen .family-expense-summary-meta.over-budget{color:var(--danger)}.planning-screen .family-expense-summary-link{color:var(--accent);font:600 12px/1 var(--font-body);background:0 0;border:none;align-self:flex-start;padding:0}.planning-screen .family-anniversary-strip{gap:10px;margin-bottom:12px;padding:14px 16px}.planning-screen .family-anniversary-strip-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.planning-screen .family-anniversary-strip-head h3{font:600 14px/1.3 var(--font-body);margin:0}.planning-screen .family-anniversary-add{color:var(--accent);font:600 12px/1 var(--font-body);background:0 0;border:none;min-height:32px;padding:6px 4px}.planning-screen .family-anniversary-strip-list{-webkit-overflow-scrolling:touch;gap:10px;padding-bottom:2px;display:flex;overflow-x:auto}.planning-screen .family-anniversary-card{border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:var(--surface2,var(--family-surface-container-high));text-align:left;flex:none;align-items:center;gap:8px;min-width:120px;padding:10px 14px;display:flex}.planning-screen .family-anniversary-card.today{border-color:var(--accent);background:color-mix(in oklch, var(--accent) 12%, var(--surface2,transparent))}.planning-screen .family-anniversary-card-icon{font-size:22px;line-height:1}.planning-screen .family-anniversary-card-body{flex-direction:column;gap:2px;display:flex}.planning-screen .family-anniversary-card-body strong{font:600 13px/1.3 var(--font-body);color:var(--fg,var(--family-on-surface))}.planning-screen .family-anniversary-card-meta{font:500 11px/1.2 var(--font-body);color:var(--text-secondary)}.planning-screen .family-moment-album-wrap{flex-direction:column;gap:12px;display:flex}.planning-screen .family-moment-view-toggle{border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--border-subtle);align-self:flex-end;gap:0;padding:3px;display:flex}.planning-screen .family-moment-view-toggle button{color:var(--muted);font:500 13px/1 var(--font-body);border-radius:var(--radius-xs);cursor:pointer;background:0 0;border:none;padding:7px 16px;transition:color .2s,background .2s}.planning-screen .family-moment-view-toggle button.active{background:var(--accent-dim);color:var(--accent-bright);font-weight:600}.planning-screen .family-album{flex-direction:column;gap:4px;display:flex}.planning-screen .family-skill-view{flex-direction:column;gap:16px;min-width:0;display:flex}.planning-screen .family-skill-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.planning-screen .family-skill-filter{flex-wrap:wrap;gap:8px;display:flex}.planning-screen .family-skill-add-btn{border:1px solid var(--accent);background:var(--accent-dim);color:var(--accent-bright);font:600 13px/1 var(--font-body);cursor:pointer;white-space:nowrap;border-radius:999px;padding:8px 16px;transition:transform .15s}.planning-screen .family-skill-add-btn:active{transform:scale(.96)}.planning-screen .family-skill-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}@media (min-width:768px){.planning-screen .family-skill-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.planning-screen .family-skill-card{border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--gradient-card);box-shadow:var(--shadow-sm);flex-direction:column;gap:8px;min-width:0;padding:14px;display:flex}.planning-screen .family-skill-card-head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.planning-screen .family-skill-name{font:600 15px/1.3 var(--font-body);color:var(--fg);word-break:break-word;overflow-wrap:anywhere;flex:1;min-width:0}.planning-screen .family-skill-card-more{flex-shrink:0;position:relative}.planning-screen .family-skill-more-btn{width:28px;height:28px;color:var(--muted);border-radius:var(--radius-xs);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;transition:background .2s,color .2s;display:inline-flex}.planning-screen .family-skill-more-btn svg{width:18px;height:18px}.planning-screen .family-skill-more-btn:active{background:var(--surface2);color:var(--fg)}.planning-screen .family-skill-action-menu{z-index:20;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);min-width:88px;box-shadow:var(--shadow-lg);flex-direction:column;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);right:0}.planning-screen .family-skill-action-item{color:var(--fg);font:500 14px/1.4 var(--font-body);text-align:left;border-radius:var(--radius-xs);cursor:pointer;background:0 0;border:none;padding:9px 12px;transition:background .15s}.planning-screen .family-skill-action-item:active{background:var(--surface2)}.planning-screen .family-skill-action-item.danger{color:var(--danger)}.planning-screen .family-skill-meta{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.planning-screen .family-skill-level-tag{font:600 11px/1 var(--font-body);background:var(--surface2);color:var(--fg-secondary);border-radius:4px;padding:3px 8px}.planning-screen .family-skill-level-bar{gap:3px;display:flex}.planning-screen .family-skill-level-seg{background:var(--surface3);border-radius:3px;flex:1;height:6px;transition:background .2s}.planning-screen .family-skill-level-seg.filled{background:var(--accent)}.planning-screen .family-skill-note{color:var(--muted);word-break:break-word;overflow-wrap:anywhere;margin:0;font-size:12px;line-height:1.5}.planning-screen .family-diary-view{flex-direction:column;gap:16px;min-width:0;display:flex}.planning-screen .family-diary-list{flex-direction:column;gap:12px;display:flex}.planning-screen .family-diary-card{border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--gradient-card);box-shadow:var(--shadow-sm);flex-direction:column;gap:10px;min-width:0;padding:16px;display:flex}.planning-screen .family-diary-card-head{flex-direction:column;gap:8px;display:flex}.planning-screen .family-diary-card-title-row{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.planning-screen .family-diary-title{font:600 16px/1.4 var(--font-body);color:var(--fg);word-break:break-word;overflow-wrap:anywhere;flex:1;min-width:0}.planning-screen .family-diary-meta{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.planning-screen .family-diary-date{font:500 12px/1 var(--font-body);color:var(--muted)}.planning-screen .family-diary-mood{font-size:16px;line-height:1}.planning-screen .family-diary-content{min-width:0;overflow:hidden}.planning-screen .family-diary-content.collapsed{max-height:160px;-webkit-mask-image:linear-gradient(#000 70%,#0000);mask-image:linear-gradient(#000 70%,#0000)}.planning-screen .family-diary-toggle{color:var(--accent-bright);font:600 13px/1 var(--font-body);cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:4px 0}.markdown-body{color:var(--fg);word-break:break-word;overflow-wrap:anywhere;font-size:14px;line-height:1.7}.markdown-body h1,.markdown-body h2,.markdown-body h3{margin:1em 0 .5em;font-weight:700;line-height:1.3}.markdown-body h1{font-size:1.4em}.markdown-body h2{font-size:1.25em}.markdown-body h3{font-size:1.1em}.markdown-body p{margin:.5em 0}.markdown-body ul,.markdown-body ol{margin:.5em 0;padding-left:1.5em}.markdown-body li{margin:.25em 0}.markdown-body code{font-family:var(--font-mono,monospace);background:var(--surface2);border-radius:4px;padding:2px 5px;font-size:.875em}.markdown-body pre{background:var(--surface2);border-radius:var(--radius-xs);margin:.75em 0;padding:12px;overflow-x:auto}.markdown-body pre code{background:0 0;padding:0}.markdown-body blockquote{border-left:3px solid var(--accent);color:var(--fg-secondary);margin:.75em 0;padding:.5em 0 .5em 1em}.markdown-body a{color:var(--accent-bright);text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body table{border-collapse:collapse;width:100%;margin:.75em 0;font-size:13px}.markdown-body th,.markdown-body td{border:1px solid var(--border-subtle);text-align:left;padding:6px 10px}.markdown-body th{background:var(--surface2);font-weight:600}.markdown-body img{border-radius:var(--radius-xs);max-width:100%}.markdown-body hr{border:none;border-top:1px solid var(--border-subtle);margin:1em 0}.family-add-preview-toolbar{justify-content:flex-end;margin-bottom:4px;display:flex}.family-add-preview-toggle{border:1px solid var(--border);color:var(--muted);font:500 12px/1 var(--font-body);cursor:pointer;background:0 0;border-radius:999px;padding:6px 12px;transition:background .15s,color .15s}.family-add-preview-toggle.active{background:var(--accent-dim);color:var(--accent-bright);border-color:var(--accent)}.family-moment-preview{border:1px solid var(--border-subtle);border-radius:var(--radius-xs);background:var(--surface);min-height:120px;padding:12px}.family-moment-preview-empty{color:var(--muted);font-size:13px}.planning-screen .family-album-grid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.planning-screen .family-album-photo{aspect-ratio:1;border-radius:var(--radius-sm);background:var(--surface2,var(--family-surface-container-high));border:none;padding:0;display:block;position:relative;overflow:hidden}.planning-screen .family-album-photo img{object-fit:cover;width:100%;height:100%;display:block}.planning-screen .family-album-photo-meta{font:500 10px/1.2 var(--font-body);color:#fff;opacity:0;pointer-events:none;background:linear-gradient(#0000,#0000008c);justify-content:space-between;align-items:center;gap:4px;padding:14px 6px 4px;transition:opacity .15s;display:flex;position:absolute;inset:auto 0 0}.planning-screen .family-album-photo:hover .family-album-photo-meta,.planning-screen .family-album-photo:focus-visible .family-album-photo-meta{opacity:1}@media (hover:none){.planning-screen .family-album-photo-meta{opacity:1}}.planning-screen .family-album-locate{left:50%;bottom:calc(96px + var(--safe-bottom,0px));z-index:30;font:600 13px/1 var(--font-body);color:#fff;background:var(--accent);box-shadow:var(--shadow-glow-accent,0 4px 16px #0003);border:none;border-radius:999px;padding:10px 20px;position:fixed;transform:translate(-50%)}.planning-screen .family-todo-card-side{flex-direction:row;flex-shrink:0;align-self:flex-start;align-items:center;gap:4px;display:flex;position:relative}.planning-screen .family-todo-more-btn{width:32px;height:32px;color:var(--muted);border-radius:var(--radius-xs);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;transition:background .2s,color .2s;display:inline-flex}.planning-screen .family-todo-more-btn svg{width:20px;height:20px}.planning-screen .family-todo-more-btn:active{background:var(--surface2);color:var(--fg)}.planning-screen .family-todo-action-menu{z-index:20;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);min-width:96px;box-shadow:var(--shadow-lg);flex-direction:column;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);right:0}.planning-screen .family-todo-action-item{color:var(--fg);font:500 14px/1.4 var(--font-body);text-align:left;border-radius:var(--radius-xs);cursor:pointer;background:0 0;border:none;padding:10px 12px;transition:background .15s}.planning-screen .family-todo-action-item:active:not(:disabled){background:var(--surface2)}.planning-screen .family-todo-action-item.danger{color:var(--danger)}.planning-screen .family-todo-action-item:disabled{opacity:.4;cursor:not-allowed}.planning-screen .family-todo-date{color:var(--muted);align-items:center;gap:4px;min-width:0;max-width:100%;font-size:11px;display:inline-flex}.planning-screen .family-todo-date.overdue{color:var(--danger);font-weight:600}.planning-screen .family-todo-date svg{flex-shrink:0;width:12px;height:12px}.planning-screen .family-todo-due{color:var(--muted);white-space:nowrap;font-size:11px}.planning-screen .family-todo-due.overdue{color:var(--danger);font-weight:600}.planning-screen .family-moment-delete{color:var(--muted);font:400 14px/20px var(--font-body);cursor:pointer;background:0 0;border:none;transition:color .2s}.planning-screen .family-moment-delete:hover{color:var(--danger)}.planning-screen .family-date-divider{align-items:center;gap:8px;margin:4px 0 12px;display:flex}.planning-screen .family-date-divider span{background:var(--border-subtle);flex:1;height:1px}.planning-screen .family-date-divider strong{font:600 11px/1 var(--font-body);letter-spacing:.05em;color:var(--muted);white-space:nowrap}.planning-screen .family-history-items{gap:12px;display:grid}.planning-screen .family-moment-timeline{border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--gradient-card);box-shadow:var(--shadow-sm);flex-direction:column;gap:12px;padding:16px;display:flex}.planning-screen .family-moment-timeline.pinned{border-color:var(--warning,var(--accent));box-shadow:var(--shadow-sm), 0 0 0 1px color-mix(in oklch, var(--warning,var(--accent)) 30%, transparent)}.planning-screen .family-moment-pin-badge{font:600 11px/1 var(--font-body);color:var(--warning,var(--accent));background:color-mix(in oklch, var(--warning,var(--accent)) 14%, transparent);border-radius:999px;align-self:flex-start;padding:4px 8px}.planning-screen .family-moment-timeline-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:8px;min-width:0;display:flex}.planning-screen .family-moment-mood-badge{color:var(--muted);font:600 12px/1 var(--font-body);letter-spacing:.05em;white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.planning-screen .family-moment-author-pill{border:1px solid var(--border);background:var(--surface2);color:var(--muted);font:600 11px/1 var(--font-body);letter-spacing:.05em;border-radius:999px;padding:2px 8px;display:inline-flex}.planning-screen .family-moment-author-pill.kim{border-color:color-mix(in oklch, var(--accent) 35%, transparent);background:var(--accent-dim);color:var(--accent)}.planning-screen .family-moment-author-pill.enya{border-color:color-mix(in oklch, var(--purple) 35%, transparent);background:var(--purple-dim);color:var(--purple)}.planning-screen .family-moment-timeline-time{color:var(--muted);flex-shrink:0;align-items:center;gap:4px;font-size:11px;display:inline-flex}.planning-screen .family-moment-timeline-time svg{width:12px;height:12px;color:var(--accent)}.planning-screen .family-moment-timeline-content{word-break:break-word;overflow-wrap:anywhere;margin:0}.planning-screen .family-moment-timeline-images{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.planning-screen .family-moment-audio{margin-top:4px}.planning-screen .family-moment-audio audio{width:100%}.planning-screen .family-moment-audio-duration{color:var(--muted);margin-bottom:4px;font-size:12px;display:block}.planning-screen .family-moment-timeline-bar{border-top:1px solid var(--border-subtle);justify-content:space-between;align-items:center;gap:12px;margin-top:4px;padding-top:12px;display:flex}.planning-screen .family-moment-timeline-actions{align-items:center;gap:16px;display:flex}.planning-screen .family-moment-action-btn{color:var(--muted);font:600 12px/1 var(--font-body);letter-spacing:.05em;cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:0;transition:color .2s,transform .2s;display:inline-flex}.planning-screen .family-moment-action-btn svg{width:18px;height:18px}.planning-screen .family-moment-action-btn:hover,.planning-screen .family-moment-action-btn.active{color:var(--accent)}.planning-screen .family-moment-action-btn:active svg{transform:scale(1.08)}.planning-screen .family-moment-timeline-more{position:relative}.planning-screen .family-moment-timeline-menu{border:1px solid var(--border-subtle);background:var(--surface);min-width:88px;box-shadow:var(--shadow-lg);z-index:3;border-radius:8px;position:absolute;bottom:calc(100% + 6px);right:0;overflow:hidden}.planning-screen .family-moment-timeline-menu button{width:100%;color:var(--danger);font:400 14px/20px var(--font-body);text-align:left;cursor:pointer;background:0 0;border:none;padding:10px 12px}.planning-screen .family-moment-timeline-menu button.family-moment-timeline-menu-edit{color:var(--fg)}.planning-screen .family-moment-timeline-menu button.family-moment-timeline-menu-edit:hover{background:color-mix(in srgb, var(--fg) 8%, transparent)}.planning-screen .family-moment-timeline-menu button:hover{background:color-mix(in srgb, var(--danger) 10%, transparent)}.planning-screen .family-moment-timeline-comments{gap:10px;padding-top:4px;display:grid}.planning-screen .family-moment-feed{gap:12px;display:grid}.planning-screen .family-moment-compact{border:1px solid var(--border-subtle);border-radius:var(--radius-xs);background:var(--gradient-card);padding:12px}.planning-screen .family-moment-compact-head{align-items:center;gap:8px;margin-bottom:8px;display:flex}.planning-screen .family-moment-compact-time{color:var(--muted);margin-left:auto;font-size:11px}.planning-screen .family-moment-compact-content{font:400 14px/20px var(--font-body);color:var(--fg);white-space:pre-wrap;margin:0}.planning-screen .family-moment-compact-images{grid-template-columns:repeat(3,1fr);gap:4px;margin-top:8px;display:grid}.planning-screen .family-moment-image-btn{cursor:pointer;background:0 0;border:none;border-radius:4px;padding:0;overflow:hidden}.planning-screen .family-moment-image-btn img{aspect-ratio:1;object-fit:cover;width:100%;display:block}.planning-screen .family-moment-expand-btn{color:var(--accent);font:500 12px/1 var(--font-body);cursor:pointer;background:0 0;border:none;margin-top:8px;padding:0}.planning-screen .family-moment-compact-interactions{border-top:1px solid color-mix(in srgb, var(--border-subtle) 50%, transparent);margin-top:10px;padding-top:10px}.planning-screen .family-like-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px}.planning-screen .family-like-btn.active{color:var(--accent)}.planning-screen .family-moment-likes{border-radius:var(--radius-xs);background:var(--surface2);color:var(--fg-secondary);margin:8px 0;padding:8px 10px;font-size:11px}.planning-screen .family-moment-comments{gap:6px;margin:0 0 8px;padding:0;list-style:none;display:grid}.planning-screen .family-moment-comments li{background:var(--border-subtle);color:var(--fg);word-break:break-word;overflow-wrap:anywhere;border-radius:4px;min-width:0;padding:8px 10px;font-size:11px;line-height:1.45}.planning-screen .family-moment-comments strong{margin-right:6px}.planning-screen .family-moment-comments span{word-break:break-word}.planning-screen .family-moment-comment-form{gap:8px;min-width:0;display:flex}.planning-screen .family-moment-comment-form input{border:1px solid var(--border-subtle);border-radius:var(--radius-xs);background:var(--surface);min-width:0;color:var(--fg);flex:1 1 0;padding:8px 10px;font-size:12px}.planning-screen .family-moment-comment-form button{border:1px solid var(--border-subtle);border-radius:var(--radius-xs);background:var(--accent-dim);color:var(--accent);cursor:pointer;padding:0 12px;font-size:11px}.planning-screen .family-image-preview{z-index:120;background:var(--media-overlay-bg-strong);justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.planning-screen .family-image-preview img{object-fit:contain;max-width:100%;max-height:100%}.planning-screen .family-image-preview-nav{background:var(--media-overlay-control);width:44px;min-width:44px;height:44px;color:var(--media-overlay-fg);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:28px;line-height:1;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.planning-screen .family-image-preview-nav.prev{left:16px}.planning-screen .family-image-preview-nav.next{right:16px}.planning-screen .family-image-preview-nav:disabled{opacity:.3;cursor:default}.planning-screen .family-image-preview-counter{color:color-mix(in srgb, var(--media-overlay-fg) 80%, transparent);font-size:12px;position:absolute;bottom:24px;left:50%;transform:translate(-50%)}.planning-screen .family-image-preview-close{background:var(--media-overlay-control);width:40px;min-width:40px;height:40px;color:var(--media-overlay-fg);cursor:pointer;border:none;border-radius:50%;font-size:24px;line-height:1;position:absolute;top:16px;right:16px}.family-fab.fab-menu{right:18px;bottom:calc(84px + var(--safe-bottom))}.family-fab.fab-menu .fab{background:var(--gradient-accent);width:50px;height:50px;color:var(--on-accent);box-shadow:var(--shadow-md), var(--shadow-glow-accent);border:none;border-radius:50%;font-size:24px;font-weight:300;line-height:1}.family-fab.fab-menu .fab:hover{opacity:.95}.family-fab.fab-menu.open .fab{background:var(--surface2);color:var(--fg);border:1px solid var(--border-subtle)}.family-fab.fab-menu .fab-action-sheet{border-color:var(--border-subtle);background:var(--gradient-card);bottom:60px}.family-fab.fab-menu .fab-action-item{color:var(--fg)}.family-fab.fab-menu .fab-action-item span{color:var(--muted)}.family-moment-upload-preview{grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px;display:grid}.family-moment-upload-item{position:relative}.family-moment-upload-item img{aspect-ratio:1;object-fit:cover;border-radius:var(--radius-xs);width:100%}.family-moment-upload-item button{background:var(--media-overlay-bg);color:var(--media-overlay-fg);cursor:pointer;border:none;border-radius:999px;padding:2px 6px;font-size:11px;position:absolute;top:4px;right:4px}.financial-planning-section{border-bottom:1px solid var(--border-subtle);margin-bottom:18px;padding-bottom:18px}.financial-planning-toggle{border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--bg);text-align:left;cursor:pointer;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:14px 16px;display:flex}.financial-planning-toggle h3{margin:0 0 4px;font-size:14px}.financial-planning-toggle p{color:var(--muted);margin:0;font-size:11px}.financial-planning-toggle span{color:var(--accent);white-space:nowrap;font-size:11px}.financial-planning-body{gap:12px;margin-top:12px;display:grid}.financial-planning-body .card{margin:0}.sheet.family-add-sheet{flex-direction:column;max-height:92dvh;padding:12px 20px 0;display:flex;overflow:hidden}.sheet.family-add-sheet>h3{text-align:center;flex-shrink:0;margin-bottom:12px}.sheet.family-add-sheet>.family-add-form{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.family-add-body{-webkit-overflow-scrolling:touch;flex-direction:column;flex:1;gap:16px;padding:0 0 16px;display:flex;overflow-y:auto}.family-add-segment{border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--border-subtle);padding:4px;display:flex;position:relative}.family-add-segment-indicator{border-radius:var(--radius-xs);background:var(--surface2);border:1px solid var(--border-subtle);width:calc(25% - 1.2px);height:calc(100% - 8px);box-shadow:var(--shadow-sm);pointer-events:none;transition:transform .25s cubic-bezier(.16,1,.3,1);position:absolute;top:4px;left:4px}.family-add-segment-indicator.moment{transform:translate(100%)}.family-add-segment-indicator.anniversary{transform:translate(200%)}.family-add-segment-indicator.skill{transform:translate(300%)}.family-add-segment-btn{z-index:1;color:var(--muted);font:500 14px/20px var(--font-body);cursor:pointer;background:0 0;border:none;flex:1;padding:12px 8px;transition:color .2s;position:relative}.family-add-segment-btn.active{color:var(--fg)}.family-add-forms{flex-direction:column;gap:16px;display:flex}.family-add-field-card{border-radius:var(--radius-sm);background:var(--gradient-card);border:1px solid var(--border-subtle);flex-direction:column;gap:8px;padding:20px;display:flex}.family-add-field-card label,.family-add-field-label{font:400 14px/20px var(--font-body);color:var(--muted)}.family-add-field-card input,.family-add-field-card textarea{border:none;border-bottom:1px solid var(--border-subtle);width:100%;color:var(--fg);font:400 16px/24px var(--font-body);background:0 0;outline:none;padding:8px 0}.family-add-field-card input:focus,.family-add-field-card textarea:focus{border-bottom-color:var(--accent)}.family-add-field-card input[type=date],.family-add-field-card input[type=time],.family-add-field-card input[type=datetime-local]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.family-add-field-card textarea{resize:none;min-height:96px}.family-add-pill-row{flex-wrap:wrap;gap:12px;display:flex}.family-add-mood-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;display:grid}.family-add-mood-btn{border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--surface);color:var(--muted);cursor:pointer;flex-direction:column;align-items:center;gap:6px;padding:12px 4px;transition:border-color .2s,background .2s,color .2s,transform .15s;display:flex}.family-add-mood-btn.active{border-color:var(--accent);background:var(--accent-dim);color:var(--accent)}.family-add-mood-btn:active{transform:scale(.94)}.family-add-mood-emoji{font-size:28px;line-height:1}.family-add-mood-label{font:600 11px/1 var(--font-body)}.family-add-pill{border:1px solid var(--border-subtle);color:var(--muted);font:600 12px/1 var(--font-body);letter-spacing:.05em;cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:4px;padding:8px 16px;transition:border-color .2s,background .2s,color .2s,transform .15s;display:inline-flex}.family-add-pill:active{transform:scale(.96)}.family-add-pill.active{border-color:color-mix(in oklch, var(--accent) 50%, transparent);background:var(--accent-dim);color:var(--accent-bright);font-weight:700}.family-add-pill.active.kim,.family-add-pill.active.both{border-color:color-mix(in oklch, var(--accent) 50%, transparent);background:var(--accent-dim);color:var(--accent-bright)}.family-add-pill.active.enya{border-color:color-mix(in oklch, var(--purple) 50%, transparent);background:var(--purple-dim);color:var(--purple)}.family-add-image-grid{grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px;display:grid}.family-add-image-item{aspect-ratio:1;position:relative}.family-add-image-item img{object-fit:cover;border-radius:var(--radius-xs);width:100%;height:100%}.family-add-image-item button{background:var(--media-overlay-bg);color:var(--media-overlay-fg);cursor:pointer;border:none;border-radius:999px;padding:2px 6px;font-size:11px;position:absolute;top:4px;right:4px}.family-add-image-add{aspect-ratio:1;border:2px dashed var(--border);border-radius:var(--radius-xs);color:var(--muted);cursor:pointer;background:0 0;flex-direction:column;justify-content:center;align-items:center;gap:4px;transition:border-color .2s,color .2s,background .2s;display:flex}.family-add-image-add:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}.family-add-image-add span{font-size:22px;line-height:1}.family-add-image-add small{font-size:11px}.family-add-audio-record{border:2px dashed var(--border);border-radius:var(--radius-xs);width:100%;color:var(--muted);cursor:pointer;background:0 0;padding:12px;transition:border-color .2s,color .2s,background .2s}.family-add-audio-record:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}.family-add-audio-record:disabled{opacity:.6;cursor:not-allowed}.family-add-audio-preview{flex-direction:column;gap:8px;display:flex}.family-add-audio-preview audio{width:100%}.family-add-audio-meta{color:var(--muted);font-size:12px}.family-add-audio-preview button{border:1px solid var(--border);border-radius:var(--radius-xs);color:var(--muted);cursor:pointer;background:0 0;align-self:flex-start;padding:6px 12px;font-size:12px}.family-add-audio-recording{border-radius:var(--radius-xs);background:var(--accent-dim);align-items:center;gap:10px;padding:12px;display:flex}.family-add-audio-dot{background:#ef4444;border-radius:50%;width:10px;height:10px;animation:1s ease-in-out infinite family-audio-pulse}@keyframes family-audio-pulse{0%,to{opacity:1}50%{opacity:.3}}.family-add-audio-timer{font-variant-numeric:tabular-nums;color:var(--text);flex:1;font-size:14px}.family-add-audio-recording button{border-radius:var(--radius-xs);color:#fff;cursor:pointer;background:#ef4444;border:none;padding:6px 14px;font-size:12px}.family-add-footer{padding:12px 0 calc(16px + var(--safe-bottom));background:var(--surface);border-top:1px solid var(--border-subtle);flex-shrink:0;gap:12px;margin-top:auto;display:flex}.family-add-submit{border-radius:var(--radius-sm);background:var(--gradient-accent);color:var(--on-accent);font:600 16px/24px var(--font-body);cursor:pointer;box-shadow:var(--shadow-md), var(--shadow-glow-accent);border:none;flex:1;padding:16px;transition:transform .2s,opacity .2s}.family-add-submit:active{transform:scale(.98)}.family-add-submit:disabled{opacity:.6;cursor:not-allowed}.family-add-delete{border:1px solid color-mix(in oklch, var(--danger) 45%, transparent);border-radius:var(--radius-sm);background:var(--danger-dim);color:var(--danger);font:600 16px/24px var(--font-body);cursor:pointer;flex-shrink:0;padding:16px 24px;transition:transform .15s,background .2s}.family-add-delete:active{transform:scale(.96)}.family-fab-trigger{right:18px;bottom:calc(84px + var(--safe-bottom));z-index:100;background:var(--gradient-accent);width:50px;height:50px;color:var(--on-accent);box-shadow:var(--shadow-md), var(--shadow-glow-accent);cursor:pointer;border:none;border-radius:50%;font-size:24px;font-weight:300;line-height:1;transition:transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s;position:fixed}.family-fab-trigger:active{transform:scale(.92)}.planning-screen .family-month-rail{left:max(8px, calc((100vw - var(--app-max-width)) / 2 + 8px))}.fab,.fab-menu,.family-fab-trigger,.family-fab.fab-menu{right:max(18px, calc((100vw - var(--app-max-width)) / 2 + 18px))}.asset-returns-module{gap:12px;display:grid}.asset-empty-hero{text-align:center;flex-direction:column;align-items:center;gap:8px;padding:28px 16px;display:flex}.asset-empty-title{font:700 16px/1.4 var(--font-display);color:var(--text);margin:0}.asset-empty-desc{color:var(--muted);margin:0 0 12px;font-size:13px;line-height:1.5}.asset-empty-btn{max-width:220px}.asset-hero-card{flex-direction:column;gap:16px;display:flex}.asset-hero-top{justify-content:space-between;align-items:center;gap:12px;display:flex}.asset-year-switcher{align-items:center;gap:10px;display:flex}.year-nav-btn{color:#ffffffe6;color:lab(100% 0 0/.9);width:32px;height:32px;font:700 18px/1 var(--font-body);cursor:pointer;background:#ffffff1a;background:lab(100% 0 0/.1);border:1px solid #ffffff40;border:1px solid lab(100% 0 0/.25);border-radius:50%;justify-content:center;align-items:center;transition:background .15s,opacity .15s;display:flex}.year-nav-btn:hover:not(:disabled){background:#fff3;background:lab(100% 0 0/.2)}.year-nav-btn:disabled{opacity:.3;cursor:not-allowed}.asset-year-label{font:700 18px/1 var(--font-display);color:var(--hero-banner-fg,#fff);text-align:center;min-width:72px}.asset-hero-add{color:#fffffff2;color:lab(100% 0 0/.95);background:#ffffff2e;background:lab(100% 0 0/.18);border:1px solid #ffffff40;border:1px solid lab(100% 0 0/.25)}.asset-hero-add:hover{background:#ffffff47;background:lab(100% 0 0/.28)}.asset-hero-figures{grid-template-columns:1fr 1fr;gap:12px;display:grid}.asset-hero-figure{flex-direction:column;gap:6px;display:flex}.asset-figure-label{font:600 12px/1 var(--font-body);color:#ffffffb3;color:lab(100% 0 0/.7)}.asset-figure-value{font:700 28px/1.1 var(--font-display);font-variant-numeric:tabular-nums;color:var(--hero-banner-fg,#fff)}.asset-figure-value.pos{color:#79ec80;color:lab(84.7927% -50.4712 41.6178)}.asset-figure-value.neg{color:#ff9d95;color:lab(74.8266% 62.8259 36.4877)}.asset-hero-annualized{border-top:1px solid #ffffff26;border-top:1px solid lab(100% 0 0/.15);align-items:center;gap:8px;padding-top:14px;display:flex}.asset-annualized-item{text-align:center;flex-direction:column;flex:1;gap:4px;display:flex}.asset-annualized-label{font:600 11px/1 var(--font-body);color:#fff9;color:lab(100% 0 0/.6)}.asset-annualized-value{font:700 16px/1 var(--font-mono);font-variant-numeric:tabular-nums;color:#fffffff2;color:lab(100% 0 0/.95)}.asset-annualized-value.pos{color:#79ec80;color:lab(84.7927% -50.4712 41.6178)}.asset-annualized-value.neg{color:#ff9d95;color:lab(74.8266% 62.8259 36.4877)}.asset-annualized-divider{background:#ffffff26;background:lab(100% 0 0/.15);align-self:stretch;width:1px}.asset-hero-total-row{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.asset-total-label{font:600 12px/1 var(--font-body);color:#ffffffb3;color:lab(100% 0 0/.7)}.asset-total-value{font:700 18px/1 var(--font-mono);font-variant-numeric:tabular-nums;color:#fffffff2;color:lab(100% 0 0/.95)}.asset-total-value.pos{color:#79ec80;color:lab(84.7927% -50.4712 41.6178)}.asset-total-value.neg{color:#ff9d95;color:lab(74.8266% 62.8259 36.4877)}.asset-hero-empty{text-align:center;flex-direction:column;align-items:center;gap:14px;padding:20px 0 8px;display:flex}.asset-hero-empty p{color:#fffc;color:lab(100% 0 0/.8);margin:0;font-size:14px}.asset-hero-add-btn{color:#fffffff2;color:lab(100% 0 0/.95);border-radius:var(--radius-md);font:700 13px/1 var(--font-body);cursor:pointer;background:#ffffff26;background:lab(100% 0 0/.15);border:1px solid #ffffff4d;border:1px solid lab(100% 0 0/.3);padding:8px 20px}.asset-hero-add-btn:hover{background:#ffffff40;background:lab(100% 0 0/.25)}.asset-yearly-list{gap:8px;margin-top:4px;display:grid}.asset-yearly-item{border:1px solid var(--border);background:var(--bg);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;border-radius:14px;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:12px 14px;transition:background .15s,border-color .15s;display:grid}.asset-yearly-item:hover{border-color:var(--accent)}.asset-yearly-item.pressing{background:var(--danger-dim);border-color:var(--danger)}.asset-yearly-year{font:700 15px/1.25 var(--font-display);color:var(--text)}.asset-yearly-total{font:600 13px/1 var(--font-mono);font-variant-numeric:tabular-nums;color:var(--muted)}.asset-yearly-rate{font:700 16px/1 var(--font-mono);font-variant-numeric:tabular-nums}.asset-yearly-rate.pos{color:var(--accent)}.asset-yearly-rate.neg{color:var(--danger)}.legend-item-muted{opacity:.45}.form-hint{color:var(--muted);margin:-4px 0 8px;font-size:11px}.asset-channel-list{gap:8px;margin-top:4px;display:grid}.asset-channel-row{grid-template-columns:1fr 120px auto;align-items:center;gap:8px;display:grid}.asset-channel-name-label{font:600 13px/1 var(--font-body);color:var(--text);padding:0 4px}.asset-channel-name{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font:600 13px/1 var(--font-body);padding:8px 10px}.asset-channel-name:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim);outline:none}.asset-channel-amount{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:right;padding:8px 10px}.asset-channel-amount:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim);outline:none}.asset-channel-remove{background:var(--danger-dim);width:28px;height:28px;color:var(--danger);cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;display:flex}.asset-channel-remove:hover{background:var(--danger);color:#fff}.asset-channel-add{border:1px dashed var(--border);color:var(--accent);border-radius:var(--radius-sm);font:600 13px/1 var(--font-body);cursor:pointer;background:0 0;width:100%;margin-top:8px;padding:8px}.asset-channel-add:hover{border-color:var(--accent);background:var(--accent-dim)}.asset-channel-sum{margin:8px 0 0}.backup-page{flex-direction:column;gap:16px;min-height:100%;display:flex}.backup-page.select-mode{padding-bottom:80px}.backup-header{align-items:center;gap:12px;padding:8px 0;display:flex}.backup-back-btn{border:1px solid var(--border);background:var(--bg);width:36px;height:36px;color:var(--text);font:700 20px/1 var(--font-body);cursor:pointer;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.backup-back-btn:hover{background:var(--accent-dim)}.backup-header h1{font:700 20px/1 var(--font-display);margin:0}.backup-create-btn{width:100%}.backup-list-section{flex-direction:column;gap:10px;display:flex}.backup-list-title{font:700 14px/1 var(--font-body);color:var(--text);align-items:center;gap:8px;display:flex}.backup-count{color:var(--muted);background:var(--surface3);border-radius:999px;padding:2px 8px;font-size:12px}.backup-list-hint{color:var(--muted);margin-left:auto;font-size:11px;font-weight:500}.backup-empty{color:var(--muted);text-align:center;padding:32px 16px;font-size:13px;line-height:1.6}.backup-list{gap:10px;display:grid}.backup-card{border:1px solid var(--border);background:var(--bg);border-radius:14px;transition:border-color .15s,background .15s;position:relative;overflow:hidden}.backup-card.select-mode.selected{border-color:var(--accent);background:var(--accent-dim)}.backup-card.pressing{border-color:var(--danger);background:var(--danger-dim)}.backup-card-main{cursor:pointer;text-align:left;width:100%;font:inherit;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:0 0;border:none;justify-content:space-between;align-items:center;gap:12px;padding:14px 14px 14px 16px;display:flex}.backup-card-main:active{background:var(--accent-dim)}.backup-card-info{flex-direction:column;gap:4px;min-width:0;display:flex}.backup-card-info h3{font:600 14px/1.3 var(--font-body);color:var(--text);text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.backup-card-info time{color:var(--muted);font-size:12px}.backup-chevron{color:var(--muted);white-space:nowrap;flex-shrink:0;font-size:12px}.backup-select-check{border:2px solid var(--border);background:var(--bg);color:#fff;width:22px;height:22px;font:700 12px/1 var(--font-body);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;transition:border-color .15s,background .15s;display:flex}.backup-select-check.checked{border-color:var(--accent);background:var(--accent)}.backup-select-bar{left:50%;bottom:calc(var(--bottom-nav-height,64px) + 12px);width:min(calc(100% - 32px), var(--app-max-width,430px));z-index:20;position:fixed;transform:translate(-50%)}.backup-select-delete-btn{background:var(--danger);border-color:var(--danger);width:100%}.backup-select-delete-btn:disabled{opacity:.45}.backup-card-delete{color:var(--danger);font:600 11px/1 var(--font-body);cursor:pointer;opacity:.6;background:0 0;border:none;position:absolute;bottom:8px;right:12px}.backup-card-delete:hover{opacity:1}.backup-restore-sheet{flex-direction:column;gap:14px;display:flex}.backup-restore-reason{font:600 13px/1.4 var(--font-body);color:var(--muted);margin:0}.backup-restore-divider{color:var(--muted);align-items:center;gap:12px;font-size:12px;display:flex}.backup-restore-divider:before,.backup-restore-divider:after{content:"";background:var(--border);flex:1;height:1px}.backup-module-list{gap:8px;display:grid}.backup-module-item{border:1px solid var(--border);cursor:pointer;border-radius:12px;align-items:center;gap:10px;padding:12px 14px;transition:border-color .15s,background .15s;display:flex}.backup-module-item.checked{border-color:var(--accent);background:var(--accent-dim)}.backup-module-item input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent);flex-shrink:0}.backup-module-name{font:600 14px/1 var(--font-body);color:var(--text);flex:1}.backup-module-count{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.import-export-page{padding-bottom:24px}.import-export-section{flex-direction:column;gap:10px;display:flex}.import-export-section+.import-export-section{margin-top:8px}.import-export-section-title{font:700 13px/1 var(--font-body);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:4px 2px 0}.import-export-module-grid{gap:10px;display:grid}.import-export-module-card{border:1px solid var(--border);background:var(--bg);border-radius:14px;flex-direction:column;gap:6px;padding:12px 14px;display:flex}.import-export-module-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.import-export-module-head strong{font:700 15px/1.2 var(--font-body);color:var(--text)}.import-export-module-head span{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.import-export-module-card p{color:var(--muted);margin:0;font-size:12px;line-height:1.5}.import-export-module-actions{gap:8px;margin-top:4px;display:flex}.import-export-module-actions button{border:1px solid var(--border);background:var(--surface3);color:var(--text);font:600 13px/1 var(--font-body);cursor:pointer;border-radius:10px;flex:1;padding:8px 12px}.import-export-module-actions button:hover{background:var(--accent-dim)}.import-export-section .list-group-body{border:1px solid var(--border);border-radius:14px;overflow:hidden}
html{scroll-behavior:smooth;overscroll-behavior:none}body{background:var(--bg);color:var(--fg);font:14px/1.5 var(--font-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior-y:none;-webkit-tap-highlight-color:transparent;overflow-x:hidden}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#7e808659;background:lab(53.5442% .086844 -3.77705/.35);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#61636980;background:lab(41.9436% .096634 -3.7717/.5)}::selection{color:var(--fg);background:#14874e2e;background:lab(49.4776% -41.7249 21.5535/.18)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}:focus:not(:focus-visible){outline:none}
