:root{color-scheme:dark;--bg:#0d110f;--panel:#141b16;--ink:#edf4ea;--muted:#829483;--line:#49614d;--line-soft:#27382b;--green:#c8f59d;--yellow:#f4db86;--red:#ffae9e}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:13px/1.32 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace}button,input,select{font:inherit}button{min-height:34px;padding:5px 7px;border:1px solid var(--line);border-radius:2px;background:transparent;color:var(--ink);cursor:pointer}button:hover,button:focus-visible{border-color:var(--green);color:var(--green);outline:0}.app-shell{width:min(100%,620px);margin:auto;padding:12px max(10px,env(safe-area-inset-right)) 24px max(10px,env(safe-area-inset-left));overflow:hidden}.terminal-header{text-align:center;position:relative;padding:1px 0 3px;border-bottom:1px solid var(--line-soft)}.terminal-header pre,dialog pre,.year-close{margin:0;color:var(--ink);font-size:clamp(14px,4vw,17px);line-height:1.08}.terminal-header #save-state{position:absolute;right:1px;top:1px;color:var(--muted);font-size:9px}.nav{display:flex;justify-content:center;gap:4px;margin:6px 0 0}.nav button{min-width:58px;min-height:27px;padding:2px 6px;border:0;color:var(--muted);font-size:10px}.nav button:hover,.nav button:focus-visible{background:var(--panel)}.ledger-section{margin-top:0}.month{padding-top:14px}.month-title{text-align:center;color:var(--muted);letter-spacing:.04em;line-height:1.25;padding:3px 0}.month-title br:first-child,.month-title br:last-child{color:var(--line)}.week-title{display:grid;grid-template-columns:1fr 8ch 1fr;align-items:baseline;margin:9px 0 3px;color:var(--ink);font-size:12px;letter-spacing:.02em}.week-title span:first-child{text-align:right;padding-right:1ch}.week-title span:last-child{text-align:left;color:var(--muted)}.row-columns{display:grid;grid-template-columns:5ch 1ch 3ch minmax(8ch,1fr) 1ch 7ch 1ch 3ch;column-gap:.3ch;align-items:baseline;width:100%;white-space:nowrap}.movement,.cash-line{display:block;width:100%;padding:2px 2px;border:0;background:none;text-align:left;white-space:nowrap;font-size:12px}.movement:hover,.movement:focus-visible{background:var(--panel)}.movement-category{overflow:hidden;text-overflow:ellipsis}.movement-counter{color:var(--muted);overflow:hidden}.amount{text-align:right}.separator{color:var(--muted);text-align:center}.movement-status{padding-left:.1ch}.income .amount,.cash-line .amount{color:var(--green)}.status-pending{color:var(--yellow);font-style:normal}.status-ok{color:var(--ink);font-style:normal}.cash-line{margin:5px 0 2px;padding-block:4px;border-block:1px solid var(--line-soft);font-weight:700}.cash-line .movement-category{color:var(--green)}.done-note,.close-title{width:29ch;margin:7px auto 5px;padding:2px 0;text-align:center;color:var(--ink);white-space:nowrap;border-left:1px solid var(--line);border-right:1px solid var(--line);line-height:1.05}.done-note::before,.close-title::before{content:'┌─────────────────────────────┐';display:block;color:var(--line)}.done-note::after,.close-title::after{content:'└─────────────────────────────┘';display:block;color:var(--line)}.month-close{margin:12px 0 0}.month-close .close-title{margin-bottom:4px;color:var(--green)}.month-close p{margin:1px 0;display:grid;grid-template-columns:5ch 1ch 3ch minmax(8ch,1fr);column-gap:.3ch;white-space:nowrap}.month-close p span{grid-column:1}.month-close p b{grid-column:4;text-align:right;color:var(--green);font-weight:400}.year-close{display:block;margin:23px auto 0;text-align:center}.empty-ledger{padding:24px 8px;color:var(--muted);text-align:center}dialog{width:min(calc(100% - 20px),440px);padding:0;border:1px solid var(--line);border-radius:2px;background:var(--bg);color:var(--ink)}dialog::backdrop{background:#000c}dialog form{padding:14px}dialog pre{text-align:center;font-size:13px}.dialog-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.dialog-head h1,dialog h1{margin:0;font-size:14px;font-weight:400}.close{border:0;padding:0 6px;font-size:22px}.close:hover{background:transparent}dialog label{display:block;margin:9px 0;color:var(--muted);font-size:10px}dialog input:not([type=checkbox]),dialog select{display:block;width:100%;min-height:39px;margin-top:4px;padding:8px;border:1px solid var(--line);border-radius:2px;background:var(--panel);color:var(--ink)}#onboarding-dialog label{font-size:13px;color:var(--ink)}#onboarding-dialog label input{display:inline-block;width:55%;margin:0 5px}.form-help,dialog p{font-size:10px;color:var(--muted)}.form-error{min-height:14px;color:var(--red)}.dialog-actions,.utility-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px}.utility-actions{margin:12px 0}.danger{border-color:#a45149;color:var(--red)}.delete-preview{color:var(--ink);font-size:11px}.chat-output{min-height:82px;margin:7px 0 10px;padding:8px;border:1px solid var(--line);color:var(--ink);font-size:11px;line-height:1.45;white-space:pre-wrap}.movement-note{width:29ch;margin:2px auto 6px;color:var(--muted);font-size:10px;text-align:center}.hito-option{color:var(--ink)}.hito-option input{margin-right:6px}#open-cloud-account,#install-app,#cloud-signout{width:100%;margin-top:8px}#open-cloud-account,#install-app{color:var(--green)}.primary{margin-top:8px;width:100%}.dialog-actions .primary{margin-top:0}@media(max-width:360px){.row-columns{grid-template-columns:4.5ch 1ch 2.5ch minmax(7.5ch,1fr) 1ch 6.5ch 1ch 2.5ch;column-gap:.2ch}.movement,.cash-line{font-size:11px}.week-title{font-size:11px}.done-note,.close-title{font-size:11px}.terminal-header #save-state{display:none}}
body.auth-checking .app-shell,body.auth-locked .app-shell{visibility:hidden}body.auth-locked{overflow:hidden}body.auth-locked #cloud-dialog{max-width:390px}body.auth-locked #cloud-dialog::backdrop,body.auth-checking #cloud-dialog::backdrop{background:#0d110f}
/* Cloud state is intentionally compact: it remains visible without competing with CASH. */
.terminal-header #sync-state{position:absolute;left:1px;top:1px;font-size:9px}.sync-state[data-state="local"],.sync-state[data-state="synced"]{color:var(--green)}.sync-state[data-state="checking"],.sync-state[data-state="syncing"],.sync-state[data-state="pending"]{color:var(--yellow)}.sync-state[data-state="offline"],.sync-state[data-state="conflict"]{color:var(--red)}.conflict-copy{display:flex;justify-content:space-between;margin:8px 0;padding:8px;border:1px solid var(--line-soft);font-size:10px}.conflict-copy b{color:var(--green);font-weight:400}.conflict-actions{display:grid;gap:6px;margin-top:12px}.conflict-actions .primary{margin:0}
