@font-face {
  font-family: 'Public Sans';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url(fonts/public-sans-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Public Sans';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url(fonts/public-sans-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Libre Caslon Text';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(fonts/libre-caslon-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Libre Caslon Text';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(fonts/libre-caslon-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Libre Caslon Text';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(fonts/libre-caslon-700-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Libre Caslon Text';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(fonts/libre-caslon-700-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  color-scheme: light dark;
  --ink: #17221E;
  --body: #3C4843;
  --muted: #4A5752;
  --green: #1D6B52;
  --green-hover: #134A39;
  --on-green: #FFFFFF;
  --mint: #D6E6DE;
  --panel: #F3F6F4;
  --paper: #FFFFFF;
  --line: #DDE3E0;
  --field: #8A9993;
  --error: #A3291F;
  --error-tint: #FBECEA;
  --banner: #17221E;
  --banner-text: #E8EEEB;
  --banner-link: #A8DCC4;
  --shadow: 0 10px 30px rgba(23, 34, 30, 0.08);
}
@media (prefers-color-scheme: dark) {
  :root {
    --ink: #E8EEEB;
    --body: #CBD6D1;
    --muted: #A9B8B1;
    --green: #5FBF98;
    --green-hover: #86D3B3;
    --on-green: #0B1411;
    --mint: #22382F;
    --panel: #1B2521;
    --paper: #121A17;
    --line: #2C3A34;
    --field: #6B7C75;
    --error: #FF8F80;
    --error-tint: #3A201C;
    --banner: #E8EEEB;
    --banner-text: #17221E;
    --banner-link: #1D6B52;
    --shadow: none;
  }
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: 'Public Sans', system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;
  font-size: 17px;
  line-height: 1.6;
}
a { color: var(--green); text-underline-offset: 2px; }
a:hover { color: var(--green-hover); }
:focus-visible { outline: 3px solid var(--green); outline-offset: 2px; }
[hidden] { display: none !important; }
img, svg { max-width: 100%; }
h1, h2, h3 { margin: 0; line-height: 1.15; }
h1 { font-size: 46px; letter-spacing: -0.02em; font-weight: 700; }
h2 { font-size: 30px; letter-spacing: -0.01em; font-weight: 700; }
h3 { font-size: 20px; font-weight: 700; }
p, ul, ol { margin: 0 0 16px; }
li { margin-bottom: 6px; }
strong { font-weight: 700; }
button, input, select, textarea { font: inherit; }

.wrap { max-width: 1120px; margin: 0 auto; padding: 0 24px; }
.sr { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; padding: 0; }
.skip { position: absolute; left: 12px; top: -60px; z-index: 50; background: var(--ink); color: var(--paper); padding: 10px 14px; border-radius: 8px; font-weight: 600; }
.skip:focus { top: 12px; color: var(--paper); }

.site-header { border-bottom: 1px solid var(--line); }
.header-in { display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center; justify-content: space-between; padding-top: 12px; padding-bottom: 12px; }
.brand { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; color: var(--ink); text-decoration: none; font-weight: 700; font-size: 19px; letter-spacing: -0.01em; }
.brand:hover { color: var(--ink); }
.brand svg { flex: 0 0 auto; }
.logo-ink { stroke: var(--ink); }
.logo-sign { stroke: var(--green); }
.site-nav { display: flex; flex-wrap: wrap; gap: 0 22px; font-size: 15px; font-weight: 500; }
.site-nav a { display: inline-flex; align-items: center; min-height: 44px; color: var(--ink); text-decoration: none; }
.site-nav a:hover { text-decoration: underline; }
.site-nav a[aria-current="page"] { font-weight: 700; text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 6px; }
.menu-btn { display: none; align-items: center; justify-content: center; gap: 8px; min-width: 44px; min-height: 44px; padding: 0 10px; border: 1.5px solid var(--line); border-radius: 10px; background: transparent; color: var(--ink); font-size: 15px; font-weight: 600; cursor: pointer; }
.menu-btn svg { stroke: var(--ink); }

main { display: block; }
.page-top { padding-top: 48px; padding-bottom: 24px; }
.page-top h1 { max-width: 840px; }
.eyebrow { margin: 0 0 10px; font-size: 14px; font-weight: 600; color: var(--muted); }
.lead { margin: 16px 0 0; font-size: 19px; color: var(--body); max-width: 660px; }
.crumbs { margin: 0 0 18px; padding: 0; list-style: none; display: flex; flex-wrap: wrap; gap: 4px 8px; font-size: 14px; color: var(--muted); }
.crumbs li { margin: 0; }
.crumbs li + li::before { content: '/'; margin-right: 8px; color: var(--muted); }
.reviewed { margin: 18px 0 0; font-size: 14px; color: var(--muted); }
.lead + ul { margin-top: 18px; }
.short { min-height: calc(100vh - 230px); }

.prose > *, .faq > * { max-width: 712px; }
.prose h2 { margin: 44px 0 14px; font-size: 28px; }
.prose h3 { margin: 28px 0 8px; }
.prose p, .prose li { color: var(--body); }
.prose ul, .prose ol { padding-left: 24px; }
.prose li { margin-bottom: 8px; }
.prose strong { color: var(--ink); }
.section { padding-top: 56px; padding-bottom: 56px; }
.section h2 { margin-bottom: 24px; }
.band { background: var(--panel); }
.note { background: var(--panel); border-radius: 14px; padding: 22px 24px; margin: 24px 0; }
.note > :last-child { margin-bottom: 0; }
.note h2, .note h3 { margin: 0 0 8px; font-size: 20px; }
.problems { padding-left: 22px; }
.problems li { color: var(--error); font-weight: 600; }

.steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 28px; margin: 0; padding: 0; list-style: none; }
.steps li { display: flex; flex-direction: column; gap: 8px; margin: 0; }
.steps p { margin: 0; color: var(--body); }
.num { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; background: var(--green); color: var(--on-green); font-weight: 700; }

.faq details { border-bottom: 1px solid var(--line); padding: 14px 0; }
.faq details:first-of-type { border-top: 1px solid var(--line); }
.faq summary { display: flex; justify-content: space-between; gap: 16px; align-items: center; min-height: 36px; font-weight: 600; font-size: 18px; cursor: pointer; list-style: none; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: '+'; flex: 0 0 auto; font-size: 24px; line-height: 1; font-weight: 400; color: var(--green); }
.faq details[open] summary::after { content: '\2212'; }
.faq details > :not(summary) { margin: 10px 0 0; color: var(--body); }
.faq details > p:last-child { margin-bottom: 4px; }
.faq details + p { margin-top: 20px; }

.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 52px; padding: 0 26px; border-radius: 10px; font-weight: 700; font-size: 17px; line-height: 1.2; text-align: center; text-decoration: none; cursor: pointer; }
.btn-main { border: 0; background: var(--green); color: var(--on-green); }
.btn-main:hover { background: var(--green-hover); color: var(--on-green); }
.btn-second { border: 1.5px solid var(--ink); background: var(--paper); color: var(--ink); }
.btn-second:hover { background: var(--panel); color: var(--ink); }
.btn-dark { min-height: 48px; border: 0; background: var(--ink); color: var(--paper); font-weight: 600; }
.btn-dark:hover { background: var(--body); color: var(--paper); }
.btn[disabled], .btn[aria-busy="true"] { opacity: 0.65; cursor: progress; }
.link-btn { display: inline-flex; align-items: center; min-height: 44px; padding: 0; border: 0; background: none; color: var(--green); font-weight: 600; text-decoration: underline; text-underline-offset: 2px; cursor: pointer; }
.link-btn:hover { color: var(--green-hover); }

.gen { display: flex; flex-wrap: wrap; gap: 32px; align-items: flex-start; padding-top: 16px; padding-bottom: 64px; }
.gen-form { flex: 999 1 520px; min-width: 0; display: flex; flex-direction: column; gap: 20px; margin: 0; padding: 28px; border-radius: 14px; background: var(--panel); }
.gen-aside { flex: 1 1 360px; min-width: 0; display: flex; flex-direction: column; gap: 10px; position: sticky; top: 16px; }
.gen-aside .small { margin: 0; }
.small { font-size: 14px; color: var(--muted); }
fieldset { margin: 0; padding: 0; border: 0; min-width: 0; }
legend { padding: 0; margin-bottom: 8px; font-size: 15px; font-weight: 600; }
.field { display: flex; flex-direction: column; gap: 6px; }
.field > label, .label { font-size: 15px; font-weight: 600; }
.hint { margin: 0; font-size: 14px; color: var(--muted); }
.row-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
input[type="text"], input[type="email"], input[type="date"], textarea {
  width: 100%;
  min-height: 48px;
  padding: 10px 14px;
  border: 1px solid var(--field);
  border-radius: 8px;
  background: var(--paper);
  color: var(--ink);
  font-weight: 400;
}
input[type="date"] { max-width: 260px; }
textarea { min-height: 96px; resize: vertical; }
input[aria-invalid="true"], textarea[aria-invalid="true"] { border-color: var(--error); box-shadow: 0 0 0 1px var(--error); }
input[type="radio"], input[type="checkbox"] { width: 22px; height: 22px; margin: 1px 0 0; flex: 0 0 22px; accent-color: var(--green); }
.choices { display: flex; flex-direction: column; gap: 4px; }
.choice { display: flex; align-items: flex-start; gap: 10px; min-height: 44px; padding: 8px 0; font-size: 16px; cursor: pointer; }
.choice span { padding-top: 1px; }
.who { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px; padding: 4px; border: 1px solid var(--field); border-radius: 10px; background: var(--paper); }
.who label { position: relative; display: flex; align-items: center; justify-content: center; min-height: 44px; padding: 6px 10px; border-radius: 7px; font-weight: 600; text-align: center; cursor: pointer; }
.who input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.who-age { font-weight: 500; }
.who label:has(input:checked), .who label.is-on { background: var(--green); color: var(--on-green); }
.who label:has(input:focus-visible), .who label.has-focus { outline: 3px solid var(--green); outline-offset: 2px; }
.err { display: flex; gap: 6px; align-items: flex-start; margin: 0; color: var(--error); font-size: 15px; font-weight: 600; }
.err svg { flex: 0 0 18px; margin-top: 2px; }
.err-summary { padding: 16px 18px; border-radius: 10px; background: var(--error-tint); }
.err-summary h2 { display: flex; gap: 8px; align-items: center; margin: 0 0 8px; font-size: 18px; color: var(--error); }
.err-summary ul { margin: 0; padding-left: 22px; }
.err-summary a { color: var(--error); font-weight: 600; }
.submit-row { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; }
.hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.noscript { margin: 0; padding: 14px 16px; border-radius: 10px; background: var(--mint); color: var(--ink); font-size: 15px; }

.gen-form:has(input[name="type"][value="child"]:checked) .for-adult,
.gen-form:has(input[name="type"][value="adult"]:checked) .for-child,
.gen-form:has(input[name="dateMode"][value="blank"]:checked) .for-date,
.gen-form:has(input[name="parents"][value="one"]:checked) .for-two,
.gen-form:has(input[name="parents"][value="two"]:checked) .for-one { display: none; }
.gen-form[data-type="child"] .for-adult,
.gen-form[data-type="adult"] .for-child,
.gen-form[data-date="blank"] .for-date,
.gen-form[data-parents="one"] .for-two,
.gen-form[data-parents="two"] .for-one { display: none; }

.deed {
  background: #FFFFFF;
  color: #111111;
  border: 1px solid #DDE3E0;
  border-radius: 6px;
  box-shadow: var(--shadow);
  padding: 32px 30px;
  font-family: 'Libre Caslon Text', Georgia, 'Times New Roman', serif;
  font-size: 12.5px;
  line-height: 1.75;
  overflow-wrap: break-word;
}
.deed .deed-title { margin: 0 0 4px; text-align: center; font-size: 14px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; }
.deed-rule { width: 40%; height: 0; margin: 0 auto 18px; border: 0; border-bottom: 1px solid #787878; }
.deed p { margin: 0 0 10px; color: #111111; }
.deed ol { margin: 0 0 10px; padding-left: 22px; }
.deed li { margin: 0 0 6px; color: #111111; }
.deed .blank { color: #8A8F8C; }
.deed-sigs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 30px 18px; margin-top: 34px; }
.deed-line { border-top: 1px solid #333333; padding-top: 3px; font-family: 'Public Sans', system-ui, sans-serif; font-size: 10.5px; color: #4A5752; }
.deed-line strong { display: block; margin-top: 2px; font-family: 'Libre Caslon Text', Georgia, serif; font-size: 12px; color: #111111; }
.deed .deed-wit-note { margin: 28px 0 12px; font-family: 'Public Sans', system-ui, sans-serif; font-size: 10.5px; color: #4A5752; }
.deed-wits { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.deed-wit h4 { margin: 0 0 22px; font-family: 'Libre Caslon Text', Georgia, serif; font-size: 12.5px; }
.deed-wit .deed-line { margin-bottom: 22px; }
.deed .deed-foot { margin: 18px 0 0; text-align: center; font-size: 9.5px; color: #828282; }

.result { display: flex; flex-direction: column; gap: 24px; padding-top: 16px; padding-bottom: 64px; }
.result > * { max-width: 760px; }
.result-head { display: flex; flex-direction: column; gap: 6px; }
.result-head h2 { font-size: 34px; letter-spacing: -0.02em; }
.result-head p { margin: 0; color: var(--body); }
.done { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 600; color: var(--green); }
.done svg { stroke: var(--green); }
.actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.status { margin: 0; font-size: 15px; font-weight: 600; }
.status.is-ok { color: var(--green); }
.status.is-bad { color: var(--error); }
.panel { display: flex; flex-direction: column; gap: 12px; padding: 20px; border-radius: 12px; background: var(--panel); }
.panel .choice { font-weight: 600; }
.panel .choice small { font-weight: 400; color: var(--muted); font-size: inherit; }
.email-fields { display: flex; flex-direction: column; gap: 12px; }
.panel:has(#want-email:not(:checked)) .email-fields { display: none; }
.before h3 { margin: 0 0 10px; }
.before ol { padding-left: 22px; color: var(--body); }
.aside-line { margin: 0; padding-top: 16px; border-top: 1px solid var(--line); font-size: 15px; color: var(--muted); }

.checklist, .prose .checklist { list-style: none; margin: 0 0 24px; padding: 0; }
.checklist li { margin: 0; border-bottom: 1px solid var(--line); }
.checklist label { display: flex; gap: 14px; align-items: flex-start; padding: 14px 0; cursor: pointer; }
.checklist input { margin-top: 3px; }
.checklist strong { display: block; color: var(--ink); }
.checklist span span { display: block; color: var(--body); }
.checklist li:has(input:checked) strong { text-decoration: line-through; text-decoration-thickness: 1.5px; }
.checklist-bar { display: flex; flex-wrap: wrap; gap: 8px 20px; align-items: center; justify-content: space-between; margin: 0 0 8px; }
.checklist-bar p { margin: 0; font-weight: 600; }
.group-title { margin: 36px 0 4px; font-size: 22px; }

.settings { display: flex; flex-direction: column; gap: 14px; padding: 22px 24px; border-radius: 14px; background: var(--panel); margin: 16px 0 24px; }
.settings .choice { font-weight: 600; }
.settings .choice small { display: block; font-weight: 400; font-size: 15px; color: var(--muted); }
.table-wrap { overflow-x: auto; margin: 0 0 20px; }
table { width: 100%; border-collapse: collapse; font-size: 15px; }
th, td { padding: 10px 12px 10px 0; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; color: var(--body); }
th { color: var(--ink); font-weight: 700; }

.site-footer { border-top: 1px solid var(--line); }
.footer-in { display: flex; flex-wrap: wrap; gap: 20px 40px; justify-content: space-between; padding-top: 32px; padding-bottom: 40px; font-size: 14px; color: var(--muted); }
.footer-about { flex: 1 1 320px; display: flex; flex-direction: column; gap: 6px; }
.footer-about p { margin: 0; }
.footer-name { font-weight: 700; color: var(--ink); }
.footer-nav { display: flex; flex-wrap: wrap; gap: 0 20px; align-items: flex-start; }
.footer-nav a { display: inline-flex; align-items: center; min-height: 44px; }

.cookie-banner { position: fixed; left: 16px; right: 16px; bottom: 16px; z-index: 40; max-width: 880px; margin: 0 auto; display: flex; flex-wrap: wrap; gap: 14px; align-items: center; justify-content: space-between; padding: 16px 20px; border-radius: 12px; background: var(--banner); color: var(--banner-text); box-shadow: 0 12px 40px rgba(0, 0, 0, 0.25); }
.cookie-banner p { flex: 1 1 380px; margin: 0; font-size: 15px; }
.cookie-banner a { color: var(--banner-link); }
.cookie-banner .choices-row { display: flex; gap: 10px; flex-wrap: wrap; }
.cookie-banner button { min-height: 44px; padding: 0 20px; border: 1.5px solid var(--banner-text); border-radius: 8px; background: transparent; color: var(--banner-text); font-weight: 600; cursor: pointer; }
.cookie-banner button:hover { background: rgba(127, 127, 127, 0.18); }
.cookie-banner :focus-visible { outline-color: var(--banner-link); }

@media (max-width: 959px) {
  .gen-aside { display: none; }
}
@media (max-width: 760px) {
  .js .menu-btn { display: inline-flex; }
  .js .site-nav { display: none; width: 100%; flex-direction: column; padding-bottom: 6px; }
  .js .site-nav.is-open { display: flex; }
  .js .site-nav a { min-height: 48px; font-size: 17px; }
}
@media (max-width: 600px) {
  body { font-size: 16.5px; }
  .wrap { padding-left: 16px; padding-right: 16px; }
  h1 { font-size: 40px; }
  h2 { font-size: 26px; }
  .prose h2 { font-size: 25px; margin-top: 36px; }
  .page-top { padding-top: 32px; }
  .lead { font-size: 18px; }
  .gen-form { padding: 20px 16px; border-radius: 12px; }
  .row-2 { grid-template-columns: minmax(0, 1fr); }
  .who label { min-height: 54px; line-height: 1.3; }
  .who-age { display: block; font-size: 14px; }
  .deed { padding: 22px 18px; font-size: 11.5px; }
  .deed-sigs, .deed-wits { gap: 26px 12px; }
  .result-head h2 { font-size: 30px; }
  .section { padding-top: 44px; padding-bottom: 44px; }
  .note, .settings { padding: 18px 16px; }
}

@media print {
  @page { size: A4; margin: 16mm 18mm; }
  body { background: #FFFFFF; color: #000000; font-size: 11pt; }
  .site-header, .site-footer, .cookie-banner, .skip, .no-print { display: none !important; }
  a { color: #000000; }
  html.print-deed body * { visibility: hidden; }
  html.print-deed .deed-sheet, html.print-deed .deed-sheet * { visibility: visible; }
  html.print-deed .deed-sheet { position: absolute; left: 0; top: 0; width: 100%; }
  .deed { border: 0; border-radius: 0; box-shadow: none; padding: 0; font-size: 11pt; line-height: 1.55; }
  .deed-title { font-size: 15pt; }
  .deed-line, .deed .deed-wit-note { font-size: 8.5pt; }
  .deed-line strong { font-size: 10pt; }
  .deed-sigs { margin-top: 12mm; gap: 12mm 8mm; }
  .deed-wit h4 { font-size: 10.5pt; margin-bottom: 9mm; }
  .deed-wit .deed-line { margin-bottom: 9mm; }
  .deed .deed-foot { font-size: 7.5pt; }
}
