:root{--ink:#284c48;--muted:#758782;--cream:#f7f6ef;--green:#346459}*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--ink);font-family:ui-rounded,'PingFang TC','Microsoft JhengHei',sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit}a{color:inherit}header{max-width:1440px;margin:auto;padding:26px 5%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e5e6dc}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-size:21px;font-weight:800;letter-spacing:1px}.brand-icon{font-size:30px;background:#e8ecdf;border-radius:50%;width:54px;height:54px;display:grid;place-items:center}.brand small{display:block;font:9px/2 sans-serif;letter-spacing:2px;color:var(--muted)}.quiet{background:transparent;border:0;padding:12px;border-radius:15px;font-size:13px}.quiet:hover{background:#e7ebdf}main{max-width:1440px;margin:auto;padding:0 5%}.intro{display:flex;justify-content:space-between;align-items:center;padding:40px 0 30px;gap:20px}.eyebrow{font-size:11px;letter-spacing:3px;font-weight:700;color:#80907f;margin:0 0 14px}h1{font-size:clamp(26px,3.2vw,46px);letter-spacing:2px;margin:0;font-weight:800;position:relative;width:fit-content}h1 span{color:#d39446}h1 svg{position:absolute;right:0;width:83px;height:25px;bottom:-18px;stroke:#e8be68;fill:none;stroke-width:3;stroke-linecap:round}.subtitle{font-size:14px;color:var(--muted);margin:18px 0 0}.surprise{background:var(--green);color:white;border:0;border-radius:28px;padding:15px 22px;font-size:14px;box-shadow:0 5px 0 #264e4514}.surprise span{margin-left:22px;color:#b8d2bd}.surprise:hover{background:#244c43;transform:translateY(-1px)}.explorer{border:1px solid #d8e5df;border-radius:25px;overflow:hidden;background:#fffdf7;box-shadow:0 14px 40px #34574d06}.toolbar{display:flex;align-items:center;justify-content:space-between;padding:15px 20px;gap:10px}.tabs{display:flex;background:#f0f2e9;padding:4px;border-radius:13px}.tabs button{border:0;background:none;border-radius:9px;padding:10px 15px;font-size:13px;color:#75827a}.tabs [aria-pressed=true]{background:white;color:#345c51;box-shadow:0 2px 6px #284c4810}.map-caption{font-size:11px;color:#96a399;letter-spacing:1px}.filters{display:flex;gap:8px;padding:0 24px 15px;flex-wrap:wrap}.filters button{border:1px solid #e5e9df;border-radius:20px;padding:7px 15px;background:transparent;font-size:12px;color:#718178}.filters [aria-pressed=true]{background:#e9eddf;border-color:#e9eddf;color:#385e4a}.ocean{position:relative;overflow:hidden;background-color:#d9efed;background-image:radial-gradient(ellipse at 30% 15%,#f7fbf28c,transparent 50%),repeating-radial-gradient(ellipse at 20% 80%,transparent 0 42px,#fff3 43px 44px,transparent 46px 90px);padding:40px 22px 0}.map-title{position:absolute;top:20px;left:28px;letter-spacing:3px;font:9px Georgia,serif;color:#80aaa5}.map-title span{display:block;font:9px sans-serif;letter-spacing:4px;margin-top:6px}.compass{position:absolute;top:10px;right:28px;font-size:44px;color:#89b4ac;line-height:1}.compass small{display:block;text-align:center;font:8px sans-serif;margin-top:0}.islands{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px 16px;min-height:480px;padding:6px 4px 20px}.island{position:relative;align-self:center;min-width:0;transition:opacity .2s}.island:nth-child(even){transform:translateY(18px)}.island a{display:block;text-decoration:none;text-align:center;border-radius:25px;outline-offset:3px;padding:0 3px 11px}.landscape{width:100%;height:auto;filter:drop-shadow(0 10px 5px #598c8220);transition:transform .3s;overflow:visible}.island a:hover .landscape{transform:translateY(-7px) rotate(-2deg)}.island .island-name{background:#fffdf5;display:inline-block;border-radius:18px;padding:9px 17px;font-size:15px;font-weight:800;box-shadow:0 4px 0 #95bcb344;white-space:nowrap}.island .sub{display:block;color:#628f85;font-size:11px;margin-top:9px;letter-spacing:1px}.fav{position:absolute;right:4px;top:22px;border:0;background:#fffdf5d9;border-radius:50%;width:32px;height:32px;font-size:20px;color:#6d9488}.fav[aria-pressed=true]{color:#cf7a75}.footprint{position:absolute;left:6px;top:26px;background:#f9fff3;border-radius:15px;padding:3px 7px;font-size:10px;color:#537b65}.sea-footer{border-top:1px solid #a4ccc54d;display:flex;justify-content:space-between;padding:17px 6px;font-size:11px;letter-spacing:1px;color:#6a9a90}.return-row{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:29px 0 24px}.section-kicker{font:9px sans-serif;letter-spacing:2px;color:#a3a68b}h2{font-size:19px;line-height:1.6;margin:7px 0}.return-row #recent{font-size:12px;color:#8b998b}.recent-link{display:block;border:1px solid #dde3d5;padding:12px 18px;border-radius:15px;text-decoration:none;background:#fffdf6}footer{border-top:1px solid #e3e6da;display:flex;justify-content:space-between;padding:20px 0 30px;color:#9ca593;font-size:10px;letter-spacing:1px}.list-view .islands{grid-template-columns:repeat(2,1fr);gap:14px;min-height:0;padding:0 0 25px}.list-view .island{transform:none;background:#fffdf5;border-radius:18px;padding:8px}.list-view .island a{display:grid;grid-template-columns:100px 1fr;text-align:left;padding-right:35px;align-items:center}.list-view .landscape{grid-row:span 3}.list-view .island-name{box-shadow:none;padding:4px 0;font-size:17px;white-space:normal}.list-view .sub{margin:4px 0}.desc{display:none}.list-view .desc{display:block;font-size:12px;color:#849386;line-height:1.5}.list-view .fav{top:12px;right:10px}.list-view .footprint{top:auto;bottom:10px}#empty{text-align:center;padding:70px 15px;font-size:14px}dialog{border:1px solid #e3e7da;border-radius:25px;max-width:580px;width:calc(100% - 32px);padding:32px;color:var(--ink);background:var(--cream);box-shadow:0 30px 100px #15382d44}dialog::backdrop{background:#17372e70;backdrop-filter:blur(5px)}dialog p{font-size:14px;line-height:1.9;color:#6b8077}.close{float:right;background:none;border:0;font-size:26px}summary{cursor:pointer;font-size:15px;padding:12px 0}.note{font-size:12px!important}label{display:block;font-size:13px;margin:15px 0}input{display:block;width:100%;padding:10px;margin-top:5px;border:1px solid #cbd7cc;border-radius:8px;background:#fff;font:12px sans-serif}label a{font-size:11px;margin-left:8px;color:#849788}button:focus-visible,a:focus-visible{outline:3px solid #d9923b;outline-offset:3px}
@media(min-width:1400px){.islands{gap:10px 30px;min-height:530px}}
@media(max-width:900px){.islands{gap:10px;grid-template-columns:repeat(3,1fr)}.island:nth-child(even){transform:none}.islands .island:last-child{grid-column:2}.map-caption{display:none}.island-name{font-size:14px!important}.list-view .islands .island:last-child{grid-column:auto}.list-view .island a{grid-template-columns:78px 1fr}.intro{padding-top:30px}.surprise{font-size:12px;padding:13px 17px}.surprise span{margin-left:8px}}
@media(max-width:560px){header{padding:16px 5%}.brand{font-size:17px;gap:8px}.brand small{font-size:7px;letter-spacing:1.4px}.brand-icon{width:43px;height:43px;font-size:25px}header .quiet{font-size:12px;padding:8px}main{padding:0 4%}.intro{padding:27px 5px 23px;display:block}.eyebrow{font-size:9px;letter-spacing:2px}h1{font-size:28px;letter-spacing:0}.subtitle{font-size:12px}.intro .surprise{margin-top:20px}.explorer{border-radius:20px}.toolbar{padding:12px 10px}.tabs button{padding:9px 10px;font-size:12px}.toolbar .quiet{font-size:12px;padding:10px 5px}.filters{padding:0 12px 12px;gap:5px}.filters button{padding:7px 10px;font-size:11px}.ocean{padding:52px 10px 0}.islands{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 5px;min-height:0}.islands .island:last-child{grid-column:auto}.island .island-name{padding:10px 13px}.island .sub{font-size:10px;letter-spacing:.3px}.island a{padding-bottom:7px}.sea-footer{font-size:10px;letter-spacing:0}.return-row{display:block;margin:23px 6px}.return-row h2{font-size:16px}.return-row #recent{margin-top:16px}.list-view .islands{grid-template-columns:1fr}.list-view .island a{grid-template-columns:90px 1fr}.list-view .island-name{font-size:17px!important}.list-view .sub{font-size:12px}.list-view .footprint{left:12px}.compass{right:22px}footer{font-size:9px;letter-spacing:0;gap:12px}dialog{padding:23px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
/* Radial map: a fixed world preserves island positions while the viewport follows the explorer. */
.ocean{padding:40px 0 0}.map-viewport{height:min(68vw,820px);min-height:580px;max-height:820px;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#a1c7bc transparent;position:relative}.radial-world{position:relative;width:100%;min-width:900px;aspect-ratio:1000/820}.islands{display:block;min-height:0;padding:0;position:absolute;inset:0;pointer-events:none}.island,.island:nth-child(even){position:absolute;width:172px;left:calc(var(--x) / 10);top:calc(var(--y) / 8.2);left:calc(var(--x) * .1% / 1px);top:calc(var(--y) * .1219512195% / 1px);transform:translate(-50%,-60%);pointer-events:auto}.island a{padding-bottom:0}.island .landscape{height:109px}.island .island-name{font-size:13px!important;padding:8px 12px}.island .sub{font-size:10px;margin-top:6px}.island .fav{top:14px;right:6px;width:28px;height:28px;font-size:18px}.island .footprint{top:20px;font-size:9px}.island.selected .island-name{background:#346459;color:white;box-shadow:0 0 0 4px #fff9}.island.selected .landscape{filter:drop-shadow(0 4px 7px #4b7f7766)}#bridges{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.bridge path{fill:none;stroke:#b99c72;stroke-width:18}.bridge .planks{stroke:#efdab1;stroke-width:15;stroke-dasharray:3 5}.bridge.active path{stroke:#d19a43}.bridge.active .planks{stroke:#ffe8b2}#homeIsland{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:150px;height:120px;border:8px solid #f0deb0;background:#b4cd91;border-radius:50%;box-shadow:0 12px 0 #aab18a,0 20px 0 #8fbcb333;color:#3b6251;display:flex;flex-direction:column;align-items:center;justify-content:end;padding-bottom:8px}#homeIsland span{font-size:38px;line-height:1.1}#homeIsland b{font-size:12px;background:#fff6da;border-radius:14px;padding:4px 12px}.explorer-character{position:absolute;left:50%;top:50%;width:53px;height:71px;transform:translate(-50%,-90%);pointer-events:none;z-index:5;filter:drop-shadow(0 4px 2px #315e4322)}.explorer-character svg{width:100%;height:100%;overflow:visible}.walking .leg{transform-box:fill-box;transform-origin:50% 0;animation:step .3s infinite alternate}.walking .right{animation-delay:-.3s}.walking .body{animation:bob .3s infinite alternate}@keyframes step{from{transform:rotate(-20deg)}to{transform:rotate(20deg)}}@keyframes bob{to{transform:translateY(-3px)}}.destination{padding:20px 25px;display:flex;align-items:center;justify-content:space-between;gap:16px;background:#fffdf6;border-top:1px solid #d9e3d4}.destination h2{font-size:20px;margin:5px 0}.destination p{margin:0;color:#7b8b7f;font-size:13px;line-height:1.7}.destination .surprise{text-decoration:none;white-space:nowrap}.sea-footer{padding:17px 23px}.list-view .map-viewport{height:auto;min-height:0;max-height:none;overflow:visible}.list-view .radial-world{min-width:0;aspect-ratio:auto;width:100%;padding:15px 20px}.list-view #bridges,.list-view #homeIsland,.list-view #explorer{display:none}.list-view .islands{position:relative;display:grid;inset:auto}.list-view .island,.list-view .island:nth-child(even){position:relative;left:auto;top:auto;transform:none;width:auto}.list-view .island .landscape{height:auto}.list-view .islands .island:last-child{grid-column:auto}.list-view .sub{font-size:12px}.map-title,.compass{z-index:2;pointer-events:none}.map-title{top:14px}.compass{font-size:32px;top:5px}[hidden]{display:none!important}
@media(max-width:900px){.map-viewport{height:650px}.radial-world{width:1000px}.island,.island:nth-child(even){width:172px}.list-view .radial-world{width:100%;padding:12px}}
@media(max-width:560px){.map-viewport{height:540px;min-height:540px}.radial-world{min-width:1000px}.list-view .radial-world{min-width:0}.destination{padding:18px;display:block}.destination h2{font-size:18px}.destination .surprise{display:inline-block;margin-top:14px}.destination [hidden]{display:none}.sea-footer{padding:15px 10px;gap:10px;font-size:9px}.explorer-character{width:59px;height:79px}}

.island,.island:nth-child(even){left:var(--x);top:var(--y)}.list-view .island,.list-view .island:nth-child(even){left:auto;top:auto}
.radial-world{max-width:1000px;margin-inline:auto}.map-viewport{height:820px}.destination{position:sticky;bottom:0;z-index:8;box-shadow:0 -4px 20px #284c480a}
@media(max-width:900px){.map-viewport{height:650px}.radial-world{margin-inline:0}}
@media(max-width:560px){.map-viewport{height:540px}}

/* Short bridges: reduce the exposed water crossing to about one fifth. */
#homeIsland{width:300px;height:240px;padding-bottom:18px;background:radial-gradient(ellipse at 35% 40%,#ccdda7 0 12%,transparent 13%),radial-gradient(ellipse at 70% 25%,#c2d59a 0 10%,transparent 11%),#b4cd91}
#homeIsland span{font-size:46px;margin-bottom:8px}
.island,.island:nth-child(even){width:140px}
.island .landscape{height:91px}
.island .island-name{padding:7px 10px;font-size:12px!important}
.island .sub{font-size:10px;letter-spacing:0}
.island .fav{width:26px;height:26px;right:0;top:6px}
.map-viewport{height:660px;min-height:580px}
.list-view .island,.list-view .island:nth-child(even){width:auto}
.list-view .island .landscape{height:auto}
.list-view .island .island-name{font-size:17px!important}
@media(max-width:560px){.map-viewport{height:540px;min-height:540px}}
#homeIsland{width:240px;height:200px;padding-bottom:12px}
#homeIsland span{font-size:38px;margin-bottom:4px}

/* Five paired petals: small junction islands connect two games each. */
#groupPlatforms{position:absolute;inset:0;pointer-events:none}
.group-platform{position:absolute;transform:translate(-50%,-50%);width:110px;height:78px;border-radius:48%;background:var(--group-color);border:6px solid #f6e4b5;box-shadow:0 7px 0 #aab18a;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:3px;color:#355d4f}
.group-platform span{font-size:21px;line-height:1}.group-platform b{font-size:11px;background:#fff7df;border-radius:12px;padding:4px 9px;white-space:nowrap}
.group-platform.active{box-shadow:0 7px 0 #aab18a,0 0 0 4px #fff9}
#homeIsland{width:190px;height:150px;padding-bottom:8px}
#homeIsland span{font-size:32px;margin-bottom:2px}
.island,.island:nth-child(even){width:145px}
.island .landscape{height:94px}
.map-viewport{height:760px;max-height:820px}
.list-view #groupPlatforms{display:none}.list-view .island,.list-view .island:nth-child(even){width:auto}
@media(max-width:560px){.map-viewport{height:560px;min-height:560px}}
/* Shared toy-model islands: two interactive buildings stand on each foundation. */
.intro{padding:25px 0 23px}.intro h1{font-size:clamp(26px,3vw,40px)}
.ocean{background-color:#7ed2dc;background-image:radial-gradient(ellipse at 30% 10%,#c9f5e6a8,transparent 65%),repeating-radial-gradient(ellipse at 70% 90%,transparent 0 30px,#e3ffff38 31px 32px,transparent 34px 65px)}
.map-title{color:#437e83}.compass{color:#51999c}.sea-footer{color:#3e7a7a;background:#e3f5e477;border-top-color:#ffffff55}
.radial-world{isolation:isolate}#bridges{z-index:0}#groupPlatforms{z-index:1}.islands{z-index:3}#homeIsland{z-index:2}.explorer-character{z-index:5}
.theme-island{position:absolute;width:340px;height:240px;transform:translate(-50%,-60%);filter:drop-shadow(0 9px 4px #246f7d20)}
.theme-island>svg{display:block;width:100%;height:100%;overflow:visible}
.theme-label{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);background:#fff9e8;color:#526c53;border:1px solid #e5d7af;padding:6px 16px;border-radius:20px;font-size:12px;font-weight:800;box-shadow:0 4px 0 #9fba9e55;white-space:nowrap}
.theme-island.active .theme-label{background:#3f7765;color:#fff;border-color:#8ab89b}
.island,.island:nth-child(even){width:132px;height:140px;transform:translate(-50%,-100%)}
.island a{padding:0;position:relative;width:100%;height:100%}
.island .landscape{height:140px;width:100%;filter:drop-shadow(4px 6px 3px #457a682c)}
.island .island-name{position:absolute;left:50%;top:0;transform:translateX(-50%);font-size:10px!important;padding:5px 9px;border:1px solid #e2d3ad;box-shadow:0 3px 0 #a6b69e55}
.island .sub{display:none}.island .fav{top:19px;right:-3px;width:25px;height:25px;font-size:17px;border:1px solid #e9dfbe;background:#fff9e8ee}
.island .footprint{top:28px;left:0;font-size:8px;padding:3px 5px}
.island.selected .island-name{outline:3px solid #fef5c3;box-shadow:0 4px 9px #37684b44}.island a:hover .landscape{transform:translateY(-4px)}
#homeIsland{width:160px;height:120px;border-width:7px;background:radial-gradient(ellipse at 30% 30%,#cde0a3 0 12%,transparent 13%),#b4cf8b;box-shadow:0 9px 0 #ded1a7,0 16px 0 #b4ae91,0 23px 6px #40797b22}
#homeIsland span{font-size:27px;line-height:1}#homeIsland b{font-size:10px;padding:3px 10px}
.bridge path{stroke-width:17;stroke:#b89a6d}.bridge .planks{stroke:#f2dcb0;stroke-width:14;stroke-dasharray:3 5}
.island-path{display:none}.map-viewport{height:760px;min-height:600px}.theme-island::after{content:'';position:absolute;left:0;right:0;bottom:12px;height:35px;border-bottom:1px solid #e5ffff80;border-radius:50%;z-index:-1}
.list-view .theme-island{display:none}.list-view #groupPlatforms{display:none}.list-view .islands{position:relative}.list-view .island,.list-view .island:nth-child(even){height:auto;width:auto;transform:none}.list-view .island a{height:auto}.list-view .island .landscape{height:120px}.list-view .island .island-name{position:static;transform:none;font-size:16px!important;border:0;box-shadow:none;background:transparent;white-space:normal}.list-view .island .sub{display:block;font-size:11px}.list-view .island .fav{right:6px}.list-view .island.selected .island-name{outline:0;color:#346459}.list-view .island a{grid-template-columns:105px 1fr}
.destination{background:#fff9ea}.destination h2{font-size:18px}
@media(max-width:560px){.intro{padding:20px 4px}.intro .subtitle{max-width:290px;line-height:1.7}.map-viewport{height:570px;min-height:570px}.explorer-character{width:53px;height:71px}.list-view .map-viewport{min-height:0;height:auto}.theme-label{font-size:12px}.list-view .island .island-name{font-size:16px!important}}

/* Five-island ring, open water in the middle. */
.theme-island.unfocused{opacity:.66}
.themed-building{overflow:visible}
.island .landscape{height:145px}
.island,.island:nth-child(even){height:145px;width:138px}
.island .island-name{top:-3px;font-size:10px!important}
.island .fav{top:22px;right:-1px}
.list-view .island,.list-view .island:nth-child(even){height:auto;width:auto}
.list-view .island .landscape{height:120px}
.list-view .island .island-name{font-size:16px!important}
/* Larger labels and crisp, saturated movement cues. */
.island .island-name{font-size:16px!important;line-height:1.35;padding:7px 10px;top:-19px;color:#234d42;font-weight:800;border-color:#c9b681;box-shadow:0 3px 0 #7e9e8580}
.theme-label{font-size:18px;line-height:1.3;font-weight:800;padding:7px 17px;color:#294c3d;border-color:#c8b986}
.island .fav{top:23px;width:30px;height:30px;font-size:21px}.island .footprint{font-size:11px;top:42px}
.subtitle{font-size:16px;line-height:1.75}.eyebrow{font-size:12px}.map-caption{font-size:14px;color:#617b69}
.tabs button{font-size:15px}.quiet{font-size:15px}.filters button{font-size:15px;padding:8px 15px}.filters{gap:8px}
.surprise{font-size:16px}.sea-footer{font-size:14px;line-height:1.5;letter-spacing:0}.destination h2{font-size:23px}.destination p{font-size:16px}.section-kicker{font-size:12px}.return-row #recent{font-size:15px}footer{font-size:13px}
.list-view .island .island-name{font-size:20px!important;line-height:1.5}.list-view .island .sub{font-size:14px}.list-view .desc{font-size:15px}
#walkingPath{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none;overflow:visible}
#walkingPath path{fill:none;stroke-linecap:round;stroke-linejoin:round}.route-border{stroke:#b45b09;stroke-width:14}.route-color{stroke:#ffe365;stroke-width:10}.route-steps{stroke:#e28a1b;stroke-width:7;stroke-dasharray:1 11}
.is-moving .bridge.active path{stroke:#b76010}.is-moving .bridge.active .planks{stroke:#ffe36b}
.is-moving .theme-island.active>svg{filter:saturate(1.35) contrast(1.12)}
.is-moving .theme-island.active .theme-label{background:#087a64;color:white;border:2px solid #fff4b3;box-shadow:0 4px 0 #075c4d}
.is-moving .island.selected .landscape{filter:saturate(1.55) contrast(1.16) drop-shadow(0 0 2px #fff5b1) drop-shadow(4px 6px 2px #254b5060)}
.island.selected .island-name{background:#087a64;color:#fff;border:2px solid #ffdf67;outline:2px solid #fff6cf}
.explorer-character.walking{filter:saturate(1.5) contrast(1.2) drop-shadow(0 0 2px #fff) drop-shadow(0 3px 2px #174d5266)}
.explorer-character.walking::after{content:'';position:absolute;left:7%;right:7%;bottom:0;height:19%;border:3px solid #fff0b4;border-radius:50%;box-shadow:0 0 0 2px #0d7a8b;background:#36b9d34d;z-index:-1}
.list-view #walkingPath{display:none}.list-view .island.selected .island-name{background:transparent;border:0;color:#087a64}
@media(max-width:560px){.tabs button{font-size:13px;padding:10px}.toolbar .quiet{font-size:14px;padding:10px 4px}.filters button{font-size:14px;padding:8px 12px}.intro .subtitle{font-size:15px;max-width:320px}.intro .surprise{font-size:15px}.eyebrow{font-size:11px}.sea-footer{font-size:12px;flex-wrap:wrap;padding:13px}.destination h2{font-size:21px}.destination p{font-size:15px}.theme-label{font-size:18px}.list-view .island .island-name{font-size:19px!important}.return-row h2{font-size:18px}header .quiet{font-size:13px}footer{font-size:12px}}

/* Gentle movement: three fading footprint pairs and only the occupied bridge. */
#footprints{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none;overflow:visible;fill:#426c5e}
.bridge.active path,.is-moving .bridge.active path{stroke:#b89a6d}
.bridge.active .planks,.is-moving .bridge.active .planks{stroke:#f2dcb0}
.bridge path{transition:stroke .2s}
.is-moving .bridge.current path{stroke:#b4a58b}
.is-moving .bridge.current .planks{stroke:#f8ebd4}
.island.selected .island-name{border:1.5px solid #fff;outline:none;box-shadow:0 3px 7px #31574833;background:#087a64;color:#fff}
.is-moving .theme-island.active .theme-label{border:1.5px solid #fff;box-shadow:0 3px 5px #31574833}
.is-moving .island.selected .landscape{filter:saturate(1.2) contrast(1.06) drop-shadow(3px 5px 2px #254b5033)}
.is-moving .theme-island.active>svg{filter:saturate(1.12) contrast(1.04)}
.explorer-character.walking{filter:saturate(1.2) contrast(1.08) drop-shadow(0 2px 2px #174d5240)}
.explorer-character.walking::after{display:none}
.list-view #footprints{display:none}
.list-view .island.selected .island-name{border:0;background:transparent;color:#087a64;box-shadow:none}
@media(prefers-reduced-motion:reduce){#footprints{display:none}.bridge path{transition:none}}

/* Building art moves the character; the separate name is a native direct link. */
.building-move{display:block;width:100%;height:100%;padding:0;border:0;background:transparent;border-radius:16px;cursor:pointer;color:inherit}
.building-move:hover .landscape{transform:translateY(-4px)}
.island a.island-name{display:inline-flex;align-items:center;justify-content:center;width:max-content;max-width:155px;height:auto;position:absolute;left:50%;top:-19px;transform:translateX(-50%);z-index:6;text-align:center;text-decoration:none;cursor:pointer;min-height:38px;padding:7px 12px;white-space:nowrap;touch-action:manipulation}
.island a.island-name:hover{background:#e9f2dc}.island.selected a.island-name:hover{background:#086650}
.list-view .island,.list-view .island:nth-child(even){display:grid;grid-template-columns:105px minmax(0,1fr);gap:3px 8px;align-items:center;padding:12px 40px 12px 8px}
.list-view .building-move{grid-column:1;grid-row:1/4;height:125px}
.list-view .island a.island-name{position:static;transform:none;grid-column:2;max-width:100%;width:fit-content;min-height:44px;padding:4px 0;white-space:normal;justify-content:start;text-align:left;font-size:20px!important}
.list-view .island .sub,.list-view .island .desc{grid-column:2;margin:0}
.list-view .island .landscape{height:125px}.list-view .island .fav{right:7px}
@media(max-width:560px){.list-view .island a.island-name{font-size:19px!important}}
/* A name becomes an entrance only after the explorer arrives. */
.island a.island-name.ready{background:#087a64;color:#fff;border:1.5px solid #fff;box-shadow:0 3px 7px #31574833}
.island a.island-name.ready::after{content:' ↗';font-size:.85em;margin-left:4px}
.island.selected a.island-name:not(.ready){background:#e9f2dc;color:#234d42;border-color:#c9b681}
.list-view .island a.island-name.ready{background:#087a64;padding:7px 10px;border-radius:12px}
/* Keep the outside island badges clear of the inward-facing building names. */
.theme-island[data-group="imagination"] .theme-label{left:25%;bottom:3px}
.theme-island[data-group="discovery"] .theme-label{left:75%;bottom:3px}
.map-viewport{height:700px}
@media(max-width:560px){.map-viewport{height:570px}}

/* Small woodblock-inspired curls below the islands. */
.hokusai-sea{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;overflow:visible}.list-view .hokusai-sea{display:none}

/* A single short welcome when the explorer reaches a building. */
.island.arrived .arrival-feature{transform-box:fill-box;transform-origin:center;animation:theme-welcome .85s ease-in-out 2}
.island.arrived [data-theme="english"] .windmill-blades{animation:windmill-welcome 1.7s ease-in-out 1}
.island.arrived .bubbles{animation:bubble-welcome .85s ease-out 2}
.island.arrived .doorstep{animation:doorstep-welcome 1.7s ease-out 1}
@keyframes theme-welcome{0%,100%{translate:0 0}45%{translate:0 -5px}}
@keyframes windmill-welcome{to{rotate:360deg}}
@keyframes bubble-welcome{0%,100%{opacity:1;translate:0 0}65%{opacity:.45;translate:0 -9px}}
@keyframes doorstep-welcome{40%{filter:brightness(1.22)}100%{filter:brightness(1)}}
@media(prefers-reduced-motion:reduce){.island.arrived .arrival-feature,.island.arrived .windmill-blades,.island.arrived .doorstep{animation:none!important}}

/* Shallow turquoise shelves fade into the deeper blue open sea. */
.ocean{background-color:#70bbcf;background-image:radial-gradient(ellipse at 34% 6%,#b5ede3a6,transparent 65%),linear-gradient(145deg,#8dd8d7 0%,#78c5d2 54%,#649fbd 100%)}
.radial-world{background-image:radial-gradient(ellipse 200px 125px at 50% 32%,#d5f4df70,transparent 100%),radial-gradient(ellipse 200px 130px at 24.5% 49%,#d5f4df60,transparent 100%),radial-gradient(ellipse 200px 130px at 75.5% 49%,#d5f4df60,transparent 100%),radial-gradient(ellipse 200px 130px at 31% 78%,#d5f4df60,transparent 100%),radial-gradient(ellipse 200px 130px at 69% 78%,#d5f4df60,transparent 100%),repeating-radial-gradient(ellipse at 65% 88%,transparent 0 60px,#e7f6e516 61px 62px,transparent 64px 115px)}
.shore-foam{animation:shore-breathe 7s ease-in-out infinite}.theme-island:nth-child(2n) .shore-foam{animation-delay:-2.7s}.theme-island:nth-child(3n) .shore-foam{animation-delay:-4.2s}
.central-ripples{animation:sea-breathe 9s ease-in-out infinite}.sea-wave{animation:sea-breathe 11s ease-in-out infinite}.sea-wave:nth-of-type(2){animation-delay:-4s}
@keyframes shore-breathe{0%,100%{opacity:.45}50%{opacity:.95}}
@keyframes sea-breathe{0%,100%{opacity:.55}50%{opacity:.83}}
.list-view .radial-world{background-image:none}
@media(prefers-reduced-motion:reduce){.shore-foam,.central-ripples,.sea-wave{animation:none!important}}


/* Whole-map introduction, then full-size readable buildings on selection. */
.toolbar{flex-wrap:wrap}.map-viewport.overview{min-height:0!important;max-height:none;overflow:hidden}.overview .radial-world{width:1000px;min-width:1000px;max-width:none;margin:0;transform:scale(var(--overview-scale,1));transform-origin:top left}.map-viewport.dragging{cursor:grabbing}.map-viewport.dragging *{cursor:grabbing!important}.map-viewport{user-select:none;-webkit-user-select:none}.building-move,.island-name{-webkit-user-drag:none}
.island a.island-name.ready::after{content:'再點進入';position:absolute;left:50%;top:calc(100% + 4px);transform:translateX(-50%);margin:0;padding:3px 9px;border-radius:10px;background:#fff9e8;color:#285a4c;border:1px solid #a2c3af;font-size:12px;line-height:1.4;white-space:nowrap;box-shadow:0 2px 4px #244d3c16;pointer-events:none}
.list-view .island a.island-name.ready::after{position:static;transform:none;margin-left:8px;font-size:12px}.launch-notice{position:relative;background:#eef4e7;padding:22px 25px;border-top:1px solid #d5e3cd}.launch-notice h2{padding-right:30px}.launch-notice p{font-size:16px;line-height:1.7;max-width:760px}.launch-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.launch-actions a{text-decoration:none}.notice-close{position:absolute;right:12px;top:8px;font-size:26px}.address-label{max-width:650px;font-size:13px;color:#5e766b}.address-label input{font-size:14px;background:#fffdf7;user-select:text;-webkit-user-select:text}.launch-notice [hidden]{display:none!important}
@media(max-width:560px){.toolbar .map-caption{display:none}.toolbar{gap:5px}.toolbar #overviewButton{font-size:13px}.launch-notice{padding:18px}.launch-actions .surprise{font-size:16px}.island a.island-name.ready::after{font-size:13px}}

.header-tools{display:flex;align-items:center;gap:4px}.extra-actions{display:flex;gap:12px;flex-wrap:wrap}.extra-actions .surprise:disabled{background:#e3e7db;color:#7c887b;cursor:default;box-shadow:none}.install-icon{border-radius:20px;box-shadow:0 5px 15px #315c4924}.speak-name{position:absolute;right:-2px;bottom:0;z-index:4;width:40px;height:40px;padding:10px;display:grid;place-items:center;background:#fff9e8e8;border:1px solid #b5c7ab;border-radius:50%;box-shadow:0 2px 0 #82a89a55;color:#30675a;touch-action:manipulation}.speak-name svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.speak-name:hover{background:#deeed5}.list-view .speak-name{right:10px;bottom:10px}.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}
@media(max-width:560px){header{flex-wrap:wrap;gap:8px}.header-tools{width:100%;justify-content:flex-end}.header-tools .quiet{font-size:14px;padding:8px 10px}.extra-actions{display:grid;grid-template-columns:1fr}.extra-actions .surprise{font-size:16px}.speak-name{width:42px;height:42px}.list-view .island .desc{padding-right:32px}}
