:root{font-family:ui-rounded,"PingFang TC","Microsoft JhengHei",system-ui,sans-serif;color:#244d47;background:#53bec0;font-size:16px;--ink:#244d47;--green:#237e6d;--paper:#fffbed;--line:#e5e8d4}*{box-sizing:border-box}body{margin:0;overflow:hidden;overscroll-behavior:none}button{font:inherit;color:inherit;cursor:pointer;border:0;touch-action:manipulation}button:focus-visible{outline:3px solid #ffba54;outline-offset:4px}button:disabled{opacity:.45;cursor:default}#game{position:fixed;inset:0;touch-action:none}canvas{display:block}.hud{position:fixed;left:30px;right:30px;top:25px;display:flex;justify-content:space-between;align-items:flex-start;pointer-events:none;gap:12px}.hud>*{pointer-events:auto}.island-title{display:flex;align-items:center;gap:10px;background:var(--paper);padding:13px 24px 14px 18px;border-radius:8px 25px 25px 25px;box-shadow:0 5px 0 #256f5a20}.leaf{font-size:44px;line-height:1;color:#3f9461;transform:rotate(-20deg)}.island-title strong{display:block;font-size:24px;letter-spacing:3px}.island-title small{font-size:12px;display:block;margin-top:3px;color:#60847a}.status{display:flex;gap:10px;align-items:center}.status>span{background:var(--paper);border-radius:25px;padding:12px 18px;font-weight:700;box-shadow:0 4px 0 #256f5a20}.coins{color:#916323;min-width:90px}.round{border-radius:50%;height:44px;width:44px;background:var(--paper);font-size:24px}.quest{position:fixed;left:30px;top:130px;background:#fffbedef;width:235px;padding:18px 20px;border-radius:6px 22px 22px 22px;box-shadow:0 5px 0 #256f5a15;display:flex;gap:7px;flex-direction:column}.quest small{font-size:12px;color:#8c9273;letter-spacing:2px}.quest strong{font-size:17px}.quest span{font-size:14px;line-height:1.6}.quest button{align-self:flex-start;font-size:13px;color:var(--green);background:transparent;padding:5px 0 0;border-bottom:1px solid #6b9c80}.location{position:fixed;right:32px;bottom:27px;font-size:14px;color:#fcfff2;background:#23695f9c;padding:8px 14px;border-radius:20px}.toolbar{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);display:flex;gap:7px;background:#fffbedf2;padding:10px 16px;border-radius:25px;box-shadow:0 7px 0 #235d481f}.toolbar button{background:transparent;border-radius:16px;padding:5px 16px;display:flex;flex-direction:column;align-items:center;gap:5px;font-size:14px;position:relative;white-space:nowrap}.toolbar button:hover{background:#e3eed8;transform:translateY(-3px)}.toolbar span{font-size:26px}.toolbar kbd{display:none}.action-wrap{position:fixed;bottom:137px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;width:max-content;max-width:90vw}.action-wrap>span{font-size:14px;color:white;text-shadow:0 1px 5px #204f36,0 0 4px #204f36}.primary{background:var(--green);color:#fffbed;border-radius:26px;padding:14px 26px;font-weight:700;box-shadow:0 5px 0 #15534b;letter-spacing:1px}.primary:hover{background:#2b9480}.primary:active{transform:translateY(3px);box-shadow:0 2px 0 #15534b}kbd{font:inherit;font-size:12px;padding:3px 6px;margin-left:10px;border:1px solid #ffffff60;border-radius:5px;opacity:.8}.dpad{display:none;position:fixed;bottom:120px;left:17px;grid-template:repeat(3,42px)/repeat(3,42px);gap:3px}.dpad button{border-radius:15px;background:#fffbedbd;color:#326d60;font-size:19px;touch-action:none;user-select:none}.dpad button:nth-child(1){grid-area:1/2}.dpad button:nth-child(2){grid-area:2/1}.dpad button:nth-child(3){grid-area:3/2}.dpad button:nth-child(4){grid-area:2/3}.save-status{position:fixed;left:30px;bottom:25px;font-size:12px;color:#fff9e5;text-shadow:0 1px 4px #245d4c}#toast{position:fixed;left:50%;top:115px;transform:translate(-50%,-15px);opacity:0;pointer-events:none;background:var(--paper);padding:13px 24px;border-radius:24px;box-shadow:0 5px 0 #286f5620;transition:.2s;width:max-content;max-width:90vw;text-align:center;z-index:5;font-size:15px}#toast.show{opacity:1;transform:translate(-50%,0)}dialog{color:var(--ink);background:var(--paper);border:0;border-radius:30px;width:min(520px,calc(100vw - 28px));padding:30px;max-height:85dvh;box-shadow:0 20px 80px #173e4760}dialog::backdrop{background:#123f494d;backdrop-filter:blur(5px)}dialog .close{position:absolute;right:16px;top:13px;z-index:3;border-radius:50%;width:36px;height:36px;background:#fffbedeb;font-size:25px;color:#577969}dialog h1{font-size:32px;letter-spacing:3px;margin:10px 0}dialog h2{font-size:26px;margin:3px 0 10px}dialog h3{font-size:17px}dialog p{line-height:1.8;font-size:15px;color:#5a766c}dialog .eyebrow{font-size:12px;color:#8b9878;letter-spacing:3px;margin:0 0 10px}.welcome-art{width:calc(100% + 60px);margin:-30px -30px 20px;height:230px;object-fit:cover;display:block}.welcome-copy{text-align:center}.welcome-copy .primary{width:100%;margin-top:8px}.welcome-copy small{display:block;font-size:12px;color:#839383;margin-top:14px}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:22px 0}.item{position:relative;padding:16px 9px;background:#eef0dc;border-radius:18px;text-align:center;border:1px solid #e0e6cb}.item .emoji{display:block;font-size:32px;margin-bottom:6px}.item strong{font-size:14px;display:block}.item small{font-size:12px;color:#718367}.item b{position:absolute;top:7px;right:10px;font-size:13px;color:#51835d}.row{display:flex;gap:12px;align-items:center;padding:15px 0;border-bottom:1px solid var(--line)}.row .emoji{font-size:32px;min-width:40px;text-align:center}.row .info{flex:1}.row strong{font-size:16px}.row p{font-size:13px;margin:4px 0}.row button,.secondary{padding:9px 15px;border-radius:15px;background:#dcebd1;color:#336642;font-size:14px;font-weight:700}.wide{width:100%;margin-top:20px}.notice{background:#eff0da;border-radius:15px;padding:13px 16px;font-size:14px;line-height:1.6}.fish-meter{height:35px;border-radius:20px;background:#d9e4e3;position:relative;overflow:hidden;margin:25px 0}.fish-zone{position:absolute;left:37%;width:26%;height:100%;background:#65a474}.fish-pointer{position:absolute;width:7px;height:100%;background:#ffb43e;box-shadow:0 0 0 2px #fff7da}#map-canvas{width:100%;border-radius:18px;margin-top:15px}.help-list{padding-left:20px;line-height:2;font-size:15px}.name-input{width:100%;border:2px solid #dfe7ce;background:#fffef5;border-radius:14px;padding:12px;font:inherit;margin:10px 0;color:var(--ink)}.dialogue{font-size:18px!important;color:#3d665a!important;min-height:90px}.friend{color:#db8e69;font-size:14px}.task-done{opacity:.65}.badge{border-radius:12px;background:#e6edd2;padding:4px 9px;font-size:12px}.fineprint{font-size:12px!important;color:#809282!important}
@media(pointer:coarse){.dpad{display:grid}.action-wrap{left:auto;right:20px;transform:none;bottom:160px;max-width:51vw}.action-wrap>span{text-align:center}.action-wrap kbd{display:none}}
@media(max-width:650px){.hud{top:max(13px,env(safe-area-inset-top));left:12px;right:12px}.island-title{padding:9px 12px;gap:5px}.island-title strong{font-size:19px;letter-spacing:2px}.island-title small{font-size:10px}.leaf{font-size:29px}.status{gap:5px}.status>span{padding:10px 11px;font-size:13px}.status #day{display:none}.round{height:37px;width:37px;font-size:20px}.quest{left:12px;top:94px;width:190px;padding:12px 15px;gap:4px}.quest small{font-size:11px}.quest strong{font-size:15px}.quest span{font-size:12px}.quest button{font-size:12px}.toolbar{bottom:max(18px,env(safe-area-inset-bottom));gap:0;padding:8px 10px;width:calc(100% - 28px);justify-content:space-around}.toolbar button{padding:5px 10px;font-size:12px}.toolbar span{font-size:24px}.save-status{display:none}.location{bottom:110px;right:18px;font-size:12px}#toast{top:210px;font-size:14px;padding:12px 17px}dialog{padding:24px}.welcome-art{width:calc(100% + 48px);margin:-24px -24px 15px;height:190px}.action-wrap{bottom:171px}.action-wrap .primary{padding:14px 20px;font-size:14px}.action-wrap>span{font-size:12px}.grid{gap:7px}.item{padding:13px 7px}.row{gap:8px}.row button{padding:9px 12px}}
@media(max-height:530px){.quest{display:none}.toolbar{bottom:12px;padding:5px}.toolbar span{font-size:20px}.toolbar button{padding:3px 13px}.action-wrap{bottom:95px}.dpad{bottom:80px;grid-template:repeat(3,32px)/repeat(3,32px)}.welcome-art{height:100px}dialog{max-height:95dvh}.location{bottom:20px}.hud{top:10px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.island-title em{font-size:12px;font-style:normal;background:#4b8e77;color:#fff8dc;border-radius:8px;padding:3px 5px;vertical-align:middle;letter-spacing:0}.camera-controls{position:fixed;right:30px;top:94px;display:flex;gap:7px}.camera-controls button{width:37px;height:37px;border-radius:50%;background:#fff8deed;font-size:21px;box-shadow:0 3px 0 #22564d22}.leave-home{position:fixed;right:30px;top:155px}.leave-home[hidden]{display:none}.volume-row{display:flex;flex-wrap:wrap;gap:12px;padding:20px 0;border-bottom:1px solid #dce5cc;font-size:16px}.volume-row input{width:100%;accent-color:#358c72;height:20px}.emote-grid{display:flex;justify-content:space-around;gap:12px;margin:24px 0}.emote-grid button{flex:1;background:#e4edd6;border-radius:20px;padding:18px 10px;font-size:20px;line-height:1.8}.sleep-overlay{position:fixed;inset:0;z-index:12;background:#173f4b;color:#ffe8ab;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:80px;opacity:0;pointer-events:none;transition:opacity .5s}.sleep-overlay span{font-size:18px;letter-spacing:4px;margin-top:20px}.sleeping .sleep-overlay{opacity:1;pointer-events:auto}.webgl-error{margin:25vh auto;width:80%;max-width:500px;background:#fff7df;padding:30px;border-radius:25px;line-height:1.8}.quest{width:215px;padding:13px 16px}.quest span{display:none}.quest button{font-size:12px}.fishing-dialog,.conversation{position:fixed;margin:0;left:50%;top:auto;bottom:22px;transform:translateX(-50%);width:min(570px,calc(100vw - 24px));max-height:43dvh;padding:20px 26px;border-radius:25px;background:#fffbedf5}.fishing-dialog::backdrop,.conversation::backdrop{background:transparent;backdrop-filter:none}.fishing-dialog .eyebrow,.conversation .eyebrow{display:none}.fishing-dialog h2,.conversation h2{font-size:22px}.fishing-dialog p,.conversation p{margin:8px 0;line-height:1.5}.fishing-dialog .fineprint{font-size:12px!important}.fishing-dialog .fish-meter{margin:13px 0;height:26px}.fishing-dialog .wide,.conversation .wide{margin-top:8px;padding:10px}.conversation .dialogue{min-height:0;font-size:16px!important}.conversation .notice{padding:8px 12px;font-size:13px}.fishing-dialog .secondary{display:inline-block;width:auto}.toolbar{gap:2px}.toolbar button{padding-left:12px;padding-right:12px}
@media(max-width:650px){.camera-controls{right:12px;top:83px;gap:5px}.camera-controls button{width:30px;height:30px;font-size:18px}.quest{top:87px;width:180px;max-width:calc(100vw - 159px);padding:10px 12px}.quest small{display:none}.quest strong{font-size:13px}.quest button{font-size:11px}.toolbar{padding:8px 3px}.toolbar button{padding:4px 8px;font-size:11px}.toolbar span{font-size:23px}.leave-home{right:13px;top:132px;padding:10px 16px;font-size:14px}.fishing-dialog,.conversation{bottom:12px;padding:17px 20px;max-height:42dvh}.fishing-dialog h2,.conversation h2{font-size:20px}.fishing-dialog .fineprint{display:none}.fishing-dialog .primary{padding:11px}.conversation .dialogue{font-size:15px!important}}

/* Touch landscape layout is independent of portrait width breakpoints. */
:root{--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px);--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}
#game{width:100%;height:100dvh}.hud{left:max(18px,var(--safe-left));right:max(18px,var(--safe-right));top:max(16px,var(--safe-top))}.toolbar{bottom:max(18px,var(--safe-bottom))}button,.joystick{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.name-input{-webkit-user-select:text;user-select:text}.joystick,.run-button{display:none}.camera-controls button{min-width:44px;min-height:44px}.close{min-width:44px;min-height:44px}.toolbar button{min-width:44px}
@media(pointer:coarse) and (orientation:landscape) and (max-height:560px){
 .hud{left:calc(var(--safe-left) + 12px);right:calc(var(--safe-right) + 12px);top:max(10px,var(--safe-top));align-items:center}.island-title{padding:7px 12px;gap:5px;border-radius:10px 22px 22px 22px}.island-title strong{font-size:17px;letter-spacing:2px}.island-title small,.island-title .leaf{display:none}.island-title em{font-size:10px}.status{gap:7px}.status>span{padding:9px 13px;font-size:14px}.status #day{display:inline-block}.status .round{width:44px;height:44px}
 .quest{display:flex;top:66px;left:calc(var(--safe-left) + 13px);width:178px;max-width:178px;padding:9px 13px;border-radius:18px;background:#fffbedc9;gap:3px}.quest strong{font-size:13px}.quest span,.quest small{display:none}.quest button{font-size:12px;padding:2px 0;min-height:24px}
 .camera-controls{right:calc(var(--safe-right) + 12px);top:66px;gap:6px}.camera-controls button{width:44px;height:44px;font-size:22px;background:#fff8decc}
 .dpad{display:none}.joystick{display:block;position:fixed;left:calc(var(--safe-left) + 18px);bottom:calc(var(--safe-bottom) + 19px);width:120px;height:120px;border-radius:50%;background:#fffbe635;border:2px solid #fff9dd70;box-shadow:inset 0 0 25px #3b76502b;touch-action:none;z-index:3}.joystick-ring{position:absolute;inset:19px;border:1px solid #fffbed70;border-radius:50%;pointer-events:none}#joystick-thumb{position:absolute;left:33px;top:33px;width:50px;height:50px;border:2px solid #fff9dddc;border-radius:50%;background:#fbf4d6ba;box-shadow:0 5px 12px #36543f26;pointer-events:none;will-change:transform}.joystick small{position:absolute;bottom:5px;left:0;right:0;text-align:center;font-size:11px;color:#fdf7d7;pointer-events:none}.joystick.active{background:#ffffff42}
 .action-wrap{left:auto;right:calc(var(--safe-right) + 15px);bottom:calc(var(--safe-bottom) + 25px);transform:none;width:144px;max-width:144px;gap:7px}.action-wrap .primary{width:144px;min-height:62px;border-radius:32px;padding:12px 14px;font-size:15px;letter-spacing:0;box-shadow:0 5px 0 #15534b90}.action-wrap kbd{display:none}.action-wrap>span{font-size:12px;text-align:center;line-height:1.5;max-width:144px}
 .run-button{display:block;position:fixed;right:calc(var(--safe-right) + 20px);bottom:calc(var(--safe-bottom) + 129px);width:50px;height:50px;border-radius:50%;background:#fff8deb8;color:#386c5d;font-size:13px;font-weight:700;touch-action:none}.run-button.active{background:#348875;color:#fff7dc;box-shadow:0 0 0 4px #fff0b799}
 .toolbar{left:50%;bottom:calc(var(--safe-bottom) + 12px);width:300px;max-width:calc(100vw - var(--safe-left) - var(--safe-right) - 320px);min-width:264px;padding:5px 3px;gap:0;border-radius:20px;justify-content:space-evenly}.toolbar button{font-size:12px;min-width:42px;padding:4px 4px;gap:3px;line-height:1.2}.toolbar span{font-size:22px}.toolbar kbd{display:none}
 .location{right:auto;left:50%;transform:translateX(-50%);bottom:calc(var(--safe-bottom) + 83px);font-size:12px;padding:5px 13px;pointer-events:none}.save-status{display:none}#toast{top:62px;max-width:45vw;font-size:13px;padding:9px 16px}.leave-home{top:120px;right:calc(var(--safe-right) + 15px);font-size:13px;padding:12px 18px;min-height:44px}
 dialog{max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 24px);width:min(580px,76vw);padding:23px;border-radius:23px}dialog h2{font-size:23px}dialog p{font-size:14px}.grid{margin:13px 0}.row{padding:11px 0}.row button{min-height:44px}.welcome-art{height:120px;width:calc(100% + 46px);margin:-23px -23px 15px;object-position:center 42%}.welcome-copy h1{font-size:26px}.welcome-copy p{margin:7px 0}.welcome-copy .primary{padding:12px;margin-top:5px}
 .fishing-dialog,.conversation{left:auto;right:calc(var(--safe-right) + 12px);bottom:calc(var(--safe-bottom) + 14px);transform:none;width:min(294px,38vw);max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 82px);padding:20px;border-radius:22px}.fishing-dialog h2,.conversation h2{font-size:19px;padding-right:19px}.fishing-dialog p,.conversation p{font-size:14px;line-height:1.55}.conversation .dialogue{font-size:15px!important;min-height:0}.conversation .notice{font-size:13px;padding:9px}.fishing-dialog .fineprint{display:none}.fishing-dialog .wide,.conversation .wide{min-height:44px}.fishing-dialog .fish-meter{height:27px;margin:14px 0}.fishing-dialog .secondary{width:100%}.fishing-dialog .close,.conversation .close{right:6px;top:5px}
}
@media(pointer:coarse) and (orientation:landscape) and (max-height:355px){.quest{display:none}.camera-controls{top:60px}.camera-controls button{width:44px;height:44px}.joystick{width:106px;height:106px;left:calc(var(--safe-left) + 15px)}#joystick-thumb{left:26px;top:26px}.joystick-ring{inset:16px}.run-button{bottom:calc(var(--safe-bottom) + 115px)}.toolbar{width:276px}.action-wrap{width:130px}.action-wrap .primary{width:130px;min-height:55px}.action-wrap>span{font-size:11px}.location{display:none}.welcome-art{height:85px}}
@media(pointer:coarse) and (orientation:portrait){.hud{left:max(12px,var(--safe-left));right:max(12px,var(--safe-right))}.dpad{bottom:calc(var(--safe-bottom) + 115px)}.action-wrap{right:max(17px,var(--safe-right));bottom:calc(var(--safe-bottom) + 158px)}.toolbar{bottom:max(18px,var(--safe-bottom))}.camera-controls button{min-width:36px;min-height:44px}.quest{max-width:calc(100vw - 185px)}}

/* Island life keeps every extra system inside the existing six-button toolbar. */
.life-menu,.tool-wheel,.collection-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:16px 0}.life-menu button,.tool-wheel button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;min-height:98px;border-radius:19px;background:#edf0dc;color:#456b59;padding:15px 9px}.life-menu button{font-size:24px}.life-menu strong,.tool-wheel strong{font-size:15px}.life-menu small{font-size:11px;font-weight:400;line-height:1.5}.tool-wheel span{font-size:29px}.tool-wheel .selected{background:#d4e4ca;box-shadow:inset 0 0 0 3px #579e83}.collection-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.specimen{border:1px solid #dedec5;border-radius:17px;padding:13px;display:flex;align-items:center;flex-direction:column;gap:7px;background:#f8f3de}.specimen>span{font-size:35px}.specimen small{font-size:11px;text-align:center}.specimen button{width:100%;min-height:40px}.specimen.undiscovered{background:#eeeede}.swatches,.season-buttons{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 22px}.swatches button{background:var(--swatch);color:#263f37;min-height:48px;border:3px solid transparent}.swatches button[aria-pressed=true],.season-buttons button[aria-pressed=true]{border:3px solid #456e5a}.season-buttons button{min-height:44px;border:3px solid transparent}.life-menu button:focus-visible,.tool-wheel button:focus-visible{outline:3px solid #d39751;outline-offset:2px}
@media (max-width:520px){.life-menu{grid-template-columns:repeat(2,minmax(0,1fr))}.life-menu button{min-height:90px}}
@media (orientation:landscape) and (pointer:coarse) and (max-height:560px){.life-menu button,.tool-wheel button{min-height:73px;padding:9px 6px}.life-menu small{font-size:10px}.collection-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.specimen{padding:9px}.specimen>span{font-size:25px}.hud .status{gap:9px}#day{font-size:11px}.tool-wheel{grid-template-columns:repeat(3,minmax(0,1fr))}}

.reeling-indicator{height:8px;background:#d5dfc3;border-radius:9px;overflow:hidden;margin:16px 0}.reeling-indicator span{display:block;height:100%;background:#6ca78b;transform-origin:left;animation:reel-progress 1.65s linear forwards}@keyframes reel-progress{from{transform:scaleX(0)}to{transform:scaleX(1)}}.fishing-dialog.fighting{max-width:340px}
/* Fishing keeps the ocean sharp, with controls outside the action area. */
body.fishing-active .quest,body.fishing-active .toolbar,body.fishing-active .action-wrap,body.fishing-active .camera-controls,body.fishing-active .joystick,body.fishing-active .run-button,body.fishing-active .dpad,body.fishing-active .location{visibility:hidden}
dialog.fishing-dialog::backdrop{background:transparent;backdrop-filter:none}
dialog.fishing-dialog{position:fixed;inset:auto max(12px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) auto;margin:0;width:min(300px,33vw);max-width:300px;max-height:calc(100dvh - 90px);padding:20px;background:#fffbedf5;box-shadow:0 8px 30px #153d3926;border-radius:23px}
dialog.fishing-dialog h2{font-size:21px;padding-right:22px}dialog.fishing-dialog p{font-size:13px;line-height:1.5}dialog.fishing-dialog .eyebrow{font-size:10px;letter-spacing:1px}dialog.fishing-dialog .fish-meter{margin:13px 0;height:27px}dialog.fishing-dialog .wide{margin-top:10px;padding:11px}dialog.fishing-dialog .fineprint{display:none}
@media(orientation:portrait){dialog.fishing-dialog{width:calc(100vw - 24px);max-width:none;max-height:33dvh;padding:14px 20px}dialog.fishing-dialog .eyebrow{display:none}dialog.fishing-dialog p{margin:6px 0}}
.room-plan{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:4px;margin:12px 0;background:#d2b386;padding:8px;border-radius:12px}.room-plan button{padding:5px;min-height:32px;border-radius:5px;font-size:18px;background:#f7efd8;color:#325c50}.room-plan button:disabled{opacity:.4;background:#9d8f70}.room-plan button:focus-visible{outline:3px solid #387eaf}

/* The journal uses the existing modal; no new permanent overlay covers the island. */
.community-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}.community-tabs button{flex:1;min-width:110px;min-height:44px;font-size:14px}.community-card{padding:16px;margin:14px 0;border:1px solid #d6dcc4;border-radius:17px;background:#f4f1de}.community-card h3{margin:6px 0 10px}.community-card p{line-height:1.6}.community-card summary,.memory-entry summary{cursor:pointer;min-height:44px;align-content:center;font-size:16px;font-weight:700}.community-tag{font-size:13px;color:#527b62}progress{width:100%;height:12px;accent-color:#438c72}.growth-goals{padding:0;list-style:none}.growth-goals li{display:flex;justify-content:space-between;gap:12px;line-height:1.6;margin:10px 0;font-size:14px}.growth-goals li span{white-space:nowrap;font-variant-numeric:tabular-nums}.memory-entry{border-top:1px solid #d5dbc5;padding:6px 0}.memory-entry p{font-size:15px;line-height:1.7}.story-choices button{white-space:normal;text-align:left;line-height:1.6;min-height:48px}.community-card button{min-height:44px}.community-card .fineprint{font-size:13px}@media(pointer:coarse) and (orientation:landscape) and (max-height:560px){.community-card{padding:12px;margin:10px 0}.community-tabs{gap:6px}.community-tabs button{min-width:90px}}

.backup-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:16px 0}.backup-actions button{min-height:48px;padding:12px;font-size:15px;line-height:1.5}.backup-actions [hidden]{display:none}.backup-dialog .backup-note{font-size:14px;line-height:1.7}.backup-dialog #backup-message{font-size:14px;overflow-wrap:anywhere}.backup-dialog .notice{overflow-wrap:anywhere}.backup-dialog h2{padding-right:24px}@media(max-width:380px){.backup-actions{grid-template-columns:1fr}}

.construction-payments{display:flex;flex-wrap:wrap;gap:9px;margin-top:14px}.construction-payments button{min-height:46px;padding:11px 15px;font-size:14px}.rating-stars{font-size:32px;letter-spacing:5px;color:#9b751f;margin:14px 0}.community-card summary{line-height:1.5}

/* Local island editing keeps finger-sized cells beside the material controls. */
dialog.landscape-dialog{width:min(760px,90vw)}.land-heading{display:flex;justify-content:space-between;align-items:center;gap:15px;padding-right:24px}.land-heading h2{margin:3px 0 10px}.land-heading>span{font-size:14px;max-width:155px}.land-editor{display:grid;grid-template-columns:240px minmax(0,1fr);gap:24px;align-items:start}.land-grid{display:grid;grid-template-columns:repeat(5,44px);gap:4px}.land-grid button{background:var(--tile);border:2px solid transparent;border-radius:7px;min-width:44px;width:44px;min-height:44px;height:44px;padding:0;color:#65503d;font-size:24px}.land-grid .chosen{border-color:#255f56;box-shadow:0 0 0 2px #fff4b1;position:relative}.land-grid .here{color:#b54c3c}.land-grid .unavailable{background:repeating-linear-gradient(45deg,#d6d9cd,#d6d9cd 6px,#c5cbbb 6px,#c5cbbb 8px)}.land-compass{font-size:14px;margin:0 0 10px}.land-pair{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.land-actions button{min-height:44px;font-size:14px;padding:9px 10px}.land-actions .wide{margin-top:8px}.land-actions label{font-size:14px}.land-actions>p:first-child{margin:0 0 8px;font-size:16px}.land-actions .name-input{margin:4px 0;font-size:16px;padding:9px}.land-editor .fineprint{font-size:13px;line-height:1.5;margin:10px 0}.landscape-dialog #land-back{min-height:44px;margin-top:12px}
@media(max-width:620px) and (orientation:portrait){.land-editor{grid-template-columns:1fr}.land-grid{justify-content:center}.land-heading{display:block}.land-heading>span{display:block;max-width:none;margin-bottom:12px}}
@media(orientation:landscape) and (max-height:560px){dialog.landscape-dialog{width:min(780px,91vw);padding:17px 22px}.land-heading .eyebrow{display:none}.land-heading h2{font-size:21px}.land-editor{grid-template-columns:240px minmax(0,1fr);gap:20px}.landscape-dialog .land-editor{max-height:calc(100dvh - 140px);overflow:auto;padding:3px}.landscape-dialog .land-actions{padding-right:4px}.landscape-dialog #land-back{margin-top:8px}.landscape-dialog .land-editor p{font-size:14px}}

@media(orientation:landscape) and (max-height:560px){.landscape-dialog .land-editor{max-height:calc(100dvh - 120px)}.landscape-dialog .land-editor>div:first-child>.fineprint{display:none}.landscape-dialog .land-compass{margin-bottom:6px}}

.event-status{position:fixed;z-index:5;top:max(80px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);background:#f9edc8;color:#4c6857;border:2px solid #d5b467;border-radius:18px;padding:8px 14px;min-height:44px;font-size:14px;box-shadow:0 3px 12px #335a402b}.event-status[hidden]{display:none}.event-score{display:flex;align-items:center;gap:14px}.event-score strong{font-size:28px;color:#337c71;font-variant-numeric:tabular-nums}
@media(pointer:coarse) and (orientation:landscape) and (max-height:560px){.event-status{top:66px;max-width:calc(100vw - 435px);font-size:14px;padding:7px 10px}}
@media(orientation:portrait) and (max-width:650px){.event-status{top:155px;left:auto;right:12px;transform:none;max-width:46vw;font-size:13px}}

.backup-text{display:block;width:100%;min-height:135px;max-height:35dvh;padding:12px;font-size:16px;line-height:1.4;border:1px solid #8fa99a;border-radius:12px;resize:vertical;user-select:text;-webkit-user-select:text;touch-action:auto}.round.save-warning{background:#ffe0bc;color:#87351d;outline:2px solid #c76339}.game-link{display:block;width:100%;font-size:16px;padding:10px;user-select:text;-webkit-user-select:text}html:fullscreen,html:fullscreen body{width:100%;height:100%;margin:0}

.island-letter{padding:18px 20px;background:#fff8e7;border:1px solid #ddcba4;border-radius:12px;line-height:1.9}.letter-signature{text-align:right;color:#577c6b}#mail-unread{font-size:12px;font-weight:600;color:#975126}

/* Portrait fishing reserves the bottom sheet; all action stays above it. */
@media(orientation:portrait){
 body.fishing-active .hud,body.fishing-active .save-status{visibility:hidden}
 body.fishing-active .event-status{top:max(12px,env(safe-area-inset-top));max-width:calc(100vw - 32px);padding:7px 12px;min-height:36px;font-size:13px}
 dialog.fishing-dialog{inset:auto max(12px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));transform:none;width:auto;max-width:none;max-height:32dvh;padding:14px 16px;overflow-y:auto;overscroll-behavior:contain}
 dialog.fishing-dialog h2{margin:0 44px 5px 0;padding-right:0;font-size:19px;line-height:1.3}
 dialog.fishing-dialog p{font-size:16px;line-height:1.4;margin:6px 0}
 dialog.fishing-dialog .wide{min-height:44px;padding:10px 14px;margin-top:8px}
 dialog.fishing-dialog .close{top:5px;right:7px;width:44px;height:44px}
}

/* Portrait uses the same captured analog input as landscape. */
@media(pointer:coarse) and (orientation:portrait){
 .dpad{display:none}.joystick{display:block;position:fixed;left:calc(var(--safe-left) + 14px);bottom:calc(var(--safe-bottom) + 112px);width:120px;height:120px;border-radius:50%;background:#fffbe635;border:2px solid #fff9dd70;box-shadow:inset 0 0 25px #3b76502b;touch-action:none;z-index:3}.joystick-ring{position:absolute;inset:19px;border:1px solid #fffbed70;border-radius:50%;pointer-events:none}#joystick-thumb{position:absolute;left:33px;top:33px;width:50px;height:50px;border:2px solid #fff9dddc;border-radius:50%;background:#fbf4d6ba;box-shadow:0 5px 12px #36543f26;pointer-events:none;will-change:transform}.joystick small{position:absolute;bottom:5px;left:0;right:0;text-align:center;font-size:11px;color:#fdf7d7;pointer-events:none}.joystick.active{background:#ffffff42}
 .action-wrap{left:auto;right:calc(var(--safe-right) + 14px);bottom:calc(var(--safe-bottom) + 126px);transform:none;width:140px;max-width:calc(100vw - var(--safe-left) - var(--safe-right) - 156px)}
 .action-wrap .primary{width:100%;min-height:56px;padding:12px 10px;font-size:14px}.action-wrap>span{font-size:12px;text-align:center;line-height:1.4}.action-wrap kbd{display:none}
 .run-button{display:block;position:fixed;right:calc(var(--safe-right) + 18px);bottom:calc(var(--safe-bottom) + 228px);width:48px;height:48px;border-radius:50%;background:#fff8deb8;color:#386c5d;font-size:13px;font-weight:700;touch-action:none;z-index:3}.run-button.active{background:#348875;color:#fff7dc;box-shadow:0 0 0 4px #fff0b799}
}

.asset-loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;background:#dcedcf;color:#345f4c;z-index:50;font-size:1rem}.asset-loading button{padding:.75rem 1.2rem;border:0;border-radius:1rem;background:#367e68;color:white}

/* Short travel plus held direction taps keep movement away from browser gestures. */
.joystick{overscroll-behavior:contain}.stick-arrow{position:absolute;color:#fffbed;pointer-events:none;font-size:13px;line-height:15px}.stick-arrow.up{top:8px;left:calc(50% - 6px)}.stick-arrow.down{bottom:18px;left:calc(50% - 6px)}.stick-arrow.left{left:8px;top:calc(50% - 8px)}.stick-arrow.right{right:8px;top:calc(50% - 8px)}.joystick small{font-size:9px;bottom:3px}
@media(pointer:coarse) and (orientation:landscape){html:fullscreen .joystick{bottom:calc(var(--safe-bottom) + 60px)}}

/* Canvas uses the measured visible viewport, never a stale fullscreen dvh size. */
#game>canvas{max-width:100%;object-fit:contain;object-position:top left}
/* DIY catalogue and deliberate, reversible placement. */
.furniture-dialog{width:min(1000px,calc(100vw - 24px));max-width:1000px;height:min(740px,calc(100dvh - 24px));max-height:calc(100dvh - 24px);padding:20px;background:var(--paper)}
.furniture-library h2{margin:0 35px 10px 0;font-size:24px}.furniture-library .eyebrow{margin:0 0 5px;font-size:11px}.furniture-tabs,.furniture-filters{display:flex;gap:6px;flex-wrap:wrap}.furniture-tabs{margin-bottom:14px}.furniture-tabs button,.furniture-filters button{padding:9px 12px;border-radius:18px;background:#e9eedf;font-size:14px}.furniture-tabs [aria-pressed=true],.furniture-filters [aria-pressed=true]{background:var(--green);color:var(--paper)}
.furniture-browser{display:grid;grid-template-columns:minmax(150px,1fr) minmax(180px,1fr);gap:20px}.furniture-choices{min-width:0}#furniture-search{width:100%;font:inherit;border:1px solid #b6cbb9;border-radius:14px;padding:10px;background:white;min-height:44px} .furniture-filters{margin:10px 0}.furniture-filters button{padding:7px 10px;font-size:12px;min-height:36px}#furniture-list{height:390px;overflow:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:7px;padding:4px}.furniture-choice{position:relative;text-align:left;background:#eef0e1;padding:12px 10px;border-radius:15px;border:2px solid transparent;display:grid;grid-template-columns:38px 1fr;gap:3px 7px;flex-shrink:0;min-height:72px}.furniture-choice span{font-size:27px;grid-row:span 2}.furniture-choice strong{font-size:15px}.furniture-choice small{font-size:12px}.furniture-choice[aria-pressed=true]{border-color:var(--green);background:#dcebdc}.furniture-inspector{min-width:0}#furniture-preview{height:255px;border-radius:22px;background:radial-gradient(ellipse at center,#faf7e7,#dce8dc);touch-action:none;overflow:hidden}#furniture-detail h3{margin:10px 0}#furniture-detail p{font-size:13px;line-height:1.5;margin:8px 0}.furniture-cost{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}.furniture-cost span{padding:6px 9px;border-radius:12px;background:#e3ebd9;font-size:13px}.furniture-cost .missing{background:#f4dfd2;color:#854634}#furniture-finishes{margin-top:14px}.furniture-library .fineprint{font-size:12px}
body.furniture-editing>.hud,body.furniture-editing>.quest,body.furniture-editing>.toolbar,body.furniture-editing>.action-wrap,body.furniture-editing>.camera-controls,body.furniture-editing>.joystick,body.furniture-editing>.dpad,body.furniture-editing>.run-button,body.furniture-editing>.location,body.furniture-editing>.save-status,body.furniture-editing>.leave-home,body.furniture-editing>#event-status{display:none!important}
.furniture-editor{position:fixed;inset:0;z-index:100;pointer-events:none;padding:calc(env(safe-area-inset-top) + 10px) calc(env(safe-area-inset-right) + 12px) calc(env(safe-area-inset-bottom) + 14px) calc(env(safe-area-inset-left) + 12px);display:flex;flex-direction:column;justify-content:space-between}.editor-heading,.editor-bottom{pointer-events:auto;background:#fffbedf5;box-shadow:0 5px 20px #153d3026;border-radius:20px;padding:10px 14px}.editor-heading{display:flex;align-items:center;gap:12px;width:max-content;max-width:100%;align-self:center}.editor-heading span{font-size:13px}.furniture-editor button{min-width:44px;min-height:44px;border-radius:14px;padding:10px 13px;background:#e0e9d9}.editor-bottom{align-self:center;max-width:100%}.editor-bottom p{font-size:14px;margin:0 0 9px;text-align:center;color:#277555}.editor-bottom p.invalid{color:#ab4f3d}.editor-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap;justify-content:center}.editor-actions .primary{background:var(--green);color:var(--paper);box-shadow:none}.editor-nudge{display:flex;gap:4px}.furniture-editor button:disabled{opacity:.45}
@media(max-width:600px){.furniture-dialog{padding:15px 10px;width:calc(100vw - 12px);height:calc(100dvh - 20px);max-height:calc(100dvh - 20px)}.furniture-library h2{font-size:20px}.furniture-browser{gap:9px;grid-template-columns:minmax(135px,.9fr) minmax(155px,1fr)}#furniture-list{height:43dvh}.furniture-choice{grid-template-columns:1fr;padding:9px}.furniture-choice span{font-size:23px;grid-row:auto}.furniture-choice strong{font-size:13px}#furniture-preview{height:175px}#furniture-detail .wide{padding:10px;font-size:13px;min-height:44px}.furniture-filters{gap:3px}.furniture-filters button{padding:6px 8px}.editor-heading{flex-wrap:wrap;gap:5px 10px}.editor-heading span{order:3;width:100%;font-size:12px}.editor-heading button{margin-left:auto}.editor-actions{gap:5px}.editor-actions button{font-size:13px;padding:9px}.editor-bottom{padding:10px}.editor-nudge{width:100%;justify-content:center}}
@media(orientation:landscape) and (max-height:560px){.furniture-dialog{padding:10px 18px;height:calc(100dvh - 12px);max-height:calc(100dvh - 12px)}.furniture-library>.eyebrow{display:none}.furniture-library h2{font-size:18px;margin-bottom:6px}.furniture-tabs{margin-bottom:7px}.furniture-tabs button{padding:6px 12px}.furniture-browser{grid-template-columns:1fr 1.25fr;gap:16px}#furniture-list{height:180px}#furniture-preview{height:120px}.furniture-inspector{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-content:start}.furniture-inspector>.fineprint{display:none}#furniture-detail h3{font-size:15px;margin-top:0}#furniture-detail p{font-size:12px}.furniture-cost{gap:3px;margin:6px 0}.furniture-cost span{font-size:11px;padding:4px}.furniture-library .wide{padding:8px;font-size:12px;min-height:40px}.editor-heading{padding:6px 12px}.editor-bottom{padding:7px 10px}.editor-bottom p{margin-bottom:5px;font-size:12px}.editor-actions button{min-height:40px;padding:8px 10px;font-size:13px}}

/* One contextual activity chip; keep the playfield and existing controls clear. */
.social-status{position:fixed;z-index:6;top:128px;left:50%;transform:translateX(-50%);max-width:min(460px,calc(100vw - 32px));min-height:44px;padding:8px 16px;border:1px solid #99b8a2;border-radius:18px;background:#f5f6e5ed;color:#315f50;font-size:14px;box-shadow:0 3px 12px #335a4020}
.social-status[hidden],body.fishing-active .social-status,body.furniture-editing .social-status{display:none!important}
@media(orientation:portrait) and (max-width:650px){.social-status{top:210px;max-width:calc(100vw - 24px);font-size:13px}}
@media(orientation:landscape) and (max-height:560px){.social-status{top:112px;max-width:calc(100vw - 370px);font-size:12px;padding:5px 9px}}
.cook-meter{position:relative;height:38px;border-radius:18px;background:linear-gradient(90deg,#e6d8aa,#edcf82 65%,#c37f59);margin:22px 5px;overflow:hidden}.cook-zone{position:absolute;left:43%;width:20%;height:100%;background:#8abd91}.cook-meter i{position:absolute;top:0;bottom:0;width:5px;background:#244f44;border:1px solid white}
#expedition-view{position:fixed;inset:0;z-index:40;background:#a8c6b7;touch-action:none;color:#315d4e}#expedition-view>canvas{display:block;width:100%;height:100%}body.expedition-active>.hud,body.expedition-active>.toolbar,body.expedition-active>.action-wrap,body.expedition-active>.quest,body.expedition-active>.camera-controls,body.expedition-active>.joystick,body.expedition-active>.run-button{visibility:hidden}.expedition-title{position:absolute;left:max(16px,env(safe-area-inset-left));top:max(16px,env(safe-area-inset-top));padding:12px 17px;border-radius:20px;background:#fff9e9ed;max-width:calc(100% - 150px)}.expedition-title strong,.expedition-title span{display:block}.expedition-title span{font-size:13px;margin-top:5px}.expedition-return{position:absolute;right:max(16px,env(safe-area-inset-right));top:max(16px,env(safe-area-inset-top));background:#fff9e9;min-height:44px;padding:10px 16px;border-radius:18px}.expedition-map{position:absolute;left:16px;top:100px;max-width:260px}.expedition-map button{background:#fff9e9;padding:10px;border-radius:12px;min-height:44px}.expedition-map canvas{display:block;margin-top:8px;border:5px solid #fff9e9;border-radius:12px}.expedition-map [hidden]{display:none}.expedition-map p{padding:12px;background:#fff9e9;border-radius:12px;font-size:13px}.expedition-stick{position:absolute;bottom:max(28px,env(safe-area-inset-bottom));left:max(25px,env(safe-area-inset-left));width:110px;height:110px;border-radius:50%;background:#fff9e976;border:2px solid #fff9e9;touch-action:none}.expedition-stick i{position:absolute;left:35px;top:35px;width:36px;height:36px;background:#fff9e9d9;border-radius:50%;pointer-events:none}#expedition-action{position:absolute;bottom:max(45px,env(safe-area-inset-bottom));right:max(22px,env(safe-area-inset-right));min-height:54px;padding:14px 20px}.expedition-camera{position:absolute;right:16px;top:80px;display:flex;gap:8px}.expedition-camera button{min-width:44px;min-height:44px;border-radius:50%;background:#fff9e9}#expedition-note{position:absolute;left:50%;bottom:165px;transform:translateX(-50%);max-width:min(550px,90vw);background:#fff9e9e8;border-radius:18px;padding:8px 16px;font-size:14px}#expedition-note:empty{display:none}#expedition-dialog{position:absolute;right:20px;bottom:20px;width:min(380px,calc(100vw - 40px));max-height:70dvh;overflow:auto;background:#fff9e9f5;border-radius:24px;padding:24px;box-shadow:0 8px 24px #3359443a}#expedition-dialog[hidden]{display:none}@media(max-height:500px){.expedition-title{padding:8px 14px}.expedition-map{top:87px}.expedition-map canvas{width:150px;height:150px}.expedition-map p{display:none}.expedition-stick{width:90px;height:90px;bottom:18px}.expedition-stick i{left:25px;top:25px}#expedition-note{bottom:18px;max-width:45vw;font-size:12px}#expedition-dialog{max-height:calc(100dvh - 40px);padding:18px}}@media(orientation:portrait){#expedition-dialog{bottom:165px;max-height:60dvh}.expedition-map canvas{width:180px;height:180px}.expedition-title span{font-size:11px}}
#party-photo-preview{display:block}#party-photo-download{display:block;box-sizing:border-box;text-align:center;text-decoration:none;margin-top:12px}

.expedition-controls{position:absolute;left:24px;bottom:28px;color:#315d4e;background:#fff9e9dc;padding:9px 14px;border-radius:20px;font-size:12px;pointer-events:none}@media(pointer:coarse){.expedition-controls{display:none}}@media(hover:hover) and (pointer:fine){.expedition-stick{display:none}}

#expedition-climate{display:block;margin-top:4px;font-size:12px;white-space:nowrap}.expedition-map{top:max(126px,calc(env(safe-area-inset-top) + 110px))}@media(max-height:500px){.expedition-map{top:112px}}
/* Keep the compact header above the quest card on narrow fine/coarse viewports. */
@media(max-width:650px) and (orientation:portrait){.hud{align-items:flex-start;gap:8px}.island-title{min-width:0;padding:9px 10px;gap:0}.island-title .leaf,.island-title small{display:none}.island-title strong{font-size:15px;letter-spacing:1px;white-space:nowrap}.island-title em{font-size:9px;padding:2px 3px}.status{flex-shrink:0}.quest{top:max(87px,calc(var(--safe-top) + 71px));width:170px;max-width:calc(100vw - 222px)}}
@media(max-width:380px) and (orientation:portrait){.island-title em{display:none}.island-title strong{font-size:13px;letter-spacing:0}.status>span{padding:10px 8px;min-width:66px}}

/* Tabletop layout controls keep the established paper-and-sage palette. */
.collection-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:10px 0 16px}.collection-grid button{min-height:44px;padding:10px 12px;background:#edf1df;border:2px solid transparent;border-radius:13px;text-align:left;line-height:1.4}.collection-grid button[aria-pressed="true"]{background:#dbe9ce;border-color:#297966}.collection-grid button small{display:block;font-size:12px;opacity:.75;margin-top:4px}.collection-grid button:disabled{background:#eeeee5}.collection-grid button:hover:not(:disabled){background:#dce9d3}

/* Keep transient messages below the portrait quest and camera/exit controls. */
@media(max-width:650px) and (orientation:portrait){#toast{top:calc(max(13px,env(safe-area-inset-top)) + 187px);max-width:calc(100vw - 32px);font-size:13px;padding:9px 14px;transition:opacity .2s,transform .2s;}}

/* Terrain cells fit within both desktop and touch dialogs. */
.terrain-dialog .land-editor{grid-template-columns:minmax(0,326px) minmax(0,1fr)}
.terrain-dialog .land-grid{grid-template-columns:repeat(var(--terrain-columns,7),minmax(0,1fr))!important;gap:3px}
.terrain-dialog .land-grid button{min-width:0;width:100%;height:auto;aspect-ratio:1;min-height:0;font-size:19px}
@media(max-width:620px) and (orientation:portrait){dialog.terrain-dialog{width:96vw;max-width:none;padding:20px 14px}.terrain-dialog .land-editor{grid-template-columns:minmax(0,1fr);gap:14px}.terrain-dialog .land-editor>div{min-width:0}.terrain-dialog .name-input{width:100%;max-width:100%}}

/* Keep the island visible while terrain changes are still only a preview. */
dialog.terrain-dialog{position:fixed;inset:80px 18px auto auto;margin:0;width:370px;max-height:calc(100dvh - 100px);padding:22px;background:#fffbedf5}
dialog.terrain-dialog::backdrop{background:transparent;backdrop-filter:none}
.terrain-dialog .land-editor{grid-template-columns:minmax(0,1fr);gap:12px}.terrain-dialog h2{font-size:23px}.terrain-dialog .eyebrow{display:none}.terrain-dialog .land-editor>.land-actions>p:first-child{font-size:14px}.terrain-locations summary{cursor:pointer;padding:12px 0;font-weight:600}.terrain-locations[open] .land-compass{margin-top:8px}.terrain-dialog #terrain-back{margin-top:12px;font-size:13px;min-height:44px}
@media(max-width:620px) and (orientation:portrait){dialog.terrain-dialog{inset:auto 8px 8px 8px;width:auto;max-height:42dvh;padding:16px}.terrain-dialog h2{font-size:20px;margin:0 28px 6px 0}.terrain-dialog .land-editor{gap:4px}.terrain-dialog .land-pair{margin:4px 0}.terrain-dialog .land-actions .fineprint{display:none}}
@media(orientation:landscape) and (max-height:560px){dialog.terrain-dialog{inset:8px 8px 8px auto;width:320px;max-height:calc(100dvh - 16px)}.terrain-dialog .land-editor{max-height:none;overflow:visible;grid-template-columns:minmax(0,1fr)}}

.terrain-designing .quest,.terrain-designing .toolbar,.terrain-designing .action-wrap,.terrain-designing .camera-controls,.terrain-designing .location{visibility:hidden}
@media(max-width:620px) and (orientation:portrait){.terrain-dialog #panel-content>p.fineprint,.terrain-dialog .land-actions>p:first-child,.terrain-dialog .land-actions>label{display:none}.terrain-dialog .land-actions>p[role=status]{font-size:13px;margin:6px 0}.terrain-dialog #terrain-apply{margin-top:3px}.terrain-dialog .land-actions .name-input{margin:0}.terrain-dialog .terrain-locations summary{padding:8px 0}}

#expedition-run{position:absolute;right:max(25px,env(safe-area-inset-right));bottom:max(116px,calc(env(safe-area-inset-bottom) + 80px));min-height:44px;min-width:68px;border-radius:24px;background:#fff9e9;touch-action:none}#expedition-run.active{background:#d9e8ba}@media(hover:hover) and (pointer:fine){#expedition-run{display:none}}@media(max-width:500px){.expedition-camera{display:grid;grid-template-columns:repeat(2,44px)}}
.terrain-dialog .land-materials{font-size:13px;margin:8px 0}.terrain-dialog .land-materials small{display:block}.terrain-dialog #land-type{margin-top:6px}.terrain-submit{position:sticky;bottom:-22px;padding:8px 0;background:#fffbed}.terrain-dialog .terrain-submit #terrain-back{margin-top:6px}@media(max-width:620px) and (orientation:portrait){.terrain-submit{bottom:-16px}.terrain-dialog .land-materials small{display:none}.terrain-dialog .terrain-submit{display:grid;grid-template-columns:1fr 1fr;gap:8px}.terrain-dialog .terrain-submit #terrain-back{margin-top:3px}.terrain-dialog .terrain-submit button{font-size:13px}}

.terrain-submit>p[role=status]{font-size:13px;margin:0 0 8px;grid-column:1/-1}@media(max-width:620px) and (orientation:portrait){.terrain-dialog .terrain-submit{row-gap:0}.terrain-dialog .terrain-submit>p[role=status]{margin:0 0 4px}}
.island-nudge{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:14px 0}.terrain-dialog #island-planning{margin:0 0 8px}.terrain-dialog #island-category,.terrain-dialog #island-object{margin:8px 0}.terrain-dialog details{margin:8px 0}

/* On-demand local decision assistant: keep actions reachable with long result lists. */
dialog.nanojev-dialog{width:min(560px,90vw);padding:24px}.nanojev-dialog p{margin:10px 0}.nanojev-dialog .name-input{margin:8px 0}.nanojev-dialog .wide{margin-top:8px;min-height:44px;padding:10px 14px}.nanojev-dialog #nanojev-results{max-height:28dvh;overflow:auto;padding:0 3px 4px}.nanojev-dialog .eyebrow{padding-right:22px;font-size:10px}.nanojev-dialog #nanojev-back{margin-top:10px}
/* Task-oriented island guide and unobtrusive navigation. */
:root{--map-blue:#176d9b;--map-paper:#fffbed;--map-line:#c5d5bd;--map-ink:#31594f}
.island-map-dialog{max-width:1080px;width:calc(100vw - 28px)}
.map-layout{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(230px,1fr);gap:22px;align-items:start}
.map-stage{position:relative;overflow:hidden;border-radius:18px;background:#a9d6cd;border:1px solid var(--map-line)}
.map-stage canvas{display:block;width:100%;height:auto;max-width:none}
#map-markers{position:absolute;inset:0;pointer-events:none}.map-marker{pointer-events:auto;position:absolute;transform:translate(-50%,-50%);width:28px;height:28px;min-height:28px;padding:0;border:2px solid white;border-radius:50%;background:var(--map-ink);color:white;box-shadow:0 1px 4px #2345;font-size:17px;line-height:24px}
.map-marker:focus-visible{outline:4px solid #efb74e;z-index:2}.map-tabs{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:12px}.map-tabs button{flex:1;min-width:45px;padding:10px 6px}.map-tabs [aria-pressed=true]{background:var(--map-ink);color:white}
.map-task{padding:14px;background:var(--map-paper);border:1px solid var(--map-line);border-radius:14px;margin-bottom:10px}.map-task p{font-size:14px;line-height:1.65;margin:7px 0}.map-task>div{display:flex;flex-wrap:wrap;gap:6px}.map-task button{padding:10px;font-size:13px;min-height:42px}.map-place{display:block;width:100%;margin-bottom:7px;text-align:left;padding:12px}.map-legend{font-size:14px}#map-selected{font-weight:700;min-height:1.7em}
#navigation-hud{position:fixed;right:18px;bottom:180px;z-index:8;width:190px;border-radius:15px;overflow:hidden;background:var(--map-paper);box-shadow:0 3px 14px #1233;color:var(--map-ink)}#navigation-hud[hidden]{display:none}#nav-open{display:block;width:100%;padding:0;background:transparent;border:0;text-align:left}#nav-mini{width:100%;height:100px;object-fit:cover}#nav-label,#nav-step{display:block;padding:4px 10px}#nav-label{font-weight:700}#nav-step{font-size:12px}#nav-stop{width:100%;border-radius:0;padding:6px;background:#e5ecd9}
.life-category{margin:22px 0}.life-category>h3{font-size:18px;border-bottom:1px solid var(--map-line);padding-bottom:8px}.life-menu button{min-height:84px}.life-menu button small{line-height:1.5}
@media(max-width:650px){.map-layout{grid-template-columns:1fr;gap:12px}.island-map-dialog{padding:22px 16px;width:calc(100vw - 16px)}.map-marker{width:25px;height:25px;min-height:25px;font-size:15px}.map-tabs{position:sticky;top:0;background:var(--map-paper);padding:7px 0;z-index:3}#navigation-hud{width:128px;right:8px;bottom:190px}#nav-mini{height:70px}#nav-label{font-size:12px}.map-legend{font-size:12px}.map-task>div button{flex:1}.life-category .life-menu{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Language preview: native select supports keyboard and mobile pickers. */
.language-select{display:block;width:100%;min-height:44px;padding:10px 12px;margin:8px 0;border:1px solid #789c8b;border-radius:12px;background:#fffdf5;color:#233f37;font:inherit}.language-preview{line-height:1.5}.welcome-copy .language-preview{margin:8px 0 16px}html[lang="ko"] body{word-break:keep-all}html[lang="en"] .toolbar button{overflow-wrap:anywhere}

.visit-entry{position:fixed;right:14px;top:145px;z-index:15;padding:9px 14px;border-radius:18px;background:#fff9e9;color:#255f54;text-decoration:none;font-weight:700}

/* Keep the visit link below all four camera controls and above the home exit. */
.leave-home{top:198px}
