:root{
  --nhs-blue:#005eb5; --nhs-dark-blue:#003087; --nhs-light-blue:#41b6e6; --nhs-green:#007f3b;
  --nhs-black:#212b32; --nhs-grey1:#4c6272; --nhs-grey5:#f0f4f5; --nhs-focus:#ffeb3b; --soft:#eaf3fb; --line:#dbe6f1; --err:#d5281b;
  --f:Frutiger,"Frutiger W01",Arial,"Helvetica Neue",Helvetica,sans-serif;
}
*{box-sizing:border-box;}
body{font-family:var(--f);background:var(--nhs-grey5);color:var(--nhs-black);margin:0;font-size:19px;line-height:1.47;-webkit-font-smoothing:antialiased;}
.app{background:var(--nhs-grey5);max-width:640px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column;box-shadow:0 0 60px rgba(0,0,0,.06);}
/* logo-nudge-v3 */
.topbar{padding:16px 4px 12px 22px;display:flex;align-items:center;gap:12px;background:#fff;}
.topbar .lz{background:var(--nhs-blue);color:#fff;font-weight:800;font-size:16px;padding:4px 8px;border-radius:8px;}
.topbar .pn{font-weight:700;color:var(--nhs-dark-blue);font-size:15px;}
.topbar .pn small{display:block;font-weight:400;color:var(--nhs-grey1);font-size:12px;}
.phost{background:#fff;padding:4px 22px 16px;border-bottom:1px solid var(--line);}
.plabel{font-size:13px;color:var(--nhs-grey1);font-weight:600;margin-bottom:10px;}
.plabel b{color:var(--nhs-dark-blue);}
.steps{display:flex;align-items:center;}
.steps .d{width:27px;height:27px;border-radius:50%;background:#e2edf6;color:var(--nhs-grey1);display:grid;place-items:center;font-weight:700;font-size:13px;flex:none;transition:.3s;}
.steps .d.done{background:var(--nhs-green);color:#fff;}
.steps .d.now{background:var(--nhs-blue);color:#fff;box-shadow:0 0 0 4px rgba(0,94,181,.18);}
.steps .ln{flex:1;height:3px;background:#e2edf6;margin:0 5px;border-radius:2px;transition:.3s;min-width:4px;}
.steps .ln.on{background:var(--nhs-green);}
@media(max-width:470px){ .steps .d{width:22px;height:22px;font-size:12px;} .steps .ln{margin:0 3px;} }
.body{flex:1;padding:14px 22px 6px;}
.hero{text-align:center;padding:6px 0 4px;}
.ill{width:74px;height:74px;border-radius:50%;background:linear-gradient(140deg,var(--nhs-light-blue),var(--nhs-blue));margin:2px auto 12px;display:grid;place-items:center;color:#fff;font-size:32px;}
.hero h2{font-size:26px;color:var(--nhs-dark-blue);margin:0 0 6px;font-weight:800;line-height:1.2;}
.hero p{font-size:15.5px;color:var(--nhs-grey1);margin:0 auto 16px;max-width:430px;}
.col{max-width:470px;margin:0 auto;}
.opts{display:flex;flex-direction:column;gap:11px;}
.opt{background:#fff;border:2px solid #fff;border-radius:18px;padding:15px 17px;display:flex;align-items:center;gap:14px;cursor:pointer;box-shadow:0 5px 14px rgba(0,48,135,.07);}
.opt.sel{border-color:var(--nhs-blue);}
.opt .em{width:44px;height:44px;border-radius:13px;background:var(--soft);display:grid;place-items:center;font-size:23px;flex:none;}
.opt .em:empty{display:none;}
.opt .l{font-size:17px;font-weight:700;color:var(--nhs-dark-blue);flex:1;min-width:0;}
.opt .l small{display:block;font-weight:400;color:var(--nhs-grey1);font-size:13px;}
.field{margin:0 0 14px;}
.field > label{display:block;font-weight:700;color:var(--nhs-dark-blue);font-size:15.5px;margin-bottom:7px;}
.field > label small{display:block;font-weight:400;color:var(--nhs-grey1);font-size:13px;margin-top:2px;}
.field input,.field select,.field textarea{font:inherit;font-size:16.5px;width:100%;padding:13px 15px;border:2px solid var(--line);border-radius:14px;background:#fff;color:var(--nhs-black);}
.field textarea{min-height:88px;resize:vertical;}
.field input:focus,.field select:focus,.field textarea:focus{outline:4px solid var(--nhs-focus);border-color:var(--nhs-blue);}
.field .two{display:flex;gap:10px;}
.field .two input{text-align:center;}
.qlabel{font-weight:700;color:var(--nhs-dark-blue);font-size:16.5px;margin:16px 0 8px;}
.qlabel small{display:block;font-weight:400;color:var(--nhs-grey1);font-size:13px;margin-top:2px;}
.q{margin:0 0 6px;}
.pillrow{display:flex;gap:10px;}
.pill-opt{flex:1;background:#fff;border:2px solid var(--line);border-radius:16px;padding:12px;text-align:center;font-size:16.5px;font-weight:700;color:var(--nhs-dark-blue);cursor:pointer;}
.pill-opt.sel{border-color:var(--nhs-blue);background:var(--soft);}
.reveal{margin-top:12px;padding:14px 16px;border-radius:14px;background:#fff;border:1px solid var(--line);}
.reveal[hidden]{display:none;}
.eth{display:flex;flex-direction:column;gap:10px;}
.eth .cat{background:#fff;border:2px solid #fff;border-radius:16px;box-shadow:0 5px 14px rgba(0,48,135,.06);overflow:hidden;}
.eth .cat.open,.eth .cat.catsel{border-color:var(--nhs-blue);}
.eth .cathd{display:flex;gap:13px;align-items:flex-start;padding:14px 16px;cursor:pointer;}
.eth .cat.open .cathd{background:var(--soft);}
.eth .cathd .rd{width:24px;height:24px;border-radius:50%;border:2px solid #aeb7bd;flex:none;position:relative;margin-top:1px;}
.eth .cat.catsel .cathd .rd{border-color:var(--nhs-blue);}
.eth .cat.catsel .cathd .rd::after{content:"";position:absolute;inset:5px;border-radius:50%;background:var(--nhs-blue);}
.eth .cattitle{font-weight:700;font-size:16.5px;color:var(--nhs-dark-blue);}
.eth .cattitle small{display:block;font-weight:400;color:var(--nhs-grey1);font-size:12.5px;margin-top:2px;}
.eth .subs{display:none;padding:2px 16px 14px 53px;}
.eth .cat.open .subs{display:block;}
.eth .sub{display:flex;align-items:center;gap:11px;padding:8px 0;font-size:16px;cursor:pointer;}
.eth .sub .rd{width:20px;height:20px;border-radius:50%;border:2px solid #aeb7bd;flex:none;position:relative;}
.eth .sub.sel .rd{border-color:var(--nhs-blue);}
.eth .sub.sel .rd::after{content:"";position:absolute;inset:4px;border-radius:50%;background:var(--nhs-blue);}
.eth .sub.sel{font-weight:700;color:var(--nhs-dark-blue);}
.rev .r{background:#fff;border-radius:14px;padding:13px 16px;margin-bottom:10px;}
.rev .r .k{color:var(--nhs-grey1);font-size:13px;}
.rev .r .v{font-weight:700;color:var(--nhs-dark-blue);font-size:15.5px;}
.panel{background:#eaf3fb;border-left:4px solid var(--nhs-blue);border-radius:0 8px 8px 0;padding:11px 14px;font-size:14px;margin:8px 0;}
.panel.error{background:#fbeaea;border-left-color:var(--err);}
.hp{position:absolute;left:-9999px;width:1px;height:1px;}
.doneWrap{text-align:center;padding:16px 0;}
.doneWrap .big{width:82px;height:82px;border-radius:50%;background:var(--nhs-green);color:#fff;display:grid;place-items:center;font-size:42px;margin:6px auto 14px;}
.doneWrap h2{color:var(--nhs-dark-blue);font-size:25px;margin:0 0 6px;}
.doneWrap p{color:var(--nhs-grey1);max-width:390px;margin:0 auto;font-size:15px;}
.foot{padding:14px 22px 22px;background:var(--nhs-grey5);}
.nav{display:flex;gap:12px;max-width:470px;margin:0 auto;}
.pill{flex:1;background:var(--nhs-green);color:#fff;border:none;border-radius:30px;padding:15px;font:inherit;font-size:17.5px;font-weight:700;cursor:pointer;box-shadow:0 6px 16px rgba(0,127,59,.28);}
.pill:disabled{opacity:.6;cursor:progress;}
.pill.back{flex:0 0 auto;background:#fff;color:var(--nhs-dark-blue);border:2px solid var(--line);box-shadow:none;padding:15px 22px;}

/* ---- validation errors (added for required-field enforcement) ---- */
.field.invalid input,
.field.invalid select,
.field.invalid textarea,
.q.invalid .pillrow,
.q.invalid .opts,
.invalid .fin{
  border-color:var(--nhs-red,#d5281b) !important;
  box-shadow:0 0 0 3px rgba(213,40,27,.12);
}
.field-err{
  color:var(--nhs-red,#d5281b);
  font-size:14px;
  font-weight:600;
  margin-top:6px;
  display:flex;
  align-items:flex-start;
  gap:6px;
  line-height:1.35;
}
.field-err::before{
  content:"!";
  flex:0 0 auto;
  width:18px;height:18px;
  border-radius:50%;
  background:var(--nhs-red,#d5281b);
  color:#fff;
  font-size:12px;font-weight:800;
  display:inline-flex;align-items:center;justify-content:center;
  margin-top:1px;
}
.q.invalid .qlabel{color:var(--nhs-red,#d5281b);}
.eth.invalid{outline:2px solid rgba(213,40,27,.4);outline-offset:4px;border-radius:10px;}

/* ---- address lookup widget ---- */
.addr .addr-search{display:flex;gap:8px;margin-bottom:8px;}
.addr .addr-pc{flex:1;border:1px solid var(--line);border-radius:8px;padding:11px 12px;font:inherit;font-size:16px;}
.addr .addr-find{flex:0 0 auto;background:var(--nhs-dark-blue,#003a70);color:#fff;border:none;border-radius:8px;padding:0 16px;font:inherit;font-size:15px;font-weight:700;cursor:pointer;}
.addr .addr-find:hover{background:#00305e;}
.addr .addr-msg{font-size:13px;color:var(--muted,#5c6b78);margin-bottom:8px;min-height:0;}
.addr .addr-results{width:100%;border:1px solid var(--line);border-radius:8px;padding:11px 12px;font:inherit;font-size:15px;margin-bottom:10px;background:#fff;}
.addr .addr-lines{display:flex;flex-direction:column;gap:8px;margin-bottom:8px;}
.addr .addr-lines input{width:100%;border:1px solid var(--line);border-radius:8px;padding:11px 12px;font:inherit;font-size:16px;}
.addr .addr-manual{background:none;border:none;color:var(--nhs,#005eb8);font:inherit;font-size:13.5px;font-weight:600;cursor:pointer;padding:2px 0;text-decoration:underline;}
.field.addr.invalid .addr-lines input[data-key$="_line1"],
.field.addr.invalid .addr-lines input[data-key$="_postcode"]{border-color:var(--nhs-red,#d5281b);box-shadow:0 0 0 3px rgba(213,40,27,.12);}

/* ---- canvas (Wizard) form layout: side-by-side on desktop, stack on mobile ---- */
.canvasflow{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-start;}
.canvasflow .cfield{flex:1 1 auto;min-width:220px;}
.canvasflow .cfield .field{margin:0;}
.canvasflow .c-heading{flex-basis:100%;font-size:20px;font-weight:800;color:var(--nhs-dark-blue,#003a70);margin:6px 0 2px;}
.canvasflow .c-para{flex-basis:100%;font-size:15px;color:var(--muted,#5c6b78);line-height:1.5;margin:0 0 4px;}
.canvasflow .c-image{flex-basis:100%;}
.canvasflow .c-image img{max-width:100%;height:auto;border-radius:8px;}
.canvasflow .chkline{display:flex;align-items:flex-start;gap:10px;font-size:16px;cursor:pointer;}
.canvasflow .chkline input{width:20px;height:20px;margin-top:2px;flex:none;}
@media (max-width:560px){
  .canvasflow .cfield{flex-basis:100%!important;min-width:0;}
}

/* ---- authored rich text (heading/paragraph blocks) ---- */
.c-para ul, .c-para ol{margin:8px 0 8px 22px;padding:0;}
.c-para li{margin:3px 0;}
.c-para p{margin:0 0 10px;}
.c-para a{color:var(--nhs,#005eb8);}
.c-heading b, .c-heading strong{font-weight:800;}
.c-para b, .c-para strong{font-weight:700;}
.c-para u{text-decoration:underline;}
/* honour alignment set in the editor */
.c-heading [style*="text-align"], .c-para [style*="text-align"]{display:block;}

/* ---- pharmacy picker ---- */
.pharm-q{width:100%;border:1px solid var(--line,#d8dde1);border-radius:8px;padding:12px;font-size:16px;}
.pharm-near{border:1px solid #cfe3d3;background:#f3faf5;border-radius:10px;padding:8px;margin-bottom:10px;}
.pharm-near-h{font-size:12px;font-weight:700;color:#0a5c30;text-transform:uppercase;letter-spacing:.03em;padding:4px 6px 6px;}
.pharm-results{border:1px solid var(--line,#d8dde1);border-radius:8px;margin-top:6px;overflow:hidden;max-height:280px;overflow-y:auto;}
.pharm-item{display:block;width:100%;text-align:left;background:#fff;border:none;border-bottom:1px solid #eef2f5;padding:10px 12px;cursor:pointer;}
.pharm-near .pharm-item{background:transparent;border-bottom:1px solid #e3f0e8;border-radius:6px;}
.pharm-item:hover{background:#eef5fb;}
.pharm-item:last-child{border-bottom:none;}
.pharm-nm{display:flex;justify-content:space-between;gap:10px;font-weight:700;font-size:15px;color:var(--nhs-dark-blue,#003a70);}
.pharm-dist{font-weight:600;font-size:12px;color:#0a5c30;background:#e3f4ea;border-radius:10px;padding:1px 8px;white-space:nowrap;}
.pharm-ad{display:block;font-size:13px;color:var(--muted,#5c6b78);margin-top:2px;}
.pharm-none{padding:10px 12px;color:var(--muted,#5c6b78);font-size:14px;}
.pharm-card{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;border:2px solid var(--nhs,#005eb8);background:#eff6fc;border-radius:10px;padding:12px;}
.pharm-change{background:none;border:none;color:var(--nhs,#005eb8);font-weight:700;cursor:pointer;text-decoration:underline;font-size:14px;white-space:nowrap;}

/* ---- brand logo (top-right of the form header) ---- */
.topbar{display:flex;align-items:center;gap:12px;}
.topbar .pn{flex:1 1 auto;min-width:0;}
.topbar .brand-logo{max-height:72px;max-width:56%;width:auto;height:auto;object-fit:contain;flex:none;margin-left:auto;}
@media (max-width:520px){ .topbar .brand-logo{max-height:45px;max-width:50%;} }

/* ---- country picker ---- */
.ctry-q{width:100%;border:1px solid var(--line,#d8dde1);border-radius:8px;padding:12px;font-size:16px;}
.ctry-results{border:1px solid var(--line,#d8dde1);border-radius:8px;margin-top:6px;overflow:hidden;max-height:260px;overflow-y:auto;}
.ctry-item{display:block;width:100%;text-align:left;background:#fff;border:none;border-bottom:1px solid #eef2f5;padding:11px 12px;cursor:pointer;font-size:15px;color:var(--nhs-dark-blue,#003a70);}
.ctry-item:hover{background:#eef5fb;}
.ctry-item:last-child{border-bottom:none;}
.ctry-none{padding:11px 12px;color:var(--muted,#5c6b78);font-size:14px;}
.ctry-card{display:flex;justify-content:space-between;align-items:center;gap:12px;border:2px solid var(--nhs,#005eb8);background:#eff6fc;border-radius:10px;padding:12px;font-size:16px;}
.ctry-change{background:none;border:none;color:var(--nhs,#005eb8);font-weight:700;cursor:pointer;text-decoration:underline;font-size:14px;}
