.portal-body{font-family:'Montserrat',system-ui,sans-serif;background:#1a1a1a;color:#c0c0c0;min-height:100vh;margin:0;}
.portal-wrap{max-width:960px;margin:0 auto;padding:24px 20px 48px;}
.portal-header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:28px;flex-wrap:wrap;}
.portal-logo img{height:36px;width:auto;}
.portal-logo span{color:#ED1C24;font-weight:800;font-size:1.1rem;margin-left:8px;}
.portal-nav{display:flex;gap:8px;flex-wrap:wrap;}
.portal-nav a,.portal-btn-sm{font-size:0.75rem;font-weight:700;text-transform:uppercase;letter-spacing:0.5px;padding:8px 14px;border-radius:4px;border:1px solid rgba(255,255,255,0.08);color:#aaa;text-decoration:none;}
.portal-nav a:hover,.portal-nav a.active{color:#fff;border-color:rgba(237,28,36,0.4);background:rgba(237,28,36,0.08);}
.portal-card{background:#222223;border:1px solid rgba(255,255,255,0.06);border-radius:8px;padding:22px;margin-bottom:20px;}
.portal-card h1,.portal-card h2{color:#fff;font-size:1.15rem;margin:0 0 14px;}
.portal-card h3{color:#fff;font-size:0.95rem;margin:0 0 12px;}
.portal-muted{color:#777;font-size:0.85rem;}
.portal-alert{padding:12px 14px;border-radius:6px;margin-bottom:16px;font-size:0.88rem;}
.portal-alert-error{background:rgba(237,28,36,0.12);border:1px solid rgba(237,28,36,0.35);color:#fca5a5;}
.portal-alert-success{background:rgba(34,197,94,0.12);border:1px solid rgba(34,197,94,0.35);color:#86efac;}
.portal-alert-warn{background:rgba(245,158,11,0.12);border:1px solid rgba(245,158,11,0.35);color:#fcd34d;}
.portal-form label{display:block;font-size:0.7rem;font-weight:700;text-transform:uppercase;letter-spacing:0.5px;color:#777;margin:14px 0 6px;}
.portal-form input,.portal-form select,.portal-form textarea{width:100%;padding:12px;border:1px solid rgba(255,255,255,0.08);border-radius:4px;background:#2a2a2b;color:#fff;font-family:inherit;font-size:0.9rem;}
.portal-form input:focus{outline:none;border-color:#ED1C24;}
.portal-btn{display:inline-block;background:#ED1C24;color:#fff;border:none;padding:12px 22px;border-radius:4px;font-weight:700;font-size:0.82rem;text-transform:uppercase;cursor:pointer;text-decoration:none;}
.portal-btn-secondary{background:transparent;border:1px solid rgba(237,28,36,0.5);color:#ED1C24;}
.portal-btn:disabled{opacity:0.5;cursor:not-allowed;}
.portal-list-row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:14px 0;border-bottom:1px solid rgba(255,255,255,0.06);}
.portal-list-row:last-child{border-bottom:none;}
.portal-list-row strong{color:#fff;}
.portal-table{width:100%;border-collapse:collapse;font-size:0.85rem;}
.portal-table th{text-align:left;color:#ED1C24;font-size:0.68rem;text-transform:uppercase;padding:10px 8px;border-bottom:1px solid rgba(255,255,255,0.08);}
.portal-table td{padding:10px 8px;border-bottom:1px solid rgba(255,255,255,0.04);vertical-align:top;}
.portal-timeline{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0;}
.portal-step{font-size:0.72rem;padding:6px 12px;border-radius:20px;border:1px solid rgba(255,255,255,0.1);color:#888;}
.portal-step.done{background:rgba(34,197,94,0.15);border-color:rgba(34,197,94,0.35);color:#86efac;}
.portal-step.current{background:rgba(237,28,36,0.15);border-color:rgba(237,28,36,0.35);color:#fca5a5;}
.portal-cookie{position:fixed;bottom:0;left:0;right:0;background:#141414;border-top:1px solid rgba(255,255,255,0.08);padding:14px 20px;z-index:200;display:flex;gap:16px;align-items:center;flex-wrap:wrap;font-size:0.82rem;}
.portal-footer{margin-top:40px;padding-top:20px;border-top:1px solid rgba(255,255,255,0.06);font-size:0.75rem;color:#666;}

/* Tap-target friendly buttons/links (>=44px) */
.portal-btn,.portal-nav a,.portal-btn-sm{min-height:44px;display:inline-flex;align-items:center;justify-content:center;}
.portal-btn:focus-visible,.portal-nav a:focus-visible,.portal-form input:focus-visible,.portal-form select:focus-visible,.portal-form textarea:focus-visible,.portal-consent-check:focus-visible,.portal-disclosure summary:focus-visible{outline:2px solid #ED1C24;outline-offset:2px;}

/* Progress stepper — mobile-first, no horizontal scroll */
.portal-stepper{margin:8px 0 4px;}
.portal-stepper-list{list-style:none;display:flex;flex-wrap:wrap;gap:6px 4px;margin:0;padding:0;counter-reset:none;}
.portal-stepper-item{flex:1 1 64px;min-width:64px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;position:relative;padding-top:4px;}
.portal-stepper-dot{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:0.82rem;border:2px solid rgba(255,255,255,0.18);color:#888;background:#222223;z-index:1;}
.portal-stepper-label{font-size:0.72rem;line-height:1.25;color:#888;font-weight:600;}
.portal-stepper-item.is-done .portal-stepper-dot{background:rgba(34,197,94,0.2);border-color:#22c55e;color:#86efac;}
.portal-stepper-item.is-done .portal-stepper-label{color:#86efac;}
.portal-stepper-item.is-current .portal-stepper-dot{background:#ED1C24;border-color:#ED1C24;color:#fff;}
.portal-stepper-item.is-current .portal-stepper-label{color:#fff;}
/* connector line between steps (desktop+) */
.portal-stepper-item:not(:first-child)::before{content:"";position:absolute;top:19px;left:-50%;width:100%;height:2px;background:rgba(255,255,255,0.12);z-index:0;}
.portal-stepper-item.is-done::before,.portal-stepper-item.is-current::before{background:rgba(34,197,94,0.45);}
.portal-stepper-next{margin:14px 0 0;font-size:0.85rem;color:#cfcfcf;background:rgba(237,28,36,0.06);border:1px solid rgba(237,28,36,0.2);border-radius:6px;padding:10px 12px;line-height:1.5;}
.portal-stepper-next span{color:#fca5a5;font-weight:700;}

/* T&C consent gate */
.portal-disclosure{border:1px solid rgba(255,255,255,0.1);border-radius:6px;margin:16px 0;background:#1e1e1f;}
.portal-disclosure summary{cursor:pointer;padding:12px 14px;font-weight:700;color:#fff;font-size:0.88rem;list-style:none;min-height:44px;display:flex;align-items:center;}
.portal-disclosure summary::-webkit-details-marker{display:none;}
.portal-disclosure summary::after{content:"\25BC";margin-left:auto;font-size:0.7rem;color:#888;}
.portal-disclosure[open] summary::after{content:"\25B2";}
.portal-disclosure-body{padding:0 14px 14px;font-size:0.84rem;line-height:1.6;color:#bbb;}
.portal-disclosure-body ul{padding-left:18px;margin:8px 0;}
.portal-consent{display:flex;gap:10px;align-items:flex-start;padding:14px;border:1px solid rgba(237,28,36,0.3);border-radius:6px;background:rgba(237,28,36,0.05);margin:14px 0;cursor:pointer;}
.portal-consent input{width:22px;height:22px;min-width:22px;margin-top:1px;accent-color:#ED1C24;}
.portal-consent span{font-size:0.88rem;line-height:1.5;color:#e5e5e5;}
.portal-field-error{color:#fca5a5;font-size:0.82rem;margin:6px 0 0;}

/* Deposit payment card on quotation page */
.portal-deposit-card{background:rgba(245,158,11,0.08);border-color:rgba(245,158,11,0.3);margin-top:20px;}
.portal-deposit-amount{font-size:1.75rem;color:#fcd34d;font-weight:800;margin:0 0 8px;line-height:1.2;}
.portal-deposit-blurb{margin-top:0;margin-bottom:16px;}
.portal-deposit-pay{margin:12px 0 0;}
.portal-deposit-stripe{margin-top:10px;font-size:0.82rem;}

/* Dual payment options — deposit on quote page */
.portal-pay-choose-label{font-size:0.88rem;font-weight:700;color:#fff;margin:0 0 14px;}
.portal-pay-methods{display:flex;flex-direction:column;gap:14px;margin-top:4px;}
.portal-pay-method{background:#1e1e1f;border:2px solid rgba(255,255,255,0.08);border-radius:8px;padding:16px;}
.portal-pay-method-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:12px;}
.portal-pay-method-icon{font-size:1.5rem;line-height:1;flex-shrink:0;}
.portal-pay-method-title{display:block;color:#fff;font-size:0.95rem;margin-bottom:4px;}
.portal-pay-method-badge{display:inline-block;font-size:0.72rem;font-weight:700;text-transform:uppercase;letter-spacing:0.4px;padding:3px 8px;border-radius:4px;background:rgba(245,158,11,0.2);color:#fcd34d;}
.portal-pay-method-badge-free{background:rgba(34,197,94,0.15);color:#86efac;}
.portal-pay-breakdown{margin:0 0 14px;padding:0;font-size:0.88rem;}
.portal-pay-breakdown div{display:flex;justify-content:space-between;align-items:baseline;padding:6px 0;border-bottom:1px solid rgba(255,255,255,0.06);}
.portal-pay-breakdown dt{color:#999;font-weight:500;margin:0;}
.portal-pay-breakdown dd{color:#fff;font-weight:700;margin:0;}
.portal-pay-breakdown-total{border-bottom:none;padding-top:10px;margin-top:4px;}
.portal-pay-breakdown-total dt{color:#fff;font-weight:700;}
.portal-pay-breakdown-total dd{color:#fcd34d;font-size:1.05rem;}
.portal-btn-pay-stripe{width:100%;}
.portal-pay-bank-intro{margin:0 0 12px;font-size:0.84rem;}
.portal-bank-flow{margin-top:8px;}
.portal-bank-ref-note,.portal-bank-email-instruct{font-size:0.88rem;line-height:1.55;margin:0 0 14px;color:#ddd;}
.portal-bank-ref{color:#fcd34d;font-family:ui-monospace,monospace;letter-spacing:0.03em;}
.portal-bank-step{padding:14px 0;border-top:1px solid rgba(255,255,255,0.08);}
.portal-bank-step:first-of-type{border-top:none;padding-top:0;}
.portal-bank-step-label{font-size:0.72rem;font-weight:700;text-transform:uppercase;letter-spacing:0.5px;color:#ED1C24;margin:0 0 12px;}
.portal-bank-details{display:flex;flex-direction:column;gap:10px;margin-bottom:12px;}
.portal-bank-detail{display:flex;flex-direction:column;gap:4px;padding:12px 14px;background:#141414;border-radius:6px;border:1px solid rgba(255,255,255,0.08);}
.portal-bank-detail-k{font-size:0.68rem;font-weight:700;text-transform:uppercase;letter-spacing:0.5px;color:#888;}
.portal-bank-detail-v{font-size:1.25rem;font-weight:800;color:#fff;font-family:ui-monospace,monospace;letter-spacing:0.06em;word-break:break-all;}
.portal-bank-write-down{margin:0 0 14px;font-size:0.88rem;color:#fcd34d;}
.portal-bank-next,.portal-bank-start,.portal-bank-sent-form .portal-btn{width:100%;margin-top:4px;}
.portal-bank-email-link{color:#fca5a5;font-weight:700;word-break:break-all;}
.portal-bank-sent-form{margin-top:12px;}

@media(max-width:640px){
  .portal-header{flex-direction:column;align-items:flex-start;}
  .portal-stepper-list{gap:10px;}
  .portal-stepper-item{flex:1 1 40%;flex-direction:row;justify-content:flex-start;text-align:left;gap:10px;}
  .portal-stepper-item::before{display:none;}
  .portal-stepper-label{font-size:0.8rem;}
  .portal-btn{width:100%;}
}
