:root{--color-bg: #f6f7f9;--color-surface: #ffffff;--color-border: #e2e5ea;--color-text: #1f2430;--color-text-muted: #6b7280;--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-danger: #dc2626;--radius: 8px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--color-bg);color:var(--color-text)}button{font-family:inherit;font-size:.95rem;padding:.55rem 1rem;border-radius:var(--radius);border:none;background:var(--color-primary);color:#fff;cursor:pointer}button:hover{background:var(--color-primary-hover)}button:disabled{opacity:.6;cursor:default}button.secondary{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border)}button.secondary:hover{background:var(--color-bg)}.link-button{background:none;color:var(--color-primary);padding:0;font-size:.9rem;white-space:nowrap}.link-button:hover{background:none;text-decoration:underline}.link-button.danger{color:var(--color-danger)}button.secondary.danger{color:var(--color-danger);border-color:var(--color-danger)}button.secondary.danger:hover{background:#fef2f2}.modal-actions button.danger{background:var(--color-danger)}.modal-actions button.danger:hover{background:#b91c1c}.delete-impact-warning{background:#fef2f2;border:1px solid #fecaca;border-radius:var(--radius);padding:.8rem 1rem;margin:.6rem 0 .2rem}.delete-impact-title{font-weight:600;font-size:.9rem;color:var(--color-danger);margin:0 0 .4rem}.delete-impact-warning ul{margin:0;padding-left:1.1rem}.delete-impact-warning li{font-size:.88rem;color:var(--color-text);margin-bottom:.2rem}.delete-impact-warning li:last-child{margin-bottom:0}.checkbox-label{flex-direction:row;align-items:center;gap:.5rem}.checkbox-label input{width:auto}.section-heading{margin:2rem 0 .75rem;font-size:1.05rem}.section-heading:first-of-type{margin-top:1rem}.permission-toggle-list{display:flex;flex-direction:column;gap:.25rem}.permission-toggle-list .checkbox-label{font-size:.82rem;color:var(--color-text-muted)}input,textarea{font-family:inherit;font-size:.95rem;padding:.5rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius);width:100%}.color-input{width:60px;height:38px;padding:2px;cursor:pointer}label{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;color:var(--color-text-muted);margin-bottom:.9rem}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem}.auth-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:2rem;width:100%;max-width:380px}.auth-card h1{margin-top:0;font-size:1.4rem}.auth-subtitle{color:var(--color-text-muted);font-size:.9rem;margin-top:-.5rem}.auth-card button[type=submit]{width:100%}.auth-switch{text-align:center;font-size:.9rem;color:var(--color-text-muted);margin-bottom:0}.form-error{background:#fef2f2;color:var(--color-danger);border:1px solid #fecaca;border-radius:var(--radius);padding:.6rem .8rem;font-size:.85rem}.app-shell{display:flex;min-height:100vh}.sidebar{width:220px;flex-shrink:0;background:var(--color-surface);border-right:1px solid var(--color-border);display:flex;flex-direction:column;padding:1.2rem .8rem}.sidebar-header{padding:0 .4rem 1rem;border-bottom:1px solid var(--color-border);margin-bottom:.8rem}.org-name{font-weight:600}.user-email{font-size:.8rem;color:var(--color-text-muted)}.nav-link{display:flex;align-items:center;gap:.65rem;padding:.6rem .7rem;border-radius:var(--radius);color:var(--color-text-muted);text-decoration:none;font-size:.92rem;font-weight:500;margin-bottom:.2rem}.nav-link svg{width:16px;height:16px;flex-shrink:0;opacity:.75}.nav-link:hover{background:var(--color-bg);color:var(--color-text)}.nav-link:hover svg{opacity:1}.nav-link.active{background:#eaf0fe;color:var(--color-primary);font-weight:600}.nav-link.active svg{opacity:1}.sidebar-footer{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:.5rem}.sidebar-logout{text-align:left;padding:.5rem}.sidebar-settings{position:relative}.sidebar-settings-button{width:34px;height:34px;padding:0;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:999px;border:1px solid var(--color-border);background:var(--color-surface);color:#6b7280;cursor:pointer}.sidebar-settings-button svg{display:block}.sidebar-settings-button:hover{background:var(--color-bg);color:#374151}.sidebar-settings-menu{position:absolute;bottom:calc(100% + .5rem);right:0;min-width:180px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:0 8px 24px #0f172a24;padding:.35rem;display:flex;flex-direction:column;z-index:20}.sidebar-settings-menu button{background:none;border:none;text-align:left;padding:.55rem .6rem;border-radius:var(--radius);font-size:.9rem;color:var(--color-text);cursor:pointer}.sidebar-settings-menu button:hover{background:var(--color-bg)}.main-content{flex:1;padding:2rem;max-width:1320px}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.2rem}.page h1{margin:0}.empty-state{background:var(--color-surface);border:1px dashed var(--color-border);border-radius:var(--radius);padding:2rem;color:var(--color-text-muted)}.data-table{width:100%;border-collapse:collapse;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:0 1px 2px #0f172a0a}.data-table th,.data-table td{text-align:left;vertical-align:top;padding:.7rem .9rem;border-bottom:1px solid var(--color-border);font-size:.92rem}.data-table th{background:var(--color-bg);color:var(--color-text-muted);font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.03em}.data-table tbody tr:last-child td{border-bottom:none}.row-actions{display:flex;flex-wrap:wrap;gap:.6rem .8rem}.filter-bar{display:flex;gap:.6rem;margin-bottom:1.2rem;flex-wrap:wrap}.payments-summary{display:flex;gap:1.5rem;flex-wrap:wrap;margin-bottom:1.2rem;padding:.75rem 1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);font-size:.9rem;color:var(--color-text-muted)}.payments-summary strong{color:var(--color-text)}.filter-bar select{padding:.5rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius);font-family:inherit;font-size:.95rem;background:var(--color-surface);color:var(--color-text)}.search-input{flex:1;min-width:180px;max-width:360px}.doc-type-toggle{display:inline-flex;flex-wrap:wrap;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);padding:.2rem;margin-bottom:1.2rem}.doc-type-toggle button{background:none;color:var(--color-text-muted);padding:.45rem 1rem;border-radius:calc(var(--radius) - 2px);font-size:.9rem;font-weight:600}.doc-type-toggle button:hover{background:none;color:var(--color-text)}.doc-type-toggle button.active{background:var(--color-surface);color:var(--color-primary);box-shadow:0 1px 2px #0f172a14}.converted-note{color:var(--color-text-muted);font-size:.85rem}.status-pill,.status-select{display:inline-block;padding:.15rem .55rem;border-radius:999px;font-size:.78rem;font-weight:600;text-transform:capitalize;background:#eef0f3;color:var(--color-text-muted)}.status-select{padding-right:1.6rem;border:none;cursor:pointer;width:auto}.status-won,.status-completed,.status-accepted,.status-active{background:#dcfce7;color:#15803d}.status-lost,.status-canceled,.status-declined,.status-revoked{background:#fee2e2;color:#b91c1c}.status-in_progress,.status-quoted,.status-sent,.status-partial{background:#dbeafe;color:#1d4ed8}.status-paid{background:#dcfce7;color:#15803d}.status-overdue,.status-void{background:#fee2e2;color:#b91c1c}.notes-cell{max-width:420px;white-space:normal;word-break:break-word;color:var(--color-text-muted);font-size:.9rem}.editable-cell{display:inline-block;min-width:1.4em;padding:.1rem .3rem;margin:-.1rem -.3rem;border-radius:calc(var(--radius) - 4px);border-bottom:1px dashed transparent;cursor:pointer}.editable-cell:hover{background:var(--color-bg);border-bottom-color:var(--color-border)}.editable-cell.not-editable{cursor:default}.editable-cell.not-editable:hover{background:none;border-bottom-color:transparent}.editable-placeholder{color:var(--color-text-muted);font-style:italic}.editable-cell.is-editing{display:inline-flex;flex-direction:column;align-items:flex-start;gap:.2rem;min-width:160px;max-width:100%;padding:0;margin:0;cursor:default;border-bottom-color:transparent}.editable-cell.is-editing:hover{background:none}.editable-cell.is-editing input,.editable-cell.is-editing textarea{padding:.35rem .5rem;font-size:.9rem;width:100%;min-width:160px}.editable-cell-select{min-width:200px}.editable-error{color:var(--color-danger);font-size:.78rem}.row-selected{background:var(--color-bg)}.side-panel-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f121940;display:flex;justify-content:flex-end;z-index:10}.side-panel{background:var(--color-surface);width:100%;max-width:360px;height:100%;padding:1.6rem;overflow-y:auto;box-shadow:-8px 0 24px #0f121926}.side-panel-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1.4rem;padding-bottom:1rem;border-bottom:1px solid var(--color-border)}.side-panel-header h2{margin:0 0 .2rem}.side-panel-header .auth-subtitle{margin:0}.side-panel-close{background:none;border:none;font-size:1.4rem;line-height:1;cursor:pointer;color:var(--color-text-muted);padding:.1rem .4rem}.side-panel-close:hover{color:var(--color-text)}.side-panel-field{margin-bottom:1.2rem}.side-panel-field label{display:block;font-size:.78rem;font-weight:600;color:var(--color-text-muted);margin-bottom:.35rem;text-transform:uppercase;letter-spacing:.02em}.show-all-toggle{display:flex;flex-direction:row;align-items:center;gap:.5rem;margin-top:1rem;color:var(--color-text-muted);font-size:.85rem}.show-all-toggle input{width:auto}.settings-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.2rem 1.4rem;margin-bottom:1.5rem;max-width:480px}.settings-card h2{margin-top:0;font-size:1.1rem}.settings-card-wide{max-width:700px}.settings-card-wide .page-header{margin-bottom:.4rem}.settings-card-wide .page-header h2{margin-bottom:0}.settings-field-hint{margin-top:-.6rem;margin-bottom:.9rem}.logo-uploader{display:flex;align-items:center;gap:1rem;margin-bottom:1.2rem}.logo-preview{width:90px;height:90px;object-fit:contain;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);padding:.4rem}.logo-preview-empty{display:flex;align-items:center;justify-content:center;color:var(--color-text-muted);font-size:.75rem;text-align:center;padding:.4rem}.logo-upload-button{display:inline-block;background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius);padding:.55rem 1rem;font-size:.95rem;cursor:pointer;margin-bottom:.5rem;margin-right:.6rem}.logo-upload-button:hover{background:var(--color-bg)}.settings-list{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding:1.1rem 1.2rem;border-bottom:1px solid var(--color-border)}.settings-row:last-child{border-bottom:none}.settings-row-label{font-weight:600;margin-bottom:.25rem}.settings-row-description{color:var(--color-text-muted);font-size:.85rem;max-width:520px}.toggle-switch{position:relative;display:inline-block;width:42px;height:24px;flex-shrink:0}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;top:0;right:0;bottom:0;left:0;background:#d1d5db;border-radius:999px;cursor:pointer;transition:background .15s}.toggle-slider:before{content:"";position:absolute;height:18px;width:18px;left:3px;top:3px;background:#fff;border-radius:50%;transition:transform .15s}.toggle-switch input:checked+.toggle-slider{background:var(--color-primary)}.toggle-switch input:checked+.toggle-slider:before{transform:translate(18px)}.toggle-switch input:disabled+.toggle-slider{opacity:.6;cursor:default}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f121966;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:10}.modal-card{background:var(--color-surface);border-radius:var(--radius);padding:1.6rem;width:100%;max-width:420px;max-height:90vh;overflow-y:auto}.modal-card h2{margin-top:0}.modal-card-wide{max-width:640px}.modal-card-pdf{max-width:720px;width:100%}.pdf-viewer-wrap{margin-bottom:1rem}.pdf-viewer-loading{display:flex;align-items:center;justify-content:center;width:100%;height:65vh;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);color:var(--color-text-muted);font-size:.9rem;margin:0}.pdf-viewer{width:100%;height:65vh;border:1px solid var(--color-border);border-radius:var(--radius);background:#fff}.invoice-items{margin-bottom:1rem}.invoice-item-card{border:1px solid var(--color-border);border-radius:var(--radius);padding:.8rem 1rem .2rem;margin-bottom:.8rem;background:var(--color-bg)}.invoice-item-card-header{display:flex;justify-content:space-between;align-items:center;gap:.6rem;margin-bottom:.2rem}.invoice-item-card-header select,.invoice-item-card-header .searchable-select{flex:1}.invoice-item-card-header select{padding:.4rem .5rem;border:1px solid var(--color-border);border-radius:var(--radius);font-family:inherit;font-size:.85rem;background:var(--color-surface)}.invoice-item-card-header .searchable-select input{padding:.4rem .5rem;font-size:.85rem}.invoice-item-card-header .link-button{font-size:.8rem;flex-shrink:0}.invoice-item-card-row{display:flex;gap:.8rem}.invoice-item-card-row label,.invoice-item-card>label{flex:1}.invoice-item-amount-block{flex:1;display:flex;flex-direction:column;gap:.3rem}.invoice-item-amount{font-size:.95rem;font-weight:600;padding-top:.1rem}.invoice-totals{border-top:1px solid var(--color-border);padding-top:.8rem;margin-bottom:1rem}.invoice-totals div{display:flex;justify-content:space-between;font-size:.9rem;color:var(--color-text-muted);padding:.15rem 0}.invoice-totals-grand{font-weight:700;font-size:1.05rem!important;color:var(--color-text)!important}.modal-actions{display:flex;justify-content:flex-end;gap:.6rem;margin-top:1rem}.calendar-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:1rem}.calendar-nav{display:flex;gap:.5rem}.calendar-month-label{margin:0;font-size:1.15rem;flex:1;min-width:160px}.calendar-legend{display:flex;flex-wrap:wrap;gap:.9rem}.calendar-legend-item{display:flex;align-items:center;gap:.35rem;font-size:.8rem;color:var(--color-text-muted)}.calendar-legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;display:inline-block;background:var(--color-text-muted)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--color-border);border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}.calendar-weekday{background:var(--color-surface);padding:.5rem .6rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--color-text-muted);text-align:center}.calendar-cell{background:var(--color-surface);min-height:110px;padding:.4rem;cursor:pointer;display:flex;flex-direction:column;gap:.25rem;transition:background .1s}.calendar-cell:hover{background:var(--color-bg)}.calendar-cell.is-other-month{background:#fafafb}.calendar-cell.is-other-month .calendar-cell-date{color:#c4c8d0}.calendar-cell.is-today .calendar-cell-date{background:var(--color-primary);color:#fff;border-radius:50%}.calendar-cell-date{font-size:.8rem;font-weight:600;width:22px;height:22px;display:flex;align-items:center;justify-content:center}.calendar-cell-events{display:flex;flex-direction:column;gap:2px;overflow:hidden}.calendar-event-chip{color:#fff;font-size:.7rem;padding:2px 5px;border-radius:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-event-chip.is-tentative{opacity:.55}.calendar-more-events{font-size:.68rem;color:var(--color-text-muted);padding:0 2px}.day-panel-list{display:flex;flex-direction:column;gap:.9rem;margin-bottom:1rem}.day-panel-event{display:flex;align-items:flex-start;gap:.7rem;padding-bottom:.9rem;border-bottom:1px solid var(--color-border)}.day-panel-event:last-child{border-bottom:none;padding-bottom:0}.day-panel-event .calendar-legend-dot{margin-top:.3rem}.day-panel-event.is-tentative{opacity:.6}.day-panel-event-main{flex:1;min-width:0}.day-panel-event-title{font-size:.95rem;font-weight:600;padding:0;color:var(--color-text)}.day-panel-event-title:hover{color:var(--color-primary)}.day-panel-event-time,.day-panel-event-location,.day-panel-event-contact{font-size:.8rem;color:var(--color-text-muted);margin-top:.15rem}.day-panel-event-actions{display:flex;align-items:center;gap:.8rem;flex-shrink:0}.contact-info-block{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);padding:.7rem .9rem;margin-bottom:.9rem;font-size:.85rem}.contact-info-block .sr-label{display:block;font-size:.7rem;text-transform:uppercase;letter-spacing:.4px;color:var(--color-text-muted);margin-bottom:.3rem}.contact-info-name{font-weight:600;color:var(--color-text);margin-bottom:.15rem}.contact-info-line{color:var(--color-text-muted)}@media (max-width: 720px){.calendar-cell{min-height:80px}}.searchable-select{position:relative}.searchable-select input{width:100%;cursor:pointer}.searchable-select.is-open input{cursor:text;border-color:var(--color-primary)}.searchable-select-list{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:20;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:0 8px 20px #0f12191f;max-height:220px;overflow-y:auto;padding:4px}.searchable-select-option{padding:.5rem .6rem;border-radius:calc(var(--radius) - 3px);font-size:.9rem;cursor:pointer;color:var(--color-text)}.searchable-select-option.is-clear{color:var(--color-text-muted);border-bottom:1px solid var(--color-border);border-radius:0;margin-bottom:3px;padding-bottom:.6rem}.searchable-select-option.is-highlighted{background:var(--color-bg)}.searchable-select-option.is-selected{font-weight:600}.searchable-select-sublabel{color:var(--color-text-muted);font-weight:400}.searchable-select-empty{padding:.6rem;font-size:.85rem;color:var(--color-text-muted)}.dashboard-range-bar{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:1.4rem}.dashboard-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.2rem 1.4rem;margin-bottom:1.5rem;box-shadow:0 1px 2px #0f172a0a}.dashboard-card h2{margin-top:0;font-size:1.1rem}.dashboard-empty{color:var(--color-text-muted);font-size:.9rem}.stat-tile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem;margin-bottom:1.5rem}.stat-tile{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem 1.2rem;box-shadow:0 1px 2px #0f172a0a;display:flex;flex-direction:column;gap:.55rem}.stat-tile-icon{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;background:#eaf1fe;color:var(--color-primary)}.stat-tile-icon svg{width:17px;height:17px}.stat-tile.good .stat-tile-icon{background:#e8f7f0;color:#16915d}.stat-tile.warn .stat-tile-icon{background:#fdeee9;color:#c2410c}.stat-tile-label{font-size:.82rem;color:var(--color-text-muted)}.stat-tile-value{font-size:1.5rem;font-weight:700;color:var(--color-text);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.bar-list{display:flex;flex-direction:column;gap:.7rem}.bar-list-row{display:grid;grid-template-columns:140px 1fr 90px;align-items:center;gap:.7rem}.bar-list-label{font-size:.88rem;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-list-track{background:var(--color-bg);border-radius:999px;height:10px;overflow:hidden}.bar-list-fill{height:100%;border-radius:999px;min-width:2px}.bar-list-value{font-size:.88rem;font-weight:600;color:var(--color-text);text-align:right;font-variant-numeric:tabular-nums}.month-chart{display:flex;align-items:flex-end;gap:.5rem;height:180px;padding-top:1.6rem;border-bottom:1px solid var(--color-border);overflow-x:auto}.month-chart-col{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;min-width:48px;flex:1}.month-chart-value{font-size:.72rem;color:var(--color-text-muted);margin-bottom:.3rem;white-space:nowrap}.month-chart-bar{width:60%;min-height:2px;border-radius:4px 4px 0 0}.month-chart-label{font-size:.72rem;color:var(--color-text-muted);margin-top:.4rem;white-space:nowrap}.list-toolbar-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1.2rem}.list-toolbar-row .doc-type-toggle{margin-bottom:0}.table-title-cell{font-weight:600}.status-dropdown{position:relative;display:inline-block}.status-dropdown-trigger{display:inline-flex;align-items:center;gap:6px;background:none;border:none;padding:.25rem .5rem;border-radius:6px;font:inherit;font-weight:600;font-size:.87rem;text-transform:capitalize;cursor:pointer}.status-dropdown-trigger:hover{background:var(--color-bg)}.status-dropdown-trigger:disabled{cursor:default}.status-dropdown-trigger:disabled:hover{background:none}.status-dropdown-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;background:currentColor}.status-dropdown-caret{width:11px;height:11px;color:var(--color-text-muted);flex-shrink:0}.status-dropdown-list{left:0;right:auto;min-width:150px}.status-dropdown-list .searchable-select-option{display:flex;align-items:center;gap:8px;color:var(--color-text);text-transform:capitalize}.icon-row-actions{display:flex;gap:.35rem;justify-content:flex-end;flex-wrap:wrap}.icon-btn{width:30px;height:30px;display:flex;align-items:center;justify-content:center;padding:0;border-radius:7px;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-muted);cursor:pointer;flex-shrink:0}.icon-btn svg{width:15px;height:15px}.icon-btn:hover{background:var(--color-bg);color:var(--color-text)}.icon-btn.danger:hover{background:#fef2f2;color:#b91c1c;border-color:#fecaca}.icon-btn:disabled{opacity:.45;cursor:default}.icon-btn:disabled:hover{background:var(--color-surface);color:var(--color-text-muted);border-color:var(--color-border)}
