:root{--ink:#3b2416;--ink-soft:#7b5a40;--panel:#fff4dc;--panel-2:#f6e3ba;--edge:#5b3a22;--gold:#f2b705;--gold-deep:#c98f00;--gold-ink:#3a2a00;--good:#2e7d32;--warn:#b23a2b;--radius:14px;--font:"Fredoka", ui-rounded, "Segoe UI", system-ui, sans-serif;--shadow:0 4px 0 #3b241659}*{box-sizing:border-box}html,body{height:100%;color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;background:#9fd8ff;margin:0;overflow:hidden}#app{position:fixed;inset:0}button{font:inherit;color:inherit}kbd{background:#3b241624;border-radius:5px;padding:1px 5px;font-family:inherit;font-size:.75em;font-weight:600}.muted{color:var(--ink-soft)}.panel{background:var(--panel);border:3px solid var(--edge);border-radius:var(--radius);box-shadow:var(--shadow), inset 0 -3px 0 #5b3a221f}.btn{border:3px solid var(--edge);background:var(--panel);cursor:pointer;border-radius:12px;padding:8px 14px;font-weight:600;transition:transform 80ms;box-shadow:0 3px #3b241659}.btn:hover:not(:disabled){transform:translateY(-1px)}.btn:active:not(:disabled){transform:translateY(2px);box-shadow:0 1px #3b241659}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--gold);color:var(--gold-ink)}.btn.ghost{box-shadow:none;background:0 0}.btn.sm{border-width:2px;padding:4px 10px;font-size:14px}.btn.big{padding:12px 20px;font-size:17px}.mva-pill{background:var(--gold);color:var(--gold-ink);border:2px solid var(--gold-deep);white-space:nowrap;border-radius:999px;padding:0 8px;font-size:13px;font-weight:700;display:inline-block}.game-canvas{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;outline:none;display:block;position:absolute;inset:0}.ui-layer,.hud{pointer-events:none;position:absolute;inset:0}.hud-left,.hud-right{flex-direction:column;gap:10px;display:flex;position:absolute;top:16px}.hud-left{align-items:flex-start;left:16px}.hud-right{width:240px;right:16px}.hud-plot{max-width:340px;padding:10px 14px}.plot-name{font-size:18px;font-weight:700}.plot-sub{color:var(--ink-soft);font-size:13px;line-height:1.45}.hud-shop-btn{pointer-events:auto}.hud-clock{gap:6px;padding:10px 14px;display:grid}.clock-row{justify-content:space-between;align-items:center;gap:10px;font-weight:600;display:flex}.clock-time{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:20px}.coins{font-variant-numeric:tabular-nums}.hud-bag{gap:3px;padding:10px 14px;font-size:14px;display:grid}.bag-title{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);font-size:13px;font-weight:700}.bag-row{justify-content:space-between;display:flex}.bag-ship{color:var(--good);border-top:2px dashed #5b3a2240;margin-top:4px;padding-top:6px;font-weight:600}.hud-energy{flex-direction:column;align-items:center;gap:4px;width:38px;height:160px;padding:5px;display:flex;position:absolute;bottom:16px;right:16px}.energy-track{background:#3b2416;border-radius:8px;flex:1;width:100%;position:relative;overflow:hidden}.energy-fill{background:linear-gradient(#9be66f,#43a32d);height:100%;transition:height .2s;position:absolute;bottom:0;left:0;right:0}.energy-fill.low{background:linear-gradient(#ff8a65,#c0392b)}.hud-hotbar{pointer-events:auto;width:max-content;max-width:calc(100vw - 124px);position:absolute;bottom:16px;left:50%;overflow:hidden;transform:translate(-50%)}.hotbar-scroll{overscroll-behavior-x:contain;touch-action:pan-x;scrollbar-width:none;gap:6px;padding:7px 6px 6px;display:flex;position:relative;overflow-x:auto}.hotbar-scroll::-webkit-scrollbar{display:none}.hud-hotbar:before,.hud-hotbar:after{z-index:1;width:26px;color:var(--edge);opacity:0;pointer-events:none;place-items:center;font-size:22px;font-weight:700;transition:opacity .15s;display:grid;position:absolute;top:0;bottom:0}.hud-hotbar:before{content:"‹";background:linear-gradient(to right, var(--panel) 45%, transparent);left:0}.hud-hotbar:after{content:"›";background:linear-gradient(to left, var(--panel) 45%, transparent);right:0}.hud-hotbar.more-left:before,.hud-hotbar.more-right:after{opacity:1}.slot{background:var(--panel-2);cursor:pointer;border:2px solid #c9a46c;border-radius:10px;flex:none;place-items:center;width:56px;height:56px;padding:0;font-size:28px;transition:transform .1s;display:grid;position:relative}.slot.sel{border-color:var(--gold-deep);box-shadow:0 0 0 3px var(--gold);background:#fffaf0;transform:translateY(-4px)}.slot .k{color:var(--ink-soft);font-size:11px;font-weight:600;position:absolute;top:2px;left:5px}.slot .n{font-size:13px;font-weight:700;position:absolute;bottom:1px;right:5px}.hud-slot-name{color:#fff;text-shadow:0 1px 3px #000000b3;white-space:nowrap;font-weight:600;position:absolute;bottom:92px;left:50%;transform:translate(-50%)}.hud-prompt{color:#fff;font:inherit;opacity:0;background:#3b2416e0;border:0;border-radius:999px;padding:6px 14px;font-weight:600;transition:opacity .15s;position:absolute;bottom:124px;left:50%;transform:translate(-50%)}.hud-prompt.show{opacity:1}.hud-prompt kbd{background:var(--gold);color:var(--gold-ink)}.hud-toasts{flex-direction:column;align-items:flex-start;gap:6px;max-width:min(420px,100vw - 32px);display:flex;position:absolute;bottom:48px;left:16px}.toast{color:#fff;background:#3b2416eb;border-radius:10px;padding:7px 12px;font-size:14px;font-weight:500;transition:opacity .4s,transform .4s;animation:.2s ease-out toast-in}.toast.good{background:#2e7d32f0}.toast.warn{background:#b23a2bf0}.toast.mva{background:var(--gold);color:var(--gold-ink)}.toast.out{opacity:0;transform:translate(-8px)}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}}.hud-help{color:#fff;text-shadow:0 1px 3px #000000b3;font-size:12px;position:absolute;bottom:16px;left:16px}.modal-backdrop{pointer-events:auto;z-index:20;background:#140e0873;place-items:center;padding:16px;display:grid;position:absolute;inset:0}.modal-backdrop[hidden]{display:none}.modal-backdrop.top{z-index:40}.modal{width:min(760px,100%);max-height:calc(100vh - 32px);padding:18px 20px;overflow:auto}.modal.small{width:min(420px,100%)}.modal h2{margin:0 0 6px}.modal p{color:var(--ink-soft);margin:0 0 14px;line-height:1.45}.modal-actions{justify-content:flex-end;gap:8px;display:flex}.modal-head{align-items:center;gap:12px;margin-bottom:10px;display:flex}.modal-head h2{flex:1;margin:0}.balances{align-items:center;gap:10px;font-weight:600;display:flex}.shop-cols{grid-template-columns:1fr 1fr;gap:16px;display:grid}.shop-cols h3{margin:4px 0 8px;font-size:16px}.shop-cols h3 small{color:var(--ink-soft);font-weight:500}.shop-item{background:var(--panel-2);border-radius:10px;grid-template-columns:38px 1fr auto;align-items:center;gap:10px;margin-bottom:6px;padding:8px 10px;display:grid}.shop-emoji{text-align:center;font-size:28px}.shop-name{font-weight:600}.shop-desc{color:var(--ink-soft);font-size:12px}.shop-price{margin-top:2px;font-size:13px;font-weight:600}.shop-buy{gap:4px;display:flex}.shop-note{color:var(--ink-soft);margin:8px 0 0;font-size:12px}.shop-status{border-radius:10px;min-height:1.6em;margin-top:10px;padding:8px 10px;font-weight:600}.shop-status.good{color:var(--good);background:#2e7d3224}.shop-status.warn{color:var(--warn);background:#b23a2b1f}.shop-status.mva{background:var(--gold);color:var(--gold-ink)}.fade{opacity:0;pointer-events:none;color:#fff;z-index:30;background:#0d1020;place-items:center;display:grid;position:absolute;inset:0}.fade-content{text-align:center;gap:8px;font-size:18px;display:grid}.fade-day{color:var(--gold);font-size:44px;font-weight:700}.start{background:linear-gradient(#8fd3ff 0%,#d9f2ff 58%,#0000 58%),repeating-linear-gradient(90deg,#7cb342 0 32px,#8bc34a 32px 64px);place-items:center;padding:16px;display:grid;position:absolute;inset:0;overflow:auto}.start-card{width:min(880px,100%);padding:26px 26px 18px}.brand{align-items:center;gap:12px;display:flex}.brand h1{letter-spacing:-.01em;margin:0;font-size:clamp(32px,6vw,46px)}.brand-badge{background:var(--gold);color:var(--gold-ink);border:3px solid var(--edge);border-radius:10px;padding:2px 8px;font-size:18px;font-weight:700}.tagline{color:var(--ink-soft);margin:8px 0 18px;font-size:17px}.start-actions{flex-wrap:wrap;gap:10px;display:flex}.wallet-line{color:var(--ink-soft);margin-top:12px;font-size:14px}.wallet-line:empty{display:none}.wallet-line .link{font:inherit}.warn-text{color:#b3471d;font-weight:600}.plots h2{margin:22px 0 10px;font-size:20px}.plot-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;display:grid}.plot-card{text-align:left;border:3px solid var(--edge);background:var(--panel-2);cursor:pointer;box-shadow:var(--shadow);border-radius:12px;padding:8px;transition:transform .1s}.plot-card:hover{transform:translateY(-3px)}.plot-card canvas{aspect-ratio:1;width:100%;image-rendering:pixelated;border-radius:8px;display:block}.plot-card-body{padding:8px 2px 2px}.plot-card-name{margin-bottom:6px;font-size:17px;font-weight:700}.chips{flex-wrap:wrap;gap:4px;display:flex}.chip{background:var(--panel);border:2px solid #c9a46c;border-radius:999px;padding:0 8px;font-size:12px;font-weight:600}.plot-card-bonus{color:var(--good);margin-top:6px;font-size:12px;font-weight:600}.note{color:var(--ink-soft);margin:18px 0 0;font-size:13px}.link{cursor:pointer;color:var(--ink);background:0 0;border:none;padding:0;text-decoration:underline}@media (width<=720px){.hud-help,.hud-bag{display:none}.hud{grid-template-columns:minmax(0,1fr) auto;align-content:start;align-items:start;gap:10px;padding:16px;display:grid}.hud-left,.hud-right{display:contents}.hud-plot{overflow-wrap:anywhere;grid-area:1/1;justify-self:start;max-width:200px}.hud-clock{grid-area:1/2}.hud-buttons{grid-area:2/1/auto/-1}.plot-sub{display:none}.slot{width:42px;height:42px;font-size:21px}.hud-slot-name{bottom:76px}.hud-prompt{bottom:104px}.shop-cols{grid-template-columns:1fr}}.touch-only,.hud-actions{display:none}.hud-actions{pointer-events:auto;gap:8px;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.hud-actions .btn{white-space:nowrap}.fish-giveup{pointer-events:auto;justify-self:center}.joystick{pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;width:136px;height:136px;display:none;position:absolute;bottom:12px;left:12px}.joystick-base{background:#3b241652;border:3px solid #fff4dccc;border-radius:50%;transition:background .1s;position:absolute;inset:10px}.joystick.active .joystick-base{background:#3b241680}.joystick-knob{background:var(--panel);border:3px solid var(--edge);width:56px;height:56px;box-shadow:var(--shadow), inset 0 -3px 0 #5b3a221f;border-radius:50%;position:absolute;top:40px;left:40px}@media (pointer:coarse){.joystick{display:block}.touch-only{display:inline-block}.hud-help,kbd{display:none}.hud-left{max-width:calc(100vw - 272px)}.hud-shop-btn{white-space:nowrap;padding:6px 9px;font-size:14px}.hud-prompt{border:2px solid var(--gold);padding:6px 12px}.hud-prompt.show{pointer-events:auto}.hud.placing .hud-hotbar,.hud.placing .hud-slot-name{display:none}.hud.placing .hud-actions{display:flex}.hud-toasts{max-width:min(420px,100vw - 168px);bottom:92px;left:152px}.hud-hotbar{max-width:calc(100vw - 312px)}}@media (width<=720px) and (orientation:portrait){.hud-hotbar{max-width:calc(100vw - 32px)}.hud-energy{bottom:84px}}@media (pointer:coarse) and (width<=720px) and (orientation:portrait){.joystick{bottom:84px}.hud-prompt{text-align:center;border-radius:14px;width:fit-content;max-width:calc(100vw - 214px);margin-inline:auto;left:152px;right:62px;transform:none}.hud-banner{grid-area:3/1/auto/-1;justify-self:center;display:none;position:static;transform:none}.hud-banner.show{display:block}.hud-toasts{grid-area:4/1/auto/-1;max-width:none;position:static}}.joystick[hidden],.fish-giveup[hidden]{display:none}@media (width<=340px){.hud-plot,.hud-clock{padding:8px 10px}.plot-name{font-size:15px}.clock-row{gap:6px}.mva-pill{padding:0 6px;font-size:12px}}.season{font-size:14px}.nights{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:14px}.hud-banner{color:#fff;opacity:0;text-align:center;background:#1e1a3ceb;border-radius:999px;max-width:calc(100vw - 32px);padding:8px 16px;font-size:14px;font-weight:600;transition:opacity .2s;position:absolute;top:16px;left:50%;transform:translate(-50%)}.hud-banner.show{opacity:1}.modal-body p{color:var(--ink-soft);margin:0 0 10px;line-height:1.45}.cost-list{background:var(--panel-2);border-radius:10px;gap:4px;margin:0 0 10px;padding:10px 12px;font-weight:500;list-style:none;display:grid}.dialog-warn{font-weight:600;color:var(--warn)!important}.muted-light{color:#ffffffbf;font-size:15px}.plot-card.active{box-shadow:0 0 0 3px var(--gold), var(--shadow)}.badge{background:var(--gold);color:var(--gold-ink);vertical-align:middle;border-radius:999px;padding:0 8px;font-size:12px}.start .muted{margin:0 0 10px}.hud-buttons{flex-wrap:wrap;gap:8px;display:flex}.choice-list{gap:6px;max-height:50vh;margin-bottom:12px;display:grid;overflow:auto}.choice{text-align:left;background:var(--panel-2);cursor:pointer;font:inherit;border:2px solid #c9a46c;border-radius:10px;gap:2px;padding:8px 12px;display:grid}.choice:hover:not(:disabled),.choice:focus-visible{border-color:var(--gold-deep);background:#fffaf0}.choice:disabled{opacity:.5;cursor:default}.choice-label{font-weight:600}.choice-detail{color:var(--ink-soft);font-size:12px}.bonus-here{font-weight:600;color:var(--good)!important}.shop-price .missing{color:var(--warn)}.hearts{color:#e0457b;letter-spacing:1px;white-space:nowrap;font-size:13px}.meter{background:#00000014;border-radius:6px;height:8px;margin:4px 0 8px;overflow:hidden}.meter>div{background:linear-gradient(90deg,#f2b705,#8bc34a);border-radius:6px;height:100%}.shop-desc.locked{font-weight:600}.shop-item.done{opacity:.7}.hud-banner kbd{color:#fff;background:#fff3;padding:0 5px;font-size:11px}.bonus-nights{color:#f2b705;margin-left:2px;font-weight:700}.plot-card.soon{cursor:default;opacity:.75}.plot-card.soon:hover{transform:none}.plot-soon-art{aspect-ratio:1;background:repeating-linear-gradient(45deg,#e9d7ae 0 14px,#f3e6c6 14px 28px);border-radius:8px;place-items:center;font-size:64px;display:grid}.badge.soon{background:var(--ink-soft);color:#fff}.modal.map-panel{width:auto;max-width:calc(100vw - 32px)}.island-map{max-width:100%;max-height:calc(100vh - 220px);image-rendering:pixelated;border-radius:10px;margin:0 auto 8px;display:block}.map-legend{text-align:center;margin:0;font-size:12px}.specialty-pick{flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;display:flex}.modal.journal .shop-cols{max-height:64vh}.fishing-panel{pointer-events:none;gap:8px;width:min(340px,100vw - 32px);padding:12px 16px;display:grid;position:absolute;bottom:120px;left:50%;transform:translate(-50%)}.fishing-panel[hidden]{display:none}.fishing-panel.bite{animation:.25s ease-in-out infinite alternate fish-bite}@keyframes fish-bite{0%{transform:translate(-50%)scale(1)}to{transform:translate(-50%)scale(1.06)}}.fish-title{text-align:center;font-size:17px;font-weight:700}.fish-row{grid-template-columns:62px 1fr;align-items:center;gap:8px;font-size:12px;font-weight:600;display:grid}.fish-row[hidden]{display:none}.fish-bar{background:#0000001a;border-radius:6px;height:12px;position:relative;overflow:hidden}.fish-bar.tension:after{content:"";background:#b23a2b40;position:absolute;inset:0 0 0 80%}.fish-fill{background:#4fa3e0;border-radius:6px;height:100%}.fish-fill.power{background:linear-gradient(90deg,#8bc34a,#f2b705)}.fish-fill.progress{background:#2e7d32}.fish-bar.tension .fish-fill{background:#f2b705}.fish-bar.tension .fish-fill.danger{background:#b23a2b}.fish-hint{color:var(--ink-soft);text-align:center;font-size:12px}.album{grid-template-columns:repeat(2,1fr);gap:6px;display:grid}.album-fish{background:var(--panel-2);opacity:.6;border-radius:8px;grid-template-rows:auto auto;grid-template-columns:26px 1fr;align-items:center;column-gap:6px;padding:6px 8px;display:grid}.album-fish.caught{opacity:1}.album-emoji{grid-row:span 2;font-size:20px}.album-name{font-size:13px;font-weight:600}.album-where{color:var(--ink-soft);font-size:11px}.modal.kitchen{width:min(600px,100%)}.kitchen-list{max-height:58vh;overflow:auto}.casks{gap:6px;margin-bottom:10px;display:grid}.cask{background:var(--panel-2);border-radius:8px;padding:6px 10px;font-size:14px}.cask.empty{opacity:.7}.cask.ready{outline:2px solid var(--good)}.modal.admin{width:min(920px,100vw - 32px);max-height:calc(100vh - 48px);overflow:auto}.modal.admin h3{margin:18px 0 8px;font-size:16px}.admin-table{border-collapse:collapse;width:100%;font-size:14px}.admin-table th,.admin-table td{text-align:left;vertical-align:middle;border-bottom:1px solid #00000014;padding:6px 8px}.admin-table tr.flagged td{background:#fbebeb}.admin-actions{text-align:right;white-space:nowrap}.admin-actions .btn+.btn{margin-left:4px}.admin-add{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.admin-add input{font:inherit;border:1px solid #0003;border-radius:8px;flex:200px;padding:6px 10px}.admin-scroll{max-height:280px;overflow:auto}
