  :root{
    --paper:#f1f3f4; --paper2:#e5e9ea; --ink:#1d2b2e; --ink-soft:#5a6a6d;
    --forest:#1f3a3a; --forest-d:#142929; --moss:#5f7a72;
    --amber:#2f7d76; --amber-d:#266861; --teal:#2f7d76; --plum:#6e6a7a;
    --line:#d6dadb; --card:#fafbfb; --shadow:0 1px 0 #ffffff inset,0 8px 24px -14px rgba(20,40,40,.34);
    --d1:#2f7d76; --d2:#7e8a64; --d3:#a87a64; --d4:#6f7b94; --d5:#8c6a80;
    --radius-card:14px; --transition:.18s ease;
  }
  *{box-sizing:border-box}
  html,body{margin:0;padding:0;scroll-behavior:smooth}
  body{
    font-family:"Hanken Grotesk",system-ui,sans-serif;color:var(--ink);
    background:var(--paper);
    background-image:
      radial-gradient(circle at 12% -5%, rgba(47,125,118,.08), transparent 45%),
      radial-gradient(circle at 95% 8%, rgba(47,125,118,.05), transparent 40%),
      url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240' viewBox='0 0 240 240'%3E%3Cg fill='none' stroke='%23aab4b5' stroke-width='1' opacity='0.22'%3E%3Cpath d='M-20 60 Q60 20 120 60 T260 60'/%3E%3Cpath d='M-20 90 Q60 50 120 90 T260 90'/%3E%3Cpath d='M-20 120 Q60 80 120 120 T260 120'/%3E%3Cpath d='M-20 150 Q60 110 120 150 T260 150'/%3E%3Cpath d='M-20 180 Q60 140 120 180 T260 180'/%3E%3C/g%3E%3C/svg%3E");
    line-height:1.45;
  }
  a{color:inherit}
  .wrap{max-width:1240px;margin:0 auto;padding:0 18px}

  /* ── HERO ── */
  header.hero{position:relative;overflow:hidden;background:linear-gradient(160deg,var(--forest),var(--forest-d));color:#eef2f1;border-bottom:3px solid var(--amber)}
  header.hero::after{content:"";position:absolute;inset:0;opacity:.18;background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cg fill='none' stroke='%23ffffff' stroke-width='1.1'%3E%3Cpath d='M-20 120 Q80 40 160 110 T340 90'/%3E%3Cpath d='M-20 150 Q80 70 160 140 T340 120'/%3E%3Cpath d='M-20 180 Q80 100 160 170 T340 150'/%3E%3Cpath d='M-20 210 Q80 130 160 200 T340 180'/%3E%3C/g%3E%3C/svg%3E");pointer-events:none}
  .hero-inner{position:relative;z-index:1;padding-top:42px;padding-bottom:34px}
  .kicker{font-size:.74rem;letter-spacing:.32em;text-transform:uppercase;color:var(--amber);font-weight:600}
  h1{font-family:"Fraunces",serif;font-weight:600;font-size:clamp(2.4rem,6vw,4.2rem);line-height:.98;margin:.18em 0 .1em;letter-spacing:-.01em}
  h1 em{font-style:italic;color:#bcdbd4}
  .sub{font-size:1.02rem;max-width:46ch;color:#d2e0d9}
  .hero-stats{display:flex;flex-wrap:wrap;gap:26px;margin-top:22px}
  .stat .n{font-family:"Fraunces",serif;font-size:1.7rem;font-weight:600;color:#fff;line-height:1}
  .stat .l{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:#b9c3a8}

  /* progress pill in hero */
  .progress-pill{display:inline-flex;align-items:center;gap:10px;background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.2);border-radius:999px;padding:6px 14px 6px 8px;margin-top:18px;font-size:.8rem;color:#d2e0d9}
  .progress-pill .pbar{width:90px;height:5px;background:rgba(255,255,255,.2);border-radius:3px;overflow:hidden}
  .progress-pill .pfill{height:100%;background:var(--amber);border-radius:3px;transition:width .4s ease}
  .progress-pill strong{color:#fff;font-variant-numeric:tabular-nums}

  /* flight banner */
  .flights{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
  .flt{display:flex;align-items:center;gap:10px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.15);border-radius:12px;padding:10px 14px;flex:1 1 240px}
  .flt .tag{font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;font-weight:800;padding:3px 7px;border-radius:5px;white-space:nowrap}
  .flt .tag.dep{background:var(--amber);color:#22281f}
  .flt .tag.ret{background:#4a7c3f;color:#fff}
  .flt .seg{display:flex;flex-direction:column;font-size:.85rem;color:#eef2f1}
  .flt .seg strong{font-family:"Fraunces",serif;font-size:1.05rem;color:#fff;line-height:1.1}
  .flt .arrow{color:rgba(255,255,255,.4);font-size:1.1rem;flex:0 0 auto}
  .flt .meta{font-size:.72rem;color:#b9c3a8;margin-left:auto;text-align:right;line-height:1.5}

  /* ── CONTROLS BAR ── */
  .controls{position:sticky;top:0;z-index:500;background:rgba(244,236,220,.95);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--line);padding:10px 0}
  .controls-inner{display:flex;flex-direction:column;gap:8px}
  .daytabs{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .daytabs::-webkit-scrollbar{display:none}
  .daytabs button{flex:0 0 auto;font-family:inherit;font-size:.82rem;font-weight:600;border:1.5px solid var(--line);background:var(--card);color:var(--ink-soft);padding:7px 13px;border-radius:999px;cursor:pointer;transition:background var(--transition),color var(--transition),border-color var(--transition);white-space:nowrap}
  .daytabs button .dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;vertical-align:middle}
  .daytabs button .date-hint{font-size:.68rem;font-weight:500;opacity:.7;margin-left:4px}
  .daytabs button.active{background:var(--forest);color:#eef2f1;border-color:var(--forest)}
  .daytabs button:hover:not(.active){background:var(--paper2);border-color:#a3c0b6}
  .controls-row2{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .chips{display:flex;gap:6px}
  .chips button{font-family:inherit;font-size:.76rem;font-weight:600;border:1.5px solid var(--line);background:transparent;color:var(--ink-soft);padding:4px 11px;border-radius:999px;cursor:pointer;display:flex;align-items:center;gap:5px;transition:opacity var(--transition)}
  .chips button .sw{width:9px;height:9px;border-radius:3px}
  .chips button.off{opacity:.35;text-decoration:line-through}
  /* search */
  .searchbox{position:relative;margin-left:auto}
  .searchbox input{font-family:inherit;font-size:.82rem;color:var(--ink);background:var(--card);border:1.5px solid var(--line);border-radius:999px;padding:5px 14px 5px 32px;width:180px;transition:width .2s ease,border-color .15s}
  .searchbox input:focus{outline:none;border-color:var(--amber);width:220px}
  .searchbox .sico{position:absolute;left:11px;top:50%;transform:translateY(-50%);font-size:.8rem;color:#7c938a;pointer-events:none}
  .searchbox .clearx{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:.75rem;color:#7c938a;cursor:pointer;display:none}
  .searchbox input:not(:placeholder-shown) ~ .clearx{display:block}
  @media(max-width:560px){.searchbox{margin-left:0;width:100%}.searchbox input{width:100%}.searchbox input:focus{width:100%}}
  /* view toggle (Cards / Timeline) */
  .viewtoggle{display:inline-flex;background:var(--card);border:1.5px solid var(--line);border-radius:999px;padding:2px;gap:2px}
  .viewtoggle button{font-family:inherit;font-size:.76rem;font-weight:700;border:none;background:transparent;color:var(--ink-soft);padding:4px 11px;border-radius:999px;cursor:pointer;display:flex;align-items:center;gap:5px;transition:background var(--transition),color var(--transition)}
  .viewtoggle button.active{background:var(--forest);color:#eef2f1}

  /* ── TIMELINE / AGENDA VIEW ── */
  .tl{position:relative;margin:2px 0 4px;padding-left:4px}
  .tl-row{position:relative;display:grid;grid-template-columns:54px 18px 1fr;gap:8px;align-items:start;padding:8px 0;cursor:pointer;border-radius:8px;transition:background var(--transition)}
  .tl-row:hover{background:rgba(95,122,114,.06)}
  .tl-row.lit{background:rgba(47,125,118,.12);box-shadow:inset 3px 0 0 var(--amber)}
  .tl-row.done{opacity:.6}
  .tl-time{font-family:"Fraunces",serif;font-weight:600;font-size:.92rem;color:var(--ink);text-align:right;padding-top:1px;font-variant-numeric:tabular-nums;line-height:1.2}
  .tl-dot{width:16px;height:16px;border-radius:50%;margin:3px auto 0;border:2px solid var(--card);box-shadow:0 0 0 1.5px var(--line);color:#fff;font-size:.62rem;display:flex;align-items:center;justify-content:center;font-weight:800}
  .tl-main{min-width:0}
  .tl-line1{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
  .tl-ic{font-size:1rem}
  .tl-name{font-family:"Fraunces",serif;font-weight:600;font-size:1.02rem;line-height:1.15}
  .tl-dur{font-size:.7rem;font-weight:700;color:var(--moss);background:rgba(95,122,114,.12);border:1px solid rgba(95,122,114,.24);padding:1px 7px;border-radius:999px}
  .tl-line2{display:flex;align-items:center;flex-wrap:wrap;gap:5px 10px;font-size:.78rem;color:var(--ink-soft);margin-top:3px}
  .tl-line2 a{color:var(--amber-d);font-weight:700;text-decoration:none}
  .tl-line2 a:hover{text-decoration:underline}
  .tl-slot{font-size:.62rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#fff;background:var(--amber);padding:2px 7px;border-radius:6px}
  .tl-book{font-size:.7rem;font-weight:700;padding:1px 8px;border-radius:6px}
  .tl-book.walk{background:rgba(95,122,114,.14);color:#3f5650}
  .tl-book.appt{background:rgba(47,125,118,.17);color:#266861}
  .tl-book.mix,.tl-book.phone{background:rgba(47,126,126,.15);color:#1c6060}
  .tl-hr{font-size:.72rem}
  .tl-hr.closed-warn{color:#9c2c1f;font-weight:700}
  .tl-row .checkbtn{padding:1px 8px}
  /* connector between two timed stops */
  .tl-gap{display:grid;grid-template-columns:54px 18px 1fr;gap:8px;align-items:center;min-height:22px}
  .tl-gap .tl-gapline{grid-column:2;justify-self:center;width:2px;align-self:stretch;background:repeating-linear-gradient(var(--line) 0 4px,transparent 4px 8px)}
  .tl-gap .tl-gaptxt{grid-column:3;font-size:.72rem;font-weight:600;color:var(--ink-soft)}
  .tl-gap.warn .tl-gaptxt{color:#9c2c1f}

  /* ── LAYOUT ── */
  .layout{display:grid;grid-template-columns:1fr;gap:0}
  .layout>*{min-width:0}   /* prevent wide map/cards from blowing the grid past the viewport */
  @media(min-width:920px){.layout{grid-template-columns:1.05fr .95fr;align-items:start}}

  /* ── MAP ── */
  .mapcol{order:-1}
  @media(min-width:920px){.mapcol{order:1;position:sticky;top:84px;height:calc(100vh - 96px);padding:16px 0}}
  /* Mobile map toggle */
  .map-toggle{display:flex;justify-content:center;padding:10px 0 2px}
  @media(min-width:920px){.map-toggle{display:none}}
  .map-toggle-btn{font-family:inherit;font-size:.8rem;font-weight:700;background:var(--forest);color:#eef2f1;border:none;border-radius:999px;padding:8px 20px;cursor:pointer;display:flex;align-items:center;gap:7px;box-shadow:0 3px 10px -4px rgba(0,0,0,.35)}
  .mapbox-wrap{overflow:hidden;transition:max-height .35s ease}
  .mapbox-wrap.map-hidden{max-height:0}
  .mapbox-wrap.map-visible{max-height:52vh}
  @media(min-width:920px){.mapbox-wrap{max-height:none!important;overflow:visible}}
  #map{isolation:isolate;width:100%;height:46vh;min-height:320px;border-radius:var(--radius-card);border:1px solid var(--line);box-shadow:var(--shadow)}
  @media(min-width:920px){#map{height:100%}}
  .leaflet-container{font-family:inherit;background:#dfe6d6}
  .pin{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50% 50% 50% 2px;transform:rotate(45deg);color:#fff;font-weight:700;font-size:.74rem;border:2px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,.35)}
  .pin span{transform:rotate(-45deg)}
  .leaflet-popup-content-wrapper{border-radius:12px}
  .pop b{font-family:"Fraunces",serif;font-size:1rem}
  .pop .meta{color:#666;font-size:.8rem;margin:2px 0 6px}
  .pop a{color:var(--amber-d);font-weight:700;text-decoration:none;font-size:.82rem}
  .mapbox{position:relative}
  @media(min-width:920px){.mapbox{height:100%}}
  .playbtn{position:absolute;top:12px;right:12px;z-index:1000;font-family:inherit;font-size:.82rem;font-weight:700;background:var(--forest);color:#eef2f1;border:2px solid #eef2f1;border-radius:999px;padding:8px 15px;cursor:pointer;box-shadow:0 4px 12px rgba(0,0,0,.35);transition:.15s}
  .playbtn:hover{background:var(--amber);border-color:#fff}
  .car{font-size:27px;line-height:1;text-align:center;filter:drop-shadow(0 2px 3px rgba(0,0,0,.45))}
  .maplegend{position:absolute;left:12px;bottom:14px;z-index:1000;background:rgba(251,246,234,.93);border:1px solid var(--line);border-radius:10px;padding:8px 11px;font-size:.72rem;line-height:1.55;box-shadow:0 4px 12px -6px rgba(0,0,0,.4)}
  .maplegend b{font-family:"Fraunces",serif;font-size:.78rem;display:block;margin-bottom:3px}
  .maplegend .lg{display:flex;align-items:center;gap:7px}
  .maplegend .ln{width:18px;border-top:3px dashed currentColor}
  .route-flow{stroke-dasharray:8 9;animation:flow .9s linear infinite}
  @keyframes flow{to{stroke-dashoffset:-17}}

  /* ── CARDS ── */
  .listcol{padding:18px 0 60px}
  .daysec{margin-bottom:28px}
  .dayhead{display:flex;align-items:baseline;gap:10px;margin:6px 0 4px;flex-wrap:wrap}
  .dayhead .tag{font-family:"Fraunces",serif;font-size:1.5rem;font-weight:600}
  .dayhead .where{font-size:.82rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);font-weight:600}
  .dayhead .datestr{font-size:.72rem;color:var(--ink-soft);font-weight:600;letter-spacing:.06em;margin-left:auto}
  .driveline{display:inline-flex;align-items:center;gap:8px;font-size:.8rem;font-weight:600;color:var(--amber-d);background:rgba(47,125,118,.12);border:1px dashed var(--amber);padding:5px 11px;border-radius:8px;margin:6px 0 12px}
  .card{display:flex;gap:0;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-card);margin-bottom:10px;overflow:hidden;box-shadow:var(--shadow);cursor:pointer;transition:transform var(--transition),box-shadow var(--transition),border-color var(--transition)}
  .card:hover{transform:translateY(-2px);box-shadow:0 1px 0 #ffffff inset,0 14px 30px -16px rgba(10,40,42,.55)}
  .card.lit{border-color:var(--amber);box-shadow:0 0 0 2px var(--amber),var(--shadow)}
  /* ✓ done state */
  .card.done{opacity:.62}
  .card.done .thumb{filter:grayscale(.5)}
  .thumb{flex:0 0 92px;position:relative;color:#fff;display:flex;align-items:center;justify-content:center;padding:8px}
  .thumb .num{position:absolute;top:7px;left:8px;font-family:"Fraunces",serif;font-weight:600;font-size:1.05rem;text-shadow:0 1px 3px rgba(0,0,0,.4);z-index:1}
  .thumb .ic{font-size:3.4rem;line-height:1;filter:drop-shadow(0 2px 4px rgba(0,0,0,.4))}
  /* done tick overlay */
  .done-tick{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;font-size:1.8rem;background:rgba(31,58,58,.25);border-radius:0}
  .body{flex:1;padding:11px 13px 12px;min-width:0}
  .nm{font-family:"Fraunces",serif;font-weight:600;font-size:1.08rem;line-height:1.15;margin:0 0 3px}
  .row1{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:.79rem;color:var(--ink-soft);margin-bottom:5px}
  .rate{font-weight:700;color:var(--ink)}
  .rate .st{color:var(--amber)}
  .pricelvl{color:var(--moss);font-weight:700}
  .openb{font-size:.7rem;font-weight:700;padding:2px 7px;border-radius:6px}
  .open{background:rgba(95,122,114,.16);color:#3f5650}
  .closed{background:rgba(180,60,40,.13);color:#9c3a22}
  .blurb{font-size:.88rem;color:#3a4649;margin:0 0 8px;line-height:1.45}
  .foot{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center;font-size:.79rem}
  .foot a{color:var(--amber-d);font-weight:700;text-decoration:none}
  .foot a:hover{text-decoration:underline}
  .foot .hrs{color:var(--ink-soft)}
  .cardtop{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:2px}
  .cardtop-right{display:flex;flex-direction:column;align-items:flex-end;gap:4px}
  .slot{font-size:.64rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:#fff;background:var(--amber);padding:3px 8px;border-radius:6px;white-space:nowrap}
  /* check button */
  .checkbtn{background:none;border:1.5px solid var(--line);color:var(--ink-soft);font-size:.65rem;font-weight:700;padding:2px 8px;border-radius:6px;cursor:pointer;font-family:inherit;transition:background .12s,border-color .12s;white-space:nowrap}
  .checkbtn:hover{background:rgba(95,122,114,.12);border-color:var(--moss)}
  .card.done .checkbtn{background:rgba(95,122,114,.18);border-color:var(--moss);color:#3f5650}
  .infostats{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:.77rem;color:var(--ink-soft);font-weight:600;margin:2px 0 7px}
  .infostats span{display:inline-flex;align-items:center;gap:4px}
  .infostats .ico{font-size:.83rem;opacity:.85}
  .acts{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 8px}
  .acts .lab{font-size:.63rem;letter-spacing:.1em;text-transform:uppercase;color:#7c938a;font-weight:800;margin-right:1px}
  .chip{font-size:.76rem;font-weight:600;padding:3px 10px;border-radius:999px;background:rgba(95,122,114,.11);color:#3f5650;border:1px solid rgba(95,122,114,.24)}
  .chip.food{background:rgba(47,125,118,.11);color:#266861;border-color:rgba(47,125,118,.26)}
  .chip.stay{background:rgba(91,107,122,.12);color:#3f4c58;border-color:rgba(91,107,122,.26)}
  .tipbtn{background:none;border:none;color:var(--amber-d);font-weight:700;font-size:.78rem;cursor:pointer;font-family:inherit;padding:0;display:inline-flex;align-items:center;gap:4px}
  .tipbtn:hover{text-decoration:underline}
  .tip{font-size:.84rem;color:#444e50;background:rgba(31,58,58,.06);border-left:3px solid var(--amber);padding:9px 12px;border-radius:0 8px 8px 0;margin-top:8px;animation:fadein .18s ease}
  @keyframes fadein{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
  .book{display:inline-flex;align-items:center;gap:5px;font-size:.73rem;font-weight:700;padding:3px 10px;border-radius:7px;margin:0 0 7px}
  .book.walk{background:rgba(95,122,114,.14);color:#3f5650}
  .book.appt{background:rgba(47,125,118,.17);color:#266861}
  .book.mix,.book.phone{background:rgba(47,126,126,.15);color:#1c6060}
  a.book.link{text-decoration:none;cursor:pointer;transition:.12s}
  a.book.link:hover{background:rgba(47,125,118,.28);text-decoration:underline}
  .planhr{font-size:.79rem;color:var(--ink-soft)}
  .planhr.closed-warn{color:#9c2c1f;font-weight:700}

  /* empty state */
  .empty-state{text-align:center;padding:32px 16px;color:var(--ink-soft);font-size:.9rem}
  .empty-state .emo{font-size:2rem;display:block;margin-bottom:8px}

  /* ── STAYS ── */
  .stayhead{font-family:"Fraunces",serif;font-size:1.1rem;font-weight:600;margin:16px 0 8px;display:flex;align-items:center;gap:8px}
  .stayhead::before{content:"";flex:0 0 22px;height:2px;background:var(--amber)}


  /* ── COST CALCULATOR ── */
  .cost{background:var(--forest);color:#eee6d3;border-radius:16px;padding:20px;margin:8px 0 30px;border:1px solid var(--forest-d)}
  .cost-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:2px;flex-wrap:wrap}
  .cost h3{font-family:"Fraunces",serif;font-weight:600;font-size:1.25rem;margin:0;color:#fff}
  .cost-note{font-size:.78rem;color:#b9c3a8;margin:0 0 14px}
  .cost-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px}
  @media(min-width:560px){.cost-grid{grid-template-columns:repeat(3,1fr)}}
  .fld label{display:block;font-size:.67rem;letter-spacing:.1em;text-transform:uppercase;color:#a9b59a;margin-bottom:3px;font-weight:600}
  .fld input{width:100%;font-family:inherit;font-size:.92rem;font-weight:600;color:#16282a;background:#eef2f0;border:1px solid #07201f;border-radius:8px;padding:6px 9px;transition:border-color .12s}
  .fld input:focus{outline:none;border-color:var(--amber)}
  .cost-total{display:flex;justify-content:space-between;align-items:flex-end;margin-top:16px;padding-top:14px;border-top:1px solid rgba(255,255,255,.16);gap:10px;flex-wrap:wrap}
  .cost-total .big{font-family:"Fraunces",serif;font-size:2.1rem;font-weight:600;color:#fff;line-height:1}
  .cost-total .lbl{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:#a9b59a}
  /* currency converter */
  .fx-box{margin-top:14px;border-top:1px solid rgba(255,255,255,.12);padding-top:12px}
  .fx-row{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
  .fx-lbl{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:#a9b59a;font-weight:600}
  .fx-code{width:62px;text-transform:uppercase;font-family:inherit;font-weight:700;font-size:.9rem;color:#16282a;background:#eef2f0;border:1px solid #07201f;border-radius:8px;padding:6px 9px}
  .fx-rate{width:96px;font-family:inherit;font-weight:600;font-size:.9rem;color:#16282a;background:#eef2f0;border:1px solid #07201f;border-radius:8px;padding:6px 9px}
  .fx-code:focus,.fx-rate:focus{outline:none;border-color:var(--amber)}
  .fx-at{color:#a9b59a;font-weight:700}
  .fx-live{font-family:inherit;font-size:.76rem;font-weight:700;background:rgba(255,255,255,.12);color:#eef2f1;border:1px solid rgba(255,255,255,.25);border-radius:8px;padding:6px 11px;cursor:pointer;white-space:nowrap}
  .fx-live:hover{background:rgba(255,255,255,.2)}
  .fx-live:disabled{opacity:.55;cursor:default}
  .fx-hint{font-size:.74rem;color:#a9b59a;margin-top:7px}
  .fx-conv{color:#cfe0db;font-weight:600;font-size:.66em}
  .cost-breakdown{margin-top:12px;border-top:1px solid rgba(255,255,255,.1);padding-top:10px;display:none}
  .cost-breakdown.show{display:block}
  .bk-row{display:flex;justify-content:space-between;font-size:.79rem;color:#c5d1b8;padding:2px 0}
  .bk-row span:last-child{font-weight:700;color:#e5dcc8}
  .breakdown-toggle{background:none;border:none;color:#a9b59a;font-family:inherit;font-size:.75rem;cursor:pointer;display:flex;align-items:center;gap:5px;padding:0;margin-top:8px}
  .breakdown-toggle:hover{color:#e5dcc8}

  /* ── SCROLL-TO-TOP ── */
  #scrolltop{position:fixed;bottom:22px;right:18px;z-index:900;background:var(--forest);color:#eef2f1;border:none;border-radius:50%;width:42px;height:42px;font-size:1rem;cursor:pointer;box-shadow:0 4px 14px -4px rgba(0,0,0,.4);display:none;align-items:center;justify-content:center;transition:opacity .2s,background .15s}
  #scrolltop.visible{display:flex}
  #scrolltop:hover{background:var(--amber)}

  /* ── FOOTER ── */
  footer.fin{border-top:1px solid var(--line);padding:22px 0 40px;font-size:.79rem;color:var(--ink-soft)}
  footer.fin b{color:var(--ink)}

  /* ── ANIMATED ROUTE ── */
  .animated-route-flow{stroke-dasharray:8 9;animation:flow .9s linear infinite}

  /* ── PRINT BUTTON ── */
  .hero-actions{display:flex;gap:10px;margin-top:14px;flex-wrap:wrap}
  .hero-btn{font-family:inherit;font-size:.79rem;font-weight:700;background:rgba(255,255,255,.12);color:#eef2f1;border:1.5px solid rgba(255,255,255,.25);border-radius:999px;padding:7px 16px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:.15s}
  .hero-btn:hover{background:rgba(255,255,255,.2);border-color:rgba(255,255,255,.45)}
  /* trip switcher */
  .tripbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:14px}
  .tripbar .lbl{font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:var(--amber);font-weight:700}
  .trip-select{font-family:inherit;font-size:.82rem;font-weight:600;color:#eef2f1;background:rgba(255,255,255,.12);border:1.5px solid rgba(255,255,255,.25);border-radius:999px;padding:6px 14px;cursor:pointer;max-width:60vw}
  .trip-select option{color:#22281f}

  /* ── EXPORT BUTTON IN CONTROLS ── */
  .export-pdf-ctrl-btn{font-family:inherit;font-size:.78rem;font-weight:700;background:var(--forest);color:#eef2f1;border:none;border-radius:8px;padding:6px 13px;cursor:pointer;display:inline-flex;align-items:center;gap:5px;white-space:nowrap;transition:background var(--transition);flex-shrink:0}
  .export-pdf-ctrl-btn:hover{background:var(--amber-d)}
  @media(max-width:560px){.export-pdf-ctrl-btn .btn-label{display:none}}

  /* ── SEARCH NO-RESULTS ── */
  .hide{display:none !important}
  .search-active .daysec{/* handled by JS */}

  /* ── DAY NOTES / JOURNAL ── */
  .daynote-wrap{margin:4px 0 12px}
  .daynote{width:100%;font-family:"Hanken Grotesk",system-ui,sans-serif;font-size:.86rem;color:var(--ink);background:rgba(255,255,255,.5);border:1.5px solid var(--line);border-radius:10px;padding:8px 12px;resize:none;line-height:1.45;overflow:hidden;min-height:36px;transition:border-color .15s,background .15s}
  .daynote:focus{outline:none;border-color:var(--amber);background:var(--card)}
  .daynote::placeholder{color:#9aa6a3}
  .daynote:not(:placeholder-shown){background:var(--card)}
  /* per-day photo journal strip */
  .jr-strip{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
  .jr-thumb{position:relative;width:56px;height:56px;border-radius:9px;overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow);cursor:pointer}
  .jr-thumb img{width:100%;height:100%;object-fit:cover;display:block;transition:transform var(--transition)}
  .jr-thumb:hover img{transform:scale(1.06)}
  .jr-del{position:absolute;top:2px;right:2px;width:17px;height:17px;border:none;border-radius:50%;background:rgba(0,0,0,.55);color:#fff;font-size:.62rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}
  .jr-del:hover{background:rgba(192,57,43,.92)}
  .jr-add{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-width:56px;height:56px;padding:0 11px;border-radius:9px;border:1.5px dashed var(--line);color:var(--ink-soft);font-size:.72rem;font-weight:700;cursor:pointer;background:transparent;transition:border-color .15s,color .15s}
  .jr-add:hover{border-color:var(--amber);color:var(--amber-d)}
  .jr-add input{display:none}

  /* ── PER-DAY WEATHER ── */
  .day-weather{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap;margin:8px 0 2px;font-size:.82rem;color:var(--ink-soft);background:rgba(47,125,118,.06);border:1px solid rgba(47,125,118,.16);border-radius:8px;padding:5px 11px}
  .day-weather .dw-ic{font-size:1.15rem;line-height:1}
  .day-weather .dw-temp{font-weight:700;color:var(--ink)}
  .day-weather .dw-tag{font-size:.58rem;letter-spacing:.08em;text-transform:uppercase;color:#7c938a;border:1px solid var(--line);border-radius:5px;padding:1px 5px}

  /* ── TIME-CONFLICT BADGE (cards) ── */
  .conflict{display:flex;align-items:center;gap:5px;font-size:.75rem;font-weight:700;background:rgba(192,57,43,.12);color:#9c2c1f;border:1px solid rgba(192,57,43,.28);padding:4px 9px;border-radius:7px;margin:0 0 8px}

  /* ── EMERGENCY INFO ── */
  .emergency{background:var(--card);border:1px solid rgba(192,57,43,.22);border-radius:14px;margin:8px 0 28px;overflow:hidden;box-shadow:var(--shadow)}
  .emergency-toggle{display:flex;align-items:center;gap:10px;padding:13px 16px;cursor:pointer;width:100%;font-family:inherit;text-align:left;color:var(--ink);background:transparent;border:none;transition:background var(--transition)}
  .emergency-toggle:hover{background:rgba(192,57,43,.05)}
  .emergency-toggle .em-title{font-family:"Fraunces",serif;font-weight:600;font-size:1.05rem}
  .emergency-toggle .em-arrow{margin-left:auto;color:var(--ink-soft);transition:transform .2s}
  .emergency-toggle.open .em-arrow{transform:rotate(180deg)}
  .emergency-body{display:none;padding:0 16px 16px;border-top:1px solid rgba(192,57,43,.15)}
  .emergency-body.show{display:block}
  .em-note{font-size:.82rem;color:var(--ink-soft);margin:10px 0 4px}
  .em-contacts{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px;margin-top:10px}
  .em-contact{display:flex;align-items:center;gap:10px;background:rgba(192,57,43,.06);border:1px solid rgba(192,57,43,.17);border-radius:10px;padding:10px 12px}
  .em-ico{font-size:1.3rem;flex:0 0 auto;line-height:1}
  .em-info{min-width:0}
  .em-lbl{font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:#9c5a5a;font-weight:700;margin-bottom:2px}
  .em-val{font-family:"Fraunces",serif;font-weight:600;font-size:.98rem;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .em-val a{color:inherit;text-decoration:none}
  .em-val a:hover{color:var(--amber-d);text-decoration:underline}

  /* ── PRINT ── */
  @media print{
    .controls,.playbtn,#scrolltop,.map-toggle,.hero-actions,.cost,.checkbtn,.tipbtn,.jr-add,.jr-del{display:none!important}
    .layout{grid-template-columns:1fr!important}
    .mapcol{display:none!important}
    .card{page-break-inside:avoid;break-inside:avoid}
  }

  /* ── REDNOTE CALLOUT ── */
  .rednote-callout{background:linear-gradient(135deg,rgba(192,32,40,.10),rgba(192,32,40,.04));border:1px solid rgba(192,32,40,.28);border-radius:14px;padding:14px 16px;margin:0 0 14px;display:flex;gap:14px;align-items:flex-start}
  .rn-icon{font-size:1.8rem;flex:0 0 auto;line-height:1}
  .rn-title{font-family:"Fraunces",serif;font-weight:600;font-size:1rem;color:#a01820;margin-bottom:4px}
  .rn-body{font-size:.82rem;color:#3a4649;line-height:1.45}
  .rn-body strong{color:var(--ink)}

  /* ── GLOSSARY ── */
  .glossary{margin:8px 0 28px}
  .glossary-toggle{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:13px 16px;cursor:pointer;width:100%;font-family:inherit;text-align:left;color:var(--ink);box-shadow:var(--shadow);transition:background var(--transition)}
  .glossary-toggle:hover{background:var(--paper2)}
  .glossary-toggle .gl-title{font-family:"Fraunces",serif;font-weight:600;font-size:1.05rem}
  .glossary-toggle .gl-sub{font-size:.78rem;color:var(--ink-soft);margin-left:4px}
  .glossary-toggle .gl-arrow{margin-left:auto;font-size:.85rem;color:var(--ink-soft);transition:transform .2s}
  .glossary-toggle.open .gl-arrow{transform:rotate(180deg)}
  .glossary-body{display:none;background:var(--card);border:1px solid var(--line);border-top:none;border-radius:0 0 12px 12px;padding:14px 16px 16px}
  .glossary-body.show{display:block}
  .gl-grid{display:grid;grid-template-columns:1fr;gap:0}
  @media(min-width:560px){.gl-grid{grid-template-columns:1fr 1fr}}
  @media(min-width:840px){.gl-grid{grid-template-columns:1fr 1fr 1fr}}
  .gl-item{padding:9px 10px;border-bottom:1px solid var(--line)}
  .gl-item:last-child{border-bottom:none}
  .gl-name{font-family:"Fraunces",serif;font-weight:600;font-size:.97rem;color:var(--ink)}
  .gl-type{font-size:.64rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:2px 7px;border-radius:5px;margin-left:6px;vertical-align:middle}
  .gl-type.food{background:rgba(47,125,118,.14);color:#266861}
  .gl-type.drink{background:rgba(47,126,126,.14);color:#1c6060}
  .gl-type.term{background:rgba(95,122,114,.12);color:#3f5650}
  .gl-desc{font-size:.82rem;color:#3a4649;margin-top:3px;line-height:1.4}


  /* ── PACK LIST ── */
  .packlist{margin:0 0 28px}
  .packlist-toggle{display:flex;align-items:center;gap:10px;background:var(--forest);color:#eef2f1;border:none;border-radius:12px;padding:13px 16px;cursor:pointer;width:100%;font-family:inherit;text-align:left;box-shadow:0 4px 14px -6px rgba(0,0,0,.45);transition:background var(--transition)}
  .packlist-toggle:hover{background:var(--forest-d)}
  .packlist-toggle .pl-title{font-family:"Fraunces",serif;font-weight:600;font-size:1.05rem}
  .packlist-toggle .pl-sub{font-size:.77rem;color:#a9c4a0;margin-left:4px}
  .packlist-toggle .pl-arrow{margin-left:auto;font-size:.85rem;color:#a9c4a0;transition:transform .2s}
  .packlist-toggle.open .pl-arrow{transform:rotate(180deg)}
  .packlist-toggle .pl-progress{font-size:.73rem;color:#f0c89a;font-weight:700;margin-left:8px;font-variant-numeric:tabular-nums}
  .packlist-body{display:none;background:var(--card);border:1px solid var(--line);border-top:none;border-radius:0 0 12px 12px;padding:16px}
  .packlist-body.show{display:block}
  .pl-section{margin-bottom:18px}
  .pl-section:last-child{margin-bottom:0}
  .pl-section-head{display:flex;align-items:center;gap:8px;margin-bottom:8px;padding-bottom:6px;border-bottom:1.5px solid var(--line)}
  .pl-section-head .pl-ico{font-size:1.1rem}
  .pl-section-head .pl-name{font-family:"Fraunces",serif;font-weight:600;font-size:.98rem;color:var(--ink)}
  .pl-section-head .pl-count{font-size:.72rem;color:var(--ink-soft);margin-left:auto;font-weight:600}
  .pl-items{display:grid;grid-template-columns:1fr;gap:0}
  @media(min-width:500px){.pl-items{grid-template-columns:1fr 1fr}}
  @media(min-width:800px){.pl-items{grid-template-columns:1fr 1fr 1fr}}
  .pl-item{display:flex;align-items:flex-start;gap:9px;padding:6px 4px;border-radius:8px;cursor:pointer;transition:background .1s}
  .pl-item:hover{background:rgba(0,0,0,.04)}
  .pl-item input[type=checkbox]{flex:0 0 auto;width:16px;height:16px;accent-color:var(--moss);cursor:pointer;margin-top:2px}
  .pl-item label{font-size:.84rem;line-height:1.35;cursor:pointer;color:var(--ink)}
  .pl-item.checked label{text-decoration:line-through;color:var(--ink-soft)}
  .pl-item .pl-note{font-size:.72rem;color:var(--ink-soft);display:block;margin-top:1px}
  .pl-item .pl-warn{font-size:.72rem;color:#9c3a22;font-weight:700;display:block;margin-top:1px}
  .pl-reset{background:none;border:1px solid var(--line);color:var(--ink-soft);font-family:inherit;font-size:.73rem;padding:4px 12px;border-radius:8px;cursor:pointer;margin-top:12px;transition:.12s}
  .pl-reset:hover{background:var(--paper2)}
  /* ── SPENDING TRACKER ── */
  .tracker{background:var(--card);border:1px solid var(--line);border-radius:16px;margin:8px 0 30px;overflow:hidden;box-shadow:var(--shadow)}
  .tracker-head{display:flex;align-items:center;gap:10px;padding:16px 18px;cursor:pointer;user-select:none;border-bottom:1px solid transparent;transition:background var(--transition)}
  .tracker-head:hover{background:var(--paper2)}
  .tracker-head.open{border-bottom-color:var(--line)}
  .tracker-head .tr-title{font-family:"Fraunces",serif;font-weight:600;font-size:1.1rem;color:var(--ink)}
  .tracker-head .tr-sub{font-size:.78rem;color:var(--ink-soft);margin-left:2px}
  .tracker-head .tr-arrow{margin-left:auto;font-size:.85rem;color:var(--ink-soft);transition:transform .2s}
  .tracker-head.open .tr-arrow{transform:rotate(180deg)}
  .tracker-head .tr-pill{display:inline-flex;align-items:center;gap:6px;background:rgba(95,122,114,.13);color:#3f5650;font-size:.73rem;font-weight:700;padding:3px 10px;border-radius:999px;margin-left:8px}
  .tracker-head .tr-pill.over{background:rgba(192,57,43,.13);color:#9c2c1f}
  .tracker-body{display:none;padding:16px 18px 20px}
  .tracker-body.show{display:block}

  /* vs-bar */
  .vs-bar{background:var(--paper2);border-radius:12px;padding:14px 16px;margin-bottom:16px}
  .vs-row{display:flex;justify-content:space-between;align-items:flex-end;gap:8px;flex-wrap:wrap;margin-bottom:8px}
  .vs-col .vs-lbl{font-size:.67rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);font-weight:700}
  .vs-col .vs-amt{font-family:"Fraunces",serif;font-size:1.5rem;font-weight:600;line-height:1;color:var(--ink)}
  .vs-col .vs-amt.actual{color:var(--moss)}
  .vs-col .vs-amt.over{color:#c0392b}
  .vs-track{height:8px;background:rgba(0,0,0,.08);border-radius:4px;overflow:hidden;margin-top:4px}
  .vs-fill{height:100%;border-radius:4px;background:var(--moss);transition:width .4s ease}
  .vs-fill.over{background:#c0392b}
  .vs-note{font-size:.74rem;color:var(--ink-soft);margin-top:6px}

  /* add entry form */
  .tr-add-btn{display:inline-flex;align-items:center;gap:6px;font-family:inherit;font-size:.8rem;font-weight:700;background:var(--forest);color:#eef2f1;border:none;border-radius:8px;padding:8px 14px;cursor:pointer;transition:.12s;margin-bottom:14px}
  .tr-add-btn:hover{background:var(--amber-d)}
  .tr-form{background:var(--paper2);border-radius:12px;padding:14px;margin-bottom:16px;display:none}
  .tr-form.show{display:block}
  .tr-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px}
  @media(min-width:560px){.tr-form-grid{grid-template-columns:1fr 1fr 1fr}}
  .tr-fld label{display:block;font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);font-weight:700;margin-bottom:3px}
  .tr-fld input,.tr-fld select,.tr-fld textarea{width:100%;font-family:inherit;font-size:.88rem;color:var(--ink);background:#fff;border:1.5px solid var(--line);border-radius:8px;padding:6px 9px;transition:border-color .12s}
  .tr-fld input:focus,.tr-fld select:focus,.tr-fld textarea:focus{outline:none;border-color:var(--amber)}
  .tr-fld textarea{resize:vertical;min-height:52px;font-size:.82rem}
  .tr-fld.span2{grid-column:span 2}
  @media(min-width:560px){.tr-fld.span2{grid-column:span 1}}
  .tr-fld.spanfull{grid-column:1/-1}

  /* file drop zone */
  .tr-dropzone{border:2px dashed var(--line);border-radius:10px;padding:14px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s;position:relative;background:#fff}
  .tr-dropzone:hover,.tr-dropzone.drag{border-color:var(--amber);background:rgba(47,125,118,.05)}
  .tr-dropzone input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}
  .tr-dropzone .dz-icon{font-size:1.4rem;display:block;margin-bottom:4px}
  .tr-dropzone .dz-text{font-size:.78rem;color:var(--ink-soft);font-weight:600}
  .tr-dropzone .dz-sub{font-size:.69rem;color:#7c938a;margin-top:2px}

  /* attachment previews */
  .tr-previews{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
  .tr-preview{position:relative;width:72px;height:72px;border-radius:8px;overflow:hidden;border:1.5px solid var(--line);background:var(--paper2);flex:0 0 auto}
  .tr-preview img{width:100%;height:100%;object-fit:cover}
  .tr-preview .file-icon{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:1.1rem;gap:2px}
  .tr-preview .file-name{font-size:.55rem;color:var(--ink-soft);text-align:center;padding:0 3px;word-break:break-all;line-height:1.2}
  .tr-preview .del-att{position:absolute;top:2px;right:2px;background:rgba(0,0,0,.55);color:#fff;border:none;border-radius:50%;width:16px;height:16px;font-size:.6rem;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1}
  .tr-form-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
  .tr-save-btn{font-family:inherit;font-size:.82rem;font-weight:700;background:var(--moss);color:#fff;border:none;border-radius:8px;padding:8px 18px;cursor:pointer;transition:.12s}
  .tr-save-btn:hover{background:#3a6530}
  .tr-cancel-btn{font-family:inherit;font-size:.82rem;font-weight:600;background:none;color:var(--ink-soft);border:1.5px solid var(--line);border-radius:8px;padding:8px 14px;cursor:pointer;transition:.12s}
  .tr-cancel-btn:hover{border-color:#a3c0b6}

  /* entries list */
  .tr-entries{display:flex;flex-direction:column;gap:8px}
  .tr-entry{background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:flex;gap:10px;align-items:flex-start}
  .tr-entry-left{flex:1;min-width:0}
  .tr-entry-meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:3px}
  .tr-entry-name{font-family:"Fraunces",serif;font-weight:600;font-size:.95rem;color:var(--ink)}
  .tr-entry-cat{font-size:.63rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;padding:2px 7px;border-radius:5px}
  .cat-food{background:rgba(47,125,118,.14);color:#266861}
  .cat-stay{background:rgba(91,107,122,.14);color:#3f4c58}
  .cat-sight{background:rgba(95,122,114,.13);color:#3f5650}
  .cat-transport{background:rgba(47,126,126,.13);color:#1c6060}
  .cat-misc{background:rgba(156,90,140,.13);color:#6b3a61}
  .tr-entry-date{font-size:.72rem;color:var(--ink-soft)}
  .tr-entry-amt{font-family:"Fraunces",serif;font-size:1.1rem;font-weight:600;color:var(--ink);white-space:nowrap}
  .tr-entry-note{font-size:.79rem;color:var(--ink-soft);margin-top:2px}
  .tr-entry-atts{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
  .tr-att-thumb{width:52px;height:52px;border-radius:6px;overflow:hidden;border:1px solid var(--line);cursor:pointer;position:relative;background:var(--paper2)}
  .tr-att-thumb img{width:100%;height:100%;object-fit:cover}
  .tr-att-thumb .file-badge{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:.9rem;gap:1px}
  .tr-att-thumb .file-badge span{font-size:.52rem;color:var(--ink-soft);word-break:break-all;padding:0 2px;text-align:center;line-height:1.2}
  .tr-entry-right{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:0 0 auto}
  .tr-del-btn{background:none;border:none;color:#c0392b;cursor:pointer;font-size:.85rem;padding:0;opacity:.6;transition:.12s}
  .tr-del-btn:hover{opacity:1}
  .tr-edit-btn{background:none;border:none;color:var(--amber-d);cursor:pointer;font-size:.75rem;font-family:inherit;font-weight:700;padding:0;transition:.12s}
  .tr-edit-btn:hover{text-decoration:underline}
  .tr-empty{text-align:center;padding:22px 0;color:var(--ink-soft);font-size:.85rem}
  .tr-empty .emo{font-size:1.8rem;display:block;margin-bottom:6px}

  /* card receipt dot */
  .receipt-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--moss);margin-left:5px;vertical-align:middle;flex-shrink:0;title:"Has logged receipts"}
  /* log-payment button on cards */
  .log-pay-btn{font-family:inherit;font-size:.69rem;font-weight:700;background:rgba(95,122,114,.12);color:#3f5650;border:1.5px solid rgba(95,122,114,.28);border-radius:6px;padding:2px 9px;cursor:pointer;transition:.12s;white-space:nowrap}
  .log-pay-btn:hover{background:rgba(95,122,114,.22)}

  /* ── EXPENSE SPLITTING ── */
  .split-box{background:rgba(47,125,118,.05);border:1px solid rgba(47,125,118,.18);border-radius:12px;padding:12px 13px;margin:0 0 14px}
  .split-title{font-family:"Fraunces",serif;font-weight:600;font-size:.98rem;color:var(--ink);display:block;margin-bottom:8px}
  .split-people{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
  .person-chip{display:inline-flex;align-items:center;gap:4px;background:var(--card);border:1.5px solid var(--line);border-radius:999px;padding:4px 5px 4px 11px;font-size:.8rem;font-weight:600;color:var(--ink)}
  .person-chip .pc-name{cursor:text}
  .person-chip .pc-x{border:none;background:none;color:var(--ink-soft);cursor:pointer;font-size:.8rem;line-height:1;padding:3px 5px;border-radius:50%}
  .person-chip .pc-x:hover{background:rgba(192,57,43,.14);color:#9c2c1f}
  .person-add{display:inline-flex;align-items:center;gap:5px;background:transparent;border:1.5px dashed var(--line);border-radius:999px;padding:5px 12px;font-size:.8rem;font-weight:700;color:var(--ink-soft);cursor:pointer;font-family:inherit}
  .person-add:hover{border-color:var(--amber);color:var(--amber-d)}
  .split-settle{margin-top:11px;border-top:1px dashed rgba(47,125,118,.22);padding-top:10px}
  .settle-bal{display:flex;flex-wrap:wrap;gap:5px 16px;margin-bottom:9px}
  .settle-bal .sb{font-size:.79rem;color:var(--ink-soft)}
  .settle-bal .sb b{color:var(--ink)}
  .settle-bal .sb .pos{color:#3f7d50;font-weight:700}
  .settle-bal .sb .neg{color:#c0392b;font-weight:700}
  .settle-row{display:flex;align-items:center;gap:8px;font-size:.85rem;color:var(--ink);padding:5px 0;border-top:1px solid rgba(0,0,0,.04)}
  .settle-row .arr{color:var(--amber-d);font-weight:700}
  .settle-amt{margin-left:auto;font-family:"Fraunces",serif;font-weight:600;color:var(--ink)}
  .settle-none{font-size:.8rem;color:var(--ink-soft)}
  .split-chips{display:flex;flex-wrap:wrap;gap:6px}
  .split-chips .sc{font-family:inherit;font-size:.8rem;font-weight:600;border:1.5px solid var(--line);background:var(--card);color:var(--ink-soft);padding:6px 12px;border-radius:999px;cursor:pointer;transition:.12s}
  .split-chips .sc.on{background:rgba(47,125,118,.14);border-color:var(--amber);color:var(--amber-d)}
  .tr-entry-split{font-size:.74rem;color:var(--ink-soft);margin-top:3px}

  /* lightbox */
  .lb-overlay{position:fixed;inset:0;background:rgba(0,0,0,.82);z-index:9999;display:none;align-items:center;justify-content:center;padding:20px}
  .lb-overlay.show{display:flex}
  .lb-overlay img{max-width:90vw;max-height:90vh;border-radius:8px;box-shadow:0 8px 40px rgba(0,0,0,.6)}
  .lb-overlay .lb-close{position:absolute;top:14px;right:18px;color:#fff;font-size:1.6rem;cursor:pointer;line-height:1;background:none;border:none}

  /* ── PDF EXPORT ── */
  .pdf-overlay{position:fixed;inset:0;background:rgba(31,58,58,.82);z-index:9998;display:none;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:#eef2f1}
  .pdf-overlay.show{display:flex}
  .pdf-overlay .pdf-spin{width:44px;height:44px;border:4px solid rgba(255,255,255,.25);border-top-color:#f0c89a;border-radius:50%;animation:spin .8s linear infinite}
  .pdf-overlay .pdf-msg{font-family:"Fraunces",serif;font-size:1.1rem;font-weight:600}
  .pdf-overlay .pdf-sub{font-size:.82rem;color:#b9c3a8}
  @keyframes spin{to{transform:rotate(360deg)}}

  /* ════════════════════════════════════════════════════════════
     EDITORIAL REFINEMENT LAYER  ·  field-guide / travel-journal polish
     Purely additive — layered over the base styles above so the working
     app is untouched; later same-specificity rules win the cascade.
     ════════════════════════════════════════════════════════════ */
  :root{
    --card:#fafbfb;
    --hair:#dde1e2;
    --shadow:0 1px 0 #ffffff inset, 0 12px 32px -20px rgba(20,40,40,.34);
    --shadow-lg:0 1px 0 #ffffff inset, 0 26px 54px -28px rgba(20,40,40,.36);
    --radius-card:16px; --radius-lg:20px;
    --ease:cubic-bezier(.22,.61,.36,1);
  }
  html{ -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility; }
  body{ background-attachment:fixed; }
  ::selection{ background:rgba(47,125,118,.28); color:var(--ink); }
  a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,.card:focus-visible{
    outline:2px solid var(--amber); outline-offset:2px; border-radius:5px;
  }
  @media(pointer:fine){
    *{ scrollbar-width:thin; scrollbar-color:#a3c0b6 transparent; }
    *::-webkit-scrollbar{ width:12px; height:12px; }
    *::-webkit-scrollbar-thumb{ background:#a8c4ba; border:3px solid var(--paper); border-radius:99px; }
    *::-webkit-scrollbar-thumb:hover{ background:#8aa89d; }
  }

  /* ── MASTHEAD ── */
  header.hero{
    border-bottom:none;
    background:
      radial-gradient(120% 150% at 6% -15%, rgba(47,125,118,.34), transparent 58%),
      radial-gradient(120% 130% at 102% -5%, rgba(47,125,118,.16), transparent 55%),
      linear-gradient(158deg, var(--forest), var(--forest-d) 72%, #0e1f1f);
  }
  header.hero::before{
    content:""; position:absolute; left:0; right:0; bottom:0; height:4px; z-index:2;
    background:linear-gradient(90deg,var(--d1) 0 20%,var(--d2) 20% 40%,var(--d3) 40% 60%,var(--d4) 60% 80%,var(--d5) 80% 100%);
  }
  .hero-inner{ padding-top:54px; padding-bottom:46px; }
  .kicker{ display:inline-flex; align-items:center; gap:13px; color:#93b3ac; letter-spacing:.34em; }
  .kicker::before{ content:""; width:36px; height:1px; background:currentColor; opacity:.65; }
  h1{ font-size:clamp(2.7rem,7vw,5rem); line-height:.93; letter-spacing:-.02em; margin:.24em 0 .16em; font-optical-sizing:auto; text-shadow:0 2px 34px rgba(0,0,0,.28); }
  h1 em{ color:#bcdbd4; }
  .sub{ font-size:1.08rem; line-height:1.5; max-width:48ch; color:#e4dbc6; }

  .hero-stats{ gap:0; margin-top:26px; padding:15px 0; border-top:1px solid rgba(255,255,255,.15); border-bottom:1px solid rgba(255,255,255,.15); }
  .hero-stats .stat{ padding:2px 26px; border-left:1px solid rgba(255,255,255,.13); }
  .hero-stats .stat:first-child{ border-left:none; padding-left:0; }
  .stat .n{ font-size:2.05rem; }
  .stat .l{ margin-top:4px; }

  /* boarding-pass flight stubs */
  .flights{ gap:12px; margin-top:22px; }
  .flt{ background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.15); border-radius:14px; padding:12px 15px; align-items:center; }
  .flt .seg strong{ font-size:1.16rem; letter-spacing:.005em; }
  .flt .meta{ position:relative; padding-left:15px; }
  .flt .meta::before{ content:""; position:absolute; left:0; top:-12px; bottom:-12px; border-left:1.5px dashed rgba(255,255,255,.24); }
  .flt .tag.dep{ box-shadow:0 5px 14px -5px rgba(47,125,118,.6); }

  .progress-pill{ backdrop-filter:blur(3px); }
  .hero-btn{ border-radius:10px; }
  .trip-select{ border-radius:10px; }

  @keyframes riseIn{ from{ opacity:0; transform:translateY(15px); } to{ opacity:1; transform:none; } }
  @media(prefers-reduced-motion:no-preference){
    .hero-inner > *{ animation:riseIn .7s var(--ease) both; }
    .hero-inner > .tripbar{ animation-delay:.02s; }
    .hero-inner > .kicker{ animation-delay:.08s; }
    .hero-inner > h1{ animation-delay:.14s; }
    .hero-inner > .sub{ animation-delay:.22s; }
    .hero-inner > .hero-stats{ animation-delay:.3s; }
    .hero-inner > .progress-pill{ animation-delay:.34s; }
    .hero-inner > .hero-actions{ animation-delay:.38s; }
    .hero-inner > .flights{ animation-delay:.42s; }
  }

  /* ── CONTROLS BAR ── */
  .controls{ box-shadow:0 8px 22px -18px rgba(10,40,42,.7); }
  .daytabs button{ border-radius:11px; transition:transform var(--transition),background var(--transition),color var(--transition),border-color var(--transition),box-shadow var(--transition); }
  .daytabs button.active{ box-shadow:0 7px 16px -7px rgba(31,58,58,.65); transform:translateY(-1px); }
  .chips button{ border-radius:10px; }
  .chips button:hover{ border-color:#a3c0b6; }
  .viewtoggle{ border-radius:11px; }
  .viewtoggle button{ border-radius:9px; }
  .export-pdf-ctrl-btn{ border-radius:10px; box-shadow:0 7px 16px -9px rgba(31,58,58,.7); }

  /* ── DAY HEADERS (magazine) ── */
  .daysec{ margin-bottom:34px; }
  .dayhead{ align-items:center; gap:12px; padding:16px 2px 11px; margin:0 0 4px; border-bottom:1px solid var(--hair); }
  .dayhead .tag{ font-size:1.75rem; letter-spacing:-.01em; position:relative; }
  .dayhead .tag::after{ content:""; position:absolute; left:0; bottom:-12px; width:100%; height:3px; background:currentColor; border-radius:2px; }
  .dayhead .where{ font-size:.74rem; letter-spacing:.2em; }
  .dayhead .datestr{ font-size:.74rem; letter-spacing:.09em; }
  .driveline{ border-radius:10px; border-style:solid; border-color:rgba(47,125,118,.38); background:linear-gradient(180deg,rgba(47,125,118,.15),rgba(47,125,118,.07)); margin-top:14px; }

  /* ── CARDS ── */
  .card{ border-radius:var(--radius-card); border-color:var(--hair); box-shadow:var(--shadow); transition:transform .24s var(--ease),box-shadow .24s var(--ease),border-color var(--transition); }
  .card:hover{ transform:translateY(-3px); box-shadow:var(--shadow-lg); border-color:#a9c3b8; }
  .thumb{ flex-basis:104px; }
  .thumb::after{ content:""; position:absolute; inset:0; box-shadow:inset 0 0 0 1px rgba(255,255,255,.2); pointer-events:none; }
  .thumb .num{ font-size:1.22rem; }
  .thumb .ic{ font-size:3.6rem; line-height:1; }
  .nm{ font-size:1.16rem; letter-spacing:-.004em; }
  .slot{ border-radius:7px; box-shadow:0 4px 10px -5px rgba(47,125,118,.65); }
  .stayhead{ font-size:1.18rem; }

  /* ── SECTION CARDS ── */
  .glossary-toggle,.packlist-toggle,.tracker{ border-radius:var(--radius-lg); }
  .glossary-body,.packlist-body{ border-radius:0 0 var(--radius-lg) var(--radius-lg); }
  .glossary-toggle,.tracker{ box-shadow:var(--shadow); }
  .rednote-callout{ border-radius:var(--radius-lg); }

  /* ── COST (dark) ── */
  .cost{ border-radius:var(--radius-lg); position:relative; overflow:hidden; box-shadow:0 1px 0 rgba(255,255,255,.06) inset, 0 26px 54px -32px rgba(0,0,0,.75); }
  .cost::before{ content:""; position:absolute; inset:0; pointer-events:none; opacity:.55; background:radial-gradient(120% 120% at 100% -10%, rgba(47,125,118,.2), transparent 46%); }
  .cost > *{ position:relative; z-index:1; }
  .cost h3{ font-size:1.35rem; }
  .cost .fld input{ border:1px solid rgba(0,0,0,.28); box-shadow:inset 0 1px 2px rgba(0,0,0,.12); }
  .cost-total .big{ font-size:2.3rem; }

  /* ── TRIP EDITOR ── */
  .ed-overlay{position:fixed;inset:0;z-index:10000;background:rgba(16,30,30,.55);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);display:none;align-items:center;justify-content:center;padding:16px}
  .ed-overlay.show{display:flex}
  .ed-panel{display:flex;flex-direction:column;width:100%;max-width:760px;max-height:92vh;background:var(--paper);border:1px solid var(--line);border-radius:16px;box-shadow:0 30px 70px -20px rgba(0,0,0,.55);overflow:hidden}
  .ed-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 18px;background:linear-gradient(160deg,var(--forest),var(--forest-d));color:#eef2f1}
  .ed-title{font-family:"Fraunces",serif;font-weight:600;font-size:1.2rem}
  .ed-head-actions{display:flex;gap:8px}
  .ed-btn{font-family:inherit;font-size:.82rem;font-weight:700;border-radius:9px;padding:8px 15px;cursor:pointer;border:1.5px solid transparent;transition:.13s}
  .ed-btn.primary{background:var(--amber);color:#fff;border-color:var(--amber)}
  .ed-btn.primary:hover{background:var(--amber-d)}
  .ed-btn.ghost{background:rgba(255,255,255,.12);color:#eef2f1;border-color:rgba(255,255,255,.3)}
  .ed-btn.ghost:hover{background:rgba(255,255,255,.22)}
  .ed-btn.danger{background:transparent;color:#c0392b;border-color:rgba(192,57,43,.5)}
  .ed-btn.danger:hover{background:rgba(192,57,43,.1)}
  .ed-tabs{display:flex;gap:4px;overflow-x:auto;padding:10px 14px 0;background:var(--paper);border-bottom:1px solid var(--line);scrollbar-width:none}
  .ed-tabs::-webkit-scrollbar{display:none}
  .ed-tabs button{flex:0 0 auto;font-family:inherit;font-size:.82rem;font-weight:700;color:var(--ink-soft);background:none;border:none;border-bottom:2.5px solid transparent;padding:8px 12px;cursor:pointer;white-space:nowrap}
  .ed-tabs button.active{color:var(--forest);border-bottom-color:var(--amber)}
  .ed-body{flex:1;overflow-y:auto;padding:16px 18px;background:var(--paper)}
  .ed-foot{padding:10px 18px;border-top:1px solid var(--line);background:var(--card);min-height:0}
  .ed-foot:empty{display:none}
  /* form bits */
  .ed-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px}
  .ed-fld{display:flex;flex-direction:column;gap:3px;min-width:0}
  .ed-fld.full{grid-column:1 / -1}
  .ed-fld label{font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);font-weight:700}
  .ed-fld input,.ed-fld select,.ed-fld textarea{font-family:inherit;font-size:.9rem;color:var(--ink);background:var(--card);border:1.5px solid var(--line);border-radius:8px;padding:7px 10px;width:100%}
  .ed-fld textarea{resize:vertical;min-height:54px;line-height:1.4}
  .ed-fld input:focus,.ed-fld select:focus,.ed-fld textarea:focus{outline:none;border-color:var(--amber)}
  .ed-row{border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:12px;background:var(--card);position:relative}
  .ed-row-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:9px}
  .ed-row-title{font-family:"Fraunces",serif;font-weight:600;font-size:1rem;color:var(--ink)}
  .ed-del{background:none;border:1.5px solid rgba(192,57,43,.4);color:#c0392b;font-size:.72rem;font-weight:700;font-family:inherit;border-radius:7px;padding:4px 9px;cursor:pointer}
  .ed-del:hover{background:rgba(192,57,43,.1)}
  .ed-add{font-family:inherit;font-size:.82rem;font-weight:700;background:rgba(47,125,118,.1);color:var(--amber-d);border:1.5px dashed var(--amber);border-radius:9px;padding:9px 14px;cursor:pointer;width:100%}
  .ed-add:hover{background:rgba(47,125,118,.18)}
  .ed-hint{font-size:.78rem;color:var(--ink-soft);margin:0 0 12px;line-height:1.45}
  .ed-json{width:100%;min-height:340px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.78rem;line-height:1.45;color:var(--ink);background:var(--card);border:1.5px solid var(--line);border-radius:10px;padding:11px;resize:vertical}

  /* ── Directions link, card "More" toggle (mobile only), Next-up banner ── */
  .nextup{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;margin:14px 0 4px;padding:12px 14px;background:var(--forest);color:#eef2f1;border-radius:var(--radius-card)}
  .nextup[hidden]{display:none}
  .nu-lbl{flex-basis:100%;font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:#9fd3cb;font-weight:700}
  .nu-name{font-family:"Fraunces",serif;font-weight:600;font-size:1.12rem;flex:1 1 auto;min-width:0}
  .nu-time{font-size:.8rem;opacity:.8}
  .nu-acts{display:flex;gap:8px}
  .nu-btn{font-family:inherit;font-size:.82rem;font-weight:700;background:var(--amber);color:#fff;border:none;border-radius:999px;padding:8px 16px;text-decoration:none;cursor:pointer}
  .nu-btn.ghost{background:transparent;border:1.5px solid rgba(255,255,255,.35)}

  /* ── Mobile bottom nav + auto-hiding filter bar (below the 2-column breakpoint) ── */
  .mnav{display:none}
  .controls{transition:transform .25s ease}
  @media(max-width:919px){
    .controls.tuck{transform:translateY(-100%)}
    .mnav{display:grid;grid-template-columns:repeat(6,1fr);position:fixed;left:0;right:0;bottom:0;z-index:950;background:rgba(250,251,251,.97);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-top:1px solid var(--line);padding:4px 4px calc(4px + env(safe-area-inset-bottom))}
    .mnav button{font-family:inherit;font-size:.66rem;font-weight:700;color:var(--ink-soft);background:none;border:none;display:flex;flex-direction:column;align-items:center;gap:1px;padding:6px 0;min-height:48px;cursor:pointer;border-radius:10px}
    .mnav button span{font-size:1.2rem;line-height:1}
    .mnav button:active{background:var(--paper2)}
    body{padding-bottom:calc(64px + env(safe-area-inset-bottom))}
    #scrolltop{bottom:calc(76px + env(safe-area-inset-bottom))}
  }
  @media print{.mnav,.nextup{display:none!important}}

  /* ════════════════════════════════════════════════════════════
     MOBILE REFINEMENTS (≤560px) — placed last so these win the
     cascade over the editorial layer above.
     ════════════════════════════════════════════════════════════ */
  @media(max-width:560px){
    .wrap{ padding:0 16px; }

    /* hero: tighter, stats in a clean 2×2 grid (no odd dividers) */
    .hero-inner{ padding-top:30px; padding-bottom:24px; }
    h1{ font-size:clamp(2.1rem,9vw,3rem); }
    .sub{ font-size:.98rem; }
    .hero-stats{ display:grid; grid-template-columns:1fr 1fr; gap:2px 0; margin-top:16px; padding:12px 0; }
    .hero-stats .stat{ border-left:none; padding:7px 2px; }
    .stat .n{ font-size:1.55rem; }
    .flt{ flex:1 1 100%; }
    .hero-actions{ gap:8px; }
    .hero-btn{ padding:9px 16px; }   /* easier tap target */

    /* controls: compact, deterministic 2-row grid */
    .controls{ padding:8px 0; }
    .controls-row2{ display:grid; grid-template-columns:auto 1fr; gap:7px 8px; }
    .viewtoggle{ grid-area:1 / 1; }
    .searchbox{ grid-area:1 / 2; margin-left:0; }
    .searchbox input,.searchbox input:focus{ width:100%; }
    .chips{ grid-area:2 / 1; }
    .export-pdf-ctrl-btn{ grid-area:2 / 2; justify-self:end; }
    .daytabs button{ padding:8px 13px; }
    .chips button{ padding:7px 12px; }
    .viewtoggle button{ padding:7px 12px; }

    /* cards: roomier text, bigger tap targets, emoji still bold */
    .thumb{ flex-basis:92px; }
    .thumb .ic{ font-size:3.1rem; }
    .nm{ font-size:1.1rem; }
    .checkbtn{ padding:8px 12px; font-size:.72rem; }
    .foot{ gap:9px 14px; }
    .foot a,.log-pay-btn{ padding-top:2px; padding-bottom:2px; }

    /* journal photo controls: comfortable thumb/tap size */
    .jr-thumb,.jr-add{ width:60px; height:60px; }
    .jr-add{ min-width:60px; }

    /* sections / forms */
    .cost{ padding:16px; }
    .glossary-toggle,.packlist-toggle,.tracker-head,.emergency-toggle{ padding:13px 14px; }

    /* trip editor: single-column form, taller sheet */
    .ed-overlay{ padding:0; }
    .ed-panel{ max-width:none; max-height:100vh; height:100vh; border-radius:0; }
    .ed-grid{ grid-template-columns:1fr; }
  }

  @media(max-width:560px){
    /* ≥16px stops iOS from zooming into focused fields */
    input,select,textarea{ font-size:16px!important; }
  }

  /* ════════════════════════════════════════════════════════════
     REDESIGN LAYER — calm travel companion. Itinerary first, one
     obvious action per stop, reference material in tinted groups.
     Placed last so it wins over the layers above.
     ════════════════════════════════════════════════════════════ */
  :root{ --tint-prep:#e7eeeb; --tint-money:#e8ecf1; --star:#d39a2c; }
  body{ background:var(--paper); background-image:none; }

  /* hero: calmer, shorter, trip actions behind one menu */
  header.hero{ overflow:visible; z-index:600; }
  header.hero::after{ display:none; }
  .hero-inner{ padding-top:16px; padding-bottom:28px; }
  .tripbar{ display:flex; flex-wrap:nowrap; gap:8px; margin-bottom:22px; position:relative; z-index:5; }
  .trip-select{ min-width:0; flex:0 1 auto; text-overflow:ellipsis; }
  .menu{ position:relative; margin-left:auto; flex:0 0 auto; }
  .menu summary{ list-style:none; cursor:pointer; user-select:none; }
  .menu summary::-webkit-details-marker{ display:none; }
  .menu[open] summary{ background:rgba(255,255,255,.22); }
  .menu-pop{ position:absolute; right:0; top:calc(100% + 8px); z-index:10; min-width:240px; background:var(--card); color:var(--ink); border:1px solid var(--line); border-radius:14px; padding:6px; box-shadow:0 22px 44px -18px rgba(0,0,0,.5); }
  .menu-pop button{ display:flex; align-items:center; gap:10px; width:100%; text-align:left; font:inherit; font-size:.92rem; font-weight:600; color:var(--ink); background:none; border:none; border-radius:9px; padding:11px 12px; cursor:pointer; }
  .menu-pop button:hover{ background:var(--paper2); }
  .menu-pop hr{ border:none; border-top:1px solid var(--line); margin:4px 8px; }
  .menu-pop hr:has(+ #reset-checks-btn[style*="none"]){ display:none; }
  h1{ font-size:clamp(2.1rem,5vw,3.6rem); text-shadow:none; margin:.2em 0 .14em; }
  .kicker{ font-size:.68rem; letter-spacing:.26em; }
  .sub{ font-size:1rem; color:#cfdcd7; }
  .hero-stats{ display:flex!important; flex-wrap:wrap; gap:6px 22px; border:none; padding:0; margin-top:16px; }
  .hero-stats .stat{ border:none!important; padding:0!important; display:flex; align-items:baseline; gap:6px; }
  .stat .n{ font-size:1.3rem!important; }
  .stat .l{ margin:0; font-size:.68rem!important; letter-spacing:.1em!important; }
  .progress-pill{ margin-top:18px; }
  .flights{ margin-top:16px; }

  /* wide screens: flights sit beside the title so the itinerary starts sooner */
  @media(min-width:920px){
    .hero-inner{ display:grid; grid-template-columns:minmax(0,1fr) minmax(320px,440px); column-gap:40px; align-items:start; padding-bottom:24px; }
    .hero-inner > *{ grid-column:1; }
    .hero-inner > .tripbar{ grid-column:1 / -1; margin-bottom:10px; }
    .hero-inner > .flights{ grid-column:2; grid-row:2 / span 5; align-self:end; flex-direction:column; margin:0; }
    .hero-inner > .flights .flt{ flex:0 0 auto; }
    h1{ font-size:clamp(2.2rem,4vw,3.2rem); }
    .hero-inner > .sub{ margin:.3em 0 0; }
    .hero-inner > .progress-pill{ justify-self:start; }
    .listcol .group{ margin-right:0; }   /* keep a gutter between the tint and the map */
    .layout{ column-gap:24px; }
  }

  /* sticky filter bar: match the cool paper, not beige */
  .controls{ background:rgba(241,243,244,.94); }

  /* section titles + tinted groups: major sections read at a glance */
  .sec-title{ font-family:"Fraunces",serif; font-weight:600; font-size:1.7rem; letter-spacing:-.01em; margin:22px 0 4px; color:var(--ink); }
  .group{ margin:44px -14px 0; padding:4px 14px 16px; border-radius:22px; }
  .group .sec-title{ margin:16px 2px 12px; }
  .g-prep{ background:var(--tint-prep); }
  .g-money{ background:var(--tint-money); }
  .group .glossary,.group .packlist,.group .rednote-callout,.group .cost,.group .tracker{ margin:0 0 10px; }
  .emergency{ margin:28px 0; box-shadow:none; }

  /* collapsible rows: one light, consistent pattern with an icon tile */
  .packlist-toggle,.glossary-toggle{ background:var(--card); color:var(--ink); border:1px solid var(--hair); border-radius:16px; box-shadow:none; }
  .packlist-toggle:hover,.glossary-toggle:hover{ background:#fff; }
  .packlist-toggle .pl-sub,.packlist-toggle .pl-arrow{ color:var(--ink-soft); }
  .packlist-toggle .pl-progress{ color:var(--amber-d); background:rgba(47,125,118,.1); padding:3px 9px; border-radius:999px; }
  .packlist-toggle > span:first-child,.glossary-toggle > span:first-child,.tracker-head > span:first-child,.emergency-toggle > span:first-child,.rn-icon{
    flex:0 0 38px; width:38px; height:38px; border-radius:11px; display:grid; place-items:center; background:var(--paper2); font-size:1.15rem!important; line-height:1; }
  .tracker{ border-color:var(--hair); box-shadow:none; }
  .emergency-toggle > span:first-child{ background:rgba(192,57,43,.1); }

  /* research callout → collapsed by default */
  .rednote-callout{ display:block; padding:0; background:var(--card); border:1px solid var(--hair); border-radius:16px; }
  .rednote-callout summary{ display:flex; align-items:center; gap:12px; padding:13px 16px; cursor:pointer; list-style:none; }
  .rednote-callout summary::-webkit-details-marker{ display:none; }
  .rn-title{ color:var(--ink); margin:0; font-size:1.05rem; }
  .rn-arrow{ margin-left:auto; color:var(--ink-soft); font-size:.85rem; transition:transform .2s; }
  .rednote-callout details[open] .rn-arrow{ transform:rotate(180deg); }
  .rn-body{ padding:0 18px 16px 66px; font-size:.9rem; }

  /* map toggle: secondary, not a heavy dark pill */
  .map-toggle-btn{ background:var(--card); color:var(--ink); border:1px solid var(--line); box-shadow:none; }

  /* day header: one calm block — day, date, weather, then where + route */
  .daysec{ margin-bottom:30px; }
  .dayhead{ display:block; border:none; padding:24px 0 8px; margin:0; }
  .dh-top{ display:flex; align-items:center; gap:6px 12px; flex-wrap:wrap; }
  .dayhead .tag{ font-size:1.55rem; color:var(--day); }
  .dayhead .tag::after{ display:none; }
  .dayhead .datestr{ margin:0; font-size:.88rem; letter-spacing:0; color:var(--ink-soft); font-weight:600; }
  .dayhead .where{ font-size:1.02rem; letter-spacing:0; text-transform:none; color:var(--ink); font-weight:600; margin-top:2px; }
  .day-weather{ margin:0 0 0 auto; padding:4px 11px; border-radius:999px; background:var(--card); border:1px solid var(--hair); font-size:.8rem; flex-wrap:nowrap; }
  .day-weather .dw-tag{ display:none; }
  .driveline{ display:block; background:none!important; border:none; border-left:3px solid var(--day); border-radius:0; padding:2px 0 2px 12px; margin:10px 0 0; color:var(--ink-soft); font-weight:500; font-size:.86rem; line-height:1.5; }
  .daynote-wrap{ margin:4px 0 12px; }
  .daynote-wrap summary{ display:inline-flex; gap:6px; cursor:pointer; list-style:none; font-size:.84rem; font-weight:700; color:var(--amber-d); padding:6px 0; }
  .daynote-wrap summary::-webkit-details-marker{ display:none; }
  .daynote-wrap[open] summary{ margin-bottom:6px; }

  /* stop card: number · name · time, short blurb, one action row */
  .card{ display:block; padding:14px 16px 12px 20px; border:1px solid var(--hair); box-shadow:inset 4px 0 0 var(--cat); }
  .card:hover{ transform:none; box-shadow:inset 4px 0 0 var(--cat),0 10px 26px -18px rgba(20,40,40,.45); border-color:var(--hair); }
  .card.lit{ box-shadow:inset 4px 0 0 var(--cat),0 0 0 2px var(--amber); }
  .card.done{ opacity:1; background:#f3f5f5; }
  .card.done .nm,.card.done .blurb,.card.done .row1{ opacity:.55; }
  .c-head{ display:flex; gap:12px; align-items:flex-start; }
  .c-num{ flex:0 0 32px; height:32px; border-radius:50%; background:var(--cat); color:#fff; display:grid; place-items:center; font-family:"Fraunces",serif; font-weight:600; font-size:.95rem; margin-top:1px; }
  .card.done .c-num{ background:var(--moss); }
  .c-title{ flex:1; min-width:0; }
  .nm{ margin:2px 0 4px; font-size:1.12rem; }
  .row1{ gap:3px 10px; margin:0; font-size:.8rem; }
  .row1 .rc{ color:var(--ink-soft); font-weight:500; }
  .rate .st{ color:var(--star); }
  .slot{ display:block; background:none; color:var(--amber-d); box-shadow:none; font-size:.7rem; letter-spacing:.08em; padding:0; margin:4px 0 2px; white-space:normal; }
  .conflict{ margin:10px 0 0; }
  .blurb{ margin:10px 0 0; font-size:.9rem; }
  .card:not(.expanded) .more{ display:none; }
  .card:not(.expanded) .blurb{ display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
  .more{ margin-top:12px; padding-top:12px; border-top:1px dashed var(--line); }
  .more .tip{ margin:0 0 10px; }
  .foot{ gap:8px 18px; }
  .linkbtn,.foot .log-pay-btn{ background:none; border:none; font:inherit; font-size:.79rem; font-weight:700; color:var(--amber-d); padding:0; cursor:pointer; }
  .c-actions{ display:flex; gap:8px; margin-top:12px; align-items:center; }
  .c-actions .cbtn{ font-family:inherit; font-size:.84rem; font-weight:700; letter-spacing:0; border-radius:10px; padding:8px 14px; min-height:40px; display:inline-flex; align-items:center; justify-content:center; gap:6px; cursor:pointer; text-decoration:none; border:1.5px solid var(--line); background:var(--card); color:var(--ink); white-space:nowrap; }
  .c-actions .cbtn.primary{ background:var(--amber); border-color:var(--amber); color:#fff; }
  .c-actions .cbtn.primary:hover{ background:var(--amber-d); }
  .c-actions .checkbtn.on{ background:rgba(95,122,114,.16); border-color:var(--moss); color:#3f5650; }
  .c-actions .cbtn.ghost{ border-color:transparent; background:none; color:var(--amber-d); margin-left:auto; padding-right:4px; }

  /* cost: answer first, inputs on demand */
  .cost-total{ margin-top:6px; padding-top:4px; border-top:none; }
  .cost-edit{ margin:12px 0 4px; }
  .cost-edit summary{ display:inline-flex; cursor:pointer; list-style:none; font-weight:700; font-size:.86rem; color:#9fd3cb; padding:6px 0; }
  .cost-edit summary::-webkit-details-marker{ display:none; }
  .cost-edit[open] summary{ margin-bottom:8px; }

  @media(max-width:560px){
    .hero-inner{ padding-top:14px; padding-bottom:22px; }
    .menu-lbl{ display:none; }
    .controls-row2 .chips{ grid-column:1 / -1; }
    .pl-sub,.gl-sub,.tr-sub{ display:none!important; }
    .rn-body{ padding:0 16px 16px; }
    .day-weather .dw-note{ display:none; }
    .card{ padding:13px 14px 12px 18px; }
    #scrolltop{ display:none!important; }   /* bottom nav covers jumping around */
    .c-actions .cbtn:not(.ghost){ flex:1; }
    .sec-title{ font-size:1.5rem; }
    .flt .arrow{ display:none; }
    .flt{ padding:10px 12px; }
  }

  /* ── Sync: header pill + panel ── */
  .sync-pill{ margin-left:auto; flex:0 0 auto; }
  .tripbar .menu{ margin-left:0; }
  .sync-pill[data-state="ok"]{ border-color:rgba(159,211,203,.6); }
  .sync-pill[data-state="error"],.sync-pill[data-state="missing"],.sync-pill[data-state="offline"]{ border-color:rgba(240,180,120,.7); color:#ffe2c4; }
  #sync-overlay{ padding:16px!important; }
  .sync-panel{ max-width:480px; height:auto!important; max-height:90vh!important; border-radius:16px!important; }
  #sync-body{ padding:18px; }
  .sy-lead{ margin:0 0 14px; line-height:1.5; }
  .sy-note{ font-size:.8rem; color:var(--ink-soft); line-height:1.45; }
  p.sy-note{ margin:14px 0 0; }
  .sy-lbl{ display:block; font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-soft); font-weight:700; margin:0 0 6px; }
  .sy-row{ display:flex; gap:8px; }
  .sy-row input{ flex:1; min-width:0; font:inherit; font-size:.9rem; padding:10px 12px; border:1.5px solid var(--line); border-radius:10px; background:var(--card); color:var(--ink); }
  .sy-row input:focus{ outline:none; border-color:var(--amber); }
  .sy-wide{ width:100%; padding:12px; margin-top:10px; }
  .sy-or{ display:flex; align-items:center; gap:10px; margin:20px 0 12px; font-size:.78rem; color:var(--ink-soft); }
  .sy-or::before,.sy-or::after{ content:""; flex:1; border-top:1px solid var(--line); }
  .sy-actions{ display:flex; gap:8px; margin-top:16px; flex-wrap:wrap; }
  .ed-btn.ghost-dark{ background:var(--card); color:var(--ink); border-color:var(--line); }
  .sy-state{ font-weight:700; color:var(--amber-d); white-space:nowrap; }
  .sy-state[data-state="error"],.sy-state[data-state="missing"],.sy-state[data-state="offline"]{ color:#b4541f; }
  @media(max-width:560px){ .sync-pill{ padding:8px 12px; font-size:.78rem; } }
