:root{--lime:#f6f1e8;--lime-deep:#ede4d6;--card:#fff;--ink:#33291f;--ink-soft:#6e6152;--ink-faint:#94897a;--line:#e2d7c6;--line-strong:#d0c2ac;--cobalt:#1b4f86;--cobalt-deep:#133a64;--cobalt-wash:#e4ebf3;--terra:#b85c38;--terra-wash:#f7e7df;--olive:#8a6d2f;--olive-wash:#f1e9d6;--green:#4a6b4a;--f-display:"Fraunces",Georgia,serif;--f-ui:"Karla",system-ui,-apple-system,sans-serif;--shell:520px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lime:#211c17;--lime-deep:#191410;--card:#2b241d;--ink:#f2eadd;--ink-soft:#b8ab99;--ink-faint:#8c8172;--line:#3d342a;--line-strong:#4e4335;--cobalt:#6e9dd1;--cobalt-deep:#8fb6e0;--cobalt-wash:#23303e;--terra:#d98a63;--terra-wash:#3a2820;--olive:#c4a45e;--olive-wash:#33291a;--green:#86ac86}}:root[data-theme=dark]{--lime:#211c17;--lime-deep:#191410;--card:#2b241d;--ink:#f2eadd;--ink-soft:#b8ab99;--ink-faint:#8c8172;--line:#3d342a;--line-strong:#4e4335;--cobalt:#6e9dd1;--cobalt-deep:#8fb6e0;--cobalt-wash:#23303e;--terra:#d98a63;--terra-wash:#3a2820;--olive:#c4a45e;--olive-wash:#33291a;--green:#86ac86}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--lime-deep);color:var(--ink);font-family:var(--f-ui);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;cursor:pointer}:focus-visible{outline:2px solid var(--cobalt);outline-offset:2px;border-radius:4px}.shell{max-width:var(--shell);margin:0 auto;min-height:100dvh;background:var(--lime);flex-direction:column;position:relative;border-left:1px solid var(--line);border-right:1px solid var(--line)}.bar,.shell{display:flex}.bar{position:sticky;top:0;z-index:20;height:54px;align-items:center;gap:10px;padding:0 16px;background:color-mix(in srgb,var(--lime) 92%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.bar h1{font-family:var(--f-display);font-size:19px;font-weight:600;letter-spacing:-.01em;margin:0}.iconbtn{width:36px;height:36px;display:grid;place-items:center;background:none;border:none;border-radius:9px;color:var(--ink-soft)}.iconbtn:hover{background:var(--lime-deep);color:var(--ink)}.body{flex:1;padding:20px 16px 96px}h2.title{font-size:26px;line-height:1.15;letter-spacing:-.015em;margin:0 0 6px}h2.title,h3.sub{font-family:var(--f-display);font-weight:600}h3.sub{font-size:18px;margin:26px 0 10px}.lede{margin:0 0 18px;font-size:15px;max-width:46ch}.lede,.small{color:var(--ink-soft)}.small{font-size:13px}.tile{background-color:var(--cobalt);background-image:radial-gradient(circle at 0 0,transparent 8px,var(--cobalt-deep) 8px,var(--cobalt-deep) 9px,transparent 9px),radial-gradient(circle at 24px 24px,transparent 8px,var(--cobalt-deep) 8px,var(--cobalt-deep) 9px,transparent 9px),radial-gradient(circle at 24px 0,transparent 8px,var(--cobalt-deep) 8px,var(--cobalt-deep) 9px,transparent 9px),radial-gradient(circle at 0 24px,transparent 8px,var(--cobalt-deep) 8px,var(--cobalt-deep) 9px,transparent 9px);background-size:24px 24px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:13px 18px;border:1px solid transparent;border-radius:12px;font-size:15px;font-weight:500;background:var(--cobalt);color:#fff;transition:transform .08s ease}.btn:active{transform:scale(.985)}.btn.wide{width:100%}.btn.quiet{background:var(--card);color:var(--ink);border-color:var(--line-strong)}.btn.quiet:hover{border-color:var(--ink-faint)}.btn.warm{background:var(--terra);color:#fff}.btn:disabled{opacity:.45;cursor:not-allowed}.actions{position:sticky;bottom:0;display:flex;gap:10px;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:color-mix(in srgb,var(--lime) 94%,transparent);backdrop-filter:blur(8px);border-top:1px solid var(--line)}.chiprow{display:flex;gap:7px;flex-wrap:wrap}.chip{padding:7px 13px;border-radius:9px;border:1px solid var(--line-strong);background:var(--card);font-size:13.5px;color:var(--ink-soft);white-space:nowrap}.chip[aria-pressed=true]{background:var(--cobalt);border-color:var(--cobalt);color:#fff;font-weight:500}.daychip{flex:1;min-width:40px;padding:12px 0;border-radius:11px;border:1px solid var(--line-strong);background:var(--card);font-size:16px;font-weight:500;text-align:center}.daychip[aria-pressed=true]{background:var(--cobalt);border-color:var(--cobalt);color:#fff}.stack{display:flex;flex-direction:column;gap:11px}.card{border:1px solid var(--line);border-radius:14px;overflow:hidden}.card,.optcard{background:var(--card)}.optcard{display:flex;gap:13px;align-items:flex-start;width:100%;text-align:left;padding:15px;border:1px solid var(--line-strong);border-radius:14px}.optcard[aria-checked=true]{border-color:var(--cobalt);background:var(--cobalt-wash)}.optcard b{font-weight:500;font-size:15.5px;display:block}.optcard span{font-size:13.5px;color:var(--ink-soft);line-height:1.45}.optcard .mark{margin-left:auto;color:var(--cobalt);flex:none}.grid{display:grid;grid-template-columns:1fr 1fr;gap:11px}.pcard{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden;text-align:left;padding:0;display:flex;flex-direction:column}.pcard .shot{height:96px;position:relative}.pcard .meta{padding:10px 11px 12px}.pcard .nm{font-family:var(--f-display);font-size:15px;font-weight:600;line-height:1.2}.pcard .where{font-size:12.5px;color:var(--ink-soft);margin-top:3px}.heart{position:absolute;top:8px;right:8px;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--card);border:none;color:var(--ink-faint)}.heart[aria-pressed=true]{color:var(--terra)}.lockbadge{position:absolute;left:8px;bottom:8px;display:inline-flex;gap:5px;background:var(--olive-wash);color:var(--olive);font-size:11.5px;font-weight:500;padding:4px 8px;border-radius:7px}.leg,.lockbadge{align-items:center}.leg{display:flex;gap:7px;padding:5px 0 5px 52px;font-size:12.5px;color:var(--ink-faint)}.stoprow{display:flex;gap:11px}.stoprow .clock{width:44px;flex:none;font-size:13px;font-variant-numeric:tabular-nums;color:var(--ink-soft);padding-top:14px}.stopcard{flex:1;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 13px;display:flex;gap:11px}.stopcard.done{opacity:.55}.stopcard.done .nm{text-decoration:line-through}.stopcard .nm{font-weight:500;font-size:15px}.stopcard .cat{font-size:12px;color:var(--ink-faint);margin-top:1px}.stopcard .note{font-size:13.5px;color:var(--ink-soft);margin-top:5px;line-height:1.45}.pin{width:34px;height:34px;border-radius:10px;place-items:center;background:var(--cobalt-wash);color:var(--cobalt)}.checkbtn,.pin{flex:none;display:grid}.checkbtn{width:30px;height:30px;border-radius:9px;border:1.5px solid var(--line-strong);background:transparent;color:transparent;place-items:center}.checkbtn[aria-pressed=true]{background:var(--green);border-color:var(--green);color:#fff}.linkbtn{display:inline-flex;gap:6px;background:var(--cobalt-wash);color:var(--cobalt-deep);border:none;border-radius:9px;padding:6px 11px;font-size:13px;font-weight:500;margin-top:9px}.author,.linkbtn{align-items:center}.author{display:flex;gap:11px}.avatar{width:42px;height:42px;flex:none;border-radius:50%;background:var(--terra-wash);color:var(--terra);display:grid;place-items:center;font-family:var(--f-display);font-size:19px;font-weight:600}.savedbar{position:sticky;bottom:0;gap:12px;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:var(--card);border-top:1px solid var(--line)}.savedbar,.toast{display:flex;align-items:center}.toast{position:fixed;left:50%;bottom:88px;transform:translateX(-50%);gap:14px;background:var(--ink);color:var(--lime);font-size:13.5px;padding:11px 16px;border-radius:11px;z-index:60;max-width:calc(var(--shell) - 32px)}.toast button{background:none;border:none;padding:0;color:var(--terra);font-weight:500;font-size:13.5px}.sheetwrap{position:fixed;inset:0;z-index:50;display:flex;align-items:flex-end;justify-content:center;background:rgba(30,22,14,.45)}.sheet{width:100%;max-width:var(--shell);background:var(--lime);border-radius:20px 20px 0 0;padding:8px 16px calc(20px + env(safe-area-inset-bottom));max-height:82dvh;overflow-y:auto}.grab{width:40px;height:4px;border-radius:3px;background:var(--line-strong);margin:6px auto 14px}.empty{text-align:center;padding:40px 20px;color:var(--ink-soft)}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}.field,.field>span{display:block}.field>span{font-size:13.5px;font-weight:500;margin-bottom:5px}.field input,.field textarea{width:100%;font:inherit;font-size:15px;color:var(--ink);background:var(--card);border:1px solid var(--line-strong);border-radius:11px;padding:11px 12px;resize:vertical}.field input::-moz-placeholder,.field textarea::-moz-placeholder{color:var(--ink-faint)}.field input::placeholder,.field textarea::placeholder{color:var(--ink-faint)}.field input:focus,.field textarea:focus{outline:2px solid var(--cobalt);outline-offset:1px}.fieldlabel{display:block;font-size:13.5px;font-weight:500;margin-bottom:7px}.installbar{position:fixed;left:50%;bottom:14px;transform:translateX(-50%);width:calc(100% - 24px);max-width:calc(var(--shell) - 24px);gap:12px;background:var(--card);border:1px solid var(--line-strong);border-radius:14px;padding:12px 12px 12px 13px;box-shadow:0 6px 22px rgba(51,41,31,.13);z-index:55}.installbar,.ownerlink{display:flex;align-items:center}.ownerlink{justify-content:center;gap:7px;width:100%;margin-top:30px;padding:12px;background:none;border:none;color:var(--ink-faint);font-size:13px}.ownerlink:hover{color:var(--ink-soft)}.statusbar{display:flex;align-items:center;gap:10px;border-radius:12px;padding:11px 13px;margin-bottom:18px;font-size:13.5px;line-height:1.4}.statusbar.ok{background:var(--cobalt-wash);color:var(--cobalt-deep)}.statusbar.warn{background:var(--olive-wash);color:var(--olive)}.bar.haslogo{height:70px}.bar.haslogo img{padding:2px 0}.bar.haslogo img.autodark{filter:invert(1) saturate(.18) brightness(1.06)}.hero{position:relative;border-radius:16px;overflow:hidden;margin-bottom:24px;min-height:196px;display:flex;align-items:flex-end;background:var(--cobalt)}.hero .shot{background-size:cover;background-position:50%}.hero .scrim,.hero .shot{position:absolute;inset:0}.hero .scrim{background:linear-gradient(0deg,rgba(22,16,10,.78) 0,rgba(22,16,10,.34) 42%,rgba(22,16,10,.06))}.hero .who{position:relative;display:flex;align-items:center;gap:12px;padding:16px 15px;width:100%}.hero .face{width:46px;height:46px;flex:none;border-radius:50%;background:hsla(0,0%,100%,.92);color:var(--cobalt);display:grid;place-items:center;font-size:20px;background-size:cover;background-position:50%;box-shadow:0 0 0 2px hsla(0,0%,100%,.35)}.hero .face,.hero .name{font-family:var(--f-display);font-weight:600}.hero .name{color:#fffdf8;font-size:18px;line-height:1.15}.hero .line,.hero .name{text-shadow:0 1px 3px rgba(0,0,0,.35)}.hero .line{color:rgba(255,253,248,.88);font-size:13px;line-height:1.4;margin-top:2px}.ghostinput{width:100%;font:inherit;font-weight:500;font-size:15.5px;color:var(--ink);background:transparent;border:1px solid transparent;border-radius:8px;padding:3px 6px;margin-left:-6px}.ghostinput.sub{font-weight:400;font-size:13.5px;color:var(--ink-soft)}.ghostinput:hover:not(:disabled){border-color:var(--line)}.ghostinput:focus{border-color:var(--cobalt);outline:none;background:var(--card)}.ghostinput:disabled{opacity:.75}.daymap{margin:0 0 20px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px 10px 6px}.daymap figcaption{font-size:12px;color:var(--ink-faint);text-align:center;padding:4px 0}.stopactions{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}.stopactions .linkbtn{margin-top:0;text-decoration:none}.printonly{display:none}@media print{@page{margin:16mm 14mm}body{color:#000}.shell,body{background:#fff}.shell{max-width:none;border:none;min-height:0}.actions,.bar,.btn,.checkbtn,.chiprow,.exportrow,.iconbtn,.installbar,.linkbtn,.ownerlink,.savedbar,.sheetwrap,.stopactions,.toast{display:none!important}.printonly{display:block}.body{padding:0}.card,.daymap,.optcard,.stopcard{border:1px solid #ccc!important;background:#fff!important;-moz-column-break-inside:avoid;break-inside:avoid}.printday{-moz-column-break-before:page;break-before:page;padding-top:4mm}.printday:first-of-type{-moz-column-break-before:auto;break-before:auto}.printhead{border-bottom:1.5pt solid #1b4f86;padding-bottom:6pt;margin-bottom:12pt}.printhead h1{font-family:var(--f-display);font-size:20pt;margin:0 0 2pt;color:#1b4f86}.printhead p{margin:0;font-size:10pt;color:#555}.printstop{display:flex;gap:10pt;padding:7pt 0;border-bottom:.5pt solid #ddd;-moz-column-break-inside:avoid;break-inside:avoid}.printstop .t{width:42pt;font-size:10pt;color:#444;flex:none}.printstop .n{font-size:11.5pt;font-weight:600}.printstop .m{font-size:9.5pt;color:#666}.printstop .d{font-size:10pt;margin-top:2pt}.daymap{padding:0;margin:10pt 0 0}.daymap svg{max-height:60mm}a[href]:after{content:""}}.offlinebar{position:sticky;top:54px;z-index:19;justify-content:center;gap:7px;background:var(--olive-wash);color:var(--olive);font-size:12.5px;padding:7px 12px}.homelink,.offlinebar{display:flex;align-items:center}.homelink{background:none;border:none;padding:0;max-width:74%}.homelink h1{margin:0}.towngrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.towncard{background:var(--card);border:1px solid var(--line);border-radius:13px;overflow:hidden;text-align:left;padding:0}.towncard .shot{display:block;height:68px}.towncard .meta{display:block;padding:9px 11px 11px}.towncard b{font-family:var(--f-display);font-size:15px;font-weight:600;display:block}.towncard small{font-size:12px;color:var(--ink-soft)}.planprompt,.townbar,.tripcardrow{width:100%;display:flex;align-items:center;gap:12px;border-radius:13px;padding:12px 14px;text-align:left}.townbar{background:var(--card);border:1px solid var(--line-strong);color:var(--ink);margin-bottom:10px}.townbar b{font-family:var(--f-display);font-size:16px;font-weight:600;display:block}.townbar small{font-size:12.5px;color:var(--ink-soft)}.planprompt{background:var(--cobalt);border:none;color:#fff}.planprompt b{font-size:14.5px;font-weight:500;display:block}.planprompt small{font-size:12.5px;opacity:.85}.tripcardrow{background:var(--card);border:1px solid var(--line);color:var(--ink);margin-bottom:8px;padding:10px}.tripcardrow .shot{width:48px;height:48px;border-radius:10px;flex:none}.tripcardrow b{font-weight:500;font-size:14.5px;display:block}.tripcardrow small{font-size:12.5px;color:var(--ink-soft)}.traveltime{font-size:11.5px;white-space:nowrap;background:var(--cobalt-wash);color:var(--cobalt-deep);padding:4px 9px;border-radius:7px}.traveltime.none{background:var(--olive-wash);color:var(--olive)}.subrow{display:flex;align-items:center;gap:10px;margin:26px 0 10px}.subrow .sub{flex:1}.modeswitch{display:flex;background:var(--lime-deep);border-radius:9px;padding:2px}.modeswitch button{display:inline-flex;align-items:center;gap:5px;font-size:12px;padding:5px 10px;border:none;border-radius:7px;background:transparent;color:var(--ink-soft)}.modeswitch button[aria-pressed=true]{background:var(--card);color:var(--ink);font-weight:500}.placerow{display:flex;background:var(--card);border:1px solid var(--line);border-radius:13px;overflow:hidden;margin-bottom:10px}.placerow>.shot{width:104px;flex:none;border:none;padding:0}.placerow>.body{flex:1;padding:11px 12px;min-width:0}.placerow .top{display:flex;gap:8px;align-items:flex-start}.placerow .nm{flex:1;text-align:left;background:none;border:none;padding:0;font-family:var(--f-display);font-size:15.5px;font-weight:600;line-height:1.2;color:var(--ink)}.placerow .nm small{display:block;font-family:var(--f-ui);font-size:11.5px;font-weight:400;color:var(--ink-faint);margin-top:2px}.placerow .heart{background:none;border:none;padding:0;color:var(--ink-faint)}.placerow .heart[aria-pressed=true]{color:var(--terra)}.placerow .note{font-size:13px;color:var(--ink-soft);line-height:1.5;margin:7px 0 0}.placerow .flags{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}.flagchip{font-size:10.5px;padding:3px 7px;border-radius:6px;white-space:nowrap}.flagchip.warn{background:var(--olive-wash);color:var(--olive)}.flagchip.cost{background:var(--terra-wash);color:var(--terra)}.flagchip.good{background:var(--cobalt-wash);color:var(--cobalt-deep)}.linkish{background:none;border:none;padding:0;color:var(--cobalt);font-size:inherit}.membercard{background:var(--card);border:1px solid color-mix(in srgb,var(--olive) 40%,var(--line));border-radius:14px;padding:15px;margin-top:24px}.membercard .head{display:flex;align-items:center;gap:9px;color:var(--olive);margin-bottom:8px}.membercard .head b{font-family:var(--f-display);font-size:16px;font-weight:600;color:var(--ink)}.membercard p{font-size:13px;color:var(--ink-soft);line-height:1.5;margin:0 0 12px}.membercard .peek{display:flex;gap:8px;margin-bottom:14px}.membercard .peek span{flex:1;height:58px;border-radius:9px;filter:saturate(.45) blur(3px)}.membercard .btn{background:var(--olive)}.stayrow{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:8px}.stayrow b{font-weight:500;font-size:14.5px}.nights{display:flex;align-items:center;gap:8px}.nights button{width:30px;height:30px;border-radius:8px;border:1px solid var(--line-strong);background:var(--card);display:grid;place-items:center}.nights span{font-size:14px;min-width:52px;text-align:center}.regionhead{display:flex;align-items:center;gap:10px;background:var(--lime-deep);border:1px solid var(--line);border-radius:10px;padding:9px 12px;margin-bottom:10px}.regionhead .swatch{width:18px;height:18px;border-radius:5px;flex:none}.regionhead .nm{flex:1;font-family:var(--f-display);font-size:15.5px;font-weight:600}.regionhead .count{font-size:12px;color:var(--ink-faint)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.planrow{display:flex;flex-direction:column;gap:9px}.planprompt.quiet{background:var(--card);border:1px solid var(--line-strong);color:var(--ink)}.planprompt.quiet small{color:var(--ink-soft);opacity:1}.planprompt.quiet .ic{color:var(--cobalt)}.langbtn{min-width:34px;height:34px;padding:0 8px;border:1px solid var(--line-strong);border-radius:9px;background:var(--card);color:var(--ink-soft);font-size:12px;font-weight:600;letter-spacing:.02em}.langbtn:hover{color:var(--ink);border-color:var(--ink-faint)}