:root { --forest:#183d35; --ink:#21352e; --cream:#f4efe4; --paper:#fcf9f2; --muted:#647268; --rust:#a44f2e; --orange:#df8b50; --line:#d5d9cd; --display:"Iowan Old Style","Palatino Linotype",Georgia,serif; --body:"Avenir Next","Trebuchet MS",sans-serif; --gutter:clamp(22px,5vw,80px); }
:root { --on-forest:#fcf9f2; --crew-surface:#e3e7dc; --shadow:rgb(24 61 53 / .14); }
:root[data-theme="sunrise"] { --forest:#773c28; --ink:#49291e; --cream:#f8eddd; --paper:#fff9ef; --muted:#785541; --rust:#994320; --orange:#efb16b; --line:#d9c9b7; --crew-surface:#efdfcb; }
:root[data-theme="night"] { color-scheme:dark; --forest:#263f3b; --ink:#f1ede3; --cream:#151f20; --paper:#202c2d; --muted:#bbc8c3; --rust:#efb16b; --orange:#efb16b; --line:#475652; --crew-surface:#1a2929; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:80px; }
body { margin:0; background:var(--cream); color:var(--ink); font:16px/1.65 var(--body); }
a { color:inherit; text-underline-offset:4px; }
img { max-width:100%; display:block; }
button,input { font:inherit; }
button { cursor:pointer; }
:focus-visible { outline:3px solid var(--rust); outline-offset:5px; }
h1,h2,h3,h4,p { margin:0; }
h1,h2,h3,h4 { font-family:var(--display); font-weight:400; line-height:1.06; }
h1 { font-size:clamp(4.2rem,9vw,8.8rem); letter-spacing:-.055em; }
h2 { font-size:clamp(3rem,5.4vw,5rem); letter-spacing:-.04em; }
h3 { font-size:2rem; }
em { font-weight:400; }
.wrap { max-width:1440px; margin-inline:auto; padding-inline:var(--gutter); }
.section { padding-block:clamp(65px,8vw,115px); }
.eyebrow { font-size:.67rem; font-weight:600; letter-spacing:.18em; text-transform:uppercase; margin-bottom:18px; }
.navigation { position:absolute; top:0; z-index:5; width:100%; display:flex; align-items:center; justify-content:space-between; gap:24px; padding:26px var(--gutter); color:var(--paper); border-bottom:1px solid rgb(252 249 242 / .3); }
.appearance{position:absolute;top:118px;right:0;z-index:6;display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:18px;color:var(--on-forest);font-size:.7rem}
.theme-switch{display:inline-flex;gap:3px;padding:4px;border:1px solid rgb(252 249 242 / .25);border-radius:999px;background:rgb(14 33 27 / .65)}
.theme-switch button{display:flex;align-items:center;justify-content:center;gap:7px;min-height:36px;padding:7px 11px;border:1px solid transparent;border-radius:999px;background:transparent;color:var(--on-forest);font-size:.68rem;line-height:1;font-weight:600;white-space:nowrap}
.theme-switch button:hover{background:rgb(252 249 242 / .12)}
.theme-switch button[aria-pressed="true"]{background:var(--on-forest);color:#183d35;border-color:var(--on-forest)}
.theme-switch button:focus-visible{outline:2px solid var(--on-forest);outline-offset:3px}
.theme-swatch{width:10px;height:10px;flex-shrink:0;border-radius:50%;border:1px solid rgb(252 249 242 / .6);background:#315f4c}
[data-theme-choice="sunrise"] .theme-swatch{background:#df8b50}[data-theme-choice="night"] .theme-swatch{background:#21352e}
.appearance-links{display:flex;gap:14px}.appearance-links a{text-decoration:none}.appearance-links a:hover{text-decoration:underline}
.navigation,.hero,.hero-foot,.day-photo figcaption{color:var(--on-forest)}
.daily-weather-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.daily-weather-grid article{padding:22px;border:1px solid var(--line);background:var(--paper)}.daily-weather-grid h3{font-size:1.6rem;margin-bottom:20px}.daily-weather-grid small{color:var(--muted);font-size:.65rem}.weather-result{font-size:.85rem;min-height:85px}.weather-result strong{font:1.6rem var(--display)}.weather-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:24px;margin-bottom:24px}.weather-toolbar span{font-size:.75rem;color:var(--muted)}
@media(max-width:700px){.daily-weather-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.appearance{justify-content:flex-start;left:0;top:126px;gap:10px}.theme-switch button{min-height:44px;padding:8px 12px}.appearance-links{display:none}.hero{padding-top:210px}}
.brand { text-decoration:none; font-size:1.15rem; font-weight:bold; letter-spacing:.12em; }
.brand span { color:var(--orange); }
.brand .brand-line { display:block; }
.brand small { display:block; margin-top:3px; font-size:.5rem; letter-spacing:.18em; }
.navigation nav { display:flex; flex-wrap:wrap; gap:24px; }
.navigation nav a { font-size:.73rem; text-decoration:none; padding:8px 0; }
.skip { position:fixed; top:-80px; left:20px; z-index:50; padding:12px; background:var(--paper); }
.skip:focus { top:12px; }
.hero { position:relative; min-height:800px; min-height:max(720px,95svh); background:var(--forest); color:var(--paper); padding:170px var(--gutter) 130px; isolation:isolate; }
.hero > img { position:absolute; z-index:-2; inset:0; width:100%; height:100%; object-fit:cover; object-position:center; }
.hero::after { content:""; position:absolute; z-index:-1; inset:0; background:linear-gradient(90deg,rgb(14 33 27 / .84),rgb(14 33 27 / .25)),linear-gradient(0deg,rgb(14 33 27 / .45),transparent); }
.hero-copy { max-width:760px; }
.hero h1 em { color:var(--orange); }
.hero-copy > p:not(.eyebrow) { max-width:480px; margin:28px 0 32px; font-size:1rem; }
.button { display:inline-flex; align-items:center; gap:50px; padding:15px 23px; background:var(--cream); color:var(--forest); text-decoration:none; font-size:.8rem; font-weight:bold; }
.hero-foot { position:absolute; bottom:25px; left:var(--gutter); right:var(--gutter); display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px; font-size:.61rem; }
.trip-strip { display:grid; grid-template-columns:repeat(4,1fr); gap:20px; padding-block:28px; border-bottom:1px solid var(--line); }
.trip-strip b { display:block; font:1.65rem var(--display); }
.trip-strip small { color:var(--muted); font-size:.65rem; }
.section-heading { display:grid; grid-template-columns:1.3fr 1fr; align-items:end; gap:60px; margin-bottom:42px; }
.section-heading > p { max-width:410px; color:var(--muted); font-size:.9rem; }
.arrival-note { padding:16px 20px; background:var(--paper); border-left:3px solid var(--rust); font-size:.8rem; margin-bottom:24px; }
.week-strip { display:grid; grid-template-columns:repeat(8,minmax(0,1fr)); border:1px solid var(--line); margin-bottom:40px; }
.week-day { padding:15px 12px; border-right:1px solid var(--line); }
.week-day:last-child { border:0; }
.week-day.is-loop { background:var(--forest); color:var(--on-forest); }
.week-day b { display:block; font:1.6rem var(--display); }
.week-day span { display:block; font-size:.65rem; line-height:1.5; margin-top:6px; }
.week-day small { display:block; font-size:.58rem; margin-top:8px; opacity:.85; }
.day-tabs,.filters { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:24px; }
.day-tabs button,.filters button { padding:11px 20px; background:transparent; border:1px solid var(--line); color:var(--ink); font-size:.75rem; }
.day-tabs button[aria-pressed="true"],.filters button[aria-pressed="true"] { background:var(--forest); color:var(--on-forest); border-color:var(--forest); }
.day-layout { display:grid; grid-template-columns:1.1fr 1fr; border:1px solid var(--line); background:var(--paper); }
.day-photo { margin:0; position:relative; min-height:420px; }
.day-photo img { width:100%; height:100%; object-fit:cover; }
.day-photo figcaption { position:absolute; bottom:0; left:0; right:0; padding:12px 16px; color:var(--paper); font-size:.62rem; background:rgb(24 61 53 / .85); }
.day-copy { padding:clamp(24px,4vw,55px); }
.day-copy h3 { font-size:2.65rem; margin-bottom:16px; }
.day-route { color:var(--rust); font-size:.83rem; margin-bottom:12px; }
.day-facts { display:flex; flex-wrap:wrap; gap:16px; color:var(--muted); font-size:.75rem; padding-block:16px; border-block:1px solid var(--line); margin-bottom:22px; }
.time-block { display:grid; grid-template-columns:130px 1fr; gap:14px; padding:12px 0; border-bottom:1px solid var(--line); font-size:.8rem; }
.time-block small { color:var(--rust); }
.day-stops { margin-top:22px; font-size:.75rem; }
.day-stops a { display:inline-block; margin:6px 12px 0 0; }
.map-block { display:grid; grid-template-columns:.6fr 1fr; align-items:center; gap:40px; margin-top:50px; }
.map-block p { color:var(--muted); font-size:.8rem; margin-top:16px; }
#route-map { height:460px; background:#e6e9e4; z-index:0; border:1px solid var(--line); border-radius:18px; overflow:hidden; }
.route-pin span { display:grid; place-items:center; width:28px; height:28px; border-radius:50%; background:var(--forest); color:var(--paper); border:2px solid var(--paper); font-size:11px; }
.route-pin span{box-shadow:0 3px 12px #183d3533;font-weight:700}.roadbook-map-controls{display:flex;flex-direction:column;background:#faf7ef;border-radius:10px;overflow:hidden;box-shadow:0 4px 20px #183d3522}.roadbook-map-controls button{width:42px;height:42px;border:0;border-bottom:1px solid #d9ddd4;background:transparent;color:#183d35;font-size:22px;cursor:pointer}.roadbook-map-controls button:hover{background:#e3e7dc}.roadbook-map-label{padding:12px 16px;background:#faf7eff0;border-radius:10px;box-shadow:0 4px 20px #183d3515}.roadbook-map-label b{display:block;font-size:10px;letter-spacing:1.5px}.roadbook-map-label span{font-size:11px;color:#64716a}.leaflet-popup-content-wrapper{border-radius:12px;background:#faf7ef;color:#183d35;box-shadow:0 5px 25px #183d3522}.leaflet-popup-content{font-family:inherit;line-height:1.7}.leaflet-container .leaflet-control-attribution{background:#faf7efe6;font-size:9px}
.checkpoint-section { background:var(--paper); }
.checkpoint-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:22px; }
.checkpoint-card { min-width:0; border:1px solid var(--line); background:var(--cream); display:flex; flex-direction:column; }
.checkpoint-card figure { margin:0; }
.checkpoint-card img { width:100%; height:220px; object-fit:cover; }
.checkpoint-card figcaption { padding:8px 18px; font-size:.6rem; color:var(--muted); }
.checkpoint-copy { padding:22px; display:grid; gap:14px; flex:1; }
.checkpoint-copy .eyebrow { color:var(--rust); margin:0; }
.checkpoint-copy h3 { font-size:1.85rem; }
.checkpoint-copy p { font-size:.82rem; color:var(--muted); }
.checkpoint-meta { display:flex; flex-wrap:wrap; gap:12px; font-size:.7rem; padding-block:12px; border-block:1px solid var(--line); }
.checkpoint-links { display:flex; flex-wrap:wrap; align-items:center; gap:14px; margin-top:auto; font-size:.73rem; }
.text-button { padding:10px 0; border:0; color:inherit; background:none; text-decoration:underline; text-underline-offset:4px; }
.package-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
.package-grid article { padding:24px; background:var(--paper); border:1px solid var(--line); }
.package-grid h3 { font-size:1.7rem; margin-bottom:16px; }
.package-grid ul { margin:0; padding-left:18px; color:var(--muted); font-size:.8rem; }
.package-grid li+li { margin-top:8px; }
.budget-summary { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:24px; margin:30px 0; padding:24px 0; border-block:1px solid var(--line); }
.budget-summary strong { font:2.5rem var(--display); }
.budget-summary small { display:block; color:var(--muted); }
.budget-summary p { max-width:410px; color:var(--muted); font-size:.8rem; }
.table-scroll { overflow-x:auto; border:1px solid var(--line); }
table { border-collapse:collapse; width:100%; min-width:700px; font-size:.78rem; text-align:left; }
th,td { padding:18px; border-bottom:1px solid var(--line); vertical-align:top; }
th { background:var(--forest); color:var(--on-forest); font-size:.62rem; letter-spacing:.1em; text-transform:uppercase; }
td small { display:block; color:var(--muted); }
.fineprint { color:var(--muted); font-size:.75rem; margin-top:14px; }
.prepare-section { background:var(--forest); color:var(--on-forest); }
.prepare-section .section-heading > p,.prepare-section .fineprint { color:var(--on-forest); opacity:.8; }
.weather-note { padding:22px 25px; border:1px solid rgb(244 239 228 / .3); margin-bottom:30px; }
.weather-note h3 { margin-bottom:10px; }
.weather-note p { font-size:.85rem; opacity:.85; }
.advice-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:50px; }
.advice-grid h3 { margin-bottom:16px; }
.advice-grid ul { padding-left:18px; font-size:.84rem; }
.advice-grid li+li { margin-top:10px; }
.advice-grid a { font-size:.75rem; }
.checklist-heading { display:flex; flex-wrap:wrap; justify-content:space-between; gap:15px; align-items:center; margin-top:42px; }
.checklist-heading span { font-size:.8rem; color:var(--orange); }
.checklist { display:grid; grid-template-columns:repeat(2,1fr); gap:1px; background:rgb(244 239 228 / .2); border:1px solid rgb(244 239 228 / .2); margin-top:22px; }
.check-row { display:flex; align-items:flex-start; gap:14px; padding:19px; background:var(--forest); font-size:.8rem; cursor:pointer; }
.check-row input { margin-top:5px; accent-color:var(--orange); }
.check-row small { display:block; font-size:.6rem; color:var(--orange); margin-bottom:4px; text-transform:uppercase; letter-spacing:.1em; }
.check-row:has(input:checked) span { opacity:.6; }
.research > p:not(.eyebrow) { max-width:600px; color:var(--muted); margin:24px 0; }
.research details { padding:17px 0; border-bottom:1px solid var(--line); }
.research summary { cursor:pointer; font-size:.84rem; }
.research details p { color:var(--muted); font-size:.8rem; margin:12px 0; }
.research details a { font-size:.75rem; }
footer { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:20px; padding-block:25px; border-top:1px solid var(--line); font-size:.7rem; }
@media(max-width:900px) { .checkpoint-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .day-layout { grid-template-columns:1fr 1fr; } .day-copy { padding:25px; } .week-strip { grid-template-columns:repeat(4,1fr); } .week-day { border-bottom:1px solid var(--line); } }
@media(max-width:620px) { .navigation { align-items:flex-start; gap:15px; padding-block:20px; } .navigation nav { gap:8px 15px; justify-content:flex-end; max-width:210px; } .navigation nav a { font-size:.65rem; } .brand small { max-width:100px; } .hero { min-height:760px; padding-top:160px; } .hero-copy > p:not(.eyebrow) { font-size:.9rem; } .hero-foot { font-size:.55rem; } .trip-strip { grid-template-columns:repeat(2,1fr); } .section-heading,.day-layout,.map-block,.package-grid,.advice-grid { grid-template-columns:1fr; gap:25px; } .section-heading { margin-bottom:28px; } .day-photo { min-height:260px; height:300px; } .day-tabs button { flex:1; min-width:90px; padding:12px; } .checkpoint-grid,.checklist { grid-template-columns:1fr; } .time-block { grid-template-columns:110px 1fr; } #route-map { height:330px; } .week-day { padding:12px 9px; } .advice-grid { gap:20px; } .checkpoint-card img { height:240px; } }
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } }
@media print { .navigation,.hero,.filters,.day-tabs,#route-map,footer button { display:none; } .section { padding-block:25px; } .checkpoint-grid { grid-template-columns:repeat(2,1fr); } .prepare-section { background:var(--paper); color:var(--ink); } .check-row { background:var(--paper); } .checklist { grid-template-columns:1fr; } .checkpoint-card,.check-row { break-inside:avoid; } }
/* Group planner, route gallery and consent-based member cards. */
.ride-grid,.crew-grid,.quote-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin:32px 0}
.ride-grid article,.crew-grid article{padding:28px;border:1px solid var(--line);background:var(--paper)}
.ride-grid strong{font-size:22px;color:var(--rust)}.ride-grid label,.group-controls label{display:block;margin-top:18px}
.ride-grid input,.group-controls input[type=number]{width:76px;padding:10px;margin-left:8px;border:1px solid var(--line);background:var(--paper);color:var(--ink);font:inherit}
.group-controls{display:flex;flex-wrap:wrap;gap:20px;margin-bottom:30px}.group-controls input[type=checkbox]{accent-color:var(--forest)}
.gallery-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:36px}
.gallery-grid figure{margin:0}.gallery-grid img{width:100%;height:260px;object-fit:cover}.gallery-grid figcaption{padding:12px 0;font-size:12px}
.crew-section{background:var(--crew-surface)}.quote-grid blockquote{margin:0;font-family:var(--display);font-size:24px;padding:28px;border-left:2px solid var(--rust)}
.crew-grid .crew-card{max-width:560px;min-width:0;padding:26px;border-radius:20px;box-shadow:0 8px 24px var(--shadow)}
.crew-person{display:grid;grid-template-columns:96px minmax(0,1fr);align-items:center;gap:20px}
.crew-avatar,.crew-avatar-placeholder{width:96px;height:96px;border-radius:50%;border:3px solid var(--paper);outline:1px solid var(--line);object-fit:cover;object-position:center;background:var(--cream)}
.crew-avatar-placeholder{display:grid;place-items:center;color:var(--rust);font:2rem var(--display)}
.crew-identity{min-width:0;overflow-wrap:anywhere}.crew-identity .eyebrow{margin-bottom:8px;color:var(--rust)}.crew-identity h3{font-size:1.8rem;line-height:1.15}.crew-role{margin-top:8px;color:var(--muted);font-size:.78rem}
.crew-ride{display:inline-block;margin-top:20px;padding:5px 11px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:.65rem}
.crew-quote-frame{position:relative;margin-top:22px;padding:21px 23px;border:1px solid var(--line);border-radius:16px;background:var(--cream)}
.crew-quote-frame::before{content:"";position:absolute;left:32px;top:-7px;width:12px;height:12px;background:var(--cream);border-left:1px solid var(--line);border-top:1px solid var(--line);transform:rotate(45deg)}
.crew-quote-frame blockquote{margin:0;color:var(--ink);font:1.3rem/1.5 var(--display);overflow-wrap:anywhere}.crew-quote-label{margin-top:12px;color:var(--muted);font-size:.61rem;letter-spacing:.07em;text-transform:uppercase}
@media(max-width:620px){.crew-grid .crew-card{padding:20px}.crew-person{grid-template-columns:76px minmax(0,1fr);gap:16px}.crew-avatar,.crew-avatar-placeholder{width:76px;height:76px}.crew-identity h3{font-size:1.5rem}.crew-quote-frame{padding:18px}.crew-quote-frame blockquote{font-size:1.15rem}}
@media(max-width:700px){.ride-grid,.crew-grid,.quote-grid{grid-template-columns:1fr}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.gallery-grid img{height:180px}.group-controls{display:block}}
.navigation,.hero,.day-photo figcaption{color:var(--on-forest)}
.navigation .brand{flex-shrink:0}
@media(max-width:620px){.navigation nav{max-width:190px}.navigation .brand{font-size:1rem}.navigation .brand small{font-size:.43rem;max-width:125px}}
.button{color:var(--ink)}.route-pin span{color:var(--on-forest);border-color:var(--on-forest)}
@media print{.appearance,.weather-toolbar{display:none}}
@media(max-width:700px){.hero{padding-top:220px}}
