:root{--paper:#fbf3df;--paper-2:#f4e6c4;--card:#fffaf0;--ink:#5b3f2e;--ink-soft:#8a6a50;--sea:#cfe6e4;--orange:#f4a847;--orange-d:#d98a2b;--yellow:#ffd23f;--green:#9fd08f;--green-d:#6fae62;--red:#ef5b6b;--radius:30px;--blob:30px 26px 32px 28px / 28px 32px 26px 30px;--tap:72px;--pad:clamp(10px, 2vw, 24px);--crayon-stripes:repeating-linear-gradient(115deg, #fff3 0 3px, transparent 3px 10px);color:var(--ink);font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,Noto Sans CJK TC,Noto Sans CJK HK,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background-color:var(--paper);overscroll-behavior:none;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='280' height='280'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .55  0 0 0 0 .42  0 0 0 0 .27  0 0 0 .2 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>"),radial-gradient(at 20% 10%,#ffffff8c,#0000 55%),radial-gradient(at 85% 90%,#f4c88c59,#0000 50%);overflow:hidden}button{font:inherit;color:inherit}a{color:inherit;text-decoration:none}img{-webkit-user-drag:none}.app{height:100dvh;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);position:relative}.route-frame{height:100%}.zc{vertical-align:baseline;white-space:nowrap;align-items:center;margin:0 .06em;display:inline-flex}.zc__zy{color:var(--ink-soft);align-items:center;margin-left:.04em;font-size:max(.48em,12px);font-weight:700;line-height:1;display:inline-flex;position:relative}.zc__syms{flex-direction:column;align-items:center;line-height:1.02;display:flex}.zc__tone{margin-left:.04em;font-size:1.05em;line-height:1}.zc__neutral{line-height:1;position:absolute;top:-.95em;left:50%;transform:translate(-60%)}.art,.drawn-icon{object-fit:contain;width:100%;height:100%;display:block}.drawn-icon--muted{opacity:.32;filter:grayscale(.7)}.big-btn-wrap{display:block}.big-btn{width:100%;min-height:var(--tap);border:4px solid var(--ink);border-radius:var(--blob);background:var(--card) var(--crayon-stripes);color:var(--ink);text-align:center;cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:12px 18px;font-size:clamp(20px,2.4vw,30px);font-weight:800;line-height:1.35;transition:transform 80ms,box-shadow 80ms;display:flex;position:relative;box-shadow:0 7px #5b3f2e61}.big-btn:active{transform:translateY(5px);box-shadow:0 2px #5b3f2e61}.big-btn--primary{background-color:var(--orange)}.big-btn--green{background-color:var(--green)}.big-btn__label{text-wrap:balance;line-height:1.7}.big-btn__icon{width:clamp(54px,8.4vw,104px);height:clamp(54px,8.4vw,104px);display:block}.entrance-card .big-btn__icon,.hub-card .big-btn__icon{width:clamp(70px,11vw,138px);height:clamp(70px,11vw,138px)}.entrance-card .big-btn__label{font-size:clamp(18px,2.1vw,27px)}.badge{border:3px solid var(--ink);color:var(--ink);background:#ffb3b3;border-radius:999px;padding:3px 12px 2px;font-size:clamp(13px,1.5vw,18px);font-weight:800;line-height:1.3;position:absolute;top:-12px;right:-8px;transform:rotate(4deg);box-shadow:0 3px #5b3f2e59}.badge .zc__zy{color:var(--ink)}.page{flex-direction:column;height:100%;display:flex}.page-header{padding:var(--pad) var(--pad) 6px;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;display:grid}.page-header__side--right{justify-content:flex-end;display:flex}.page-title{text-align:center;white-space:nowrap;text-shadow:0 3px #fffc;margin:0;font-size:clamp(26px,4vw,44px);font-weight:900;line-height:1.3}.nav-btn{border:4px solid var(--ink);border-radius:var(--blob);background:var(--card) var(--crayon-stripes);white-space:nowrap;justify-content:center;align-items:center;gap:8px;min-width:128px;min-height:66px;padding:6px 18px;font-size:clamp(18px,2.2vw,26px);font-weight:800;line-height:1.3;display:inline-flex;box-shadow:0 5px #5b3f2e61}.nav-btn:active{transform:translateY(3px);box-shadow:0 2px #5b3f2e61}.nav-btn__icon{flex:none;width:40px;height:40px;display:block}.page-main{min-height:0;padding:8px var(--pad) calc(var(--pad) + 8px);flex:1;overflow:auto}.map-page{gap:var(--pad);height:100%;padding:var(--pad);grid-template-columns:minmax(0,1.2fr) minmax(220px,.8fr);display:grid}.map-page__map{min-width:0;min-height:0}.taiwan-map{filter:drop-shadow(0 6px #5b3f2e2e);width:100%;height:100%;display:block}.sea-doodles__sea{fill:var(--sea);stroke:#86b4b8;stroke-width:4px}.sea-doodles__wave{fill:none;stroke:#8fc2c9;stroke-width:3.4px;stroke-linecap:round}.sea-doodles__cloud ellipse{fill:#fffaf0;stroke:#b9a389;stroke-width:2.4px}.sea-doodles__hull{fill:var(--orange);stroke:var(--ink);stroke-width:3.2px;stroke-linejoin:round}.sea-doodles__sail{fill:#fffaf0;stroke:var(--ink);stroke-width:3.2px;stroke-linejoin:round;stroke-linecap:round}.sea-doodles__compass{fill:#fffaf0;stroke:var(--ink);stroke-width:3.4px}.sea-doodles__needle-n{fill:#ef7a63;stroke:var(--ink);stroke-width:2.6px;stroke-linejoin:round}.sea-doodles__needle-s{fill:#86c5d8;stroke:var(--ink);stroke-width:2.6px;stroke-linejoin:round}.sea-doodles__n{fill:var(--ink);font-size:16px;font-weight:900}.county{stroke:#8a6a50;stroke-width:1.7px;stroke-linejoin:round;cursor:pointer;outline:none;transition:opacity .1s}.county:active,.county:focus-visible{opacity:.82}.county--island{stroke-width:1.1px}.county.is-selected{stroke:#d9602b;stroke-width:3.6px}.county--playable{stroke:#e0891f;stroke-width:3.4px;animation:1.6s ease-in-out infinite pulse-stroke}@keyframes pulse-stroke{0%,to{stroke-opacity:.5}50%{stroke-opacity:1}}.counties--art .county:not(.county--island){fill:#fff8e48c;stroke:#fffffff2;stroke-width:1.8px;stroke-dasharray:none}.counties--art .county:not(.county--island):hover{fill:#fea9}.counties--art .county--playable:not(.county--island){fill:#ffd65080;stroke:#e0891f;stroke-width:3px;stroke-dasharray:none}.counties--art .county.is-selected:not(.county--island){fill:#ffd23f66;stroke:#d9602b;stroke-width:3.4px;stroke-dasharray:none}.island-frame{fill:#fff4d6;stroke:#b99a6b;stroke-width:2.6px;stroke-dasharray:8 6;cursor:pointer}.island-frame__label{fill:var(--ink-soft);pointer-events:none;font-size:17px;font-weight:800}.island-note{fill:var(--ink-soft);font-size:17px;font-weight:800}.island-note--small{font-size:14px;font-weight:700}.county-label text{fill:var(--ink);paint-order:stroke;stroke:#fffaebeb;stroke-width:4px;stroke-linejoin:round;font-weight:800}.county-label__line{stroke:var(--ink-soft);stroke-width:1.5px}.start-marker{animation:1.1s ease-in-out infinite bob}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}.map-pending{border-radius:var(--radius);background:#fff9;border:4px dashed #c9a35f;flex-direction:column;justify-content:center;align-items:center;gap:8px;height:100%;font-size:28px;font-weight:800;display:flex}.map-page__side{flex-direction:column;justify-content:center;align-items:stretch;gap:clamp(10px,2vh,22px);min-height:0;display:flex}.game-title{border:4px solid var(--ink);border-radius:var(--blob);background:#ffd96b var(--crayon-stripes);text-align:center;align-self:center;margin:0;padding:10px 26px 12px;font-size:clamp(28px,4.2vw,48px);font-weight:900;line-height:1.45;transform:rotate(-1.5deg);box-shadow:0 6px #5b3f2e61}.game-title__line{display:block}.speech{justify-content:center;align-items:center;gap:10px;display:flex}.speech__char{filter:drop-shadow(0 3px #5b3f2e38);flex:none;width:clamp(84px,11vw,140px);height:auto}.soon__binbin{filter:drop-shadow(0 3px #5b3f2e38);width:auto;height:clamp(110px,24vh,200px)}.speech__bubble{border:4px solid var(--ink);background:var(--card);text-wrap:balance;border-radius:26px;padding:12px 16px;font-size:clamp(17px,2vw,26px);font-weight:800;line-height:1.5;position:relative}.speech__bubble:before{content:"";border-bottom:4px solid var(--ink);border-left:4px solid var(--ink);background:var(--card);width:22px;height:22px;position:absolute;top:50%;left:-15px;transform:translateY(-50%)rotate(45deg)}.hold-btn{min-height:52px;color:var(--ink-soft);background:#fffaebb3;border:3px solid #bda98c;border-radius:999px;align-self:center;padding:8px 18px;font-size:18px;font-weight:700;position:relative;overflow:hidden}.hold-btn__fill{background:#e5cf9f;width:0;position:absolute;inset:0}.hold-btn.is-holding .hold-btn__fill{width:100%;transition:width var(--hold-ms) linear}.hold-btn__content{position:relative}.toast-host{bottom:calc(24px + env(safe-area-inset-bottom));pointer-events:none;z-index:20;justify-content:center;display:flex;position:fixed;left:0;right:0}.toast{border:4px solid var(--ink);border-radius:var(--blob);background:#fff3c9 var(--crayon-stripes);align-items:center;gap:12px;padding:10px 30px 12px 18px;font-size:clamp(22px,3vw,34px);font-weight:900;line-height:1.5;display:flex;box-shadow:0 8px #5b3f2e61,0 14px 24px #0000001f}.toast__sticker{filter:drop-shadow(0 2px #5b3f2e40);flex:none;width:auto;height:clamp(70px,14vh,110px)}.toast__icon{flex:none;width:52px;height:52px;display:block}.changhua{gap:var(--pad);grid-template-columns:minmax(190px,.62fr) minmax(0,1.6fr);height:100%;display:grid}.hero{border:4px solid var(--ink);border-radius:var(--blob);background:var(--card) var(--crayon-stripes);flex-direction:column;align-items:center;gap:6px;min-height:0;padding:14px 12px 12px;display:flex;box-shadow:0 7px #5b3f2e4d}.hero-art{flex:1;justify-content:center;align-items:center;width:100%;min-height:0;display:flex;position:relative}.hero-art__landmark{z-index:1;filter:drop-shadow(0 3px #5b3f2e4d);height:40%;display:flex;position:absolute;top:0;left:50%;transform:translate(-50%)}.hero-art__landmark>*{width:auto;height:100%}.hero-art__landmark>svg{aspect-ratio:120/140}.hero-art__shape{align-self:flex-end;width:80%;height:66%;min-height:0}.hero-art__shape path{fill:var(--yellow);stroke:#e0891f;stroke-width:3px;stroke-linejoin:round}.hero__ribbon{border:3px solid var(--ink);background:#ffe9a8;border-radius:14px;padding:3px 18px 6px;font-size:clamp(18px,2.2vw,26px);font-weight:800;line-height:1.5;transform:rotate(-1.5deg)}.hero__name{font-size:clamp(28px,3.8vw,44px);font-weight:900;line-height:1.4}.hero__hello{color:var(--orange-d);font-size:clamp(20px,2.6vw,30px);font-weight:800;line-height:1.4}.hero__hello .zc__zy{color:var(--orange-d)}.changhua__grid{grid-template-columns:repeat(3,1fr);grid-auto-rows:1fr;align-content:stretch;gap:clamp(14px,2.4vw,28px);min-height:0;padding-top:10px;display:grid}.changhua__grid .big-btn-wrap,.changhua__grid .entrance-card{height:100%}.soon{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:clamp(8px,2vh,20px);height:100%;display:flex}.soon__icon{width:clamp(90px,18vh,150px);height:clamp(90px,18vh,150px);animation:1.4s ease-in-out infinite bob;display:block}.soon__big{margin:0;font-size:clamp(26px,4vw,44px);font-weight:900;line-height:1.5}.soon__small{color:var(--ink-soft);margin:6px 0 0;font-size:clamp(18px,2.4vw,28px);font-weight:700;line-height:1.6}.soon__actions{gap:18px;display:flex}.soon__actions .big-btn-wrap{min-width:200px}.soon__actions .big-btn{flex-direction:row;gap:10px;min-height:72px}.soon__actions .big-btn__icon{width:44px;height:44px}.hub{grid-template-columns:repeat(4,1fr);align-content:center;gap:clamp(14px,2.4vw,30px);height:100%;display:grid}.hub__item{flex-direction:column;align-items:stretch;gap:14px;display:flex}.hub-card{min-height:clamp(150px,32vh,250px)}.hub__count{border:3px solid var(--ink);background:var(--card);border-radius:999px;align-self:center;align-items:center;gap:6px;padding:2px 22px 2px 12px;font-size:clamp(22px,3vw,34px);font-weight:900;display:flex}.hub__star{width:38px;height:38px;display:block}.album{flex-direction:column;align-items:center;gap:14px;min-height:100%;display:flex}.album__legend{border:3px solid var(--ink);background:var(--card);border-radius:999px;gap:24px;padding:2px 22px 4px;font-size:clamp(16px,2vw,22px);font-weight:800;line-height:1.6;display:flex}.album__legend-item{align-items:center;gap:6px;display:inline-flex}.album__legend-icon{width:34px;height:34px;display:block}.album__grid{grid-template-columns:repeat(4,1fr);gap:clamp(12px,2vw,24px);width:100%;display:grid}.slot{border-radius:var(--blob);flex-direction:column;justify-content:center;align-items:center;gap:4px;display:flex;position:relative}.slot--empty{background:#fffaebb3;border:4px dashed #c8b08a}.slot--got{border:4px solid var(--ink);background:var(--card) var(--crayon-stripes);box-shadow:0 5px #5b3f2e59}.slot__icon{width:56%;height:56%;display:block}.slot__art{object-fit:contain;width:100%;height:100%}.slot--empty .slot__art{filter:grayscale();opacity:.35}.slot__name{font-size:clamp(14px,1.8vw,20px);font-weight:800}.slot__marks{gap:4px;display:flex;position:absolute;bottom:6px;right:8px}.slot__marks>span{width:30px;height:30px;display:block}.album__hint{color:var(--ink-soft);margin:0;font-size:clamp(20px,2.6vw,30px);font-weight:800;line-height:1.6}.parents{gap:16px;max-width:980px;margin:0 auto;display:grid}.card{border:4px solid var(--ink);background:var(--card);-webkit-user-select:text;user-select:text;border-radius:22px;padding:18px 22px}.card h2{margin:0 0 8px;font-size:24px}.muted{color:var(--ink-soft);font-size:17px;line-height:1.5}.facts{word-break:break-all;margin:6px 0;padding-left:22px;font-size:17px;line-height:1.7}.parents__actions{flex-wrap:wrap;gap:14px;margin-top:8px;display:flex}.parents__actions .big-btn{flex-direction:row;width:auto;min-width:200px;font-size:22px}.parents__msg{border-radius:14px;margin:12px 0 0;padding:10px 14px;font-size:17px;font-weight:700}.parents__msg--ok{color:#2f6b2a;background:#e3f6df}.parents__msg--error{color:#a02828;background:#ffe3e3}.dialog-backdrop{z-index:40;background:#3c281980;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.dialog{border:4px solid var(--ink);background:var(--card);-webkit-user-select:text;user-select:text;border-radius:24px;width:min(560px,100%);max-height:92dvh;padding:22px;overflow:auto}.dialog h2{margin:0 0 10px;font-size:24px}.dialog__body p{margin:6px 0;font-size:17px;line-height:1.5}.dialog__actions{gap:14px;margin-top:16px;display:flex}.dialog__actions .big-btn{font-size:22px}.save-notice{top:calc(8px + env(safe-area-inset-top));z-index:30;border:3px solid var(--ink);background:#fff3c9;border-radius:18px;align-items:center;gap:10px;max-width:min(720px,94vw);padding:8px 8px 8px 16px;font-size:15px;font-weight:700;display:flex;position:fixed;left:50%;transform:translate(-50%)}.save-notice button{background:#f4d8a0;border:0;border-radius:12px;min-width:44px;min-height:44px;font-size:18px}.rotate-hint{z-index:50;background-color:var(--paper);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:30px;font-weight:900;line-height:1.6;display:none;position:fixed;inset:0}.rotate-hint__icon{width:120px;height:120px;display:block}.rotate-hint__skip{min-height:48px;color:var(--ink-soft);background:#fffaebcc;border:3px solid #bda98c;border-radius:999px;margin-top:24px;padding:8px 18px;font-size:16px;font-weight:700}@media (orientation:portrait){.rotate-hint{display:flex}}@media (height<=520px){:root{--tap:60px;--radius:22px;--pad:10px}.page-header{padding-bottom:2px}.page-title{font-size:22px}.nav-btn{min-width:96px;min-height:54px;padding:2px 12px;font-size:16px}.nav-btn__icon{width:30px;height:30px}.big-btn{gap:2px;padding:6px 10px;font-size:16px;box-shadow:0 5px #5b3f2e61}.big-btn__icon{width:44px;height:44px}.badge{padding:1px 8px;font-size:16px}.game-title{padding:6px 16px 8px;font-size:22px}.speech__char{width:64px}.speech__bubble{padding:8px 10px;font-size:15px}.hold-btn{min-height:44px;font-size:15px}.hub-card{min-height:110px}.hero{gap:2px;padding:8px}.hero__ribbon{padding:1px 12px 3px;font-size:15px}.hero__name{font-size:22px}.hero__hello{font-size:16px}.soon__icon{width:64px;height:64px}.toast{padding:6px 22px 8px 12px;font-size:20px}.toast__icon{width:36px;height:36px}.hub__star{width:28px;height:28px}}@media (prefers-reduced-motion:reduce){.county--playable,.start-marker,.soon__icon{animation:none}}.county-sticker{filter:none}.map-stage{flex:1 1 0;justify-content:center;align-items:center;min-height:0;display:flex}.county-card{border:4px solid var(--ink);border-radius:var(--blob);background:var(--card);flex-direction:column;align-items:center;gap:6px;width:100%;min-height:0;max-height:100%;padding:12px 14px 14px;display:flex;position:relative;box-shadow:0 5px #5b3f2e4d}.county-card__sticker{object-fit:contain;width:auto;max-width:100%;height:clamp(110px,24vh,210px);min-height:0}.county-card__text{flex-direction:column;align-items:center;gap:4px;display:flex}.county-card__name{margin:0;font-size:clamp(22px,2.6vw,34px);font-weight:900;line-height:1.5}.county-card__status{margin:0;padding:4px 14px 3px;font-size:clamp(20px,2.2vw,26px);position:static}.county-card__close{border:3px solid var(--ink);background:var(--card);cursor:pointer;border-radius:50%;place-items:center;width:44px;height:44px;display:grid;position:absolute;top:6px;right:8px}.county-card__close .art-icon,.county-card__close svg{width:26px;height:26px}@media (height<=520px){.county-card{flex-direction:row;gap:10px;padding:8px 52px 8px 10px}.county-card__sticker{max-width:48%;height:clamp(70px,30vh,110px)}.county-card__name{font-size:20px}}.county--island.is-selected{stroke-width:1.6px}.rh{height:100%;min-height:0;padding:0 var(--pad) var(--pad);gap:clamp(8px,1.6vw,20px);display:flex}.rh__stage{flex:1;place-items:center;min-width:0;min-height:0;display:grid;container-type:size}.rh__svg{aspect-ratio:16/9;border:4px solid var(--ink);touch-action:none;-webkit-user-select:none;user-select:none;background:#b9d98a;border-radius:26px;width:min(100cqw,177.778cqh);height:auto;overflow:hidden;box-shadow:0 5px #5b3f2e4d}.rh__hit{cursor:grab;touch-action:none}.rh__hit:active{cursor:grabbing}.rh__side{flex-direction:column;flex:none;justify-content:center;align-items:stretch;gap:clamp(6px,1.4vh,14px);width:clamp(150px,22vw,250px);display:flex}.rh__stars{justify-content:center;gap:8px;display:flex}.rh__star{opacity:.9;width:clamp(26px,4vh,40px);height:clamp(26px,4vh,40px)}.rh__star .art-icon,.rh__star svg{width:100%;height:100%}.rh__star.is-now{transform:scale(1.18)}.rh__speech{flex-direction:column;gap:12px;min-height:0}.rh__speech .speech__bubble{text-align:center;width:100%;font-size:clamp(16px,1.8vw,22px)}.rh__speech .speech__bubble:before{border:0;border-top:4px solid var(--ink);border-left:4px solid var(--ink);top:-13px;left:50%;transform:translate(-50%)rotate(45deg)}.rh__queue{justify-content:center;gap:8px;display:flex}.rh__queue img{width:auto;height:clamp(30px,6vh,52px)}.rh__queue img.is-now{transform:scale(1.12)}.rh__queue img.is-gone{opacity:.25;filter:grayscale()}.rh__turn{justify-content:center;gap:14px;display:flex}.rh__turn-btn{border:3px solid var(--ink);background:var(--card);width:58px;height:58px;color:var(--ink);border-radius:50%;place-items:center;padding:0;display:grid;box-shadow:0 3px #5b3f2e59}.rh__turn-btn:active{transform:translateY(2px)}.rh__turn-btn svg{width:32px;height:32px}.rh__go{min-height:var(--tap);border:4px solid var(--ink);border-radius:var(--blob);color:var(--ink);opacity:.62;background:#d9d2c0;padding:8px 12px;font-size:clamp(22px,2.6vw,30px);font-weight:900;box-shadow:0 5px #5b3f2e59}.rh__go.is-ready{background:var(--green);opacity:1;animation:.9s ease-in-out infinite rh-pop}@keyframes rh-pop{50%{transform:scale(1.05)}}.rh__end{flex-direction:column;gap:10px;display:flex}@media (height<=520px){.rh{padding-bottom:6px}.rh__side{gap:4px;width:clamp(140px,24vw,200px)}.rh__turn-btn{width:44px;height:44px}.rh__go{min-height:56px}.rh__speech{flex-direction:row;gap:8px}.rh__speech .speech__char{width:auto;height:clamp(56px,20vh,84px)}.rh__speech .speech__bubble{padding:6px 8px;font-size:14px}.rh__speech .speech__bubble:before{border:0;border-bottom:4px solid var(--ink);border-left:4px solid var(--ink);top:50%;left:-13px;transform:translateY(-50%)rotate(45deg)}}.rh__star:not(.is-done){filter:grayscale();opacity:.4}.rh__pop{transform-box:fill-box;transform-origin:50%;filter:drop-shadow(0 7px 3px #3c231459);animation:.35s ease-out rh-pop-in}@keyframes rh-pop-in{0%{opacity:0;transform:scale(.6)}}
