.dl-label{display:block;margin-bottom:10px;font:600 13px/1.2 var(--sans);color:var(--navy)}
.dl-row{--bs-gutter-x:0;gap:12px}
.dl-input{width:100%;box-sizing:border-box;min-height:56px;padding:0 18px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--navy);font:600 18px/1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.08em;text-transform:uppercase;transition:border-color .2s ease,box-shadow .2s ease}
.dl-input::placeholder{color:color-mix(in srgb,var(--navy) 38%,#fff);letter-spacing:.06em;font-weight:500}
.dl-input:hover{border-color:color-mix(in srgb,var(--navy) 35%,#fff)}
.dl-input:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgb(167 123 44 / 18%)}
.dl-input[aria-invalid="true"]{border-color:#b3261e}
.dl-input--warn,.dl-input--warn:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgb(167 123 44 / 22%);animation:dlNudge .32s ease}.dl-input--warn[data-flash="1"]{animation-name:dlNudge2}
@keyframes dlNudge{25%{transform:translateX(-3px)}75%{transform:translateX(3px)}}@keyframes dlNudge2{25%{transform:translateX(-3px)}75%{transform:translateX(3px)}}
.dl-msg--limit{background:var(--tp-gold-tint-5,#f8f3ea);color:#5c4214}.dl-msg--limit .dl-msg-ico{background:var(--gold)}
.dl-input:disabled{background:var(--mist);cursor:progress}
.dl-row .tp-button{min-height:56px;min-width:170px;justify-content:center}
.dl-row .tp-button:disabled{opacity:.85;cursor:progress}
.dl-spin{width:16px;height:16px;border:2px solid rgb(255 255 255 / 40%);border-top-color:#fff;border-radius:50%;animation:dlSpin .8s linear infinite}
@keyframes dlSpin{to{transform:rotate(360deg)}}
.dl-hint{margin:10px 0 0;color:var(--ink-muted);font:400 13px/1.5 var(--sans)}
.dl-feedback{min-height:0;margin-top:16px}
.dl-msg{display:grid;grid-template-columns:22px minmax(0,1fr);gap:12px;align-items:start;padding:14px 16px;border-radius:6px;font:400 14px/1.55 var(--sans);animation:dlIn .3s ease}
.dl-msg b{display:block;margin-bottom:2px;font-weight:700}
.dl-msg-ico{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;color:#fff;font:700 13px/1 var(--sans)}
.dl-msg--length,.dl-msg--format,.dl-msg--invalid,.dl-msg--empty{background:#fdf0ef;color:#7a1d17}.dl-msg--length .dl-msg-ico,.dl-msg--format .dl-msg-ico,.dl-msg--invalid .dl-msg-ico,.dl-msg--empty .dl-msg-ico{background:#b3261e}
.dl-msg--expired,.dl-msg--used{background:var(--tp-gold-tint-5,#f8f3ea);color:#5c4214}.dl-msg--expired .dl-msg-ico,.dl-msg--used .dl-msg-ico{background:var(--gold)}
.dl-msg--error{background:var(--mist);color:var(--navy);border:1px solid var(--line)}.dl-msg--error .dl-msg-ico{background:var(--navy)}
.dl-msg-actions{gap:16px;margin-top:8px}
.dl-textbtn{padding:0;border:0;background:none;color:inherit;font:700 13px var(--sans);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.dl-textbtn:hover{color:var(--gold)}
.dl-success{text-align:center;animation:dlIn .35s ease}
.dl-check{display:grid;place-items:center;width:64px;height:64px;margin:0 auto 18px;border-radius:50%;background:var(--tp-gold-tint-5,#f8f3ea);color:var(--gold);font:400 30px/1 var(--serif);box-shadow:inset 0 0 0 1.5px var(--gold)}
.dl-success h2{margin:0}
.dl-success>p{margin:10px auto 0;max-width:420px;color:var(--ink-muted);font:400 15px/1.6 var(--sans)}
.dl-resource{display:grid;gap:4px;margin:24px auto 0;max-width:420px;padding:16px 20px;border:1px solid var(--line);border-radius:6px;text-align:left}
.dl-resource small{color:var(--gold);font:700 11px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase}
.dl-resource strong{font:400 20px/1.25 var(--serif)}
.dl-resource span{color:var(--ink-muted);font:400 13px/1.4 var(--sans)}
.dl-success-actions{gap:20px;margin-top:32px}
@keyframes dlIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.dl-msg,.dl-success,.dl-input--warn{animation:none}.dl-spin{animation-duration:2s}}

.dl-body{padding:clamp(48px,6vw,88px) 0 var(--tp-section-y-sm)}
.dl-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(32px,5vw,72px);align-items:start}
.dl-solo{display:grid;justify-items:center}
.dl-card{box-sizing:border-box;width:100%;background:#fff;color:var(--navy);border:1px solid var(--line);border-top:3px solid var(--gold);border-radius:0 0 10px 10px;padding:clamp(28px,3.4vw,44px);box-shadow:0 18px 44px rgb(17 29 51 / 8%)}
.dl-step-label{margin:0 0 10px;color:var(--gold);font:700 11px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase}
.dl-card h2{margin:0;font:400 clamp(28px,2.6vw,36px)/1.1 var(--serif)}
.dl-card-lede{margin:10px 0 26px;max-width:540px;color:var(--ink-muted);font:400 15px/1.65 var(--sans);text-wrap:pretty}
.dl-success{max-width:640px;outline:none}
.dl-proto-note{margin:22px 0 0;color:var(--ink-muted);font:400 12px/1.5 var(--sans)}
.dl-aside{color:var(--navy);padding-top:clamp(4px,1vw,12px)}
.dl-aside h3{margin:0 0 18px;font:400 24px/1.15 var(--serif)}
.dl-steps{display:grid;gap:16px;margin:0;padding:0;list-style:none;counter-reset:s}
.dl-steps li{display:grid;grid-template-columns:32px minmax(0,1fr);gap:14px;align-items:start;font:400 15px/1.55 var(--sans);color:var(--ink-muted);counter-increment:s}
.dl-steps li::before{content:counter(s);display:grid;place-items:center;width:32px;height:32px;border-radius:50%;border:1px solid var(--gold);color:var(--gold);font:400 16px/1 var(--serif)}
.dl-steps li span{padding-top:5px}
.dl-steps b{color:var(--navy);font-weight:600}
.dl-after{margin-top:28px;padding-top:22px;border-top:1px solid var(--line)}
.dl-after h4{margin:0 0 6px;font:700 13px/1.3 var(--sans);color:var(--navy)}
.dl-after p{margin:0;color:var(--ink-muted);font:400 14px/1.6 var(--sans)}
.dl-help{gap:16px 32px;margin-top:clamp(40px,5vw,64px);padding:24px 28px;box-sizing:border-box;background:var(--mist);border-radius:8px;color:var(--navy)}
.dl-help h3{margin:0 0 4px;font:400 22px/1.2 var(--serif)}
.dl-help p{margin:0;color:var(--ink-muted);font:400 15px/1.55 var(--sans)}
.dl-testcodes{margin-top:24px;color:var(--ink-muted);font:400 13px/1.5 var(--sans)}
.dl-testcodes summary{cursor:pointer;width:max-content;font-weight:600;color:var(--navy)}
.dl-testcodes p{margin:10px 0 8px;max-width:640px}
.dl-testcodes ul{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}
.dl-testcodes code{display:inline-block;padding:4px 8px;border:1px dashed var(--line);border-radius:4px;background:#fff;color:var(--navy);font:600 12px ui-monospace,Menlo,monospace;user-select:all}
.dl-msg--already_used{background:var(--tp-gold-tint-5,#f8f3ea);color:#5c4214}.dl-msg--already_used .dl-msg-ico{background:var(--gold)}
@media (max-width:1000px){.dl-grid{grid-template-columns:1fr}.dl-aside{padding-top:0}}
@media (max-width:600px){.dl-row>*{flex:0 0 100%}.dl-row .tp-button{width:100%}.dl-help{padding:20px}.dl-help .tp-button{width:100%;justify-content:center}}
.dl-msg-actions--used{align-items:center;gap:12px 20px;margin-top:14px}
@media (max-width:600px){.dl-msg-actions--used .tp-button{width:100%;justify-content:center}}

.dl-hero{position:relative;isolation:isolate;padding:0;background:var(--white);color:var(--navy);border-bottom:1px solid var(--line)}
.dl-hero-photo{position:absolute;z-index:-1;inset:0;overflow:hidden}
.dl-hero-photo>img{width:100%;height:100%;object-fit:cover;object-position:center 25%;transform:translateX(32px)}
.dl-hero-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,var(--white) 0%,rgb(255 255 255 / 96%) 26%,rgb(255 255 255 / 78%) 37%,transparent 57%)}
.dl-hero-grid{--bs-gutter-x:0;column-gap:48px;min-height:clamp(380px,34vw,480px);align-items:center;padding:50px 0 62px}
.dl-hero-grid>.dl-head{width:calc(50% - 24px);max-width:560px;margin:0;text-align:left}
.dl-eyebrow{margin:0 0 25px;color:var(--teal-dark);font:700 11px/1 var(--sans);letter-spacing:.17em;text-transform:uppercase}
.dl-head h1{margin:0;color:var(--navy);font-family:var(--serif);font-size:clamp(44px,4.1vw,59px);font-weight:400;line-height:1.06;letter-spacing:-.025em}
.dl-head h1 span{display:block}.dl-head h1 em{color:var(--teal-dark);font-weight:400;font-style:normal}
.dl-head p:not(.dl-eyebrow){max-width:445px;margin:27px 0 0;color:var(--ink-muted);font-size:16px;line-height:1.75}
@media (max-width:1120px){.dl-hero-photo>img{transform:translateX(24px)}.dl-hero-grid{column-gap:28px}.dl-hero-grid>.dl-head{width:calc(50% - 14px)}.dl-head h1{font-size:clamp(39px,4.4vw,50px)}}
@media (max-width:800px){.dl-hero{display:flex;flex-direction:column}.dl-hero-photo{position:relative;inset:auto;z-index:0;order:1;width:100%;height:400px}.dl-hero-photo>img{object-position:66% center;transform:none}.dl-hero-photo::after{background:none}.dl-hero-grid{column-gap:0;min-height:auto;padding:42px 0 30px}.dl-hero-grid>.dl-head{width:100%;max-width:100%}.dl-head h1{font-size:clamp(36px,7vw,56px)}}
@media (max-width:480px){.dl-hero-grid{padding-top:32px;padding-bottom:26px}.dl-head h1{font-size:clamp(32px,9.2vw,40px)}.dl-hero-photo{height:330px}}
/* Validation success modal — fixed overlay, does not affect page layout */
.dl-modal{position:fixed;inset:0;z-index:300;display:grid;place-items:center;padding:24px;background:rgb(11 23 48 / 42%);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:dlFade .2s ease-out}
.dl-modal-box{position:relative;width:min(560px,100%);max-height:calc(100vh - 48px);overflow:auto;margin:0;box-shadow:0 24px 64px rgb(11 23 48 / 28%);animation:dlRise .25s ease-out}
.dl-modal-x{position:absolute;top:14px;right:14px;display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--line);border-radius:50%;background:#fff;color:var(--navy);font-size:15px;cursor:pointer}
.dl-modal-x:hover{border-color:var(--navy)}.dl-modal-x:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
@keyframes dlFade{from{opacity:0}}@keyframes dlRise{from{opacity:0;transform:translateY(12px)}}
@media (max-width:479px){.dl-modal{padding:12px;align-items:end}.dl-modal-box{max-height:calc(100vh - 24px)}}
@media (prefers-reduced-motion:reduce){.dl-modal,.dl-modal-box{animation:none}}
.dl-verifying{margin:0;padding:12px 0 0;color:var(--navy);font:600 14px/1.5 var(--sans)}
/* ---- WordPress port additions (not in the prototype file) ------------------------------------------------------
   1. .tp-button: the prototype's shared button rules (components/components.css), copied verbatim, plus flex-shrink:0 on the icon (the prototype's Icon component sets it inline; without it the arrow collapses to 0 width when a full-width button overflows at 320px). This theme does
      not load components.css site-wide, and this page uses the prototype's .tp-button / .tp-button--primary / --outline markup.
   2. .dl-steps strong: the page editor produces <strong> where the prototype used <b>.
   3. .dl-noscript: fallback note shown only when JavaScript is off. */
.tp-button{white-space:nowrap;display:inline-flex;min-height:52px;align-items:center;justify-content:center;gap:28px;padding:0 22px;border:1px solid transparent;border-radius:2px;background:none;font-family:var(--sans);font-size:14px;font-weight:700;color:inherit;cursor:pointer;transition:.25s ease;text-decoration:none}
.tp-button svg{transition:transform .25s ease;flex-shrink:0}
.tp-button:hover svg{transform:translateX(4px)}
.tp-button--primary,.tp-button--primary:hover{color:#fff}
.tp-button--primary{background:var(--teal-dark)}
.tp-button--primary:hover{background:var(--navy)}
.tp-button--outline{border-color:var(--navy);color:var(--navy)}
.tp-button--outline:hover{color:#fff;background:var(--navy)}
.tp-button:disabled{opacity:.45;cursor:not-allowed}
@media (prefers-reduced-motion:reduce){.tp-button,.tp-button svg{transition:none}}
.dl-steps strong{color:var(--navy);font-weight:600}
.dl-noscript{margin:16px 0 0;color:#7a1d17;font:600 14px/1.5 var(--sans)}
/* 4. Prototype rule `.tp-root *::before,.tp-root *::after{box-sizing:border-box}`: the theme's global reset covers elements only, and .dl-steps li::before (32px circle with a 1px border) depends on it. */
.dl-hero *::before,.dl-hero *::after,.dl-body *::before,.dl-body *::after,.dl-modal *::before,.dl-modal *::after{box-sizing:border-box}
/* 5. Rendered-parity fixes. In the prototype `.tp-root a:not(.tp-button)` and `.tp-root :is(button,a):focus-visible` (components.css) out-rank the page rules below, so the browser shows: link-style anchors without underline or hover colour change, and a 3px / 4px-offset focus ring on the pop-up close button. The theme has no .tp-root, so those results are stated directly. */
a.dl-textbtn{text-decoration:none}
a.dl-textbtn:hover{color:inherit}
.dl-modal-x:focus-visible{outline:3px solid var(--focus-ring);outline-offset:4px}
/* The prototype never resets button fonts, so the close button's glyph is set in the browser's default button font (Arial); the theme's reset would switch it to DM Sans and move the glyph 1px. */
.dl-modal-x{font-family:Arial}
