:root{--green:#244b3b;--ink:#24382e;--muted:#6d776f;--line:#e2e6de;--paper:#fbfcf8}*{box-sizing:border-box}body{margin:0;font-family:Arial,Helvetica,sans-serif;color:var(--ink);overflow:hidden}button,input,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #c09438;outline-offset:2px}header{height:86px;display:flex;align-items:center;padding:0 28px;gap:13px;border-bottom:2px solid var(--line);background:var(--paper);position:relative;z-index:5}.brand-mark{background:var(--green);color:#e0e6a3;width:43px;height:49px;display:grid;place-items:center;font-size:35px;clip-path:polygon(0 0,100% 0,85% 70%,50% 100%,15% 70%)}h1{font-family:Georgia,serif;font-size:25px;margin:0 0 7px;font-weight:500;letter-spacing:-.7px}h1 span{color:#7b8458}.brand p{font-size:9px;letter-spacing:1.65px;margin:0;font-weight:700}.brand b{padding:0 8px;color:#9b9b78}.download{margin-left:auto;text-decoration:none;color:var(--green);font-size:13px;border:1px solid #cfd8cb;border-radius:7px;padding:11px 15px}.icon{border:0;background:none;font-size:22px;padding:8px}#menu{display:none}main{display:flex;height:calc(100dvh - 86px)}aside{width:345px;flex-shrink:0;background:var(--paper);display:flex;flex-direction:column;border-right:2px solid var(--line);z-index:4}.intro{padding:28px 25px 20px}.eyebrow{font-size:9px;letter-spacing:1.4px;color:#728252;font-weight:bold}h2{font-family:Georgia,serif;font-size:27px;line-height:1.12;font-weight:400;letter-spacing:-.7px;margin:14px 0 12px}.intro p{font-size:13px;line-height:1.6;color:var(--muted);margin:0}.search-wrap{margin:0 23px 18px;display:flex;align-items:center;border:1px solid #d9ded4;background:white;border-radius:7px;padding:0 12px;gap:8px}.search-wrap span{font-size:25px;color:#6c776a}input{min-width:0;width:100%;border:0;background:none;font-size:12px;padding:13px 0;color:var(--ink);outline:none}.tabs{display:flex;padding:0 23px;border-bottom:2px solid var(--line);gap:20px}.tabs button{background:none;border:0;border-bottom:2px solid transparent;padding:0 0 14px;font-size:12px;color:#748071}.tabs button.active{border-color:var(--green);color:var(--green);font-weight:700}.tabs span{margin-left:5px;background:#eaf0e4;font-size:10px;padding:2px 5px;border-radius:4px}#list{overflow:auto;flex:1;padding:8px 12px}.row{width:100%;border:1px solid transparent;background:none;border-radius:8px;display:flex;text-align:left;gap:12px;padding:14px 10px;align-items:flex-start}.row:hover{background:#eff3e9}.row.selected{background:#e9efdf;border-color:#ccd6bb}.badge{flex-shrink:0;width:27px;height:27px;background:var(--c);color:white;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:bold;box-shadow:0 0 0 3px white}.row strong{font-size:12px;line-height:1.4;display:block;font-weight:600}.row small{display:block;margin-top:7px;color:#74816f;font-size:10px;letter-spacing:.3px}.row .arrow{margin-left:auto;color:#8d9b83;padding-top:3px}.aside-footer{padding:17px 24px;border-top:2px solid var(--line);font-size:11px;color:#4e6848}.aside-footer p{font-size:10px;color:#8c9586;margin:8px 0 0}.dot{display:inline-block;width:6px;height:6px;background:#91a368;border-radius:50%;margin-right:5px}#map{position:relative;flex:1;min-width:0;overflow:hidden;background:#e8e9dc;touch-action:none;cursor:grab}#map.dragging{cursor:grabbing}canvas{position:absolute;width:100%;height:100%;inset:0}#markers{position:absolute;inset:0;pointer-events:none}.marker{position:absolute;pointer-events:auto;transform:translate(-50%,-50%);border:3px solid white;border-radius:50%;height:31px;width:31px;display:grid;place-items:center;background:var(--c);color:white;font-weight:bold;font-size:12px;padding:0;box-shadow:0 2px 6px #172b2f66;cursor:pointer}.marker.crossing{border-radius:7px;background:#fff27d;color:#2a3c2a;width:27px;height:27px;font-size:11px}.marker.selected{outline:3px solid #234c38;outline-offset:4px;z-index:2}.map-top{position:absolute;top:22px;left:24px;display:flex;gap:8px}.pill{background:#fffffff5;box-shadow:0 2px 9px #243a2220;border:1px solid #d9e0d1;border-radius:22px;padding:10px 15px;font-size:12px;color:#37533b}.pill.active{background:var(--green);color:white;border-color:var(--green)}.controls{position:absolute;right:22px;top:22px;display:flex;flex-direction:column;border-radius:8px;overflow:hidden;box-shadow:0 3px 15px #20352822}.controls button{border:0;border-bottom:1px solid #e5e8e1;background:white;width:42px;height:43px;font-size:24px;color:#3e5540}.controls button:hover{background:#ecf2e6}.legend{position:absolute;bottom:44px;left:23px;border-radius:7px;background:#fffffff5;box-shadow:0 2px 12px #2b3c2222;width:150px;font-size:12px}.legend button{background:none;border:0;padding:12px;width:100%;text-align:left;color:#3a4b37;font-size:12px}.legend button span{float:right}#legend-content{padding:0 13px 12px}.legend p{font-size:11px}.legend i{width:9px;height:9px;border-radius:50%;display:inline-block;margin-right:8px}.legend small{font-size:9px;line-height:1.5;color:#73806c;display:block}.map-credit{position:absolute;bottom:0;right:0;font-size:9px;padding:6px 9px;background:#ffffffd9;color:#5f685b}#hint{position:absolute;bottom:32px;left:50%;transform:translateX(-50%);white-space:nowrap;background:#ffffffdc;border-radius:20px;padding:8px 12px;font-size:10px;color:#5b6c55;pointer-events:none}#detail{position:absolute;right:22px;bottom:44px;width:320px;background:var(--paper);border-radius:12px;box-shadow:0 8px 40px #26332440;padding:24px;cursor:default}#detail .close{position:absolute;right:12px;top:10px;border:0;background:none;font-size:24px;color:#677363}#detail .label{font-size:9px;letter-spacing:1.6px;color:#7c886c;font-weight:bold}#detail h3{font-family:Georgia,serif;font-size:24px;line-height:1.15;letter-spacing:-.4px;font-weight:400;margin:16px 0}#detail .status{display:inline-block;background:#eaf0e3;padding:6px 9px;border-radius:5px;font-size:10px;color:#475e3f}#detail p{font-size:12px;line-height:1.65;color:#697460}#detail .note{font-size:10px;border-top:1px solid var(--line);padding-top:13px;color:#85907e}#detail .share{width:100%;background:var(--green);color:white;border:0;padding:11px;border-radius:6px;font-size:12px}#toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);z-index:20;background:#244b3b;color:white;font-size:12px;border-radius:8px;padding:12px 20px;display:none}.empty{padding:20px;font-size:13px;color:#798573}button:hover{filter:brightness(.98)}
@media(max-width:760px){header{height:72px;padding:0 12px;gap:8px}#menu{display:block}.brand-mark{display:none}h1{font-size:20px;margin-bottom:5px}.brand p{font-size:7px;letter-spacing:.7px}.brand b{padding:0 3px}.download{padding:8px;font-size:18px}.download span{display:none}main{height:calc(100dvh - 72px)}aside{position:absolute;top:72px;bottom:0;width:min(330px,88vw);box-shadow:4px 0 24px #172a2626;display:none}aside.open{display:flex}.intro{padding-top:22px}.map-top{left:12px;top:15px;gap:5px}.pill{font-size:10px;padding:9px 10px}.controls{top:65px;right:12px}.controls button{width:38px;height:40px}.legend{left:12px;bottom:45px}#hint{display:none}.map-credit{font-size:7px}#detail{right:12px;left:12px;bottom:34px;width:auto;padding:20px;max-height:49%;overflow:auto}#detail h3{font-size:21px;margin:10px 0}#detail p{margin:10px 0}#detail .note{font-size:9px}body:has(#detail:not([hidden])) .legend{display:none}}

.foct-logo{width:48px;height:62px;object-fit:contain;flex-shrink:0}.intro h2{margin:0}.intro{padding:26px 25px}.partner-links{display:flex;gap:18px;margin-top:15px;flex-wrap:wrap}.partner-links a{font-size:11px;color:var(--green);text-decoration:none;border-bottom:1px solid #bdc9ad;padding-bottom:3px}.partner-links a:hover{text-decoration:underline}@media(max-width:760px){.foct-logo{width:33px;height:45px}.brand{min-width:0}h1{font-size:18px}.brand p{font-size:6.5px;letter-spacing:.45px}header{gap:6px;padding:0 8px}.intro{padding:22px 25px}}

.yjr-header-logo{margin-left:auto;display:flex;align-items:center;flex-shrink:0}.yjr-header-logo img{display:block;width:78px;height:51px;object-fit:contain}.download{margin-left:5px;flex-shrink:0}@media(max-width:760px){.yjr-header-logo img{width:44px;height:34px}.download{margin-left:0;padding:6px}.brand{flex:1}h1{font-size:16px}.brand p{font-size:6px;letter-spacing:.2px}.brand b{padding:0 2px}#menu{padding:5px}.foct-logo{width:28px;height:42px}}@media(max-width:380px){header{gap:4px;padding:0 5px}h1{font-size:14px}.brand p{max-width:160px;line-height:1.5}.yjr-header-logo img{width:38px;height:30px}}
