:root{--bg:#f4f7fb;--card:#fff;--text:#172033;--muted:#667085;--line:#dfe5ee;--accent:#1565c0;--accent2:#0d47a1;--ok:#157347;--warn:#a15c00;--bad:#b42318;--radius:14px}*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text);line-height:1.5}.shell{max-width:980px;margin:0 auto;padding:22px}.top{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.brand{font-weight:800;letter-spacing:.02em}.badge{display:inline-flex;padding:4px 9px;border:1px solid var(--line);border-radius:999px;font-size:12px;background:#fff;color:var(--muted)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 8px 28px rgba(16,24,40,.05);padding:20px;margin-bottom:16px}h1,h2,h3{margin-top:0}h1{font-size:28px;line-height:1.15;margin-bottom:8px}h2{font-size:19px;margin-bottom:12px}.muted{color:var(--muted)}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.field{display:flex;flex-direction:column;gap:6px}.field.full{grid-column:1/-1}label{font-size:13px;font-weight:700}input,select,textarea{width:100%;border:1px solid #cfd7e4;border-radius:10px;padding:10px 11px;font:inherit;background:#fff;color:var(--text)}textarea{min-height:86px;resize:vertical}input:focus,select:focus,textarea:focus{outline:3px solid rgba(21,101,192,.13);border-color:var(--accent)}button,.btn{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:10px;padding:10px 14px;font-weight:750;text-decoration:none;cursor:pointer;background:var(--accent);color:#fff}.btn.secondary{background:#fff;color:var(--text);border:1px solid var(--line)}.btn:hover,button:hover{background:var(--accent2)}.status{padding:10px 12px;border-radius:10px;font-size:13px}.status.ok{background:#e9f7ef;color:var(--ok)}.status.warn{background:#fff5e8;color:var(--warn)}.status.bad{background:#fff0ee;color:var(--bad)}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;padding:9px 8px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.steps{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 18px}.step{font-size:12px;padding:5px 8px;border-radius:999px;background:#eef3f9;color:#52606d}.step.active{background:#dbeafe;color:#0d47a1}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.small{font-size:12px}.kv{display:grid;grid-template-columns:180px 1fr;gap:8px 14px;font-size:14px}.kv>div:nth-child(odd){color:var(--muted)}code{background:#eef2f6;border-radius:6px;padding:2px 5px}@media(max-width:700px){.shell{padding:14px}.top{align-items:flex-start;flex-direction:column}.grid,.grid-3{grid-template-columns:1fr}.kv{grid-template-columns:1fr;gap:2px}.kv>div:nth-child(even){margin-bottom:9px}h1{font-size:24px}.card{padding:16px}} 

/* Stage 4 public purchase/payment portal */
.skip-link{position:fixed;left:10px;top:-60px;z-index:1000;background:#fff;color:#172033;border:2px solid #1565c0;border-radius:8px;padding:8px 12px;text-decoration:none;font-weight:800}.skip-link:focus{top:10px}.public-body{background:#eef3f8}.portal-shell{width:min(760px,100%);margin:0 auto;min-height:100vh;padding:14px}.portal-header{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:5px 2px 13px}.portal-brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text)}.portal-brand strong{display:block;font-size:13px;line-height:1.2}.portal-brand small{display:block;font-size:10px;color:var(--muted);margin-top:2px}.portal-mark{display:grid;place-items:center;min-width:43px;height:34px;padding:0 8px;border-radius:9px;background:#172033;color:#fff;font-size:10px;font-weight:900}.portal-support{font-size:11px;color:var(--muted);text-align:right}.purchase-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-bottom:10px}.purchase-step{display:flex;align-items:center;justify-content:center;gap:5px;padding:7px 5px;border-radius:9px;background:#fff;border:1px solid var(--line);color:var(--muted);font-size:10px;font-weight:750;white-space:nowrap}.purchase-step b{display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:#eef2f6;color:#667085;font-size:9px}.purchase-step.active{border-color:#84adf4;background:#eff6ff;color:#0d47a1}.purchase-step.active b{background:#1565c0;color:#fff}.purchase-step.done{background:#f0fdf4;color:#157347}.purchase-step.done b{background:#157347;color:#fff}.portal-main{min-width:0}.portal-card{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 9px 30px rgba(16,24,40,.06);padding:18px;margin-bottom:12px}.portal-card.centered{text-align:center;padding:30px 20px}.portal-heading{display:flex;justify-content:space-between;gap:12px}.portal-heading h1,.order-top h1{font-size:25px;margin:2px 0 6px}.eyebrow{font-size:10px;letter-spacing:.09em;font-weight:900;color:#175cd3}.purchase-form fieldset{border:0;padding:0;margin:18px 0}.purchase-form legend{font-weight:850;font-size:14px;margin-bottom:9px}.package-picker{display:grid;gap:7px}.package-option,.payment-option{position:relative;display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:11px;padding:11px 12px;cursor:pointer;background:#fff}.package-option:has(input:checked),.payment-option:has(input:checked){border-color:#5b8def;box-shadow:0 0 0 2px rgba(21,101,192,.08);background:#f8fbff}.package-option input,.payment-option input{width:18px;height:18px;flex:0 0 auto}.package-main,.payment-option span{display:flex;flex-direction:column;min-width:0;flex:1}.package-main strong,.payment-option strong{font-size:13px}.package-main small,.payment-option small{font-size:10px;color:var(--muted);margin-top:2px}.package-price{font-weight:900;font-size:15px;white-space:nowrap}.public-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.optional{font-size:10px;color:var(--muted);font-weight:500}.payment-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.portal-primary{width:100%;min-height:46px;font-size:14px}.notice{border:1px solid #d0d5dd;background:#f9fafb;border-radius:9px;padding:10px 11px;font-size:12px;margin:12px 0}.notice.compact{padding:8px 10px}.status-box{border:1px solid var(--line);border-radius:10px;padding:11px 12px;margin:12px 0;font-size:12px}.status-box ul{margin:6px 0 0;padding-left:18px}.status-box.ok{background:#ecfdf3;border-color:#abefc6;color:#067647}.status-box.warn{background:#fffaeb;border-color:#fedf89;color:#8a4b08}.status-box.bad{background:#fef3f2;border-color:#fecdca;color:#b42318}.status-box.info{background:#eff8ff;border-color:#b2ddff;color:#175cd3}.order-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.status-pill{display:inline-flex;align-items:center;border-radius:999px;padding:5px 8px;font-size:10px;font-weight:850;background:#eef2f6;color:#344054;white-space:nowrap}.status-pill.ok{background:#ecfdf3;color:#067647}.status-pill.warn{background:#fffaeb;color:#8a4b08}.status-pill.bad{background:#fef3f2;color:#b42318}.status-pill.info{background:#eff8ff;color:#175cd3}.summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:12px 0}.summary-grid>div,.bank-details>div{border:1px solid var(--line);border-radius:9px;padding:9px 10px}.summary-grid span,.bank-details span{display:block;font-size:10px;color:var(--muted);margin-bottom:2px}.summary-grid strong,.bank-details strong{font-size:12px;overflow-wrap:anywhere}.payment-reference{display:flex;align-items:center;gap:9px;background:#172033;color:#fff;border-radius:11px;padding:10px 12px;margin:12px 0}.payment-reference span{font-size:10px;color:#d0d5dd}.payment-reference strong{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:15px;letter-spacing:.03em;margin-left:auto}.copy-button{background:#fff;color:#172033;padding:6px 8px;border-radius:7px;font-size:10px}.payment-instructions{border-top:1px solid var(--line);padding-top:13px}.payment-instructions h2{font-size:17px}.qr-shell{text-align:center;margin:12px 0}.qr-shell img{display:block;width:min(300px,85vw);height:auto;margin:0 auto;border:1px solid var(--line);border-radius:12px;padding:7px;background:#fff}.bank-details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.bank-details .full{grid-column:1/-1}.upload-panel{border-top:1px solid var(--line);padding-top:14px;margin-top:14px}.privacy-note{font-size:10px;color:var(--muted);border-top:1px solid var(--line);padding-top:12px;margin-top:16px}.portal-footer{display:flex;justify-content:space-between;gap:10px;color:#667085;font-size:10px;padding:4px 2px 16px}.portal-footer span:empty{display:none}input[type=file]{padding:8px;background:#f9fafb}.check-row{display:flex;align-items:center;gap:8px}.check-row input{width:auto}.btn:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:3px solid rgba(21,101,192,.25);outline-offset:2px}@media(max-width:580px){.portal-shell{padding:9px}.portal-header{padding-bottom:9px}.portal-support{display:none}.purchase-steps{gap:3px}.purchase-step{font-size:0;padding:6px 3px}.purchase-step b{font-size:9px}.purchase-step.active{font-size:10px}.portal-card{padding:14px;border-radius:11px}.portal-heading h1,.order-top h1{font-size:21px}.public-grid,.payment-options,.summary-grid,.bank-details{grid-template-columns:1fr}.bank-details .full{grid-column:auto}.order-top{flex-direction:column}.payment-reference{align-items:flex-start;flex-wrap:wrap}.payment-reference strong{order:3;width:100%;margin-left:0}.package-option{padding:10px}.package-price{font-size:14px}.portal-footer{flex-direction:column;gap:2px}.card{box-shadow:none}}

.status-box.success{background:#ecfdf3;border-color:#abefc6;color:#067647}

/* Stage 6 captive portal */
.captive-card{max-width:540px;margin:0 auto 12px}.captive-hero{display:flex;align-items:center;gap:11px;margin-bottom:16px}.captive-hero h1{margin:2px 0 0}.connection-dot{width:12px;height:12px;border-radius:50%;flex:0 0 auto;box-shadow:0 0 0 5px rgba(21,101,192,.09)}.connection-dot.online{background:#12b76a;box-shadow:0 0 0 5px rgba(18,183,106,.12)}.connection-dot.waiting{background:#f79009}.portal-context-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--line);background:#f8fafc;border-radius:10px;padding:9px 10px;margin-bottom:15px}.portal-context-bar span:first-child{display:flex;flex-direction:column}.portal-context-bar b{font-size:12px}.portal-context-bar small{font-size:10px;color:var(--muted)}.access-code-form label{font-size:13px;text-align:center}.access-code-input{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;text-align:center;font-size:27px;font-weight:900;letter-spacing:.16em;padding:13px 10px;margin-top:5px}.centered-help{text-align:center;margin:8px 0 14px}.portal-divider{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:10px;margin:13px 0}.portal-divider:before,.portal-divider:after{content:"";height:1px;background:var(--line);flex:1}.portal-choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:15px}.choice-card{border:1px solid var(--line);border-radius:11px;padding:13px;background:#f9fafb}.choice-card strong{font-size:12px}.choice-card p{font-size:10px;color:var(--muted);margin:5px 0 0}.choice-link{text-decoration:none;color:var(--text);background:#eff6ff;border-color:#b2ccff}.compact-card{max-width:540px;margin-left:auto;margin-right:auto}.compact-card h2{font-size:15px}.portal-icon{display:inline-grid;place-items:center;min-width:56px;height:44px;border-radius:12px;background:#172033;color:#fff;font-weight:900;margin-bottom:12px}.activation-panel{max-width:500px;margin-left:auto;margin-right:auto;padding:32px 20px}.activation-spinner{width:50px;height:50px;border:5px solid #e8eef6;border-top-color:#1565c0;border-radius:50%;margin:0 auto 18px;animation:portal-spin .9s linear infinite}.activation-panel:has(.status-box.bad) .activation-spinner{animation:none;border-color:#fecdca;border-top-color:#b42318}@keyframes portal-spin{to{transform:rotate(360deg)}}.connected-panel{max-width:540px;margin-left:auto;margin-right:auto}.connected-check{display:grid;place-items:center;width:58px;height:58px;margin:0 auto 14px;border-radius:50%;background:#ecfdf3;color:#067647;font-size:30px;font-weight:900}.left-summary{text-align:left}.router-login-form{margin-top:14px}.router-login-form input[type=hidden]{display:none}@media(max-width:520px){.portal-choice-grid{grid-template-columns:1fr}.access-code-input{font-size:24px;letter-spacing:.12em}.activation-panel{padding:25px 14px}}
.flagoff-public-promo{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;color:inherit;text-decoration:none}.flagoff-public-promo img{width:72px;height:27px;object-fit:cover;border-radius:4px}.flagoff-public-promo .promo-tagline{font-size:9px;white-space:nowrap}@media(max-width:580px){.flagoff-public-promo{justify-content:flex-start}.flagoff-public-promo img{width:64px;height:24px}.flagoff-public-promo .promo-tagline{font-size:8px}}
.flagoff-help-promo{display:flex;align-items:center;justify-content:center;gap:.5rem;margin-top:18px;padding-top:12px;border-top:1px solid var(--line);font-size:10px;color:var(--muted)}.flagoff-help-promo img{width:82px;height:30px;object-fit:cover;border-radius:4px}

/* Stage 10 compact public/captive UI */
.portal-shell{width:min(690px,100%);padding:9px}.portal-header{padding:3px 1px 8px;gap:8px}.portal-brand strong{font-size:11px}.portal-brand small,.portal-support{font-size:9px}.portal-mark{min-width:37px;height:29px;border-radius:7px;font-size:9px}
.portal-card{border-radius:9px;padding:12px;margin-bottom:8px}.portal-card.centered{padding:20px 13px}.portal-heading h1,.order-top h1{font-size:20px}.purchase-steps{gap:4px;margin-bottom:7px}.purchase-step{padding:5px 3px;border-radius:6px;font-size:8.5px}.purchase-step b{width:15px;height:15px;font-size:8px}
.package-option,.payment-option{border-radius:7px;padding:8px 9px}.purchase-form fieldset{margin:11px 0}.purchase-form legend{font-size:11.5px;margin-bottom:6px}
.portal-card input,.portal-card select,.portal-card textarea{padding:8px 9px;border-radius:7px;font-size:12px}.portal-card .btn,.portal-card button{padding:8px 10px;border-radius:7px;font-size:11px}
@media(max-width:430px){.portal-shell{padding:6px}.portal-card{padding:9px}.portal-heading h1,.order-top h1{font-size:18px}.purchase-step{white-space:normal;text-align:center;line-height:1.1}}

/* Stage 13 final public UI/UX + EN/BM -------------------------------------- */
.portal-header-actions{display:flex;align-items:center;gap:8px;min-width:0}.language-switch{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);background:#fff;border-radius:6px;padding:2px 5px;font-size:9px;font-weight:850;white-space:nowrap}.language-switch a{color:var(--muted);text-decoration:none;padding:2px 3px;border-radius:4px}.language-switch a.active{background:#172033;color:#fff}.language-switch span{color:#c7ced8}.help-card{font-size:12px}.help-card h2{font-size:14px;margin:14px 0 5px}.help-card p,.help-card li{line-height:1.48}.help-card ol{padding-left:20px;margin:5px 0 10px}.support-line{border-top:1px solid var(--line);padding-top:9px;margin-top:12px}.expiry-warning{margin:8px 0 10px;padding:7px 9px;border:1px solid #fedf89;background:#fffaeb;color:#8a4b08;border-radius:7px;font-size:10px;text-align:left}.portal-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.public-body{font-size:12px}.portal-card p{margin-top:5px;margin-bottom:8px}.portal-card h1{margin-bottom:5px}.portal-card h2{margin-top:0}.portal-card ol,.portal-card ul{margin-top:5px}.status-box{line-height:1.42}.notice{line-height:1.42}.package-main small{line-height:1.3}.purchase-form fieldset:last-of-type{margin-bottom:9px}
/* Avoid excessive whitespace on small phones while preserving 44px primary touch targets. */
@media(max-width:1024px){.portal-shell{width:min(680px,100%)}}
@media(max-width:768px){.portal-shell{width:min(640px,100%)}.portal-card{box-shadow:0 4px 16px rgba(16,24,40,.05)}}
@media(max-width:430px){.portal-header{align-items:flex-start}.portal-header-actions{gap:4px}.portal-support{display:none}.language-switch{font-size:8.5px}.portal-card{margin-bottom:6px}.portal-primary{min-height:44px}.access-code-input{min-height:52px;font-size:23px}.portal-footer{font-size:8.5px}}
@media(max-width:390px){.portal-shell{padding:5px}.portal-brand strong{font-size:10.5px}.purchase-step.active{font-size:9px}.summary-grid>div,.bank-details>div{padding:7px 8px}}
@media(max-width:360px){.portal-card{padding:8px}.portal-heading h1,.order-top h1{font-size:17px}.package-option,.payment-option{padding:7px}.package-price{font-size:13px}.portal-choice-grid{gap:6px}.choice-card{padding:10px}.flagoff-public-promo .promo-tagline{display:none}}
@media(max-width:320px){.portal-shell{padding:4px}.portal-mark{min-width:34px;height:27px}.language-switch{padding:1px 3px}.portal-card{border-radius:7px}.portal-card input,.portal-card select,.portal-card textarea{font-size:11.5px}.access-code-input{font-size:21px;letter-spacing:.09em}.payment-reference{padding:8px}.payment-reference strong{font-size:13px}.purchase-step{padding:4px 2px}}


/* Access Code delivery card (private order page) */
.access-code-delivery{border:1px solid var(--line,#dbe2e8);border-radius:14px;background:#fff;padding:18px;text-align:center;margin:14px 0}
.access-code-delivery .eyebrow{letter-spacing:.08em;font-size:11px;font-weight:800;color:#667085}
.full-access-code{font-size:42px;font-weight:900;letter-spacing:.18em;font-variant-numeric:tabular-nums;color:#111827;margin:10px 0;word-break:keep-all}
.inline-actions.center-actions{justify-content:center;display:flex;gap:8px;flex-wrap:wrap}
@media(max-width:430px){.full-access-code{font-size:34px;letter-spacing:.12em}}
.portal-brand img.portal-logo{display:block;height:34px;width:auto;max-width:230px;object-fit:contain}
@media(max-width:580px){.portal-brand img.portal-logo{height:28px;max-width:168px}}