@font-face{font-family:Manrope;src:url('../fonts/Manrope-Regular.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:Manrope;src:url('../fonts/Manrope-SemiBold.ttf') format('truetype');font-weight:600 900;font-display:swap}
@font-face{font-family:Sora;src:url('../fonts/Sora-Bold.ttf') format('truetype');font-weight:700;font-display:swap}
:root{--brand:#2457ff;--ink:#111326;--coral:#ff684d;--cloud:#eef2ff;--muted:#596174;--line:#dce1ed;--bs-body-color:var(--ink);--bs-body-font-family:Manrope,Arial,sans-serif;--bs-link-color:var(--brand);--bs-border-color:var(--line)}
body{background:#f8f9fd;font:400 16px/1.6 Manrope,Arial,sans-serif;color:var(--ink)}
h1,h2,h3,h4,.display-title{font-family:Sora,Arial,sans-serif;font-weight:700;letter-spacing:-.045em;line-height:1.18}h2{font-size:clamp(1.65rem,3vw,2.25rem)}h5{font-weight:600;font-size:1.1rem}a{text-underline-offset:4px}.text-muted{color:var(--muted)!important}
:focus-visible{outline:3px solid var(--brand)!important;outline-offset:4px}.skip-link{position:absolute;top:-80px;left:20px;z-index:2000;background:white;padding:12px}.skip-link:focus{top:10px}
.app-nav{background:#fff;border-bottom:1px solid var(--line);padding:0}.brand-lockup{display:flex;align-items:center;margin-right:28px;padding:0;min-height:88px}.brand-lockup img{width:210px;height:84px;object-fit:contain}.navbar-nav{gap:4px}.app-nav .nav-link{font-size:14px;font-weight:600;padding:12px!important;border-radius:8px;color:var(--muted);min-height:48px;display:flex;align-items:center}.app-nav .nav-link.active{background:var(--cloud);color:var(--brand)}.app-nav .nav-link:hover{background:#f5f7ff;color:var(--brand)}.navbar-toggler{min-width:48px;min-height:48px;border-color:var(--line)}
.account-meta{display:flex;align-items:center;gap:10px;margin-right:20px;font-size:13px;font-weight:600;line-height:1.4}.account-meta small{display:block;color:var(--muted);font-size:11px;font-weight:400}.account-avatar{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--cloud);color:var(--brand)}
.app-main{padding-top:40px;padding-bottom:40px;min-height:calc(100vh - 180px)}.app-footer{display:flex;justify-content:space-between;gap:16px;border-top:1px solid var(--line);padding-top:24px;padding-bottom:24px;color:var(--muted);font-size:12px}
.eyebrow{display:flex;align-items:center;gap:10px;color:var(--brand);font-size:11px;letter-spacing:.15em;text-transform:uppercase;font-weight:600;margin-bottom:16px}.eyebrow:before{content:'';height:4px;width:20px;background:var(--coral)}.page-intro{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:32px}.page-intro p{color:var(--muted);margin:12px 0 0;max-width:640px}.page-intro .btn{flex-shrink:0}
.btn{font-weight:600;font-size:14px;border-radius:8px;min-height:48px;padding:12px 20px;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:background .18s,transform .18s,box-shadow .18s}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn-primary{--bs-btn-bg:var(--brand);--bs-btn-border-color:var(--brand);--bs-btn-hover-bg:#1944d6;--bs-btn-hover-border-color:#1944d6;--bs-btn-active-bg:#1944d6;--bs-btn-active-border-color:#1944d6;box-shadow:0 4px 12px #2457ff19}.btn-outline-primary{--bs-btn-color:var(--brand);--bs-btn-border-color:#a6b7ff;--bs-btn-hover-bg:var(--brand);--bs-btn-hover-border-color:var(--brand)}.btn-outline-secondary{--bs-btn-color:var(--muted);--bs-btn-border-color:var(--line);--bs-btn-hover-bg:var(--cloud);--bs-btn-hover-color:var(--ink);--bs-btn-hover-border-color:#b2bee5;background:white}.btn-sm{font-size:13px;padding:10px 14px}.btn-lg{font-size:16px;padding:15px 24px}
.card{border:1px solid var(--line);border-radius:12px;box-shadow:0 3px 12px #11132603;overflow:hidden}.card-body{padding:26px}.card-title{margin-bottom:22px}.form-label{font-size:13px;font-weight:600;margin-bottom:8px}.form-label .text-muted{font-weight:400;font-size:12px}.form-control,.form-select{min-height:48px;border-radius:8px;border-color:var(--line);padding:11px 13px;font-size:15px;color:var(--ink);background-color:#fff}.form-control:focus,.form-select:focus{border-color:var(--brand);box-shadow:0 0 0 3px #2457ff18}textarea.form-control{min-height:104px}input::placeholder,textarea::placeholder{color:#71798a!important;font-size:13px}input[type=number],.text-end,.metric-value{font-variant-numeric:tabular-nums}.alert{border-radius:10px;font-size:14px}.alert-danger{color:#912018;background:#fff1f0;border-color:#ffccc7}.text-danger{color:#b42318!important}
.stats-grid{margin-bottom:32px}.stats-grid>.col-6{width:33.333%}.stats-grid .card-body{padding:26px 28px}.stats-grid .fs-4{font-family:Sora,sans-serif;letter-spacing:-.04em;font-size:clamp(1.3rem,2.2vw,1.8rem)!important;margin-top:12px;overflow-wrap:anywhere}.stats-grid>div:first-child .card{background:var(--ink);color:white;border-color:var(--ink)}.stats-grid>div:first-child .text-muted{color:#c8cbe0!important}
.filter-bar{background:white;border:1px solid var(--line);border-radius:12px;padding:18px 12px;margin-bottom:24px!important}.filter-bar label{display:block;font-size:11px;font-weight:600;margin-bottom:6px;color:var(--muted)}.filter-bar .btn{margin-top:23px}.table-responsive{border:1px solid var(--line);border-radius:12px;background:white}.table{margin-bottom:0;--bs-table-hover-bg:#f6f8ff;--bs-table-color:var(--ink)}.table>:not(caption)>*>*{padding:18px 20px;border-bottom-color:#edf0f7}.table thead th{background:#f6f8fc;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.09em;font-weight:600;white-space:nowrap}.table tbody{font-size:14px}.table a:not(.btn){font-weight:600;text-decoration:none}.badge{font-weight:600;border-radius:6px;padding:8px 10px;font-size:11px}.badge.bg-info{background:#eaf0ff!important;color:#2248be}.badge.bg-success{background:#e7f4ed!important;color:#226342}.badge.bg-secondary{background:#f0f1f5!important;color:#596174}.badge.bg-dark{background:#e8e8ef!important;color:#424358}.empty-state{padding:48px 24px!important}.empty-state strong{display:block;font-family:Sora,sans-serif;color:var(--ink);font-size:20px;margin-bottom:8px}.empty-state p{font-size:14px}
#invoiceForm{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:24px;align-items:start}#invoiceForm>input{display:none}#invoiceForm>.card{grid-column:1;margin:0!important}#invoiceForm>.invoice-summary{grid-column:2;grid-row:1 / span 4;position:sticky;top:24px;background:var(--ink);color:white;border-color:var(--ink)}.invoice-summary .card-body{padding:28px}.invoice-summary .row{margin:0}.invoice-summary .col-md-5{width:100%;padding:0}.invoice-summary .form-control{width:110px!important}.invoice-summary .fs-5{display:block!important;font-size:14px!important}.invoice-summary #totalOut{display:block;font:700 30px/1.4 Sora,sans-serif;margin-top:12px;overflow-wrap:anywhere}.invoice-summary hr{margin:24px 0;opacity:.3}.summary-heading{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:#b9c5ff;margin-bottom:28px}.summary-note{font-size:12px;color:#c5cae0;margin-top:24px}.invoice-summary .btn{margin-top:24px;width:100%}#invoiceForm>.btn{grid-column:1;width:auto!important;justify-self:start}.invoice-summary label{font-size:13px}.invoice-steps{display:flex;gap:10px;margin-bottom:24px;font-size:12px;font-weight:600}.invoice-steps span{padding:8px 16px;background:var(--cloud);border-radius:6px;color:var(--brand)}.invoice-steps span:first-child{background:var(--brand);color:white}#lineItemsTable{min-width:680px}#lineItemsTable td{padding:12px 8px}.remove-row{min-width:48px}#draftNotice{font-size:12px!important;min-height:20px;margin-bottom:24px!important}
.login-page{background:white;min-height:100vh}.login-layout{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.login-story{position:relative;background:var(--brand);color:white;padding:clamp(32px,6vw,88px);display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}.login-story:after{content:'';position:absolute;width:370px;height:370px;border:1px solid #ffffff30;transform:rotate(35deg);right:-180px;top:30%;pointer-events:none}.login-story .eyebrow{color:#fff}.login-story h1{font-size:clamp(40px,5.8vw,80px);letter-spacing:-.06em;margin:36px 0 24px}.login-story h1 span{color:#dbe3ff}.login-story p{max-width:390px;color:#e2e8ff}.login-story-footer{font-size:12px;margin-top:64px}.login-sheet{background:#fff;color:var(--ink);padding:24px;max-width:340px;border-radius:12px;box-shadow:12px 12px 0 #173ec5;transform:rotate(-3deg);margin:38px 0 20px}.login-sheet span{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.12em}.login-sheet strong{display:block;font-family:Sora;font-size:21px;margin-top:8px}.sheet-rule{height:7px;background:#eef2ff;border-radius:3px;margin-top:16px}.sheet-rule.short{width:65%}.login-panel{padding:40px;display:flex;align-items:center;justify-content:center}.login-panel-inner{width:100%;max-width:400px}.login-panel .brand-lockup{margin-bottom:44px;width:210px}.login-panel h2{font-size:30px}.login-panel p{color:var(--muted);font-size:14px;margin:12px 0 28px}.login-panel form{border:0;box-shadow:none;padding:0}.login-panel .btn{margin-top:8px}.login-panel label{font-size:13px;font-weight:600}.login-note{border-top:1px solid var(--line);padding-top:24px;font-size:12px!important;margin-top:28px!important}
@media(min-width:1400px){.container{max-width:1280px}}
@media(max-width:1100px){#invoiceForm{grid-template-columns:minmax(0,1fr) 300px}.app-nav .nav-link{padding:10px!important}}
@media(max-width:991px){.navbar-collapse{padding-bottom:20px}.account-meta{margin:16px 0}.brand-lockup{min-height:76px}.login-story{padding:36px}.login-story h1{font-size:48px}#invoiceForm{display:block}#invoiceForm>.card{margin-bottom:20px!important}#invoiceForm>.invoice-summary{position:static}.invoice-summary #totalOut{font-size:32px}}
@media(max-width:600px){.app-main{padding-top:28px}.container{padding-left:20px;padding-right:20px}.page-intro{align-items:flex-start;flex-direction:column;gap:20px}.page-intro .btn{width:100%}.stats-grid>.col-6{width:100%}.stats-grid .card-body{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:20px}.stats-grid .fs-4{margin:0;font-size:21px!important}.card-body{padding:20px}.app-footer{flex-direction:column;gap:6px}.login-layout{display:block}.login-story{padding:30px;min-height:240px}.login-story h1{font-size:38px;margin:24px 0 12px}.login-story p{margin-bottom:0;font-size:14px}.login-sheet,.login-story-footer{display:none}.login-panel{padding:28px 24px 44px}.login-panel .brand-lockup{margin-bottom:20px}.invoice-steps{gap:6px}.invoice-steps span{padding:8px 10px;font-size:11px}.filter-bar .btn{margin-top:23px}.table-responsive{font-size:14px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}.btn:hover{transform:none}}
@media(max-width:1100px){#lineItemsTable{min-width:0;display:block}#lineItemsTable thead{display:none}#lineItemsTable tbody{display:block}#lineItemsTable tr{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);padding:12px;gap:12px;border-bottom:1px solid var(--line)}#lineItemsTable td{display:block;padding:0;border:0;background:none;min-width:0}#lineItemsTable td:first-child{grid-column:1 / -1}#lineItemsTable td:before{display:block;font-size:11px;font-weight:600;color:var(--muted);margin-bottom:6px;text-align:left}#lineItemsTable td:nth-child(1):before{content:'Description'}#lineItemsTable td:nth-child(2):before{content:'Quantity'}#lineItemsTable td:nth-child(3):before{content:'Unit'}#lineItemsTable td:nth-child(4):before{content:'Rate'}#lineItemsTable td:nth-child(5):before{content:'Line total'}#lineItemsTable td:nth-child(5){text-align:left!important}#lineItemsTable td:nth-child(6){grid-column:1 / -1;justify-self:end}#lineItemsTable .remove-row{font-size:0}#lineItemsTable .remove-row:after{content:'Remove line';font-size:13px}}

/* Products-first invoice entry. */
#invoiceForm>.optional-project{grid-column:1;margin:0!important}
.optional-project summary{padding:22px 26px;cursor:pointer;font-weight:600;min-height:48px}
.optional-project summary:focus-visible{outline-offset:-4px}
.optional-project[open] summary{border-bottom:1px solid var(--line)}
.products-card{border-top:3px solid var(--brand)}
#invoiceForm .products-card .card-title{font-size:1.2rem}
#invoiceForm #lineItemsTable .item-description{min-height:92px;font-size:15px;resize:vertical}
#invoiceForm #lineItemsTable th:first-child{min-width:270px}
#draftNotice:empty{display:none}
@media(max-width:991px){#invoiceForm>.optional-project{margin-bottom:20px!important}}
@media(max-width:600px){#invoiceForm #lineItemsTable .item-description{min-height:100px}.optional-project summary{padding:20px}}

@media(max-width:600px){.form-control,.form-select,#invoiceForm #lineItemsTable .item-description{font-size:16px!important}}
.invoice-actions{flex-wrap:wrap}.invoice-actions .btn{white-space:normal}
#fieldErrorList:empty{display:none}.invalid-feedback{display:block}.is-invalid{border:2px solid #b42318!important}
.branding-card{background:white;border:1px solid var(--line);border-radius:12px;padding:24px;margin-bottom:24px}.branding-preview{max-width:220px;max-height:100px;object-fit:contain;margin:12px 0}
.table thead th .sort-link{color:inherit;text-decoration:none;white-space:nowrap}.table thead th .sort-link:hover,.table thead th .sort-link:focus-visible{color:var(--ink);text-decoration:underline}.table thead th[aria-sort="ascending"] .sort-link,.table thead th[aria-sort="descending"] .sort-link{color:var(--ink)}
