*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--axis-steel: #5c6b7a;--axis-steel-dark: #4a5664;--bg-primary: #ffffff;--bg-secondary: #fafbfc;--bg-panel: #ffffff;--bg-panel-hover: #f8f9fa;--bg-input: #ffffff;--bg-sidebar: #1a1f2b;--bg-sidebar-hover: #252b38;--border: rgba(0, 0, 0, .08);--border-light: rgba(0, 0, 0, .05);--ink: #1a1a2e;--ink-muted: #6b7280;--ink-faint: #9ca3af;--text-white: #ffffff;--success: #059669;--warning: #d97706;--danger: #dc2626;--font: "Helvetica Neue", Helvetica, Arial, sans-serif}html,body{font-family:var(--font);background:var(--bg-primary);color:var(--ink);letter-spacing:-.01em;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;min-height:100vh}#root{min-height:100vh}a{color:var(--axis-steel-dark);text-decoration:none}a:hover{color:var(--ink)}.app-layout{display:flex;min-height:100vh}.sidebar{width:220px;background:linear-gradient(180deg,#1a1f2b,#2e3d4a);padding:32px 0;display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100}.sidebar-brand{padding:0 24px 28px;border-bottom:1px solid rgba(255,255,255,.08)}.sidebar-brand h1{font-size:14px;font-weight:300;color:var(--text-white);letter-spacing:.05em;margin-bottom:2px}.sidebar-brand span{font-size:9px;color:#ffffff59;letter-spacing:.15em;text-transform:uppercase}.sidebar-nav{padding:16px 0;flex:1}.sidebar-nav a{display:flex;align-items:center;gap:10px;padding:10px 24px;color:#ffffff80;font-size:13px;font-weight:400;letter-spacing:.01em;transition:all .15s}.sidebar-nav a:hover{color:#fffc;background:#ffffff0d}.sidebar-nav a.active{color:var(--text-white);background:#ffffff14;border-left:2px solid var(--text-white)}.sidebar-footer{padding:16px 24px;border-top:1px solid rgba(255,255,255,.08)}.sidebar-footer button{background:none;border:none;color:#ffffff59;font-size:11px;cursor:pointer;font-family:var(--font);letter-spacing:.02em}.sidebar-footer button:hover{color:#ffffffb3}.main-content{margin-left:220px;flex:1;padding:40px 48px;min-height:100vh;background:var(--bg-primary)}.page-header{margin-bottom:32px}.page-header h2{font-size:24px;font-weight:300;color:var(--ink);letter-spacing:.02em}.page-header p{font-size:12px;color:var(--ink-faint);margin-top:4px;letter-spacing:.02em}.panel{background:var(--bg-panel);border:1px solid var(--border);padding:24px;margin-bottom:24px}.panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.panel-title{font-size:9px;font-weight:600;color:var(--ink-faint);letter-spacing:.12em;text-transform:uppercase}.stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:32px}.stat-card{background:var(--bg-panel);border:1px solid var(--border);padding:20px 24px}.stat-card .label{font-size:9px;font-weight:600;color:var(--ink-faint);letter-spacing:.12em;text-transform:uppercase;margin-bottom:8px}.stat-card .value{font-size:28px;font-weight:300;color:var(--ink);letter-spacing:-.02em}.stat-card .value.accent{color:var(--axis-steel-dark)}.stat-card .sub{font-size:10px;color:var(--ink-faint);margin-top:4px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th{text-align:left;font-size:9px;font-weight:600;color:var(--ink-faint);letter-spacing:.1em;text-transform:uppercase;padding:12px 16px;border-bottom:1px solid var(--border);white-space:nowrap}td{padding:12px 16px;font-size:13px;color:var(--ink-muted);border-bottom:1px solid var(--border-light);white-space:nowrap}tr:hover td{background:var(--bg-panel-hover)}td .client-name{color:var(--ink);font-weight:500}td .company{color:var(--ink-faint);font-size:11px}.badge{display:inline-block;padding:2px 8px;font-size:9px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.badge-draft{background:#f3f4f6;color:#9ca3af}.badge-open{background:#eff6ff;color:#3b82f6}.badge-paid{background:#ecfdf5;color:#059669}.badge-void{background:#f3f4f6;color:#9ca3af;text-decoration:line-through}.badge-refunded{background:#fef2f2;color:#dc2626}.badge-invoice{background:#eff6ff;color:#3b82f6}.badge-receipt{background:#ecfdf5;color:#059669}.badge-cash{background:#f3f4f6;color:#6b7280}.badge-stripe{background:#f5f3ff;color:#7c3aed}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-group{display:flex;flex-direction:column;gap:6px}.form-group.full{grid-column:1 / -1}.form-group label{font-size:9px;font-weight:600;color:var(--ink-faint);letter-spacing:.1em;text-transform:uppercase}input,select,textarea{background:var(--bg-input);border:1px solid var(--border);color:var(--ink);padding:10px 14px;font-size:13px;font-family:var(--font);letter-spacing:-.01em;outline:none;transition:border-color .15s}input:focus,select:focus,textarea:focus{border-color:var(--axis-steel)}input::placeholder,textarea::placeholder{color:var(--ink-faint)}textarea{resize:vertical;min-height:80px}select{cursor:pointer}.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 18px;font-size:12px;font-weight:500;font-family:var(--font);letter-spacing:.02em;cursor:pointer;border:1px solid transparent;transition:all .15s;white-space:nowrap}.btn-primary{background:linear-gradient(135deg,#2e3d4a,#5c6b7a);color:var(--text-white);border-color:transparent}.btn-primary:hover{box-shadow:0 4px 12px #5c6b7a33}.btn-secondary{background:transparent;color:var(--ink-muted);border-color:var(--border)}.btn-secondary:hover{color:var(--ink);border-color:var(--axis-steel)}.btn-danger{background:transparent;color:var(--danger);border-color:var(--danger)}.btn-danger:hover{background:var(--danger);color:var(--text-white)}.btn-ghost{background:transparent;border:none;color:var(--ink-faint);padding:6px 10px}.btn-ghost:hover{color:var(--axis-steel-dark)}.btn-sm{padding:5px 12px;font-size:11px}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-row{display:flex;gap:10px;margin-top:20px}.actions-cell{display:flex;gap:4px}.filters-bar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:20px}.filters-bar input,.filters-bar select{padding:7px 12px;font-size:12px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:var(--bg-panel);border:1px solid var(--border);width:520px;max-width:90vw;max-height:85vh;overflow-y:auto;padding:32px;box-shadow:0 8px 30px #00000014}.modal h3{font-size:16px;font-weight:400;color:var(--ink);letter-spacing:.01em;margin-bottom:16px}.modal p{font-size:13px;color:var(--ink-muted);margin-bottom:20px;line-height:1.6}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--bg-primary)}.login-box{width:400px;padding:48px 40px;background:var(--bg-panel);border:1px solid var(--border);box-shadow:0 1px 3px #0000000a}.login-box h1{font-size:24px;font-weight:300;color:var(--ink);letter-spacing:.05em;margin-bottom:4px}.login-box .subtitle{font-size:9px;color:var(--ink-faint);letter-spacing:.15em;text-transform:uppercase;margin-bottom:36px}.login-box .form-group{margin-bottom:16px}.login-box .btn{width:100%;justify-content:center;margin-top:8px}.error-msg{font-size:12px;color:var(--danger);margin-top:8px}.success-msg{font-size:12px;color:var(--success);margin-top:8px}.totp-setup{text-align:center}.totp-setup img{margin:20px 0;border:1px solid var(--border)}.totp-setup .secret-key{font-family:SF Mono,Fira Code,monospace;font-size:12px;color:var(--axis-steel-dark);background:#f8f9fa;padding:8px 16px;display:inline-block;margin:12px 0;letter-spacing:.08em;border:1px solid var(--border)}.empty-state{text-align:center;padding:60px 20px;color:var(--ink-faint)}.empty-state p{font-size:13px}.loading{display:flex;align-items:center;justify-content:center;padding:60px;color:var(--ink-faint);font-size:13px;letter-spacing:.02em}.builder-layout{display:grid;grid-template-columns:1fr 460px;gap:32px;align-items:start}.builder-form{min-width:0}.builder-preview{position:sticky;top:24px}.preview-label{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.preview-label span:first-child{font-size:9px;font-weight:600;color:var(--ink-faint);letter-spacing:.12em}.preview-hint{font-size:10px;color:var(--ink-faint);font-weight:400;letter-spacing:.02em}.preview-frame{border:1px solid var(--border);background:#f8f9fa;padding:20px;box-shadow:0 2px 8px #0000000a;max-height:calc(100vh - 140px);overflow-y:auto}.source-tabs{display:grid;grid-template-columns:1fr 1fr;gap:10px}.source-tab{display:flex;align-items:center;gap:10px;padding:14px 16px;background:var(--bg-input);border:2px solid var(--border);font-size:13px;font-family:var(--font);color:var(--ink-muted);cursor:pointer;transition:all .15s}.source-tab:hover{border-color:var(--axis-steel);color:var(--ink)}.source-tab.active{border-color:var(--axis-steel-dark);background:#5c6b7a0a;color:var(--ink);font-weight:500}.source-icon{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;background:var(--bg-secondary);font-size:14px;font-weight:700;color:var(--axis-steel)}.stripe-charges-list{display:flex;flex-direction:column;gap:6px;max-height:200px;overflow-y:auto}.stripe-charge-btn{display:grid;grid-template-columns:120px 1fr 90px;gap:8px;align-items:center;padding:10px 12px;background:var(--bg-input);border:1px solid var(--border);cursor:pointer;font-family:var(--font);text-align:left;transition:all .15s}.stripe-charge-btn:hover{border-color:var(--axis-steel);background:#5c6b7a0a}.sc-amount{font-size:13px;font-weight:600;color:var(--ink)}.sc-desc{font-size:12px;color:var(--ink-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sc-date{font-size:11px;color:var(--ink-faint);text-align:right}.section-tabs{display:flex;gap:0;margin-bottom:0;border-bottom:1px solid var(--border)}.section-tabs button{padding:12px 20px;font-size:12px;font-weight:500;font-family:var(--font);color:var(--ink-faint);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;letter-spacing:.02em;transition:all .15s}.section-tabs button:hover{color:var(--ink)}.section-tabs button.active{color:var(--ink);border-bottom-color:var(--axis-steel-dark)}.items-header{display:grid;grid-template-columns:1fr 60px 90px 90px 32px;gap:8px;padding:0 0 8px;border-bottom:1px solid var(--border);margin-bottom:8px}.items-header span{font-size:9px;font-weight:600;color:var(--ink-faint);letter-spacing:.1em;text-transform:uppercase}.ih-amt{text-align:right}.item-row{display:grid;grid-template-columns:1fr 60px 90px 90px 32px;gap:8px;margin-bottom:8px;align-items:center}.item-row input{font-size:13px}.ir-qty{text-align:center}.ir-amt{text-align:right;font-size:13px;font-weight:500;color:var(--ink)}.ir-x{color:var(--danger)!important;padding:4px 8px!important}.ir-x:disabled{opacity:.3}.items-summary{border-top:1px solid var(--border);margin-top:16px;padding-top:16px}.is-row{display:flex;justify-content:space-between;margin-bottom:6px;font-size:13px;color:var(--ink-muted)}.is-total{border-top:1px solid var(--border);padding-top:12px;margin-top:8px;font-size:16px;font-weight:600;color:var(--ink)}.builder-actions{display:flex;gap:10px;margin-top:4px}.invoice-preview{background:#fff;box-shadow:0 1px 4px #00000014;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:10px;color:#1a1a2e;line-height:1.4}.ip-header{background:#1a1f2b;padding:24px 28px;display:flex;justify-content:space-between;align-items:flex-start}.ip-company{font-size:14px;font-weight:700;color:#fff;letter-spacing:.04em}.ip-org{font-size:8px;color:#8a9baa;letter-spacing:.12em;margin-top:2px}.ip-type{font-size:11px;font-weight:700;color:#fff;text-align:right}.ip-number{font-size:9px;color:#8a9baa;margin-top:2px}.ip-body{padding:20px 28px 24px}.ip-meta{display:flex;justify-content:space-between;margin-bottom:24px}.ip-label{font-size:7px;font-weight:700;color:#8a9baa;letter-spacing:.12em;margin-bottom:6px}.ip-client-name{font-size:10px;font-weight:700;color:#1a1a2e;margin-bottom:2px}.ip-client-co{font-size:9px;color:#4b5563}.ip-client-email{font-size:8px;color:#6b7280;margin-top:1px}.ip-details{text-align:right}.ip-detail-row{display:flex;justify-content:flex-end;gap:16px;margin-bottom:3px;font-size:8px}.ip-detail-row span{color:#6b7280}.ip-detail-row strong{color:#1a1a2e;font-weight:600;min-width:60px;text-align:right}.ip-table{margin-bottom:16px}.ip-table-head{display:grid;grid-template-columns:24px 1fr 36px 50px 60px;gap:4px;padding:6px 8px;background:#f1f5f9;font-size:7px;font-weight:700;color:#64748b;letter-spacing:.08em}.ip-table-row{display:grid;grid-template-columns:24px 1fr 36px 50px 60px;gap:4px;padding:6px 8px;border-bottom:1px solid #f1f5f9}.ip-row-alt{background:#fafbfc}.ip-row-idx{font-size:8px;color:#9ca3af}.ip-row-desc{font-size:9px;color:#1a1a2e}.ip-row-val{font-size:8px;color:#4b5563;text-align:right}.ip-col-amt,.ip-row-amt{text-align:right;font-size:9px;font-weight:600;color:#1a1a2e}.ip-totals{display:flex;flex-direction:column;align-items:flex-end;margin-bottom:16px}.ip-total-row{display:flex;justify-content:space-between;width:180px;font-size:9px;margin-bottom:4px}.ip-total-row span:first-child{color:#6b7280}.ip-total-row span:last-child{color:#1a1a2e;font-weight:500}.ip-total-main{display:flex;justify-content:space-between;width:180px;background:#1a1f2b;color:#fff;padding:8px 12px;margin-top:6px;font-weight:700;font-size:10px}.ip-total-main span{color:#fff}.ip-notes{margin-top:12px;padding-top:12px;border-top:1px solid #e2e8f0}.ip-notes-text{font-size:8px;color:#4b5563;white-space:pre-wrap;line-height:1.5}.ip-footer{display:flex;justify-content:space-between;border-top:1px solid #e2e8f0;margin-top:20px;padding-top:10px;font-size:7px;color:#9ca3af}
