/* Touch presentation of the existing world. POV owns its own full-screen mode. */
hw-mobile-world,.mobile-world-heading{display:none}
@media (max-width:760px), (max-width:1000px) and (max-height:500px) {
  body:has(hw-workspace-frame){height:100dvh;overflow:hidden}
  .appbar{height:calc(64px + env(safe-area-inset-top));min-height:calc(64px + env(safe-area-inset-top));padding:env(safe-area-inset-top) 16px 0;gap:12px;flex:none}
  .appbar .navtoggle,.appbar .wordmark{display:none}
  .appfoot{display:none}
  .appbar .appbrand{min-width:28px;min-height:44px;display:flex;align-items:center}
  .appbar .avatarbtn{width:44px;height:44px;font-size:12px}
  .mobile-world-heading{display:flex;flex-direction:column;border-left:1px solid var(--line);padding-left:13px;line-height:1.4}
  .mobile-world-heading strong{font-size:15px;font-weight:600}
  .mobile-world-heading small{font-size:11px;color:var(--muted)}
  .acctdrop a{display:flex;align-items:center;min-height:44px}
  .shell:not(.observing)>.sidebar,.shell:not(.observing)>.scrim,.shell:not(.observing)>.pane,
  .shell:not(.observing)>.main>.crumb,.shell:not(.observing)>.main>.spacetitle{display:none}
  .shell>.main{position:relative}
  .shell>.main>.view{overflow:hidden;min-height:0}
  .shell:not(.observing)>.main>.tabs{position:absolute;z-index:5;left:12px;top:12px;right:auto;border:1px solid var(--line);border-radius:4px;background:var(--surface);padding:3px;gap:0}
  .shell:not(.observing) .tab{min-height:44px;padding:0 14px;font-size:13px;border:0;border-radius:2px}
  .shell:not(.observing) .tab.active{background:var(--ink);color:var(--page);font-weight:500}
  .world{--mobile-nav:calc(70px + env(safe-area-inset-bottom));--mobile-clock:0px}
  .world.played{--mobile-clock:44px}
  .world:not(.in-pov)>.world-canvas{bottom:calc(var(--mobile-nav) + var(--mobile-clock))}
  .world:not(.in-pov)>hw-mobile-world{display:contents}
  .world:not(.in-pov)>.world-camera{display:none}
  .world:not(.in-pov) .world-hints{display:none}
  .world:not(.in-pov) .world-pointer-hints{display:block}
  .world:not(.in-pov) .world-pointer-hints>div:not(.world-pointer-mode){display:none}
  .world:not(.in-pov)>.world-dock{bottom:calc(var(--mobile-nav) + 44px);max-width:100%;background:var(--surface)}
  /* The compact mobile clock replaces duplicate speed controls; replay stays available. */
  .world:not(.in-pov)>.world-dock .dock-pause,.world:not(.in-pov)>.world-dock .dock-speeds,.world:not(.in-pov)>.world-dock .dock-clock{display:none}
  .world.played:not(.in-pov):has(.dock-scrub){--mobile-clock:80px}
  .mobile-world-nav{position:absolute;z-index:6;bottom:0;left:0;right:0;height:var(--mobile-nav);display:flex;padding:0 12px env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--line)}
  .mobile-world-nav button{position:relative;flex:1;min-width:44px;border:0;background:none;color:var(--muted);font:11px var(--sans);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;cursor:pointer}
  .mobile-world-nav button.active{color:var(--accent)}
  .mobile-world-nav button.active:before{content:"";position:absolute;top:0;width:26px;height:2px;background:var(--accent)}
  hw-mobile-world svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
  .mobile-camera{position:absolute;z-index:2;right:12px;top:78px;display:grid;gap:8px}
  .mobile-camera button{height:44px;width:44px;display:grid;place-items:center;border:1px solid var(--line);border-radius:3px;background:var(--surface);color:var(--ink);font-size:26px;cursor:pointer}
  .mobile-camera button[aria-pressed=true]{color:var(--accent);background:var(--col)}
  .world.mobile-living .mobile-camera{top:auto;bottom:calc(var(--mobile-nav) + var(--mobile-clock) + 92px)}
  .mobile-location-row{position:absolute;z-index:2;left:12px;right:12px;bottom:calc(var(--mobile-nav) + var(--mobile-clock) + 20px);display:flex;gap:6px}
  .mobile-location{flex:1;min-width:0;text-align:left;display:flex;align-items:center;gap:10px;min-height:58px;border:1px solid var(--line);background:var(--surface);border-radius:4px;color:var(--ink);padding:9px 12px}
  .mobile-location>span:nth-child(2){flex:1;min-width:0}.mobile-location strong{display:block;font:500 13px/1.4 var(--sans)}
  .mobile-location small{display:block;font:11px/1.4 var(--sans);color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:3px}
  .mobile-location-dot{height:7px;width:7px;border-radius:50%;background:var(--accent);flex:none}
  .mobile-stop{border:1px solid var(--line);border-radius:3px;background:var(--ink);color:var(--page);font:12px var(--sans);padding:0 10px}
  .mobile-attribution{position:absolute;bottom:calc(var(--mobile-nav) + var(--mobile-clock) + 2px);left:12px;font-size:9px;color:var(--muted);padding:1px 4px;background:#fbfaf7e8;pointer-events:none}
  .world.mobile-living:not(.in-pov)>.world-status{display:none}
  .world:not(.in-pov)>.world-status,.world:not(.in-pov)>.world-choose{left:12px;right:12px;bottom:calc(var(--mobile-nav) + var(--mobile-clock) + 20px);top:auto;transform:none;width:auto;max-width:none;max-height:55%;overflow:auto;padding:16px;gap:12px;font-size:14px;border-radius:4px}
  .world:not(.in-pov)>.world-status .world-status-text{flex:1 1 100%}
  .world:not(.in-pov)>.world-status .world-stop,.world:not(.in-pov)>.world-choose .world-stop{width:100%;min-height:48px}
  .world:not(.in-pov)>.world-controls{left:12px;bottom:calc(var(--mobile-nav) + var(--mobile-clock) + 90px);padding:0;border:0;background:none;gap:8px;flex-direction:column;align-items:flex-start;z-index:2}
  .world:not(.in-pov) .world-pad{display:none}
  .world.mobile-pad-open:not(.in-pov) .world-pad{display:grid;grid-template-columns:repeat(3,44px);grid-template-rows:repeat(3,44px)}
  .world:not(.in-pov) .world-pointer-mode{background:var(--surface);padding:3px;border:1px solid var(--line);border-radius:4px;gap:3px;justify-content:flex-start}
  .world:not(.in-pov) .world-pointer-mode button{min-height:44px;min-width:70px;justify-content:center;border:0;font-size:13px}
  .world:not(.in-pov) .world-pointer-mode button.on{background:var(--col);color:var(--accent)}
  .world:not(.in-pov)>.world-note{top:80px;left:12px;right:12px;max-width:none;max-height:50%;overflow:auto;font-size:14px}
  .world .world-over{max-height:calc(100% - 32px);overflow:auto;padding:22px;width:calc(100% - 32px);max-width:440px}
  .world button,.world select,.world summary{min-height:44px}
  .world button:focus-visible,.world summary:focus-visible,.world select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
  /* Native dialogs provide focus containment and block clicks through to terrain. */
  .mobile-world-sheet{position:fixed;inset:auto 0 0;margin:0;width:100%;max-width:none;max-height:calc(100dvh - 80px - env(safe-area-inset-top));padding:0 0 env(safe-area-inset-bottom);border:1px solid var(--line);border-bottom:0;border-radius:14px 14px 0 0;background:var(--surface);color:var(--ink);box-shadow:0 -5px 25px #1b1d1c18;font:14px/1.6 var(--sans);overflow:hidden}
  .mobile-world-sheet[open]{display:flex;flex-direction:column}
  .mobile-world-sheet::backdrop{background:#1b1d1c2b}
  .mobile-world-sheet>header{display:flex;align-items:center;gap:16px;justify-content:space-between;padding:20px 16px 14px;border-bottom:1px solid var(--line);flex:none}
  .mobile-eyebrow{color:var(--accent);font-size:10px;letter-spacing:1.6px}
  .mobile-world-sheet h2{font-size:25px;line-height:1.2;letter-spacing:-.6px;font-weight:500;margin:4px 0 0}
  .mobile-world-sheet>header button{width:44px;min-width:44px;height:44px;border:0;background:none;font-size:25px;color:var(--muted)}
  .mobile-sheet-body{padding:4px 20px 24px;overflow:auto;overscroll-behavior:contain;min-height:0}
  .mobile-sheet-body p{color:var(--muted);margin:14px 0;font-size:14px;overflow-wrap:anywhere}
  .mobile-sheet-body h3{font-size:15px;font-weight:600;margin:18px 0 6px}
  .mobile-sheet-body button{font:14px var(--sans);min-height:48px;cursor:pointer}
  .mobile-primary,.mobile-secondary{display:block;width:100%;border:1px solid var(--line);border-radius:3px;padding:12px;margin:10px 0;background:transparent;color:var(--ink)}
  .mobile-primary{background:var(--ink);color:var(--page);border-color:var(--ink)}
  .mobile-secondary[aria-pressed=true]{border-color:var(--accent);color:var(--accent);background:var(--col)}
  .mobile-sheet-body button:disabled{opacity:.5;cursor:default}
  .mobile-danger{background:none;border:0;color:var(--accent);text-decoration:underline;text-underline-offset:3px}
  .mobile-person{display:flex;gap:12px;align-items:center;text-align:left;width:100%;padding:12px 0;border:0;border-top:1px solid var(--line);background:none;color:var(--ink)}
  .mobile-person>span:nth-child(2){flex:1;min-width:0}.mobile-person strong{font-weight:500}.mobile-person small{display:block;font-size:12px;line-height:1.5;color:var(--muted);margin-top:4px}
  .mobile-person-mark{display:grid;place-items:center;width:36px;height:36px;border:1px solid var(--line);border-radius:50%;background:var(--col);flex:none;font-size:12px}
  .mobile-help{display:grid;grid-template-columns:1fr 2fr;gap:14px 18px;margin:20px 0}.mobile-help dd{margin:0;color:var(--muted)}
  .mobile-sheet-body form{margin:20px 0}.mobile-sheet-body label{display:block}.mobile-sheet-body textarea{display:block;width:100%;font:16px/1.5 var(--sans);padding:10px;border:1px solid var(--line);border-radius:3px;margin:8px 0}
  .mobile-problem{color:var(--accent)!important}.mobile-plan{padding-left:20px}.mobile-plan li{padding:6px}.mobile-plan li.now{color:var(--accent)}.mobile-plan small{display:block;color:var(--muted)}
  .mobile-chronicle{list-style:none;padding:0}.mobile-chronicle li{padding:14px 0;border-bottom:1px solid var(--line)}.mobile-chronicle small{font-size:11px;color:var(--muted)}.mobile-chronicle p{margin:4px 0;color:var(--ink)}
  .mobile-tempos{display:grid;grid-template-columns:1fr 1fr;gap:8px}.mobile-tempos button{margin:0}
  .mobile-timebar{position:absolute;bottom:var(--mobile-nav);height:44px;left:0;right:0;display:flex;gap:8px;border-top:1px solid var(--line);background:var(--surface);padding:0 12px;z-index:3}
  .mobile-timebar button{border:0;background:none;font:12px var(--sans);color:var(--ink)}.mobile-timebar button:last-child{flex:1;text-align:right}
  .world .inspector{position:fixed;inset:auto 0 0;width:100%;max-width:none;margin:0;max-height:calc(100dvh - 110px - env(safe-area-inset-top));border-radius:14px 14px 0 0;background:var(--surface);font-size:14px;line-height:1.6;padding:0 0 env(safe-area-inset-bottom);color:var(--ink);overscroll-behavior:contain}
  .world .inspector::backdrop{background:#1b1d1c2b}
  .world .inspector header{padding:20px 60px 14px 20px;background:var(--surface)}.world .inspector h2{font-size:23px;font-weight:500;letter-spacing:-.5px}
  .world .inspector .inspector-body{padding:14px 20px 24px}.world .inspector h3{font-size:11px;margin-top:22px}.world .inspector dl{gap:8px 12px;grid-template-columns:minmax(90px,1fr) 1.4fr}
  .world .inspector-body>button{min-height:48px;width:100%;background:var(--ink);color:var(--page);border:0;margin-bottom:16px;padding:10px}
  .world .ecology-panel{right:12px!important;bottom:calc(var(--mobile-clock) + 230px)!important;max-width:calc(100% - 24px)!important;padding:0!important;border:1px solid var(--line);border-radius:4px!important;background:var(--surface)!important;font-size:13px}
  .world .ecology-panel>summary{padding:10px 12px;min-height:44px;cursor:pointer}
  .world .ecology-panel[open]{z-index:12!important;left:12px;right:12px!important;bottom:16px!important;max-height:calc(100% - 90px)!important;box-shadow:0 5px 22px #0002;padding:12px!important}
  .world .ecology-panel select{max-width:100%;font-size:16px}.world .ecology-panel button{font:14px var(--sans);padding:8px 12px}
  .ecology-mobile-sheet{position:fixed;inset:auto 0 0;width:100%;max-width:none;max-height:calc(100dvh - 80px);margin:0;padding:16px 20px calc(20px + env(safe-area-inset-bottom));border:1px solid var(--line);border-radius:14px 14px 0 0;background:var(--surface);color:var(--ink);overflow:auto;font:14px/1.6 var(--sans)}
  .ecology-mobile-sheet::backdrop{background:#1b1d1c2b}
  .ecology-mobile-sheet .ecology-mobile-close{min-height:44px;padding:10px 14px;font:14px var(--sans);background:var(--ink);color:var(--page);border:0;border-radius:3px}
  .world .ecology-mobile-sheet .ecology-panel[open]{position:static!important;max-height:none!important;max-width:none!important;width:100%;padding:0!important;border:0;box-shadow:none}
  .ecology-mobile-sheet .ecology-panel>summary{display:none}
  .world:has(.ecology-panel[open]) .mobile-camera,.world:has(.ecology-panel[open])>.world-controls{visibility:hidden}
  .world:has(.ecology-panel[open])>.world-canvas canvas{pointer-events:none}
  /* POV remains a separate mode, including when it is opened from a sheet. */
  .shell.observing .world{--mobile-nav:0px}
  .world.in-pov .pov-toolbar{padding-top:calc(17px + env(safe-area-inset-top))}
  .world.in-pov .pov-caption{padding-bottom:calc(28px + env(safe-area-inset-bottom))}
  .world.in-pov .pov-agent{min-height:44px;font-size:16px}
  .world.in-pov .pov-ui button{min-width:44px;min-height:44px}
  .world.in-pov .pov-toolbar{gap:8px;padding-left:8px;padding-right:8px}
  .world.in-pov .pov-tools{gap:4px}
  .world.in-pov .pov-journal{padding-bottom:env(safe-area-inset-bottom)}
  .toast.show{bottom:calc(90px + env(safe-area-inset-bottom));max-width:calc(100vw - 24px);overflow-wrap:anywhere}
  /* Public entry and sign-in. All existing authentication paths remain real. */
  .landing .topbar{min-height:64px;padding:8px 20px;flex-wrap:nowrap}
  .landing .topbar .nav a[href="/login"]{display:inline-flex;min-height:44px;align-items:center;font-size:13px}
  .landing .topbar .nav a.cta{display:none}
  .landing .hero{display:grid;grid-template-columns:minmax(0,1fr);padding:30px 20px;gap:22px}
  .landing .hero>.lead{display:contents}
  .landing .hero .eyebrow{order:0;font-size:10px;letter-spacing:1.4px;color:var(--accent);line-height:1.6}
  .landing .hero h1{order:1;font-size:clamp(34px,9.5vw,44px);font-weight:500;line-height:1.07;letter-spacing:-1.5px;text-wrap:initial;max-width:12ch}
  .landing .hero .lede{order:2;font-size:15px;line-height:1.6;margin:0}
  .landing .hero>.frame{order:3;box-shadow:none}
  .landing .hero .btn-row{order:4;padding:0;gap:10px;flex-direction:column;align-items:stretch}
  .landing .hero .btn-row .btn{flex:auto;font-size:14px;min-height:48px}
  .landing .hero .fineprint{order:5;font-size:12px;line-height:1.6;color:var(--muted);margin:0}
  .landing .frameshot{height:230px;object-fit:cover}.landing .frame .chrome{padding:10px 12px;gap:8px}
  .landing .frame .framefoot{font-size:11px;padding:10px 12px}
  .landing .band{padding-left:20px;padding-right:20px}.landing .sitefoot{padding-left:20px;padding-right:20px;gap:16px}
  .auth-card{max-width:100%;padding:24px 20px}.auth-card input{font-size:16px;min-height:48px}.auth-card button{min-height:48px}
}
@media(max-width:1000px) and (max-height:500px) and (orientation:landscape){
  .mobile-world-sheet,.world .inspector{inset:0 0 0 auto;width:55%;max-height:100dvh;border-radius:0;max-width:440px}
  .world:not(.in-pov)>.world-status,.world:not(.in-pov)>.world-choose{left:auto;width:48%;max-height:calc(100% - var(--mobile-nav) - 16px);bottom:calc(var(--mobile-nav) + 8px)}
  .world.mobile-pad-open:not(.in-pov) .world-pad{grid-template-columns:repeat(3,44px);grid-template-rows:repeat(3,44px);gap:0}
  .world.mobile-living .mobile-camera{right:12px;bottom:calc(var(--mobile-nav) + 12px);display:flex}
  .mobile-location-row{right:176px}.world:not(.in-pov)>.world-controls{left:12px;bottom:calc(var(--mobile-nav) + 86px)}
  .world.mobile-pad-open:not(.in-pov)>.world-controls{bottom:calc(var(--mobile-nav) + 12px);flex-direction:row;align-items:flex-end}
  .world.mobile-pad-open .mobile-location-row{display:none}
  .world .ecology-panel:not([open]){bottom:84px!important;right:12px!important}
}
@media(max-width:360px){.world.in-pov .pov-agent{max-width:92px}.world.in-pov .pov-context{font-size:8px}.world.in-pov .pov-tools{gap:0}.world.in-pov .pov-ui .pov-toggle{padding:8px}}
