:root{--forest:#143f38;--teal:#147a70;--on-accent:#fff;--on-mint:#143f38;--mint:#dcece5;--canvas:#f6f6f0;--surface:#fff;--ink:#172622;--muted:#718079;--line:#dde4de;--peach:#efc8ad;--shadow:0 12px 50px #183d2910;color-scheme:light;font-family:'Avenir Next',Avenir,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--canvas);color:var(--ink);font-size:16px;line-height:1.6}button,input,select{font:inherit}a{color:var(--teal);text-underline-offset:4px}button,.button{cursor:pointer;border:0;border-radius:16px;padding:12px 19px;background:var(--teal);color:var(--on-accent);text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:9px;font-weight:600;line-height:1.4;min-height:44px}button:hover,.button:hover{filter:brightness(.95)}button:disabled{opacity:.55;cursor:wait}button.secondary,.button.secondary{background:var(--mint);color:var(--teal)}button.quiet{background:transparent;color:var(--teal)}button.danger{background:#fcebe7;color:#a23e30}button.icon{padding:10px;min-width:44px}button svg,.button svg{width:23px;height:23px;flex-shrink:0}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #ce9555;outline-offset:4px}h1,h2,h3,p{margin-top:0}h1{font-size:42px;letter-spacing:-1.6px;line-height:1.16;margin-bottom:15px}h2{font-size:26px;letter-spacing:-.7px;line-height:1.25;margin-bottom:12px}h3{font-size:18px;margin-bottom:8px}p{margin-bottom:16px}.muted,.fine{color:var(--muted)}.fine{font-size:13px}.lead{font-size:20px;color:var(--muted);max-width:540px}.eyebrow{font-size:11px;font-weight:700;letter-spacing:2px;color:var(--teal);margin-bottom:16px}.brand{display:flex;align-items:center;gap:11px;font-size:25px;font-weight:750;letter-spacing:-1px;text-decoration:none;color:var(--forest)}.brand img{width:43px;height:43px;border-radius:13px}.card{background:var(--surface);border:1px solid var(--line);padding:25px;border-radius:26px;box-shadow:var(--shadow)}.row{display:flex;align-items:center;gap:13px}.row.between{justify-content:space-between}.actions{display:flex;flex-wrap:wrap;gap:10px}.stack{display:grid;gap:20px}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.pill{background:var(--mint);color:var(--teal);border-radius:30px;font-size:12px;padding:6px 11px;font-weight:600}.avatar{width:49px;height:49px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--mint);color:var(--teal);font-weight:750;flex-shrink:0}.member{padding:17px 0;border-bottom:1px solid var(--line);display:flex;gap:14px;align-items:center;width:100%;text-align:left;border-radius:0;background:transparent;color:var(--ink);font-weight:400}.member:last-child{border-bottom:0}.member .detail{flex:1;min-width:0}.member strong{display:block;font-size:17px;overflow-wrap:anywhere}.member small{color:var(--muted);display:block}.empty{padding:32px 15px;text-align:center;color:var(--muted)}.notice{padding:15px 18px;border-radius:17px;background:var(--mint);color:var(--on-mint);font-size:14px}.notice.error{background:#fff0e8;color:#9f4021}label{display:block;font-size:13px;font-weight:650;margin:14px 0 6px}input,select{width:100%;border:1px solid var(--line);border-radius:13px;padding:12px 13px;background:var(--surface);color:var(--ink);min-height:46px}input[type=checkbox]{width:20px;min-height:20px;accent-color:var(--teal)}.check{display:flex;align-items:flex-start;gap:10px;font-weight:400}.check input{flex-shrink:0}.form-actions{margin-top:24px;display:flex;gap:10px}.form-actions button{flex:1}.loading{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center}.loading img{border-radius:23px}#toast{position:fixed;bottom:100px;left:50%;transform:translateX(-50%);max-width:min(92vw,550px);z-index:5000;background:var(--forest);color:white;border-radius:17px;padding:15px 22px;box-shadow:var(--shadow);display:none}#toast.visible{display:block}dialog{width:min(520px,calc(100% - 28px));max-height:90dvh;overflow:auto;border:1px solid var(--line);border-radius:28px;background:var(--surface);color:var(--ink);padding:28px;box-shadow:0 25px 100px #0003}dialog::backdrop{background:#102d2866;backdrop-filter:blur(5px)}dialog h2{padding-right:35px}dialog .close{position:absolute;right:16px;top:15px}#dialog-error:empty{display:none}.sidebar{position:fixed;inset:0 auto 0 0;width:235px;background:var(--surface);border-right:1px solid var(--line);padding:30px 23px;z-index:1100;display:flex;flex-direction:column}.sidebar nav{display:grid;gap:8px;margin-top:48px}.nav-item{display:flex;gap:13px;align-items:center;padding:14px 17px;color:var(--muted);text-decoration:none;border-radius:17px;font-weight:600;font-size:15px}.nav-item svg{width:23px;height:23px}.nav-item.active{background:var(--mint);color:var(--teal)}.sidebar-bottom{margin-top:auto}.sidebar-bottom p{font-size:12px}.sidebar-bottom .avatar{width:36px;height:36px}.workspace{margin-left:235px}.topbar{height:92px;display:flex;align-items:center;justify-content:space-between;padding:20px 36px;border-bottom:1px solid var(--line);gap:18px}.topbar .circle-select{max-width:280px;border:0;background:var(--mint);font-weight:650;color:var(--on-mint);border-radius:30px}.topbar .date{font-size:13px;color:var(--muted)}.page{max-width:1250px;margin:auto;padding:35px}.page-title{display:flex;justify-content:space-between;align-items:start;gap:15px;margin-bottom:26px}.page-title h1{font-size:36px}.page-title p{margin-bottom:0}.mobile-nav{display:none}.hero{background:var(--forest);color:white;position:relative;overflow:hidden;min-height:210px;padding:32px;border-radius:28px;margin-bottom:24px}.hero p{color:#c8ddd4;max-width:430px}.hero h2{font-size:32px;max-width:430px}.hero-art{position:absolute;width:205px;height:205px;right:20px;top:10px;border:1px solid #ffffff20;border-radius:50%;display:grid;place-items:center}.hero-art:before{content:'';position:absolute;inset:33px;border:1px dashed #ffffff40;border-radius:50%}.hero-art span{display:grid;place-items:center;background:#c2edcc;color:var(--forest);border-radius:50%;width:72px;height:72px;font-size:32px}.hero-art b{position:absolute;top:18px;left:15px;background:var(--peach);width:42px;height:42px;border-radius:50%;display:grid;place-items:center;color:var(--forest)}.stats{display:flex;gap:12px;margin-bottom:24px}.stat{flex:1}.stat strong{font-size:28px;display:block}.stat span{font-size:13px;color:var(--muted)}.home-layout{height:calc(100dvh - 92px);position:relative;display:grid;grid-template-columns:minmax(0,1fr) 350px}.map-area{position:relative;min-height:350px}.map-canvas{height:100%;width:100%;background:#e8eedf}.map-tools{position:absolute;right:20px;top:20px;z-index:600;display:grid;gap:8px}.map-tools button{background:var(--surface);color:var(--teal);box-shadow:var(--shadow)}.map-note{position:absolute;left:20px;top:20px;z-index:600;background:var(--surface);padding:8px 13px;border-radius:15px;font-size:12px;max-width:65%}.people-panel{padding:27px 24px;background:var(--surface);overflow:auto}.people-panel .handle{display:none}.people-panel h1{font-size:31px}.people-panel .actions{margin-top:22px}.people-panel .actions button{flex:1;font-size:13px;padding:12px}.map-avatar{background:transparent;border:0}.map-avatar span{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:var(--teal);color:var(--on-accent);border:3px solid #e4f8ef;box-shadow:0 3px 16px #143f3833;font:700 17px 'Avenir Next',sans-serif}.map-avatar.paused span{background:#b77d60;border-color:#f8e0d0}.leaflet-container{font-family:inherit}.leaflet-popup-content-wrapper{border-radius:17px}.leaflet-control-attribution{font-size:10px!important}.auth-wrap{max-width:1180px;margin:auto;padding:35px}.auth-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:70px;align-items:center;min-height:calc(100dvh - 180px)}.auth-story h1{font-size:clamp(46px,5.4vw,72px);letter-spacing:-3px}.auth-story h1 em, .install-wrap h1 em{font-style:normal;color:var(--teal)}.auth-story .hero{margin-top:32px;min-height:170px;max-width:490px}.auth-story .hero-art{right:20px;top:-15px}.auth-story .hero h3{margin-top:14px;font-size:25px;max-width:210px}.auth-card{padding:35px}.auth-card h2{font-size:30px}.auth-card .submit{width:100%;margin-top:23px}.auth-tabs{display:flex;background:var(--canvas);border-radius:15px;padding:4px;margin-bottom:25px}.auth-tabs button{flex:1;background:transparent;color:var(--muted);font-size:14px}.auth-tabs button.active{background:var(--surface);color:var(--teal);box-shadow:0 2px 8px #0000000a}.install-wrap{max-width:1150px;margin:auto;padding:35px}.install-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:70px;align-items:center;padding:70px 0}.install-wrap h1{font-size:clamp(45px,5.5vw,70px);letter-spacing:-2px}.install-card{padding:38px}.app-icon{width:87px;height:87px;border-radius:25px;margin-bottom:20px}.install-card li{margin-bottom:14px;padding-left:5px}.install-card ol{padding-left:23px}.install-card button{width:100%;margin:6px 0 20px}footer{display:flex;flex-wrap:wrap;gap:22px;margin-top:35px;color:var(--muted);font-size:12px}footer span{margin-right:auto}.trip-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}.trip-grid strong{display:block}.trip-grid span{font-size:12px;color:var(--muted)}[hidden]{display:none!important}html[data-theme=dark]{--canvas:#111612;--surface:#1d2722;--ink:#eef4ef;--muted:#b5c5bb;--line:#496255;--mint:#29483e;--teal:#8ad0b5;--on-accent:#123c30;--on-mint:#d4f4e5;--forest:#153e34;color-scheme:dark}html[data-theme=dark] .brand{color:var(--ink)}html[data-theme=dark] .leaflet-tile-pane{filter:brightness(.75) saturate(.7)}
@media(max-width:1150px){.hero-art{opacity:.4;right:-45px}.hero h2,.hero p{position:relative;z-index:1}.sidebar{width:205px;padding:25px 15px}.workspace{margin-left:205px}.home-layout{grid-template-columns:minmax(0,1fr) 300px}.people-panel{padding:25px 18px}.page{padding:28px}.auth-grid,.install-grid{gap:35px}}
@media(max-width:760px){body{font-size:15px}.sidebar{display:none}.workspace{margin-left:0;padding-bottom:95px}.topbar{height:76px;padding:13px 18px;padding-top:max(13px,env(safe-area-inset-top));border:0}.topbar .date{display:none}.topbar .circle-select{max-width:70%;font-size:15px}.topbar .install-link{display:none}.mobile-nav{position:fixed;display:flex;justify-content:space-around;bottom:max(12px,env(safe-area-inset-bottom));left:12px;right:12px;padding:6px;background:color-mix(in srgb,var(--surface) 90%,transparent);backdrop-filter:blur(20px);border:1px solid var(--line);border-radius:36px;z-index:1200;box-shadow:0 5px 30px #183d2920}.nav-item{flex:1;flex-direction:column;gap:3px;font-size:10px;padding:10px 4px;border-radius:30px}.nav-item svg{width:25px;height:25px}.page{padding:22px 18px}.page-title{margin-bottom:23px}.page-title h1{font-size:31px}.grid{grid-template-columns:1fr}.card{padding:21px;border-radius:24px}.hero{padding:25px}.hero h2{font-size:28px}.hero-art{right:-35px}.hero p{max-width:80%;font-size:14px}.stats{gap:8px}.stat{padding:17px 12px}.stat strong{font-size:25px}.stat span{font-size:11px}.home-layout{display:block;height:calc(100dvh - 76px);min-height:460px}.map-area{height:100%;min-height:0}.map-tools{right:15px;top:14px}.map-note{top:15px;left:15px;font-size:11px}.people-panel{position:absolute;z-index:700;bottom:100px;left:10px;right:10px;max-height:42%;min-height:215px;padding:10px 20px 20px;border:1px solid var(--line);border-radius:32px;background:color-mix(in srgb,var(--surface) 94%,transparent);backdrop-filter:blur(22px);box-shadow:var(--shadow)}.people-panel.expanded{max-height:75%}.people-panel .handle{display:block;min-height:24px;width:100%;padding:6px;margin-bottom:10px;background:transparent}.handle:before{content:'';width:35px;height:5px;background:#c6cbc6;border-radius:5px}.people-panel h1{font-size:28px}.people-panel .member{padding:14px 0}.people-panel .actions{margin-top:16px}.home-layout .leaflet-bottom{bottom:92px}.auth-wrap{padding:24px 21px}.auth-grid{display:flex;flex-direction:column;gap:22px;padding:35px 0;min-height:0;align-items:stretch}.auth-story h1{font-size:43px;letter-spacing:-1.8px}.auth-story .hero{display:none}.auth-story .lead{font-size:17px;margin-bottom:0}.auth-story .eyebrow{margin-bottom:12px}.auth-card{padding:25px}.auth-card h2{font-size:26px}.install-wrap{padding:25px 21px}.install-grid{grid-template-columns:1fr;gap:30px;padding:44px 0 30px}.install-wrap h1{font-size:48px}.install-card{padding:27px}.install-wrap .lead{font-size:18px}.member strong{font-size:16px}dialog{padding:25px}h1{font-size:34px}.row.between{gap:12px}.row.between h2{margin-bottom:0}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
.workspace:has(.home-layout){padding-bottom:0}.map-area .leaflet-top.leaflet-right{top:135px;right:10px}.people-panel .handle{touch-action:none}.avatar svg{width:24px;height:24px}.people-panel .handle:focus-visible{outline-offset:0}
@media(max-width:480px){.auth-tabs button{font-size:13px}.topbar .circle-select{max-width:78%}.home-layout .map-note{max-width:70%}}

.people-panel .handle:before{display:block;margin:auto}

/* Keep content within the screen; the map retains its own pan controls. */
html,body{width:100%;max-width:100%;overflow-x:clip;overscroll-behavior-x:none}
#app,.workspace,#main,.page,.auth-wrap,.install-wrap{min-width:0;max-width:100%}
.grid>*,.auth-grid>*,.install-grid>*,.row>*,.page-title>*,.stats>*,.trip-grid>*{min-width:0}
.card,.notice,.detail,footer{overflow-wrap:anywhere}
input,select{min-width:0;max-width:100%}
.form-actions>*{min-width:0}
.people-panel,dialog{overflow-x:hidden;overscroll-behavior-x:none}
@media(max-width:760px){
 :root{--mobile-nav-height:64px;--mobile-nav-space:calc(var(--mobile-nav-height) + env(safe-area-inset-bottom,0px));--mobile-header-height:calc(64px + env(safe-area-inset-top,0px))}
 input,select{font-size:16px}
 .workspace{padding-bottom:calc(var(--mobile-nav-space) + 16px)}
 .topbar{height:var(--mobile-header-height);padding:calc(10px + env(safe-area-inset-top,0px)) 16px 10px;gap:10px}
 .topbar .circle-select{flex:1;width:0;max-width:none;text-overflow:ellipsis}
 .topbar>.row{flex-shrink:0}
 .mobile-nav{bottom:0;left:0;right:0;min-height:var(--mobile-nav-space);padding:4px 8px calc(4px + env(safe-area-inset-bottom,0px));border-radius:22px 22px 0 0;border-bottom:0;gap:2px;align-items:stretch}
 .mobile-nav .nav-item{flex:1 1 0;min-width:0;padding:7px 2px;border-radius:18px;font-size:10px;gap:2px;line-height:16px}
 .mobile-nav .nav-item svg{width:23px;height:23px}
 .home-layout{height:calc(100dvh - var(--mobile-header-height));min-height:0;overflow:hidden}
 .people-panel{bottom:calc(var(--mobile-nav-space) + 18px);max-width:calc(100% - 20px)}
 .home-layout .leaflet-bottom{bottom:var(--mobile-nav-space)}
 #toast{bottom:calc(var(--mobile-nav-space) + 16px);width:max-content;max-width:calc(100% - 32px);overflow-wrap:anywhere}
 .page-title{flex-wrap:wrap}.page-title>div{flex:1 1 190px}
 .member{gap:10px}.member .actions{flex-wrap:wrap}
 .install-wrap h1{font-size:clamp(38px,12vw,48px)}
}
@media(max-width:360px){.page,.auth-wrap,.install-wrap{padding-left:14px;padding-right:14px}.card,.auth-card,.install-card{padding:18px}.stat{padding:14px 8px}.people-panel{padding-left:16px;padding-right:16px}}

/* Theme text by its surface, so transparent controls retain readable text. */
input::placeholder{color:var(--muted);opacity:1}
html[data-theme=dark] input,html[data-theme=dark] select{border-color:#658477}
html[data-theme=dark] .topbar .circle-select{border:1px solid #658477}
html[data-theme=dark] .circle-select option{background:var(--surface);color:var(--ink)}
html[data-theme=dark] .member:hover{background:#ffffff06;filter:none}
html[data-theme=dark] .leaflet-popup-content-wrapper,
html[data-theme=dark] .leaflet-popup-tip,
html[data-theme=dark] .leaflet-bar a,
html[data-theme=dark] .leaflet-control-attribution{background:var(--surface);color:var(--ink)}
html[data-theme=dark] .leaflet-bar a{border-color:var(--line)}
html[data-theme=dark] .leaflet-bar a:hover{background:var(--mint)}
html[data-theme=dark] .leaflet-control-attribution a,
html[data-theme=dark] .leaflet-container a.leaflet-popup-close-button{color:var(--teal)}
html[data-theme=dark] .leaflet-bar a.leaflet-disabled{color:var(--muted)}
html[data-theme=dark] .map-canvas{background:#18271f}
