:root{--bg:#f7f4ee;--card:#fff;--tx:#1e2a32;--mut:#5f6b73;--bd:#e3ddd0;--ac:#0f766e;--ac-tx:#fff;--ac2:#e2f2ef;--sun:#9a5b00;--sunb:#fff1d6;--rf:#b42318;--rfb:#fde4e1;--sh:0 1px 2px #1e2a320f,0 4px 14px #1e2a320f;--radius:14px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0f1719;--card:#172226;--tx:#e6eef0;--mut:#9aabb1;--bd:#28383d;--ac:#3cc4b4;--ac-tx:#06201d;--ac2:#13332f;--sun:#f5c46b;--sunb:#3a2c10;--rf:#ff8a80;--rfb:#3d1a17;--sh:none}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0f1719;--card:#172226;--tx:#e6eef0;--mut:#9aabb1;--bd:#28383d;--ac:#3cc4b4;--ac-tx:#06201d;--ac2:#13332f;--sun:#f5c46b;--sunb:#3a2c10;--rf:#ff8a80;--rfb:#3d1a17;--sh:none}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--tx);flex-direction:column;min-height:100vh;margin:0;font:16px/1.55 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;display:flex}#app{display:contents}a{color:var(--ac)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--ac);outline-offset:2px}h1,h2,h3,h4{margin:0;line-height:1.25}h1{letter-spacing:-.01em;font-size:clamp(1.6rem,4vw,2.2rem)}h2{font-size:1.15rem}p{margin:0}.muted{color:var(--mut)}.small{font-size:.875rem}.grow{flex:1}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.topbar{z-index:10;background:var(--card);border-bottom:1px solid var(--bd);padding-top:env(safe-area-inset-top,0px);position:sticky;top:0}.topbar .in{align-items:center;gap:8px;max-width:1100px;height:56px;margin:0 auto;padding:0 16px;display:flex}.topbar .brand{color:var(--tx);white-space:nowrap;margin-right:8px;font-size:1.1rem;font-weight:700;text-decoration:none}.topbar .nav{scrollbar-width:none;gap:2px;display:flex;overflow-x:auto}.topbar .nav a{color:var(--mut);white-space:nowrap;border-radius:8px;padding:6px 10px;font-size:.92rem;text-decoration:none}.topbar .nav a:hover{background:var(--ac2);color:var(--tx)}.topbar .nav a[aria-current=page]{color:var(--ac);background:var(--ac2);font-weight:600}.topbar .who{white-space:nowrap;align-items:center;gap:8px;display:flex}.topbar .who-name{font-size:.9rem;font-weight:600}.topbar .short{display:none}@media (width<=600px){.topbar .in{gap:4px;padding:0 10px}.topbar .brand{margin-right:2px}.topbar .brand-name,.topbar .who-name,.topbar .long{display:none}.topbar .short{display:inline}.topbar .nav a{padding:6px 8px;font-size:.85rem}}.page{flex:1;width:100%;max-width:1100px;margin:0 auto;padding:24px 16px 48px}.page.narrow{max-width:760px}.hero{margin-bottom:20px}.hero p{max-width:60ch;margin-top:6px}.hero-row{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.back{margin-bottom:16px;font-size:.9rem;text-decoration:none;display:inline-block}.section{margin-top:32px}.section>h2{margin-bottom:12px;font-size:1.25rem}.field-row{flex-wrap:wrap;gap:12px;display:flex}.field-row>.field{flex:140px}.row-actions{flex-wrap:wrap;align-items:center;gap:4px;display:inline-flex}.row-actions.start{margin-top:10px}.next-journey{color:var(--tx);border-color:var(--ac);align-items:center;gap:14px;margin-bottom:20px;padding:14px 18px;text-decoration:none;display:flex}.next-journey:hover{background:var(--ac2)}.next-journey .icon{font-size:1.8rem}.next-journey .text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.next-journey .badge{align-self:flex-start}.next-journey .go{color:var(--ac);white-space:nowrap;font-weight:600}@media (width<=600px){.next-journey .go{display:none}}.footer{width:100%;max-width:1100px;padding:16px 16px calc(24px + env(safe-area-inset-bottom,0px));color:var(--mut);border-top:1px solid var(--bd);margin:0 auto;font-size:.8rem}.footer a{color:inherit}.card{background:var(--card);border:1px solid var(--bd);border-radius:var(--radius);box-shadow:var(--sh)}.empty{text-align:center;color:var(--mut);background:var(--card);border:1px dashed var(--bd);border-radius:var(--radius);padding:32px 16px}.msg{border-radius:10px;padding:10px 14px;font-size:.9rem}.msg.error{background:var(--rfb);color:var(--rf)}.msg.info{background:var(--ac2);color:var(--tx)}.slow-status{align-items:center;gap:8px;display:flex}.spinner{border:2px solid var(--bd);border-top-color:var(--ac);border-radius:50%;flex:none;width:14px;height:14px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:2.4s}}.badge{white-space:nowrap;border-radius:999px;padding:2px 10px;font-size:.78rem;font-weight:600;display:inline-block}.badge.good{background:var(--sunb);color:var(--sun)}.badge.upcoming{background:var(--ac2);color:var(--ac)}.badge.ongoing{background:var(--sunb);color:var(--sun)}.badge.past{background:var(--bd);color:var(--mut)}.badge.trip{background:var(--ac2);color:var(--ac);vertical-align:1px;margin-left:8px}.dot{vertical-align:1px;border-radius:50%;width:8px;height:8px;margin-left:6px;display:inline-block}.dot.good{background:var(--sun)}.dot.nice{background:var(--ac)}.btn{font:inherit;border:1px solid var(--ac);background:var(--ac);color:var(--ac-tx);cursor:pointer;border-radius:10px;min-height:40px;padding:8px 16px;font-weight:600}.btn:hover{filter:brightness(1.08)}.btn:disabled{opacity:.55;cursor:default;filter:none}.btn.ghost{color:var(--ac);border-color:var(--bd);background:0 0}.btn.ghost:hover{background:var(--ac2);filter:none}.btn.small{min-height:34px;padding:4px 12px;font-size:.875rem}.btn.danger{background:var(--rf);border-color:var(--rf);color:#fff}.danger-text{color:var(--rf)!important}.icon-btn{font:inherit;color:var(--mut);cursor:pointer;background:0 0;border:0;border-radius:8px;width:36px;height:36px;font-size:1.1rem}.icon-btn:hover{background:var(--ac2);color:var(--tx)}.form{flex-direction:column;gap:14px;display:flex}.field{border:0;flex-direction:column;gap:4px;min-width:0;margin:0;padding:0;display:flex}.field>span,.field>legend{padding:0;font-size:.875rem;font-weight:600}input,select,textarea{font:inherit;color:inherit;background:var(--bg);border:1px solid var(--bd);border-radius:10px;width:100%;min-height:42px;padding:8px 12px}textarea{resize:vertical}.check{cursor:pointer;align-items:flex-start;gap:10px;font-size:.92rem;display:flex}.check input{width:20px;height:20px;min-height:0;accent-color:var(--ac);flex:none;margin:2px 0 0}.actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.picked{background:var(--ac2);border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.months{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1px solid var(--bd);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:999px;align-items:center;min-height:34px;padding:4px 12px;font-size:.875rem;display:inline-flex}.chip input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.chip.on{background:var(--sunb);border-color:var(--sun);color:var(--sun);font-weight:600}.chip:has(input:focus-visible){outline:2px solid var(--ac);outline-offset:2px}.stage-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.stage-row{align-items:center;gap:8px;display:flex}.stage-row.several{grid-template-columns:auto minmax(0,1.3fr) minmax(0,1fr) minmax(0,1fr) auto;display:grid}.stage-num{background:var(--ac);width:26px;height:26px;color:var(--ac-tx);border-radius:50%;place-items:center;font-size:.85rem;font-weight:700;display:inline-grid}@media (width<=600px){.stage-row.several{grid-template-columns:auto minmax(0,1fr) auto}.stage-row.several input{grid-column:2}}fieldset.stages .row-actions{gap:8px;margin-top:8px}.place-search{flex-direction:column;gap:6px;display:flex}.place-results{border:1px solid var(--bd);border-radius:10px;margin:0;padding:0;list-style:none;overflow:hidden}.place-results li+li{border-top:1px solid var(--bd)}.place-results button{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;width:100%;padding:10px 12px}.place-results button:hover,.place-results button:focus-visible{background:var(--ac2)}.dlg{border:1px solid var(--bd);border-radius:var(--radius);background:var(--card);color:var(--tx);width:min(520px,100vw - 32px);max-height:calc(100dvh - 32px);padding:0}.dlg::backdrop{background:#080e108c}.dlg header{justify-content:space-between;align-items:center;gap:8px;padding:14px 16px 0 20px;display:flex}.dlg .form{padding:16px 20px 20px}.panel{background:var(--card);border:1px solid var(--bd);border-radius:var(--radius);margin-top:32px;padding:16px 20px}.panel-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.list{margin:0;padding:0;list-style:none}.list li{justify-content:space-between;align-items:center;gap:12px;padding:8px 0;display:flex}.list li+li{border-top:1px solid var(--bd)}.strip{text-align:center;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px;margin:0;padding:0;list-style:none;display:grid}.strip li{border-radius:8px;flex-direction:column;align-items:center;padding:6px 0;font-size:.8rem;line-height:1.3;display:flex}.strip li.today{background:var(--ac2)}.strip .d{color:var(--mut);text-transform:capitalize}.strip .i{font-size:1.35rem;line-height:1.5}.strip .hi{font-weight:700}.strip .lo{color:var(--mut)}.climate-line{flex-direction:column;gap:6px;display:flex}.climate-line ul{background:var(--ac2);border-radius:10px;flex-wrap:wrap;gap:4px 16px;margin:0;padding:10px 12px;font-size:.9rem;list-style:none;display:flex}.trip-map{border-radius:var(--radius);border:1px solid var(--bd);z-index:0;background:var(--card);height:320px;margin-bottom:20px;overflow:hidden}.trip-map.small{height:260px;margin-bottom:0}@media (width<=600px){.trip-map{height:220px}}.leaflet-container{font:inherit}.leaflet-container a{color:var(--ac)}.offline-bar{background:var(--sunb);color:var(--tx);border-top:1px solid var(--bd);font-size:.85rem}.offline-bar .in{flex-wrap:wrap;align-items:center;gap:4px 16px;max-width:1100px;height:auto;margin:0 auto;padding:6px 16px;display:flex}.offline-bar .sync-error{color:var(--rf)}
