@font-face{font-family:Emotion;src:url('assets/emotion-pixel.ttf')}*{box-sizing:border-box}html{color-scheme:dark;background:#151631;color:#fff0c8;font-family:system-ui,sans-serif}body{margin:0;overflow:hidden;background:#101225}button{font:700 13px/1.3 system-ui;color:#fff0c8;background:#283658;border:1px solid #a698d3;min-height:44px;min-width:44px;border-radius:0;padding:9px 12px;touch-action:manipulation;cursor:pointer}button:active,button[aria-pressed=true]{background:#65549c;border-color:#fff0c8}button:focus-visible{outline:3px solid #63c8bf;outline-offset:2px}button:disabled{opacity:.45;cursor:default}.primary{background:#e7b76b;border-color:#fff0c8;color:#151631}.pink{background:#eb8e96;color:#151631;border-color:#fff0c8}#festival{height:var(--vh,100dvh);width:100%;max-width:1200px;margin:auto;display:grid;grid-template-rows:50px minmax(0,1fr) 58px auto;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);border:1px solid #65549c}#toolbar{display:flex;align-items:center;gap:8px;padding:2px 6px;background:#151631;border-bottom:1px solid #a698d3;min-width:0}#home{font-family:Emotion,monospace;font-size:11px;padding:5px;width:55px}#festival-count{font:10px Emotion,monospace;color:#63c8bf;white-space:nowrap}.tools{display:flex;gap:4px;margin-left:auto}.tools button{width:44px;height:44px;padding:2px;font-size:20px}.tools #book{font-size:12px}#stage{position:relative;min-height:0;min-width:0;overflow:hidden;background:#151631}#world{display:block;width:100%;height:100%;image-rendering:pixelated;touch-action:pan-y}#world.arcade{touch-action:none}#layer{position:absolute;inset:0;pointer-events:none}#layer>*{pointer-events:auto}.opening{position:absolute;inset:auto 12px 16px;text-align:center;padding:15px 12px;background:#151631df;border:1px solid #a698d3;box-shadow:5px 5px 0 #15163180}h1,h2,h3{font-family:Emotion,monospace;font-weight:400;line-height:1.5;margin:0 0 10px}h1{font-size:clamp(18px,4.5vw,30px);color:#fff0c8}h1 em{font-style:normal;color:#f9b1c1}h2{font-size:18px;color:#e7b76b}h3{font-size:13px;color:#63c8bf}p{font-size:15px;line-height:1.5;margin:0 0 10px}.eyebrow{font:10px/1.5 Emotion,monospace;color:#63c8bf;margin-bottom:8px}.small{font-size:12px;color:#d3cce7;line-height:1.45}.menu{position:absolute;inset:10px;overflow:auto;overscroll-behavior:contain;display:flex;flex-direction:column;justify-content:center;gap:8px;max-width:580px;margin:auto}.menu>p,.menu>h2{background:#151631e8;padding:8px 12px;margin:0}.station{display:flex;text-align:left;gap:12px;align-items:center;min-height:76px;background:#151631ee;border:1px solid #a698d3;padding:9px 13px}.station img{width:42px;height:42px;image-rendering:pixelated}.station strong{font:12px/1.4 Emotion,monospace;color:#f9b1c1}.station small{display:block;margin-top:5px;font-weight:400;font-size:12px;color:#fff0c8}.station .stamp{margin-left:auto;color:#e7b76b;font-size:17px;white-space:nowrap}#actions{display:flex;gap:5px;padding:6px;background:#151631;border-top:1px solid #a698d3}#actions button{flex:1;min-width:0}#brand{text-align:center;font:10px/1.4 system-ui;color:#c8bde0;padding:3px}#brand b{font-weight:400;color:#fff0c8}.play-layout{position:absolute;inset:8px;display:grid;grid-template-rows:minmax(0,1fr) auto;gap:7px}.board-wrap{display:grid;place-items:center;min-height:0;min-width:0}.board{display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);gap:3px;width:272px;height:272px;background:#151631ed;border:2px solid #e7b76b;padding:3px;box-shadow:5px 5px #151631aa}.tile{position:relative;padding:0;min-height:44px;min-width:44px;display:grid;place-items:center;background:#283658eb;border-color:#65549c;touch-action:pan-y}.tile svg{width:80%;height:80%;pointer-events:none}.tile .echo{position:absolute;top:2px;right:4px;color:#fff0c8;font-size:13px;pointer-events:none}.tile.locked{border-color:#63c8bf}.tile.visited{background:#65549c;border-color:#fff0c8}.tile.start:after{content:'IN';position:absolute;bottom:0;font:8px Emotion;color:#fff0c8}.tile.exit:after{content:'OUT';position:absolute;top:1px;font:8px Emotion;color:#fff0c8}.info{background:#151631eb;border:1px solid #a698d3;padding:10px 12px;min-width:0;max-width:600px;width:100%;margin:auto}.info h2{font-size:14px;margin-bottom:5px}.info p{font-size:13px;margin-bottom:5px}.readout{font:11px/1.5 Emotion,monospace;color:#e7b76b}.joy-board{border-color:#f9b1c1;background:#151631d9}.joy-tile{border-radius:50%;border:2px solid #fff0c855;color:#151631;font-family:Emotion;font-size:10px;padding:0;box-shadow:inset -5px -5px #15163133;touch-action:pan-y}.joy-tile span{pointer-events:none}.joy-tile.selected{outline:3px solid #fff0c8;outline-offset:-5px;box-shadow:0 0 14px #fff0c855;transform:scale(.94)}.joy-tile[data-color="0"]{background:#f9b1c1}.joy-tile[data-color="1"]{background:#e7b76b}.joy-tile[data-color="2"]{background:#669bd5}.arcade-info{position:absolute;top:8px;left:8px;right:8px;display:flex;justify-content:space-between;gap:8px;background:#151631dc;border:1px solid #a698d3;padding:5px 8px;font:10px/1.5 Emotion,monospace;pointer-events:none}.arcade-caption{position:absolute;left:12px;right:12px;bottom:45px;text-align:center;background:#151631e8;border:1px solid #a698d3;padding:8px;font-size:12px;pointer-events:none}.reward{position:absolute;inset:15px;display:flex;flex-direction:column;justify-content:center;text-align:center;background:#151631e8;border:1px solid #e7b76b;padding:18px;overflow:auto;overscroll-behavior:contain;max-width:600px;margin:auto}.reward img{width:74px;height:74px;image-rendering:pixelated;align-self:center;margin:0 0 10px}.reward .big-stars{font:23px Emotion;color:#e7b76b;margin:10px}.ending-choice{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.ending-choice button{flex:1;min-width:130px}#toast{position:absolute;bottom:8px;left:10px;right:10px;background:#fff0c8;color:#151631;padding:8px 12px;font-size:13px;opacity:0;pointer-events:none;transition:opacity .15s;z-index:4}#toast.show{opacity:1}#overlay{position:fixed;inset:0;z-index:20;background:#0b1024d9;display:grid;place-items:center;padding:12px;height:var(--vh,100dvh);top:var(--vtop,0px);bottom:auto}#overlay[hidden]{display:none}.sheet{width:min(620px,100%);max-height:calc(var(--vh,100dvh) - env(safe-area-inset-top) - env(safe-area-inset-bottom) - 24px);background:#fff0c8;color:#151631;border:3px solid #eb8e96;overflow:auto;overscroll-behavior:contain;touch-action:pan-y;padding:18px}.sheet h2{color:#65549c}.sheet h3{color:#426e83}.sheet p{font-size:14px}.sheet .small{color:#65549c}.sheet button{min-height:46px}.sheet-actions{display:grid;gap:8px;margin-top:15px}.medal-row{display:flex;gap:12px;align-items:center;border-bottom:1px solid #a698d3;padding:12px 0}.medal-row img{width:46px;height:46px;image-rendering:pixelated}.medal-row p{margin:0}.expanded #festival{position:fixed;inset:0;max-width:none;z-index:5}.held{background:#65549c!important;border-color:#fff0c8!important}#storage-note{font-size:11px;color:#fff0c8;background:#65549c;padding:5px;text-align:center}@media(max-height:680px) and (orientation:portrait){.board{width:220px;height:220px;gap:2px;padding:2px}.info{padding:6px 9px}.info p{font-size:12px}.info h2{font-size:12px}.opening{inset:auto 10px 10px;padding:10px}.opening p{font-size:13px}.menu{gap:6px}.station{min-height:63px;padding:6px 10px}.station img{width:32px;height:32px}.station strong{font-size:10px}.station small{font-size:11px}.menu>h2{font-size:14px}}@media(orientation:landscape){.play-layout{grid-template-columns:52% minmax(0,1fr);grid-template-rows:minmax(0,1fr);align-items:center}.board{width:224px;height:224px}.info{max-height:100%;overflow:auto}.opening{left:38%;right:15px;bottom:15px}.menu{inset:6px 10px 6px 42%;gap:5px}.menu>h2{font-size:13px}.menu>p{font-size:11px}.station{min-height:55px;padding:5px 8px}.station strong{font-size:10px}.station small{font-size:10px}.station img{width:32px;height:32px}.reward{left:35%;right:10px;inset-block:8px;padding:12px}.reward img{width:46px;height:46px;margin-bottom:5px}.reward h2{font-size:14px}.reward p{font-size:12px}.reward .big-stars{font-size:16px;margin:5px}#festival{grid-template-rows:44px minmax(0,1fr) 44px auto}#toolbar{padding:0 5px}#actions{padding:0 4px;gap:4px}#brand{font-size:9px;line-height:12px;padding:0}.arcade-caption{left:30%;right:30%;bottom:45px}}@media(orientation:landscape) and (max-height:350px){.board{width:176px;height:176px;gap:0;padding:0;border:0}.tile{border-width:1px}.info{padding:5px 8px}.info h2{font-size:11px}.info p{font-size:11px}.info .readout{font-size:9px}.play-layout{inset:1px 5px;gap:5px;grid-template-columns:48% minmax(0,1fr)}.station{min-height:46px}.station small{display:none}.menu>p{display:none}.menu{gap:3px}.menu>h2{font-size:11px;padding:4px}.opening h1{font-size:17px}.opening p{font-size:11px}.opening .eyebrow{font-size:8px}.reward p{font-size:11px}.reward h2{font-size:12px}.reward img{width:32px;height:32px}}@media(min-width:900px) and (orientation:portrait){.board{width:272px;height:272px}}@media(prefers-reduced-motion:reduce){#toast{transition:none}.joy-tile.selected{transform:none}}
#layer>.arcade-info,#layer>.arcade-caption{pointer-events:none}
.sheet-head{position:sticky;top:-18px;display:flex;align-items:center;gap:12px;justify-content:space-between;background:#fff0c8;border-bottom:1px solid #a698d3;padding:5px 0;z-index:2;margin-bottom:12px}.sheet-head h2{font-size:14px;margin:0}.sheet-head button{min-width:72px;font-size:12px}@media(orientation:landscape) and (max-height:350px){#brand{font-size:8.5px;line-height:10px}}
.joy-tile{border-radius:0;clip-path:none;isolation:isolate;background:transparent!important;border:1px solid #65549c;box-shadow:none}.joy-tile:before{content:'';position:absolute;inset:1px;z-index:-1;pointer-events:none;background:var(--bubble-color);box-shadow:inset -5px -5px #15163133;clip-path:polygon(20% 0,80% 0,80% 7%,93% 7%,93% 20%,100% 20%,100% 80%,93% 80%,93% 93%,80% 93%,80% 100%,20% 100%,20% 93%,7% 93%,7% 80%,0 80%,0 20%,7% 20%,7% 7%,20% 7%)}.joy-tile[data-color="0"]{--bubble-color:#f9b1c1}.joy-tile[data-color="1"]{--bubble-color:#e7b76b}.joy-tile[data-color="2"]{--bubble-color:#669bd5}.joy-tile.selected{border-color:#fff0c8;outline:none;box-shadow:none;transform:none}.joy-tile.selected:before{box-shadow:inset 0 0 0 5px #fff0c8}
.tile.locked:disabled{opacity:1;cursor:default}
.board{position:relative}.boat-token{position:absolute;left:12.5%;top:87.5%;width:36px;height:36px;image-rendering:pixelated;transform:translate(-50%,-50%);pointer-events:none;z-index:3}@media(orientation:landscape) and (max-height:350px){.menu{inset:2px 10px 2px 42%}}
@media(max-height:680px) and (orientation:portrait){.info .small{display:none}}@media(orientation:landscape) and (max-height:350px){.info .small{display:none}}
@media(orientation:landscape){#festival{grid-template-rows:45px minmax(0,1fr) 45px auto}}@media(orientation:landscape) and (max-height:350px){.play-layout{inset-block:0}}

#overlay{padding:calc(env(safe-area-inset-top) + 12px) calc(env(safe-area-inset-right) + 12px) calc(env(safe-area-inset-bottom) + 12px) calc(env(safe-area-inset-left) + 12px)}
.reward{justify-content:flex-start}.reward>*{flex-shrink:0}.reward:before,.reward:after{content:'';flex:1 0 0;min-height:0}
@media(orientation:landscape) and (max-height:350px){.sheet{padding:10px}.sheet-head{top:-10px;margin-bottom:8px}.sheet-head h2{font-size:12px}.sheet-actions{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:10px}}
