/* Shared application login/dashboard styles are loaded first. */
.dh-portal form{display:grid;gap:16px}.dh-portal label{display:grid;gap:7px}.dh-portal input,.dh-portal select,.dh-portal textarea{width:100%;min-width:0;max-width:100%;box-sizing:border-box}.dh-portal textarea{min-height:85px;resize:vertical}.dh-portal .check{display:flex;align-items:flex-start;gap:10px}.dh-portal .check input{width:auto;margin:2px 0}.dh-portal .error{color:#b03030}.dh-portal .auth-links{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.dh-portal .auth-links .text-button{width:auto;margin:12px 0 0}.dh-portal .login-portals button{font-weight:600}.dh-portal .grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:20px}.dh-portal .panel{padding:24px;margin-bottom:20px}.dh-portal .panel h2{margin:0 0 14px;font-size:18px}.dh-portal .price{font-size:30px;font-weight:650;letter-spacing:-1px;margin:24px 0;color:#075985}.dh-portal .features{padding-left:20px;line-height:2}.dh-portal .actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:18px}.dh-portal .button,.dh-portal .panel button,.dh-portal dialog button:not(.dialog-close){display:inline-block;padding:10px 15px;border:1px solid var(--ui-border,#dce6ef);background:#f5f9fd;color:#075985;border-radius:9px;font-weight:600;text-decoration:none}.dh-portal .panel .primary,.dh-portal dialog .primary{background:#075985;color:#fff}.dh-portal .danger{color:#ad3030!important}.dh-portal .stats{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.dh-portal .stats article strong{overflow-wrap:anywhere}.dh-portal .stats article>div{font-size:12px}.dh-portal .stats article>strong{font-size:26px}.dh-portal .stats article{min-width:0}.dh-portal .profile-fields{max-width:600px}.dh-portal .filters,.dh-portal .form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:14px}.dh-portal .filters{margin-bottom:20px;align-items:end}.dh-portal .customer-search{max-width:420px;margin-bottom:20px}.dh-portal .dh-account{display:grid;gap:12px;padding:16px 0;color:var(--owner-nav-text,#fff);overflow-wrap:anywhere}.dh-portal .dh-account small{color:inherit}.dh-portal .dh-account a,.dh-portal .dh-account button{color:#075985;background:#fff;border-radius:9px;padding:10px 14px;text-align:center}.dh-portal td small{display:block;margin-top:5px}.dh-portal td button,.dh-portal td .button{padding:7px 10px;font-size:12px;white-space:nowrap;margin:2px}.dh-portal .pill{display:inline-block;border-radius:20px;background:#edf1ef;padding:5px 10px;font-size:11px;font-weight:700;white-space:nowrap}.dh-portal .pill.paid,.dh-portal .pill.active,.dh-portal .pill.completed{color:#195338;background:#e4f1e8}.dh-portal .pill.rejected,.dh-portal .pill.failed{color:#a33030;background:#fce9e9}.dh-portal .pill.awaiting_verification,.dh-portal .pill.pending{color:#845a14;background:#fbf1dd}.dh-portal dialog{width:min(720px,calc(100vw - 28px));padding:30px;border:1px solid #dce6ef;border-radius:18px;color:#172c40}.dh-portal dialog::backdrop{background:#102b4588}.dh-portal .dialog-close{float:right;background:transparent;border:0;font-size:26px;width:30px;height:30px;line-height:1;padding:0;cursor:pointer}.dh-portal dialog h2{padding-right:30px;margin-top:0}.dh-portal .invoice-logo{max-width:180px;max-height:70px;object-fit:contain;margin-bottom:16px}#dh-message{position:fixed;right:20px;bottom:20px;max-width:min(420px,calc(100vw - 40px));background:#075985;color:#fff;border-radius:10px;z-index:50}#dh-message:not(:empty){padding:15px 20px}
@media(max-width:900px){.dh-portal .dh-account{display:flex;justify-content:space-between;align-items:center;padding:8px 0;gap:12px}.dh-portal .dh-account small{max-width:65%}.dh-portal .stats{grid-template-columns:repeat(2,minmax(0,1fr))}.dh-portal .stats article>strong{font-size:20px}.dh-portal .panel{padding:20px}.dh-portal dialog{padding:24px 20px}.dh-portal .sidebar .nav-label{display:none}}
@media print{.dh-portal .sidebar,.dh-portal .topbar,.dh-portal .actions,.dh-portal button,#dh-message{display:none}.dh-portal .shell{display:block}.dh-portal dialog{position:static;max-height:none;border:0;width:100%}.dh-portal:has(dialog[open]) #app{display:none}.dh-portal dialog::backdrop{background:none}}
.dh-portal .dashboard-brand small{display:block;letter-spacing:0;font-size:10px;line-height:1.5}.dh-portal .dashboard-brand strong{letter-spacing:-.4px}

/* Use the same wrapping rules in the invoice preview and generated PDF. */
.dh-portal .pdf-table{white-space:normal;table-layout:fixed}
.dh-portal .pdf-table th,.dh-portal .pdf-table td{overflow-wrap:anywhere}
.dh-portal .pdf-table td strong{display:inline;font-size:inherit;font-weight:700}
.dh-portal .pdf-table th:last-child,.dh-portal .pdf-table td:last-child{text-align:right}
@media(max-width:600px){.dh-portal .pdf-invoice-style{padding:14px 10px}.dh-portal .pdf-table th,.dh-portal .pdf-table td{padding:8px;font-size:11px}.dh-portal .pdf-company-info{font-size:11px}}

.dh-portal .dh-payment-summary{display:flex;align-items:center;gap:18px;padding:20px;border:1px solid #d8e7f3;border-radius:14px;background:linear-gradient(135deg,#edf7ff,#f8fbff)}
.dh-portal .dh-payment-summary>img{width:64px;height:64px;object-fit:contain;background:white;border-radius:12px;padding:5px}
.dh-portal .dh-payment-summary>div{display:grid;gap:5px;min-width:0}.dh-portal .dh-payment-summary span{font-size:13px;color:#526b80}.dh-portal .dh-payment-summary strong{font-size:27px;color:#075985;overflow-wrap:anywhere}.dh-portal .dh-payment-summary small{color:#60758a;font-size:12px}
.dh-portal .dh-online-payment h3,.dh-portal .dh-manual-options h3{font-size:16px;margin:8px 0}.dh-portal .dh-online-payment>.muted,.dh-portal .dh-manual-options>.muted{margin:0 0 16px;font-size:13px}
.dh-portal .dh-checkout-networks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:14px 0 20px}.dh-portal .dh-network-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;min-height:100px;padding:14px 8px;border:1px solid #dce6ef;background:#fff;border-radius:12px;box-shadow:0 3px 10px #07598508}.dh-portal .dh-network-card img{height:36px;max-width:100%;object-fit:contain}.dh-portal .dh-network-card span{font-size:12px;font-weight:600;text-align:center}
.dh-portal .dh-payment-methods{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(165px,100%),1fr));gap:12px}.dh-portal dialog .dh-payment-method{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:16px;background:#fff;text-align:left}.dh-portal .dh-payment-method:hover{border-color:#075985;background:#f0f8ff}.dh-portal .dh-payment-method img{height:28px;max-width:110px;object-fit:contain}.dh-portal .dh-method-icon{display:grid;place-items:center;width:38px;height:32px;border-radius:8px;background:#e8f3ff;color:#075985;font-size:26px}.dh-portal .dh-payment-method small{font-size:12px;font-weight:400;color:#60758a;overflow-wrap:anywhere}.dh-portal .dh-payment-method>span:last-child{font-size:11px;margin-top:auto}.dh-portal .dh-manual-options{padding-top:16px;border-top:1px solid #e3edf5}.dh-portal .dh-payment-notice,.dh-portal .dh-payment-details{padding:14px;border:1px solid #dce6ef;border-radius:10px;background:#f5f9fd;font-size:13px;line-height:1.7}.dh-portal .dh-payment-details img{display:block;max-width:100px;height:30px;object-fit:contain;margin-bottom:10px}.dh-portal .dh-pay-submit{width:100%}
@media(max-width:500px){.dh-portal .dh-payment-summary{padding:14px;gap:12px}.dh-portal .dh-payment-summary strong{font-size:23px}.dh-portal .dh-payment-summary>img{width:48px;height:48px}.dh-portal .dh-checkout-networks{gap:8px}.dh-portal .dh-network-card{padding:10px 6px;min-height:90px}.dh-portal .dh-network-card img{height:28px}.dh-portal .dh-network-card span{font-size:11px}.dh-portal .dh-payment-methods{grid-template-columns:1fr}}
.dh-portal dialog button.dh-payment-method{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:16px;background:#fff;text-align:left;height:auto;border-radius:12px}
.dh-portal dialog button.dh-payment-method:hover{border-color:#075985;background:#f0f8ff}
.dh-portal dialog button.dh-pay-submit{background:#075985;color:#fff;border-color:#075985;border-radius:12px;box-shadow:0 8px 20px #07598520;min-height:52px}

/* Six equally weighted development milestones. */
.development-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}
.development-heading h2{margin:7px 0 0;overflow-wrap:anywhere}
.development-percent{font-size:30px;letter-spacing:-1px;color:#075985;white-space:nowrap}
.dh-portal .development-bar{display:block;width:100%;height:12px;margin:20px 0 24px;border:0;border-radius:20px;overflow:hidden;appearance:none;background:#e5edf4}
.development-bar::-webkit-progress-bar{background:#e5edf4;border-radius:20px}
.development-bar::-webkit-progress-value{background:#087abb;border-radius:20px}
.development-bar::-moz-progress-bar{background:#087abb;border-radius:20px}
.development-stages{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px 14px;list-style:none;padding:0;margin:0}
.development-stages li{display:flex;align-items:center;gap:9px;font-size:13px;color:#526b80;min-width:0}
.development-stages li>span{display:grid;place-items:center;flex:0 0 28px;height:28px;border-radius:50%;background:#edf2f7;color:#62788a;font-size:12px;font-weight:700}
.development-stages li.complete{color:#075985}.development-stages li.complete>span{color:white;background:#087abb}
.development-stages small{display:block;margin-top:3px;font-size:11px;color:#62788a}
.dh-portal .development-note{font-size:12px;color:#62788a;margin:22px 0 0}
.development-editor{display:grid;gap:14px;margin:0;padding:18px;border:1px solid #dce6ef;border-radius:12px}
.development-editor legend{font-size:13px;font-weight:600;padding:0 5px}
.dh-portal .development-editor .check{display:flex;align-items:center;gap:12px;min-height:32px;margin:0;font-size:14px}
.dh-portal .development-editor input[type=checkbox]{width:18px;height:18px;flex:none;margin:0;padding:0;accent-color:#087abb}
.development-preview{color:#075985;font-weight:600}
@media(max-width:600px){.development-stages{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 10px}.development-percent{font-size:25px}.development-heading{align-items:flex-start}}
@media(max-width:360px){.development-stages{grid-template-columns:minmax(0,1fr)}}
