:root{--bg:#f5efe6;--bg-2:#ece4d7;--paper:#fffaf2;--ink:#1f1a14;--ink-soft:#5a4f42;--line:#dccfb9;--terra:#b85c38;--terra-soft:#f1d9c9;--moss:#5d7553;--gold:#c39d3f;--red:#c0392b;--shadow-sm:0 1px 3px #3c28140f;--shadow:0 8px 24px #3c28141a;--shadow-lg:0 18px 50px #3c281426;--r-sm:10px;--r:16px;--r-lg:22px;--serif:"Fraunces", ui-serif, Georgia, serif;--sans:"Inter", system-ui, -apple-system, sans-serif;--safe-top:env(safe-area-inset-top,0px);--safe-bot:env(safe-area-inset-bottom,0px)}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}html{background:var(--bg-2)}body{background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior-y:none;min-height:100dvh;font-size:16px;line-height:1.5}button{font:inherit;color:inherit;cursor:pointer}input,textarea,select{font:inherit}a{color:inherit;text-decoration:none}.app-root{background:var(--bg);flex-direction:column;max-width:520px;min-height:100dvh;margin:0 auto;display:flex;position:relative}@media (width>=768px){.app-root{box-shadow:var(--shadow-lg);min-height:100dvh}}.app-header{padding:calc(20px + var(--safe-top)) 20px 12px;background:var(--bg);z-index:30;justify-content:space-between;align-items:flex-end;display:flex;position:sticky;top:0}.app-header.with-rule{border-bottom:1px solid var(--line)}.greet-eyebrow{text-transform:uppercase;letter-spacing:.18em;color:var(--ink-soft);font-size:11px;font-weight:600}.greet-name{font-family:var(--serif);letter-spacing:-.02em;margin-top:4px;font-size:28px;font-weight:600;line-height:1.05}.avatar{background:var(--terra);width:40px;height:40px;color:var(--paper);font-family:var(--serif);border-radius:50%;justify-content:center;align-items:center;font-size:16px;font-weight:600;display:flex}.avatar.button{border:0}.app-main{padding:0 20px calc(96px + var(--safe-bot));flex-direction:column;flex:1;gap:20px;display:flex}.section-h{justify-content:space-between;align-items:baseline;margin-top:4px;display:flex}.section-h h2{font-family:var(--serif);letter-spacing:-.01em;margin:0;font-size:18px;font-weight:600}.section-h .meta{text-transform:uppercase;letter-spacing:.14em;color:var(--ink-soft);font-size:11px;font-weight:500}.bottom-nav{z-index:40;padding:8px 12px calc(8px + var(--safe-bot));-webkit-backdrop-filter:saturate(180%)blur(20px);border-top:1px solid var(--line);background:#f5efe6eb;position:fixed;bottom:0;left:0;right:0}@media (width>=768px){.bottom-nav{max-width:520px;margin:0 auto;left:50%;transform:translate(-50%)}}.bottom-nav-inner{background:var(--paper);border-radius:var(--r);box-shadow:var(--shadow-sm);grid-template-columns:repeat(3,1fr);gap:4px;padding:6px;display:grid}.nav-btn{color:var(--ink-soft);letter-spacing:.04em;text-transform:uppercase;background:0 0;border:0;border-radius:10px;flex-direction:column;align-items:center;gap:2px;padding:8px 0;font-size:11px;font-weight:500;display:flex}.nav-btn .ic{font-size:18px;line-height:1}.nav-btn.is-active{background:var(--ink);color:var(--paper)}.nav-btn.is-active .ic{color:var(--paper)}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:16px}.card.flat{box-shadow:var(--shadow-sm);border-color:var(--line)}.card.dark{background:var(--ink);color:var(--paper);border-color:var(--ink)}.card.dark .label{color:var(--gold)}.alert{background:var(--terra-soft);border:1px solid #e9c4af;border-left:4px solid var(--terra);border-radius:var(--r);padding:14px 16px}.alert .lab{letter-spacing:.16em;text-transform:uppercase;color:var(--terra);font-size:11px;font-weight:700}.alert .ttl{font-family:var(--serif);letter-spacing:-.01em;margin:4px 0;font-size:18px;font-weight:600;line-height:1.2}.alert .sub{color:var(--ink-soft);font-size:13px;line-height:1.4}.alert.muted{background:var(--bg-2);border-color:var(--line);border-left-color:var(--gold)}.alert.muted .lab{color:var(--gold)}.kpis{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.kpi{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:14px 14px 12px}.kpi .v{font-family:var(--serif);letter-spacing:-.02em;font-size:26px;font-weight:700;line-height:1}.kpi .v.green{color:var(--moss)}.kpi .v.red{color:var(--red)}.kpi .l{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);margin-top:6px;font-size:11px;font-weight:500}.row-list{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);flex-direction:column;display:flex;overflow:hidden}.row{border-bottom:1px solid var(--line);text-align:left;width:100%;color:var(--ink);background:0 0;border-top:0;border-left:0;border-right:0;grid-template-columns:1fr auto;align-items:center;gap:12px;padding:12px 16px;font-size:14px;display:grid}.row:last-child{border-bottom:0}.row:active{background:var(--bg-2)}.row .nm{font-weight:600}.row .meta{color:var(--ink-soft);margin-top:2px;font-size:12px}.row .right{flex-direction:column;align-items:flex-end;gap:4px;display:flex}.pill{letter-spacing:.04em;border-radius:999px;align-items:center;padding:3px 10px;font-size:11px;font-weight:600;display:inline-flex}.pill.terra{background:var(--terra);color:var(--paper)}.pill.moss{background:var(--moss);color:var(--paper)}.pill.gold{background:var(--gold);color:var(--ink)}.pill.red{background:var(--red);color:var(--paper)}.pill.outline{border:1px solid var(--line);color:var(--ink-soft);background:0 0}.pill.soft-terra{background:var(--terra-soft);color:var(--terra)}.hero{background:linear-gradient(135deg, var(--terra) 0%, #9b4a2c 100%);color:var(--paper);padding:calc(24px + var(--safe-top)) 20px 20px;border-radius:0 0 28px 28px;margin:0 -20px;position:relative;overflow:hidden}.hero:after{content:"";background:var(--gold);opacity:.35;border-radius:50%;width:140px;height:140px;position:absolute;top:-40px;right:-40px}.hero .back{color:var(--paper);background:#fffaf22e;border:0;border-radius:12px;align-items:center;gap:4px;margin-bottom:14px;padding:6px 12px;font-size:12px;font-weight:500;display:inline-flex}.hero .nm{font-family:var(--serif);letter-spacing:-.02em;font-size:32px;font-weight:600;line-height:1}.hero .sb{opacity:.88;flex-wrap:wrap;gap:8px;margin-top:4px;font-size:13px;display:flex}.hero .saldo-bar{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fffaf229;border-radius:14px;justify-content:space-between;align-items:center;margin-top:16px;padding:12px 16px;display:flex}.hero .saldo-bar .l{text-transform:uppercase;letter-spacing:.16em;opacity:.85;font-size:11px;font-weight:600}.hero .saldo-bar .v{font-family:var(--serif);letter-spacing:-.02em;font-size:24px;font-weight:700}.hero .saldo-bar .v.warn{color:var(--gold)}.calendar{grid-template-columns:repeat(7,1fr);gap:4px;margin-top:4px;display:grid}.calendar .dow{text-transform:uppercase;letter-spacing:.14em;color:var(--ink-soft);text-align:center;padding-bottom:4px;font-size:10px;font-weight:600}.calendar .day{aspect-ratio:1;background:var(--bg-2);color:var(--ink-soft);border-radius:8px;justify-content:center;align-items:center;font-size:11px;font-weight:600;display:flex}.calendar .day.empty{background:0 0}.calendar .day.has{background:var(--moss);color:var(--paper)}.calendar .day.future{background:var(--terra-soft);color:var(--terra)}.calendar .day.today{box-shadow:inset 0 0 0 2px var(--ink)}.invoice-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);grid-template-columns:1fr auto;align-items:center;gap:8px;padding:14px 16px;display:grid}.invoice-card.ready{border-left:4px solid var(--terra)}.invoice-card.flagged{border-left:4px solid var(--gold);background:#fbf6ec}.invoice-card .nm{font-family:var(--serif);letter-spacing:-.01em;font-size:18px;font-weight:600;line-height:1.1}.invoice-card .det{color:var(--ink-soft);margin-top:4px;font-size:12px}.invoice-card .price{font-family:var(--serif);text-align:right;font-size:22px;font-weight:700}.invoice-card .price small{font-family:var(--sans);text-transform:uppercase;letter-spacing:.16em;color:var(--ink-soft);margin-top:2px;font-size:10px;font-weight:500;display:block}.cta-card{background:var(--ink);color:var(--paper);border-radius:var(--r);flex-direction:column;gap:6px;padding:18px;display:flex}.cta-card .label{letter-spacing:.18em;text-transform:uppercase;color:var(--gold);font-size:11px;font-weight:600}.cta-card .total{font-family:var(--serif);letter-spacing:-.02em;font-size:40px;font-weight:600;line-height:1}.cta-card .sub{color:#fffaf2b3;font-size:13px}.cta-card .actions{flex-direction:column;gap:8px;margin-top:12px;display:flex}.btn-primary{background:var(--terra);color:var(--paper);text-align:left;border:0;border-radius:12px;justify-content:space-between;align-items:center;padding:14px 16px;font-size:15px;font-weight:600;display:flex}.btn-secondary{color:var(--gold);border:1px solid var(--gold);text-align:left;background:0 0;border-radius:12px;justify-content:space-between;align-items:center;padding:12px 16px;font-size:14px;font-weight:500;display:flex}.btn{background:var(--ink);color:var(--paper);border:0;border-radius:12px;justify-content:center;align-items:center;gap:8px;width:100%;padding:14px 16px;font-size:15px;font-weight:600;display:flex}.btn.ghost{color:var(--ink);border:1px solid var(--line);background:0 0}.btn.terra{background:var(--terra)}.btn:disabled{opacity:.55;cursor:not-allowed}.spinner{border:2px solid var(--line);border-top-color:var(--terra);border-radius:50%;width:22px;height:22px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.skel{background:linear-gradient(100deg, var(--bg-2) 30%, #f0e8d9 50%, var(--bg-2) 70%);background-size:200% 100%;border-radius:8px;animation:1.4s ease-in-out infinite skel}@keyframes skel{0%{background-position:200% 0}to{background-position:-200% 0}}.login-screen{background:var(--bg);flex-direction:column;justify-content:center;align-items:center;min-height:100dvh;padding:24px;display:flex}.login-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);width:100%;max-width:380px;box-shadow:var(--shadow);padding:28px 22px}.login-card h1{font-family:var(--serif);letter-spacing:-.025em;margin:0 0 4px;font-size:28px;font-weight:600}.login-card .sub{color:var(--ink-soft);margin-bottom:18px;font-size:14px}.login-card label{letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);margin:12px 0 6px;font-size:11px;font-weight:600;display:block}.login-card input{background:var(--bg);border:1px solid var(--line);width:100%;color:var(--ink);border-radius:12px;outline:none;padding:12px 14px;font-size:16px}.login-card input:focus{border-color:var(--terra)}.login-card .err{color:var(--red);margin-top:8px;font-size:13px}.login-card .info{background:var(--bg-2);color:var(--ink-soft);border-radius:10px;margin-top:12px;padding:10px 12px;font-size:12px;line-height:1.45}.muted{color:var(--ink-soft)}.center{justify-content:center;align-items:center;display:flex}.empty{text-align:center;color:var(--ink-soft);padding:40px 20px;font-size:14px;font-style:italic}.error-banner{color:#7a1c1c;background:#fde8e8;border:1px solid #f5c6c6;border-radius:12px;padding:12px 14px;font-size:13px;line-height:1.45}.chips{flex-wrap:wrap;gap:6px;margin:6px 0;display:flex}.chip{background:var(--paper);border:1px solid var(--line);color:var(--ink-soft);border-radius:999px;padding:6px 12px;font-size:13px}.chip.is-active{background:var(--ink);color:var(--paper);border-color:var(--ink)}.search{background:var(--paper);border:1px solid var(--line);width:100%;color:var(--ink);border-radius:12px;outline:none;padding:11px 14px;font-size:15px}.search:focus{border-color:var(--terra)}
