/* The personal planner is scoped to the homepage. */
.personal-hero { display:grid; grid-template-columns:minmax(0,1.3fr) minmax(340px,.85fr); gap:clamp(2rem,6vw,6rem); min-height:660px; padding-top:4.5rem; padding-bottom:4.5rem; }
.personal-hero .hero-copy { width:100%; }
.personal-hero .hero-shade { background:linear-gradient(90deg,rgba(3,23,20,.92),rgba(3,23,20,.63) 55%,rgba(3,23,20,.3)); }
.personal-hero h1 { font-size:clamp(3.5rem,5.9vw,5.8rem); letter-spacing:-.05em; line-height:1.02; }
.personal-hero .kicker { color:var(--lime); font-size:.68rem; }
.personal-hero .lede { max-width:540px; line-height:1.8; font-size:1.05rem; }
.personal-hero-actions { align-items:center; margin-top:2rem; gap:1.25rem; }
.personal-hero-actions .button { text-transform:none; letter-spacing:0; font-size:.92rem; gap:1rem; min-height:52px; }
.hero-text-link { color:white; font-size:.85rem; text-decoration:none; border-bottom:1px solid #ffffff60; padding:.5rem 0; }
.personal-hero-footnote { display:flex; flex-wrap:wrap; gap:1.5rem; margin-top:2.5rem; color:#e8eddf; font-size:.68rem; letter-spacing:.04em; }
.personal-hero .hero-trust { font-size:.66rem; color:#d5ddd6; gap:.35rem 1rem; max-width:500px; margin-top:1.5rem; }
.cycling-passport { position:relative; z-index:3; color:var(--ink); padding:1.8rem; border-radius:5px 24px 24px 24px; background:#fffdf3; box-shadow:0 24px 70px #001a1960; border-top:5px solid var(--lime); scroll-margin-top:140px; }
.passport-card-top { display:flex; align-items:center; gap:.55rem; font-size:.63rem; text-transform:uppercase; letter-spacing:.1em; font-weight:800; padding-bottom:1rem; border-bottom:1px dashed #9ca99c; }
.passport-emblem { display:grid; place-items:center; height:30px; width:30px; border:1px solid #486455; border-radius:50%; font-size:1.25rem; }
.passport-edition { margin-left:auto; font-size:.52rem; letter-spacing:.05em; }
.cycling-passport h2 { font-size:2.6rem; margin:1.3rem 0 .7rem; line-height:1.04; }
.cycling-passport > p { font-size:.81rem; color:#556258; line-height:1.7; }
.passport-ride-form label { display:block; font-size:.67rem; font-weight:750; margin-bottom:.45rem; }
.passport-input-row { display:flex; gap:.45rem; }
.passport-input-row > :first-child { flex:1; min-width:0; }
.passport-input-row input,.personal-controls select { border:1px solid #c8d0c5; border-radius:8px; min-height:46px; padding:.6rem .7rem; background:white; color:var(--ink); font:inherit; font-size:.78rem; width:100%; }
.passport-add { display:grid; place-items:center; flex:0 0 46px; border:0; border-radius:8px; color:var(--lime); background:var(--forest); font-size:1.5rem; cursor:pointer; }
.passport-chips { display:flex; flex-wrap:wrap; gap:.4rem; margin-top:.75rem; max-height:170px; overflow:auto; }
.passport-chip { display:inline-flex; align-items:center; max-width:100%; gap:.15rem; padding:0 .15rem 0 .6rem; border:1px solid #bfccbb; border-radius:6px; background:#edf2e6; font-size:.68rem; line-height:1.3; }
.passport-chip > span { overflow-wrap:anywhere; }
.passport-chip button { flex:0 0 32px; min-width:32px; min-height:36px; border:0; color:var(--forest); background:transparent; font-size:1.15rem; cursor:pointer; }
.cycling-passport .passport-empty { font-size:.71rem; font-style:italic; margin-top:.8rem; }
.cycling-passport .passport-message { font-size:.7rem; color:#315b3c; margin:.4rem 0; }
.passport-message:empty { display:none; }
.passport-card-bottom { display:flex; align-items:center; gap:1.2rem; border-top:1px dashed #9ca99c; margin-top:1.4rem; padding-top:1rem; }
.passport-card-bottom > div { display:flex; flex-direction:column; }
.passport-card-bottom strong { font:1.65rem Georgia,serif; }
.passport-card-bottom > div > span { font-size:.54rem; color:#526153; margin-top:.25rem; white-space:nowrap; }
.passport-start { display:inline-flex; justify-content:center; align-items:center; gap:.7rem; background:var(--forest); color:var(--lime); font:700 .72rem/1.4 system-ui,sans-serif; padding:.85rem .9rem; border:0; border-radius:7px; text-decoration:none; min-height:44px; cursor:pointer; }
.passport-card-bottom .passport-start { margin-left:auto; max-width:155px; }
.cycling-passport .passport-storage { font-size:.6rem; margin:.9rem 0 0; }
.personal-planner { padding:4.5rem max(4vw,calc((100vw - var(--max))/2)); background:#f7f5ee; scroll-margin-top:120px; }
.personal-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:2rem; margin-bottom:2.3rem; }
.personal-heading .kicker { font-size:.63rem; margin-bottom:.8rem; }
.personal-heading h2 { font-size:clamp(2.3rem,3.5vw,3.5rem); margin-bottom:.5rem; }
.personal-heading h2 em { color:#427251; }
.personal-heading p:last-child { color:var(--muted); font-size:.86rem; margin-bottom:0; }
.passport-return { flex-shrink:0; color:var(--forest); font-size:.73rem; padding:.7rem 0; text-underline-offset:5px; }
.personal-layout { display:grid; grid-template-columns:285px minmax(0,1fr); gap:2.25rem; align-items:start; }
.personal-controls { padding:1.3rem; border:1px solid #d9dfd3; border-radius:14px; background:#eeefe6; }
.control-step { display:flex; align-items:center; gap:.6rem; margin:.1rem 0 1rem; }
.control-step:not(:first-child) { margin-top:1.7rem; padding-top:1.5rem; border-top:1px solid #cfd7c9; }
.step-number { display:grid; place-items:center; width:27px; height:27px; border-radius:50%; background:#dbe4cf; font:700 .6rem system-ui,sans-serif; color:#385337; }
.control-step h3 { font:600 1.3rem Georgia,serif; margin:0; letter-spacing:-.02em; }
.personal-controls fieldset { padding:0; margin:0; border:0; min-width:0; }
.personal-controls legend,.personal-label { font-size:.7rem; line-height:1.5; font-weight:750; margin-bottom:.6rem; }
.personal-label { display:block; margin-top:1rem; }
.area-choices { display:grid; grid-template-columns:1fr 1fr; gap:.45rem; }
.area-choice { display:flex; align-items:center; gap:.45rem; position:relative; border:1px solid #cdd5c8; border-radius:7px; min-height:50px; padding:.55rem; background:#fbfcf7; font-size:.65rem; line-height:1.25; cursor:pointer; }
.area-choice input { position:absolute; opacity:0; width:1px; height:1px; }
.area-choice:has(input:checked) { border-color:#1f593f; background:#dceccf; box-shadow:inset 0 0 0 1px #1f593f; }
.area-choice:has(input:focus-visible) { outline:3px solid var(--accent-ink); outline-offset:2px; }
.area-code { display:grid; place-items:center; border:1px solid #97aa8d; border-radius:50%; width:25px; height:25px; flex:0 0 25px; color:#335336; font-size:.48rem; font-weight:850; }
.control-hint { font-size:.65rem; color:#64705f; margin:.6rem 0 1rem; }
.personal-controls select { min-height:44px; font-size:.75rem; }
.personal-controls .discovery-fieldset { margin-top:1.25rem; }
.discovery-fieldset label { display:flex; gap:.65rem; align-items:flex-start; padding:.75rem .2rem; cursor:pointer; }
.discovery-fieldset input,.revisit-choice input { accent-color:var(--forest); width:17px; height:17px; flex:0 0 17px; margin:2px 0 0; }
.discovery-fieldset strong { display:block; font-size:.74rem; }
.discovery-fieldset small { display:block; font-size:.62rem; color:#586451; margin-top:.15rem; }
.revisit-choice { display:flex; align-items:flex-start; gap:.65rem; font-size:.68rem; margin:1rem 0; cursor:pointer; }
.text-button { min-height:44px; background:transparent; border:0; color:#39553d; padding:.5rem 0; text-decoration:underline; text-underline-offset:4px; font:inherit; font-size:.69rem; cursor:pointer; }
.passport-jump { display:none; }
.personal-results { min-width:0; }
.personal-results-top { display:flex; justify-content:space-between; align-items:center; gap:1rem; margin-bottom:.7rem; }
.personal-results-top .eyebrow { font-size:.55rem; margin:0 0 .5rem; }
.personal-results-top h3 { font-size:1.7rem; margin:0; line-height:1.15; }
.passport-view-switch { display:flex; gap:3px; padding:4px; border:1px solid #d5dccf; border-radius:99px; background:#e9ede1; flex-shrink:0; }
.passport-view-switch button { border:0; border-radius:99px; background:transparent; color:var(--forest); font:700 .7rem system-ui,sans-serif; padding:.65rem .8rem; min-height:40px; cursor:pointer; }
.passport-view-switch button[aria-pressed="true"] { background:var(--forest); color:white; box-shadow:0 2px 5px #14312420; }
.passport-view-switch span { font-size:.6rem; opacity:.8; margin-left:.25rem; }
.passport-result-note { font-size:.75rem; color:#5b6a58; line-height:1.7; margin:.5rem 0 1.2rem; }
.passport-results-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1.3rem; scroll-margin-top:140px; }
.passport-destination { min-width:0; border:1px solid #d9dfd3; border-radius:14px; background:#fffef9; overflow:hidden; box-shadow:0 4px 14px #30402b04; transition:box-shadow .2s,transform .2s; }
.passport-destination:hover { box-shadow:0 10px 30px #30402b13; transform:translateY(-2px); }
.passport-visual { position:relative; height:200px; background:#234f43; }
.passport-photo-link { display:block; position:relative; height:100%; text-decoration:none; }
.passport-photo { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.passport-photo-link::after { content:""; position:absolute; inset:50% 0 0; background:linear-gradient(transparent,#0a24164d); }
.passport-photo-fallback { height:100%; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:1rem; background:repeating-radial-gradient(ellipse at 80% 25%,transparent 0 19px,#e9ffbb15 20px 21px,transparent 22px 40px); color:#eff5d8; }
.place-tone-1 { background:#4c664d; }.place-tone-2 { background:#746845; }.place-tone-3 { background:#385c67; }
.fallback-compass { font-size:1.3rem; border:1px solid #e2edc66b; width:36px; height:36px; display:grid; place-items:center; border-radius:50%; margin-bottom:.4rem; }
.fallback-place { font:1.8rem Georgia,serif; text-align:center; }
.fallback-caption { font-size:.54rem; letter-spacing:.1em; text-transform:uppercase; margin-top:.6rem; }
.passport-save { position:absolute; top:12px; right:12px; border:1px solid #ffffff70; background:#fffef5f2; border-radius:50%; height:44px; width:44px; font:1.55rem Georgia,serif; color:var(--forest); cursor:pointer; box-shadow:0 3px 8px #10231820; }
.passport-save[aria-pressed="true"] { background:var(--lime); border-color:var(--lime); }
.passport-card-tag { position:absolute; bottom:12px; left:12px; border-radius:4px; padding:.3rem .6rem; background:#fffef3f2; color:#284737; font-size:.58rem; font-weight:750; }
.passport-destination-body { padding:1.2rem; }
.passport-destination-body .eyebrow { font-size:.57rem; margin:0 0 .45rem; }
.passport-destination-body h4 { font:500 1.9rem/1.1 Georgia,serif; letter-spacing:-.03em; margin:0 0 .9rem; overflow-wrap:anywhere; }
.passport-destination-body h4 a { text-decoration:none; }
.passport-reasons { list-style:none; margin:0 0 .9rem; padding:0; color:#466045; font-size:.7rem; line-height:1.5; }
.passport-reasons li { position:relative; padding-left:1rem; margin-bottom:.35rem; }
.passport-reasons li::before { content:"✓"; position:absolute; left:0; font-size:.7rem; color:#517435; }
.passport-idea-sampler { padding:.8rem 0; border-top:1px solid #e1e5d9; }
.passport-idea-sampler > span { font-size:.54rem; text-transform:uppercase; letter-spacing:.09em; color:#65705c; font-weight:800; }
.passport-idea-sampler p { font-size:.72rem; line-height:1.55; margin:.3rem 0 0; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.passport-card-actions { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:.3rem; border-top:1px solid #e1e5d9; padding-top:.5rem; }
.passport-explore { font-size:.72rem; font-weight:800; text-decoration:none; color:#163e2b; padding:.6rem 0; min-height:44px; display:inline-flex; align-items:center; }
.passport-mark-ridden { border:0; padding:.5rem 0 .5rem .4rem; background:transparent; color:#516747; font:600 .65rem system-ui,sans-serif; min-height:44px; cursor:pointer; }
.passport-mark-ridden:disabled { cursor:default; color:#536347; }
.passport-guide-link { display:block; font-size:.62rem; color:#5a6a4c; text-underline-offset:3px; padding-top:.5rem; }
.passport-more { text-align:center; margin-top:1.5rem; }
.passport-more .button { text-transform:none; letter-spacing:0; font-size:.78rem; }
.personal-evidence-note { font-size:.63rem; color:#65715e; line-height:1.7; padding-top:1rem; }
.passport-loading,.passport-empty-results { grid-column:1/-1; padding:3rem 1.8rem; background:#eef1e7; border:1px dashed #b7c5ab; border-radius:14px; text-align:center; }
.passport-loading p,.passport-empty-results p { font-size:.82rem; color:#5c6e53; }
.passport-empty-results h4 { font:1.8rem/1.2 Georgia,serif; margin:.75rem 0; }
.empty-compass { font-size:2rem; color:#698147; }
.passport-spinner { display:inline-block; border:2px solid #bbccad; border-top-color:#34532d; width:24px; height:24px; border-radius:50%; animation:passport-spin 1s linear infinite; }
@keyframes passport-spin { to { transform:rotate(360deg); } }
.base-matcher-details { padding:0 max(4vw,calc((100vw - var(--max))/2)) 2.5rem; background:#f7f5ee; }
.base-matcher-details > summary { cursor:pointer; border-top:1px solid #d9dfd3; padding:1.3rem 0; font-size:.85rem; color:#3d5537; }
.base-matcher-details .planner-section { padding:1.5rem 0; }
[hidden] { display:none !important; }
@media(min-width:1600px) { .personal-hero { min-height:720px; } }
@media(max-width:1100px) { .personal-hero { gap:2rem; grid-template-columns:minmax(0,1fr) minmax(320px,.85fr); }.cycling-passport { padding:1.4rem; }.personal-hero h1 { font-size:4rem; }.personal-layout { grid-template-columns:250px minmax(0,1fr); gap:1.5rem; }.personal-controls { padding:1rem; }.personal-results-top { align-items:flex-start; flex-direction:column; gap:.8rem; }.passport-card-bottom { gap:.8rem; }.passport-card-bottom .passport-start { padding:.65rem; font-size:.65rem; }.passport-results-grid { gap:1rem; }.passport-destination-body { padding:1rem; }.passport-destination-body h4 { font-size:1.7rem; } }
@media(max-width:800px) { .personal-hero { grid-template-columns:1fr; padding-top:3rem; padding-bottom:3rem; gap:2.5rem; }.personal-hero .hero-copy { max-width:600px; }.personal-hero h1 { font-size:clamp(3.2rem,9vw,4.6rem); }.personal-hero .hero-shade { background:linear-gradient(90deg,#031714e8,#03171490); }.cycling-passport { max-width:520px; width:100%; }.personal-hero-footnote { margin-top:1.5rem; }.personal-hero .hero-trust { display:none; }.personal-planner { padding-top:3rem; }.personal-layout { grid-template-columns:1fr; gap:2rem; }.personal-controls { display:grid; grid-template-columns:1fr 1fr; column-gap:1.5rem; padding:1.3rem; }.personal-controls > * { grid-column:1/-1; }.area-choices { grid-template-columns:repeat(3,1fr); }.personal-controls .control-step:not(:first-child) { margin-top:1.2rem; padding-top:1rem; }.personal-controls .discovery-fieldset { margin-top:1rem; }.discovery-fieldset { display:flex; gap:1.5rem; }.discovery-fieldset legend { float:none; }.discovery-fieldset label { flex:1; }.personal-heading { display:block; }.passport-return { display:inline-block; margin-top:.6rem; }.personal-results-top { flex-direction:row; align-items:center; }.passport-jump { display:flex; align-items:center; justify-content:center; color:var(--lime); background:var(--forest); border-radius:8px; min-height:46px; font-size:.8rem; font-weight:700; text-decoration:none; margin:.5rem 0; }.text-button { justify-self:center; }.passport-visual { height:210px; } }
@media(max-width:520px) { .personal-hero { padding-left:5vw; padding-right:5vw; }.personal-hero h1 { font-size:3.35rem; }.personal-hero .lede { font-size:.92rem; }.personal-hero-actions { gap:.8rem; }.personal-hero-actions .button { font-size:.78rem; }.hero-text-link { font-size:.76rem; }.personal-hero-footnote { gap:.85rem; font-size:.57rem; }.cycling-passport { padding:1.25rem; }.cycling-passport h2 { font-size:2.5rem; }.passport-card-bottom { gap:1rem; }.passport-edition { font-size:.45rem; }.personal-planner { padding-left:5vw; padding-right:5vw; }.personal-heading h2 { font-size:2.4rem; }.personal-heading .kicker { font-size:.55rem; letter-spacing:.1em; }.personal-controls { padding:1rem; }.area-choices { grid-template-columns:repeat(2,1fr); }.area-choice { font-size:.73rem; }.personal-controls select,.passport-input-row input { font-size:16px; }.discovery-fieldset { display:block; }.discovery-fieldset small { font-size:.7rem; }.discovery-fieldset strong { font-size:.8rem; }.revisit-choice { font-size:.75rem; }.personal-results-top { flex-direction:column; align-items:flex-start; gap:.8rem; }.personal-results-top h3 { font-size:1.75rem; }.passport-results-grid { grid-template-columns:1fr; gap:1.25rem; }.passport-visual { height:220px; }.passport-destination-body { padding:1.25rem; }.passport-destination-body h4 { font-size:2rem; }.passport-reasons { font-size:.78rem; }.passport-idea-sampler p { font-size:.8rem; }.passport-explore { font-size:.82rem; }.passport-mark-ridden { font-size:.73rem; }.passport-card-tag { font-size:.65rem; }.passport-result-note { font-size:.79rem; }.passport-card-bottom > div > span { font-size:.54rem; }.passport-chip button { min-width:40px; min-height:40px; }.passport-chip { font-size:.72rem; }.base-matcher-details { padding-left:5vw; padding-right:5vw; } }
@media(prefers-reduced-motion:reduce) { .passport-destination { transition:none; }.passport-spinner { animation:none; } }
