:root{--ink:#2e4541;--muted:#7a8982;--cream:#faf8f0;--green:#496d60;--line:#dfe4dc;--lavender:#9281b0;--mint:#c2ddd0;--shadow:0 8px 40px #344b4520;--font:-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic",sans-serif}*{box-sizing:border-box}body{margin:0;font:14px/1.6 var(--font);color:var(--ink);background:#cbdcc7;overflow:hidden}button,select,textarea{font:inherit;color:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;border:0;background:none}button:disabled{cursor:default;opacity:.45}a{color:var(--green)}button:focus-visible,a:focus-visible,select:focus-visible,textarea:focus-visible,canvas:focus-visible{outline:3px solid #a78cc8;outline-offset:4px}[hidden]{display:none!important}.icon-defs{position:absolute;width:0;height:0;overflow:hidden}svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.world-shell{position:relative;width:100vw;height:100dvh;min-height:520px;overflow:hidden}#world{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;outline:none}.scene-vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(#4964680d,transparent 30%,transparent 75%,#3d56452b)}.glass{background:#fffdf3ed;border:1px solid #ffffffb0;box-shadow:var(--shadow);backdrop-filter:blur(18px)}.topbar{position:absolute;left:32px;right:32px;top:26px;display:flex;justify-content:space-between;align-items:center;gap:16px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink);text-shadow:0 1px 8px #ffffff70}.brand strong{font-size:25px;letter-spacing:-1px;display:block;line-height:1.2}.brand small{font-size:8px;letter-spacing:2px;display:block;margin-top:7px}.brand-mark{width:43px;height:43px;display:grid;place-items:center;border:1px solid #ffffffb0;border-radius:16px;background:#fff9;transform:rotate(-7deg);box-shadow:0 5px 20px #344b4510}.brand-mark svg{width:27px;height:27px;color:var(--green)}.top-actions{display:flex;gap:10px;align-items:center}.solo-pill{display:flex;align-items:center;gap:7px;background:#f8fff8a6;padding:9px 13px;border-radius:20px;font-size:10px}.solo-pill i{height:5px;width:5px;background:#7a9b78;border-radius:50%}.pill-button{border-radius:20px;background:#fffdf3e8;padding:10px 15px;font-size:11px;font-weight:650}.pill-button span{color:#90978a}.circle-button{width:39px;height:39px;border-radius:50%;background:#fffdf3e8;display:grid;place-items:center;box-shadow:0 2px 15px #263f3310}.circle-button svg{width:18px;height:18px}.circle-button[aria-pressed=true]{background:var(--green);color:white}.route-panel{position:absolute;top:113px;left:32px;width:264px;border-radius:24px;padding:20px}.route-heading{display:flex;align-items:center;gap:11px;text-align:left;width:100%;padding:0}.course-badge{height:42px;width:37px;display:grid;place-items:center;border:1px solid #b9c8b9;border-radius:11px;font-size:20px;font-weight:600;color:var(--green);background:#e8efe3}.route-heading-copy{flex:1;min-width:0}.route-heading-copy small{display:block;font-size:9px;color:var(--muted);letter-spacing:.5px}.route-heading-copy strong{font-size:15px;letter-spacing:-.5px}.route-heading>svg{width:18px;height:18px;color:#89998e}.mini-map-wrap{position:relative;margin-top:15px;border-radius:13px;background:#eaf0e5;overflow:hidden}.mini-map-wrap svg{display:block;width:100%;height:126px;stroke:none}.north{position:absolute;right:11px;top:8px;font-size:8px;color:#91a18f;letter-spacing:1px}.route-meta{display:flex;justify-content:space-between;align-items:center;font-size:10px;margin:9px 1px 0}.route-meta>span{font-weight:600;letter-spacing:.3px}.text-link{font-size:10px;text-decoration:underline;text-underline-offset:3px;color:#7c8c7d;padding:0}.route-divider{height:1px;background:#e1e6dc;margin:17px 0}.distance-row{display:flex;justify-content:space-between;font-size:10px;color:var(--muted)}.distance-row>span:last-child{color:var(--green);font-weight:650}.distance-number{display:flex;align-items:baseline;gap:5px;margin:5px 0 13px}.distance-number strong{font-size:32px;line-height:1.2;letter-spacing:-1px;font-weight:500;font-variant-numeric:tabular-nums}.distance-number>span{font-size:12px}.distance-number small{font-size:11px;color:#9ba294;margin-left:auto}.progress{height:5px;border-radius:5px;background:#dee6d8;position:relative;overflow:hidden}#progress-fill{height:100%;width:0;background:var(--green);transition:width .4s}.milestone-ticks{position:absolute;inset:0;display:flex;justify-content:space-evenly}.milestone-ticks i{height:5px;width:2px;background:#fff9}.next-row,.time-row{display:flex;justify-content:space-between;font-size:9px;margin-top:11px;color:var(--muted)}.next-row strong{color:#7e6f9c;font-weight:600}.time-row{margin-top:6px}.time-row span:last-child{font-variant-numeric:tabular-nums}.scene-tools{position:absolute;top:115px;right:32px;display:flex;flex-direction:column;align-items:flex-end;gap:12px}.tool-group{padding:10px 7px 7px;border-radius:19px;display:flex;flex-direction:column;gap:4px;width:74px}.tool-label{text-align:center;font-size:8px;color:var(--muted);padding-bottom:3px}.scene-tool{display:flex;flex-direction:column;align-items:center;gap:4px;border-radius:12px;padding:10px 3px;font-size:9px;transition:background .2s;color:#829184}.scene-tool svg{width:20px;height:20px}.scene-tool.active{background:#e4ecdf;color:var(--green)}.scene-tool:hover{background:#eef2e8}.theme-button{border-radius:17px;min-width:74px;display:flex;justify-content:center;gap:8px;align-items:center;padding:12px;font-size:10px}.theme-button svg{width:17px;height:17px}.welcome{position:absolute;right:132px;top:28%;width:300px;border-radius:24px;padding:27px}.eyebrow{font-size:8px;letter-spacing:1.8px;font-weight:600;color:#88967b}.welcome h1{font-size:25px;letter-spacing:-.8px;margin:12px 0 10px;line-height:1.4}.welcome p{color:var(--muted);font-size:12px;line-height:1.9;margin:0 0 20px}.primary{border:0;border-radius:12px;background:var(--green);color:#fff;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 20px;text-decoration:none;font-size:12px;font-weight:600;cursor:pointer;min-height:44px}.primary:hover{background:#36594e}.welcome .primary{width:100%}.text-button{display:block;color:#87917d;font-size:10px;margin:8px auto 0;padding:7px}.journey-status{position:absolute;bottom:155px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;background:#fbfff4c9;backdrop-filter:blur(12px);padding:7px 16px;border:1px solid #fff6;border-radius:20px;font-size:11px;white-space:nowrap;color:#5a7360;max-width:90vw}.journey-status i{width:4px;height:4px;border-radius:50%;background:#91a88b}.control-dock{position:absolute;bottom:54px;left:50%;transform:translateX(-50%);border-radius:24px;padding:14px 18px;display:flex;align-items:center;gap:16px;max-width:calc(100vw - 64px);width:max-content}.movement-controls{display:flex;align-items:center;gap:14px}.walk-button{display:flex;align-items:center;justify-content:center;gap:10px;min-width:155px;height:53px;border-radius:15px;background:var(--green);color:#fff;font-size:13px;font-weight:600;padding:0 18px;box-shadow:0 5px 15px #365b3f1c}.walk-button:hover{background:#3e5f53}.walk-button svg{width:18px;height:18px;fill:currentColor;stroke-width:1.5}.walk-button.is-walking svg{fill:none;stroke-width:3}.speed-control{min-width:138px}.speed-control label{display:block;font-size:8px;color:var(--muted);margin-bottom:4px}.speed-control select{max-width:175px;width:100%;font-size:11px;border:0;background:transparent;padding:0 14px 0 0;cursor:pointer}.dock-divider{height:36px;width:1px;background:#e0e4d8}.experience-actions{display:flex;gap:7px}.action-button{position:relative;min-width:62px;min-height:53px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;border-radius:13px;padding:5px 6px;color:#627462}.action-button svg{width:21px;height:21px}.action-button span{font-size:9px;white-space:nowrap}.action-button:hover,.action-button[aria-pressed=true]{background:#eaf0e4}.action-button b{position:absolute;top:0;right:4px;width:14px;height:14px;background:#9381af;color:white;border-radius:50%;font-size:8px;line-height:14px}.bottom-caption{position:absolute;bottom:18px;left:32px;right:32px;display:flex;align-items:center;justify-content:space-between;gap:15px;color:#395c47cf;font-size:8px;text-shadow:0 1px 6px #fff7}.bottom-caption button{font-size:8px;text-decoration:underline;text-underline-offset:2px}.bottom-caption a{color:inherit;text-decoration:none}.loading{position:absolute;inset:0;background:#eaf0e2;z-index:10;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:30px;text-align:center}.loading p{font-size:14px;color:#82977b;max-width:420px}.loading-island{width:68px;height:68px;display:grid;place-items:center;background:#d4dfcb;border-radius:28px;font-size:36px;color:#8da77b;animation:breathe 2s ease-in-out infinite}.loading .primary{min-width:160px}@keyframes breathe{50%{transform:translateY(-7px) rotate(10deg)}}dialog{border:1px solid #fff;border-radius:26px;background:#fbfaf5;color:var(--ink);padding:28px;box-shadow:0 25px 100px #1e382d44;max-width:570px;width:calc(100% - 36px);max-height:calc(100dvh - 60px);overflow:auto}dialog::backdrop{background:#24372e66;backdrop-filter:blur(6px)}.map-dialog{max-width:780px}.dialog-header{display:flex;align-items:flex-start;justify-content:space-between;gap:15px}.dialog-header h2{font-size:24px;letter-spacing:-.7px;line-height:1.4;margin:9px 0 5px}.close-button{width:30px;height:30px;flex-shrink:0;display:grid;place-items:center;border:1px solid #dce1d5;border-radius:50%;font-size:21px;color:#83917e}.close-button:hover{background:#eaf0e2}dialog p{font-size:12px;line-height:1.9;color:var(--muted)}.large-map-wrap{position:relative;border-radius:18px;background:#e9f0e2;margin:20px 0;overflow:hidden}.large-map-wrap svg{display:block;stroke:none;width:100%;height:auto}.large-map-wrap .north{font-size:11px;right:20px;top:16px}.map-stat-row{display:flex;gap:50px;margin:17px 0}.map-stat-row>div{display:flex;flex-direction:column;gap:5px}.map-stat-row span{font-size:10px;color:var(--muted)}.map-stat-row strong{font-size:22px;font-weight:500}.notice{padding:13px 15px;border-radius:12px;background:#edf0e5;color:#7a866c;font-size:11px!important}.subtle{font-size:10px!important}.source-links{display:flex;flex-wrap:wrap;gap:10px 18px;border-top:1px solid #e2e6dc;padding-top:15px;margin-top:17px}.source-links a{font-size:10px;text-underline-offset:3px}.stamps{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin:24px 0 5px}.stamp{text-align:center;border:1px solid #e2e6dc;border-radius:18px;padding:21px 12px;background:#f3f4ec}.stamp.earned{border-color:#b9cdb3;background:#e8f0e0}.stamp-icon{width:65px;height:65px;border:1px dashed #bfc8b5;border-radius:50%;display:grid;place-items:center;margin:0 auto 12px;color:#b2bdaa;font-size:28px}.earned .stamp-icon{background:#d5e5cb;color:#5d7e55;border:1px solid #9bb18d}.stamp h3{font-size:13px;margin:8px 0}.stamp p{font-size:10px;margin:4px 0}.stamp small{font-size:9px;color:#88957b}.note-location{display:block;font-size:10px;color:var(--green);padding:10px 0}textarea{width:100%;resize:vertical;min-height:100px;max-height:180px;border:1px solid #dce2d4;background:white;border-radius:13px;padding:13px;font-size:12px}.note-foot{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-top:10px}.note-foot>span{font-size:9px;color:#929b88}.notes-list{border-top:1px solid var(--line);margin-top:25px;padding-top:10px}.note-card{border-bottom:1px solid #e5e9df;padding:12px 0}.note-card small{color:#929e86;font-size:9px}.note-card p{white-space:pre-wrap;overflow-wrap:anywhere;color:#51624e;margin:8px 0}.postcard{width:100%;border-radius:14px;display:block;margin:20px 0;background:#dfe8d5;min-height:100px}.dialog-actions{display:flex;gap:10px;margin-top:20px;justify-content:flex-end;flex-wrap:wrap}.secondary{padding:11px 15px;min-height:42px;background:#eef1e8;border:1px solid #d9e1d0;border-radius:11px;font-size:11px;display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.secondary:hover{background:#e4e9dc}.setting-row{display:flex;justify-content:space-between;align-items:center;padding:16px 0}.setting-row strong{font-size:13px}.setting-row p{font-size:10px;margin:3px 0}.switch{width:38px;height:23px;background:#d6ddcf;border-radius:20px;padding:3px;flex:none}.switch span{display:block;width:17px;height:17px;background:white;border-radius:50%;transition:transform .2s}.switch[aria-checked=true]{background:var(--green)}.switch[aria-checked=true] span{transform:translateX(15px)}dialog h3{font-size:13px;margin-top:22px}.settings-buttons{display:flex;flex-direction:column;gap:9px;margin:14px 0 20px}.settings-buttons .text-button{margin:0}.toast{position:fixed;left:50%;bottom:165px;transform:translateX(-50%);background:#304f41eF;color:#fff;border-radius:14px;padding:12px 22px;font-size:12px;z-index:30;box-shadow:var(--shadow);max-width:90vw;text-align:center;width:max-content}.reduce-motion *, .reduce-motion *:before{animation:none!important;transition:none!important}
@media(max-width:1100px){.topbar{left:24px;right:24px;top:22px}.route-panel{left:24px;width:236px;padding:17px}.scene-tools{right:24px}.control-dock{gap:10px;padding:12px 14px;max-width:calc(100vw - 32px)}.movement-controls{gap:10px}.walk-button{min-width:140px;padding:0 13px;font-size:12px}.speed-control{min-width:116px}.speed-control select{max-width:155px;font-size:10px}.action-button{min-width:53px}.experience-actions{gap:3px}.welcome{right:117px;width:280px}.bottom-caption{left:24px;right:24px;font-size:7px}.bottom-caption>span{display:none}}
@media(max-width:760px){.topbar{left:16px;right:16px;top:18px;gap:8px;align-items:flex-start}.brand{gap:8px}.brand-mark{height:34px;width:34px;border-radius:12px}.brand-mark svg{width:23px;height:23px}.brand strong{font-size:19px}.brand small{font-size:6px;letter-spacing:1.3px;margin-top:5px}.top-actions{gap:6px}.solo-pill{display:none}.pill-button{padding:7px 9px;font-size:9px;height:33px}.circle-button{height:33px;width:33px}.circle-button svg{height:16px;width:16px}.route-panel{top:82px;left:16px;width:182px;border-radius:18px;padding:12px}.course-badge{height:32px;width:29px;font-size:16px;border-radius:8px}.route-heading{gap:8px}.route-heading-copy small{font-size:7px}.route-heading-copy strong{font-size:12px}.route-heading>svg{width:15px;height:15px}.mini-map-wrap{margin-top:10px}.mini-map-wrap svg{height:80px}.route-meta{font-size:8px;margin-top:5px}.text-link{font-size:8px}.route-divider{margin:10px 0}.distance-row{font-size:8px}.distance-number{margin:4px 0 8px;gap:3px}.distance-number strong{font-size:25px}.distance-number>span{font-size:10px}.distance-number small{font-size:8px}.next-row{font-size:8px;margin-top:7px}.time-row{display:none}.scene-tools{top:83px;right:16px;gap:9px}.tool-group{width:51px;padding:5px;border-radius:15px;gap:2px}.tool-label{display:none}.scene-tool{padding:9px 2px;gap:3px}.scene-tool svg{width:18px;height:18px}.scene-tool span{font-size:7px}.theme-button{min-width:51px;padding:10px 6px;gap:4px;font-size:8px;border-radius:14px}.theme-button svg{width:15px;height:15px}.welcome{top:auto;bottom:210px;left:50%;right:auto;transform:translateX(-50%);width:min(310px,calc(100% - 40px));padding:21px;border-radius:20px}.welcome h1{font-size:23px;margin-top:8px}.welcome p{font-size:11px;margin-bottom:14px}.welcome .text-button{margin-top:4px}.control-dock{bottom:47px;left:12px;right:12px;transform:none;width:auto;max-width:none;flex-direction:column;gap:11px;padding:12px;border-radius:22px}.movement-controls{width:100%;justify-content:space-between;gap:12px}.walk-button{height:44px;min-width:0;flex:1;font-size:12px;border-radius:13px}.speed-control{min-width:0;width:132px}.speed-control label{font-size:7px}.speed-control select{font-size:9px;padding-right:2px}.dock-divider{display:none}.experience-actions{width:100%;justify-content:space-between;gap:2px}.action-button{min-width:0;flex:1;min-height:42px;padding:2px;gap:5px}.action-button svg{width:20px;height:20px}.action-button span{font-size:8px}.journey-status{bottom:184px;font-size:9px;padding:6px 12px;max-width:94vw;white-space:normal;text-align:center}.bottom-caption{left:14px;right:14px;bottom:10px;justify-content:center;gap:2px;flex-wrap:wrap;font-size:7px;line-height:1.3}.bottom-caption button{font-size:7px;flex-basis:100%;text-align:center}.bottom-caption a{font-size:6px}.toast{bottom:196px;font-size:11px;padding:10px 17px}.dialog-header h2{font-size:22px}.dialog-header .eyebrow{font-size:7px}dialog{padding:22px;border-radius:22px;max-height:calc(100dvh - 30px)}.map-stat-row{gap:30px}.map-stat-row strong{font-size:20px}.note-foot{flex-direction:column;align-items:stretch;gap:10px}.note-foot .primary{width:100%}.dialog-actions>.primary,.dialog-actions>.secondary{flex:1}.source-links{gap:10px}.stamp{padding:17px 10px}.stamp h3{font-size:12px}}
@media(max-height:680px) and (min-width:761px){.route-panel{top:97px;padding:15px}.mini-map-wrap svg{height:88px}.time-row{display:none}.route-divider{margin:10px 0}.scene-tools{top:97px}.welcome{top:23%;padding:22px}.control-dock{bottom:44px}.journey-status{bottom:138px}.bottom-caption{bottom:14px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media(max-width:760px){.mini-map-wrap{display:none}.route-meta{margin-top:9px}.route-panel{padding:12px}.bottom-caption{font-size:9px;bottom:7px;gap:2px}.bottom-caption button{font-size:8px}.bottom-caption a{font-size:8px}.action-button span{font-size:9px}.scene-tool span{font-size:8px}}

/* Room presence: counts are shown only after a server welcome. */
.room-chip{display:flex;align-items:center;gap:7px;background:#f8fff8dc;padding:9px 13px;border-radius:20px;font-size:10px;max-width:250px;box-shadow:0 2px 15px #263f3310}.room-chip i{height:6px;width:6px;flex:none;background:#9a9b91;border-radius:50%}.room-chip[data-status="connected"] i{background:#5d8b54}.room-chip[data-status="connecting"] i,.room-chip[data-status="reconnecting"] i{background:#ba9763}.room-chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.room-status-panel{display:flex;justify-content:space-between;align-items:center;gap:15px;background:#eaf0e3;padding:14px 16px;border-radius:13px;margin-top:20px;font-size:12px}.room-status-panel strong{white-space:nowrap;font-variant-numeric:tabular-nums;font-size:20px}.room-fields{display:grid;grid-template-columns:110px 1fr;gap:14px;margin-top:20px}.room-fields label{display:flex;flex-direction:column;gap:6px;font-size:11px}.room-fields input{min-width:0;width:100%;padding:11px 12px;background:white;border:1px solid #dce2d4;border-radius:10px;font:inherit;color:var(--ink)}.room-fields input:focus-visible{outline:3px solid #a78cc8;outline-offset:2px}.room-actions .text-button{width:100%;margin:0}.welcome .secondary{width:100%;margin-top:8px}.peer-labels{position:absolute;inset:0;pointer-events:none;overflow:hidden}.peer-label{position:absolute;transform:translate(-50%,-100%);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:#fffdf3d9;color:#385947;border:1px solid #fff9;padding:3px 8px;border-radius:10px;font-size:10px;box-shadow:0 2px 8px #263f3310}
@media(max-width:760px){.room-chip{position:absolute;right:0;top:43px;max-width:200px;padding:6px 10px;font-size:9px;min-height:29px}.scene-tools{top:119px}.room-fields{grid-template-columns:88px 1fr;gap:10px}.room-status-panel{padding:12px;font-size:11px}.room-status-panel strong{font-size:18px}.room-actions{gap:8px}.room-actions .primary,.room-actions .secondary{font-size:11px;padding:10px 12px}.peer-label{font-size:9px;max-width:95px}.welcome{bottom:209px}.welcome .secondary{min-height:35px;padding:7px 12px}.welcome p{margin-bottom:12px}}

/* Leave the trail running while its dashboard is tucked away. */
.scenery-only [data-dashboard]{visibility:hidden;pointer-events:none}
.scenery-only .bottom-caption{justify-content:flex-end}
.dashboard-button{width:74px;min-height:54px;padding:9px 6px;border-radius:17px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;font-size:9px;line-height:1.4}
.dashboard-button svg{width:19px;height:19px}
.dashboard-button:hover{background:#edf3e8}
.scenery-controls{position:absolute;top:max(26px,env(safe-area-inset-top));right:max(32px,env(safe-area-inset-right));border-radius:18px;display:flex;align-items:center;padding:5px;z-index:2}
.scenery-controls button{min-height:42px;display:flex;align-items:center;justify-content:center;gap:8px;padding:9px 12px;font-size:11px;border-radius:13px}
.scenery-controls button:hover{background:#e4ecdf}
.scenery-controls svg{width:18px;height:18px}
#scenery-play{min-width:42px;color:var(--green);border-right:1px solid var(--line);border-radius:13px 0 0 13px}
#scenery-play svg{fill:currentColor}
#scenery-play.is-walking svg{fill:none;stroke-width:3}
.nickname-field{display:flex;flex-direction:column;gap:6px;min-width:0}
.nickname-field>label{font-size:11px}
.nickname-input{display:flex;align-items:stretch;gap:6px;min-width:0}
.nickname-input input{flex:1;min-width:0}
.nickname-reroll{display:flex;align-items:center;justify-content:center;gap:5px;padding:9px;border:1px solid #d9e1d0;border-radius:10px;background:#eef1e8;font-size:10px;white-space:nowrap;flex:none}
.nickname-reroll svg{width:16px;height:16px}
.nickname-reroll:hover{background:#e4e9dc}
.nickname-feedback{color:var(--green);font-size:11px;margin:5px 0}
.nickname-feedback:empty{display:none}
@media(max-width:760px){.dashboard-button{width:51px;min-height:51px;font-size:8px;border-radius:14px}.scenery-controls{top:max(18px,env(safe-area-inset-top));right:max(16px,env(safe-area-inset-right))}.scenery-controls button{min-height:44px}.scenery-only .bottom-caption{justify-content:center}}
@media(max-width:480px){.room-fields{grid-template-columns:1fr}.room-fields>label input{max-width:110px}.nickname-reroll{padding:9px 12px}.nickname-input input{font-size:14px}}

/* The Toss WebView starts below its native status/navigation bars. Adding the
   device's top inset again leaves an empty strip, so only side/bottom insets
   apply here. Keep the header, room badge and trail tools spaced together. */
[data-platform="toss"] .world-shell{min-height:0;height:100dvh}
[data-platform="toss"] .topbar{top:26px;left:calc(32px + var(--olle-safe-left,0px));right:calc(32px + var(--olle-safe-right,0px))}
[data-platform="toss"] .route-panel{top:113px}
[data-platform="toss"] .scene-tools{top:115px}
[data-platform="toss"] .control-dock{bottom:calc(54px + var(--olle-safe-bottom,0px))}
[data-platform="toss"] .journey-status{bottom:calc(155px + var(--olle-safe-bottom,0px))}
[data-platform="toss"] .bottom-caption{bottom:calc(18px + var(--olle-safe-bottom,0px))}
[data-platform="toss"] .scenery-controls{top:26px;right:calc(32px + var(--olle-safe-right,0px))}
[data-platform="toss"] dialog{max-height:calc(100dvh - 30px - var(--olle-safe-bottom,0px))}
@media(max-width:760px){
  [data-platform="toss"] .topbar{top:12px;left:calc(16px + var(--olle-safe-left,0px));right:calc(16px + var(--olle-safe-right,0px))}
  [data-platform="toss"] .route-panel{top:76px}
  [data-platform="toss"] .scene-tools{top:113px}
  [data-platform="toss"] .control-dock{bottom:calc(47px + var(--olle-safe-bottom,0px))}
  [data-platform="toss"] .journey-status{bottom:calc(184px + var(--olle-safe-bottom,0px))}
  [data-platform="toss"] .bottom-caption{bottom:calc(7px + var(--olle-safe-bottom,0px))}
  [data-platform="toss"] .welcome{bottom:calc(209px + var(--olle-safe-bottom,0px))}
  [data-platform="toss"] .toast{bottom:calc(196px + var(--olle-safe-bottom,0px))}
  [data-platform="toss"] .scenery-controls{top:12px;right:calc(16px + var(--olle-safe-right,0px))}
}

/* Installed apps have no Toss bar: the OS insets apply once. Capacitor 8's
   native SystemBars inset handling also covers older Android WebViews. */
[data-platform="native"]{--olle-safe-top:env(safe-area-inset-top,0px);--olle-safe-right:env(safe-area-inset-right,0px);--olle-safe-bottom:env(safe-area-inset-bottom,0px);--olle-safe-left:env(safe-area-inset-left,0px);color-scheme:light}
[data-platform="native"] .world-shell{min-height:0;height:100dvh}
[data-platform="native"] .topbar{top:calc(26px + var(--olle-safe-top));left:calc(32px + var(--olle-safe-left));right:calc(32px + var(--olle-safe-right))}
[data-platform="native"] .route-panel{top:calc(113px + var(--olle-safe-top));left:calc(32px + var(--olle-safe-left))}
[data-platform="native"] .scene-tools{top:calc(115px + var(--olle-safe-top));right:calc(32px + var(--olle-safe-right))}
[data-platform="native"] .control-dock{bottom:calc(54px + var(--olle-safe-bottom))}
[data-platform="native"] .journey-status{bottom:calc(155px + var(--olle-safe-bottom))}
[data-platform="native"] .bottom-caption{bottom:calc(18px + var(--olle-safe-bottom))}
[data-platform="native"] .scenery-controls{top:calc(26px + var(--olle-safe-top));right:calc(32px + var(--olle-safe-right))}
[data-platform="native"] dialog{max-height:calc(100dvh - 30px - var(--olle-safe-top) - var(--olle-safe-bottom))}
[data-platform="native"] .nickname-input input[readonly]{cursor:default;background:#f6f8f1}
@media(max-width:760px){
  [data-platform="native"] .topbar{top:calc(12px + var(--olle-safe-top));left:calc(16px + var(--olle-safe-left));right:calc(16px + var(--olle-safe-right))}
  [data-platform="native"] .circle-button{width:44px;height:44px}
  [data-platform="native"] .pill-button{height:44px;min-width:52px}
  [data-platform="native"] .room-chip{top:54px;min-height:36px}
  [data-platform="native"] .route-panel{top:calc(92px + var(--olle-safe-top));left:calc(16px + var(--olle-safe-left))}
  [data-platform="native"] .scene-tools{top:calc(124px + var(--olle-safe-top));right:calc(16px + var(--olle-safe-right))}
  [data-platform="native"] .control-dock{bottom:calc(47px + var(--olle-safe-bottom))}
  [data-platform="native"] .journey-status{bottom:calc(184px + var(--olle-safe-bottom))}
  [data-platform="native"] .bottom-caption{bottom:calc(7px + var(--olle-safe-bottom))}
  [data-platform="native"] .welcome{bottom:calc(209px + var(--olle-safe-bottom))}
  [data-platform="native"] .toast{bottom:calc(196px + var(--olle-safe-bottom))}
  [data-platform="native"] .scenery-controls{top:calc(12px + var(--olle-safe-top));right:calc(16px + var(--olle-safe-right))}
  [data-platform="native"] .action-button{min-height:44px}
}
