:root{--fw-bg-page: #f0fdf4;--fw-bg-top: #ecfdf5;--fw-bg-mid: #d1fae5;--fw-bg-bottom: #a7f3d0;--fw-green-900: #14532d;--fw-green-800: #166534;--fw-green-700: #15803d;--fw-green-600: #16a34a;--fw-green-500: #22c55e;--fw-green-300: #86efac;--fw-surface: #ffffff;--fw-surface-muted: #ecfdf5;--fw-surface-hover: #d1fae5;--fw-text: #1f2937;--fw-text-muted: #475569;--fw-border: rgba(20, 83, 45, .12);--fw-border-strong: rgba(20, 83, 45, .22);--fw-primary: var(--fw-green-600);--fw-primary-hover: var(--fw-green-700);--fw-link: var(--fw-green-700);--fw-focus-ring: var(--fw-green-300);--fw-shadow: rgba(20, 83, 45, .12);--fw-shadow-strong: rgba(20, 83, 45, .22);--fw-error: #c0392b;--fw-error-bg: #fdecea;--safe-bottom: env(safe-area-inset-bottom, 0px);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--radius: 12px}*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:1.125rem;line-height:1.45;background:radial-gradient(120% 80% at 50% 0%,var(--fw-bg-top) 0%,var(--fw-bg-mid) 35%,var(--fw-bg-page) 100%);color:var(--fw-text);min-height:100dvh;padding-bottom:calc(4.5rem + var(--safe-bottom))}body:has(.gate-screen){padding-bottom:0}.app-header{background:linear-gradient(135deg,var(--fw-green-700),var(--fw-green-600));color:#fff;padding:1rem 1rem .75rem;position:sticky;top:0;z-index:10;box-shadow:0 2px 12px var(--fw-shadow)}.app-header h1{margin:0;font-size:1.25rem;font-weight:700}.app-header p{margin:.25rem 0 0;font-size:.85rem;opacity:.92}.app-main{padding:1rem;max-width:32rem;margin:0 auto}.panel{background:var(--fw-surface);border:1px solid var(--fw-border);border-radius:var(--radius);padding:1rem;box-shadow:0 4px 16px var(--fw-shadow)}.panel h2{margin:0 0 .75rem;font-size:1.15rem;color:var(--fw-green-900)}.panel h3{margin:.75rem 0 .5rem;font-size:1rem;color:var(--fw-green-800)}.field{margin-bottom:.75rem}.field label{display:block;font-size:.9rem;color:var(--fw-text-muted);margin-bottom:.25rem}.field input,.field textarea,.field select{width:100%;padding:.7rem .8rem;border:1px solid var(--fw-border-strong);border-radius:8px;font-size:1.05rem;background:#fff;color:var(--fw-text)}.field input:focus,.field textarea:focus,.field select:focus{outline:2px solid var(--fw-focus-ring);border-color:var(--fw-link)}.gate-login-form{margin-top:.5rem}.gate-subscribe{margin-top:.75rem}.gate-subscribe a{color:var(--fw-link);font-weight:600}.gate-screen{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1.5rem 1rem 2rem;max-width:28rem;margin:0 auto}.gate-brand{text-align:center;margin-bottom:1.25rem}.gate-brand-compact{margin-bottom:1rem}.gate-logo{display:block;margin:0 auto .75rem;width:96px;height:96px;object-fit:contain}.gate-logo-sm{width:64px;height:64px}.gate-tagline{margin:0;color:var(--fw-green-800);font-size:1rem;font-weight:600}.gate-card{width:100%}.gate-footer{margin-top:1.5rem;font-size:.85rem;color:var(--fw-green-700);text-align:center}.gate-footer a{color:var(--fw-green-700)}.upgrade-panel h2{margin-bottom:.5rem}.upgrade-signed-in{margin:0 0 .75rem;padding:.5rem .75rem;background:var(--fw-surface-muted);border-radius:8px;font-size:.95rem;color:var(--fw-text)}.upgrade-list{margin:.75rem 0 0;padding-left:1.25rem;color:var(--fw-text-muted);font-size:.95rem;line-height:1.5}.upgrade-list li+li{margin-top:.35rem}.btn-row{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}.btn-row.stacked{flex-direction:column}.btn-row.stacked .btn{width:100%}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.7rem 1.1rem;border-radius:8px;border:none;font-size:1rem;font-weight:600;cursor:pointer;text-decoration:none;min-height:48px}.btn.primary{background:var(--fw-primary);color:#fff}.btn.primary:active{background:var(--fw-primary-hover)}.btn.secondary{background:var(--fw-surface);color:var(--fw-green-800);border:1px solid var(--fw-border-strong)}.btn.ghost{background:transparent;color:var(--fw-link);border:1px solid var(--fw-border)}.btn.danger{background:var(--fw-error-bg);color:var(--fw-error);border:1px solid #f5c6cb}.btn.small{padding:.45rem .7rem;font-size:.9rem;min-height:40px}.btn.btn-block{width:100%;min-height:52px}.btn:disabled{opacity:.55;cursor:not-allowed}.bottom-nav{position:fixed;left:0;right:0;bottom:0;display:flex;background:var(--fw-surface);border-top:1px solid var(--fw-border);padding-bottom:var(--safe-bottom);z-index:20}.bottom-nav button{flex:1;border:none;background:transparent;padding:.6rem .25rem;font-size:.8rem;color:var(--fw-text-muted);min-height:56px}.bottom-nav button.active{color:var(--fw-green-700);font-weight:700}.card{background:var(--fw-surface);border:1px solid var(--fw-border);border-radius:10px;padding:.85rem;margin-bottom:.6rem;box-shadow:0 2px 8px var(--fw-shadow)}.card strong{font-size:1.05rem}.card .meta{font-size:.9rem;color:var(--fw-text-muted);margin-top:.25rem}.card .actions{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.6rem}.badge{display:inline-block;font-size:.75rem;padding:.15rem .45rem;border-radius:999px;background:var(--fw-surface-muted);color:var(--fw-green-700);margin-left:.35rem}.error-text{color:var(--fw-error);font-size:.95rem;margin:.5rem 0;font-weight:600}.hint{font-size:.9rem;color:var(--fw-text-muted);margin:.5rem 0}.sync-status{font-size:.85rem;opacity:.95}.fab{position:fixed;right:1rem;bottom:calc(4.75rem + var(--safe-bottom));width:3.25rem;height:3.25rem;border-radius:50%;border:none;background:var(--fw-primary);color:#fff;font-size:1.5rem;box-shadow:0 4px 16px var(--fw-shadow-strong);cursor:pointer;z-index:15}[hidden]{display:none!important}.section-title{margin:0 0 .75rem;font-size:1.2rem;color:var(--fw-green-900)}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.75rem}.panel-header h2{margin:0;font-size:1.15rem;color:var(--fw-green-900)}.preview-section{border-top:1px solid var(--fw-border);padding-top:.5rem}.preview-row{display:flex;justify-content:space-between;gap:.75rem;padding:.45rem 0;font-size:1rem}.preview-label{color:var(--fw-text-muted)}.amount-stack{text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:.1rem}.amount-stack small{color:var(--fw-text-muted);font-size:.85rem}.nav-card{display:block;background:var(--fw-surface);border:1px solid var(--fw-border);border-radius:10px;padding:.9rem 1rem;margin-bottom:.6rem;text-decoration:none;color:inherit;box-shadow:0 2px 8px var(--fw-shadow)}.nav-card-title{display:block;font-weight:700;color:var(--fw-green-900)}.nav-card-hint{display:block;font-size:.9rem;color:var(--fw-text-muted);margin-top:.2rem}.card-static{color:inherit}.field-row{display:flex;flex-wrap:wrap;gap:.5rem}.field-row.align-end{align-items:flex-end}.field-row .field{flex:1 1 8rem}.field-narrow{flex:0 1 5.5rem!important}.flex-2{flex:2 1 12rem!important}fieldset.field{border:1px solid var(--fw-border);border-radius:8px;padding:.75rem}.radio,.checkbox{display:block;margin:.35rem 0;font-size:1rem}.disclosure{background:var(--fw-surface);border:1px solid var(--fw-border);border-radius:10px;padding:.65rem .75rem;margin:.75rem 0}.disclosure-bar{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.disclosure-summary{display:flex;flex-direction:column;gap:.15rem;font-size:.95rem;min-width:0}.disclosure-label{font-size:.8rem;color:var(--fw-text-muted);font-weight:600}.disclosure-body{margin-top:.75rem;padding-top:.5rem;border-top:1px solid var(--fw-border)}.invoice-group{margin-bottom:.75rem}.invoice-group summary{font-weight:700;cursor:pointer;padding:.5rem 0;color:var(--fw-green-900)}.filters-panel{margin-bottom:.75rem}.filters-toggle{margin-bottom:.5rem}.card-click{cursor:pointer}.card-top{display:flex;align-items:center;justify-content:space-between}.countdown-overdue{color:var(--fw-error);font-weight:600}.countdown-due_today{color:#b45309;font-weight:600}.countdown-due_soon{color:var(--fw-green-800);font-weight:600}.line-item{align-items:flex-end;margin-bottom:.5rem}.totals-panel{margin-top:.75rem}.badge-send_queued,.badge-send_failed{background:#fef3c7;color:#92400e}.badge-sent{background:#dbeafe;color:#1e40af}.badge-paid{background:#dcfce7;color:#166534}.paper-preview{box-shadow:0 8px 24px var(--fw-shadow)}.classic-paper{background:#fff;border:1px solid var(--fw-border);border-radius:8px;padding:1rem;margin-bottom:1rem;font-size:.95rem}.classic-header{display:flex;gap:.75rem;align-items:flex-start}.classic-header-logo{flex:0 0 60%;min-height:3rem}.classic-header-logo img{max-width:100%;max-height:4.5rem;object-fit:contain}.classic-biz-fallback{font-weight:700;color:var(--fw-green-900)}.classic-header-meta{flex:1;text-align:right;font-size:.9rem;line-height:1.4}.classic-title{font-size:1.25rem;font-weight:700;color:#2c3e50;margin-bottom:.35rem}.classic-divider{height:2px;background:#2c3e50;margin:.75rem 0 1rem}.classic-parties{display:flex;gap:1rem;margin-bottom:1rem}.classic-from{flex:0 0 60%}.classic-billto{flex:1;text-align:right}.classic-label{font-size:.75rem;font-weight:700;color:#666;letter-spacing:.04em}.classic-addr{margin:.25rem 0;font-family:inherit;white-space:pre-wrap;font-size:.9rem;color:var(--fw-text-muted)}.classic-lines{width:100%;border-collapse:collapse;font-size:.9rem;margin-bottom:.75rem}.classic-lines th,.classic-lines td{border:1px solid #ccc;padding:.45rem .5rem;text-align:left}.classic-lines th{background:#f4f4f4}.classic-lines .num{text-align:right}.classic-totals{margin-bottom:1rem}.classic-pay{background:#f4f4f4;border:1px solid #ccc;border-radius:8px;padding:.75rem;margin-bottom:.75rem;font-size:.9rem}.classic-notes,.classic-photos{margin-bottom:.75rem}.logo-header-preview{display:flex;gap:.5rem;border:1px solid var(--fw-border-strong);border-radius:8px;background:#fff;min-height:5.5rem;margin:.5rem 0;overflow:hidden}.logo-header-left{border-right:1px dashed var(--fw-border);padding:.35rem}.logo-header-slot{position:relative;width:100%;height:5rem;overflow:hidden;background:repeating-linear-gradient(-45deg,#f8fafc,#f8fafc 8px,#f1f5f9 8px,#f1f5f9 16px)}.logo-header-slot img{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;max-width:none}.logo-header-meta{padding:.5rem;text-align:right}.logo-editor .checkbox{margin-bottom:.5rem}.success-panel{text-align:center}.success-panel .btn-row{margin-top:1rem}.empty-state{background:var(--fw-surface);border:1px dashed var(--fw-border-strong);border-radius:var(--radius);padding:1.5rem 1rem;text-align:center}.empty-title{margin:0 0 .35rem;font-weight:700;color:var(--fw-green-900)}.photo-grid{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.photo-thumb{position:relative;width:4.5rem;height:4.5rem;border-radius:8px;overflow:hidden;border:1px solid var(--fw-border)}.photo-thumb img{width:100%;height:100%;object-fit:cover}.photo-thumb .remove-photo{position:absolute;top:0;right:0;min-height:28px;padding:.15rem .4rem}.logo-preview{margin-top:.5rem;max-width:10rem}.logo-preview img{max-width:100%;height:auto;border-radius:8px;border:1px solid var(--fw-border)}.sheet-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#14532d59;z-index:100;display:flex;align-items:flex-end;justify-content:center;padding:0;animation:fade-in .18s ease}.sheet{width:min(32rem,100%);max-height:85dvh;overflow:auto;background:var(--fw-surface);border-radius:16px 16px 0 0;padding:.75rem 1rem calc(1rem + var(--safe-bottom));box-shadow:0 -8px 32px var(--fw-shadow-strong);animation:slide-up .22s ease}.sheet-tall{max-height:92dvh}.sheet-handle{width:2.5rem;height:.3rem;border-radius:999px;background:var(--fw-border-strong);margin:.25rem auto .75rem}.sheet-title{margin:0 0 .5rem;color:var(--fw-green-900)}.sheet-body{margin-bottom:.75rem}.sheet-actions{display:flex;flex-direction:column;gap:.45rem}.sheet-actions .btn{width:100%}.toast-host{position:fixed;left:50%;bottom:calc(5.5rem + var(--safe-bottom));transform:translate(-50%);z-index:120;display:flex;flex-direction:column;gap:.4rem;width:min(22rem,calc(100% - 2rem));pointer-events:none}.toast{background:var(--fw-green-900);color:#fff;padding:.75rem 1rem;border-radius:10px;font-size:.95rem;font-weight:600;box-shadow:0 4px 16px var(--fw-shadow-strong);animation:fade-in .18s ease}.toast-error{background:var(--fw-error)}.toast-success{background:var(--fw-green-700)}.toast-out{opacity:0;transition:opacity .25s ease}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}a{color:var(--fw-link)}
