/* Be Coupling · rose & sage mobile design system */
@font-face {
  font-family:"BC Pretendard";
  src:url("fonts/pretendard-variable-1.3.9.woff2") format("woff2");
  font-weight:100 900; font-style:normal; font-display:swap;
}
.money-group { white-space:nowrap; }
.inline-money { display:inline-block; max-width:100%; vertical-align:bottom; }
.day-key { display:none; }
:root {
  --font-sans:"BC Pretendard","Pretendard Variable","Pretendard",-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Noto Sans KR","Malgun Gothic",system-ui,sans-serif;
  --weight-regular:400; --weight-medium:500; --weight-semibold:600; --weight-bold:700;
  --bg:#fcfaf9; --surface:#fff; --surface-soft:#fcf0f2;
  --primary:#ce879a; --action-fill:#a35069; --neutral-soft:#f6f5f4; --primary-soft:#faeaf0; --primary-text:#93465f;
  --text:#302b30; --text-sub:#696267; --border:#eee9e9; --info:#657684;
  --ink:var(--text); --muted:var(--text-sub); --accent:var(--primary-text); --accent-soft:var(--primary-soft);
  --paper:var(--bg); --line:var(--border); --field-line:#92878d;
  --income:#396c59; --income-soft:#eaf3ee; --expense:#904c60; --expense-soft:#faedf1;
  --asset:#496b7f; --asset-soft:#edf3f6; --debt:#80613d; --debt-soft:#f7f0e6;
  --transfer:#70577f; --transfer-soft:#f3eef7; --danger:#963e46; --danger-soft:#fbeef0;
  --income-bar:#88b5a0; --spend-bar:#d698a7;
  --chart-cash:#91b8ab; --chart-stock:#c98898; --chart-etf:#ada0c7; --chart-bond:#87a7c8;
  --chart-fund:#d4b48b; --chart-pension:#a4b888; --chart-physical:#c59d83; --chart-other:#a6aaaf;
  --panel-inset:clamp(14px,4.6vw,20px); --column-gap:8px; --section-gap:16px;
  --field-gap:16px; --label-gap:8px; --form-section-gap:24px;
  --radius:16px; --gutter:clamp(16px,5vw,20px); --app-width:480px; --tab-height:max(66px,calc(1.2rem + 46px)); --press:170ms;
  --type-caption:.8125rem; --type-note:.875rem; --type-label:.9375rem; --type-body:1rem;
  --type-section:1.125rem; --type-title:1.5rem; --type-amount:clamp(1.75rem,calc(1.25rem + 3.6vw),2.125rem);
  --type-total:1.375rem; --type-row-amount:1rem;
  --icon-small:16px; --icon-base:20px; --icon-nav:24px; --icon-display:32px; --icon-stroke:1.75;
  --type-entry-amount:clamp(1.75rem,7vw,2rem); --type-entry-amount-compact:1.25rem; --type-money-unit:1.125rem;
  font-family:var(--font-sans);
  color-scheme:light; background:#f3efef; color:var(--ink);
}
* { box-sizing:border-box }
body { margin:0 auto; max-width:var(--app-width); min-height:100dvh; background:var(--paper); font-size:var(--type-body); font-weight:var(--weight-regular); line-height:1.5; word-break:keep-all; overflow-wrap:anywhere; }
button,input,select,textarea { font:inherit; color:inherit; }
button,a,input,select,summary { touch-action:manipulation; }
button { border:0; cursor:pointer; background:transparent; }
button,.sub,summary { transition:background var(--press),transform var(--press); }
button:active:not(:disabled) { transform:translateY(1px); }
:focus-visible { outline:3px solid var(--primary-text); outline-offset:2px; }
button:disabled { opacity:.6; cursor:not-allowed; }
h1,h2,h3,p { margin:0; }
h1 { font-weight:var(--weight-bold); font-size:var(--type-title); line-height:1.33; letter-spacing:-.035em; }
h2 { font-weight:var(--weight-bold); font-size:var(--type-section); line-height:1.4; letter-spacing:-.025em; }
h3 { font-size:var(--type-body); font-weight:var(--weight-semibold); line-height:1.45; }
small,.muted,.explain { color:var(--muted); }
.muted,.explain,.settings p { font-size:var(--type-note); }
.icon { display:inline-block; width:var(--icon-base); height:var(--icon-base); vertical-align:-.2em; fill:none; stroke:currentColor; stroke-width:var(--icon-stroke); stroke-linecap:round; stroke-linejoin:round; flex:none; }
header { container:ledger-header / inline-size; background:var(--paper); padding-top:env(safe-area-inset-top); }
.top,main { padding-inline:max(var(--gutter),env(safe-area-inset-left)) max(var(--gutter),env(safe-area-inset-right)); }
.top { min-height:60px; padding-block:4px; display:flex; align-items:center; justify-content:space-between; gap:4px 12px; }
.brand { display:inline-flex; align-items:center; gap:7px; flex-shrink:0; font-weight:var(--weight-bold); color:var(--ink); text-decoration:none; font-size:1.375rem; letter-spacing:-.035em; min-height:44px; }
.brand img { display:block; width:36px; height:36px; flex:none; }
#account { min-width:0; }
.user { min-height:44px; display:block; max-width:100%; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; font-size:var(--type-note); color:var(--accent); font-weight:var(--weight-bold); }
.user .icon { width:1em; height:1em; margin-inline-end:5px; vertical-align:-.12em; }
.user i,.status i { width:7px; height:7px; background:#c4a6ad; border-radius:50%; flex:none; }
main { container:ledger-page / inline-size; padding-top:8px; padding-bottom:calc(var(--tab-height) + env(safe-area-inset-bottom) + 26px); }
.intro { margin:4px 0 var(--section-gap); }
.intro .intro-head { display:grid; grid-template-columns:minmax(0,1fr) max-content; column-gap:8px; align-items:center; }
.intro h1 { min-width:0; text-wrap:balance; }
.intro-head,.cardtop,.flex,.row,.summary,.goalrow,.cal-heading,.hero-line { display:flex; justify-content:space-between; align-items:center; gap:8px; flex-wrap:wrap; }
.intro p { margin:4px 0 0; }
.datebox { display:inline-flex; align-items:center; font-size:var(--type-note); font-weight:var(--weight-semibold); background:var(--surface); border-radius:14px; white-space:nowrap; }
.datebox button,.cardtop button[data-act=close] { display:grid; place-items:center; width:44px; height:44px; color:var(--muted); }
.datebox .icon { width:var(--icon-small);  height:var(--icon-small); }
.hero { position:relative; border:1px solid #f0e0e5; border-radius:16px; padding:16px var(--panel-inset); color:var(--ink); background:linear-gradient(115deg,#fbe9ee 0%,#fcf1ec 100%); }
.hero-balance { margin-top:4px; }
.hero-value { width:max-content; max-width:100%; }
.hero-value .valuation-date { margin-top:2px; }


.hero-line h2 { font-size:var(--type-body); font-weight:var(--weight-semibold); color:#684855; }
.status,.tag { display:inline-flex; align-items:center; gap:6px; padding:3px 8px; border-radius:16px; font-weight:var(--weight-semibold); font-size:var(--type-caption); }
.status { color:var(--muted); padding-inline:0; font-weight:var(--weight-medium); }
.amount { margin:0; color:#482d38; font-size:var(--type-amount); font-weight:var(--weight-bold); line-height:1.25; letter-spacing:-.025em; }
.amount:has(>.money-group:nth-of-type(5)) { font-size:clamp(1.5rem,6.8vw,2rem); }
.amount em { font-size:var(--type-money-unit); font-weight:var(--weight-semibold); font-style:normal; margin-left:3px; }
.amount,.summary-tiles strong,.summary strong,.bar strong,.entry>b,.asset-branch summary strong,.legend b,.goal strong,.datebox,.day { font-variant-numeric:lining-nums tabular-nums; }
.change { display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 8px; margin-top:8px; font-size:var(--type-caption); color:var(--muted); }
.change .delta { color:var(--ink); font-size:var(--type-note); font-weight:var(--weight-semibold); }
.change .gain { color:var(--income); }
.change .loss { color:var(--expense); }
.visually-hidden { position:absolute; width:1px; height:1px; padding:0; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.summary-tiles { margin:0 0 var(--section-gap); display:grid; gap:var(--section-gap); }
.balance-pair,.flow-summary { background:var(--surface); border:1px solid var(--line); border-radius:16px; }
.balance-pair { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--column-gap); padding:8px var(--panel-inset); }
.balance-pair .tile+.tile { position:relative; }
.balance-pair .tile+.tile::before { content:""; position:absolute; left:calc(-.5 * var(--column-gap)); top:8px; bottom:8px; width:1px; background:var(--line); }
.tile { display:grid; justify-items:start; align-content:start; gap:5px; min-width:0; min-height:52px; text-align:start; border-radius:8px; }
.tile .metric-label { display:inline-flex; align-items:center; gap:4px; color:var(--text-sub); font-size:var(--type-note); line-height:1.35; }
.metric-label .icon { width:var(--icon-small); height:var(--icon-small); color:var(--muted); }
.tile strong { max-width:100%; font-size:var(--type-body); line-height:1.4; letter-spacing:0; }
.balance-pair .tile { padding:4px 0; border-radius:0; }
.balance-pair strong { font-size:clamp(1rem,4.5vw,var(--type-section)); }
.tile strong small { font-size:.78em; color:inherit; }
.tile:active { background:var(--neutral-soft); }
.flow-summary { padding:16px var(--panel-inset) 12px; }
.flow-heading { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:6px; padding:0 0 9px; }
.flow-heading h2 { font-size:var(--type-section); }
.rate-label { color:var(--muted); font-size:var(--type-caption); }
.rate-label b { color:var(--income); font-weight:var(--weight-semibold); }
.flow-metrics { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--column-gap); }
.flow-metrics .tile { padding:4px 0; }
.flow-metrics .income .metric-label { color:var(--income); }
.flow-metrics .expense .metric-label { color:var(--expense); }
.flow-metrics strong { color:var(--ink); font-size:var(--type-label); }
.connect-note,.breakdown { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:12px 0; font-size:var(--type-note); }
.breakdown { border-bottom:1px solid var(--line); }
.expense-category-total summary { list-style:none; cursor:pointer; }
.expense-category-total summary::-webkit-details-marker { display:none; }
.expense-category-total summary>span { display:inline-flex; gap:5px; align-items:center; }
.expense-category-total summary .icon { width:var(--icon-small); height:var(--icon-small); color:var(--muted); }
.expense-category-total[open] summary .icon { transform:rotate(90deg); }
.expense-category-total ul { margin:0; padding:4px 0 4px 19px; list-style:none; }
.expense-category-total li { display:flex; justify-content:space-between; gap:8px; padding:7px 0; color:var(--text-sub); font-size:var(--type-caption); }
.expense-category-total li b { font-weight:var(--weight-medium); text-align:right; }
.sheet-total { font-size:var(--type-entry-amount); font-variant-numeric:tabular-nums; font-weight:var(--weight-bold); margin:10px 0 16px; }
.detail-sub { margin-top:18px; }
.card-liabilities { margin-top:18px; min-width:0; }
.card-liabilities .cardtop { display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:6px 12px; margin-bottom:4px; }
.card-liabilities h3,.card-liabilities .cardtop>strong { font-size:var(--type-label); font-weight:var(--weight-semibold); }
.card-liabilities .cardtop>strong { margin-inline-start:auto; font-variant-numeric:tabular-nums; }
.card-liability-note { padding:10px 12px; border-radius:12px; background:var(--neutral-soft); }
.planned-flow-note { margin-top:12px; line-height:1.6; }
.asset-filters { display:flex; gap:4px; margin:12px 0; overflow:auto; scroll-padding-inline:4px; scrollbar-width:none; border-radius:12px; background:var(--neutral-soft); padding:4px; }
.asset-filters::-webkit-scrollbar { display:none; }
.asset-filters button { display:inline-flex; align-items:center; justify-content:center; gap:5px; flex:1 0 auto; min-width:44px; min-height:44px; padding-inline:8px; white-space:nowrap; border-radius:10px; font-size:var(--type-caption); color:var(--text-sub); }
.asset-filters .icon { width:var(--icon-small); height:var(--icon-small); }
.asset-filters button[aria-pressed=true] { color:var(--primary-text); background:var(--primary-soft); font-weight:var(--weight-semibold); }
.asset-rule-list { margin:8px 0 16px; }
.asset-rule-list>div { display:grid; grid-template-columns:5.5em 1fr; gap:12px; padding:12px 0; border-bottom:1px solid var(--line); }
.asset-rule-list dt { font-weight:var(--weight-semibold); }
.asset-rule-list dd { margin:0; color:var(--text-sub); line-height:1.55; }
.asset-tree-note { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; column-gap:8px; }
.asset-rule-link { min-height:44px; padding:0 2px; font-size:var(--type-caption); color:var(--text-sub); text-decoration:underline; text-underline-offset:3px; }
.invite-code { text-align:center; font-size:2rem; letter-spacing:.12em; font-weight:var(--weight-bold); padding:16px; background:var(--surface-soft); border-radius:14px; color:var(--accent); margin:16px 0 6px; }
.invite-time { text-align:center; color:var(--muted); }

.grid { display:grid; grid-template-columns:minmax(0,1fr); gap:var(--section-gap); }
.card { border:1px solid var(--line); min-width:0; padding:var(--panel-inset); border-radius:var(--radius); background:var(--surface); scroll-margin-top:12px; }
.cardtop { margin:0 0 12px; }
.cardtop h2 { flex:1; }
.tag { color:var(--muted); background:var(--neutral-soft); font-weight:var(--weight-medium); }
.primary,.sub,.quiet,.choices button { display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:44px; font-size:var(--type-label); font-weight:var(--weight-semibold); border-radius:12px; padding:8px 14px; }
.primary { color:white; background:var(--action-fill); }
.main-action { width:100%; margin-top:10px; min-height:48px; }
.sub,.choices { background:var(--neutral-soft); }
.quiet { color:var(--accent); background:var(--neutral-soft); padding:6px 10px; }
.cardtop>.quiet,.record-launch-head>.quiet {
 display:inline-flex; flex:0 0 auto; align-items:center; justify-content:center; gap:6px;
 min-width:44px; min-height:44px; padding:6px 8px; margin-inline-start:auto;
 border-radius:8px; background:transparent; color:var(--text-sub);
 font-size:var(--type-note); font-weight:var(--weight-medium); line-height:1.4; white-space:nowrap;
}
.cardtop>.quiet:active,.record-launch-head>.quiet:active { background:var(--neutral-soft); }
.cardtop>.quiet>.icon,.record-launch-head>.quiet>.icon { display:block; width:1.125em; height:1.125em; }
.section-action-label { display:block; line-height:1.4; }
.choices { margin-top:8px;display:flex; flex-wrap:wrap; padding:4px; border-radius:14px; margin-bottom:12px; }
.choices button { flex:1; }
.choices button.sel { color:var(--accent); background:white; box-shadow:0 1px 3px #3f373908; }
.bar { margin:14px 0; }
.cash-detail-link { display:block; width:100%; min-height:44px; padding:0; text-align:start; }
.cash-detail-link .track,.cash-detail-link .fill { display:block; }
.cash-detail-link .icon { width:var(--icon-small); height:var(--icon-small); vertical-align:middle; }
.bar .flex { font-size:var(--type-note); }
.bar strong { font-size:var(--type-body); }
.track { height:7px; border-radius:10px; background:#efeeed; overflow:hidden; margin:7px 0; }
.fill { height:100%; border-radius:inherit; }
.summary { margin-top:18px; background:var(--neutral-soft); border-radius:12px; padding:12px; font-size:var(--type-note); }
.summary strong { color:var(--ink); font-size:var(--type-section); }
.alloc { display:flex; align-items:center; gap:clamp(14px,5vw,25px); }
.donut { width:clamp(92px,28vw,128px); aspect-ratio:1; flex:none; border-radius:50%; position:relative; display:grid; place-items:center; }
.donut::before { content:""; position:absolute; inset:16%; border-radius:50%; background:white; }
.donut span { z-index:1; color:var(--muted); font-size:var(--type-caption); text-align:center; }
.donut b { display:block; color:var(--ink); font-size:var(--type-section); }
.legend { flex:1; margin:0; padding:0; }
.legend li { list-style:none; display:flex; align-items:center; gap:6px; padding:6px 0; font-size:var(--type-note); }
.legend b { margin-left:auto; }
.dot { width:9px; height:9px; border-radius:3px; flex:none; }
.entry { display:flex; align-items:center; gap:9px; min-height:54px; width:100%; padding:9px 0; text-align:left; border-top:1px solid var(--line); }
.entry>div { flex:1; min-width:0; }
.entry .name,.entry .my-goal-name>b { font-size:var(--type-label); font-weight:var(--weight-semibold); }
.entry small { display:block; font-size:var(--type-caption); }
.entry>b { min-width:0; max-width:50%; font-size:var(--type-row-amount); font-weight:var(--weight-semibold); text-align:end; }
.entry-compact { display:grid; grid-template-columns:32px minmax(0,1fr) auto; column-gap:12px; row-gap:4px; min-height:72px; padding:12px 0; }
.entry-compact>.ib { grid-column:1; grid-row:1/3; width:32px; height:32px; }
.entry-compact>div { display:contents; }
.entry-compact .name { grid-column:2; grid-row:1; line-height:1.4; }
.entry-compact>div>small { grid-column:2/4; grid-row:2; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.entry-compact>b { grid-column:3; grid-row:1; max-width:none; letter-spacing:0; }
.ib { display:inline-grid; place-items:center; width:34px; height:34px; flex:none; border-radius:12px; color:var(--accent); background:var(--accent-soft); }
.ib.income { color:var(--income); background:var(--income-soft); }
.ib.d,.ib.expense { color:var(--expense); background:var(--expense-soft); }
.ib.wallet { color:var(--asset); background:var(--asset-soft); }
.ib.debt,.ib.repayment { color:var(--debt); background:var(--debt-soft); }
.ib.exchange { color:var(--transfer); background:var(--transfer-soft); }
.positive { color:var(--income); }.expense { color:var(--expense); }
.entry>b.expense { color:var(--text); }
.empty { padding:16px 12px; border-radius:12px; color:var(--muted); background:var(--neutral-soft); font-size:var(--type-note); }
.goal { background:var(--neutral-soft); padding:15px; border-radius:14px; margin-top:8px; }
.goal h3 { display:flex;align-items:center;gap:6px; }.goal h3 .icon { color:var(--accent); }.goal strong { color:var(--accent); }
.my-goal-name { min-width:0; flex:1; }
.my-goal-name small { color:var(--text-sub); }
.my-goal-edit { display:inline-flex; align-items:center; gap:2px; color:var(--accent); font-size:var(--type-note); }
.my-goal-edit .icon { width:var(--icon-small); height:var(--icon-small); }
.goal small { font-size:var(--type-caption); }
.asset-tree .cardtop { margin-bottom:4px; }
.asset-tree-page { min-width:0; }
.asset-tree-page .asset-subtotal { margin:4px 0; padding:12px 0 8px; }
.asset-tree-page .asset-subtotal strong { font-size:var(--type-amount); }
.asset-tree .asset-tree-note { margin-bottom:12px; }
.asset-tree .asset-tree-note p { margin:0; }
.asset-tree #asset-overview:empty { display:none; }
.valuation-date,.ledger-heading,.field-hint,.demo-notice { font-size:var(--type-caption); color:var(--text-sub); }
.asset-subtotal,.ledger-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.asset-subtotal { margin:16px 0; padding:0; }
.asset-subtotal>span { color:var(--ink); font-size:var(--type-label); font-weight:var(--weight-semibold); }
.asset-subtotal small,.group-label small,.position-name small { display:block; font-weight:var(--weight-regular); color:var(--text-sub); font-size:var(--type-caption); line-height:1.5; }
.asset-subtotal strong { text-align:right; font-size:var(--type-total); letter-spacing:-.025em; font-variant-numeric:tabular-nums; }
.ledger-heading { padding-bottom:5px; border-bottom:1px solid var(--line); font-size:var(--type-caption); }
.asset-branch summary { display:grid; grid-template-columns:minmax(0,1fr) fit-content(53%) 12px; align-items:center; gap:5px; min-height:50px; padding:10px 0; cursor:pointer; list-style:none; }
.asset-branch summary::-webkit-details-marker { display:none; }
.group-label { display:flex; align-items:center; gap:8px; min-width:0; }
.group-label>span:last-child { min-width:0; }
.group-label b,.position-name b { display:block; font-size:var(--type-label); font-weight:var(--weight-semibold); line-height:1.4; }
.institution-badge { display:inline-grid; flex:none; place-items:center; width:36px; height:36px; overflow:hidden; border:1px solid var(--line); border-radius:12px; color:#776d75; background:#fff; }
.institution-badge img { display:block; width:100%; height:100%; object-fit:contain; }
.institution-badge.is-fallback { background:var(--neutral-soft); }
.institution-badge.is-physical { color:#906c4d; background:#fbf2e7; }
.institution-badge .icon { width:var(--icon-base); height:var(--icon-base); }
.asset-tree .bank-branch>summary { min-height:68px; }
.asset-tree .bank-branch>summary .group-label { gap:9px; }
.asset-tree .bank-branch>summary strong { font-weight:var(--weight-bold); }
.asset-lookup { display:flex; align-items:center; gap:8px; padding-inline:12px 4px; background:var(--neutral-soft); border:1px solid var(--line); border-radius:12px; }
.asset-lookup:focus-within { outline:2px solid var(--primary-text); outline-offset:1px; }
.asset-lookup>.icon { width:var(--icon-small); height:var(--icon-small); color:var(--text-sub); }
.asset-lookup input { flex:1; min-height:44px; border:0; border-radius:0; padding:6px 0; outline:0; background:transparent; }
.asset-lookup input::-webkit-search-cancel-button { display:none; }
.asset-lookup button { display:grid; place-items:center; min-width:44px; min-height:44px; color:var(--text-sub); }
.asset-lookup button[hidden] { display:none; }
.asset-lookup button .icon { width:var(--icon-small); height:var(--icon-small); }
.asset-branch summary strong { min-width:0; text-align:end; font-size:var(--type-row-amount); letter-spacing:0; }
.disclosure { color:var(--muted); }
.disclosure .icon { width:var(--icon-small); height:var(--icon-small); transition:transform var(--press); }
.asset-branch[open]>summary .disclosure .icon { transform:rotate(90deg); }
.bank-branch+.bank-branch { border-top:1px solid var(--line); }
.account-branch { margin:0 0 6px 8px; padding:0 9px; border-left:2px solid #e5dedd; border-radius:0 9px 9px 0; background:var(--neutral-soft); }
.account-branch .group-label b,.account-branch summary strong { font-size:var(--type-label); }
.position-row { gap:6px; min-height:48px; }
.position-name { flex:1; min-width:0; }
.position-name b { font-size:var(--type-label); }
.position-row>b { font-size:var(--type-row-amount); }
.asset-type-glyph { display:inline-grid; place-items:center; width:28px; height:28px; flex:none; border-radius:8px; color:var(--asset); background:var(--asset-soft); vertical-align:middle; }
.asset-type-glyph .icon { width:var(--icon-base); height:var(--icon-base); }
.asset-match-count { margin:16px 0 4px; color:var(--text-sub); font-size:var(--type-caption); }
.asset-match-list { list-style:none; padding:0; margin:0; }
.asset-match-list li+li { border-top:1px solid var(--line); }
.asset-match { display:block; width:100%; min-height:56px; padding:12px 2px; text-align:start; }
.asset-match-head { display:grid; grid-template-columns:minmax(0,1fr) fit-content(52%); align-items:baseline; gap:12px; color:var(--ink); }
.asset-match-head>b,.asset-match-head>strong { font-size:var(--type-label); line-height:1.45; overflow-wrap:anywhere; }
.asset-match-head>strong { font-size:var(--type-row-amount); }
.asset-match-head>b { font-weight:var(--weight-semibold); }
.asset-match-head>b>.asset-type-glyph { margin-inline-end:6px; }
.asset-match-head>strong { text-align:end; font-variant-numeric:tabular-nums; }
.asset-match-head .is-pending { color:var(--text-sub); font-size:var(--type-caption); font-weight:var(--weight-medium); }
.asset-match-path,.asset-match-meta { display:block; overflow-wrap:anywhere; line-height:1.45; font-size:var(--type-caption); }
.asset-match-path { color:var(--text-sub); margin-top:3px; }
.asset-match-meta { color:var(--muted); }
.direct-owner { color:var(--text-sub); font-size:var(--type-caption); padding:6px 0; }
.personal-entry { margin-bottom:12px; }
.personal-home #personal-securities-slot:empty { display:none; }
.personal-home .home-recent .cardtop { margin-bottom:0; }
.personal-home { row-gap:24px; }
.personal-home h2 { font-size:var(--type-body); font-weight:var(--weight-semibold); letter-spacing:0; }
.home-start { padding:20px 0; border-top:1px solid var(--line); }
.home-start p { color:var(--text-sub); font-size:var(--type-note); margin:8px 0 16px; }
.home-period-note { margin:0 0 8px; color:var(--text-sub); font-size:var(--type-caption); }
.personal-management { min-width:0; padding-top:8px; }
.personal-management .cardtop { margin-bottom:8px; }
.personal-management .cardtop>small { font-size:var(--type-caption); color:var(--text-sub); }
.personal-manage-list { padding:0 var(--panel-inset); background:var(--surface); border-radius:var(--radius); }
.personal-manage-row { width:100%; min-height:68px; display:grid; grid-template-columns:24px minmax(0,1fr) auto 16px; align-items:center; gap:12px; padding:12px 0; text-align:start; }
.personal-manage-row+.personal-manage-row { border-top:1px solid var(--line); }
.manage-glyph { display:grid; place-items:center; color:var(--text-sub); }
.manage-glyph .icon { width:var(--icon-base); height:var(--icon-base); }
.manage-name { min-width:0; }
.manage-name b { display:block; font-size:var(--type-body); font-weight:var(--weight-semibold); }
.manage-name small { display:block; font-size:var(--type-caption); line-height:1.5; margin-top:3px; }
.personal-manage-row>strong { min-width:0; max-width:10em; font-size:var(--type-row-amount); font-weight:var(--weight-semibold); text-align:end; font-variant-numeric:tabular-nums; }
.personal-manage-row>.icon:last-child { width:var(--icon-small); height:var(--icon-small); color:var(--text-sub); grid-column:4; }
.personal-manage-row:active { background:var(--neutral-soft); }
.personal-detail-top { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:8px; margin-bottom:20px; }
.personal-detail-head { display:flex; align-items:center; gap:4px; margin:0 0 0 -8px; }
.personal-detail-head h1 { min-width:0; }
.personal-back { display:grid; place-items:center; min-width:44px; min-height:44px; border-radius:12px; }
.personal-period { display:flex; justify-content:flex-end; margin-inline-start:auto; }
.personal-period .datebox { padding-inline:4px; }
.personal-detail-actions { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:16px; }
.personal-detail-actions>button { flex:1; }
.personal-detail-actions>.sub { flex:0 1 auto; padding-inline:16px; background:transparent; }
.section-total { font-size:var(--type-total); font-variant-numeric:tabular-nums; margin-inline-start:auto; }
@container ledger-page (max-width:20em) {
 .personal-manage-row { grid-template-columns:22px minmax(0,1fr) 16px; gap:4px 8px; }
 .personal-manage-row .manage-glyph { grid-row:1 / span 2; }
 .personal-manage-row>strong { grid-column:2; text-align:start; max-width:100%; }
 .personal-manage-row>.icon:last-child { grid-column:3; grid-row:1 / span 2; }
}
.personal-entry .cardtop { margin-bottom:16px; }
.record-launch-head { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:4px 8px; min-height:44px; margin:0 0 8px; }
.record-launch-head h2 { flex:1 0 auto; margin:0; }
.record-launch-cash,.record-launch-balances { display:grid; gap:8px; }
.record-launch-cash { grid-template-columns:repeat(2,minmax(0,1fr)); }
.record-launch { display:flex; justify-content:center; align-items:center; min-width:0; font-weight:var(--weight-semibold); line-height:1.35; }
.record-launch .launch-icon { display:grid; place-items:center; flex:none; }
.record-launch .launch-icon .icon { width:var(--icon-nav); height:var(--icon-nav); }
.record-launch-cash .record-launch { min-height:54px; gap:9px; border-radius:13px; font-size:var(--type-label); }
.record-launch-cash .expense { background:var(--expense-soft); color:var(--expense); }
.record-launch-cash .income { background:var(--income-soft); color:var(--income); }
.record-launch-balances { grid-template-columns:repeat(3,minmax(0,1fr)); margin-top:12px; }
.record-launch-balances .record-launch { gap:6px; min-height:48px; padding:4px 0; border-radius:10px; color:var(--text); font-size:var(--type-note); }
.record-launch-balances .launch-icon .icon { width:var(--icon-base); height:var(--icon-base); }
.record-launch.wallet .launch-icon { color:var(--asset); }
.record-launch.debt .launch-icon { color:var(--debt); }
.record-launch.exchange .launch-icon { color:var(--transfer); }
.record-launch:active { filter:brightness(.96); }
@media(max-width:350px) { .record-launch-balances .record-launch { flex-direction:column; gap:4px; } }
.record-group { display:grid; gap:12px; min-width:0; margin:0; padding:0; border:0; }
.record-group legend { font-weight:var(--weight-semibold); padding:0 0 8px; font-size:var(--type-label); }
.account-fields { min-width:0; display:grid; gap:10px; }
.account-fields[hidden],.sheet-footer .primary[hidden] { display:none; }
.investment-pricing,.instrument-fields { min-width:0; display:grid; gap:8px; }
.investment-pricing[hidden],.instrument-fields[hidden] { display:none; }
.instrument-results:not(:empty) { overflow:auto; max-height:14rem; border:1px solid var(--line); border-radius:12px; }
.instrument-result { width:100%; display:grid; min-height:48px; padding:8px 12px; text-align:left; }
.instrument-result+.instrument-result { border-top:1px solid var(--line); }
.instrument-result small,.quote-summary small { color:var(--text-sub); font-size:var(--type-caption); }
.instrument-result:focus-visible,.instrument-result:active { background:var(--surface-soft); }
.quote-summary,.quote-preview { margin:0; padding:10px 12px; background:var(--bg); border-radius:12px; line-height:1.55; overflow-wrap:anywhere; }
.quote-preview { color:var(--text-sub); font-size:var(--type-caption); }
.quote-summary h3 { margin:0 0 4px; font-size:var(--type-label); }
.quote-summary p { margin:2px 0; font-size:var(--type-note); }
.quote-summary .quote-warning { margin-top:6px; color:var(--danger); }
form input[readonly] { background:var(--bg); }
.field-hint { font-weight:var(--weight-regular); line-height:1.5; }
#amount-preview,.share-preview { color:var(--muted); }
.demo-notice { padding:10px; background:var(--surface-soft); border-radius:10px; }
label[hidden] { display:none; }
@media(max-width:355px){.asset-tree .institution-badge {width:30px;height:30px;border-radius:10px}}
.calendar { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:2px; }
.calendar>small { padding:7px 0 9px; text-align:center; font-size:var(--type-caption); font-weight:var(--weight-medium); }
.calendar>small:first-child { color:var(--expense); }
.calendar>small:nth-child(7) { color:var(--info); }
.month-card { padding:12px 8px; }
.cal-heading { position:sticky; top:0; z-index:1; padding:0 4px 4px; gap:4px; background:var(--surface); border-bottom:1px solid var(--line); }
.calendar-selection { display:inline-flex; align-items:center; flex-wrap:wrap; gap:2px 6px; min-height:44px; max-width:100%; padding:4px; text-align:left; color:var(--ink); }
.calendar-selection>span { font-size:var(--type-caption); color:var(--muted); }
.calendar-selection .calendar-jump { display:inline-flex; align-items:center; gap:1px; color:var(--accent); font-weight:var(--weight-semibold); }
.calendar-jump .icon { width:var(--icon-small); height:var(--icon-small); }
.calendar .day { scroll-margin-block:56px calc(var(--tab-height) + env(safe-area-inset-bottom) + 6px); }
.day { display:grid; grid-template-columns:minmax(0,1fr); grid-template-rows:1.6rem repeat(2,.95rem); justify-items:center; align-items:center; min-width:0; min-height:53px; padding:3px 0; border-radius:10px; }
.day b { display:grid; grid-row:1; place-items:center; min-width:1.58em; height:1.58em; border-radius:50%; font-weight:var(--weight-medium); line-height:1; }
.day-repayment { color:var(--debt); }
.day.has-card-bill b { position:relative; }
.day.has-card-bill b::after,.calendar-bill-key::before {
  content:''; width:5px; height:5px; border-radius:50%; background:var(--transfer);
}
.day.has-card-bill b::after { position:absolute; top:0; right:0; outline:1px solid var(--surface); }
.calendar-bill-key { display:flex; justify-content:flex-end; align-items:center; gap:5px; margin:8px 5px 0; font-size:var(--type-caption); color:var(--text-sub); }
.calendar-bills { margin-top:14px; }
.calendar-bills h3 { margin:0; font-size:var(--type-label); }
.calendar-bills h3 small { font-weight:var(--weight-medium); color:var(--text-sub); }
.calendar-bills ul { margin:4px 0 0; padding:0; list-style:none; }
.calendar-bills li+li { border-top:1px solid var(--line); }
.calendar-bills button { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:baseline; gap:4px 12px; width:100%; min-height:48px; padding:10px 0; text-align:start; font-size:var(--type-note); }
.calendar-bills button>span { display:grid; min-width:0; gap:3px; overflow-wrap:anywhere; }
.calendar-bills button>span:last-child { margin-inline-start:auto; text-align:end; font-variant-numeric:tabular-nums; }
.calendar-bills small { color:var(--text-sub); font-size:var(--type-caption); }
.day small { display:block; max-width:100%; font-size:.75rem; font-weight:var(--weight-medium); line-height:1.18; letter-spacing:-.02em; }
.day .positive { grid-row:2; }
.day .expense { grid-row:3; }
.day[aria-current=date]:not(.chosen) b { box-shadow:inset 0 0 0 1px var(--primary); color:var(--primary-text); }
.day.chosen { background:var(--surface-soft); }
.day.chosen b { background:var(--primary-text); color:white; font-weight:var(--weight-semibold); }
.listcard { margin-top:var(--section-gap); }
.settings .row { margin:10px 0; }
.settings p { color:var(--muted); }
.hero:has(+.summary-tiles) { border-radius:16px 16px 0 0; }
.hero+.summary-tiles .balance-pair { border-radius:0 0 16px 16px; border-top:0; }
.start-button { min-height:44px; padding:8px 14px; color:var(--accent); background:var(--neutral-soft); border-radius:99px; }
.start-button:active { background:var(--primary-soft); }
.current-person { display:block; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:var(--type-note); color:var(--text-sub); }
.settings .connection-panel { display:grid; grid-template-columns:42px minmax(0,1fr); gap:12px; align-items:start; background:var(--surface); border-color:var(--line); }
.couple-emblem { display:grid; place-items:center; width:42px; height:42px; color:var(--accent); }
.couple-emblem .icon { width:var(--icon-display); height:var(--icon-display); }
.connection-panel .cardtop { margin-bottom:4px; }
.connection-panel .row:last-child { margin-bottom:0; }
.settings-list .cardtop { margin:0 0 4px; }
.setting-row { display:flex; align-items:center; justify-content:space-between; width:100%; gap:12px; padding:12px 0; text-align:left; min-height:50px; }
.setting-row+.setting-row { border-top:1px solid var(--line); }
.setting-row span { font-size:var(--type-label); font-weight:var(--weight-semibold); }
.setting-row small { display:block; color:var(--muted); font-size:var(--type-caption); font-weight:var(--weight-regular); margin-top:2px; }
.setting-row .icon { color:var(--muted); width:var(--icon-small); height:var(--icon-small); }
.account-tools { display:flex; align-items:center; flex-wrap:wrap; gap:2px 10px; padding:0 4px; }
.account-link { min-height:44px; padding:7px 2px; font-size:var(--type-note); color:var(--muted); }
.account-link.danger { color:var(--danger); }
.setting-row:active { background:var(--surface-soft); }
@container ledger-page (max-width:20em) {
  .asset-tree-page .asset-subtotal { display:grid; grid-template-columns:minmax(0,1fr); gap:8px; }
  .asset-tree-page .asset-subtotal>span { display:flex; justify-content:space-between; flex-wrap:wrap; gap:4px 8px; }
  .asset-tree-page .asset-subtotal>strong { text-align:start; }
  .asset-tree-page .bank-branch>summary { grid-template-columns:minmax(0,1fr) 16px; gap:4px 8px; }
  .asset-tree-page .bank-branch>summary>strong { grid-column:1; text-align:start; padding-inline-start:45px; }
  .asset-tree-page .bank-branch>summary>.disclosure { grid-column:2; grid-row:1/3; }
}
@container ledger-page (max-width:16.5em) {
  .settings .connection-panel { grid-template-columns:minmax(0,1fr); }
  .couple-emblem { display:none; }
}
.danger { color:var(--danger); }
#mobile { position:fixed; inset:auto 0 0; z-index:4; margin:auto; max-width:var(--app-width); display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); background:var(--surface); border-top:1px solid var(--line); padding:3px max(5px,env(safe-area-inset-right)) calc(3px + env(safe-area-inset-bottom)) max(5px,env(safe-area-inset-left)); }
#mobile button { display:flex; flex-direction:column; justify-content:center; align-items:center; min-height:59px; min-width:0; padding-inline:1px; gap:3px; color:var(--muted); font-size:var(--type-caption); font-weight:var(--weight-semibold); line-height:1.4; }
@container ledger-header (max-width:16.5em) {
  .top { flex-wrap:wrap; }
  #account { max-width:100%; margin-inline-start:auto; }
}
/* Reflow dense rows when the available width is narrow relative to the user's type size. */
@container ledger-page (min-width:16.501em) and (max-width:19.5em) {
  .balance-pair .tile { padding-inline:0; }
  .balance-pair strong { font-size:var(--type-body); }
  .flow-metrics { grid-template-columns:minmax(0,1fr); gap:0; }
  .flow-metrics .tile { display:flex; justify-content:space-between; align-items:center; min-height:44px; }
  .flow-metrics .tile+.tile { border-top:1px solid var(--line); }
  .flow-metrics .tile strong { text-align:right; }
}
@container ledger-page (max-width:16.5em) {
  .day-key { display:block; padding:4px 6px 10px; color:var(--muted); font-size:var(--type-caption); }
  .day .day-value { display:none; }
  .balance-pair,.flow-metrics { grid-template-columns:minmax(0,1fr); gap:0; }
  .balance-pair .tile+.tile::before { display:none; }
  .intro .intro-head { grid-template-columns:minmax(0,1fr); justify-items:start; }
  .asset-filters { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }
  .asset-filters button { white-space:normal; }
  .asset-filters button:first-child { grid-column:1/-1; }
  .balance-pair .tile+.tile { border-inline-start:none; border-top:1px solid var(--line); }
  .balance-pair .tile,.flow-metrics .tile { padding:8px 0; }
  .flow-metrics .tile+.tile { border-top:1px solid var(--line); }
  .asset-branch summary { grid-template-columns:minmax(0,1fr) 14px; }
  .asset-branch summary strong { grid-column:1; text-align:end; }
  .asset-branch summary .disclosure { grid-column:2; grid-row:1/3; }
  .asset-subtotal,.alloc,.entry { flex-wrap:wrap; }
  .asset-subtotal>strong,.entry>b { flex-basis:100%; max-width:none; }
  .entry-compact { grid-template-columns:32px minmax(0,1fr); }
  .entry-compact>.ib { grid-row:1/4; }
  .entry-compact>b { grid-column:2; grid-row:2; text-align:start; }
  .entry-compact>div>small { grid-column:2; grid-row:3; white-space:normal; overflow-wrap:anywhere; }
  .legend { flex-basis:100%; }

  .amount { margin-right:0; }
}
#mobile .icon { width:var(--icon-nav); height:var(--icon-nav); }
#mobile button.sel { color:var(--accent); font-weight:var(--weight-bold); }
#mobile button.sel .icon { color:var(--accent); }
footer { margin:20px 4px 0; font-size:var(--type-caption); color:var(--muted); }
dialog { border:0; position:fixed; inset:auto 0 0; margin:0 auto; padding:0 var(--gutter) calc(20px + env(safe-area-inset-bottom)); width:min(100%,var(--app-width)); max-width:100%; max-height:92dvh; overflow:auto; overscroll-behavior:contain; background:white; color:var(--ink); border-radius:24px 24px 0 0; }
dialog::backdrop { background:#38333645; }
body:has(dialog[open]) { overflow:hidden; }
dialog .cardtop { position:sticky; top:0; z-index:1; padding:12px 0 4px; background:white; margin:0 0 8px; }
.pick-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin-top:16px; }
.pick-grid button { display:flex; align-items:center; min-height:60px; gap:9px; padding:9px 12px; background:#fcf0f2; border-radius:14px; font-weight:var(--weight-bold); }
form { display:grid; gap:var(--field-gap); margin-top:16px; }
label { display:grid; gap:var(--label-gap); font-weight:var(--weight-semibold); font-size:var(--type-note); min-width:0; }
input,select { width:100%; min-width:0; font-size:max(1rem,16px); border-radius:12px; padding:11px 12px; border:1px solid var(--field-line); background:white; min-height:48px; }
form input[name=amount] { font-size:var(--type-entry-amount-compact); font-weight:var(--weight-semibold); color:var(--ink); }
form .primary { min-height:50px; }
form .error { color:var(--danger); font-size:var(--type-note); }
.error:empty { display:none; }
#toast { position:fixed; display:none; z-index:10; bottom:calc(var(--tab-height) + env(safe-area-inset-bottom) + 8px); left:50%; transform:translateX(-50%); padding:11px 15px; border-radius:14px; color:white; background:#51484b; width:max-content; max-width:min(90vw,440px); font-size:var(--type-note); }
#toast.has-receipt { align-items:center; justify-content:space-between; gap:14px; padding:2px 5px 2px 15px; box-shadow:0 5px 18px #352a302b; }
#toast button { flex:none; min-height:44px; padding:4px 10px; border:0; border-radius:10px; background:transparent; color:#ffdae6; font-weight:var(--weight-bold); }
#toast button:focus-visible { outline:2px solid white; outline-offset:-3px; }
@media(max-width:355px) { .intro-head { gap:4px; } }
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { transition:none!important; scroll-behavior:auto!important; } }
.goal-detail { width:100%; min-height:44px; text-align:left; padding:0 0 6px; font-weight:var(--weight-bold); }
.goal-detail>span { display:inline-flex; align-items:center; gap:6px; }
.goal-detail .icon { color:var(--accent); }
.goal-detail strong .icon { width:var(--icon-small); height:var(--icon-small); vertical-align:middle; }
@media(max-width:355px) {
 .tile { padding-inline:6px; }
 .month-card { margin-inline:calc(-1 * var(--gutter)); padding-inline:3px; }
 .calendar { gap:0; }
}
.invite-actions { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin-top:16px; }
.optional-fields { border-top:1px solid var(--line); padding:0 2px; }
.optional-fields summary { min-height:44px; padding:10px 0; cursor:pointer; font-size:var(--type-note); font-weight:var(--weight-semibold); }
.optional-fields summary span { color:var(--muted); font-weight:var(--weight-regular); }
.optional-fields>div,.optional-fields>label { display:grid; gap:10px; padding-bottom:12px; }
.valuation-mode { padding:10px; background:var(--surface-soft); border-radius:12px; }
.valuation-mode p { margin-bottom:6px; font-weight:var(--weight-semibold); }
.manage-record { display:flex; justify-content:space-between; flex-wrap:wrap; margin-top:12px; gap:6px; }
#modal {
  --sheet-inset:max(var(--gutter),env(safe-area-inset-left),env(safe-area-inset-right));
  max-height:min(92dvh,var(--sheet-viewport,100dvh)); bottom:var(--sheet-keyboard,0px);
  overflow:hidden; padding:0; box-shadow:0 -4px 24px #3c33360e;
}
#modal.sheet-editor { height:min(100dvh,var(--sheet-viewport,100dvh)); max-height:min(100dvh,var(--sheet-viewport,100dvh)); border-radius:0; }
#modal.sheet-editor #dialogBody { height:100%; }
#modal.sheet-editor .sheet-body.has-form,#modal.sheet-editor .sheet-body.has-form>form { flex:1; }
#modal.sheet-editor .form-fields { flex:1; align-content:start; }
#modal.sheet-editor .sheet-header { padding-top:max(12px,env(safe-area-inset-top)); }
#dialogBody { display:flex; flex-direction:column; max-height:inherit; min-height:0; }
#modal .sheet-header {
  flex:none; flex-wrap:nowrap; position:static; gap:12px; margin:0;
  padding:12px var(--sheet-inset) 8px; border-bottom:1px solid var(--line);
}
#dialogTitle { min-width:0; line-height:1.4; font-size:var(--type-section,1.25rem); outline:0; }
.sheet-header button { flex:none; border-radius:50%; }
.sheet-header button:active { background:var(--surface-soft); }
.sheet-body,.form-fields { min-height:0; overflow-y:auto; overscroll-behavior:contain; }
.sheet-body:not(.has-form) { padding:16px var(--sheet-inset) calc(20px + env(safe-area-inset-bottom)); }
.sheet-body.has-form { display:flex; flex-direction:column; overflow:hidden; }
.sheet-body.has-form>form { display:flex; flex-direction:column; min-height:0; gap:0; margin:0; }
.form-fields { display:grid; grid-template-columns:minmax(0,1fr); gap:var(--field-gap); padding:16px var(--sheet-inset); scroll-padding:12px; }
.sheet-footer { flex:none; padding:10px var(--sheet-inset) calc(10px + env(safe-area-inset-bottom)); border-top:1px solid var(--line); background:var(--surface); }
.sheet-footer>.primary { width:100%; min-height:52px; }
.sheet-footer>.primary:disabled { background:var(--neutral-soft); color:var(--text-sub); opacity:1; cursor:not-allowed; }
form[aria-busy="true"] .sheet-footer>.primary:disabled { cursor:progress; }
.confirm-actions,.decision-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.sheet-body input,.sheet-body select { font-size:max(1rem,16px); min-height:48px; scroll-margin:12px 0; }
.sheet-body input[name=amount] { font-size:var(--type-entry-amount-compact); font-variant-numeric:tabular-nums; }
.sheet-body label,.sheet-body .explain { font-size:var(--type-note,.875rem); line-height:1.5; }
.field-label { display:flex; align-items:baseline; flex-wrap:wrap; gap:4px 6px; min-width:0; }
.field-label>small { color:var(--text-sub); font-size:var(--type-caption); font-weight:var(--weight-regular); margin:0; }
.sheet-body label:has(>.field-label) { gap:var(--label-gap); align-content:start; }
.sheet-body .trade-input-pair label { display:grid; grid-template-columns:minmax(0,1fr); gap:var(--label-gap); align-content:start; }
.sheet-body label>.field-label+input,.sheet-body label>.field-label+select { display:block; margin:0; min-width:0; height:max(48px,3rem); line-height:1.5; padding:11px 12px; }
.sheet-body input[type=date] { min-width:0; max-width:100%; text-align:left; }
.sheet-body input[type=date]::-webkit-date-and-time-value { text-align:left; }
.sheet-body .field-hint,.sheet-body .error,.sheet-alert { font-size:var(--type-caption,.8125rem); }
.sheet-body .field-hint { margin:0; }
.sheet-body .breakdown { align-items:baseline; }
.sheet-body .breakdown>b,.sheet-body .breakdown>strong { min-width:0; text-align:right; }
.sheet-body .error:not(:empty) { border-radius:10px; padding:10px 12px; color:var(--danger); background:var(--danger-soft); }
.sheet-body .optional-fields summary { line-height:1.5; }
.sheet-body .primary,.sheet-body .sub,.decision-actions button { font-size:var(--type-label,.9375rem); }
.primary.destructive { background:var(--danger); color:white; }
#decision {
  inset:0 0 var(--sheet-keyboard,0px); margin:auto; width:min(360px,calc(100% - 32px)); height:fit-content;
  max-height:min(90dvh,calc(var(--sheet-viewport,100dvh) - 16px)); padding:20px; border-radius:18px; box-shadow:0 8px 32px #39343518;
}
#decision p { color:var(--muted); font-size:var(--type-note,.875rem); line-height:1.65; margin:8px 0 20px; }
#decision::backdrop { background:#332e323d; }
@media(max-height:290px) {
  #modal { overflow:auto; }
  #dialogBody { max-height:none; }
  #modal .sheet-header { padding-block:4px; }
  .sheet-body.has-form,.form-fields { overflow:visible; }
}

/* Account entry keeps one task per screen and a stable action above the keyboard. */
#mobile[hidden] { display:none; }
.auth-intro { display:grid; justify-items:start; gap:8px; padding:2px 0 10px; }
.auth-symbol { display:grid; place-items:center; width:48px; height:48px; margin-bottom:3px; border-radius:16px; background:var(--primary-soft); color:var(--accent); }
.auth-symbol .icon { width:var(--icon-nav); height:var(--icon-nav); }
.auth-intro h3 { font-size:var(--type-section); font-weight:var(--weight-bold); letter-spacing:-.03em; line-height:1.4; }
.auth-intro .explain { line-height:1.65; max-width:34ch; }
.auth-step { color:var(--accent); font-size:var(--type-caption); font-weight:var(--weight-semibold); letter-spacing:.01em; }
.auth-field { display:grid; gap:5px; min-width:0; }
.password-control { position:relative; min-width:0; }
.password-control input { padding-inline-end:54px; }
.password-control button { position:absolute; inset:0 0 0 auto; width:48px; min-height:48px; display:grid; place-items:center; color:var(--muted); border-radius:12px; }
.auth-form input[aria-invalid=true] { border-color:var(--danger); background:var(--danger-soft); }
.auth-form input::placeholder { color:var(--text-sub); opacity:1; font-weight:var(--weight-regular); }
.auth-form .error:empty { display:none; }
.auth-text-button { display:inline-flex; justify-content:center; align-items:center; gap:6px; min-height:48px; padding:10px 4px; color:var(--accent); font-size:var(--type-note); font-weight:var(--weight-semibold); border-radius:8px; }
.auth-text-button:disabled { color:var(--muted); opacity:1; cursor:default; }
.auth-text-button[hidden] { display:none; }
.auth-secondary { display:flex; flex-wrap:wrap; justify-content:center; gap:0 16px; }
.auth-help { display:grid; justify-items:center; gap:3px; padding-top:8px; text-align:center; }
.auth-help p { font-size:var(--type-caption); color:var(--muted); line-height:1.7; }
.auth-stack { display:grid; gap:10px; margin-top:22px; }
.auth-stack>.primary,.auth-stack>.sub { min-height:52px; width:100%; }
.consent-list { border-top:1px solid var(--line); border-bottom:1px solid var(--line); padding-block:6px; }
.consent-row { display:flex; align-items:center; gap:4px; min-width:0; }
.consent-row+.consent-row { border-top:1px solid var(--line); }
.consent-row label { display:flex; align-items:center; gap:10px; flex:1; min-height:64px; padding-block:8px; font-weight:var(--weight-medium); }
.sheet-body .consent-row input { appearance:auto; width:22px; height:22px; min-height:22px; padding:0; flex:none; border-radius:6px; accent-color:var(--action-fill); }
.required-label { color:var(--accent); font-weight:var(--weight-semibold); margin-inline-end:4px; font-size:var(--type-caption); }
.consent-row a { display:inline-flex; justify-content:center; align-items:center; min-width:48px; min-height:48px; color:var(--muted); font-size:var(--type-caption); text-decoration:underline; text-underline-offset:3px; }
.consent-row a .icon { width:var(--icon-small); height:var(--icon-small); margin-left:1px; }
.sheet-body .verification-input { min-height:60px; font-size:clamp(1.25rem,6vw,1.5rem); font-weight:var(--weight-semibold); text-align:center; letter-spacing:.22em; padding-inline:12px; font-variant-numeric:tabular-nums; }
.verification-clock { color:var(--accent); font-size:var(--type-caption); font-variant-numeric:tabular-nums; text-align:center; min-height:20px; }
.auth-notice { padding:12px 14px; border-radius:12px; background:var(--income-soft); color:var(--income); font-size:var(--type-note); line-height:1.6; }
.account-setup { padding:14px 0 6px; }
.approval-wait { padding-top:clamp(24px,7svh,58px); }
.approval-wait h1 { margin-top:18px; }
.approval-account { margin:24px 0; padding:16px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); }
.approval-account dt { color:var(--muted); font-size:var(--type-caption); }
.approval-account dd { margin:4px 0 0; overflow-wrap:anywhere; font-weight:var(--weight-semibold); }
.account-setup>h1 { margin:8px 0 12px; }
.account-setup>.explain { line-height:1.7; }
.account-setup .auth-intro { padding-block:12px 16px; }
.account-setup .field-hint { margin-top:14px; color:var(--muted); font-size:var(--type-caption); }
.setup-art { display:flex; align-items:center; justify-content:center; min-height:138px; margin:10px 0; border-radius:24px; background:linear-gradient(130deg,var(--primary-soft),var(--paper)); }
.setup-art img { display:block; }
.setup-verified { display:inline-flex; align-items:center; gap:6px; color:var(--income); font-size:var(--type-caption); font-weight:var(--weight-semibold); }
.setup-verified .icon { width:var(--icon-small); height:var(--icon-small); }
.setup-details { display:grid; gap:16px; margin:24px 0; }
.setup-details>div { display:flex; align-items:flex-start; gap:12px; }
.setup-details .icon { margin-top:2px; color:var(--accent); }
.setup-details p { display:grid; gap:5px; min-width:0; }
.setup-details b { font-size:var(--type-label); font-weight:var(--weight-semibold); }
.setup-details span { font-size:var(--type-note); color:var(--muted); line-height:1.6; }
.setup-asset-guide { display:grid; gap:18px; padding:22px 18px; border:1px solid var(--line); border-radius:18px; background:var(--surface); }
.setup-asset-guide>div { display:flex; gap:14px; align-items:center; }
.setup-asset-guide>div>span { display:grid; place-items:center; width:32px; height:32px; flex:none; border-radius:50%; background:var(--primary-soft); color:var(--accent); font-size:var(--type-note); font-weight:var(--weight-semibold); }
.setup-asset-guide p { display:grid; min-width:0; gap:4px; }
.setup-asset-guide b { font-size:var(--type-label); font-weight:var(--weight-semibold); }
.setup-asset-guide small { font-size:var(--type-caption); }
.setting-row[href] { text-decoration:none; color:inherit; }
.setting-info { display:grid; grid-template-columns:1fr auto; gap:4px 8px; padding:14px 0; border-bottom:1px solid var(--line); }
.setting-info>span { font-size:var(--type-caption); color:var(--muted); }
.setting-info>strong { grid-row:2; grid-column:1 / -1; font-size:var(--type-label); font-weight:500; overflow-wrap:anywhere; }
.setting-info>small { font-size:var(--type-caption); color:var(--income); }
@media(prefers-reduced-motion:reduce) {
 .auth-text-button,.password-control button { transition:none; }
}
