/* Lavo — sky-blue glass, Manrope headings, Lexend body (Dimau standard, Oct 2026) */
@font-face{font-family:Manrope;font-style:normal;font-weight:400 800;font-display:swap;src:url(/fonts/manrope-latin-v23.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Manrope;font-style:normal;font-weight:400 800;font-display:swap;src:url(/fonts/manrope-latin-ext-v23.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:Lexend;font-style:normal;font-weight:300 700;font-display:swap;src:url(/fonts/lexend-latin-v26.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Lexend;font-style:normal;font-weight:300 700;font-display:swap;src:url(/fonts/lexend-latin-ext-v26.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}

:root{--sky:#87CEEB;--sky-deep:#5DADE2;--sky-pale:#E3F4FB;--mist:#F4FAFD;--ink:#143B52;--ink2:#2E5C76;--ink3:#5E7E93;--line:rgba(20,59,82,.14);--glass:rgba(255,255,255,.62);--glass-strong:rgba(255,255,255,.82);--good:#1F7A4D;--bad:#B3261E;--warn:#9A6700;--radius:16px}
*{box-sizing:border-box}html{scroll-behavior:smooth}
body.lavo{margin:0;background:var(--sky) radial-gradient(1200px 600px at 10% -10%,#fff 0%,rgba(255,255,255,0) 60%),radial-gradient(900px 500px at 110% 10%,rgba(255,255,255,.6),rgba(255,255,255,0) 60%);color:var(--ink);font:400 15px/1.55 Lexend,system-ui,sans-serif;min-height:100vh}
h1,h2,h3,h4,.brand span[data-dimau-title]{font-family:Manrope,system-ui,sans-serif;letter-spacing:-.01em;color:var(--ink);margin:0 0 10px}
h1{font-size:clamp(30px,5vw,44px);font-weight:800;line-height:1.1}h2{font-size:20px;font-weight:700}h3{font-size:16px;font-weight:700}
p{margin:0 0 12px}.muted{color:var(--ink3)}.small{font-size:12.5px}.eyebrow{display:block;font:700 11px/1.4 Manrope,sans-serif;letter-spacing:.14em;color:var(--ink2);margin-bottom:8px}
.wrap{width:min(1120px,calc(100% - 32px));margin:0 auto}
.skip{position:absolute;left:-999px}.skip:focus{left:12px;top:12px;background:#fff;padding:8px 12px;z-index:99;border-radius:8px}

.glass{background:var(--glass);backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);border:1px solid rgba(255,255,255,.75);box-shadow:0 10px 30px rgba(20,59,82,.10),inset 0 1px 0 rgba(255,255,255,.9);border-radius:var(--radius)}
.card{padding:20px;margin:0 0 16px}.hero{padding:34px 28px;margin:22px 0;max-width:720px}.hero p{font-size:16px;color:var(--ink2)}
.grid.two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}.grid.two>*{min-width:0}.row-item select{min-width:0;max-width:55%}
main.wrap{padding:18px 0 48px}.view[hidden]{display:none}

.btn{font:600 14px/1 Lexend,sans-serif;border-radius:12px;padding:12px 16px;min-height:44px;border:1px solid var(--line);background:var(--glass-strong);color:var(--ink);cursor:pointer;transition:transform .12s,box-shadow .12s,background .12s}
.btn:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(20,59,82,.14)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}
.btn.primary{background:linear-gradient(180deg,#8FD3F0,var(--sky-deep));border-color:#4A9BD0;color:#0B2A3D}
.btn.ghost{background:transparent}.btn.small{padding:8px 12px;min-height:36px;font-size:13px}.btn.danger{color:var(--bad);border-color:rgba(179,38,30,.35)}
input,select,textarea{font:400 14px/1.4 Lexend,sans-serif;color:var(--ink);background:var(--glass-strong);border:1px solid var(--line);border-radius:10px;padding:10px 12px;min-height:44px}
textarea{width:100%;min-height:120px;resize:vertical;margin:10px 0}input[type=file]{padding:8px}
.inline-form{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.inline-form input,.inline-form select{flex:1 1 160px}
.chk{display:inline-flex;align-items:center;gap:8px;font-size:14px;min-height:44px}.chk input{min-height:0;width:18px;height:18px;accent-color:var(--sky-deep)}

.subnav{background:var(--glass-strong);border-bottom:1px solid var(--line)}.subnav .wrap{display:flex;gap:4px;overflow-x:auto;padding:6px 0}
.subnav button[role=tab]{font:600 14px/1 Manrope,sans-serif;border:0;background:transparent;color:var(--ink2);padding:12px 14px;min-height:44px;border-radius:10px;cursor:pointer;white-space:nowrap}
.subnav button[aria-selected=true]{background:var(--sky-pale);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line)}
.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:12px 14px;margin-bottom:14px}.toolbar .spacer{flex:1}
.toolbar select,.toolbar input{flex:1 1 150px}.toolbar input[type=search]{flex:2 1 220px}

.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}
.kpi{background:var(--mist);border:1px solid var(--line);border-radius:12px;padding:10px 12px}.kpi small{display:block;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3)}.kpi strong{font:700 20px/1.2 Manrope,sans-serif}
.kpi.inline{padding:6px 12px}.kpi.inline strong{font-size:16px}.kpi.neg strong{color:var(--bad)}.kpi.pos strong{color:var(--good)}

.list{display:grid;gap:8px}.row-item{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--mist);border:1px solid var(--line);border-radius:12px}
.row-item .grow{flex:1;min-width:0}.row-item .title{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-item .sub{font-size:12.5px;color:var(--ink3)}
.amt{font:700 15px/1 Manrope,sans-serif;white-space:nowrap}.amt.neg{color:var(--ink)}.amt.pos{color:var(--good)}

.tablewrap{overflow-x:auto;padding:8px}table{width:100%;border-collapse:collapse;font-size:14px}th{font:700 11px/1.4 Manrope,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--ink3);text-align:left;padding:10px 10px;border-bottom:1px solid var(--line)}
td{padding:10px;border-bottom:1px solid rgba(20,59,82,.07);vertical-align:middle}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
td select,td input{min-height:38px;padding:6px 8px;width:100%}td input.money{width:120px;text-align:right}
tr.over td.num.avail{color:var(--bad);font-weight:700}tr.ok td.num.avail{color:var(--good);font-weight:700}
.bars{display:grid;gap:8px}.bar{display:grid;grid-template-columns:140px 1fr 90px;gap:10px;align-items:center;font-size:13px}.bar .track{height:12px;background:var(--mist);border-radius:99px;overflow:hidden;border:1px solid var(--line)}.bar .fill{height:100%;background:linear-gradient(90deg,var(--sky),var(--sky-deep));border-radius:99px}.bar .v{text-align:right;font-weight:600;font-variant-numeric:tabular-nums}

.rule-form .row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:8px 0}.cond,.act{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:6px 0}.cond select,.act select{flex:0 1 160px}.cond input,.act input{flex:1 1 160px}
.rule-card .meta{font-size:12.5px;color:var(--ink3)}.chip{display:inline-block;background:var(--sky-pale);border:1px solid var(--line);border-radius:99px;padding:3px 10px;font-size:12px;margin:2px 4px 2px 0}

.sheet{position:fixed;inset:0;background:rgba(20,59,82,.35);display:grid;place-items:end center;z-index:50}.sheet[hidden]{display:none}
.sheet-panel{position:relative;width:min(560px,100%);max-height:88vh;overflow:auto;padding:22px;border-radius:20px 20px 0 0}.sheet-x{position:absolute;right:12px;top:10px;border:0;background:transparent;font-size:26px;cursor:pointer;color:var(--ink2);width:44px;height:44px}
.sheet .field{display:grid;gap:6px;margin:10px 0}.sheet .field label{font-size:12.5px;color:var(--ink3)}.sheet .actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);background:#143B52;color:#fff;padding:12px 16px;border-radius:12px;font-size:14px;z-index:60;box-shadow:0 8px 24px rgba(0,0,0,.2)}.toast[hidden]{display:none}

footer{margin-top:30px;background:var(--glass-strong);border-top:1px solid var(--line);color:var(--ink2);font-size:14px}
.footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:24px;padding:28px 0}.footer-grid strong{display:block;font-family:Manrope,sans-serif;margin-bottom:8px;color:var(--ink)}
.footer-grid button,.footer-grid a{display:block;background:none;border:0;padding:6px 0;color:var(--ink2);font:400 14px Lexend,sans-serif;cursor:pointer;text-decoration:none;text-align:left}.footer-grid a:hover,.footer-grid button:hover{color:var(--ink)}
.footer-bottom{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 0 22px;font-size:12px;color:var(--ink3)}

@media(max-width:760px){.grid.two{grid-template-columns:1fr}.footer-grid{grid-template-columns:1fr 1fr}.footer-grid>div:first-child{grid-column:1/-1}.bar{grid-template-columns:100px 1fr 80px}.hero{padding:24px 18px}table.tx th:nth-child(2),table.tx td:nth-child(2){display:none}.toolbar{padding:10px}}

/* v0.2: bills, reports, import flags */
.chip.dup{background:#FBE9E7;border-color:rgba(179,38,30,.35);color:var(--bad)}.late{color:var(--bad);font-weight:600}tr.dup td{background:rgba(179,38,30,.04)}
.chart{margin-top:6px}.chart svg text{font-family:Lexend,sans-serif}.legend{display:flex;gap:16px;font-size:12.5px;color:var(--ink2);margin:6px 0 10px}.legend i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-1px}
table.rep td.good{color:var(--good);font-weight:600}table.rep td.bad{color:var(--bad);font-weight:600}table.rep th:first-child,table.rep td:first-child{white-space:nowrap}
.tablewrap.scroll{overflow-x:auto}.tablewrap.scroll h2{padding:8px 10px 0}
#view-bills .inline-form input,#view-bills .inline-form select{flex:1 1 180px}
table.tx.imp td:nth-child(2){display:table-cell}

/* Phone: tables become stacked cards */
@media(max-width:760px){
  table.tx thead,table.budget thead{display:none}
  table.tx tr{display:grid;grid-template-columns:1fr auto;grid-template-areas:"date amt" "payee amt" "cat edit";gap:4px 10px;padding:12px 0;border-bottom:1px solid var(--line)}
  table.tx td{display:block;border:0;padding:0}
  table.tx td:nth-child(1){grid-area:date;font-size:12px;color:var(--ink3)}table.tx td:nth-child(2){display:none}
  table.tx td:nth-child(3){grid-area:payee;font-weight:600}table.tx td:nth-child(4){grid-area:cat}table.tx td:nth-child(4) select{width:100%}
  table.tx td:nth-child(5){grid-area:amt;align-self:center}table.tx td:nth-child(6){grid-area:edit;text-align:right}
  table.budget tr{display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-areas:"name name roll" "bud spent avail";gap:6px 10px;padding:12px 0;border-bottom:1px solid var(--line)}
  table.budget tr:has(th){display:block;padding:12px 0 4px}table.budget th{display:block;border:0;padding:0}
  table.budget td{display:block;border:0;padding:0}
  table.budget td:nth-child(1){grid-area:name;font-weight:600}
  table.budget td:nth-child(2){grid-area:bud}table.budget td:nth-child(2)::before,table.budget td:nth-child(3)::before,table.budget td:nth-child(5)::before{content:attr(data-l);display:block;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3);text-align:left}
  table.budget td:nth-child(3){grid-area:spent;text-align:left}table.budget td:nth-child(4){display:none}table.budget td:nth-child(5){grid-area:avail;text-align:left}
  table.budget td:nth-child(6){grid-area:roll;justify-self:end}table.budget td input.money{width:100%;text-align:left}
  .tablewrap{overflow:visible}.tablewrap.scroll{overflow-x:auto}
  table.tx.imp tr{grid-template-areas:"date amt" "payee amt" "cat tick"}
  table.tx.imp td:nth-child(2){display:block;grid-area:payee;font-weight:600}table.tx.imp td:nth-child(3){grid-area:cat;font-size:12.5px;color:var(--ink3)}table.tx.imp td:nth-child(4){grid-area:amt;align-self:center}table.tx.imp td:nth-child(5){grid-area:tick;text-align:right}
  table.tx.imp td input[type=checkbox]{width:22px;height:22px;min-height:0}
  table.rep{font-size:12.5px}table.rep th,table.rep td{padding:6px}
  .bar{grid-template-columns:minmax(70px,1fr) minmax(60px,2fr) auto;font-size:12.5px}.bar .v{font-size:12px}
  #schList .row-item,.rule-card{flex-wrap:wrap}#schList .row-item .grow,.rule-card .grow{flex:1 1 100%}
}
