    :root{--ink:#24352b;--cream:#f7f1e5;--paper:#fffaf0;--ochre:#dca83a;--terra:#b95239;--line:#d8cab2;--muted:#675f55;--forest:#294735}
    *{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:"DM Sans",sans-serif;color:var(--ink);background:var(--cream)}
    body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.22;background-image:radial-gradient(#88795f33 .7px,transparent .7px);background-size:7px 7px}
    h1,h2,h3{font-family:"Fraunces",serif;letter-spacing:-.035em}.page-wrap{width:100%;max-width:1180px;margin:auto;padding:0 24px}.view{display:none}.view.active{display:block;animation:reveal .32s ease both}@keyframes reveal{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
    .paper,.card{background:rgba(255,250,240,.92);border:1px solid var(--line);box-shadow:0 10px 25px rgba(48,42,30,.06)}.card{border-radius:18px;padding:1.25rem}.paper{border-radius:24px}.display{font-family:"Fraunces",serif}.eyebrow{color:#9b5a2e;text-transform:uppercase;letter-spacing:.14em;font-size:.73rem;font-weight:700}.muted{color:var(--muted)}.nav-link{padding:.5rem .7rem;border-radius:999px;font-size:.82rem;font-weight:700;color:#4c5b4d}.nav-link:hover,.nav-link.active{background:#e6e1c8;color:#1f3528}
    .btn{display:inline-flex;align-items:center;gap:.55rem;border-radius:999px;padding:.8rem 1.1rem;font-weight:700;transition:.2s transform,.2s box-shadow}.btn:hover{transform:translateY(-2px);box-shadow:0 6px 16px #22382524}.btn-primary{background:var(--forest);color:white}.btn-secondary{background:#e8d399;color:var(--ink)}
    .focus-ring:focus-visible,button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--ochre);outline-offset:3px}.media{min-height:170px;background:linear-gradient(135deg,#d9c397,#ede2c8);border:1px dashed #a67845;border-radius:16px;display:flex;align-items:center;justify-content:center;text-align:center;padding:18px;color:#65472a;position:relative;overflow:hidden}.media:before{content:"✦";position:absolute;font-size:7rem;opacity:.12}.media>*{position:relative}.stamp{display:inline-flex;align-items:center;gap:.35rem;border:1px solid #b56e4d;border-radius:999px;padding:.3rem .65rem;color:#8e412c;background:#f7e1d6;font-size:.75rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase}
    .route-line{height:3px;background:linear-gradient(to right,#b95239,#dca83a,#294735);position:absolute;left:8%;right:8%;top:29px}.journey-step{position:relative;z-index:1}.journey-dot{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;background:#fffaf0;border:2px solid #b95239;color:#8e412c;margin:auto}.guide{border-left:4px solid #dca83a;background:#fff0cb;border-radius:0 12px 12px 0;padding:.8rem 1rem;color:#624a26;font-size:.84rem}.guide strong{display:block;text-transform:uppercase;letter-spacing:.09em;font-size:.68rem;margin-bottom:.2rem}.pt-line{display:none;color:#9b5a2e;font-size:.78rem;margin-top:.35rem;font-style:italic}.pt-on .pt-line{display:block}
    .toc{position:sticky;top:86px;z-index:20;background:#fffaf0eF;border:1px solid var(--line);border-radius:16px;padding:.75rem;overflow:auto;white-space:nowrap}.toc a{font-size:.78rem;font-weight:700;color:#4b574b;padding:.4rem .55rem;display:inline-block;border-radius:999px}.toc a:hover{background:#e6e1c8}.day-card{scroll-margin-top:140px;border-left:3px solid #cf9f4f}.day-toggle{width:100%;background:none;border:0;text-align:left;cursor:pointer;border-radius:12px;transition:background .2s}.day-toggle:hover{background:#f3ead4}.day-card .day-detail{display:none}.day-card.open .day-detail{display:grid}.day-card.open .chev{transform:rotate(180deg)}.chev{transition:.2s;color:#a08a5e}.logo{width:48px;height:48px;border-radius:50%;object-fit:cover;border:1px solid #c7b18a;background:#e7d4ad}
    .active-toggle{background:#294735!important;color:#fff!important}.editor-label{font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;font-weight:700;color:#8e412c}.activity-list li{margin:.35rem 0}.activity-list li:before{content:"→";color:#b95239;margin-right:.5rem}.hidden{display:none}@media(max-width:820px){.desktop-nav{display:none!important}.mobile-toggle{display:inline-flex}.mobile-nav.open{display:flex}.hero-grid{grid-template-columns:1fr!important}.toc{top:74px}}@media(min-width:821px){.mobile-toggle,.mobile-nav{display:none!important}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}html{scroll-behavior:auto}}
    /* Photo boxes — every .media box can hold a photo. Markup:
       <div class="media"><img class="slot-photo" src="…" alt="…"><span class="slot-hint">…</span></div>
       Fill in the img's src and the label steps aside; leave src empty and the box keeps
       showing its placeholder instead of a broken-image icon. */
    .media img.slot-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:inherit;z-index:1}
    .media img.slot-photo:not([src]),.media img.slot-photo[src=""]{display:none}
    .media .slot-hint{position:relative;z-index:2;font-size:.82rem;color:#65472a}
    .media:has(img.slot-photo[src]:not([src=""])) .slot-hint,.media:has(img.slot-photo[src]:not([src=""])):before{display:none}
    /* Day cards: the photo box is stretched to the height of the day's text, and the
       photo always fills it, centred, whatever shape the original picture has. */
    .day-card .day-detail .media img.slot-photo{object-position:center center}
    /* Label chip that sits over a gallery photo. */
    .media-label{position:absolute;z-index:2;left:50%;top:50%;transform:translate(-50%,-50%);background:#fff;opacity:.6;padding:.35rem .7rem;border-radius:.5rem}
    .media-label span{opacity:1}
    a.btn,a.nav-link{text-decoration:none}
    /* Phones: tighter gutters, smaller brand mark, and a journey row that fits five steps. */
    @media(max-width:640px){
      .page-wrap{padding:0 16px}
      .logo{width:40px;height:40px}
      .toc{top:66px}
      .journey-dot{width:38px;height:38px}
      .route-line{top:19px}
      .journey-step p{font-size:.68rem;line-height:1.25}
      .card{padding:1rem}
      .media-label{font-size:.72rem;padding:.28rem .5rem}
    }
