:root{--bg:#f6f5f2;--card:#fff;--fg:#1d2026;--muted:#69707b;--line:#e4e1da;--accent:#2b5fd9;--accent-soft:#eaf0fd;
--ok:#1a7f4b;--ok-soft:#e5f4ec;--warn:#a5600a;--warn-soft:#fbf0de;--bad:#b42318;--bad-soft:#fdecea;--grey-soft:#efeee9}
@media (prefers-color-scheme:dark){:root{--bg:#121417;--card:#1a1d21;--fg:#e6e6e3;--muted:#99a0aa;--line:#2b2f35;--accent:#7aa5ff;--accent-soft:#1d2638;
--ok:#5cc98d;--ok-soft:#16281f;--warn:#e7a849;--warn-soft:#2c2316;--bad:#f27a6e;--bad-soft:#2e1a18;--grey-soft:#24272c}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.5 Inter,system-ui,sans-serif}
button,input,select,textarea{font:inherit;color:inherit}
header.app{display:flex;align-items:center;gap:.8rem;max-width:60rem;margin:0 auto;padding:1.2rem 1rem .4rem}
.logo{font-weight:700;letter-spacing:-.02em;font-size:1.15rem}
.logo span{color:var(--accent)}
.who{margin-left:auto;color:var(--muted);font-size:13px}
main{max-width:60rem;margin:0 auto;padding:.5rem 1rem 5rem}
h1{font-size:1.6rem;letter-spacing:-.02em;margin:.6rem 0 .2rem}
h2{font-size:1.05rem;margin:0 0 .6rem}
.sub{color:var(--muted);margin:0 0 1.4rem}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:1.1rem 1.2rem;margin-bottom:1rem}
label{display:block;font-weight:500;font-size:13px;margin:.8rem 0 .3rem}
.hint{color:var(--muted);font-size:12.5px;font-weight:400}
input[type=text],input[type=number],input[type=time],select,textarea{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:.5rem .65rem}
textarea{min-height:4.2rem;resize:vertical}
.row{display:grid;gap:.6rem;grid-template-columns:1fr 1fr 1fr auto;align-items:end}
.row2{display:grid;gap:.8rem;grid-template-columns:1fr 1fr}
.btn{border:1px solid var(--line);background:var(--card);border-radius:8px;padding:.45rem .9rem;cursor:pointer;font-weight:500}
.btn:hover{border-color:var(--muted)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.ok{background:var(--ok);border-color:var(--ok);color:#fff}
.btn:disabled{opacity:.4;cursor:not-allowed}
.btn.small{padding:.2rem .55rem;font-size:13px}
.btn.link{border:0;background:none;color:var(--accent);padding:.2rem .3rem}
.btn.danger{color:var(--bad)}
.tabs{display:flex;gap:.3rem;flex-wrap:wrap;margin:.2rem 0 .3rem}
.tabs button{border:1px solid var(--line);background:var(--bg);border-radius:20px;padding:.3rem .85rem;cursor:pointer}
.tabs button.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600}
.chip{display:inline-block;font-size:12px;font-weight:600;border-radius:20px;padding:.12rem .6rem;white-space:nowrap}
.s-formulating,.s-planning{background:var(--grey-soft);color:var(--muted)}
.s-in_review{background:var(--warn-soft);color:var(--warn)}
.s-shared{background:var(--accent-soft);color:var(--accent)}
.s-preference_stated{background:var(--warn-soft);color:var(--warn)}
.s-selected,.s-booked{background:var(--ok-soft);color:var(--ok)}
.trav-head{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap}
.trav-head h2{margin:0}
.trav-head .route{color:var(--muted);font-size:13.5px}
.trav-head .chip{margin-left:auto}
.summary{background:var(--accent-soft);border-radius:8px;padding:.6rem .8rem;margin:.9rem 0;font-size:14px}
.summary b{font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--accent);display:block;margin-bottom:.1rem}
.rankbar{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;font-size:13px;color:var(--muted);margin:.4rem 0 .6rem}
.opts{display:grid;gap:.6rem}
.opt{border:1px solid var(--line);border-radius:10px;padding:.75rem .9rem;display:grid;grid-template-columns:1fr auto;gap:.3rem 1rem;align-items:start}
.opt.sel{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}
.opt.chosen{border-color:var(--ok);box-shadow:0 0 0 1px var(--ok) inset}
.opt .rank{font-size:12px;color:var(--muted);font-weight:600}
.opt .price{font-size:1.15rem;font-weight:700;text-align:right}
.opt .meta{font-size:12.5px;color:var(--muted);text-align:right}
.legs{font-size:13.5px;margin-top:.15rem}
.legs div{display:flex;gap:.5rem}
.legs .k{color:var(--muted);width:3.6rem;flex:none}
.dir{margin:.35rem 0 .6rem}
.dirh{font-weight:600;font-size:13.5px;margin-bottom:.2rem}.dirh span{font-weight:400;color:var(--muted)}
.leg{display:grid;grid-template-columns:6.6rem 3.6rem 1fr 3rem;gap:.5rem;font-size:13px;padding:.12rem 0;color:var(--muted)}
.leg.fl{color:var(--fg);font-weight:600}.leg .tm{font-variant-numeric:tabular-nums}.leg .cs{text-align:right}
@media (max-width:640px){.leg{grid-template-columns:6rem 1fr 3rem}.leg .md{display:none}}
.tags{display:flex;gap:.3rem;flex-wrap:wrap;margin-top:.35rem}
.tag{font-size:11.5px;background:var(--grey-soft);color:var(--muted);border-radius:4px;padding:.05rem .4rem}
.opt .acts{grid-column:1/-1;display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.3rem}
.removed{font-size:13px;color:var(--muted);margin-top:.6rem}
.removed details summary{cursor:pointer}
.removed li{margin:.2rem 0}
.actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:1rem;padding-top:.9rem;border-top:1px solid var(--line)}
.linkbox{display:flex;gap:.5rem;align-items:center;background:var(--ok-soft);border-radius:8px;padding:.55rem .8rem;margin-top:.8rem;font-size:13.5px;flex-wrap:wrap}
.linkbox code{background:var(--card);padding:.15rem .45rem;border-radius:4px;word-break:break-all}
.note{border-left:3px solid var(--warn);background:var(--warn-soft);padding:.6rem .8rem;border-radius:0 8px 8px 0;margin-top:.8rem;font-size:14px}
.note .who2{font-size:12px;color:var(--muted)}
.private{border-left:3px solid var(--accent);background:var(--accent-soft);padding:.5rem .8rem;border-radius:0 8px 8px 0;margin-top:.8rem;font-size:13.5px}
.trip-meta{display:flex;gap:1.4rem;flex-wrap:wrap;font-size:13.5px;color:var(--muted);margin-bottom:1.2rem}
.trip-meta b{color:var(--fg);font-weight:600}
.log{font-size:13px;color:var(--muted)}
.log li{margin:.25rem 0}
.log .v{font-weight:600;color:var(--fg)}
.empty{color:var(--muted);text-align:center;padding:2rem 1rem}
.mockhint{font-size:12.5px;color:var(--muted);background:var(--grey-soft);border-radius:8px;padding:.5rem .75rem;margin-top:.8rem}
.mockhint button{margin-left:.4rem}
@media (max-width:640px){.row{grid-template-columns:1fr 1fr}.row2{grid-template-columns:1fr}.opt{grid-template-columns:1fr}.opt .price,.opt .meta{text-align:left}}

:root{--m-flight:#2b5fd9;--m-train:#0f8a5f;--m-metro:#7a4cc2;--m-bus:#c46a12;--m-taxi:#b8860b}
@media (prefers-color-scheme:dark){:root{--m-flight:#7aa5ff;--m-train:#4cc79a;--m-metro:#b494ee;--m-bus:#eda05a;--m-taxi:#e5c158}}
.topt{display:block;padding:0;overflow:hidden}
.ohead{display:flex;justify-content:space-between;align-items:flex-start;padding:.75rem 1rem .2rem}
.ptag{text-align:right;display:flex;flex-direction:column}.ptag .price{font-size:1.3rem;font-weight:700;line-height:1.2}
.dir{padding:.45rem 1rem;border-top:1px solid var(--line)}
.ohead+.dir{border-top:0}
.dsum{display:grid;grid-template-columns:5.2rem 4.6rem 1fr 4.6rem 6.6rem;align-items:center;gap:.7rem}
.dl{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;display:flex;flex-direction:column}
.dl span{text-transform:none;letter-spacing:0;font-weight:500;color:var(--fg);font-size:13px}
.dt{display:flex;flex-direction:column;line-height:1.2}.dt b{font-size:1.15rem;font-variant-numeric:tabular-nums}.dt span{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dt.r{text-align:right}
.ds{display:flex;align-items:center;min-width:0}
.ds .dash{flex:1;height:2px;background:var(--line);min-width:6px}
.dd{display:flex;flex-direction:column;text-align:right;font-weight:600;font-size:14px;line-height:1.25}.dd span{font-weight:400;font-size:12px;color:var(--muted)}
.mi{width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex:none;color:#fff}
.mi svg{width:14px;height:14px;fill:currentColor}
.m-flight{background:var(--m-flight)}
.m-train{background:var(--m-train)}.m-metro{background:var(--m-metro)}.m-bus{background:var(--m-bus)}.m-taxi{background:var(--m-taxi)}
.tlw{margin:.6rem 0 .3rem}
.tl,.xfer{display:grid;grid-template-columns:3.4rem 24px 1fr 4.2rem;gap:.7rem}
.tl{min-height:3rem}
.tt{display:flex;flex-direction:column;font-size:13px;line-height:1.35;font-variant-numeric:tabular-nums}.tt span{color:var(--muted)}
.line{position:relative;display:flex;justify-content:center}
.line:before{content:'';position:absolute;top:0;bottom:0;width:2px;background:var(--line)}
.line .mi{position:relative}
.line.dashed:before{background:repeating-linear-gradient(var(--line) 0 4px,transparent 4px 8px)}
.td .ti{font-weight:600;font-size:13.5px}.td .su{font-size:13px;color:var(--muted)}
.tc{display:flex;flex-direction:column;text-align:right;font-size:12.5px;color:var(--muted)}.tc span:first-child{color:var(--fg);font-weight:500}
.xfer{font-size:12px;color:var(--muted);min-height:1.8rem;align-items:center}.xfer span:last-child{grid-column:3/5}
.xfer.tight{color:var(--warn);font-weight:600}
.ofoot{display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:.4rem 1rem .2rem;border-top:1px solid var(--line);flex-wrap:wrap}
.ofoot .tags{margin:0}
.topt .acts{padding:.2rem 1rem .8rem;margin:0}
@media (max-width:640px){.dsum{grid-template-columns:1fr 1fr;row-gap:.3rem}.dsum .ds{display:none}.dl{grid-column:1/-1;flex-direction:row;gap:.4rem}.dd{text-align:left}}

.sn{display:flex;flex-direction:column;align-items:center;gap:1px;flex:none}
.sl{font-size:10.5px;color:var(--muted);line-height:1.15;white-space:nowrap}
.sn .sl:nth-child(2){color:var(--fg);font-weight:600;margin-top:2px}
.ds{align-items:flex-start}.ds .dash{margin-top:11px}
.flines{margin:.5rem 0 .1rem 5.9rem}
.fline{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap;font-size:13px;color:var(--muted);padding:.1rem 0}
.lwait{font-size:11.5px;color:var(--muted);padding:0 0 0 1.75rem;opacity:.8}.lwait.tight{color:var(--warn);font-weight:600;opacity:1}
.fline b{color:var(--fg);font-weight:500;opacity:.8}.fline .mi{width:16px;height:16px;opacity:.6}.fline .mi svg{width:10px;height:10px}.fline{font-size:12.5px}
.fline .fd:before{content:'·';margin-right:.55rem}
@media (max-width:640px){.flines{margin-left:0}}

.ctab{border:1px solid var(--line);border-radius:10px;overflow:hidden;font-size:12.5px}
.crow{display:grid;grid-template-columns:4.5rem minmax(0,1fr) minmax(0,1fr) 6rem 4.4rem;gap:1rem;align-items:center;padding:.5rem .8rem;border-top:1px solid var(--line);cursor:pointer}
.crow:hover{background:var(--bg)}
.crow.sel{background:var(--accent-soft);box-shadow:inset 3px 0 var(--accent)}
.chead{border-top:0;cursor:default;padding-bottom:.2rem;color:var(--muted);font-weight:600}.chead:hover{background:none}
.cr{font-weight:700;display:flex;flex-direction:column}.cr span{font-weight:500;color:var(--muted);font-size:11.5px}
.crow:not(.top) .cr{color:var(--muted)}
.cd{font-size:11.5px;color:var(--muted);font-weight:600;margin-bottom:3px}
.bar{position:relative;height:14px}
.bar .wait,.legend .wait{position:absolute;top:6px;height:2px;background:var(--line)}
.bar .seg{position:absolute;top:2px;height:10px;border-radius:3px;min-width:3px}
.seg.m-flight{background:var(--m-flight)}.seg.m-train{background:var(--m-train)}.seg.m-metro{background:var(--m-metro)}.seg.m-bus{background:var(--m-bus)}.seg.m-taxi{background:var(--m-taxi)}
.cm{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:2px;color:var(--muted);font-size:11.5px}.cm b{color:var(--fg);font-variant-numeric:tabular-nums}
.ticks{position:relative;height:14px;border-bottom:1px solid var(--line)}.ticks span{position:absolute;transform:translateX(-50%);font-size:10.5px;font-weight:500}
.ticks span:first-child{transform:none}.ticks span:last-child{transform:translateX(-100%)}
.cp{text-align:right;display:flex;flex-direction:column}.cp b{font-size:1.05rem}.cp span{font-size:10.5px;color:var(--warn);line-height:1.25}
.ca{display:flex;gap:.3rem;justify-content:flex-end}
.btn.bin{color:var(--muted);display:inline-flex;align-items:center;justify-content:center;gap:.3rem}.btn.bin svg{width:15px;height:15px;fill:currentColor}.btn.bin:hover{color:var(--bad);border-color:var(--bad)}.ca .btn{width:1.9rem;padding:.2rem 0}
.cexp{padding:.2rem .8rem .8rem;background:var(--bg);border-top:1px dashed var(--line)}
.legend{display:flex;gap:.9rem;flex-wrap:wrap;align-items:center;padding:.5rem .8rem;border-top:1px solid var(--line);color:var(--muted);font-size:11.5px}
.legend i{display:inline-block;width:14px;height:8px;border-radius:2px;margin-right:4px;vertical-align:middle;position:static}
.legend i.wait{height:2px;background:var(--line)}
@media (max-width:720px){.crow{grid-template-columns:3rem 1fr 5rem;}.crow .cc:nth-child(3){grid-column:2/3}.ca{grid-column:3}.chead .cc{display:none}}

.bar{height:22px}
.bar .wait{top:10px}
.bar .seg{top:0;height:22px;border-radius:5px;min-width:20px;overflow:hidden;display:flex;align-items:center;justify-content:center;color:#fff;transform:translateX(0)}
.bar .seg svg{width:14px;height:14px;fill:currentColor;flex:none}
.bar .seg.m-metro b{font-size:11px}
.bar .gap{position:absolute;top:-1px;font-size:10px;color:var(--muted);text-align:center;line-height:1}
.blab{position:relative;height:26px;margin-top:2px}
.blab span{position:absolute;top:0;font-size:10.5px;color:var(--muted);white-space:nowrap;line-height:1.2}
.blab span.r2{top:12px}
.blab span b{color:var(--fg);font-weight:600}
.blab span.fl{color:var(--fg);font-weight:600}
.crow{padding:.65rem .8rem}

.cdirs{display:flex;flex-direction:column;gap:.55rem;min-width:0}
.cdir{display:grid;grid-template-columns:4.6rem 1fr;gap:.6rem;align-items:start}
.cdir .cd{display:flex;flex-direction:column;font-size:11px;text-transform:uppercase;letter-spacing:.04em;margin:0}
.cdir .cd span{text-transform:none;letter-spacing:0;color:var(--fg);font-weight:600;font-size:12px}
.cp,.ca{padding-top:.2rem}

.tks{margin-top:4px;display:flex;flex-direction:column;gap:2px}
.tk{display:flex;align-items:center;gap:.35rem;font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tk b{color:var(--fg);font-weight:600}.tk .mi{width:15px;height:15px}.tk .mi svg{width:9px;height:9px}
.tk .tkc{margin-left:auto;padding-left:.4rem}
.cc{min-width:0}.tk span:not(.mi):not(.tkc){overflow:hidden;text-overflow:ellipsis}

[data-tip]{position:relative}
.bar .seg[data-tip]{position:absolute}
.tk{overflow:visible}.tks{overflow:visible}

#tip{position:fixed;z-index:50;pointer-events:none;background:var(--card);color:var(--fg);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.16);padding:.55rem .7rem;min-width:11rem;max-width:20rem;font-size:12.5px;opacity:0;transform:translateY(4px);transition:opacity .12s,transform .12s}
#tip.on{opacity:1;transform:none}
#tip .th{display:flex;gap:.5rem;align-items:center}
#tip .mi{width:26px;height:26px}#tip .mi svg{width:15px;height:15px}
#tip .tmode{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600}
#tip .tti{font-weight:700;font-size:13.5px}
#tip .tsu{margin-top:.35rem}
#tip .ttm{color:var(--muted);margin-top:.1rem;font-variant-numeric:tabular-nums}
.bar .seg{cursor:default;transition:transform .1s,box-shadow .1s}
.bar .seg:hover{transform:scaleY(1.25);box-shadow:0 0 0 2px var(--card),0 0 0 3px currentColor;z-index:2}
.tk .mi{cursor:default}

.sec-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:.4rem}.sec-h h2{margin:0}
.big-h{font-size:1.25rem;margin:2rem 0 .8rem}
.kv{display:grid;grid-template-columns:9rem 1fr;gap:.35rem 1rem;margin:.4rem 0 0;font-size:14px}.kv dt{color:var(--muted)}.kv dd{margin:0}
.trows{display:flex;flex-direction:column}
.trow{display:grid;grid-template-columns:10rem 1fr 7rem 12rem;gap:.7rem;align-items:center;padding:.55rem 0;border-top:1px solid var(--line);font-size:14px}
.trow:first-child{border-top:0}
.trow.editing{grid-template-columns:1fr 1fr 1fr 12rem}
.tacts{display:flex;gap:.35rem;justify-content:flex-end;align-items:center}
@media (max-width:720px){.trow,.trow.editing{grid-template-columns:1fr}.tacts{justify-content:flex-start}}

body.wide main,body.wide header.app{max-width:76rem}
.cl{display:grid;grid-template-columns:12.5rem minmax(0,1fr);gap:2rem}
.side-in{position:sticky;top:1.2rem;display:flex;flex-direction:column;font-size:13.5px}
.side-t{font-weight:700;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:.4rem 0 .6rem .75rem}
.side a{display:flex;align-items:center;gap:.45rem;padding:.32rem .75rem;border-left:2px solid var(--line);color:var(--muted);cursor:pointer;text-decoration:none}
.side a:hover{color:var(--fg)}
.side a.on{color:var(--accent);border-left-color:var(--accent);font-weight:600}
.side a.subl{padding-left:1.5rem;font-size:13px}
.side .cnt{margin-left:auto;font-size:11px;background:var(--grey-soft);border-radius:10px;padding:0 .45rem}
.sdot{width:8px;height:8px;border-radius:50%;flex:none;display:inline-block}
.sdot.s-planning,.sdot.s-formulating{background:var(--muted)}.sdot.s-in_review{background:var(--warn)}.sdot.s-shared{background:var(--accent)}.sdot.s-preference_stated{background:var(--warn)}.sdot.s-selected,.sdot.s-booked{background:var(--ok)}
[id^="s-"]{scroll-margin-top:1rem}
@media (max-width:900px){.cl{grid-template-columns:1fr}.side{display:none}}

.prow{grid-template-columns:10rem 1fr 8rem 12rem}
.psrc{display:block;font-size:11.5px}
.pform{grid-column:1/-1;display:grid;grid-template-columns:8rem 11rem 1fr 9rem 9rem;gap:.5rem;align-items:center;width:100%}
.trow:has(.pform){grid-template-columns:1fr}
@media (max-width:720px){.prow,.pform{grid-template-columns:1fr}}
.chip.mini{font-size:10px;padding:.05rem .4rem;margin-left:auto;font-weight:600}.side .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.pprompt{display:flex;gap:1rem;align-items:center;justify-content:space-between;flex-wrap:wrap;background:var(--warn-soft);border-left:3px solid var(--warn);border-radius:0 8px 8px 0;padding:.65rem .8rem;margin:.2rem 0 .8rem;font-size:14px}
.pbtns{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}
.pick{display:inline-flex;gap:.3rem;align-items:center}.pick select{width:auto;padding:.25rem .4rem;font-size:13px}

.tsub{font-size:1rem;margin:1.1rem 0 .4rem}
.tprefs{list-style:none;margin:0;padding:0;font-size:14px}
.tprefs li{display:flex;gap:.45rem;align-items:center;flex-wrap:wrap;padding:.3rem 0;border-top:1px solid var(--line)}.tprefs li:first-child{border-top:0}
.tprefs li>span:first-child{flex:1;min-width:12rem}
.lnk{color:var(--accent);cursor:pointer;font-size:13px}

.tcard{padding:0;overflow:hidden}
.tcard>.trav-head{padding:1rem 1.2rem;background:var(--bg);border-bottom:1px solid var(--line)}
.tcard>.trav-head h2{font-size:1.3rem;font-weight:700;letter-spacing:-.01em}
.tcard>:not(.trav-head){margin-left:1.2rem!important;margin-right:1.2rem!important}
.tcard>:last-child{margin-bottom:1.2rem}
.av{width:2.2rem;height:2.2rem;border-radius:50%;background:var(--accent);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem;flex:none}
.tsub{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin:1.3rem 0 .45rem}

.ov-lead{margin:.2rem 0 .6rem;font-size:14.5px}
.ov{margin:0 0 .8rem;padding-left:1.2rem;font-size:14px}.ov li{margin:.25rem 0}
.ov-dec{background:var(--warn-soft);border-left:3px solid var(--warn);border-radius:0 8px 8px 0;padding:.55rem .8rem;font-size:14px;margin-bottom:1rem}
.ov-dec ul{margin:.3rem 0 0;padding-left:1.2rem}.ov-dec li{margin:.2rem 0}
.ovt{border:1px solid var(--line);border-radius:10px;overflow:hidden;font-size:13.5px}
.ovr{display:grid;grid-template-columns:1.6fr .7fr .6fr 1fr 1.5fr;gap:.8rem;padding:.5rem .8rem;border-top:1px solid var(--line);align-items:center}
.ovh{border-top:0;color:var(--muted);font-size:12px;font-weight:600;background:var(--bg)}
.ovf{font-weight:700;background:var(--bg)}
.ovr .chip.mini{margin-left:.3rem}

.tsub-row{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}
.upd{display:flex;flex-direction:column;gap:.2rem;font-size:13.5px;color:var(--fg);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:.6rem 0;margin-top:1rem}
.upd-l{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}
.upd details{font-size:12.5px;color:var(--muted)}.upd summary{cursor:pointer;color:var(--accent);width:max-content}
#tip .tplain{max-width:16rem;white-space:normal}
.tprefs-wrap{border-top:1px solid var(--line);margin-top:1.2rem;padding-top:.2rem}
.tcard>.trav-head+.upd{border-top:0}

.tag.k-rule{background:var(--bad-soft);color:var(--bad);font-weight:600}
.tag.k-preference{background:var(--accent-soft);color:var(--accent)}
.tnote{border:1px solid var(--warn);background:var(--warn-soft);border-radius:8px;padding:.6rem .8rem;margin:.4rem 0 .6rem;font-size:14px}
.tnote-h{display:flex;gap:.6rem;align-items:baseline;flex-wrap:wrap;margin-bottom:.15rem}

.mback{position:fixed;inset:0;background:rgba(15,17,20,.45);display:flex;align-items:center;justify-content:center;z-index:40;padding:1rem;animation:fade .12s}
.modal{background:var(--card);border-radius:14px;box-shadow:0 20px 60px rgba(0,0,0,.3);width:min(32rem,100%);padding:1.2rem 1.3rem 1.1rem;max-height:90vh;overflow:auto}
.mhead{display:flex;justify-content:space-between;align-items:center}.mhead h2{margin:0}
.modal label{margin-top:.9rem}
.mnote{margin-top:.7rem;background:var(--warn-soft);border-radius:8px;padding:.5rem .7rem;font-size:14px}
.seg{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}
.seg button{display:flex;flex-direction:column;align-items:flex-start;gap:.1rem;text-align:left;border:1px solid var(--line);background:var(--bg);border-radius:9px;padding:.55rem .7rem;cursor:pointer}
.seg button span{font-size:12px;color:var(--muted)}
.seg button.on{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}
.mfoot{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1.2rem}
@keyframes fade{from{opacity:0}to{opacity:1}}
.seg3{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.seg3 button{align-items:center;padding:.45rem .6rem}
.btn.danger-bg{background:var(--bad);border-color:var(--bad);color:#fff}

.chd{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:6px}
.chd .cd{margin:0;font-size:12px;color:var(--fg);font-weight:600}
.ctot{font-size:11.5px;color:var(--muted);white-space:nowrap}.ctot b{color:var(--fg);font-weight:600}
.bar{height:20px;margin:2px 0 6px}
.bar .grid{position:absolute;top:-3px;bottom:-3px;width:1px;background:var(--line);opacity:.6}
.bar .wait{top:9px;height:2px}
.bar .seg{height:20px;border-radius:5px;min-width:16px}
.bar .seg svg{width:12px;height:12px}
.bar .bt{position:absolute;top:1px;font-size:12.5px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap;line-height:18px}
.ticks span{color:var(--muted)}
.crow{padding:.75rem .8rem}


.crow{grid-template-columns:4.5rem minmax(0,1fr) 6rem 4.4rem!important;align-items:center}
.rdirs{display:flex;flex-direction:column;gap:.7rem;min-width:0}
.rdir{display:grid;grid-template-columns:8.2rem minmax(0,1fr);gap:.8rem;align-items:center}
.rlab{display:flex;flex-direction:column;line-height:1.3}
.rl1{font-size:11.5px;color:var(--muted);font-weight:600}.rl2 b{font-size:14px}.rl3{font-size:11px;color:var(--muted)}

.rm{display:flex;align-items:flex-start;gap:.55rem;min-width:0}
.re{flex:none;width:3.6rem;display:flex;flex-direction:column;line-height:1.25;padding-top:15px}
.re b{font-size:14px;font-variant-numeric:tabular-nums}.re b sup{font-size:9.5px;color:var(--warn);margin-left:1px}
.re span{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.re.s{text-align:right}
.rtrack{display:flex;align-items:flex-start;min-width:0}
.rl,.rg{display:flex;flex-direction:column;align-items:center;min-width:0}
.rgw{height:14px;font-size:10.5px;color:var(--muted);line-height:14px;white-space:nowrap}.rgw.tight{color:var(--warn);font-weight:700}
.rb{height:24px;width:100%;border-radius:7px;display:flex;align-items:center;justify-content:center;gap:4px;padding:0 6px;font-size:11.5px;white-space:nowrap;overflow:hidden;
 background:color-mix(in srgb,currentColor 13%,var(--card));box-shadow:inset 0 0 0 1px color-mix(in srgb,currentColor 35%,transparent)}
.rb svg{width:13px;height:13px;fill:currentColor;flex:none}
.rb b{font-weight:600;color:var(--fg);overflow:hidden;text-overflow:ellipsis}

.rl.m-flight{color:var(--m-flight)}.rl.m-train{color:var(--m-train)}.rl.m-metro{color:var(--m-metro)}.rl.m-bus{color:var(--m-bus)}.rl.m-taxi{color:var(--m-taxi)}
.rd{font-size:10.5px;color:var(--muted);margin-top:3px;line-height:1.2}
.rgl{width:100%;height:24px;background:linear-gradient(var(--muted),var(--muted)) center/100% 0 no-repeat;position:relative}
.rgl:before{content:'';position:absolute;left:3px;right:3px;top:11px;border-top:2px dotted color-mix(in srgb,var(--muted) 70%,transparent)}
.rgp{font-size:10.5px;color:var(--muted);margin-top:3px;line-height:1.2;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 2px}
.rl:hover .rb{filter:brightness(.97);box-shadow:inset 0 0 0 1.5px currentColor}
.rdir{grid-template-columns:7.4rem minmax(0,1fr)}
.rl.m-flight,.rl.m-train,.rl.m-metro,.rl.m-bus,.rl.m-taxi{background:none!important}
.rtrack{flex:none}.re.e{padding-left:.15rem}
.rb{font-size:11px;padding:0 5px}
.rb{padding:0 4px}.rgp{padding:0}
.ctab .crow:not(.chead):nth-of-type(even){background:color-mix(in srgb,var(--bg) 70%,var(--card))}
.ctab .crow:not(.chead):hover{background:color-mix(in srgb,var(--accent-soft) 55%,var(--card))}
.ctab .crow.sel{background:var(--accent-soft)}
.mmodal-sm{width:min(28rem,100%)}
.mmodal-sm{width:min(31rem,100%)}.mfoot .btn{white-space:nowrap}
.rspace{flex:1;min-width:0;display:flex;align-items:flex-start}
.rdir{grid-template-columns:7.6rem minmax(0,1fr)}.rl3{white-space:nowrap}
.crow{grid-template-columns:4rem minmax(0,1fr) 5.6rem 4.4rem!important}
.rplace{color:var(--muted);max-width:100%;overflow:hidden;text-overflow:ellipsis;padding:0 2px}
.rg .rd{font-style:italic}.rd.tight{color:var(--warn);font-weight:700;font-style:normal}
.rd{margin-top:4px}
.rd,.rplace{white-space:nowrap}
.crow{grid-template-columns:3.6rem minmax(0,1fr) 5.4rem 4.2rem!important}

.rm{align-items:center}.rspace{align-items:center}.rtrack{align-items:center}
.re{padding-top:0}
.rl,.rg{justify-content:center}
.rg{position:relative;height:24px;display:flex;align-items:center;justify-content:center}
.rg:before{content:'';position:absolute;left:2px;right:2px;top:11px;border-top:2px dotted color-mix(in srgb,var(--muted) 55%,transparent)}
.rwc{position:relative;display:inline-flex;align-items:center;gap:3px;font-size:11px;color:var(--muted);background:var(--card);border-radius:9px;padding:0 5px;line-height:18px;white-space:nowrap}
.crow:nth-of-type(even) .rwc{background:color-mix(in srgb,var(--bg) 70%,var(--card))}
.rwc svg{width:12px;height:12px;fill:currentColor}
.rwc.tight{color:var(--warn);font-weight:700}
.rb{gap:4px}.rb .rdur{color:var(--muted);font-size:11px;font-weight:500}
.crow{grid-template-columns:3.4rem minmax(0,1fr) 5.4rem 4.2rem!important}
.rdirs{gap:.9rem}

.rdir{display:block}
.rhead{display:flex;flex-wrap:wrap;align-items:baseline;gap:.35rem;font-size:12px;color:var(--muted);margin:0 0 .35rem 4.15rem}
.rhead b{color:var(--fg);font-weight:600}.rhead .dot{opacity:.5}
.rb{overflow:visible}
.rdirs{gap:1rem}

.lrows{margin:.45rem 0 0 4.15rem;display:flex;flex-direction:column;gap:2px}
.lrow{display:flex;align-items:center;gap:.45rem;font-size:12.5px;color:var(--muted);white-space:nowrap;min-width:0}
.lrow .mi{width:17px;height:17px}.lrow .mi svg{width:10px;height:10px}
.lrow b{color:var(--fg);font-weight:600;min-width:6.8rem}
.lr-t{color:var(--fg);font-variant-numeric:tabular-nums;font-weight:500}
.lr-a{opacity:.6}.lr-d{margin-left:.3rem;opacity:.85}
.rhead{margin-bottom:.4rem}
.crow{grid-template-columns:6.6rem minmax(0,1fr) 4.2rem!important;align-items:start}
.cr{display:flex;flex-direction:column;gap:.15rem;padding-top:.1rem}
.crk{font-size:12px;font-weight:600;color:var(--muted)}.crow.top .crk{color:var(--fg)}
.crp{font-size:1.25rem;font-weight:700;line-height:1.2}
.crt{font-size:11px;color:var(--warn);line-height:1.25}
.ca{padding-top:.1rem}
.crow{grid-template-columns:6.6rem minmax(0,1fr)!important}
.cr .ca{justify-content:flex-start;margin-top:.45rem;padding:0}

/* step 1: waits show only the clock (tight ones keep their time); short local legs drop their duration */
.rtrack.c1 .rwc:not(.tight):not(.long) .rwt{display:none}
.rtrack.c1 .rg{flex-basis:26px!important}
.rtrack.c1 .rl.loc .rdur{display:none}
.rtrack.c1 .rl.loc{flex-basis:34px!important}
/* step 2: every leg except flights is icon-only */
.rtrack.c2 .rl:not(.fl) .rdur{display:none}
.rtrack.c2 .rl:not(.fl){flex-basis:32px!important}
.rtrack.c2 .rg{flex-basis:20px!important}
/* step 3: let everything shrink evenly */
.rtrack.c3 .rl,.rtrack.c3 .rg{flex-shrink:1!important;min-width:18px}
.rtrack.c3 .rb{padding:0 3px}
.rtrack.c1 .rg.tg,.rtrack.c2 .rg.tg{flex-basis:46px!important}
.rtrack.c1 .rg.lg,.rtrack.c2 .rg.lg{flex-basis:58px!important}
.rtrack.c3 .rg:not(.tg):not(.lg){flex-basis:5px!important;min-width:5px}.rtrack.c3 .rg:not(.tg):not(.lg) .rwc{display:none}
.rtrack.c3 .rl{min-width:22px}
.pvbar{background:var(--warn-soft);border-radius:10px;padding:.6rem .9rem;margin:0 0 1rem;font-size:14px}.pvbar a{margin-left:.4rem}
.tfacts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;padding:.9rem 1.1rem}.tfacts span{display:block;font-size:12px;color:var(--muted);margin-bottom:.15rem}.tfacts b{font-weight:600;font-size:14.5px}
.tintro{margin:1.4rem 0 .8rem;font-size:15px}
.topt2{padding:1rem 1.1rem}.topt2.picked{box-shadow:0 0 0 2px var(--ok) inset}
.to-h{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.9rem}.to-h>div{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}
.to-n{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;width:100%}.to-a{font-size:1.15rem;margin-right:.3rem}
.to-p{font-size:1.15rem;font-weight:700;text-align:right;white-space:nowrap}.to-p span{display:block;font-size:11.5px;font-weight:500;color:var(--muted)}
.to-f{display:flex;justify-content:flex-end;margin-top:1rem;padding-top:.8rem;border-top:1px solid var(--line)}
.prefbox{background:var(--ok-soft);border-radius:10px;padding:.7rem .8rem .8rem;margin-top:.3rem}.prefbox-h{font-size:13.5px;font-weight:600;color:var(--ok);margin-bottom:.5rem}.prefbox .opt{border-color:var(--ok);box-shadow:0 0 0 1px var(--ok) inset}.prefbox-t{font-size:11px;font-weight:600;background:var(--card);border-radius:20px;padding:.1rem .5rem;margin-left:.35rem}.prefbox-n{font-size:13.5px;margin-top:.6rem}
.flow{display:flex;list-style:none;padding:0;margin:1.1rem 0 .3rem}
.flow li{flex:1 1 0;min-width:0;position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;font-size:12px;line-height:1.3;color:var(--muted);padding-right:.5rem}
.flow li:not(:last-child)::after{content:'';position:absolute;top:.7rem;left:1.7rem;right:.2rem;height:2px;background:var(--line)}
.flow li.done:not(:last-child)::after,.flow li.skip:not(:last-child)::after{background:var(--ok)}
.flow-n{width:1.4rem;height:1.4rem;box-sizing:border-box;border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid var(--line);font-size:11px;font-weight:600;background:var(--card)}
.flow .done .flow-n{background:var(--ok);border-color:var(--ok);color:#fff}
.flow .skip .flow-n{border-color:var(--ok);color:var(--ok)}
.flow .now .flow-n{border-color:var(--accent);color:var(--accent)}
.flow .now .flow-l{color:var(--fg);font-weight:600}
.flow-next{font-size:14px;margin:.7rem 0 0}
.flow+.tfacts,.flow+.card{margin-top:1.1rem}
.tdone{background:var(--ok-soft);border-radius:10px;padding:.8rem 1rem;margin:1.2rem 0 .8rem;font-size:15px}.tdone .lnk{margin-left:.4rem}
.actions .pvl{margin-left:auto;align-self:center;font-size:14px}
@media (max-width:640px){.rhead{margin-left:0}.lrows{margin-left:0;gap:.35rem}.lrow{flex-wrap:wrap;row-gap:0;white-space:normal}.lrow b{min-width:0;flex:1 1 calc(100% - 2rem)}.lrow .lr-t:first-of-type{margin-left:calc(17px + .45rem)}.tfacts{grid-template-columns:1fr;gap:.6rem}.topt2{padding:.85rem .8rem}.to-f .btn{width:100%}}

/* modes the mock did not have */
:root{--m-coach:var(--m-bus);--m-car:var(--m-taxi);--m-ferry:#0e7c9b;--m-walk:var(--muted)}
.m-coach{background:var(--m-coach)}.m-car{background:var(--m-car)}.m-ferry{background:var(--m-ferry)}.m-walk{background:var(--m-walk)}
.rl.m-coach{color:var(--m-coach)}.rl.m-car{color:var(--m-car)}.rl.m-ferry{color:var(--m-ferry)}.rl.m-walk{color:var(--m-walk)}
.rl.m-coach,.rl.m-car,.rl.m-ferry,.rl.m-walk{background:none!important}
/* messages from the server, and pages out of date */
#notice{position:fixed;top:1rem;left:50%;transform:translateX(-50%);z-index:60;background:var(--fg);color:var(--bg);border-radius:10px;padding:.55rem .9rem;font-size:14px;max-width:min(36rem,calc(100% - 2rem));box-shadow:0 8px 24px rgba(0,0,0,.25)}
#notice:empty{display:none}
#stale{position:fixed;bottom:1rem;left:50%;transform:translateX(-50%);z-index:35;background:var(--accent);color:#fff;border-radius:20px;padding:.35rem .9rem;font-size:13px;box-shadow:0 6px 18px rgba(0,0,0,.2)}
#stale[hidden]{display:none}
.onote{font-size:12.5px;color:var(--muted);margin:.5rem 0 0 4.15rem}
.topt .onote{margin:.3rem 1rem .4rem}
.cowner{display:flex;gap:.5rem;align-items:baseline;flex-wrap:wrap;margin:-.6rem 0 1.2rem;font-size:12.5px;color:var(--muted)}
@media (max-width:640px){.onote{margin-left:0}}

/* signing in, and the list of trips */
.login{max-width:26rem;margin:3rem auto 0;padding:1.5rem}
.login h1{margin-top:0}
.login .sub{margin-bottom:1rem}
.triprow{display:grid;grid-template-columns:minmax(0,1fr) auto 12rem;gap:1rem;align-items:center;padding:.7rem .3rem;border-top:1px solid var(--line);color:inherit;text-decoration:none}
.triprow:first-child{border-top:0}
.triprow:hover{background:var(--bg)}
.tripchips{display:flex;gap:.3rem;flex-wrap:wrap;justify-content:flex-end}
.tripchips .chip.mini{margin:0}
main>.sec-h h1{margin:0}
main>.sec-h{margin-bottom:1rem}
@media (max-width:640px){.triprow{grid-template-columns:1fr}.tripchips{justify-content:flex-start}}

/* the date range picker */
.dp{position:relative}
.dp-field{width:100%;text-align:left;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:.5rem .65rem;cursor:pointer}
.dp-field:hover,.dp-field[aria-expanded=true]{border-color:var(--muted)}
.dp-pop{position:absolute;z-index:20;top:calc(100% + .35rem);left:0;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:.9rem;box-shadow:0 8px 28px rgba(0,0,0,.18)}
.dp-months{display:flex;gap:1.6rem}
.dp-month{width:16.5rem}
.dp-title{text-align:center;font-weight:600;line-height:2rem;margin-bottom:.3rem}
.dp-grid{display:grid;grid-template-columns:repeat(7,1fr);row-gap:2px}
.dp-dow{text-align:center;color:var(--muted);font-size:12px;line-height:1.8rem}
.dp-day{height:2.25rem;border:0;background:none;padding:0;cursor:pointer;border-radius:8px}
.dp-day:hover:not(:disabled){background:var(--grey-soft)}
.dp-day:focus-visible,.dp-nav:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.dp-day:disabled{color:var(--muted);opacity:.45;cursor:default}
.dp-day.today{font-weight:700;text-decoration:underline;text-underline-offset:3px}
.dp-day.inside,.dp-day.inside:hover:not(:disabled){background:var(--accent-soft);border-radius:0}
.dp-day.from,.dp-day.to,.dp-day.from:hover:not(:disabled),.dp-day.to:hover:not(:disabled){background:var(--accent);color:var(--card);font-weight:600}
.dp-day.from:not(.to){border-radius:8px 0 0 8px}
.dp-day.to:not(.from){border-radius:0 8px 8px 0}
.dp-nav{position:absolute;top:.9rem;width:2rem;height:2rem;border:0;background:none;border-radius:8px;cursor:pointer;font-size:1.3rem;line-height:1}
.dp-nav:hover:not(:disabled){background:var(--grey-soft)}
.dp-nav:disabled{opacity:.3;cursor:default}
.dp-nav.prev{left:.9rem}
.dp-nav.next{right:.9rem}
.dp-foot{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-top:.5rem;min-height:1.8rem}
@media (max-width:640px){.dp-pop{right:0}.dp-month{width:100%}.dp-months{display:block}}

.create-row{display:flex;align-items:center;gap:.8rem;flex-wrap:wrap}

.spinner{display:inline-block;width:.9em;height:.9em;margin-right:.5em;vertical-align:-.12em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;opacity:.7;animation:spin .9s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.spinner{animation-duration:2.5s}}
