/* Founder OS — Money module styles (M2). Prefer the shared classes in index.html (.card, .tbl, .row-i, .btn-line …).
   Mobile first (375 px, no sideways page scroll — wide tables scroll inside .mny-scroll); tokens only, so every skin works. */
.mny{min-width:0}
.mny-sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.mny-mut{color:var(--muted)}
.mny-pad{padding:14px}
.mny-unit{font-family:var(--body);font-size:14px;font-weight:500;color:var(--muted)}
.mny-actions{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}
.mny-deeper{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.mny-h2{font-size:15px;letter-spacing:.04em;margin:0}

/* overview cards */
.mny-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}
@media(min-width:640px){.mny-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(min-width:1024px){.mny-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.mny-card{display:flex;flex-direction:column;gap:6px;min-width:0;padding:16px}
.mny-klabel{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.mny-kval{font-family:var(--display);font-size:28px;font-weight:700;line-height:1.1;overflow-wrap:anywhere}
.mny-ksub{font-size:12.5px;color:var(--muted);line-height:1.45}
.mny-ksub b{color:var(--text);font-weight:600}
.mny-link{align-self:flex-start;margin-top:auto}
.mny-card .mny-link{margin-top:8px}
.mny-split{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:2px}
.mny-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px;vertical-align:middle;background:var(--faint)}
.mny-dot.crit{background:var(--red)}.mny-dot.ok{background:var(--green)}

/* invoice list */
.mny-filters{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.mny-chip{border:1px solid var(--border);border-radius:999px;padding:6px 12px;font-size:12.5px;color:var(--muted);background:var(--card2);min-height:36px}
.mny-chip:hover{color:var(--text);border-color:var(--jade)}
.mny-chip[aria-pressed="true"]{color:var(--on-accent);background:var(--jade);border-color:var(--jade);font-weight:600}
.mny-chip[aria-pressed="true"] .mny-mut{color:inherit;opacity:.8}
.mny-list{padding:4px 0}
.mny-inv{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;align-items:center;padding:12px 14px;border-bottom:1px solid var(--bsoft)}
.mny-inv:last-child{border-bottom:none}
.mny-inv-main{min-width:0}
.mny-inv-title{display:block;max-width:100%;text-align:left;font-weight:600;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:2px 0}
.mny-inv-title:hover{color:var(--jade2)}
.mny-inv-meta{font-size:12px;color:var(--muted)}
.mny-inv-amt{text-align:right;white-space:nowrap;display:flex;flex-direction:column;align-items:flex-end;gap:3px}
.mny-inv-acts{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:6px}
@media(min-width:760px){
 .mny-inv{grid-template-columns:minmax(0,1fr) auto auto}
 .mny-inv-acts{grid-column:auto;justify-content:flex-end}
}

/* invoice sheet + editor (inside the shared modal) */
.mny-sheet{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin:12px 0}
.mny-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
.mny-scroll:focus-visible{outline:2px solid var(--saffron);outline-offset:2px}
.mny-lines-tbl td{overflow-wrap:anywhere}
.mny-lines-tbl td.num{white-space:nowrap}
.mny-lines-tbl tfoot th,.mny-lines-tbl tfoot td{border-top:1px solid var(--border);padding-top:9px;font-weight:700}
.mny-lines-tbl tfoot th{text-align:right;font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.mny-form{display:grid;grid-template-columns:minmax(0,1fr);gap:6px 12px;margin:12px 0}
.mny-form>label{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-top:4px}
.mny-form input,.mny-form select,.mny-form textarea{width:100%;min-width:0;min-height:40px}
@media(min-width:640px){.mny-form{grid-template-columns:150px minmax(0,1fr);align-items:center}.mny-form>label{margin-top:0}}
.mny-lines{border:1px solid var(--bsoft);border-radius:12px;padding:10px;margin:6px 0 12px;min-width:0}
.mny-lines legend{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);padding:0 6px}
.mny-line{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:10px;border:1px solid var(--bsoft);border-radius:10px;margin-bottom:8px;background:var(--card2)}
.mny-line label{display:flex;flex-direction:column;gap:3px;font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);min-width:0}
.mny-line input,.mny-line select{width:100%;min-width:0;min-height:40px;font-family:var(--body);font-size:16px;text-transform:none;letter-spacing:0}
@media(min-width:640px){.mny-line input,.mny-line select{font-size:14px}}
.mny-line .mny-desc,.mny-line .mny-item{grid-column:1/-1}
.mny-usual{font-family:var(--body);text-transform:none;letter-spacing:0;font-size:11.5px;color:var(--muted);min-height:1em}
.mny-line-amt{display:flex;flex-direction:column;justify-content:flex-end;gap:3px;min-width:0}
.mny-line-amt b{font-family:var(--mono);font-size:13px}
.mny-rm{align-self:end;justify-self:end}
@media(min-width:900px){
 .mny-line{grid-template-columns:minmax(0,3fr) minmax(0,.8fr) minmax(0,1.2fr) minmax(0,2fr) minmax(0,1fr) auto;align-items:end}
 .mny-line .mny-desc,.mny-line .mny-item{grid-column:auto}
 .mny-line.noitem{grid-template-columns:minmax(0,3fr) minmax(0,.8fr) minmax(0,1.2fr) minmax(0,1fr) auto}
}
.mny-total{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;padding:12px;border-radius:10px;background:var(--card2);border:1px solid var(--bsoft);font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.mny-total b{font-family:var(--display);font-size:24px;letter-spacing:0;text-transform:none;color:var(--text)}
.mny-total .small{text-transform:none;letter-spacing:0;font-family:var(--body)}

/* expenses */
.mny-mhead{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 12px;margin-bottom:6px}
.mny-mtot{font-family:var(--mono);font-size:12px;color:var(--muted)}
.mny-exp{width:100%;text-align:left;gap:10px;padding:10px 6px}
.mny-exp .grow{display:flex;flex-direction:column;min-width:0}
.mny-exp .ttl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mny-exp .meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.mny-exp-d{font-family:var(--mono);font-size:11px;color:var(--muted);flex:0 0 auto;width:100px;white-space:nowrap}
.mny-exp-amt{font-family:var(--mono);font-size:13px;white-space:nowrap;flex:0 0 auto}
@media(max-width:420px){.mny-exp-d{width:auto;flex-basis:100%;order:-1}.mny-exp{flex-wrap:wrap;row-gap:2px}}

/* cashflow */
.mny-sentence{font-size:15px;font-weight:600;margin:0 0 12px;line-height:1.45}
.mny-bars{display:flex;align-items:stretch;gap:6px;height:150px;padding:6px 2px 0;border-bottom:1px solid var(--border)}
.mny-bcol{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center}
.mny-bpair{flex:1;width:100%;display:flex;align-items:flex-end;justify-content:center;gap:3px}
.mny-bpair i{display:block;width:38%;max-width:22px;min-height:2px;border-radius:4px 4px 0 0}
.mny-bpair i.in,.mny-legend i.in{background:var(--green)}
.mny-bpair i.out,.mny-legend i.out{background:var(--red)}
.mny-bpair i.none{background:transparent;border-bottom:2px dashed var(--bsoft);width:60%}
.mny-blabel{font-family:var(--mono);font-size:10px;color:var(--muted);padding:4px 0 2px;white-space:nowrap}
.mny-legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px;font-size:12px;color:var(--muted)}
.mny-legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px}
.mny-cf{min-width:420px}
.mny-cf th[scope="row"]{font-family:var(--body);font-size:13px;letter-spacing:0;text-transform:none;color:var(--text);font-weight:600;white-space:nowrap}

/* empty state */
.mny-empty{text-align:center;padding:30px 18px;display:flex;flex-direction:column;align-items:center;gap:14px}
.mny-empty p{max-width:460px;color:var(--muted)}

/* print document (#/money/doc:<id>) — paper on screen, the only thing on the page when printed */
.mny-doc-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:4px 0 14px}
.mny-doc{background:#fff;color:#1d1a16;border:1px solid var(--bsoft);border-radius:12px;padding:24px 18px;max-width:840px;margin:0 auto 24px;box-shadow:var(--shadow);font-family:var(--body);font-size:14px;line-height:1.5}
@media(min-width:640px){.mny-doc{padding:40px 44px}}
.mny-doc .fillin,.mny .mny-doc .fillin{color:#6a6152}
.mny-doc-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px;padding-bottom:18px;border-bottom:2px solid #1d1a16}
.mny-doc-from{min-width:0;max-width:100%;overflow-wrap:anywhere;font-size:13px;line-height:1.45;color:#3a342b}
.mny-doc-biz{font-family:var(--display);font-size:24px;font-weight:700;line-height:1.15;overflow-wrap:anywhere;max-width:100%;color:#1d1a16;margin-bottom:4px}
.mny-doc-biz .fillin{font-family:var(--body);font-size:14px;font-weight:500}
.mny-doc-addr{white-space:pre-wrap}
.mny-doc-title{text-align:right;margin-left:auto}
.mny-doc-kind{font-family:var(--mono);font-size:12px;letter-spacing:.3em;text-transform:uppercase;color:#6a6152}
.mny-doc-no{font-family:var(--mono);font-size:18px;font-weight:700}
.mny-doc-stamp{display:inline-block;margin-top:6px;padding:2px 10px;border:2px solid #6a6152;border-radius:6px;font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:#6a6152}
.mny-doc-stamp.paid{border-color:#2f7a4c;color:#2f7a4c}
.mny-doc-stamp.void{border-color:#a2352b;color:#a2352b}
.mny-doc-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px;margin:18px 0}
.mny-doc-meta>div,.mny-doc-meta>dl{min-width:0;max-width:100%;overflow-wrap:anywhere}
.mny-doc-lbl,.mny-doc-dates dt{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:#6a6152}
.mny-doc-to{font-weight:700;font-size:15px;overflow-wrap:anywhere}
.mny-doc-dates{display:grid;gap:6px;margin:0}
.mny-doc-dates dd{margin:0;font-weight:600}
.mny-doc-lines{width:100%;border-collapse:collapse;margin-top:6px}
.mny-doc-lines th{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:#6a6152;text-align:left;padding:8px 6px;border-bottom:1px solid #cfc6b4}
.mny-doc-lines td{padding:9px 6px;border-bottom:1px solid #e7e0d2;vertical-align:top;overflow-wrap:anywhere}
.mny-doc-lines .num{text-align:right;white-space:nowrap}
.mny-doc-lines td.num{font-family:var(--mono);font-size:13px}
@media(max-width:480px){.mny-doc{font-size:13px}.mny-doc-lines th,.mny-doc-lines td{padding:8px 3px}.mny-doc-lines td.num{font-size:11.5px}.mny-doc-lines th{letter-spacing:.06em}}
.mny-doc-lines tfoot th{text-align:right;border-bottom:none;padding-top:12px;color:#1d1a16}
.mny-doc-lines tfoot td{border-bottom:none;padding-top:12px;font-size:16px}
.mny-doc-note{margin-top:16px;white-space:pre-wrap;overflow-wrap:anywhere}
.mny-doc-pay{margin-top:18px;padding:12px 14px;border:1px solid #e7e0d2;border-radius:8px}
.mny-doc-paytext{white-space:pre-wrap;overflow-wrap:anywhere;margin-top:4px}
.mny-doc-foot{margin-top:22px;padding-top:12px;border-top:1px solid #e7e0d2;font-size:12px;color:#6a6152}
@media print{
 body:has(.mny-doc) .lightfield,body:has(.mny-doc) .grain,body:has(.mny-doc) #topnav,body:has(.mny-doc) #botnav,body:has(.mny-doc) #dock,
 body:has(.mny-doc) #more-backdrop,body:has(.mny-doc) #drawer,body:has(.mny-doc) #livestrip,body:has(.mny-doc) #maestro-dock,body:has(.mny-doc) #tab-ai,
 body:has(.mny-doc) #voice-root,body:has(.mny-doc) #cloud-launch,body:has(.mny-doc) #toast-root,body:has(.mny-doc) #modal-root,body:has(.mny-doc) .mny-noprint{display:none!important}
 body:has(.mny-doc){background:#fff!important;color:#000}
 body:has(.mny-doc) #app{display:block!important;min-height:0!important;height:auto!important}
 body:has(.mny-doc) #view{padding:0!important;margin:0!important;max-width:none!important;overflow:visible!important}
 /* anything else a module mounts on the page stays invisible; only the document shows */
 body:has(.mny-doc) *{visibility:hidden}
 body:has(.mny-doc) .mny-doc,body:has(.mny-doc) .mny-doc *{visibility:visible}
 .mny-doc{border:none!important;border-radius:0!important;box-shadow:none!important;max-width:none!important;margin:0!important;padding:0!important;background:#fff!important;color:#000!important}
 .mny-doc .mny-scroll{overflow:visible!important}
 .mny-doc-lines tr,.mny-doc-pay{page-break-inside:avoid;break-inside:avoid}
}

/* M2 fix round — notices, the deal link, empty filters, the stacked phone cashflow, contrast and touch targets */
.mny .fillin{color:var(--muted)}                                   /* "— fill in" at 4.5:1 on every skin (the faint token is not) */
.mny-assume{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:12px 16px;margin:0 0 14px;border-color:var(--amber)}
.mny-assume-t{font-weight:600}
.mny-warn{color:var(--text);border-left:3px solid var(--amber);padding:6px 10px;margin:10px 0;background:var(--card2);border-radius:6px}
.mny-fromdeal{margin:2px 0 8px}
.mny-emptyf{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.mny-emptyf p{margin:0;color:var(--muted)}
/* noir: red / green text tokens are below 4.5:1 on its cards — lift them toward the text colour (still red / green) */
[data-theme="noir"] .mny .neg,[data-theme="noir"] .mny .bdg.red{color:color-mix(in srgb,var(--red) 55%,var(--text))}
[data-theme="noir"] .mny .bdg.red{border-color:color-mix(in srgb,var(--red) 55%,var(--text))}
[data-theme="noir"] .mny .pos,[data-theme="noir"] .mny .bdg.green{color:color-mix(in srgb,var(--green) 55%,var(--text))}
[data-theme="noir"] .mny .btn-line.danger{color:color-mix(in srgb,var(--red) 55%,var(--text));border-color:color-mix(in srgb,var(--red) 55%,var(--text))}
/* table heads, the pressed filter chip and the "Sent" badge: nudged toward the text colour so they clear 4.5:1 on light skins too */
.mny .tbl th{color:var(--muted)}
.mny-chip[aria-pressed="true"]{background:color-mix(in srgb,var(--jade) 85%,var(--text));border-color:color-mix(in srgb,var(--jade) 85%,var(--text))}
.mny .bdg.saffron{color:color-mix(in srgb,var(--saffron) 80%,var(--text));border-color:color-mix(in srgb,var(--saffron) 80%,var(--text))}
/* phone: each cashflow month is a small card, every number keeps its column name (nothing cut off) */
@media(max-width:560px){
 .mny-cf{min-width:0;width:100%}
 .mny-cf thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
 .mny-cf tbody tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px 10px;padding:10px 2px;border-bottom:1px solid var(--bsoft)}
 .mny-cf tbody tr:last-child{border-bottom:none}
 .mny-cf tbody th[scope="row"]{grid-column:1/-1;border:0;padding:0}
 .mny .mny-cf tbody td{border:0;padding:0;text-align:left;white-space:normal;overflow-wrap:anywhere;font-size:13px}
 .mny-cf tbody td::before{content:attr(data-label);display:block;font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
 .mny-cf tbody td[colspan]{grid-column:1/-1}
 .mny-cf tbody td[colspan]::before{content:none}
 .mny-cf tr:hover td{background:none}
}
/* touch: every control at least 44 px tall */
@media(pointer:coarse){
 .mny-chip{min-height:44px;padding:8px 14px}
 .mny-inv-title{display:flex;align-items:center;min-height:44px;padding:0}
 .mny-form input,.mny-form select,.mny-form textarea,.mny-line input,.mny-line select{min-height:44px}
 .mny-exp{min-height:48px}
}
