:root{color-scheme:light;--radius: .5rem;--background: #f8f9fb;--foreground: #1e293b;--card: #ffffff;--card-foreground: #1e293b;--primary: #4f46e5;--primary-foreground: #f8f9fb;--secondary: #f1f5f9;--secondary-foreground: #334155;--muted: #f8f9fb;--muted-foreground: #64748b;--accent: #eef2ff;--accent-foreground: #3730a3;--destructive: #dc2626;--destructive-foreground: #f8f9fb;--border: #e2e8f0;--input: #e2e8f0;--ring: #4f46e5;--shadow-xs: 0 1px 2px rgba(15, 23, 42, .04);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--foreground);background:var(--background);line-height:1.5;-webkit-font-smoothing:antialiased}*{box-sizing:border-box;border-color:var(--border)}html,body,#root{margin:0;min-height:100vh;background:var(--background);color:var(--foreground)}button,input,textarea{font:inherit}button:not(:disabled){cursor:pointer}button:disabled{cursor:not-allowed}.shell{min-height:100vh;display:flex;overflow:hidden;background:var(--background);color:var(--foreground)}.app{display:contents}.sidebar{width:16rem;flex-shrink:0;height:100vh;display:flex;flex-direction:column;border-right:1px solid var(--border);background:var(--background);-webkit-user-select:none;user-select:none}.sidebar-brand{border-bottom:1px solid var(--border);padding:1.25rem}.sidebar-brand-row{display:flex;align-items:center;gap:.75rem;min-width:0}.sidebar-brand strong{display:block;font-size:.875rem;font-weight:700;letter-spacing:-.02em;color:var(--foreground)}.sidebar-brand-meta{margin-top:1rem;display:flex;align-items:center;justify-content:space-between;gap:.5rem}.role-badge{display:inline-flex;align-items:center;border-radius:.25rem;border:1px solid color-mix(in srgb,var(--primary) 20%,transparent);background:var(--primary);color:var(--primary-foreground);font-family:ui-monospace,IBM Plex Mono,monospace;font-size:.65rem;font-weight:600;padding:.15rem .45rem}.sidebar-eyebrow{font-size:.625rem;font-family:ui-monospace,IBM Plex Mono,monospace;text-transform:uppercase;letter-spacing:.12em;color:var(--muted-foreground)}.sidebar-nav{flex:1;min-height:0;display:flex;flex-direction:column;padding:1rem .75rem;overflow-y:auto}.nav-sections{flex:1;display:flex;flex-direction:column;gap:1.25rem}.nav-section{display:flex;flex-direction:column;gap:.25rem}.nav-section-label{margin:0 0 .375rem;padding:0 .75rem;font-size:.625rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:color-mix(in srgb,var(--muted-foreground) 80%,transparent)}.nav-item{display:flex;align-items:center;width:100%;padding:.5rem .75rem;border-radius:.5rem;border:1px solid transparent;background:transparent;color:var(--muted-foreground);font-size:.875rem;font-weight:400;text-align:left;text-decoration:none;transition:all .2s ease;cursor:pointer}a.nav-item:visited{color:var(--muted-foreground)}.nav-item.is-disabled,.nav-item:disabled{opacity:.55;pointer-events:none;cursor:not-allowed}.nav-item:hover:not(:disabled):not(.active):not(.is-disabled),a.nav-item:hover:visited:not(.active):not(.is-disabled){color:var(--foreground);background:var(--muted)}.nav-item:hover:not(:disabled):not(.active):not(.is-disabled) .nav-icon,a.nav-item:hover:visited:not(.active):not(.is-disabled) .nav-icon{color:var(--foreground)}.nav-item.active,a.nav-item.active:visited{background:var(--accent);color:var(--accent-foreground);font-weight:600;border-color:color-mix(in srgb,var(--primary) 20%,transparent);box-shadow:var(--shadow-xs)}.nav-item.active:hover:not(:disabled):not(.is-disabled),a.nav-item.active:hover:visited{background:var(--accent);color:var(--accent-foreground)}.nav-item.active .nav-icon,.nav-item.active:hover .nav-icon{color:var(--primary)}.nav-icon{width:1rem;height:1rem;flex-shrink:0;color:color-mix(in srgb,var(--muted-foreground) 70%,transparent);transition:color .2s ease}.nav-label{margin-left:.625rem;flex:1;text-align:left;white-space:nowrap}.list-section{flex:1;min-height:0;display:flex;flex-direction:column;border-top:1px solid color-mix(in srgb,var(--border) 60%,transparent);padding-top:1rem}.list-section-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin:0 .25rem .75rem}.list-section-head h2{margin:0;font-size:.625rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--muted-foreground)}.count-pill{min-width:1.25rem;height:1.25rem;padding:0 .4rem;border-radius:999px;background:var(--primary);color:var(--primary-foreground);font-size:.625rem;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.invoice-list{display:flex;flex-direction:column;gap:.35rem;overflow:auto;flex:1;padding-right:.15rem}.invoice-list::-webkit-scrollbar{width:8px}.invoice-list::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--muted-foreground) 40%,transparent);border-radius:999px;border:2px solid transparent;background-clip:content-box}.meta{color:var(--muted-foreground);font-size:.75rem}.empty-list{padding:.75rem .5rem}.invoice-card{text-align:left;border:1px solid transparent;background:transparent;border-radius:.5rem;padding:.625rem .75rem;color:var(--foreground);width:100%;cursor:pointer;transition:all .2s ease}.invoice-card:hover{background:var(--muted);border-color:transparent}.invoice-card.active{background:var(--accent);color:var(--accent-foreground);border-color:color-mix(in srgb,var(--primary) 20%,transparent)}.invoice-card.active .meta{color:color-mix(in srgb,var(--accent-foreground) 75%,transparent)}.invoice-card .top{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:.2rem}.invoice-card .num{font-family:ui-monospace,IBM Plex Mono,monospace;font-size:.8rem;font-weight:600}.invoice-card .top span:last-child{font-weight:600;font-size:.8rem;color:var(--foreground)}.archive{margin-top:.75rem;padding-top:.75rem;border-top:1px solid color-mix(in srgb,var(--border) 60%,transparent)}.archive h2{margin:0 .5rem .5rem;font-size:.625rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--muted-foreground)}.archive-link{display:block;width:100%;text-align:left;border:none;background:transparent;color:var(--muted-foreground);font-size:.75rem;padding:.4rem .75rem;border-radius:.5rem;cursor:pointer}.archive-link:hover{color:var(--foreground);background:var(--muted)}.sidebar-account{padding:.75rem;border-top:1px solid var(--border);background:color-mix(in srgb,var(--muted) 50%,transparent)}.sidebar-account-row{display:flex;align-items:center;justify-content:space-between;gap:.4rem}.account-chip{display:flex;align-items:center;gap:.75rem;flex:1;min-width:0;padding:.5rem;border-radius:.5rem;border:none;background:transparent;text-align:left;color:inherit}.account-chip:hover{background:var(--muted)}.account-avatar{width:2rem;height:2rem;border-radius:999px;background:var(--primary);color:var(--primary-foreground);border:none;display:grid;place-items:center;font-size:.8rem;font-weight:650;flex-shrink:0;object-fit:cover}.account-meta{flex:1;min-width:0}.account-meta strong{display:block;font-size:.75rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-meta span{display:block;font-size:.625rem;color:var(--muted-foreground);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.icon-btn{width:2.25rem;height:2.25rem;border-radius:.5rem;border:none;background:transparent;color:var(--muted-foreground);display:grid;place-items:center;flex-shrink:0;transition:all .15s ease}.icon-btn:hover:not(:disabled){color:var(--destructive);background:color-mix(in srgb,var(--destructive) 10%,transparent)}.icon-btn svg{width:1rem;height:1rem}.main-column{flex:1;min-width:0;height:100vh;display:flex;flex-direction:column;overflow:hidden}.topbar{height:3.5rem;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:0 1.5rem;border-bottom:1px solid var(--border);background:var(--card)}.topbar-title{font-size:.875rem;font-weight:600;color:var(--foreground)}.topbar-actions{display:flex;align-items:center;gap:.5rem}.main{flex:1;min-height:0;overflow:auto;padding:1.5rem;background:var(--background)}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.25rem}.toolbar h1{margin:0;font-size:1.25rem;font-weight:700;letter-spacing:-.03em;color:var(--foreground)}.toolbar .actions{display:flex;flex-wrap:wrap;gap:.5rem}.panel{background:var(--card);border:1px solid var(--border);border-radius:.75rem;padding:1.5rem;box-shadow:var(--shadow-xs);color:var(--card-foreground)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}.grid-invoice-meta{grid-template-columns:repeat(3,minmax(0,1fr))}.field{display:flex;flex-direction:column;gap:.4rem;margin-bottom:.85rem}.field label{font-size:.75rem;font-weight:600;color:var(--foreground)}.field-hint{font-size:.7rem;color:var(--muted-foreground)}.input-readonly,.field input.input-readonly{background:var(--muted);color:var(--foreground);cursor:default}.field input,.field textarea,.items input,.totals input{border:1px solid var(--input);background:var(--card);border-radius:.5rem;padding:.45rem .65rem;font-size:.8rem;line-height:1.4;color:var(--foreground);box-shadow:none;transition:border-color .15s ease}.field input:focus,.field textarea:focus,.items input:focus,.totals input:focus{outline:none;border-color:var(--ring)}.field textarea{min-height:5.5rem;resize:vertical}.section-title{margin:.25rem 0 .85rem;font-size:.875rem;font-weight:700;color:var(--foreground)}.section-title:not(:first-child){margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid var(--border)}.invoice-composer{width:100%;max-width:1000px;margin:0 auto;display:flex;flex-direction:column;gap:1rem;animation:dashboard-in .3s ease both}.composer-header{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;padding:1.1rem 1.25rem;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 70%,transparent) 0%,var(--card) 52%,var(--card) 100%),var(--card)}.composer-header h1{margin:0 0 .2rem;font-size:1.35rem;font-weight:700;letter-spacing:-.03em}.composer-sub{margin:0;max-width:28rem;font-size:.8rem;color:var(--muted-foreground);line-height:1.45}.composer-actions{display:flex;flex-wrap:wrap;gap:.5rem;flex-shrink:0}.composer-status{margin:0}.composer-section{padding:0;overflow:hidden}.composer-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1rem 1.15rem .85rem;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--muted) 55%,transparent)}.composer-section-head h2{margin:0;font-size:1rem;font-weight:700;letter-spacing:-.02em}.template-save-action{display:flex;flex-direction:column;align-items:flex-end;gap:.25rem;max-width:16rem;text-align:right}.template-save-action .field-hint{margin:0;line-height:1.35}.composer-section-body{padding:1.1rem 1.15rem 1.2rem}.composer-section-body .field:last-child{margin-bottom:0}.composer-split{display:grid;grid-template-columns:1fr 1fr;gap:1rem;align-items:start}.composer-items-body{display:flex;flex-direction:column;gap:.75rem;padding-top:.85rem}.items-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:.65rem;background:var(--card)}.items-wrap .items{margin-bottom:0}.items{width:100%;border-collapse:collapse;margin-bottom:.75rem;table-layout:fixed}.items th{text-align:left;font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted-foreground);padding:.5rem .65rem;background:color-mix(in srgb,var(--muted) 80%,transparent);border-bottom:1px solid var(--border)}.items td{padding:.35rem .45rem;vertical-align:middle;border-bottom:1px solid var(--border)}.items tbody tr:last-child td{border-bottom:none}.items tbody tr:hover td{background:color-mix(in srgb,var(--muted) 40%,transparent)}.items input{width:100%;padding:.35rem .5rem;font-size:.75rem;line-height:1.35;border-radius:.4rem}.items .narrow{width:4.25rem}.items .money{width:6.5rem}.items th.narrow,.items th.money,.items td.narrow,.items td.money{text-align:right}.items td.narrow input,.items td.money input{text-align:right;font-variant-numeric:tabular-nums}.items-line-total{font-size:.75rem;font-weight:650;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--foreground);padding-right:.65rem!important}.items-actions{width:2.25rem;text-align:center;padding-left:0!important;padding-right:.35rem!important}.items-actions .btn{min-width:1.75rem;height:1.75rem;padding:0;border-radius:.4rem;color:var(--muted-foreground);font-size:.7rem;line-height:1}.items-actions .btn:hover:not(:disabled){color:var(--destructive);background:color-mix(in srgb,var(--destructive) 8%,transparent)}.totals-card{margin-left:auto;width:min(100%,15.5rem);padding:.65rem .85rem;border:1px solid var(--border);border-radius:.65rem;background:color-mix(in srgb,var(--muted) 70%,var(--card))}.totals-card .totals{margin:0;min-width:0;width:100%;gap:.4rem}.totals-card .totals input{width:5rem;padding:.3rem .45rem;font-size:.75rem}.totals{margin-top:1rem;display:grid;justify-content:end;gap:.6rem;min-width:15rem;margin-left:auto}.totals .row{display:flex;justify-content:space-between;align-items:center;gap:1.25rem;color:var(--muted-foreground);font-size:.75rem}.totals .row span:last-child{font-variant-numeric:tabular-nums}.totals .row.strong{color:var(--foreground);font-weight:700;font-size:.875rem;border-top:1px solid var(--border);padding-top:.5rem;margin-top:.15rem}.composer-footer{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem .15rem .25rem}.composer-footer p{margin:0;font-size:.8rem;color:var(--muted-foreground)}.status{margin-top:1.25rem;padding:.75rem .85rem;border-radius:.75rem;background:var(--muted);border:1px solid var(--border);color:var(--muted-foreground);font-size:.8rem}.status.ok{color:var(--foreground)}.status.err{color:var(--destructive);border-color:color-mix(in srgb,var(--destructive) 20%,transparent);background:color-mix(in srgb,var(--destructive) 8%,transparent);font-weight:560}.empty{display:grid;place-items:center;min-height:100%;color:var(--muted-foreground);text-align:center;gap:1rem;padding:2.5rem 1.25rem}.empty h1{margin:0 0 .5rem;font-size:1.35rem;font-weight:700;letter-spacing:-.03em;color:var(--foreground)}.empty p{margin:0;max-width:26rem;font-size:.875rem;line-height:1.55}.nav-count{margin-left:.5rem;min-width:1.25rem;height:1.25rem;padding:0 .375rem;border-radius:999px;background:var(--primary);color:var(--primary-foreground);font-size:.625rem;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.sidebar-sync{display:flex;align-items:center;gap:.5rem;margin:auto .25rem 0;padding:.625rem .75rem;border-radius:.5rem;border:1px solid color-mix(in srgb,var(--primary) 18%,transparent);background:var(--accent);color:var(--accent-foreground);font-size:.75rem;font-weight:560}.sync-pill{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .65rem;border-radius:999px;border:1px solid color-mix(in srgb,var(--primary) 20%,transparent);background:var(--accent);color:var(--accent-foreground);font-size:.75rem;font-weight:600;white-space:nowrap}.spinner{width:.9rem;height:.9rem;border:2px solid color-mix(in srgb,var(--primary) 25%,transparent);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.drive-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.85rem;min-height:16rem;text-align:center;color:var(--muted-foreground)}.drive-loading .spinner{width:1.5rem;height:1.5rem;border-width:2.5px}.drive-loading p{margin:0;font-size:.9rem;font-weight:560;color:var(--foreground)}.drive-loading-hint{max-width:26rem;font-size:.82rem!important;font-weight:450!important;color:var(--muted-foreground)!important;line-height:1.45}.history-page{display:flex;flex-direction:column;gap:1rem;min-height:100%;width:100%;max-width:1000px;margin:0 auto}.history-intro{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.history-intro-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.history-intro h1{margin:0 0 .35rem;font-size:1.35rem;font-weight:700;letter-spacing:-.03em}.history-intro p{margin:0;max-width:36rem;font-size:.875rem;color:var(--muted-foreground)}.year-group{padding:0;overflow:hidden}.year-group-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.9rem 1.1rem;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--muted) 70%,transparent)}.year-group-head h2{margin:0;font-size:.95rem;font-weight:700;letter-spacing:-.02em}.year-group-list{display:flex;flex-direction:column}.history-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;width:100%;min-height:4.5rem;padding:.9rem 1.1rem;border:none;border-bottom:1px solid var(--border);background:transparent;color:inherit;text-align:left;transition:background .15s ease}.history-row:last-child{border-bottom:none}.history-row:hover{background:var(--muted)}.history-row-main{display:flex;flex-direction:column;gap:.15rem;min-width:0;flex:1;padding:0;border:none;background:transparent;color:inherit;text-align:left}.history-row-main:disabled{opacity:.55}.history-row-main .num{font-size:.8rem;font-weight:650;color:var(--foreground)}.history-row-total{display:flex;align-items:center;justify-content:flex-end;gap:.5rem;flex-shrink:0;font-size:.875rem;font-weight:650;font-variant-numeric:tabular-nums;color:var(--foreground);white-space:nowrap}.history-delete-btn{font-weight:600;color:#dc2626;border-color:color-mix(in srgb,#dc2626 35%,var(--border));background:color-mix(in srgb,#dc2626 8%,transparent)}.history-delete-btn:hover:not(:disabled){color:#fff;background:#dc2626;border-color:#dc2626}.history-delete-btn:disabled{opacity:.45}.price-missing{color:var(--muted-foreground)}.price-edit-btn{font-weight:600}.price-edit{display:flex;align-items:center;gap:.35rem}.history-row-edit{align-items:center}.history-row-main-edit{display:flex;flex-direction:column;gap:.25rem;min-width:0;flex:1}.history-edit-fields{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}.inv-number-input,.inv-month-input,.inv-amount-input{border:1px solid var(--input);background:var(--card);border-radius:.5rem;padding:.3rem .45rem;color:var(--foreground);font-size:.75rem;font-weight:650}.inv-number-input{width:min(8.5rem,100%);font-family:ui-monospace,IBM Plex Mono,monospace}.inv-month-input{position:relative;width:10.5rem;font-weight:560;cursor:pointer}.inv-month-input::-webkit-calendar-picker-indicator{position:absolute;top:0;right:0;bottom:0;left:0;width:auto;height:auto;opacity:0;cursor:pointer}.date-input-clickable{cursor:pointer;position:relative}.date-input-clickable::-webkit-calendar-picker-indicator{position:absolute;top:0;right:0;bottom:0;left:0;width:auto;height:auto;opacity:0;cursor:pointer}.inv-amount-input{width:5.5rem;font-variant-numeric:tabular-nums;text-align:right}.inv-number-input:focus,.inv-month-input:focus,.inv-amount-input:focus{outline:none;border-color:var(--ring)}.price-edit input{width:5.5rem;border:1px solid var(--input);background:var(--card);border-radius:.5rem;padding:.3rem .45rem;color:var(--foreground);font-size:.75rem;font-variant-numeric:tabular-nums;text-align:right}.price-edit input:focus{outline:none;border-color:var(--ring)}.detail-page{display:flex;flex-direction:column;gap:1rem;min-height:100%}.detail-header-top{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.25rem}.detail-kicker{margin:0 0 .25rem;font-size:.625rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--muted-foreground)}.detail-header h1{margin:0;font-size:1.35rem;font-weight:700;letter-spacing:-.03em}.detail-actions{display:flex;flex-wrap:wrap;gap:.5rem}.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));gap:1rem}.detail-grid span{display:block;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted-foreground);margin-bottom:.25rem}.detail-grid strong{display:block;font-size:.9rem;font-weight:600;color:var(--foreground)}.detail-pdf{flex:1;min-height:28rem;display:flex;flex-direction:column;padding:0;overflow:hidden}.detail-pdf-label{padding:.75rem 1rem;border-bottom:1px solid var(--border);font-size:.75rem;font-weight:600;color:var(--muted-foreground);text-transform:uppercase;letter-spacing:.06em}.detail-pdf iframe{flex:1;width:100%;min-height:32rem;border:0;background:var(--secondary)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;white-space:nowrap;border-radius:.5rem;font-size:.75rem;font-weight:600;padding:.5rem 1rem;height:2.25rem;border:1px solid transparent;background:var(--primary);color:var(--primary-foreground);transition:background .15s ease,color .15s ease,border-color .15s ease}.btn:hover:not(:disabled){background:color-mix(in srgb,var(--primary) 90%,black)}.btn.primary{background:var(--primary);color:var(--primary-foreground)}.btn.ghost{background:transparent;color:var(--foreground);border-color:transparent}.btn.ghost:hover:not(:disabled){background:var(--accent);color:var(--accent-foreground)}.btn.outline{background:var(--card);color:var(--foreground);border-color:var(--input)}.btn.outline:hover:not(:disabled){background:var(--accent);color:var(--accent-foreground)}.btn:disabled{opacity:.4}.btn-compact{height:2rem;padding:.35rem .75rem}.preview-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,var(--background) 75%,transparent);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);display:grid;place-items:center;padding:1.5rem;z-index:50}.preview-modal{width:min(960px,100%);height:min(90vh,1040px);background:var(--card);border-radius:.75rem;border:1px solid var(--border);box-shadow:0 20px 50px #0f172a26;display:flex;flex-direction:column;overflow:hidden}.preview-bar{display:flex;justify-content:space-between;align-items:center;gap:.75rem;padding:.85rem 1rem;border-bottom:1px solid var(--border);background:var(--card)}.preview-bar strong{font-size:.875rem}.preview-bar .actions{display:flex;gap:.5rem;flex-wrap:wrap}.preview-modal iframe{flex:1;width:100%;border:0;background:var(--secondary)}.preview-body{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}.preview-body iframe{flex:1;width:100%;border:0;background:var(--secondary)}.preview-saving{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:1.5rem;text-align:center;background:color-mix(in srgb,var(--card) 88%,transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:2}.preview-saving .spinner{width:1.5rem;height:1.5rem;border-width:2.5px}.preview-saving p{margin:0;font-size:.9rem;font-weight:560;color:var(--foreground)}.btn-spinner{width:.95rem;height:.95rem;border-width:2px;border-color:color-mix(in srgb,currentColor 30%,transparent);border-top-color:currentColor}.detail-modal{width:min(980px,100%)}.detail-modal-title{display:flex;flex-direction:column;gap:.15rem;min-width:0}.detail-modal-title strong{font-size:.95rem}.detail-modal-title span{font-size:.75rem;color:var(--muted-foreground);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.email-overlay{z-index:60}.email-modal{width:min(1100px,100%);height:auto;max-height:min(92vh,800px);background:var(--card);border-radius:.75rem;border:1px solid var(--border);box-shadow:0 20px 50px #0f172a2e;display:flex;flex-direction:column;overflow:hidden}.email-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1rem 1.15rem;border-bottom:1px solid var(--border)}.email-modal-header h2{margin:0;font-size:1rem;font-weight:700}.email-modal-header p{margin:.2rem 0 0;font-size:.75rem;color:var(--muted-foreground)}.email-modal-grid{flex:0 1 auto;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:0;align-items:stretch}.email-form{padding:.85rem 1rem;overflow:visible;display:flex;flex-direction:column;gap:.65rem;border-right:1px solid var(--border);align-self:start;height:auto;width:100%;box-sizing:border-box}.email-field{display:flex;flex-direction:column;gap:.3rem}.email-field label{font-size:.65rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted-foreground)}.email-field input,.email-field textarea{width:100%;border:1px solid var(--border);border-radius:.5rem;background:var(--background);color:var(--foreground);font:inherit;font-size:.8125rem;padding:.55rem .7rem}.email-field textarea{resize:vertical;min-height:3.5rem;max-height:9rem;line-height:1.45}.email-attach-meta{display:flex;flex-direction:column;gap:.2rem;padding:.65rem .75rem;border-radius:.5rem;background:var(--secondary);border:1px solid var(--border)}.email-attach-meta strong{font-size:.8rem;font-weight:600;word-break:break-all}.email-preview-pane{position:relative;min-height:0;height:100%;background:var(--secondary);display:flex;flex-direction:column;align-self:stretch}.email-preview-saving{z-index:3}.email-preview-pane iframe{flex:1;width:100%;border:0;background:#525659}.email-preview-empty{flex:1;display:grid;place-items:center;font-size:.8rem;color:var(--muted-foreground)}.email-modal-footer{display:flex;justify-content:space-between;align-items:center;gap:.75rem;flex-wrap:wrap;padding:.85rem 1.15rem;border-top:1px solid var(--border);background:var(--card)}.email-modal-footer-left,.email-modal-footer-right{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.email-gmail-status{display:flex;flex-direction:column;gap:.15rem;padding:.65rem .75rem;border-radius:.5rem;border:1px solid var(--border);background:var(--secondary)}.email-gmail-status p{margin:0;font-size:.75rem;font-weight:400;color:var(--muted-foreground)}.email-gmail-status.is-connected p{color:var(--muted-foreground)}@media(max-width:840px){.email-modal-grid{grid-template-columns:1fr;grid-template-rows:auto minmax(220px,1fr);flex:1}.email-form{border-right:0;border-bottom:1px solid var(--border);align-self:stretch;max-height:45vh;overflow-y:auto}.email-preview-pane{min-height:220px}}.login-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;overflow:hidden;background:#000;padding:1rem;font-family:inherit}.login-card{width:min(28rem,100%);background:var(--card);color:var(--card-foreground);border:1px solid var(--border);border-radius:.75rem;padding:2rem;box-shadow:0 20px 40px #00000059;text-align:center}.login-title{margin:0;font-size:1.05rem;font-weight:700;letter-spacing:-.02em;color:var(--foreground);text-transform:uppercase}.login-eyebrow{margin:.5rem 0 0;font-size:.625rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted-foreground)}.login-muted{margin:.75rem 0 0;color:var(--muted-foreground);font-size:.8rem;line-height:1.5}.login-muted code{font-family:ui-monospace,IBM Plex Mono,monospace;font-size:.7rem}.login-error{margin:1.25rem 0 0;padding:.75rem;border-radius:.75rem;background:color-mix(in srgb,var(--destructive) 10%,transparent);border:1px solid color-mix(in srgb,var(--destructive) 20%,transparent);color:var(--destructive);font-size:.75rem;text-align:left}.google-btn{margin-top:1.75rem;width:100%;height:3rem;display:inline-flex;align-items:center;justify-content:center;gap:.65rem;background:var(--card);color:var(--foreground);border:1px solid var(--border);border-radius:.75rem;font-size:.875rem;font-weight:500;transition:background .15s ease}.google-btn:hover:not(:disabled){background:var(--muted)}.google-btn:disabled{opacity:.6}.google-icon{width:1.25rem;height:1.25rem;flex-shrink:0}.dashboard-page{display:flex;flex-direction:column;gap:1rem;min-height:100%;animation:dashboard-in .35s ease both}@keyframes dashboard-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.dashboard-hero{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.15rem;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 70%,transparent) 0%,var(--card) 48%,var(--card) 100%),var(--card)}.dashboard-kicker{margin:0 0 .375rem;padding:0}.section-eyebrow{margin:0 0 .2rem;font-size:.625rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:color-mix(in srgb,var(--muted-foreground) 80%,transparent)}.dashboard-hero h1{margin:0 0 .2rem;font-size:1.2rem;font-weight:700;letter-spacing:-.03em}.dashboard-hero .dashboard-copy{margin:0;max-width:34rem;font-size:.8rem;color:var(--muted-foreground);line-height:1.45}.dashboard-status{margin-top:.85rem!important}.dashboard-hero-actions{display:flex;flex-wrap:wrap;gap:.5rem;flex-shrink:0}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.85rem}.stat-tile{display:flex;flex-direction:column;gap:.35rem;padding:1rem 1.1rem;transition:border-color .2s ease,transform .2s ease}.stat-tile:hover{border-color:color-mix(in srgb,var(--primary) 25%,var(--border));transform:translateY(-1px)}.stat-label{font-size:.6875rem;font-weight:650;text-transform:uppercase;letter-spacing:.06em;color:var(--muted-foreground)}.stat-value{font-size:1.35rem;font-weight:700;letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--foreground);line-height:1.15}.stat-hint{font-size:.75rem;color:var(--muted-foreground)}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(16rem,.9fr);gap:1rem;align-items:start}.dashboard-side{display:flex;flex-direction:column;gap:1rem}.dashboard-panel{padding:0;overflow:hidden}.dashboard-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1rem 1.15rem .85rem;border-bottom:1px solid var(--border)}.dashboard-panel-head h2{margin:0;font-size:1rem;font-weight:700;letter-spacing:-.02em}.dashboard-list{display:flex;flex-direction:column}.dashboard-empty{padding:1.75rem 1.15rem;text-align:center}.dashboard-empty p{margin:0 0 1rem;color:var(--muted-foreground);font-size:.875rem}.dashboard-empty-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem}.quick-actions{display:flex;flex-direction:column}.quick-action{display:flex;align-items:center;gap:.75rem;width:100%;min-height:4.5rem;padding:.9rem 1.1rem;border:none;border-bottom:1px solid var(--border);border-radius:0;background:transparent;color:inherit;text-align:left;transition:background .15s ease}.quick-action:last-child{border-bottom:none}.quick-action:hover:not(:disabled){background:var(--muted)}.quick-action:disabled{opacity:.55}.quick-action-icon{width:2rem;height:2rem;border-radius:.5rem;display:grid;place-items:center;flex-shrink:0;background:var(--accent);color:var(--primary)}.quick-action-icon svg{width:1rem;height:1rem}.quick-action>span:last-child{display:flex;flex-direction:column;gap:.15rem;min-width:0}.quick-action strong{font-size:.875rem;font-weight:650}.quick-action>span:last-child>span{font-size:.75rem;color:var(--muted-foreground)}.year-breakdown{display:flex;flex-direction:column}.year-breakdown-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;padding:.85rem 1.15rem;border:none;border-bottom:1px solid var(--border);border-radius:0;background:transparent;color:inherit;text-align:left;transition:background .15s ease}.year-breakdown-row:last-child{border-bottom:none}.year-breakdown-row:hover{background:var(--muted)}.year-breakdown-label{font-weight:700;letter-spacing:-.02em}.year-breakdown-count{font-size:.75rem;color:var(--muted-foreground)}.chart-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(14rem,.75fr);gap:1rem;align-items:stretch}.chart-panel .chart-body{padding:.85rem 1.15rem 1.15rem}.chart-chip{flex-shrink:0;padding:.3rem .65rem;border-radius:999px;background:var(--accent);color:var(--accent-foreground);font-size:.75rem;font-weight:650;font-variant-numeric:tabular-nums}.chart-empty{margin:0;padding:1.5rem 0;text-align:center;color:var(--muted-foreground);font-size:.875rem}.year-bars{display:flex;flex-direction:column;gap:.7rem}.year-bar-row{display:grid;grid-template-columns:2.75rem minmax(0,1fr) 4.5rem;align-items:center;gap:.65rem}.year-bar-label{font-size:.8rem;font-weight:700;letter-spacing:-.02em}.year-bar-track{height:.65rem;border-radius:999px;background:var(--muted);overflow:hidden}.year-bar-fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--primary),color-mix(in srgb,var(--primary) 65%,#38bdf8));transform-origin:left center;animation:bar-grow .55s ease both}@keyframes bar-grow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.year-bar-value{font-size:.75rem;font-weight:650;text-align:right;font-variant-numeric:tabular-nums;color:var(--muted-foreground)}.month-area{display:flex;flex-direction:column;gap:.35rem}.month-area-svg{width:100%;height:10rem;display:block}.chart-grid-line{stroke:var(--border);stroke-width:1;stroke-dasharray:3 4}.month-area-fill{fill:url(#monthFill);animation:chart-fade .6s ease both}.month-area-line{fill:none;stroke:var(--primary);stroke-width:2.25;stroke-linecap:round;stroke-linejoin:round;animation:chart-fade .6s ease both}.month-area-dot{fill:var(--card);stroke:var(--primary);stroke-width:2}@keyframes chart-fade{0%{opacity:0}to{opacity:1}}.month-area-axis{position:relative;height:1rem;margin:0 .15rem}.month-area-axis span{position:absolute;transform:translate(-50%);font-size:.65rem;font-weight:600;color:var(--muted-foreground);text-transform:uppercase;letter-spacing:.04em}.count-donut{display:flex;align-items:center;gap:1rem;min-height:8.5rem}.count-donut-svg{width:7.5rem;height:7.5rem;flex-shrink:0}.donut-seg{animation:chart-fade .55s ease both}.donut-center-value{font-size:1.15rem;font-weight:700;fill:var(--foreground)}.donut-center-label{font-size:.55rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;fill:var(--muted-foreground)}.donut-legend{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.45rem;flex:1;min-width:0}.donut-legend li{display:grid;grid-template-columns:.65rem minmax(0,1fr) auto;align-items:center;gap:.5rem;font-size:.8rem}.donut-swatch{width:.55rem;height:.55rem;border-radius:999px}.donut-year{font-weight:650}.donut-count{color:var(--muted-foreground);font-variant-numeric:tabular-nums}@media(max-width:960px){.shell{flex-direction:column}.sidebar{width:100%;height:auto;max-height:none;border-right:none;border-bottom:1px solid var(--border)}.sidebar-nav{max-height:18rem}.invoice-list{max-height:12rem}.main-column{height:auto;min-height:calc(100vh - 12rem)}.grid-2,.grid-invoice-meta{grid-template-columns:1fr}.toolbar,.dashboard-hero{flex-direction:column;align-items:flex-start}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.chart-grid,.dashboard-grid{grid-template-columns:1fr}.composer-header,.composer-footer{flex-direction:column;align-items:flex-start}.composer-split{grid-template-columns:1fr}.totals-card{margin-left:0;width:100%}}
