/* Customer portal uses the same surfaces and controls as the Hub. */
.portal{display:flex!important;flex-direction:column;min-height:100vh;min-height:100dvh;background:var(--bg);color:var(--text)}.portal-header{flex-shrink:0;display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem max(1rem,calc((100vw - 1080px)/2));border-bottom:1px solid var(--line);background:var(--panel)}.portal-brand{display:flex;align-items:center;gap:.5rem;font-weight:650;color:var(--text)}.portal-brand span{color:var(--muted);font-weight:450;margin-left:.5rem}.portal-header-actions{display:flex;align-items:center;gap:.6rem}.portal-header form{margin:0}.portal-main{display:flex;flex:1 0 auto;flex-direction:column;width:100%;box-sizing:border-box;max-width:1080px;margin:0 auto;padding:1.5rem 1rem}.portal-main> *{flex-shrink:0}.portal-main>.page-footer{margin-top:auto}.portal .card{margin-bottom:1rem}.portal-auth{max-width:460px;margin:2rem auto!important}.portal-auth h1{font-size:1.5rem}.portal input,.portal textarea,.portal select{box-sizing:border-box;max-width:100%;color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:.5rem .65rem;font:inherit}.portal label{display:block}.portal label>input:not([type=checkbox]),.portal label>select,.portal label>textarea{display:block;width:100%;margin-top:.35rem}.portal [hidden]{display:none!important}.portal h2{font-size:1.1rem}.portal p{overflow-wrap:anywhere}.portal code{overflow-wrap:anywhere}.portal-total{font-size:1.2rem;font-weight:650}.portal-instructions{white-space:normal}.portal-installation{border-top:1px solid var(--line);padding:1rem 0}.portal-installation:first-of-type{border-top:0}.portal-installation p{margin:.4rem 0}.portal-estimate{padding:.75rem;background:var(--soft);border:1px solid var(--line);border-radius:8px;grid-column:1/-1}.portal .scroll table{min-width:570px}.portal-no-print summary{cursor:pointer}.portal .form-grid{margin-top:1rem}
@media(max-width:600px){.portal-header{padding:.7rem 1rem}.portal-brand span{display:none}.portal-main{padding:1rem .75rem}.portal .form-grid{grid-template-columns:1fr}.portal-main .page-heading h1{font-size:1.45rem}}
@media print{.portal-header,.portal-no-print,.portal .notice{display:none!important}.portal-main{max-width:none;padding:0}.portal .license-invoice{display:block!important}.portal .license-invoice a,.portal .license-invoice button{display:none!important}.portal .scroll{overflow:visible}.portal .scroll table{min-width:0;width:100%}}
.portal-subscriptions>h2{margin-bottom:.75rem}.portal-subscription h3{font-size:1rem}.portal-expiry{margin:.6rem 0}.portal-feature-list{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;padding:0;margin:.8rem 0}.portal-feature-list li{border:1px solid var(--line);background:var(--soft);padding:.35rem .65rem;border-radius:6px}.portal-license-help{margin-top:.8rem}.portal summary{cursor:pointer;padding:.5rem 0;min-height:40px}.portal details>p{margin:.5rem 0}.portal-steps{display:flex;gap:.6rem;padding:0;list-style:none;margin:1rem 0}.portal-steps li{flex:1;padding:.65rem;background:var(--soft);border:1px solid var(--line);border-radius:6px;font-size:.9rem;color:var(--muted)}.portal-steps .current{color:var(--green);border-color:var(--green);font-weight:650}.portal-field{margin:1rem 0}.portal-package-summary{background:var(--soft);border:1px solid var(--line);border-radius:8px;padding:1rem;margin-top:1rem}.portal-package-summary p{margin:.4rem 0 0}.portal-package-options{margin:1rem 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:.35rem 0}.portal-package-options>.form-grid{padding-bottom:.6rem}.portal .portal-addon{display:flex;gap:.65rem;align-items:flex-start;padding:.5rem 0}.portal-addon input{margin-top:.3rem}.portal-addon small{display:block;color:var(--muted);margin-top:.2rem}.portal-primary-action{margin-top:1rem;min-height:44px}.portal-renew-help{margin-top:.7rem;font-size:.9rem}.portal-history-list{list-style:none;padding:0;margin:.5rem 0}.portal-history-list li{display:flex;align-items:center;justify-content:space-between;gap:1rem;border-top:1px solid var(--line);padding:1rem 0}.portal-history-list span{display:block;color:var(--muted);font-size:.9rem;margin-top:.2rem}.portal-back{margin-bottom:1rem}.portal-invoice-reference{font-size:.85rem;margin-top:1rem}.portal-payment-extra{grid-column:1/-1}.portal-payment-extra label{margin:.5rem 0}.portal-account>p{margin:.65rem 0}.portal-account form{margin-top:.75rem}
@media screen and (max-width:600px){.portal input:not([type=checkbox]),.portal select,.portal textarea{font-size:16px;min-height:44px}.portal button,.portal a.button{min-height:44px;display:inline-flex;align-items:center;justify-content:center}.portal .icon-button{width:44px}.portal-primary-action{width:100%}.portal-steps{gap:.3rem}.portal-steps li{padding:.5rem .4rem;font-size:.8rem}.portal-invoice-items{overflow:visible}.portal .portal-invoice-items table{min-width:0;width:100%}.portal-invoice-items thead{display:none}.portal-invoice-items tbody{display:block}.portal-invoice-items tr{display:block;padding:.65rem 0;border-bottom:1px solid var(--line)}.portal-invoice-items td{display:flex;justify-content:space-between;gap:1rem;padding:.25rem 0;border:0!important;text-align:right;overflow-wrap:anywhere}.portal-invoice-items td::before{content:attr(data-label);text-align:left;color:var(--muted);font-size:.9rem}.portal-invoice-items td:first-child{display:block;text-align:left;font-weight:650;padding-bottom:.5rem}.portal-invoice-items td:first-child::before{display:none}.portal-history-list li{gap:.6rem}.portal-history-list a{white-space:nowrap}.portal-feature-list{font-size:.9rem}.portal .license-invoice .section-heading{align-items:flex-start}}

@media print{body.portal{display:block!important;min-height:0}.portal-main{display:block;width:auto}}

.portal-renew-panel>summary{cursor:pointer;font-weight:650;color:var(--text);padding:.25rem 0}.portal-renew-content{padding-top:1rem}
