:root{font-family:system-ui,-apple-system,Segoe UI,Microsoft YaHei,sans-serif;color:#23342e;background:#f6f7f3;font-synthesis:none;font-size:16px;line-height:1.5}*{box-sizing:border-box}body{margin:0}header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px max(18px,calc((100vw - 880px)/2));background:#fff;border-bottom:1px solid #e1e6dd}.brand{font-weight:700}.badge,.demo{font-size:12px;white-space:nowrap;border-radius:5px;padding:3px 8px;background:#e8eee4;color:#365447}.demo{background:#faf0d8;color:#6e551c}main{max-width:920px;margin:auto;padding:18px 18px calc(94px + env(safe-area-inset-bottom));overflow-wrap:anywhere}h1{font-size:25px;margin:14px 0}h2{font-size:20px;margin:8px 0}h3{font-size:17px}p{margin:10px 0}.stage{font-size:13px;color:#786223;margin:0 0 20px}.panel{background:#fff;padding:18px;border:1px solid #dde4d9;border-radius:12px;margin-bottom:14px;min-width:0}.heading,.card-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.heading{margin-bottom:10px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:12px}.cards .panel{margin:0}button,input,select,textarea{font:inherit}button{border:1px solid transparent;border-radius:8px;min-height:44px;padding:10px 15px;background:#24594b;color:#fff;cursor:pointer}button:disabled{opacity:.55;cursor:wait}button.secondary{background:#f5f7f2;color:#294438;border-color:#d5ded1}button.danger{color:#943e35;background:#fff3ef;border-color:#eed5ce}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #ae821d;outline-offset:2px}label{display:flex;flex-direction:column;gap:6px;margin:14px 0;font-size:14px}input,select,textarea{width:100%;min-width:0;max-width:100%;border:1px solid #b7c7b8;border-radius:7px;background:#fff;color:#213c30;min-height:44px;padding:10px;font-size:16px}textarea{resize:vertical;min-height:84px}.pair{display:grid;grid-template-columns:1fr 1fr;gap:10px}.checkbox{flex-direction:row;align-items:center;gap:10px}.checkbox input{width:22px;min-height:22px}fieldset{border:1px solid #dce4d7;border-radius:8px;margin:16px 0;padding:8px 12px;min-width:0}legend{font-size:14px;color:#4f6659}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.hint,small{color:#627165;font-size:13px}.json,pre{font-family:ui-monospace,monospace;font-size:13px;white-space:pre-wrap;overflow-wrap:anywhere}summary{cursor:pointer;padding:12px 0;min-height:44px}.error,.confirm{padding:14px;border:1px solid #e5b8a7;border-radius:8px;background:#fff1eb;color:#81362b;margin:14px 0}.notice{color:#24594b;background:#e8f1e8;padding:12px;border-radius:8px}nav{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:center;padding:8px 12px calc(8px + env(safe-area-inset-bottom));background:#fff;border-top:1px solid #dce3d7;z-index:2}nav button{flex:1;max-width:180px;border-radius:6px;background:#fff;color:#617061}nav button.active{background:#e7efe4;color:#24594b;font-weight:700}footer{margin-top:26px;color:#768073;font-size:12px}@media(min-width:768px){.panel{padding:24px}h1{font-size:30px}}.map-container{width:100%;height:44vh;min-height:300px;max-height:550px;background:#e6ece4;border:1px solid #ccd8c7;border-radius:12px;overflow:hidden;touch-action:pan-x pan-y}.map-search{display:flex;gap:8px;margin:12px 0}.map-search input{flex:1;min-width:0}.map-search button{flex-shrink:0}.map-layers{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;margin:10px 0}.map-layers label{margin:4px 0}.map-layers select{width:auto;max-width:47%;font-size:14px}.map-pin{border:2px solid #fff;box-shadow:0 2px 7px #0004;border-radius:50%;width:34px;height:34px;min-height:34px;padding:0;font-size:14px}.map-tools{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.map-tools>button:first-child{position:fixed;right:18px;bottom:calc(78px + env(safe-area-inset-bottom));z-index:4;box-shadow:0 3px 12px #0003}.map-sheet{border:1px solid #d7e1d0;border-radius:14px;background:#fff;max-height:58vh;overflow:auto;padding:0 16px 20px;overscroll-behavior:contain;scroll-padding:15px}.sheet-0 .map-sheet{max-height:100px}.sheet-2 .map-sheet{max-height:80vh}.sheet-2 .map-container{height:25vh;min-height:200px}.sheet-handle{position:sticky;top:0;background:#fff;z-index:1;text-align:center;border-bottom:1px solid #e2e8dd;padding:4px 0 10px;touch-action:none}.sheet-handle>span{display:block;line-height:14px;color:#80917b}.sheet-handle>div{display:flex;gap:8px;justify-content:center}.sheet-handle button{font-size:13px;padding:6px 12px}.sheet-handle button[aria-pressed=true]{background:#e0ecdf}.picked{display:flex;gap:8px;flex-wrap:wrap;align-items:center;background:#e9f0e5;padding:12px;border-radius:8px}.picked>span{width:100%;font-size:14px}.search-results,.map-place-list{display:flex;flex-direction:column;gap:8px}.search-results{max-height:40vh;overflow:auto;background:#fff;padding:10px;margin:10px 0}.search-results button,.map-place-list button{text-align:left}.search-results small,.map-place-list small{display:block}.map-place-list{padding-top:10px}.spot-detail dl{display:grid;grid-template-columns:65px 1fr;font-size:14px;gap:6px}.spot-detail dd{margin:0}.route-result{margin:16px 0;padding:12px;border-radius:8px;background:#edf3e8}.navigation{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:14px}.navigation a{color:#24594b;font-weight:600;min-height:44px;display:flex;align-items:center}.navigation p{width:100%}.photo-inputs{display:flex;gap:12px;flex-wrap:wrap}.file-button{position:relative;background:#eef3e9;border:1px solid #b9cbb2;border-radius:8px;padding:12px;cursor:pointer}.file-button input{position:absolute;inset:0;opacity:0;cursor:pointer}.photo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px}.photo-grid figure{margin:0;min-width:0}.photo-grid img{width:100%;height:140px;object-fit:cover;border-radius:8px}.photo-grid figcaption{font-size:12px}.photo-grid button{font-size:12px;padding:6px 8px}.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}.map-page button{max-width:100%}.map-page .error button{display:block;margin-top:8px}@media(min-width:768px){.map-tools>button:first-child{right:max(18px,calc((100vw - 880px)/2))}}nav button{padding-left:6px;padding-right:6px}.map-viewport{position:relative;isolation:isolate}.map-viewport-top{position:absolute;top:12px;left:12px;right:12px;z-index:3;display:flex;justify-content:flex-end;align-items:center;gap:12px;pointer-events:none}.map-viewport-top button{pointer-events:auto;box-shadow:0 2px 12px #18392b26;background:#fffffff2}.map-full-title{margin-right:auto;border-radius:9px;background:#fffffff2;padding:10px 12px;font-weight:650;font-size:14px}.map-full-hint{position:absolute;top:calc(68px + env(safe-area-inset-top));left:50%;transform:translate(-50%);width:max-content;max-width:calc(100% - 24px);margin:0;padding:7px 12px;border-radius:20px;background:#ffffffe6;color:#345245;font-size:13px;pointer-events:none;z-index:3;box-shadow:0 2px 12px #18392b12}.is-map-fullscreen .map-viewport{position:fixed;inset:0;width:100%;height:100vh;height:100dvh;z-index:30;background:#e6ece4}.is-map-fullscreen .map-viewport .map-container{height:100%;min-height:0;max-height:none;border:0;border-radius:0;touch-action:none;-webkit-touch-callout:none}.is-map-fullscreen .map-viewport-top{top:calc(12px + env(safe-area-inset-top));left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right))}.map-full-actions{position:absolute;bottom:calc(14px + env(safe-area-inset-bottom));left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));display:flex;gap:8px;justify-content:center;z-index:3}.map-full-actions button{flex:1;max-width:180px;padding:10px 8px;font-size:14px;box-shadow:0 3px 14px #18392b33}.map-full-picked{position:absolute;left:12px;right:12px;bottom:calc(78px + env(safe-area-inset-bottom));display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px;border-radius:12px;background:#fffffff2;box-shadow:0 4px 22px #18392b26;z-index:3;font-size:13px}.is-map-fullscreen .map-sheet:not([hidden]){position:fixed;z-index:32;bottom:calc(78px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);width:min(620px,calc(100% - 24px));max-height:55vh;max-height:55dvh;box-shadow:0 6px 30px #18392b33}.is-map-fullscreen.sheet-0 .map-sheet:not([hidden]){max-height:104px}.is-map-fullscreen.sheet-2 .map-sheet:not([hidden]){max-height:calc(100vh - 158px - env(safe-area-inset-top) - env(safe-area-inset-bottom));max-height:calc(100dvh - 158px - env(safe-area-inset-top) - env(safe-area-inset-bottom))}.is-map-fullscreen .sheet-handle button{padding:6px 8px;font-size:12px}.is-map-fullscreen .map-feedback{position:fixed;z-index:33;top:calc(108px + env(safe-area-inset-top));left:50%;transform:translate(-50%);width:min(600px,calc(100% - 24px));pointer-events:none;font-size:13px}.is-map-fullscreen .map-feedback:empty{display:none}.is-map-fullscreen .map-feedback .error{pointer-events:auto}.map-fullscreen-active #root>header,.map-fullscreen-active #root>nav,.map-fullscreen-active main>.stage,.map-fullscreen-active main>footer{display:none}.record-dialog{width:min(480px,calc(100% - 24px));max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom));padding:20px;border:1px solid #d6e0d1;border-radius:18px;background:#fff;color:#23342e;box-shadow:0 16px 70px #132c2855;overflow:auto;overscroll-behavior:contain;scroll-padding:16px}.record-dialog::backdrop{background:#112c2966;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.record-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.record-heading h2{margin:3px 0 6px;font-size:23px}.record-heading button{font-size:26px;line-height:1;width:44px;padding:4px;flex-shrink:0}.record-location{background:#edf3e8;color:#345245;font-size:13px;padding:10px 12px;border-radius:9px}.record-dialog label{margin:12px 0}.record-dialog textarea{min-height:76px}.record-actions{position:sticky;bottom:-20px;background:#fff;display:flex;gap:10px;padding:12px 0 4px;margin-top:12px}.record-actions>button:first-child{flex:1}.record-actions>button:last-child{flex:2}@media(max-width:480px){.record-dialog{padding:16px}.record-actions{bottom:-16px}}
