:root{--forest:#355e45;--ink:#344c3a;--sage:#7fa477;--paper:#fffbee;--line:#e7e4cf;--orange:#d87b48;--shadow:0 8px 26px #234b3020;--font:"Hiragino Maru Gothic ProN","Hiragino Sans","Yu Gothic",sans-serif}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;font-family:var(--font);color:var(--ink)}body{background:#8fcbbb}button,input{font:inherit}button{cursor:pointer;border:0;color:inherit;-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible{outline:3px solid #de9458;outline-offset:4px}button:disabled{opacity:.5;cursor:default}svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}.svg-defs{position:absolute;width:0;height:0;overflow:hidden}#game{height:100%;position:relative}#world{display:block;width:100%;height:100%;outline:none;touch-action:none}.vignette{position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 100px #345f4920;background:linear-gradient(#ffffff12,transparent 20%,transparent 75%,#33543815)}.hud-top{position:absolute;top:27px;left:32px;right:30px;display:flex;justify-content:space-between;align-items:flex-start;gap:16px;pointer-events:none}.brand{display:flex;align-items:center;gap:12px;text-shadow:0 2px 12px #ffffd080}.brand>svg{width:44px;height:48px;color:var(--forest);transform:rotate(-9deg)}h1{font-size:28px;letter-spacing:2px;font-weight:800;line-height:1.3;margin:0}.brand span{font-size:10px;letter-spacing:2px;display:block;margin-top:4px}.top-right{display:flex;align-items:center;gap:10px;pointer-events:auto}.day-pill,.money-pill{background:#fffbeeea;box-shadow:var(--shadow);border:1px solid #ffffff8a;border-radius:32px;display:flex;align-items:center;gap:10px;min-height:52px;padding:10px 20px}.day-pill svg{color:#c99542;width:27px;height:27px}.day-pill b{font-size:15px}.day-pill span{display:block;font-size:10px;margin-top:3px;color:#7f8a70}.money-pill{gap:7px}.money-pill b{font-size:21px;font-weight:800;font-variant-numeric:tabular-nums}.money-pill>span:last-child{font-size:10px}.coin{background:#ecc46c;border:2px solid #e5b456;border-radius:50%;font-size:13px;display:inline-grid;place-items:center;width:23px;height:23px;color:#be8c38}.icon-button{display:grid;place-items:center;width:43px;height:43px;flex:none;border-radius:50%;background:#fffbeeea;box-shadow:0 4px 14px #234b3012}.icon-button:hover{background:#fff}.daily{position:absolute;left:32px;top:124px;width:238px;background:#fffbeeeb;box-shadow:var(--shadow);border-radius:17px 17px 34px 17px;padding:20px 21px 16px;transform:rotate(-1.2deg)}.daily-title{display:flex;align-items:center;gap:8px;margin-bottom:14px}.daily h2{font-size:14px;margin:0;flex:1}.little-leaf{color:#c9a151;font-size:19px}.daily-title button{background:transparent;font-size:20px;color:#8b997c}.task{display:flex;gap:9px;align-items:center;font-size:12px;line-height:1.8;padding:5px 0}.task-check{width:17px;height:17px;border:1.5px solid #b4bea5;border-radius:50%;flex:none;display:grid;place-items:center;font-size:11px}.task.done{color:#879a75}.task.done .task-check{background:#7da171;color:#fff;border-color:#7da171}.daily>p{font-size:10px;border-top:1px dashed #dcdcc3;padding-top:12px;margin:12px 0 0;color:#8a937c;line-height:1.7}.daily.collapsed #task-list,.daily.collapsed>p{display:none}.daily.collapsed .daily-title{margin:0}.area-name{position:absolute;left:50%;top:31px;transform:translateX(-50%);border-bottom:1px solid #456b4955;padding:7px 17px;font-size:12px;letter-spacing:2px;color:#426344}.hud-bottom{position:absolute;bottom:27px;left:32px;right:30px;display:flex;justify-content:space-between;align-items:flex-end;gap:16px;pointer-events:none}.control-hint{display:flex;align-items:center;gap:12px;opacity:.86;min-width:172px}.control-hint>div{text-align:center}.control-hint>div>div{display:flex;gap:3px;margin-top:3px}kbd{display:inline-grid;place-items:center;border:1px solid #59765d50;background:#ffffeeba;border-radius:5px;font-size:10px;font-family:inherit;width:23px;height:22px}.control-hint p{font-size:11px;line-height:1.8;margin:0}.control-hint p span{font-size:9px;opacity:.75}.tool-dock{display:flex;align-items:center;padding:8px 11px;background:#fffbeeea;border:1px solid #fff9;box-shadow:0 8px 26px #234b3026;border-radius:24px;gap:5px;pointer-events:auto}.tool{width:65px;height:66px;border-radius:17px;background:transparent;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px}.tool>svg{width:25px;height:25px}.tool span{font-size:9px;font-weight:600}.tool kbd{position:absolute;top:4px;right:4px;font-size:8px;width:13px;height:13px;opacity:.5;background:transparent;border:none}.tool:hover{background:#e9eddc}.tool.active{background:#507b55;color:#fffbe9;box-shadow:0 3px 7px #476b5320}.tool.active kbd{color:white}.dock-divider{height:30px;border-left:1px solid #dbdeca;margin:0 3px}.bottom-right{display:flex;align-items:center;gap:13px;min-width:180px;justify-content:flex-end}.bottom-right>span{font-size:9px;color:#44664a}.bottom-right button{pointer-events:auto}.interaction{position:absolute;left:50%;bottom:140px;transform:translateX(-50%);display:flex;align-items:center;gap:11px;background:#fffbeef5;box-shadow:var(--shadow);padding:9px 20px 9px 10px;border-radius:28px;font-size:13px;white-space:nowrap}.interaction .key{display:grid;place-items:center;border-radius:50%;background:#4c7450;color:#fff;width:31px;height:31px;font-size:14px}.interaction button{display:none;border-radius:20px;background:#4c7450;color:white;padding:8px 12px;font-size:12px}[hidden]{display:none!important}.toast{position:absolute;top:100px;left:50%;transform:translateX(-50%) translateY(-10px);background:#fffbeef5;border-radius:25px;padding:14px 23px;font-size:13px;box-shadow:var(--shadow);opacity:0;transition:opacity .2s,transform .2s;pointer-events:none;max-width:calc(100% - 34px);text-align:center;z-index:8}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.welcome-layer{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:10;background:#49734c14;backdrop-filter:blur(1px)}.welcome-card{width:400px;background:#fffbeefa;border:1px solid #fff;box-shadow:0 22px 70px #34563435;border-radius:95px 95px 40px 40px;padding:34px 44px 28px;text-align:center;transform:rotate(-1deg)}.welcome-emblem svg{width:51px;height:51px;color:#5b8056}.welcome-emblem{margin:1px 0 14px}.welcome-small{font-size:11px;letter-spacing:1.5px;color:#7f9378}.welcome-card h2{font-size:36px;letter-spacing:1px;margin:14px -10px 17px;font-weight:800}.welcome-description{font-size:13px;line-height:2;color:#78836b;margin-bottom:25px}.welcome-card label{display:block;font-size:10px;text-align:left;margin:0 3px 7px;color:#889477}.welcome-card input{width:100%;height:43px;border:1px solid #dadfca;background:#f5f5e6;border-radius:12px;padding:0 14px;color:#385b43;font-size:13px;margin-bottom:12px}.primary{background:var(--forest);border-radius:14px;padding:15px 22px;color:#fffbee;font-size:13px;font-weight:600}.primary:hover{background:#466e4d}.primary span{margin-left:12px;font-size:18px}.welcome-card .primary{width:100%}.welcome-note{font-size:9px;margin:20px -20px 0;color:#8a947d}.welcome-bottom{position:absolute;bottom:28px;font-size:10px;color:#fffbe9;letter-spacing:2px;text-shadow:0 1px 5px #234b30}.loading{position:fixed;inset:0;z-index:30;display:grid;place-items:center;background:#e8edcf;color:var(--forest);font-size:14px;letter-spacing:3px}.loading.failed{padding:25px;text-align:center;line-height:2;letter-spacing:0}dialog{border:0;padding:28px;width:min(520px,calc(100vw - 30px));max-height:82dvh;border-radius:26px;background:var(--paper);color:var(--ink);box-shadow:0 24px 100px #21412c44;overflow:auto}dialog::backdrop{background:#234b303d;backdrop-filter:blur(3px)}.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.modal-head h2{font-size:24px;margin:5px 0 0;letter-spacing:1px}.modal-head>div>span{font-size:10px;color:#8b997b}.modal-head button{background:#ecefdf;box-shadow:none}#modal-content p{font-size:13px;line-height:1.95}#modal-content .muted{color:#839075;font-size:11px}.inventory-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.item-card{border-radius:17px;background:#eef0df;padding:13px 10px;text-align:center;position:relative}.item-icon{font-size:30px;display:block;height:42px;line-height:42px}.item-card strong{font-size:11px;display:block;margin:4px 0 7px}.item-count{font-size:10px;color:#7c8b70}.small-button{display:inline-block;font-size:10px;background:#527754;color:white;border-radius:9px;padding:7px 11px;margin-top:8px}.recipe{display:flex;align-items:center;gap:16px;padding:18px 0;border-top:1px dashed #d9ddc6}.recipe .item-icon{width:48px;flex:none}.recipe-info{flex:1}.recipe h3{font-size:14px;margin:0 0 6px}.recipe p{font-size:10px!important;margin:0;color:#8a937b}.recipe button{flex:none}.recipe .small-button{font-size:11px;margin:0;padding:11px 15px}.dialogue-face{width:70px;height:70px;display:grid;place-items:center;font-size:40px;background:#f0e6cf;border-radius:23px;margin:0 auto 10px}.dialogue-text{text-align:center;font-size:15px!important}.friendship{text-align:center;color:#d79271;font-size:14px;letter-spacing:5px;margin:16px 0}.dialogue-actions{display:flex;gap:10px;justify-content:center;margin-top:22px}.dialogue-actions button{font-size:12px;padding:12px 18px;background:#e8ecd8;border-radius:12px}.dialogue-actions button.primary{background:var(--forest);color:#fff}.fishing-panel{position:absolute;width:340px;left:50%;top:50%;transform:translate(-50%,-15%);padding:23px 28px;text-align:center;border-radius:27px;background:#fffbeef7;box-shadow:var(--shadow);z-index:5}.fish-title{font-size:10px;color:#899778}.fishing-panel h2{font-size:16px;margin:12px 0 20px}.fish-meter{position:relative;height:21px;background:#e6e5ce;border-radius:12px;overflow:hidden}.fish-meter>#fish-zone{position:absolute;left:38%;width:24%;height:100%;background:#92b67e}.fish-meter>#fish-cursor{position:absolute;height:100%;width:6px;border-radius:5px;background:#426344;left:0}.fishing-panel button{margin-top:20px;padding:13px 25px}.fishing-panel kbd{margin-left:8px;width:42px;color:#fff;border-color:#ffffff44;background:transparent}.fishing-panel p{font-size:10px;color:#809171;margin:16px 0 0}.placement-tip{position:absolute;bottom:125px;left:50%;transform:translateX(-50%);border-radius:19px;padding:14px 20px;font-size:11px;background:#fffbeef2;white-space:nowrap}.placement-tip button{border-radius:9px;margin-left:10px;background:#e7ecd8;padding:7px 10px;font-size:10px}.touch-controls{display:none}.map-canvas{width:100%;height:auto;display:block;border-radius:18px}.map-key{display:flex;justify-content:center;gap:20px;font-size:10px;margin-top:13px;color:#7f8d74}.help-list{display:grid;grid-template-columns:80px 1fr;gap:13px;font-size:12px;align-items:center}.help-list dt{font-weight:700}.help-list dd{margin:0;line-height:1.7;color:#7a896e}.catalog-empty{filter:grayscale(1);opacity:.35}.finish-note{padding:14px;border-radius:14px;background:#e3ebd4;text-align:center;font-size:12px!important}.lost-save{color:#a16e4c}.night{filter:brightness(.88)}
@media(max-width:1000px){.hud-top{left:20px;right:20px;top:20px}.brand h1{font-size:23px}.brand>svg{width:33px}.brand span{font-size:8px;letter-spacing:1px}.daily{left:20px;top:111px;width:204px;padding:16px}.daily h2{font-size:12px}.task{font-size:10px}.area-name{display:none}.hud-bottom{left:20px;right:20px;bottom:20px}.control-hint{min-width:0}.control-hint p{display:none}.bottom-right{min-width:0}.bottom-right span{display:none}.tool{width:57px}.top-right{gap:6px}.day-pill,.money-pill{padding:8px 13px}.day-pill{min-width:95px}}
@media(max-width:650px), (max-width:900px) and (pointer:coarse){.hud-top{top:16px;left:16px;right:16px;align-items:center}.brand{gap:6px}.brand h1{font-size:18px;letter-spacing:1px}.brand span{display:none}.brand>svg{height:32px;width:29px}.day-pill{min-height:41px;min-width:0;padding:7px 10px;gap:6px}.day-pill b{font-size:11px}.day-pill span{font-size:8px}.day-pill svg{width:18px}.money-pill{min-height:41px;padding:8px 10px}.money-pill b{font-size:15px}.money-pill>span:last-child{display:none}.coin{width:17px;height:17px;font-size:9px}.top-right .icon-button{display:none}.daily{top:76px;left:16px;width:180px;padding:12px 14px;border-radius:15px 15px 24px 15px}.daily-title{margin-bottom:6px}.daily h2{font-size:11px}.task{font-size:9px;padding:2px 0}.task-check{width:14px;height:14px}.daily>p{font-size:8px;margin-top:7px;padding-top:8px}.hud-bottom{bottom:max(15px,env(safe-area-inset-bottom));left:12px;right:12px;justify-content:center}.control-hint,.bottom-right{display:none}.tool-dock{padding:5px 7px;border-radius:19px;gap:1px}.tool{height:54px;width:49px;border-radius:14px}.tool>svg{width:21px;height:21px}.tool span{font-size:8px}.tool kbd{display:none}.dock-divider{margin:0 4px;height:24px}.toast{top:77px;font-size:11px;padding:11px 17px}.interaction{bottom:206px;padding:7px 10px;font-size:11px}.interaction button{display:block}.interaction>.key{display:none}.welcome-card{width:min(350px,calc(100% - 38px));padding:29px 32px 25px;border-radius:80px 80px 32px 32px}.welcome-card h2{font-size:30px}.welcome-bottom{bottom:20px;font-size:8px;letter-spacing:1px}.welcome-note{font-size:8px}.welcome-description{font-size:12px}.touch-controls{display:flex;position:absolute;bottom:96px;left:24px;right:24px;justify-content:space-between;align-items:center;pointer-events:none}.joystick{width:90px;height:90px;border:2px solid #fffbeea0;border-radius:50%;background:#fffbee35;position:relative;pointer-events:auto;touch-action:none}.joystick span{position:absolute;left:25px;top:25px;width:36px;height:36px;border-radius:50%;background:#fffbeeaf;box-shadow:0 3px 10px #355e4522}.touch-controls>button{width:65px;height:65px;background:#fffbeee5;border-radius:50%;font-size:21px;box-shadow:var(--shadow);pointer-events:auto;touch-action:none}.touch-controls>button span{display:block;font-size:9px;margin-top:1px}.fishing-panel{width:min(320px,calc(100vw - 34px));top:42%}.placement-tip{bottom:200px;white-space:normal;width:calc(100% - 50px);text-align:center;line-height:2}.inventory-grid{gap:7px}.item-card{padding:10px 7px}.item-card strong{font-size:10px}dialog{padding:22px;max-height:78dvh}.modal-head h2{font-size:21px}}
@media(max-width:350px){.hud-top{gap:6px}.brand{flex-shrink:0}.brand h1{font-size:16px;white-space:nowrap}.brand>svg{width:22px}.day-pill>svg,.day-pill span{display:none}.day-pill{min-height:38px;padding:8px 11px}.money-pill{min-height:38px;padding:8px 9px}.money-pill b{font-size:14px}.top-right{gap:5px}.tool{width:44px}}
@media(prefers-reduced-motion:reduce){.toast{transition:none}*{scroll-behavior:auto!important}}

/* The island stays the main view; saving lives in a quiet paper notebook. */
#mobile-help-button{display:none}
#save-status{pointer-events:auto;background:transparent;font-size:10px;padding:8px 0;text-decoration:underline;text-underline-offset:4px;color:var(--forest)}
#save-status.lost-save{color:#8c4827;font-weight:700}
.welcome-card{max-height:calc(100dvh - 40px);overflow:auto}
.welcome-summary{font-size:11px;line-height:1.8;padding:12px 0;border-top:1px dashed #c3ceb1;border-bottom:1px dashed #c3ceb1;color:var(--forest)}
.welcome-save-note{font-size:11px;line-height:1.8;text-align:left;color:#854826;background:#f4e5cf;padding:12px;border-radius:10px}
.welcome-save-button{background:transparent;color:var(--forest);font-size:11px;text-decoration:underline;text-underline-offset:4px;min-height:44px;margin-top:5px}
.welcome-note{margin-top:9px}
.save-summary{padding:16px 0;border-top:1px dashed #c3ceb1;border-bottom:1px dashed #c3ceb1;font-variant-numeric:tabular-nums}
.save-summary strong{font-size:17px}
.save-actions{display:flex;flex-direction:column;gap:10px;margin:20px 0}
.secondary,.file-button{display:block;position:relative;border:1px solid #b6c7a2;border-radius:12px;background:#edf0df;color:var(--forest);padding:13px 18px;font-size:12px;text-align:center;cursor:pointer;min-height:44px}
.file-button:hover,.secondary:hover{background:#e0e8cd}
.file-button input{position:absolute;width:1px;height:1px;overflow:hidden;opacity:0}
.file-button:focus-within{outline:3px solid #de9458;outline-offset:4px}
#help-saves{margin-top:12px;width:100%}
#modal-content .save-error{color:#8c3827;font-size:12px}
.save-error:empty{display:none}
.save-warning{position:absolute;right:30px;top:99px;width:270px;max-width:calc(100% - 32px);padding:15px 18px;border:1px solid #d3ad79;border-radius:15px;background:#fffbee;box-shadow:var(--shadow);z-index:7}
.save-warning p{font-size:11px;line-height:1.8;margin:0;color:#80442a}
.save-warning button{background:var(--forest);color:var(--paper);border-radius:9px;font-size:11px;min-height:44px;padding:9px 13px;margin-top:10px}
#world:focus-visible{outline:3px solid #fffbee;outline-offset:-4px}
dialog[open]{display:flex;flex-direction:column;overflow:hidden}
.modal-head{flex:none}
#modal-content{min-height:0;overflow:auto;overscroll-behavior:contain}
.small-button{min-height:38px}
@media(max-width:1000px){#save-status{display:none}}
@media(max-width:650px), (max-width:900px) and (pointer:coarse){
  .top-right #mobile-help-button{display:grid;width:34px;height:34px;position:relative}
  .top-right #mobile-help-button::before{content:"";position:absolute;width:44px;height:44px;left:50%;top:50%;transform:translate(-50%,-50%)}
  .hud-top{top:max(16px,env(safe-area-inset-top));gap:8px}
  .brand{flex-shrink:0}
  .brand h1{font-size:17px;white-space:nowrap}
  .brand>svg{width:26px}
  .top-right{flex-shrink:0}
  .day-pill b{white-space:nowrap}
  .toast{top:276px}
  .save-warning{right:16px;top:235px;width:255px}
  .welcome-summary{font-size:10px}
  .small-button{min-height:44px}
  .welcome-layer{padding:10px 0}
  .welcome-card{max-height:calc(100dvh - 30px)}
}
@media(max-width:420px){.day-pill span{display:none}}
@media(max-width:350px){.brand h1{font-size:14px}.brand>svg{width:20px}.top-right{gap:4px}.day-pill{padding:8px}.money-pill{padding:8px}.top-right #mobile-help-button{width:32px;height:32px}}
@media(max-height:670px){.welcome-bottom{display:none}.welcome-card{border-radius:36px}.welcome-emblem{margin:0 0 4px}.welcome-emblem svg{width:36px;height:36px}.welcome-description{margin-bottom:14px}.welcome-card h2{margin-top:8px}}

@media(max-width:900px) and (pointer:coarse) and (max-height:500px){
  .daily{max-height:clamp(44px,calc(100dvh - 273px),105px);overflow:auto}
  .toast{top:76px;left:calc(50% + 94px);max-width:calc(100% - 228px)}
  .save-warning{top:75px;max-height:calc(100dvh - 170px);overflow:auto}
}
