:root{font-family:Inter,system-ui,sans-serif;color:#eef5f1;background:#0b1210;color-scheme:dark;--panel:#15211e;--line:#2c3d37;--mint:#8ef0bd;--amber:#ffc45d;--red:#ff786f}
*{box-sizing:border-box}
body{margin:0;background:radial-gradient(circle at 90% 0,#18362a 0,transparent 28%),#0b1210;min-height:100vh}
.authScreen{position:fixed;inset:0;z-index:100;background:radial-gradient(circle at 80% 10%,#1d4938,transparent 34%),#09110e;display:grid;place-items:center;padding:20px}.authScreen.hidden{display:none}.authCard{width:min(100%,430px);background:#13211d;border:1px solid #2c3d37;border-radius:24px;padding:24px;box-shadow:0 25px 80px #0008}.authCard h1{text-align:center;margin:8px 0}.authCard>p{text-align:center;color:#9db3aa}.authLogo{margin:auto;display:grid;place-items:center;width:58px;height:58px;border-radius:18px;background:#8ef0bd;color:#082016;font-size:1.8rem}.authLinks{display:flex;justify-content:center;gap:8px;flex-wrap:wrap}.authLinks button{background:none;border:0;color:#8ef0bd;padding:9px}.teamPanel{margin-top:20px;background:#111d19;border:1px solid #2c3d37;border-radius:18px;padding:15px}.memberList{display:flex;gap:8px;flex-wrap:wrap}.member{display:flex;align-items:center;gap:8px;background:#20352d;border-radius:24px;padding:7px 11px}.memberAvatar{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#8ef0bd;color:#092017;font-weight:800}.memberAdd{display:flex;gap:8px;margin-top:12px}.memberAdd input{margin:0}.memberAdd button{white-space:nowrap}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
header{height:68px;display:flex;align-items:center;gap:14px;padding:10px 16px;position:sticky;top:0;z-index:10;background:#0b1210e8;backdrop-filter:blur(14px);border-bottom:1px solid #1f302a}
header h1{font-size:1.08rem;margin:0}
header span{font-size:.72rem;color:var(--mint)}
header>div{flex:1}
.icon{border:0;background:#1b2a25;color:#fff;border-radius:12px;width:44px;height:44px;font-size:1.25rem}
main{max-width:900px;margin:auto;padding:16px 16px 100px}
.view{display:none}
.view.active{display:block}
.warning{border:1px solid #755427;background:#2a2115;padding:14px;border-radius:14px;color:#ffe4a6;line-height:1.4}
.warning.soft{margin-bottom:16px;color:#dce7e1;border-color:#365047;background:#14241f}
.hero{margin:18px 0;padding:22px;border-radius:24px;background:linear-gradient(135deg,#1e4938,#172723);box-shadow:0 20px 50px #0005}
.hero p,.sectionHead p{margin:0;color:#9db3aa;font-size:.82rem}
.hero h2{font-size:1.75rem;margin:5px 0 14px}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}
.chips span{padding:6px 10px;border-radius:20px;background:#0d171488;font-size:.8rem}
.primary{background:var(--mint);color:#082016;border:0;border-radius:12px;padding:12px 16px;font-weight:800}
.compact{padding:10px 12px}
.full{width:100%;margin:12px 0}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.tile{min-height:120px;text-align:left;border:1px solid var(--line);background:var(--panel);color:#fff;border-radius:18px;padding:18px;font-size:1.5rem}
.tile b,.tile small{display:block}
.tile b{font-size:1rem;margin-top:12px}
.tile small{font-size:.75rem;color:#91a69e;margin-top:4px}
.sectionHead{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.sectionHead h2{margin:2px 0}
.map{height:250px;border-radius:20px;position:relative;overflow:hidden;background:linear-gradient(30deg,#1b352b,#203b34);color:#17231f}.map .mapnote{z-index:500;color:#fff}.leaflet-popup-content{color:#17231f}.leaflet-control-attribution{font-size:10px}
.mapgrid{position:absolute;inset:0;background-image:linear-gradient(#ffffff0c 1px,transparent 1px),linear-gradient(90deg,#ffffff0c 1px,transparent 1px);background-size:24px 24px;transform:rotate(8deg) scale(1.3)}
.pin{position:absolute;border:3px solid #fff;background:var(--amber);color:#201400;width:38px;height:38px;border-radius:50%;font-weight:900}
.p1{left:18%;top:30%}
.p2{left:53%;top:55%}
.p3{right:15%;top:22%}
.mapnote{position:absolute;bottom:8px;left:8px;background:#07100dcc;padding:6px 8px;border-radius:8px;font-size:.7rem}
.cards{display:grid;gap:10px;margin-top:14px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:15px;padding:14px}
.card h3{margin:0 0 5px}
.card small{color:#9db0a9}
.badge{display:inline-block;margin-top:10px;padding:4px 8px;border-radius:20px;background:#1f3d31;color:var(--mint);font-size:.72rem}
.sourceLink{display:inline-block;margin-top:10px;color:#8ef0bd;font-size:.78rem;text-decoration:none}.sourceLink:hover{text-decoration:underline}
.placeTitle{display:flex;align-items:center;justify-content:space-between;gap:10px}.placeTitle h3{margin:0}.visitToggle{border:1px solid #54675f;background:#1b2823;color:#b8c8c1;border-radius:20px;padding:6px 9px;font-size:.74rem;white-space:nowrap}.visitToggle.visited{border-color:#3d8c68;background:#18392c;color:#8ef0bd}.visitMarker{background:none;border:0}.visitMarker span{display:grid;place-items:center;width:34px;height:34px;border:3px solid #fff;border-radius:50%;font-weight:900;box-shadow:0 4px 12px #0008}.visitMarker .done{background:#8ef0bd;color:#082016}.visitMarker .open{background:#ffc45d;color:#231700}
.badge.open{background:#46391d;color:#ffe09a}
.route{display:grid;gap:10px}
.routeItem{display:flex;align-items:center;gap:12px;background:var(--panel);border-radius:14px;padding:12px}
.routeNum{display:grid;place-items:center;background:#263c34;width:34px;height:34px;border-radius:50%;font-weight:bold}
.routeItem div:nth-child(2){flex:1}
.routeItem small{display:block;color:#91a69e}
.summary,.info{margin:14px 0;padding:14px;background:#14231e;border:1px solid var(--line);border-radius:14px}
.summary small{display:block;color:#91a69e;margin-top:4px}
.actions{display:flex;gap:10px}
.actions button{flex:1;border:1px solid var(--line);background:#182722;color:white;padding:11px;border-radius:11px}
.hidden{display:none}
.checkGroup{margin:12px 0;background:var(--panel);border-radius:16px;padding:14px}
.checkGroup h3{margin:0 0 10px}
.check{display:flex;gap:10px;padding:10px 0;border-top:1px solid #263731}
.check input{width:20px;height:20px}
label{display:block;color:#b9c9c3;margin:12px 0;font-size:.85rem}
input,select,textarea{display:block;width:100%;margin-top:6px;background:#111d19;border:1px solid #344942;border-radius:11px;padding:12px;color:#fff;min-height:45px}
textarea{min-height:120px;resize:vertical}
.capture{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.upload{display:grid;place-items:center;background:#1a2b25;border:1px dashed #537266;padding:18px;border-radius:14px;color:white}
.upload input{display:none}
.upload.wide{margin:14px 0}
.setting{display:flex;align-items:center;gap:12px;justify-content:space-between;padding:16px 0;border-bottom:1px solid var(--line)}
.setting small{display:block;color:#91a69e;margin-top:4px}
.setting input{width:24px}
.setting button,#resetChecks{background:#1d2d28;color:#fff;border:1px solid var(--line);padding:9px;border-radius:10px}
.danger{width:100%;background:#381b1b;color:#ffb1ab;border:1px solid #743633;padding:13px;border-radius:12px}
.legal{margin-top:20px;background:#181f1c;border-radius:15px;padding:15px;color:#becbc6}
.legal li{margin:8px 0}
nav{position:fixed;bottom:0;left:0;right:0;height:72px;background:#101a17f5;backdrop-filter:blur(15px);border-top:1px solid #2b3a35;display:flex;z-index:10;padding-bottom:env(safe-area-inset-bottom)}
nav button{flex:1;background:none;border:0;color:#799087;font-size:1.1rem}
nav span{display:block;font-size:.68rem;margin-top:3px}
nav button.active{color:var(--mint)}
aside{position:fixed;left:-300px;top:0;bottom:0;width:280px;background:#13211c;z-index:30;padding:24px;transition:.25s}
aside.open{left:0}
aside button{display:block;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid #293b34;color:#fff;padding:14px 4px}
#scrim{display:none;position:fixed;inset:0;background:#0009;z-index:20}
#scrim.open{display:block}
dialog{border:1px solid var(--line);border-radius:18px;background:#12201b;color:white;width:min(92%,460px)}
#toast{position:fixed;left:50%;bottom:88px;transform:translate(-50%,20px);background:#e7fff2;color:#092017;padding:10px 15px;border-radius:10px;opacity:0;pointer-events:none;transition:.2s;z-index:50;white-space:nowrap}
#toast.show{opacity:1;transform:translate(-50%,0)}
.output{background:var(--panel);border-radius:15px;padding:14px;margin:12px 0}
.output h3{margin-top:0}
.output pre{white-space:pre-wrap;font-family:inherit;line-height:1.5;color:#cbd9d4}
@media(min-width:760px){header{padding-inline:calc((100% - 900px)/2 + 16px)}
.grid{grid-template-columns:repeat(4,1fr)}
nav{left:50%;transform:translateX(-50%);width:600px;border:1px solid #2b3a35;border-bottom:0;border-radius:20px 20px 0 0}
.map{height:340px}
}
.filterBar{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}.filterBar input{grid-column:1/-1}.moduleGrid{display:grid;gap:14px}.panel{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:16px}.panel h3{margin:0 0 12px}.panel .sectionHead{margin:0 0 10px}.panel .sectionHead h3{margin:0}.listRow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}.listRow span{display:flex;flex-direction:column}.listRow select{width:auto}.inlineAdd{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:12px}.comment{padding:10px 0;border-bottom:1px solid var(--line)}.comment p{margin:4px 0}.timeline>div{border-left:2px solid var(--mint);padding:0 0 14px 12px;display:flex;flex-direction:column}.notice{padding:8px 10px;background:#172a24;border-radius:10px;margin:6px 0}.metaGrid{display:flex;gap:8px;margin:8px 0}.metaGrid span{font-size:.78rem;padding:4px 7px;border-radius:8px;background:#1d2a26}.cardActions{display:flex;gap:8px;margin-top:12px}.tourCard{cursor:pointer}.tourCard button{margin-top:8px}.empty{padding:22px;text-align:center;color:var(--muted);background:var(--card);border-radius:16px}.mediaChips{display:flex;flex-wrap:wrap;gap:5px}@media(min-width:760px){.filterBar{grid-template-columns:2fr 1fr 1fr}.filterBar input{grid-column:auto}.moduleGrid{grid-template-columns:1fr 1fr}.moduleGrid .panel:nth-child(5),.moduleGrid .panel:nth-child(7){grid-column:1/-1}}
.schedule{display:grid;gap:8px}.scheduleRow{display:grid;grid-template-columns:58px 1fr;gap:10px;align-items:center;padding:12px;background:#17261f;border-radius:12px;cursor:grab}.scheduleRow span{display:flex;flex-direction:column}.buttonGrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.success{background:#123326;color:#aaf2cb;padding:12px;border-radius:12px;margin:10px 0}.miniUpload{display:inline-block;background:#1d2d28;border:1px solid var(--line);border-radius:10px;padding:9px;cursor:pointer;margin:8px}.miniUpload input{display:none}.mediaRow{display:grid;grid-template-columns:1fr auto;gap:8px;padding:10px 0;border-bottom:1px solid var(--line)}.mediaRow span{display:flex;flex-direction:column}.mediaRow select{width:auto}.statsGrid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px;margin-bottom:14px}.statsGrid div{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;display:flex;flex-direction:column}.statsGrid b{font-size:1.35rem;color:var(--mint)}.searchResult{display:flex;flex-direction:column;padding:10px;border-bottom:1px solid var(--line)}.yearCard{margin-top:14px;background:linear-gradient(135deg,#1e3a30,#12201b);border:1px solid #3e6758;border-radius:20px;padding:22px}.v3meta{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:12px}.v3meta select:first-child{grid-column:1/-1}.v3meta input{min-width:0}.muted{color:var(--muted)}meter{width:80px}@media(min-width:760px){.statsGrid{grid-template-columns:repeat(6,1fr)}.v3meta{grid-template-columns:1.3fr 1fr .7fr}.v3meta select:first-child{grid-column:auto}}
