/* © 2026 CSGHS YuHsuan Hsiao. All rights reserved. 保留所有權利，未經作者書面同意不得重製、改作或散布。詳見 LICENSE。 */
/* Original island interface. No external fonts or image assets. */
:root{--sea:#aacbc6;--sea-deep:#92b9b5;--ivory:#faf8ef;--forest:#214c40;--olive:#72825b;--orange:#c35c3b;--stroke:#d8ded0}
html,body{height:100%;overflow:hidden}body{background:var(--sea);color:var(--forest)}button{touch-action:manipulation}.island-home{height:100dvh;min-height:500px;position:relative;overflow:hidden;background:radial-gradient(ellipse at 50% 30%,#c5d9ce 0%,#a9c9c3 62%,#95bdb9 100%);isolation:isolate}
.island-home:before{content:'';position:absolute;inset:0;opacity:.12;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='90' height='90'%3E%3Cpath d='M8 30q10-3 20 0m35 24q7-2 14 0' fill='none' stroke='%23fff' stroke-width='1.5'/%3E%3C/svg%3E");z-index:-1}.island-brand{position:absolute;top:26px;left:28px;z-index:5;display:flex;align-items:center;gap:15px;background:var(--ivory);padding:15px 20px;border-radius:20px;box-shadow:0 5px 30px #2c56410c}.brand-symbol{width:47px;height:47px;display:grid;place-items:center;border-radius:50%;background:#e8ead8;font-size:27px}.island-brand strong{font-size:24px;letter-spacing:.1em;display:block;line-height:1.3}.island-brand small{display:block;letter-spacing:.12em;font-size:10px;color:#738475;margin-top:4px}.island-brand .school{border-left:1px solid #d6dbce;margin-left:4px;padding-left:15px;font-size:11px;line-height:1.8;color:#5a7163}
.island-top-tools{position:absolute;top:30px;right:28px;z-index:5;display:flex;gap:9px;align-items:center}.surface-btn{border:1px solid #ffffff60;background:var(--ivory);border-radius:13px;padding:11px 16px;color:var(--forest);font-size:13px;font-weight:700;box-shadow:0 4px 14px #1c4d3508;min-height:44px}.surface-btn.active{background:var(--forest);color:var(--ivory);border-color:var(--forest)}.surface-btn svg{vertical-align:-3px;margin-right:5px}.demo-stamp{font-size:10px;padding:5px 9px;border-radius:7px;background:#fbf0d7;color:#7c5a1b;letter-spacing:.03em}
.intro-panel{position:absolute;left:45px;top:160px;width:300px;z-index:4;pointer-events:none}.intro-panel>*{pointer-events:auto}.intro-eyebrow{font-size:10px;letter-spacing:.2em;font-weight:700;color:#567363}.intro-panel h1{font-family:"Noto Serif TC","Songti TC","PMingLiU",serif;font-weight:700;line-height:1.25;font-size:44px;letter-spacing:.05em;margin:15px 0 18px}.intro-panel p{font-size:13px;line-height:1.95;color:#4e6f61;margin:0 0 20px}.island-cta{display:flex;align-items:center;justify-content:space-between;width:228px;border:0;border-radius:13px;background:var(--forest);padding:14px 18px;color:white;font-weight:700;font-size:14px;box-shadow:0 7px 20px #204c3b20}.island-cta:hover{background:#30614e}.island-cta span:last-child{font-size:19px}.intro-caption{display:flex;gap:8px;margin-top:13px;font-size:10px;color:#597366}.intro-caption span+span:before{content:'·';padding-right:8px}.trip-note{position:absolute;left:34px;bottom:117px;z-index:4;width:264px;background:#faf8efea;border:1px solid #fff9;border-radius:18px;padding:17px 19px;box-shadow:0 5px 20px #214b3810}.trip-note .kicker{font-size:10px;letter-spacing:.12em;color:#81917b}.trip-note strong{display:block;font-size:14px;line-height:1.7;margin:5px 0}.trip-note p{font-size:11px;line-height:1.8;margin:0;color:#71816d}.trip-note .tiny-action{border:none;background:none;color:var(--orange);padding:7px 0 0;font-size:11px;font-weight:700;text-align:left;cursor:pointer}
.map-viewport{position:absolute;inset:65px -40px 65px 110px;overflow:hidden;touch-action:none;cursor:grab}.map-viewport.dragging{cursor:grabbing}.island-map{width:100%;height:100%;display:block;user-select:none;-webkit-user-select:none}.map-hotspot{cursor:pointer;pointer-events:all}.map-hotspot:hover .pin-bg,.map-hotspot:focus-visible .pin-bg{fill:#fffef8;stroke:#b96b4b;stroke-width:2}.map-hotspot:focus-visible{outline:none}.pin-hit{display:none}.pin-title{font:700 12px "Microsoft JhengHei","PingFang TC",sans-serif;fill:#385647}.pin-num{font:700 10px sans-serif;fill:#fff}.pin-tiny{font:10px "Microsoft JhengHei",sans-serif;fill:#71826c}.map-legend{position:absolute;right:32px;bottom:126px;z-index:3;color:#476e62;font-size:11px;line-height:1.8;max-width:190px;text-align:right;pointer-events:none}.map-legend b{font-family:Georgia,serif;font-size:15px;font-weight:400;letter-spacing:.13em;display:block}.map-controls{position:absolute;right:28px;bottom:203px;display:grid;gap:7px;z-index:5}.map-controls button{border:1px solid #ffffff88;background:var(--ivory);border-radius:11px;width:42px;height:42px;color:var(--forest);font-size:19px;box-shadow:0 3px 12px #24513d0d}.map-controls button:last-child{font-size:15px}.island-dock{position:absolute;bottom:25px;left:50%;transform:translateX(-50%);display:flex;align-items:center;z-index:6;background:var(--ivory);padding:9px 13px;border-radius:23px;box-shadow:0 10px 35px #274e3520;gap:3px;border:1px solid #fff9}.island-dock button{border:0;border-radius:15px;background:transparent;display:grid;place-items:center;gap:4px;width:91px;padding:10px 7px;color:#697b67;font-size:11px;white-space:nowrap;min-height:62px}.island-dock button svg{width:21px;height:21px}.island-dock button:hover,.island-dock button:focus-visible{background:#ecefdf;color:var(--forest)}.island-dock button:first-child{color:var(--forest);background:#e9eddc}.island-dock .dock-divider{height:36px;border-left:1px solid #dfe4d5;margin:0 8px}.island-dock .dock-home{width:56px}.island-footer{position:absolute;left:33px;bottom:23px;font-size:9px;line-height:1.8;color:#4f7665;letter-spacing:.04em;z-index:3}.island-footer span{display:block}
.waves{animation:sea-sway 6s ease-in-out infinite alternate}.smoke{animation:smoke-rise 6s ease-in-out infinite}.flag-wave{animation:flag-shift 4s ease-in-out infinite alternate;transform-box:fill-box;transform-origin:left center}.no-motion .waves,.no-motion .smoke,.no-motion .flag-wave{animation:none}.island-home.reduce-pause *{animation-play-state:paused!important}@keyframes sea-sway{from{transform:translate(0,0);opacity:.6}to{transform:translate(6px,-2px);opacity:1}}@keyframes smoke-rise{0%,100%{opacity:.3;transform:translateY(0)}50%{opacity:.1;transform:translateY(-9px)}}@keyframes flag-shift{to{transform:scaleX(.86)}}
.zone-list{position:absolute;top:130px;bottom:112px;left:355px;right:95px;z-index:5;background:#f9f8efef;border:1px solid #fff9;border-radius:25px;padding:28px;overflow:auto;box-shadow:0 15px 50px #244e3f13}.zone-list h2{font-size:23px;margin:0 0 3px}.zone-list>p{font-size:12px;color:#778776;margin:0 0 20px}.zone-list-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.zone-list-card{text-align:left;border:1px solid #dfe4d6;background:#fffef9;border-radius:17px;padding:17px;display:flex;gap:14px;align-items:center;min-height:108px;color:var(--forest)}.zone-list-card:hover{border-color:#b6c7aa;background:#f2f5e9}.zone-list-card:first-child{grid-column:span 2;background:#edf1df}.zone-list-card .znum{display:grid;place-items:center;min-width:37px;height:37px;border:1px solid #cad4bf;border-radius:50%;color:#a4663b;font-size:12px}.zone-list-card strong{font-size:16px;display:block}.zone-list-card small{font-size:11px;display:block;color:#7b8878;margin-top:5px;line-height:1.6}
.island-dialog{padding:0;border:1px solid #e0e7d7;border-radius:23px;background:var(--ivory);color:var(--forest);max-width:calc(100vw - 32px);max-height:calc(100dvh - 40px);box-shadow:0 30px 90px #193e4045}.island-dialog::backdrop{background:#153b354d;backdrop-filter:blur(5px)}.dialog-close{position:absolute;right:15px;top:14px;width:38px;height:38px;border-radius:50%;border:1px solid #d8dfd1;background:#fffdf7;color:#536d58;font-size:20px;z-index:9}.dialog-close:hover{background:#edf0e2}.info-dialog{width:540px;padding:33px}.dialog-eyebrow{font-size:11px;color:var(--orange);letter-spacing:.12em;font-weight:700;margin-bottom:9px}.info-dialog h2{font-size:27px;letter-spacing:.03em;line-height:1.5;margin:0 35px 12px 0}.info-dialog .lead{font-size:14px;line-height:1.9;color:#60775e;margin:0 0 20px}.panel-card{border:1px solid #dfe5d5;background:#fffef9;padding:15px 17px;border-radius:14px;margin:11px 0}.panel-card strong{font-size:14px}.panel-card p{font-size:12px;line-height:1.85;color:#6b7e65;margin:6px 0 0}.panel-card a{font-size:13px;color:#2b6350;font-weight:700;text-decoration:none;display:block;line-height:1.8}.panel-card a::after{content:' ↗'}.panel-note{padding:13px 16px;background:#efeedb;border-radius:12px;color:#777548;font-size:12px;line-height:1.8;margin:16px 0}.panel-action{border:0;border-radius:11px;display:block;width:100%;padding:12px 17px;background:var(--forest);color:#fff;font-size:14px;font-weight:700;min-height:46px;text-align:center;text-decoration:none}.panel-action:disabled{opacity:.6}.route-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.route-grid .panel-card{margin:0}.route-grid .panel-card strong{font-size:13px}.privacy-foot{font-size:11px;line-height:1.8;color:#82917a;margin-top:17px}
#bookingDialog{width:1120px;background:#f6f7f2;overflow:auto}#bookingDialog>.dialog-close{position:sticky;float:right;top:15px;margin:15px 15px 0 -53px}#bookingDialog .wrap{max-width:none;padding:0 27px}#bookingDialog .top{padding:22px 50px 17px 0}#bookingDialog .hero{padding:23px 0}#bookingDialog .hero h1{font-size:28px}#bookingDialog .hero p br{display:none}#bookingDialog .hero p{font-size:13px}#bookingDialog .layout{gap:18px;grid-template-columns:305px minmax(0,1fr)}#bookingDialog .stack{position:static}#bookingDialog footer{font-size:10px}#bookingDialog .toast{z-index:20}#bookingDialog .demobar{font-size:11px;padding:7px 50px 7px 12px}.toast{z-index:999}
@media(min-width:1600px){.intro-panel{left:70px;top:190px}.intro-panel h1{font-size:52px}.intro-panel{width:340px}.trip-note{left:60px}.map-viewport{inset:65px 0 50px 140px}}
@media(max-width:1120px){.island-brand .school{display:none}.intro-panel{left:28px;width:230px;top:146px}.intro-panel h1{font-size:36px}.intro-panel p{font-size:12px}.island-cta{width:215px}.trip-note{left:24px;width:230px;bottom:120px}.map-viewport{inset:85px -110px 80px 0}.zone-list{left:285px;right:75px;top:124px}.island-footer{display:none}.map-legend{right:22px}.island-dock button{width:80px}.island-brand{padding:12px 16px}.island-brand strong{font-size:21px}}
@media(max-height:730px) and (min-width:721px){.intro-panel{top:128px}.intro-panel h1{font-size:39px;margin:10px 0 13px}.trip-note{display:none}.map-viewport{inset:30px -30px 40px 100px}.map-controls{bottom:140px}.map-legend{display:none}.island-dock{bottom:15px}}
@media(max-width:720px){.island-home{min-height:0}.island-brand{top:16px;left:15px;border-radius:15px;padding:10px 12px;gap:9px}.brand-symbol{width:32px;height:32px;font-size:22px}.island-brand strong{font-size:19px}.island-brand small{font-size:8px;letter-spacing:.04em;margin-top:2px}.island-top-tools{top:20px;right:15px;gap:6px}.surface-btn{padding:9px 11px;font-size:11px;border-radius:11px}.surface-btn svg{display:none}.island-top-tools .motion-control{display:none}.demo-stamp{position:absolute;top:54px;right:0;white-space:nowrap;font-size:9px}.intro-panel{left:23px;right:23px;top:108px;width:auto;pointer-events:none}.intro-eyebrow{font-size:9px}.intro-panel h1{font-size:34px;letter-spacing:.06em;margin:7px 0 9px}.intro-panel h1 br{display:none}.intro-panel p{font-size:12px;line-height:1.8;margin:0;max-width:290px}.intro-panel p br{display:none}.intro-panel .island-cta{display:none}.intro-caption{margin-top:8px;font-size:9px}.map-viewport{inset:210px -18px 163px -18px;min-height:180px}.map-controls{right:14px;bottom:218px;gap:5px}.map-controls button{width:34px;height:34px;border-radius:9px;font-size:17px}.map-legend{display:none}.trip-note{left:16px;right:16px;bottom:100px;width:auto;padding:10px 15px;border-radius:14px;min-height:64px;display:grid;grid-template-columns:1fr auto;gap:1px 8px;align-items:center}.trip-note .kicker{font-size:9px}.trip-note strong{font-size:12px;margin:0}.trip-note p{display:none}.trip-note .tiny-action{grid-row:1/3;grid-column:2;padding:9px 12px;border-radius:9px;background:#e5ead9;color:#315340;font-size:11px}.island-dock{left:12px;right:12px;bottom:16px;transform:none;padding:7px 4px;border-radius:18px;gap:0;justify-content:space-around}.island-dock button{width:auto;flex:1;min-width:0;font-size:9px;padding:9px 4px;min-height:59px;gap:4px;border-radius:12px}.island-dock button svg{width:20px;height:20px}.island-dock .dock-divider,.island-dock .dock-home{display:none}.zone-list{left:16px;right:16px;top:253px;bottom:182px;padding:17px;border-radius:17px}.zone-list h2{font-size:17px}.zone-list>p{font-size:10px;margin-bottom:12px}.zone-list-grid{grid-template-columns:1fr;gap:8px}.zone-list-card,.zone-list-card:first-child{grid-column:auto;min-height:72px;padding:10px 12px;border-radius:12px;gap:11px}.zone-list-card strong{font-size:13px}.zone-list-card small{font-size:10px;margin-top:2px}.zone-list-card .znum{min-width:30px;height:30px;font-size:10px}.info-dialog{padding:25px 21px}.info-dialog h2{font-size:23px}.route-grid{grid-template-columns:1fr}.island-dialog{max-width:calc(100vw - 20px);max-height:calc(100dvh - 24px);border-radius:18px}#bookingDialog .wrap{padding:0 15px}#bookingDialog .top{padding:18px 37px 14px 0}#bookingDialog .brand{font-size:11px}#bookingDialog .brand .mark{display:none}#bookingDialog .hero h1{font-size:25px}#bookingDialog .hero{padding:18px 0}#bookingDialog .hero p{font-size:12px}#bookingDialog .layout{display:flex;flex-direction:column}#bookingDialog .card{padding:18px}#bookingDialog .calendar{padding:18px 13px}#bookingDialog .day{padding:10px 7px}#bookingDialog .day b{font-size:21px}#bookingDialog .topright .quiet{font-size:11px}#bookingDialog>.dialog-close{top:10px;margin:10px 10px 0 -48px}.pin-title{font-size:14px}.pin-tiny{display:none}}
@media(max-height:720px) and (max-width:720px){.intro-panel{top:94px}.intro-panel h1{font-size:28px;margin:6px 0}.intro-panel p{font-size:11px}.intro-eyebrow{display:none}.intro-caption{font-size:9px}.map-viewport{top:181px;bottom:150px}.trip-note{bottom:91px;min-height:54px}.island-dock{bottom:10px}.island-dock button{min-height:53px}.zone-list{top:193px;bottom:161px}.map-controls{bottom:165px}}
@media(prefers-reduced-motion:reduce){.waves,.smoke,.flag-wave{animation:none!important}}

@media(max-width:720px){.pin-card{transform:scale(1.5)}.pin-hit{display:block}.pin-title{font-size:14px}}
