:root{
  --ink:#22302a; --moss:#3f5b45; --moss-soft:#e7eee6; --rose:#a8574e; --rose-soft:#f6e7e3;
  --sand:#f4efe6; --paper:#fffdf9; --line:#e2dbcd; --muted:#6b7068; --gold:#9a7a2e; --gold-soft:#f5edd8;
  --sky:#e6edf2; --sky-ink:#3c5566; --warn:#8a5a12; --warn-soft:#fbf1dc;
  --serif:"Lora",Georgia,serif; --sans:"Inter",system-ui,-apple-system,sans-serif;
}
*{box-sizing:border-box}
html{background:var(--sand);-webkit-text-size-adjust:100%}
body{margin:0 auto;max-width:640px;min-height:100vh;background:var(--paper);color:var(--ink);font:15px/1.5 var(--sans);padding-bottom:calc(40px + env(safe-area-inset-bottom))}
a{color:var(--moss)}
button{font:inherit;color:inherit}
.loading{padding:60px 20px;text-align:center;color:var(--muted)}

/* top bar */
.bar{position:sticky;top:0;z-index:10;background:rgba(255,253,249,.96);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--line);padding:calc(10px + env(safe-area-inset-top)) 16px 0}
.bar .row1{display:flex;align-items:center;gap:10px;min-height:34px}
.bar .back{border:0;background:var(--moss-soft);color:var(--moss);border-radius:16px;padding:5px 11px;font-size:13px;font-weight:600;text-decoration:none}
.bar h1{font:500 19px/1.2 var(--serif);margin:0;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar .dates{font-size:12px;color:var(--muted);white-space:nowrap}
.tabs{display:flex;gap:6px;overflow-x:auto;padding:10px 0 10px;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tabs a{flex:0 0 auto;font-size:13px;font-weight:600;text-decoration:none;color:var(--moss);background:var(--moss-soft);padding:6px 13px;border-radius:16px}
.tabs a.on{background:var(--moss);color:#fff}
.tabs a.today:not(.on){box-shadow:inset 0 0 0 1.5px var(--moss)}

main{padding:14px 16px}
.kicker{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--rose);font-weight:700}
h2{font:500 22px/1.25 var(--serif);margin:4px 0 2px}
.sub{font:italic 15px/1.45 var(--serif);color:var(--muted);margin:0 0 12px}
.sec{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-weight:700;margin:22px 0 8px}

/* brief */
.brief{background:var(--sky);border-radius:14px;padding:12px 14px;margin:6px 0 14px;color:var(--sky-ink)}
.brief .top{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.brief .lab{font-size:11px;letter-spacing:.18em;text-transform:uppercase;font-weight:700}
.brief .upd{font-size:11px;opacity:.8}
.brief .temps{font:500 26px/1.1 var(--serif);color:var(--ink);margin:6px 0 2px}
.brief .temps small{font:14px var(--sans);color:var(--sky-ink);margin-left:6px}
.brief .facts{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:13px;margin-top:4px}
.brief .facts b{color:var(--ink);font-weight:600}
.hours{display:flex;gap:6px;overflow-x:auto;margin:10px -2px 0;padding-bottom:2px;scrollbar-width:none}
.hours::-webkit-scrollbar{display:none}
.hours div{flex:0 0 auto;background:rgba(255,255,255,.6);border-radius:10px;padding:5px 8px;text-align:center;font-size:12px;min-width:50px}
.hours div b{display:block;font-size:14px;color:var(--ink)}
.hours div.rain{background:#fff;box-shadow:inset 0 0 0 1.5px var(--sky-ink)}
.brief .plan{font-size:13px;margin-top:6px}
.notes{margin:0 0 14px;display:grid;gap:8px}
.note{border-radius:12px;padding:10px 13px;font-size:14px;line-height:1.45}
.note b{display:block;font-size:13px;margin-bottom:2px}
.note.warn{background:var(--warn-soft);border-left:4px solid var(--gold);color:#4a3c18}
.note.info{background:var(--paper);border:1px solid var(--line);border-left:4px solid var(--sky-ink)}
.note.claude{background:var(--moss-soft);border-left:4px solid var(--moss);color:#2f4734}
.note .fine{display:block;font-size:12px;opacity:.75;margin-top:4px}

/* timeline */
.tl{position:relative;margin:4px 0 0;padding-left:66px}
.tl:before{content:"";position:absolute;left:57px;top:6px;bottom:6px;width:2px;background:var(--line)}
.it{position:relative;margin:0 0 10px}
.it .tm{position:absolute;left:-66px;width:50px;text-align:right;top:9px;font:500 13px/1.2 var(--serif);font-style:italic;color:var(--rose)}
.it:before{content:"";position:absolute;left:-13px;top:12px;width:10px;height:10px;border-radius:50%;background:var(--paper);border:2px solid var(--moss);z-index:1}
.it .card{display:block;width:100%;text-align:left;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:9px 12px}
.it .hd{cursor:pointer;outline:none}
.it .hd:focus-visible{box-shadow:0 0 0 2px var(--moss);border-radius:6px}
.it .ttl{font-weight:600;font-size:15px;line-height:1.3}
.it .meta{font-size:12.5px;color:var(--muted);margin-top:2px;display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center}
.it .body{display:none;font-size:14px;margin-top:8px;color:#3b4740}
.it.open .body{display:block}
.it .body p{margin:0 0 6px}
.it .why{color:#4f5a53}
.it .why b{color:var(--ink)}
.it .alt{background:var(--sand);border-left:3px solid var(--gold);padding:6px 10px;border-radius:0 8px 8px 0;font-size:13.5px}
.it .baby{color:#7a4b45}
.it .check{color:var(--warn);font-size:13px}
.it .acts{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}
.it .acts a{font-size:13px;font-weight:600;text-decoration:none;color:#fff;background:var(--moss);padding:6px 12px;border-radius:16px}
.it .acts a.ghost{background:var(--moss-soft);color:var(--moss)}
.it.past .card{background:transparent;border-style:dashed;padding:6px 12px}
.it.past .ttl{font-weight:500;color:var(--muted);font-size:14px}
.it.past .meta > :not([class*="st-"]):not(.notechip){display:none}
.it.past .meta:empty{display:none}
.it.skipped .ttl{text-decoration:line-through;color:var(--muted);font-weight:500}
.it.skipped:not(.past) .card{background:transparent;border-style:dashed}
.chip.st-loved{background:var(--moss);color:#fff}
.chip.st-meh{background:#ece8df;color:#5d5a52}
.chip.st-skipped{background:#ece8df;color:#5d5a52}
.chip.notechip,.chip.st-note{background:var(--sky);color:var(--sky-ink)}
.chip.st-ok{background:var(--gold-soft);color:var(--gold)}
.chip[class*="st-"]{text-transform:none;letter-spacing:0}
.takes{display:grid;gap:8px;margin-bottom:10px}
.take{background:var(--sand);border-radius:10px;padding:8px 11px;font-size:14px;margin-top:6px}
.take .who,.box .who{font-weight:700;font-size:13px;color:var(--ink)}
.take .who .chip{margin-left:4px}
.take p{margin:4px 0 0}
.mylab{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--moss);margin:10px 0 6px}
.recap .mylab{margin-top:14px}
.by{color:var(--muted);font-size:13px}
.tally .pn{font-weight:700;min-width:64px}
.sheet .else{display:block;width:100%;margin-top:10px;border:1.5px solid var(--line);background:var(--paper);border-radius:12px;padding:10px;font-weight:600;cursor:pointer}
.log{margin-top:12px;padding-top:10px;border-top:1px dashed var(--line)}
.stbtns{display:flex;gap:6px;flex-wrap:wrap}
.stbtns button{border:1.5px solid var(--line);background:var(--paper);border-radius:16px;padding:6px 11px;font-size:13px;font-weight:600;color:var(--ink);cursor:pointer}
.stbtns button.on{border-color:var(--moss);background:var(--moss);color:#fff}
.stbtns button[data-st="skipped"].on,.stbtns button[data-st="meh"].on{border-color:#5d5a52;background:#5d5a52}
.log textarea,.recap textarea{display:block;width:100%;margin-top:8px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;font:15px/1.4 var(--sans);color:var(--ink);background:#fff;resize:vertical}
.log textarea:focus,.recap textarea:focus{outline:none;border-color:var(--moss)}
.logfoot{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:6px}
.logfoot .saved{font-size:12px;color:var(--muted)}
.logfoot button{border:0;background:var(--moss-soft);color:var(--moss);font-size:13px;font-weight:600;padding:6px 12px;border-radius:16px;cursor:pointer}
.tip,.hint{font-size:13px;color:var(--muted);margin:4px 0 0}
.recap{background:var(--sand);border-radius:14px;padding:12px 14px}
.recap label{display:block;font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--moss);margin-top:10px}
.recap .auto{font-size:14px;display:grid;gap:3px;margin-top:4px}
.recap .auto b{color:var(--ink)}
.note.recaplink{display:block;text-decoration:none}
.tally{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:14px;margin:4px 0 4px}
.tally b{font:500 20px var(--serif)}
.box p{margin:0 0 6px}
.box .a,.fav .a{font-size:12px;color:var(--muted)}
.sheet{position:fixed;inset:0;background:rgba(34,48,42,.45);display:flex;align-items:flex-end;justify-content:center;z-index:30}
.sheet-in{background:var(--paper);width:100%;max-width:640px;border-radius:18px 18px 0 0;padding:18px 18px calc(22px + env(safe-area-inset-bottom))}
.sheet-in p{font-size:14px;color:var(--muted);margin:4px 0 12px}
.who{display:flex;gap:10px}
.who button{flex:1;border:0;background:var(--moss);color:#fff;font-weight:600;font-size:16px;padding:12px;border-radius:12px;cursor:pointer}
.it.past:before{background:var(--moss);border-color:var(--moss);width:8px;height:8px;left:-12px;top:11px}
.it.past .tm{color:var(--muted)}
.it.now .card{border:2px solid var(--moss);box-shadow:0 2px 10px rgba(63,91,69,.12)}
.it.next .card{border:2px solid var(--rose)}
.it.booked .card{border-left:4px solid var(--moss)}
.chip{display:inline-block;font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:2px 8px;border-radius:10px;background:var(--gold-soft);color:var(--gold)}
.chip.ok{background:var(--moss-soft);color:var(--moss)}
.chip.ask{background:var(--rose-soft);color:var(--rose)}
.chip.now{background:var(--moss);color:#fff}
.chip.next{background:var(--rose);color:#fff}
.chip.wx{background:var(--sky);color:var(--sky-ink);text-transform:none;letter-spacing:0;font-weight:600}
.chip.wx.rain{background:var(--warn-soft);color:var(--warn)}
.nowline{position:relative;margin:2px 0 12px;height:22px}
.nowline:before{content:"";position:absolute;left:-14px;right:0;top:10px;border-top:2px solid var(--rose)}
.nowline span{position:absolute;left:-66px;top:2px;width:50px;text-align:right;font-size:11px;font-weight:700;color:var(--rose);background:var(--paper)}
.nowline em{position:absolute;right:0;top:0;font-style:normal;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--rose);background:var(--paper);padding-left:6px}
.earlier{display:block;margin:0 0 10px -66px;width:calc(100% + 66px);border:0;background:none;color:var(--muted);font-size:13px;text-align:left;padding:4px 0;cursor:pointer}
.plans .p{background:var(--gold-soft);border-radius:12px;padding:10px 13px;font-size:14px;margin-bottom:8px}
.plans .p.hot{box-shadow:inset 0 0 0 2px var(--gold)}
.plans .p b{color:var(--gold)}
.cost{font-size:13px;color:var(--gold);font-weight:600;margin-top:10px}

/* info */
.bk{border-radius:12px;padding:10px 13px;margin-bottom:8px;background:var(--moss-soft);border-left:4px solid var(--moss)}
.bk.todo{background:var(--rose-soft);border-left-color:var(--rose)}
.bk .t{font-weight:600}
.bk .d{font-size:13.5px;color:#3b4740;margin-top:2px}
.bk .acts{margin-top:6px;display:flex;gap:8px}
.bk .acts a{font-size:12.5px;font-weight:600;text-decoration:none;background:#fff;color:var(--moss);padding:4px 10px;border-radius:14px}
.todo label{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-bottom:1px dashed var(--line);font-size:14px}
.todo input{margin-top:3px;width:18px;height:18px;accent-color:var(--moss);flex:0 0 auto}
.todo input:checked+span{color:var(--muted);text-decoration:line-through}
.fav{padding:8px 0;border-bottom:1px solid var(--line);font-size:14px}
.fav .n{font-weight:600}
.fav .a{font-size:12.5px;color:var(--muted)}
.box{border:1px solid var(--line);border-radius:12px;padding:10px 14px;margin-bottom:10px;font-size:14px}
.box h3{font:500 16px var(--serif);margin:0 0 4px}
.box ul{margin:4px 0 0;padding-left:18px}
.box li{margin-bottom:4px}
.foot{font-size:12px;color:var(--muted);margin-top:18px}
.btn{display:inline-block;font-size:13px;font-weight:600;text-decoration:none;color:#fff;background:var(--moss);padding:8px 14px;border-radius:18px}

/* home */
.trip{display:block;text-decoration:none;color:inherit;border:1px solid var(--line);border-radius:14px;padding:14px;margin-bottom:10px;background:var(--paper)}
.trip.live{border:2px solid var(--moss)}
.trip .n{font:500 19px var(--serif)}
.trip .w{font-size:13px;color:var(--muted)}
.soon{font-size:14px;padding:8px 0;border-bottom:1px dashed var(--line);display:flex;justify-content:space-between;gap:10px}
.soon span{color:var(--muted);font-size:13px;white-space:nowrap}

.offline{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(14px + env(safe-area-inset-bottom));background:var(--ink);color:#fff;font-size:12.5px;padding:7px 14px;border-radius:18px;z-index:20}
.tally{font-size:13px;gap:4px 12px;padding:6px 0;border-bottom:1px dashed var(--line);margin:0}
.tally b{font-size:16px}
.glance div{padding:3px 0}

/* ---- v2: shared structure for every trip ---- */
:root{--heather:#77487c;--heather-soft:#efe4f0;--bracken:#9c5722;--bracken-soft:#f6eadc;--coffee:#2b6f6a;--coffee-soft:#e2efed;--head:#2b3e4c;
  --mp-water:rgba(120,165,195,.38);--mp-green:rgba(110,150,90,.24);--bg-2:#f1ece2;--rule:#e2dbcd}
.tabs a.sect{background:transparent;box-shadow:inset 0 0 0 1.5px var(--moss-soft)}
.tabs a.sect.on{background:var(--moss);box-shadow:none}
.daychips{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.chip.basechip{background:var(--moss-soft);color:var(--moss);text-transform:none;letter-spacing:0}
.chip.drivechip{background:var(--bg-2);color:var(--head);text-transform:none;letter-spacing:0}
.chip.daytag{background:var(--paper);border:1px solid var(--line);color:#3b4740;text-transform:none;letter-spacing:0;font-weight:600}
.chip.webchip{background:var(--heather-soft);color:var(--heather);text-transform:none;letter-spacing:0}
.chip.questchip{background:var(--bracken-soft);color:var(--bracken);text-transform:none;letter-spacing:0}
.chip.photochip{background:var(--sky);color:var(--sky-ink);text-transform:none;letter-spacing:0}
.it.optional .card{border:1.5px dashed var(--bracken);background:var(--bracken-soft)}
.it.optional:before{border-color:var(--bracken);border-style:dashed}
.it.webit .card{border-color:#cdb7cf}
.it.photoit .card{border-style:dotted}
.it.notime:before{width:6px;height:6px;left:-11px;top:14px;background:var(--line);border:0}
.it.notime .card{margin-left:0}
.about{margin:8px 0 2px;padding-left:10px;border-left:2px solid var(--line)}
.about p{margin:4px 0;font-size:13.5px;line-height:1.5;color:#3b4740}
.about i.ab{display:inline-block;font-style:normal;font-size:10.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--moss);margin-right:7px}
.it.optional .about{border-left-color:var(--bracken)} .it.optional .about i.ab{color:var(--bracken)}
i.t{font-family:var(--serif);font-weight:500;color:var(--rose)}
.chain{list-style:none;margin:8px 0 0;padding:0}
.chain li{position:relative;padding:0 0 10px 22px;font-size:14px}
.chain li:before{content:"";position:absolute;left:3px;top:6px;width:10px;height:10px;border-radius:50%;background:var(--heather)}
.chain li:after{content:"";position:absolute;left:7px;top:18px;bottom:0;width:2px;background:var(--line)}
.chain li:last-child:after{display:none}
.chain .hop{display:block;font-size:11.5px;font-weight:600;color:var(--muted);margin:-2px 0 2px}
.smeta{color:var(--muted);font-size:13px}
.subweb{margin-top:8px;padding:8px 10px;border-radius:10px;background:var(--heather-soft)}
.photo{font-size:13.5px;background:var(--sky);border-radius:8px;padding:6px 10px;color:var(--sky-ink)}
/* cards */
.bkcard{margin:0 0 10px;border:1px solid var(--bracken);border-left:4px solid var(--bracken);border-radius:10px;background:var(--bracken-soft);padding:10px 13px;font-size:14px}
.bkcard.st-confirmed{border-color:var(--moss);background:var(--moss-soft)}
.bkcard.st-waiting{border-color:var(--heather);background:var(--heather-soft)}
.bkcard.st-charge{border-color:var(--head);background:#e6ecf0}
.bkcard.st-info{border-color:var(--line);background:var(--paper)}
.bk-top{font-size:12.5px;color:#3b4740;margin-bottom:6px}
.bk-top b{font-size:14px;color:var(--ink)}
.bkcard.st-confirmed .bk-top:before{content:"✓ ";color:var(--moss);font-weight:700}
.bkcard.st-todo .bk-top:before{content:"○ ";color:var(--bracken);font-weight:700}
.bkcard.st-charge .bk-top:before{content:"⚡ "}
.bk-grid{display:grid;grid-template-columns:1fr;gap:6px}
.bk-grid span{display:block;font-size:11px;color:var(--muted);font-weight:700;letter-spacing:.04em}
.bk-grid b{font-weight:500;color:var(--ink);font-size:13.5px}
.priv:before{content:"🔒 ";font-size:11px}
.bkcard .acts{margin-top:8px;display:flex;gap:8px}
.bkcard .acts a{font-size:12.5px;font-weight:600;text-decoration:none;background:#fff;color:var(--moss);padding:4px 10px;border-radius:14px}
/* coffee + eat */
.cafes{margin:18px 0 10px;border:1px solid var(--coffee);border-radius:12px;background:var(--coffee-soft);padding:12px 14px 6px}
.cafes h3,.localeat h3{margin:0;font:500 17px var(--serif)}
.cf-sub,.le-sub{font-size:12.5px;color:var(--muted);margin:2px 0 6px}
.cafes ul,.localeat ul{margin:0;padding:0;list-style:none}
.cafes li{padding:9px 0 6px;border-top:1px solid #bcd6d2}
.cf-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px}
.cf-name{font-weight:700;color:var(--ink);text-decoration:none}
.cf-badge{display:inline-block;padding:1px 7px;border:1px solid var(--line);border-radius:999px;font-size:11px;font-weight:600;color:var(--muted)}
.cf-badge.cf-award{border-color:var(--coffee);color:var(--coffee)} .cf-badge.cf-sel{border-color:var(--coffee);color:var(--coffee);border-style:dashed}
.cf-when{display:block;font-size:12px;font-weight:600;color:var(--coffee);margin-top:3px}
.cafes .about{border-left-color:var(--coffee)} .cafes .about i.ab{color:var(--coffee)}
.cf-keyd summary{font-size:12px;color:var(--coffee);cursor:pointer;margin-bottom:4px}
.cf-key,.cf-miss{font-size:12.5px;color:var(--muted);margin:2px 0 8px}
.localeat{margin:12px 0;border:1px solid var(--moss);border-radius:12px;background:var(--moss-soft);padding:12px 14px 8px}
.localeat li{font-size:14px;line-height:1.5;padding:7px 0;border-top:1px solid #c6d4c3}
.localeat .where{display:block;font-size:12px;font-weight:600;color:var(--moss);margin-top:2px}
/* maps */
.daymap{margin:6px 0 14px;border:1px solid var(--line);border-radius:12px;background:var(--paper)}
.daymap summary{cursor:pointer;list-style:none;padding:10px 14px;font-weight:600;font-size:14px;display:flex;gap:8px;align-items:center}
.daymap summary::-webkit-details-marker{display:none}
.daymap summary:after{content:"＋";margin-left:auto;color:var(--muted)} .daymap[open] summary:after{content:"－"}
.dm-count{font-size:12px;font-weight:500;color:var(--muted)}
.dm-body{padding:0 14px 12px}
.mp-fig{margin:6px 0 12px} .mp-fig figcaption{font-size:13px;color:var(--muted);margin:0 0 5px} .mp-fig figcaption b{color:var(--head)}
.mapsvg{display:block;width:100%;height:auto}
.mp-bg{fill:var(--bg-2);stroke:var(--rule);stroke-width:1}.mp-water{fill:var(--mp-water)}.mp-green{fill:var(--mp-green)}
.mp-river{fill:none;stroke:var(--mp-water);stroke-linecap:round}.mp-road{fill:none;stroke:var(--line);opacity:.65}.mp-rail{fill:none;stroke:var(--muted);stroke-dasharray:1 3;opacity:.7}
.mp-city{fill:var(--muted)}.mp-lbl{font:600 9.5px var(--sans);fill:var(--muted);paint-order:stroke;stroke:var(--bg-2);stroke-width:3px;stroke-linejoin:round}
.mp-num{font:700 10.5px var(--sans);fill:#fff}.mp-pin{stroke:#fff;stroke-width:1.6}
.mp-pin-main{fill:var(--heather)}.mp-pin-quest{fill:var(--bracken)}.mp-pin-charge{fill:var(--head)}.mp-pin-stay{fill:var(--moss)}.mp-pin-meal{fill:var(--ink)}.mp-pin-backup{fill:var(--muted)}.mp-pin-coffee{fill:var(--coffee)}
.mp-path{fill:none;stroke:var(--heather);stroke-width:2;stroke-dasharray:5 4;opacity:.85}.mp-path-drive{fill:none;stroke:var(--bracken);stroke-width:2.6;opacity:.85}
.mp-path-quest{fill:none;stroke:var(--bracken);stroke-width:2;stroke-dasharray:2 4}.mp-path-bus{fill:none;stroke:var(--muted);stroke-width:2;stroke-dasharray:1 4}
.mp-leader{stroke:var(--muted);stroke-width:1}.mp-true{fill:var(--ink)}.mp-scale{stroke:var(--muted);stroke-width:1.5}
.mp-legend{font-size:11.5px;color:var(--muted);margin:2px 0 10px;line-height:2}
.lg{display:inline-block;width:10px;height:10px;border-radius:50%;margin:0 4px 0 8px;vertical-align:-1px}.lg:first-child{margin-left:0}
.lg-main{background:var(--heather)}.lg-quest{background:var(--bracken)}.lg-charge{background:var(--head)}.lg-stay{background:var(--moss)}.lg-meal{background:var(--ink)}.lg-backup{background:var(--muted)}.lg-coffee{background:var(--coffee)}
.lg-line{display:inline-block;width:20px;margin:0 4px 0 8px;vertical-align:3px;border-top:2px dashed var(--heather)}.lg-drive{border-top:3px solid var(--bracken)}.lg-bus{border-top:2px dotted var(--muted)}
.dm-routes{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 10px}
.dm-btn{display:inline-block;padding:8px 12px;border:1px solid var(--heather);border-radius:999px;color:var(--heather);font-size:13px;font-weight:600;text-decoration:none}
.dm-pins{list-style:none;margin:0;padding:0}.dm-pins li{display:flex;gap:10px;padding:7px 0;border-top:1px solid var(--line);font-size:14px}
.dm-n{flex:0 0 1.5em;font-weight:700;color:var(--heather)}.dm-pins a{color:var(--ink);font-weight:600;text-decoration:underline dotted}
.dm-meta{color:var(--muted);font-size:13px}.dm-tag{display:inline-block;margin-left:6px;padding:0 6px;border:1px solid var(--line);border-radius:999px;font-size:10.5px;text-transform:uppercase;font-weight:700;color:var(--muted)}
.dm-note{margin:8px 0 0;font-size:12px;color:var(--muted)}
/* trip overview */
.status{background:var(--bracken-soft);border:1px solid var(--bracken);border-radius:10px;padding:10px 13px;font-size:13.5px;color:var(--bracken);font-weight:600;margin:4px 0 12px}
.route{display:flex;align-items:flex-start;gap:4px;overflow-x:auto;padding:4px 0 8px}
.rstop{flex:0 0 auto;text-align:center;min-width:70px}.rstop .pin{width:14px;height:14px;border-radius:50%;background:var(--heather);margin:3px auto 6px;box-shadow:0 0 0 4px var(--heather-soft)}
.rstop.open .pin{background:transparent;border:2px dashed var(--bracken);box-shadow:none}
.rstop b{display:block;font:500 15px var(--serif)}.rstop span{display:block;font-size:11.5px;color:var(--muted)}
.leg{flex:1 0 48px;text-align:center;font-size:11px;color:var(--muted);font-weight:600;padding-top:2px}.leg:before{content:"";display:block;height:2px;background:var(--line);margin:8px 0 6px}
.rules{display:grid;gap:8px}.rule{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:10px 13px;font-size:13.8px}
.rule b{display:block;font-size:14px;margin-bottom:2px}.rule p{margin:0;color:#3b4740}
/* bookings order + notes */
.border{display:grid;gap:8px}.bo{border:1px solid var(--line);border-radius:10px;padding:9px 12px;font-size:14px;background:var(--paper)}
.bo-when{font-size:12.5px;color:var(--muted);margin-top:2px}.bo-why{font-size:13.5px;margin-top:3px;color:#3b4740}
.pill{display:inline-block;font-size:11px;font-weight:700;padding:1px 8px;border-radius:999px;background:var(--bracken-soft);color:var(--bracken);border:1px solid var(--bracken);margin-right:4px}
.pill.done{background:var(--moss-soft);color:var(--moss);border-color:var(--moss)}.pill.wait{background:var(--heather-soft);color:var(--heather);border-color:var(--heather)}
.ncard{background:var(--paper);border:1px solid var(--line);border-left:3px solid var(--line);border-radius:10px;padding:10px 13px;margin-bottom:8px;font-size:14px}
.ncard.warn{border-left-color:var(--bracken)}.ncard.flag{border-left-color:var(--heather)}.ncard p{margin:3px 0 0;color:#3b4740}
/* street maps, location and check-ins (UK update) */
.dm-street{margin:2px 0 8px}
.dm-lmap{height:min(62vh,380px);border-radius:10px;border:1px solid var(--line);background:#ebe6dc;z-index:0}
.dm-fail{display:none;font-size:13px;color:var(--muted);margin:4px 0}.dm-street.failed .dm-lmap{display:none}.dm-street.failed .dm-fail{display:block}
.lpin{background:none;border:0}
.lp{display:flex;align-items:center;justify-content:center;width:26px;height:26px;box-sizing:border-box;border-radius:50%;border:2px solid #fff;color:#fff;font:700 12px/1 var(--sans);box-shadow:0 1px 3px rgba(0,0,0,.35);background:var(--heather)}
.lp-main{background:var(--heather)}.lp-quest{background:var(--bracken)}.lp-charge{background:var(--head)}.lp-stay{background:var(--moss)}.lp-meal{background:var(--ink)}.lp-backup{background:var(--muted)}.lp-coffee{background:var(--coffee)}.lp-added{background:var(--rose)}
.lp.lp-extra{width:20px;height:20px;margin:3px;font-size:10px;opacity:.85}
.lp.lp-skip{background:#bdb8ae;color:#fff;text-decoration:line-through;opacity:.9}
.leaflet-container{font:13px var(--sans)}
.osm-tiles{filter:saturate(.75) contrast(.95)} /* calm OpenStreetMap's colours a little so the pins stand out */
.lpop b{display:block;font-size:14px;color:var(--ink)}.lpop b.skip{text-decoration:line-through;color:var(--muted)}
.lpop span{display:block;color:var(--muted);font-size:12px;margin-top:1px}
.lpop-acts{display:flex;gap:10px;align-items:center;margin-top:8px}
.lpop-acts button{border:0;background:var(--moss);color:#fff;font-weight:600;font-size:13px;padding:6px 11px;border-radius:14px;cursor:pointer}
.lpop-acts a{font-size:12.5px;color:var(--moss)}
.me-dot{fill:#1a73e8;stroke:#fff}.me-ring{fill:#1a73e8;fill-opacity:.12;stroke:#1a73e8;stroke-opacity:.35}
.dm-gps{display:flex;gap:10px;align-items:center;margin:0 0 10px;font-size:12.5px;color:var(--muted);line-height:1.35}
.dm-me{flex:0 0 auto;border:1px solid #1a73e8;background:#fff;color:#1a73e8;border-radius:999px;padding:6px 11px;font-weight:600;font-size:13px;cursor:pointer}
.dm-drawn{margin:2px 0 10px}.dm-drawn summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--muted);padding:4px 0 8px}
.dm-pins button.dm-n{border:0;padding:0;width:22px;height:22px;flex:0 0 22px;border-radius:50%;color:#fff;font:700 11px/22px var(--sans);text-align:center;cursor:pointer}
.dm-pins li.skipped a{text-decoration:line-through;color:var(--muted);font-weight:500}.dm-pins li.skipped button.dm-n{background:#bdb8ae}
.dm-tag.dm-added{border-color:var(--rose);color:var(--rose)}.dm-tag.dm-skip{border-color:#bdb8ae}
.gpsline{display:block;width:100%;text-align:left;margin:0 0 10px;border:1px dashed #1a73e8;background:#f3f7fe;color:#1a5fc4;border-radius:10px;padding:9px 12px;font-weight:600;font-size:14px;cursor:pointer}
.gpsline small{display:block;font-weight:400;font-size:12.5px;color:var(--muted);margin-top:1px}
p.gpsline{cursor:default;border-style:solid;border-color:var(--line);background:var(--paper);color:var(--muted);font-weight:400;font-size:13px}
.chip.arrchip{background:#e8f0fe;color:#1a5fc4;text-transform:none;letter-spacing:0}
.chip.walkchip{background:var(--moss-soft);color:var(--moss);text-transform:none;letter-spacing:0}
.flash{animation:flash 1.8s ease-out}
@keyframes flash{0%,40%{box-shadow:0 0 0 3px #1a73e8;border-radius:12px}100%{box-shadow:0 0 0 3px transparent}}
/* section buttons under the day tabs (UK update, step 3) */
.secnav{display:flex;gap:6px;overflow-x:auto;padding:0 0 9px;margin-top:-2px;scrollbar-width:none}
.secnav::-webkit-scrollbar{display:none}
.secnav button{flex:0 0 auto;border:0;background:transparent;color:var(--muted);font:600 12.5px var(--sans);padding:5px 10px;border-radius:14px;cursor:pointer;box-shadow:inset 0 0 0 1px var(--line)}
.secnav button.on{background:var(--ink);color:#fff;box-shadow:none}
.secnav button.nowbtn{color:var(--rose);box-shadow:inset 0 0 0 1px var(--rose)}
.secnav button.nowbtn:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--rose);margin-right:5px;vertical-align:1px}
#map,#plan,#bookings,#coffee,#food,#photos,#recap{scroll-margin-top:calc(var(--barh, 130px) + 10px)}
/* bookings and to-dos that follow the plan, people and roles (UK update, step 4) */
.tk-tick{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:13.5px;font-weight:600;color:var(--moss);cursor:pointer}
.tk-tick input{width:18px;height:18px;accent-color:var(--moss);margin:0}
.tk-tick.on{color:var(--muted)}
.tk-flag{margin-top:9px;padding:8px 10px;border-radius:8px;background:#fff4e5;border:1px solid #e0a650;color:#7a4a0c;font-size:13.5px;line-height:1.4}
.tk-flag a{color:#7a4a0c;font-weight:700}
.tk-flag .tk-tick{color:#7a4a0c}
.tk-done{margin-top:8px;font-size:13px;color:var(--muted);display:flex;gap:10px;align-items:center}
.tk-done .tk-tick{margin:0;font-weight:500}
.bkcard.tk-cancelled,.bo.tk-cancelled{opacity:.6}
.bkcard.tk-done .bk-top b,.bo.tk-done .bo-top{text-decoration:line-through;text-decoration-color:rgba(0,0,0,.35)}
.bo.tk-cancel{border-color:#e0a650}
.pill.warn{background:#fff4e5;color:#7a4a0c;border-color:#e0a650}
.tk-gone{margin:12px 0;border:1px dashed var(--line);border-radius:10px;padding:8px 12px;font-size:13.5px;color:var(--muted)}
.tk-gone summary{cursor:pointer;font-weight:600}
.tk-gone ul{margin:6px 0 2px;padding-left:18px}.tk-gone li{margin:3px 0}
.tk-by{font-size:11.5px;color:var(--muted);font-weight:500}.tk-note{margin:4px 0 0;font-size:13.5px}
.chip.tkchip{background:var(--bracken-soft);color:var(--bracken);text-transform:none;letter-spacing:0}
.chip.tkchip.warn{background:#fff4e5;color:#7a4a0c}
.todo .tk-tick{font-weight:500;color:var(--ink);padding:8px 0;border-bottom:1px dashed var(--line);margin:0}
.todo .tk-tick.on span{color:var(--muted);text-decoration:line-through}
.people .pp-row{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--line)}
.pp-name{flex:1;font-weight:600}.pp-name small{font-weight:400;color:var(--muted)}
.pp-role{font-size:12.5px;color:var(--muted)}
.pp-roles{display:flex;gap:4px;align-items:center}
.pp-roles button{border:1px solid var(--line);background:var(--paper);color:var(--muted);font:600 12px var(--sans);padding:4px 9px;border-radius:12px;cursor:pointer}
.pp-roles button.on{background:var(--moss);border-color:var(--moss);color:#fff}
.pp-roles .pp-x{border:0;background:none;padding:4px 6px;color:var(--muted)}
.pp-add{display:flex;gap:8px;margin:10px 0 4px}
.pp-add input{flex:1;border:1px solid var(--line);border-radius:10px;padding:8px 10px;font:16px var(--sans)}
.pp-add button{border:0;background:var(--moss);color:#fff;font-weight:600;border-radius:10px;padding:0 14px;cursor:pointer}
.pp-me{font-size:13px;color:var(--muted);margin:8px 0 0}
.linkbtn{border:0;background:none;color:var(--moss);font:inherit;font-weight:600;text-decoration:underline;cursor:pointer;padding:0}
.who{flex-wrap:wrap}.who button{min-width:40%}
.who-else{margin-top:10px}
/* costs (UK update, step 5) */
.msum{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:8px;margin:4px 0 10px}
.msum div{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:8px 11px}
.msum span{display:block;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.msum b{font:500 21px/1.2 var(--serif);color:var(--ink)}
.mrow-card{border:1px solid var(--line);border-left:4px solid var(--bracken);border-radius:10px;background:var(--paper);padding:9px 12px;margin:0 0 8px;font-size:14px}
.mrow-card.warn{border-left-color:#e0a650;background:#fff8ee}
.mrow-card .mt{display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.mrow-card .mt span{font-weight:700;white-space:nowrap}.mrow-card .mt small{font-weight:500;color:var(--muted)}
.mrow-card p{margin:3px 0 0;font-size:13px;color:#3b4740}
.mnote{font-size:12.5px;color:var(--muted);margin:2px 0 6px}
.mpay{margin-top:8px;border:0;background:var(--moss-soft);color:var(--moss);font-weight:600;font-size:13px;padding:6px 12px;border-radius:14px;cursor:pointer}
.mpay.madd{display:block;margin:10px 0 4px;background:var(--moss);color:#fff;padding:9px 14px;font-size:14px}
.mpaid,.mday{border:1px solid var(--line);border-radius:10px;padding:8px 12px;margin:0 0 8px;background:var(--paper);font-size:14px}
.mpaid summary,.mday summary{cursor:pointer;font-weight:600;display:flex;justify-content:space-between;gap:10px}
.mpaid summary{color:var(--muted)}
.mline{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:6px 0;border-top:1px dashed var(--line)}
.mline small,.mstop small{color:var(--muted);font-weight:400}
.mline i{color:var(--muted);font-size:12px}
.mstop{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:5px 0;border-top:1px dashed var(--line)}
.min{display:inline-flex;align-items:center;gap:3px;color:var(--muted);font-weight:600}
.min input{width:84px;border:1px solid var(--line);border-radius:8px;padding:6px 8px;font:16px var(--sans);text-align:right;background:#fff;color:var(--ink)}
.spentin{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--moss)}
.spentin .min{letter-spacing:0}
.mcats{padding:4px 12px}.mcats .mline:first-child{border-top:0}
.mrow{display:flex;gap:8px;margin-top:4px}.mrow select{flex:0 0 auto;border:1px solid var(--line);border-radius:10px;padding:8px;font:16px var(--sans);background:#fff}
.mrow input{flex:1;margin-top:0!important}
.edsheet select{display:block;width:100%;margin-top:4px;border:1px solid var(--line);border-radius:10px;padding:9px 10px;font:16px var(--sans);background:#fff;color:var(--ink)}
.duesoon a{display:inline-block;margin-top:6px;font-weight:600;color:var(--moss)}
.edsheet .mrow select{display:inline-block;width:auto;margin-top:0}
/* notifications (UK update, step 6) */
a.note{display:block;text-decoration:none;color:inherit}
.pushbox{padding:10px 13px}.pushbox .hint{margin:0 0 6px}
/* family link: where we are, captions (UK update, step 7) */
.where{display:flex;gap:11px;align-items:flex-start;border:1px solid var(--line);border-left:4px solid var(--moss);border-radius:12px;background:var(--paper);padding:11px 13px;margin:8px 0 14px}
.where b{display:block;font:500 17px/1.3 var(--serif);color:var(--ink)}
.where small{display:block;font-size:12.5px;color:var(--muted);margin-top:1px}
.where p{margin:6px 0 0;font-size:13px;color:#3b4740}
.wdot{flex:0 0 10px;width:10px;height:10px;border-radius:50%;background:var(--muted);margin-top:7px}
.wdot.live{background:var(--moss);box-shadow:0 0 0 4px var(--moss-soft);animation:wpulse 2s ease-in-out infinite}
@keyframes wpulse{50%{box-shadow:0 0 0 7px transparent}}
a.wherelink{display:block;text-decoration:none;color:inherit}
.capgrid{grid-template-columns:repeat(2,1fr);gap:8px}
.capgrid figure{margin:0}.capgrid button{width:100%}
.capgrid figcaption{font-size:12.5px;line-height:1.35;color:#3b4740;margin-top:4px}
.lb-capin{width:100%;border:0;border-radius:10px;padding:9px 11px;font:16px var(--sans)}
