body,html{background-color:#1a1a1a;color:#f0f0f0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;height:100%;width:100%;margin:0;overflow:hidden}#game-container{position:relative;width:100%;height:100%}canvas{background-color:#000;display:block;width:100%;height:100%}header{position:absolute;top:0;left:0;right:0;z-index:10;display:flex;justify-content:space-between;align-items:center;padding:.75rem 1.5rem;background-color:#1a1a1a80;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid rgba(255,255,255,.1);transform:translateY(-85%);transition:transform .4s cubic-bezier(.25,.46,.45,.94);will-change:transform}header.visible{transform:translateY(0)}.title-container{display:flex;align-items:center;gap:1rem}.labs-brand{display:inline-flex;align-items:center;gap:.55rem;padding:.35rem .65rem .35rem .4rem;border:1px solid rgba(255,255,255,.2);border-radius:999px;color:#f0f0f0;background:#06111294;font-size:.82rem;font-weight:700;text-decoration:none;transition:border-color .2s,background-color .2s}.labs-brand:hover,.labs-brand:focus-visible{border-color:#62e6d4;background:#061112e6}.labs-brand img{width:26px;height:26px}.header-divider{width:1px;height:28px;background:#ffffff38}header h1{font-weight:400;letter-spacing:1px;margin:0;font-size:1.5rem;text-shadow:0 1px 3px rgba(0,0,0,.5)}.edition-switcher{display:none;overflow:hidden;border:1px solid rgba(255,255,255,.24);border-radius:999px;background:#061112a3}.edition-link{padding:.48rem .7rem;color:#f0f0f0b8;font-size:.72rem;font-weight:700;line-height:1;text-decoration:none;transition:color .2s,background-color .2s}.edition-link+.edition-link{border-left:1px solid rgba(255,255,255,.18)}.edition-link:hover,.edition-link:focus-visible{color:#fff;background:#62e6d42e}html[data-edition=original] .edition-original,html[data-edition=enhanced] .edition-enhanced{color:#061112;background:#62e6d4}.preserved-label{display:none;color:#f5d98d;font:700 .62rem/1.15 "Press Start 2P",monospace;white-space:nowrap}html[data-edition=original] .preserved-label{display:inline}.controls-container{display:flex;align-items:center;gap:.5rem}.dialogue-mode-control{display:flex;position:relative;align-items:center;gap:.35rem;margin-right:.35rem}html[data-edition=original] .dialogue-mode-control{display:none}.dialogue-mode-label{color:#f0f0f0b8;font-size:.68rem;font-weight:700}.mode-switch{display:inline-flex;cursor:pointer}.mode-switch input{position:absolute;width:1px;height:1px;opacity:0}.mode-switch-track{position:relative;width:38px;height:20px;border:1px solid rgba(255,255,255,.35);border-radius:999px;background:#061112b8;transition:border-color .2s,background-color .2s}.mode-switch-track:after{content:"";position:absolute;top:3px;left:3px;width:12px;height:12px;border-radius:50%;background:#d2d8d6;transition:transform .2s,background-color .2s}.mode-switch input:checked+.mode-switch-track{border-color:#62e6d4;background:#62e6d440}.mode-switch input:checked+.mode-switch-track:after{background:#62e6d4;transform:translate(18px)}.mode-switch input:focus-visible+.mode-switch-track{outline:2px solid #f5d98d;outline-offset:3px}.mode-switch input:disabled+.mode-switch-track{cursor:not-allowed;border-color:#ffffff24;background:#06111266;opacity:.58}.dialogue-mode-status{position:absolute;top:calc(100% + 8px);right:0;width:max-content;max-width:270px;padding:.35rem .5rem;border-radius:4px;color:#f0f0f0d1;background:#061112d1;font-size:.62rem;opacity:0;pointer-events:none;transition:opacity .2s}.dialogue-mode-control:hover .dialogue-mode-status,.dialogue-mode-control:focus-within .dialogue-mode-status{opacity:1}#help-btn,#settings-btn,#log-btn{background:none;border:none;color:#f0f0f0;width:40px;height:40px;cursor:pointer;display:flex;justify-content:center;align-items:center;border-radius:50%;transition:background-color .2s}#help-btn svg,#settings-btn svg,#log-btn svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}#help-btn:hover,#settings-btn:hover,#log-btn:hover{background-color:#ffffff1a}@media(max-width:620px){header{padding-inline:.75rem}.title-container{gap:.55rem}.labs-brand span,.header-divider{display:none}.labs-brand{padding-right:.4rem}header h1{font-size:1rem}.edition-link{padding:.43rem .55rem;font-size:.64rem}.preserved-label{display:none!important}.dialogue-mode-label{display:none}}@media(max-width:470px){header h1{display:none}}#settings-popup,#help-popup,#log-popup{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;justify-content:center;align-items:center;z-index:100}.popup-content{background-color:#2a2a2a;padding:2rem;border-radius:8px;border:1px solid #555;box-shadow:0 5px 20px #00000080;text-align:left;position:relative;width:90%;max-width:400px}#log-popup .popup-content{max-height:80vh;display:flex;flex-direction:column}.close-popup-btn{position:absolute;top:10px;right:15px;background:none;border:none;color:#aaa;font-size:28px;cursor:pointer;line-height:1}.close-popup-btn:hover{color:#fff}.popup-content h2{margin-top:0;margin-bottom:1.5rem;text-align:center;font-weight:300}.popup-content h3{margin-top:1.5rem;margin-bottom:.5rem;font-weight:500;border-bottom:1px solid #444;padding-bottom:.5rem}.popup-content p{color:#ccc;line-height:1.6}#log-content{overflow-y:auto;padding-right:1rem}#log-content h4{margin-top:1rem;margin-bottom:.5rem;font-weight:500;border-bottom:1px solid #444;padding-bottom:.5rem;color:#e2e8f0}#log-content p{color:#cbd5e1;line-height:1.5;margin:.25rem 0;font-size:.9rem}.setting-item{display:flex;align-items:center;gap:.5rem;margin-top:1rem;justify-content:space-between}.setting-item label{cursor:pointer}.setting-item input[type=text]{background-color:#3a3a3a;color:#f0f0f0;border:1px solid #555;border-radius:4px;padding:.5rem;font-size:1rem;width:180px;transition:border-color .2s,box-shadow .2s}.setting-item input[type=text]:focus{outline:none;border-color:#a855f7;box-shadow:0 0 0 2px #a855f74d}.setting-item-column{display:flex;flex-direction:column;gap:.75rem;margin-top:1.5rem;border-top:1px solid #444;padding-top:1.5rem}.map-export-actions{display:flex;gap:.75rem}#export-map-btn,#copy-map-btn{background-color:#4a4a4a;color:#f0f0f0;border:1px solid #666;padding:.6rem 1rem;font-size:.9rem;border-radius:4px;cursor:pointer;transition:background-color .2s,color .2s,border-color .2s}#export-map-btn:hover{background-color:#5a5a5a}#copy-map-btn{display:none;background-color:#4caf50;border-color:#388e3c}#copy-map-btn:hover{background-color:#43a047}#copy-map-btn.copied{background-color:#66bb6a;border-color:#4caf50;cursor:default}#map-data-output{display:none;background-color:#1e1e1e;color:#d4d4d4;border:1px solid #555;border-radius:4px;padding:.5rem;width:100%;min-height:150px;box-sizing:border-box;font-family:Courier New,Courier,monospace;font-size:.8rem;resize:vertical}#settings-popup.hidden,#help-popup.hidden,#log-popup.hidden,#spirit-faded-overlay.hidden,#boat-indicator.hidden,#npc-indicator.hidden,#final-message-overlay.hidden{display:none}.speech-bubble{position:fixed;--bubble-bg-color: rgba(245, 245, 245, .9);background-color:var(--bubble-bg-color);color:#1a1a1a;padding:.75rem 1rem;border-radius:12px;max-width:250px;font-size:.9rem;line-height:1.4;box-shadow:0 4px 15px #0000004d;pointer-events:none;z-index:50;opacity:1;transition:opacity .3s ease-in-out}.speech-bubble.hiding{opacity:0}.speech-bubble:after{content:"";position:absolute;width:0;height:0;border:8px solid transparent}.speech-bubble.point-right:after{top:50%;left:100%;transform:translateY(-50%);border-left-color:var(--bubble-bg-color)}.speech-bubble.point-left:after{top:50%;right:100%;transform:translateY(-50%);border-right-color:var(--bubble-bg-color)}.speech-bubble.point-up:after{left:50%;bottom:100%;transform:translate(-50%);border-bottom-color:var(--bubble-bg-color)}.speech-bubble.point-down:after{left:50%;top:100%;transform:translate(-50%);border-top-color:var(--bubble-bg-color)}.speech-bubble .thinking-dots{display:flex;align-items:center;justify-content:center;height:1.26rem}.speech-bubble .thinking-dots span{display:inline-block;width:8px;height:8px;border-radius:50%;background-color:#333;margin:0 2px;animation:thinking-blink 1.4s infinite both}.speech-bubble .thinking-dots span:nth-child(2){animation-delay:.2s}.speech-bubble .thinking-dots span:nth-child(3){animation-delay:.4s}@keyframes thinking-blink{0%{opacity:.2;transform:scale(1)}20%{opacity:1;transform:scale(1.1)}to{opacity:.2;transform:scale(1)}}.snackbar{position:fixed;left:50%;bottom:30px;transform:translate(-50%);background-color:#333;color:#f0f0f0;padding:1rem 1.5rem;border-radius:8px;border:1px solid #555;box-shadow:0 4px 10px #00000080;z-index:200;opacity:0;visibility:hidden;transition:opacity .5s,visibility .5s,bottom .5s}.snackbar.show{opacity:1;visibility:visible;bottom:50px}#spirit-faded-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#0000;display:flex;justify-content:center;align-items:center;z-index:1000;opacity:0;visibility:hidden;transition:background-color 2s ease-in,opacity 2s ease-in,visibility 0s 2s}#spirit-faded-overlay.visible{background-color:#1a1a1a;opacity:1;visibility:visible;transition:background-color 2s ease-in,opacity 2s ease-in}#spirit-faded-overlay h1{font-size:3rem;font-weight:300;color:#a78bfa;text-shadow:0 0 10px #c4b5fd,0 0 20px #8b5cf6;opacity:0;transform:scale(.9);transition:opacity 1.5s ease-out 1.5s,transform 1.5s ease-out 1.5s}#spirit-faded-overlay.visible h1{opacity:1;transform:scale(1)}.speech-bubble.sparkle{color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.6);border:1px solid #f0e6ff;--bubble-bg-color: #a855f7;white-space:pre-wrap;background:linear-gradient(110deg,transparent 40%,rgba(255,255,255,.4) 50%,transparent 60%),linear-gradient(45deg,#7b4bae,#a383c5,#c084fc,#a855f7);background-size:250% 100%,auto;background-repeat:no-repeat;animation:sparkle-sheen 3.5s infinite linear}.speech-bubble.sparkle .thinking-dots span{background-color:#fff}.speech-bubble.sparkle.point-right:after{border-left-color:var(--bubble-bg-color)}.speech-bubble.sparkle.point-left:after{border-right-color:var(--bubble-bg-color)}.speech-bubble.sparkle.point-up:after{border-bottom-color:var(--bubble-bg-color)}.speech-bubble.sparkle.point-down:after{border-top-color:var(--bubble-bg-color)}@keyframes sparkle-sheen{0%{background-position:-150% 0,0 0}to{background-position:250% 0,0 0}}.musical-note{position:fixed;pointer-events:none;z-index:40;font-size:22px;color:#000;text-shadow:0 1px 2px rgba(255,255,255,.5);animation:drift-up var(--duration, 2s) linear forwards;left:var(--start-x);top:var(--start-y)}@keyframes drift-up{0%{transform:translateY(0) scale(1);opacity:.9}to{transform:translateY(-80px) scale(.5);opacity:0}}#boat-indicator,#npc-indicator{position:absolute;width:50px;height:50px;z-index:20;transform:translate(-50%,-50%);pointer-events:none;opacity:1;transition:opacity .3s ease;will-change:transform,top,left}#boat-indicator.hidden,#npc-indicator.hidden{opacity:0;pointer-events:none;display:none}#boat-indicator:not(.hidden),#npc-indicator:not(.hidden){display:block}#boat-indicator img,#npc-indicator img{width:100%;height:100%;transition:transform .2s cubic-bezier(.25,.46,.45,.94)}#player-status{position:absolute;top:85px;left:20px;z-index:20;display:none;flex-direction:column;gap:12px;font-family:"Press Start 2P",cursive;color:#f0f0f0;text-shadow:1px 1px 2px #1a1a1a}.status-hud-item{background-color:#0009;border:1px solid #555;border-radius:4px;padding:8px 12px;display:flex;flex-direction:column;gap:6px;min-width:150px}.status-hud-item label{font-size:10px;color:#aaa}.spirit-bar-container{width:100%;height:10px;background-color:#333;border:1px solid #777;box-sizing:border-box}#spirit-bar-fill{width:100%;height:100%;background-color:#facc15;transition:width .3s ease-in-out,background-color .3s ease-in-out}#villager-count-value,#love-notes-count-value{font-size:16px;align-self:flex-end}#quest-complete-status{justify-content:center;align-items:center}#quest-complete-status.hidden,#villager-count-container.hidden,#love-notes-count-container.hidden{display:none}.heart-icon{font-size:28px;animation:beating-heart 1.2s infinite cubic-bezier(.215,.61,.355,1)}@keyframes beating-heart{0%{transform:scale(1)}15%{transform:scale(1.15)}30%{transform:scale(1)}45%{transform:scale(1.15)}60%{transform:scale(1)}}#celebration-overlay{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden;z-index:1100}.gratitude-heart{position:fixed;z-index:1100;pointer-events:none;color:#ff7b7b;font-size:32px;text-shadow:0 0 5px white,0 0 10px #ff7b7b;opacity:0;animation:gratitude-float 2.5s ease-out forwards;will-change:transform,opacity}@keyframes gratitude-float{0%{transform:translate(-50%) translateY(0) scale(.5);opacity:0}20%{transform:translate(-50%) translateY(-20px) scale(1);opacity:1}to{transform:translate(-50%) translateY(-120px) scale(.8);opacity:0}}.burst-heart{position:absolute;bottom:-50px;left:var(--start-x);font-size:var(--size);animation:float-and-fade-burst var(--duration) linear var(--delay) forwards;opacity:0;will-change:transform,opacity}@keyframes float-and-fade-burst{0%{transform:translateY(0) scale(.8);opacity:0}10%{opacity:1}to{transform:translateY(-120vh) scale(1.2);opacity:0}}.stream-heart{position:absolute;bottom:-50px;left:var(--start-x);font-size:var(--size);color:var(--color);animation:float-and-fade-stream var(--duration) linear var(--delay) forwards;opacity:0;will-change:transform,opacity}@keyframes float-and-fade-stream{0%{transform:translateY(0) scale(.8);opacity:.7}10%{opacity:.7}to{transform:translateY(-120vh) scale(1.2);opacity:0}}.npc-nameplate{position:absolute;transform:translate(-50%);pointer-events:none;z-index:60;font-family:"Press Start 2P",cursive;font-size:11px;color:#fefce8;text-shadow:1px 1px 0 #3f3f46,1px 1px 3px rgba(0,0,0,.8);white-space:nowrap;opacity:0;transition:opacity .5s ease-in-out}.npc-nameplate.visible{opacity:1}#final-message-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2000;justify-content:center;align-items:center;background-color:#000;opacity:0;animation:final-fade-in 4s forwards;overflow:hidden;transition:opacity 2s ease-in-out;box-shadow:inset 0 0 10vmax 4vmax #000}#final-message-overlay.hidden{display:none}#final-message-overlay.fading-out{opacity:0}@keyframes final-fade-in{to{opacity:1}}#final-message-overlay:before,#final-message-overlay:after{content:"";position:absolute;top:0;left:0;width:200%;height:200%;background-repeat:repeat;background-size:50% 50%;will-change:transform}#final-message-overlay:before{background-image:radial-gradient(circle,#fff 1px,transparent 1px);animation:move-stars-1 150s linear infinite}#final-message-overlay:after{background-image:radial-gradient(circle,#fff 1px,transparent 1px);background-position:25% 25%;animation:move-stars-2 100s linear infinite}@keyframes move-stars-1{0%{transform:translate(0)}to{transform:translate(-50%,-50%)}}@keyframes move-stars-2{0%{transform:translate(0)}to{transform:translate(-50%,-50%)}}.final-message-content{color:#e0e0e0;text-align:left;max-width:min(960px,90vw);padding:2rem;z-index:1;font-size:1.1rem;line-height:1.8;text-shadow:0 1px 3px rgba(0,0,0,.5);position:relative;min-height:60vh}.final-message-content>div{position:absolute;top:2rem;left:2rem;right:2rem;opacity:0;transition:opacity 2s ease-in-out;pointer-events:none}.final-message-content>div.visible{opacity:1;pointer-events:auto}.final-message-content p{margin:0 0 1.5rem}.final-message-content .signature{margin-top:3rem;font-style:italic;color:#a0a0a0}#final-message-part-3{font-size:1.2rem;font-style:italic;color:silver;text-align:center}#next-message-btn{position:absolute;bottom:2rem;right:2rem;width:60px;height:60px;border-radius:50%;background-color:#ffffff26;border:1px solid rgba(255,255,255,.3);color:#fff;font-size:2.5rem;line-height:60px;padding:0 0 0 4px;text-align:center;cursor:pointer;z-index:2001;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:background-color .3s,transform .2s;animation:pulse-button 2s infinite cubic-bezier(.66,0,0,1)}#next-message-btn:hover{background-color:#ffffff4d;animation-play-state:paused}#next-message-btn:active{transform:scale(.95)}@keyframes pulse-button{0%{transform:scale(1);box-shadow:0 0 #fff6}70%{transform:scale(1.05);box-shadow:0 0 0 15px #fff0}to{transform:scale(1);box-shadow:0 0 #fff0}}
