:root{color-scheme:light;--ink:#3b1840;--muted:#6a566e;--plum:#5b2a66;--berry:#a32a6b;--leaf:#27753f;--leaf-soft:#ddf2d3;--sun:#ffd24a;--sun-soft:#fff1bf;--blush:#f8e4ee;--paper:#fffaf1;--line:#ecdfe4;--field:#8f7a96;--error:#9c1f54;font-family:ui-rounded,"Avenir Next",Avenir,system-ui,-apple-system,sans-serif}
*{box-sizing:border-box}[hidden]{display:none!important}
body{margin:0;background:var(--paper);color:var(--ink)}
a{color:inherit}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--berry);outline-offset:2px}

.topbar{min-height:72px;max-width:1200px;margin:auto;padding:12px 28px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}
.brand,.footer-brand{display:flex;align-items:center;gap:9px;text-decoration:none;font-size:23px;font-weight:900;letter-spacing:-1.2px;white-space:nowrap}
.brand-mark{display:grid;place-items:center;width:32px;height:32px;border-radius:11px;background:var(--sun);font-size:20px}
.top-tools{display:flex;align-items:center;gap:16px}
.home-link{font-size:12px;font-weight:800;text-decoration:none}
.top-tools select{max-width:180px;padding:8px 12px;border:1px solid var(--field);border-radius:999px;background:#fff;color:var(--ink);font:inherit;font-size:12px;font-weight:800}

.intro,.work-area{max-width:1200px;margin:0 auto;padding-left:28px;padding-right:28px}
.intro{padding-top:38px;padding-bottom:22px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.72fr);gap:28px;align-items:center}
.eyebrow{display:inline-block;padding:6px 12px;border-radius:999px;background:var(--leaf-soft);color:#1f5f33;font-size:10px;letter-spacing:1.3px;font-weight:900}
.intro h1{font-size:clamp(38px,5vw,58px);line-height:1.04;letter-spacing:-2.4px;margin:14px 0 12px}
.intro-copy>p{max-width:640px;margin:0 0 14px;color:var(--muted);font-size:16px;line-height:1.6}
.intro-copy>.local-note{display:inline-block;margin:0;padding:8px 16px;border-radius:999px;background:var(--sun-soft);color:var(--ink);font-size:13px;font-weight:700;line-height:1.4}
.hero-art{display:grid;place-items:center}
.hero-art img{display:block;width:min(100%,400px);height:auto}

.work-area{padding-top:18px;padding-bottom:60px;display:grid;grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr);gap:32px;align-items:start}
.form-panel,.preview-column{min-width:0}
form{display:grid;gap:18px;min-width:0}
.step{min-width:0;padding:22px 24px 24px;border:2px solid var(--ink);border-radius:34px;background:#fff;box-shadow:5px 5px 0 var(--sun)}
.step-two{box-shadow:5px 5px 0 #b9e3a6}
.step-three{box-shadow:5px 5px 0 #eebfd6}
.step h2{display:flex;align-items:center;gap:12px;margin:0 0 14px;font-size:27px;line-height:1.1;letter-spacing:-.8px}
.step-no{display:grid;place-items:center;flex:none;width:46px;height:46px;border:2px solid var(--ink);border-radius:50%;background:var(--sun);font-size:22px;font-weight:900;letter-spacing:0}
.step-two .step-no{background:#b9e3a6}
.step-three .step-no{background:#eebfd6}
.field{display:grid;gap:7px;margin:0;min-width:0}
.field>span,.week-pick legend{font-size:14px;font-weight:800;line-height:1.35}
.field input,.field textarea{display:block;width:100%;min-width:0;min-height:48px;border:2px solid var(--field);border-radius:22px;background:#fffdfa;padding:12px 16px;color:var(--ink);font:inherit;font-size:16px;line-height:1.45}
.field input{border-radius:999px}
.field input[type="date"]{-webkit-appearance:none;appearance:none}
.field textarea{resize:vertical}
.field input::placeholder,.field textarea::placeholder{color:#7a677e}
.field input[aria-invalid],.field textarea[aria-invalid]{border-color:var(--error)}
.note{min-height:20px;margin:8px 0 0 6px;color:var(--leaf);font-size:13px;font-weight:800;line-height:1.45;overflow-wrap:anywhere}
.note.problem{color:var(--error)}
.hint{margin:6px 0 0 6px;color:var(--muted);font-size:13px;line-height:1.5}
.week-pick{min-width:0;margin:0 0 16px;padding:0;border:0}
.week-pick legend{padding:0;margin-bottom:9px}
.pills{display:flex;flex-wrap:wrap;gap:8px}
.pill{position:relative;display:block;width:48px;height:48px}
.pill input{position:absolute;inset:0;width:100%;height:100%;margin:0;border:2px solid var(--field);border-radius:50%;background:#fff;cursor:pointer;-webkit-appearance:none;appearance:none}
.pill input:hover{border-color:var(--plum)}
.pill input:checked{border-color:var(--plum);background:var(--plum)}
.pill span{position:absolute;inset:0;display:grid;place-items:center;font-size:17px;font-weight:900;pointer-events:none}
.pill input:checked+span{color:#fff}
.field-pair{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;align-items:end}

.button{min-height:46px;border:0;border-radius:999px;padding:11px 20px;font:inherit;font-size:14px;font-weight:850;line-height:1.2;cursor:pointer}
.primary{background:var(--plum);color:#fff}
.primary:hover{background:var(--berry)}
.quiet{background:#f2e9ee;color:var(--ink)}
.soft{margin-top:10px;border:2px dashed #7fbf72;background:#f3fbee;color:#1f5f33}
.form-actions{display:flex;justify-content:flex-end;padding-right:6px}

.preview-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:26px}
.preview-head h2{margin:0;font-size:27px;line-height:1.1;letter-spacing:-.8px}
.document{position:relative;min-width:0;padding:30px 24px 20px;border:2px solid var(--ink);border-radius:34px;background:#fff;overflow-wrap:anywhere;word-break:normal}
.document::before{content:"";position:absolute;top:-17px;left:50%;width:34px;height:34px;margin-left:-17px;border:2px solid var(--ink);border-radius:50%;background:#7fc66f}
.doc-status{margin:12px auto 22px;max-width:420px;color:var(--muted);font-size:17px;font-weight:700;line-height:1.5;text-align:center}
.doc-status.nudge{padding:14px 18px;border-radius:24px;background:var(--blush);color:var(--error)}
.doc-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px}
.doc-titles{min-width:0}
.document h3{margin:0;font-size:30px;line-height:1.12;letter-spacing:-1px}
.doc-period{margin:5px 0 0;color:var(--muted);font-size:14px;font-weight:700}
.doc-wheel{flex:none;width:58px;height:58px;color:var(--plum)}
.doc-rule{margin:0 0 18px;padding:12px 18px;border-radius:22px;background:var(--sun-soft);font-size:14px;font-weight:650;line-height:1.5}
.weeks{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,245px),1fr));gap:14px}
.week-row{display:contents}
.week{min-width:0;padding:12px 14px 14px;border:2px solid #e3d4e0;border-radius:26px;break-inside:avoid}
.week-head{display:flex;align-items:center;gap:9px;margin-bottom:8px}
.week-no{display:grid;place-items:center;flex:none;width:30px;height:30px;border-radius:50%;background:var(--sun);font-size:14px;font-weight:900}
.week h4{margin:0;font-size:16px;font-weight:900;line-height:1.2}
.week-list{list-style:none;margin:0;padding:0}
.row{display:grid;grid-template-columns:auto minmax(0,1.25fr) minmax(0,1fr);gap:8px;align-items:start;padding:7px 0;border-top:1px solid #f1e8ee;font-size:14px;line-height:1.3}
.tick{width:16px;height:16px;margin-top:1px;border:2px solid var(--plum);border-radius:5px}
.who{display:flex;align-items:baseline;gap:6px;min-width:0;font-weight:800}
.who>span:last-child{min-width:0}
@media screen{.long-names .row{grid-template-columns:auto minmax(0,1fr);row-gap:3px}.long-names .who{grid-column:2}}
.dot{flex:none;width:10px;height:10px;border-radius:50%;background:var(--plum)}
.dot.c0{background:#7b3a8c}.dot.c1{background:#3f9b4f}.dot.c2{background:#f2b705}.dot.c3{background:#d9487d}.dot.c4{background:#2f86c1}.dot.c5{background:#ef7f3a}.dot.c6{background:#17a398}.dot.c7{background:#8d6e4a}.dot.c8{background:#c13c3c}.dot.c9{background:#5a6ad0}.dot.c10{background:#9ab52c}.dot.c11{background:#6b6b78}
.free{margin:8px 0 0;padding:7px 12px;border-radius:16px;background:var(--leaf-soft);color:#1f5f33;font-size:13px;font-weight:700;line-height:1.35}
.doc-end{break-inside:avoid}
.fair{margin-top:20px;padding:16px 18px;border-radius:26px;background:#faf3f7;break-inside:avoid}
.fair h4{margin:0;font-size:17px;font-weight:900}
.fair-intro{margin:2px 0 10px;color:var(--muted);font-size:13px;font-weight:600}
.fair-list{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0}
.fair-item{display:flex;align-items:baseline;gap:6px;min-width:0;max-width:100%;padding:6px 12px;border-radius:18px;background:#fff;font-size:13px;line-height:1.3}
.fair-item strong{flex:none;font-weight:900}
.fair-name{min-width:0;unicode-bidi:isolate}
.fair-note{margin:10px 0 0;color:var(--muted);font-size:13px;line-height:1.4}
.doc-credit{margin:14px 0 0;color:var(--muted);font-size:11px;text-align:center}
.doc-credit a{color:inherit}

.explain{max-width:1200px;margin:0 auto;padding:32px 28px 54px;border-top:1px solid var(--line);display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:36px}
.explain h2{margin:0 0 10px;font-size:25px;line-height:1.15;letter-spacing:-.6px}
.explain p{margin:0;color:#57445c;font-size:15px;line-height:1.65}
.faq{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 26px;align-content:start}
.faq h3{margin:0 0 5px;font-size:15px;line-height:1.35}
.faq p{font-size:14px}
footer{max-width:1200px;margin:auto;padding:18px 28px 25px;border-top:1px solid var(--line);display:flex;align-items:center;gap:18px;flex-wrap:wrap;color:#6f6072;font-size:11px}
footer .footer-brand{font-size:16px;color:var(--ink)}
footer span{margin-left:auto}
footer span span{margin:0}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

@media(max-width:960px){.work-area{grid-template-columns:1fr}}
@media(max-width:760px){
.topbar{padding:12px 18px}.top-tools{gap:10px}.home-link{font-size:11px}
.intro,.work-area{padding-left:18px;padding-right:18px}
.intro{padding-top:26px;padding-bottom:12px;grid-template-columns:1fr;gap:6px}
.intro h1{font-size:40px;letter-spacing:-1.7px}
.intro-copy>p{font-size:15px}
.intro-copy>.local-note{border-radius:20px}
.hero-art{order:-1;justify-items:start}
.hero-art img{width:190px}
.work-area{padding-top:10px;padding-bottom:42px;gap:30px}
.top-tools select{min-height:44px;font-size:16px}
.step{padding:18px 18px 20px;border-radius:30px}
.document{padding:28px 16px 16px;border-radius:30px}
.field-pair{grid-template-columns:1fr}
footer{padding:17px 18px}.footer-brand{width:100%}footer span{margin:0}
.explain{padding:26px 18px 42px;grid-template-columns:1fr;gap:22px}
.faq{grid-template-columns:1fr}
}
@media(max-width:430px){
.topbar{padding-left:13px;padding-right:13px}.brand{font-size:20px}.brand-mark{width:29px;height:29px}.top-tools{gap:7px}.home-link{display:none}.top-tools select{max-width:150px;padding:7px 8px}
.intro,.work-area{padding-left:14px;padding-right:14px}
.intro h1{font-size:34px;letter-spacing:-1.3px}
.step{padding:16px 14px 18px}
.step h2,.preview-head h2{font-size:24px}
.document{padding:26px 10px 14px}
.document h3{font-size:25px}
.doc-wheel{width:46px;height:46px}
.doc-rule{padding:10px 14px}
.preview-head .button{width:100%}
.fair{padding:14px 12px}
}
@media(forced-colors:active){
.button{border:2px solid ButtonText}
.pill input{border-color:ButtonText}
.pill input:checked{border-color:Highlight;background:Highlight;forced-color-adjust:none}
.pill input:checked+span{color:HighlightText;forced-color-adjust:none}
}
@media(prefers-reduced-motion:no-preference){.button,.pill input{transition:background-color .15s,border-color .15s}}

/* A4 portrait with a real 15 mm page margin. Chrome and Safari both repeat it on every page; padding on the document does not. */
@page{size:A4 portrait;margin:15mm}
/* Sizes are in em, so the three print sizes only change the font size of the document. Nothing on paper needs a background: boxes and circles are borders, and the colour dots stay on screen. */
@media print{
html,body{width:auto!important;min-width:0!important;margin:0!important;padding:0!important;background:#fff!important;color:#1b0f1e!important;overflow:visible!important}
*{box-sizing:border-box}
.topbar,.intro,.form-panel,.preview-head,.explain,footer,.dot{display:none!important}
main,.work-area,.preview-column{display:block!important;width:auto!important;min-width:0!important;max-width:none!important;margin:0!important;padding:0!important;position:static!important;overflow:visible!important}
.document{display:block!important;width:100%!important;max-width:none!important;min-width:0!important;margin:0!important;padding:0 .4mm 0 0!important;border:0!important;border-radius:0!important;box-shadow:none!important;background:#fff!important;overflow:visible!important;color:#1b0f1e;font-size:9.5pt;line-height:1.3}
.document::before{display:none}
.document.print-large{font-size:11.5pt}
.document.print-small{font-size:8pt}
.document.print-small.print-wide{font-size:7.5pt}
.doc-status{margin:0 0 6mm;max-width:none;padding:0;background:none;color:#1b0f1e;font-size:13pt;text-align:left}
.doc-head{gap:6mm;margin:0 0 2.5mm}
.document h3{font-size:24pt;line-height:1.1;letter-spacing:-.4pt;break-after:avoid}
.doc-period{margin:1mm 0 0;color:#1b0f1e;font-size:10.5pt}
.doc-wheel{width:15mm;height:15mm;color:#1b0f1e}
.doc-rule{margin:0 0 4mm;padding:2mm 4mm;border:1pt solid #1b0f1e;border-radius:4.5mm;background:none;font-size:9.5pt;font-weight:600;line-height:1.35;break-inside:avoid}
.weeks{display:block}
.week-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:3.5mm;margin:0 0 3.5mm;break-inside:avoid}
.print-wide .week-row{grid-template-columns:minmax(0,1fr)}
.week{min-width:0;padding:.65em .95em .75em;border:1pt solid #1b0f1e;border-radius:1.5em;break-inside:avoid}
.week-head{gap:.55em;margin-bottom:.3em;break-after:avoid}
.week-no{width:1.9em;height:1.9em;border:1pt solid #1b0f1e;background:none;font-size:.95em}
.week h4{font-size:1.1em;font-weight:800}
.row{gap:.6em;padding:.34em 0;border-top:.5pt solid #8f8590;font-size:1em;line-height:1.25;break-inside:avoid}
.print-large .row{padding:.5em 0}
.print-small .row{padding:.18em 0}
.tick{width:1.1em;height:1.1em;margin-top:.04em;border:1pt solid #1b0f1e;border-radius:.26em}
.print-wide .row{grid-template-columns:auto minmax(0,1.5fr) minmax(0,1fr)}
.who{display:block;font-weight:700}
.free{margin:.3em 0 0;padding:.4em 0 0;border-top:.5pt solid #8f8590;border-radius:0;background:none;color:#1b0f1e;font-size:.95em;font-weight:700;line-height:1.25}
.fair{margin:1mm 0 0;padding:2.5mm 4mm;border:1pt solid #1b0f1e;border-radius:4.5mm;background:none;font-size:9pt;break-inside:avoid}
.fair h4{display:inline;font-size:10pt;font-weight:800}
.fair-intro{display:inline;margin:0 0 0 2mm;color:#1b0f1e;font-size:9pt}
.fair-list{display:flex;flex-wrap:wrap;gap:.5mm 5mm;margin:1.2mm 0 0}
.fair-item{display:block;padding:0;border-radius:0;background:none;font-size:9pt;line-height:1.3}
.fair-item strong{margin-left:.4em;font-weight:700}
.fair-note{margin:1mm 0 0;color:#1b0f1e;font-size:8.5pt}
.doc-credit{margin:2.5mm 0 0;color:#3f3343;font-size:8pt;line-height:1.3;text-align:left;break-inside:avoid}
.doc-credit a{color:inherit;text-decoration:none}
.print-small h3{font-size:20pt}
.print-small .doc-rule{margin-bottom:3mm;padding:1.5mm 4mm;font-size:8.5pt}
.print-small .week-row{gap:2.5mm;margin-bottom:2.5mm}
.print-small .week{padding:.45em .85em .5em}
.print-small .week-head{margin-bottom:.12em}
.print-small .week-no{width:1.95em;height:1.95em;font-size:.85em}
.print-small .fair{margin-top:0;padding:1.5mm 4mm}
}
