/* One-world shell: the top level is always the city; facilities are interiors. */
.topbar{border-bottom:1px solid #5ce7ff29;background:linear-gradient(180deg,#041021f5,#071225df);backdrop-filter:blur(16px)}
.topbar nav{position:absolute;left:50%;transform:translateX(-50%)}
.topbar nav .nav-item{min-width:112px;border:1px solid #63eaff40;border-radius:0;background:#081a30;color:#d9fbff;clip-path:polygon(9px 0,100% 0,100% calc(100% - 9px),calc(100% - 9px) 100%,0 100%,0 9px)}
.top-status{grid-column:3;justify-self:end;gap:7px}.city-wallet-button,.city-adopt-button{min-height:34px;padding:0 12px;border:1px solid #6cecff4f;border-radius:9px;background:#071b32;color:#d9fbff;box-shadow:0 0 20px #46dcff12;cursor:pointer;font-size:9px}.city-adopt-button{border-color:#72ffd05c;background:linear-gradient(135deg,#164b4a,#342a72);color:#eafff7}.city-wallet-button:hover,.city-adopt-button:hover{filter:brightness(1.18)}.city-account-chip{display:flex;align-items:center;gap:7px;min-height:34px;padding:4px 9px;border:1px solid #f0b85d52;border-radius:9px;background:#15152bc9}.city-account-chip small,.city-account-chip b{display:block;max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.city-account-chip small{color:#89a7b6;font:6px "DM Mono",monospace}.city-account-chip b{margin-top:2px;color:#ffd778;font:8px "DM Mono",monospace}.city-account-chip em{font-style:normal}.city-dog-avatar{--avatar-coat:#566276;position:relative;display:block;width:28px;height:27px;border:1px solid #77efff70;background:#061126;box-shadow:inset 0 0 10px #57dcff22;image-rendering:pixelated}.city-dog-avatar:before{position:absolute;left:5px;top:7px;width:16px;height:14px;border:2px solid #020817;background:var(--avatar-coat);box-shadow:inset 4px 0 #ffffff2b;content:""}.city-dog-avatar:after{position:absolute;left:5px;top:2px;width:5px;height:7px;border:2px solid #020817;border-bottom:0;background:var(--avatar-coat);box-shadow:11px 0 0 -2px var(--avatar-coat),11px 0 0 0 #020817;content:""}.city-dog-avatar>i{position:absolute;z-index:2;left:9px;top:13px;width:2px;height:2px;background:#071229;box-shadow:7px 0 #071229,3px 5px #fff}.city-dog-avatar[data-empty="true"]{--avatar-coat:#37445b;filter:grayscale(1);opacity:.55}.city-dog-avatar[data-coat="mint"]{--avatar-coat:#6fffd1}.city-dog-avatar[data-coat="plasma"]{--avatar-coat:#bd65ff}.city-dog-avatar[data-coat="sunset"]{--avatar-coat:#ff8b72}.city-dog-avatar[data-coat="chrome"]{--avatar-coat:#b9e8f1}.city-dog-avatar[data-coat="void"]{--avatar-coat:#68569e}.city-dog-avatar[data-coat="sakura"]{--avatar-coat:#ff8edb}.city-dog-avatar[data-coat="gold"]{--avatar-coat:#ffd05f}
.top-status[data-world-state="connecting"] .live-dot{background:#ffc96b;box-shadow:0 0 14px #ffc96b;animation:pulse 1s infinite}.top-status[data-world-state="offline"] .live-dot{background:#ff607b;box-shadow:0 0 14px #ff607b;animation:none}.top-status[data-world-state="offline"] #world-status{color:#ff8799}.top-status[data-world-state="online"] #world-status{color:#79f5cd}
.plaza-view.active-view{display:flex;flex-direction:column;height:100svh;min-height:680px;padding:82px clamp(16px,3vw,46px) 12px}
.plaza-hud{display:none}
.plaza-world{flex:1;width:100%;height:auto;min-height:0;max-width:1580px;margin:0 auto;overflow:hidden;border-color:#5be7ff42;border-radius:18px;box-shadow:0 28px 100px #000b,0 0 80px #3ddcff12}
.main-city-stage{position:absolute;z-index:auto;inset:0;width:100%;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;backdrop-filter:none;pointer-events:none}
.main-city-stage .stage-top{display:none}
.main-city-stage .pixel-window{height:100%;margin:0;border:0;border-radius:0;background:transparent;pointer-events:auto}
.main-city-stage .pixel-window:before{display:none}
.main-city-stage .window-scanlines,.main-city-stage .rain-layer,.main-city-stage .sun-or-moon{display:none}
.main-city-stage .pixel-window:after{display:none!important}
.main-city-stage .pixel-window.game3d-fallback{background:transparent!important;filter:none!important;backdrop-filter:none!important}
.main-city-stage .pixel-window.game3d-fallback #game3d-canvas{display:none!important}
.main-city-stage .pixel-window.game3d-fallback .game3d-fallback-corgi{display:block}
.main-city-stage .pixel-window.main-city-render #game3d-canvas{mix-blend-mode:normal;filter:drop-shadow(0 12px 7px #0207159c)}
.main-city-stage .game3d-fallback-corgi:before{position:absolute;z-index:-1;left:10%;right:10%;bottom:-3%;height:13%;border:1px solid #6cecff3b;border-radius:50%;background:radial-gradient(ellipse,#0207159c 0 46%,#47dfff20 48% 58%,transparent 62%);filter:blur(1px);content:"";transform:perspective(70px) rotateX(65deg)}
.main-city-stage .game3d-fallback-corgi[data-activity="eat"]:before,.main-city-stage .game3d-fallback-corgi[data-activity="bath"]:before,.main-city-stage .game3d-fallback-corgi[data-activity="sleep"]:before{border-color:#ffd36b66;box-shadow:0 0 18px #ffd36b38}
.main-city-stage .pixel-window.game3d-fallback .game3d-hud{top:14px;right:14px;left:auto;width:auto;padding:6px 9px;border-color:#ffb36f42;background:#071225c7;transform:none;backdrop-filter:blur(6px)}
.main-city-stage .pixel-window.game3d-fallback .game3d-hud span{font-size:7px}
.main-city-stage .pixel-window.game3d-fallback .game3d-hud small{display:none}
.main-city-stage .pixel-window.game3d-fallback .location-ribbon{display:none}
.main-city-stage .pixel-window.game3d-fallback .speech-bubble{display:block;top:calc(var(--owner-dog-y,72%) - 150px);bottom:auto;left:var(--owner-dog-x,46%);width:max-content;max-width:min(280px,74%);padding:8px 11px;border-color:#6fffe070;border-radius:9px 9px 9px 2px;background:#031127e8;box-shadow:0 0 24px #4be5ff38;color:#e9ffff;font-size:9px;line-height:1.5;transform:translateX(-50%);transition:left 2.7s cubic-bezier(.45,.08,.35,1),top 2.7s cubic-bezier(.45,.08,.35,1)}
.main-city-stage .pixel-window.main-city-render .speech-bubble{top:var(--owner-dog-bubble-y,42%);bottom:auto;left:var(--owner-dog-x,50%);width:max-content;max-width:min(280px,74%);padding:8px 11px;border-color:#6fffe070;border-radius:9px 9px 9px 2px;background:#031127e8;box-shadow:0 0 24px #4be5ff38;color:#e9ffff;font-size:9px;line-height:1.5;transform:translate(-50%,-115%);transition:left .12s linear,top .12s linear}
.main-city-stage:not(.server-dog-ready) .game3d-hud,.main-city-stage:not(.server-dog-ready) .speech-bubble{display:none!important}
.main-city-stage .stat-row{position:absolute;z-index:13;right:16px;bottom:16px;width:300px;padding:8px 10px;border:1px solid #71eaff3b;border-radius:10px;background:#041225cf;backdrop-filter:blur(12px);pointer-events:auto}.main-city-stage .stat-row span{color:#93b3c2}.main-city-stage .stat-row strong{color:#d7fbff}
.main-city-stage .stat-row:not(.server-dog-ready){display:none}
.main-city-stage .care-actions{display:none}.main-city-stage .companion-console{position:absolute;z-index:13;bottom:16px;left:16px;display:none;width:min(390px,calc(100% - 350px));min-width:310px;margin:0;padding:8px;border:1px solid #69e8ff3f;border-radius:10px;background:#041225d9;box-shadow:0 14px 38px #0008;backdrop-filter:blur(12px);pointer-events:auto}.main-city-stage .companion-console.server-dog-ready{display:grid}#plaza.has-plaza-target .main-city-stage .companion-console{display:none}.main-city-stage .dog-chat{display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:center}.main-city-stage .dog-chat>label{margin:0;color:#7fffe0;font:7px "DM Mono",monospace;letter-spacing:.12em}.main-city-stage .dog-chat>label:before{content:"AI 通讯 · ";color:#62eaff}.main-city-stage .dog-chat>div{gap:5px}.main-city-stage .dog-chat input{height:32px;padding:6px 9px;border-radius:7px;font-size:9px}.main-city-stage .dog-chat button{min-height:32px;padding:0 10px;border-radius:7px;font-size:8px}.main-city-stage .chat-history{margin:0}.main-city-stage .chat-history p{display:none;margin-top:6px;padding:5px 7px;background:#020b1ba8}.main-city-stage .chat-history p:last-child{display:grid}.main-city-stage .chat-history p span,.main-city-stage .chat-history p small{font-size:6px}.main-city-stage .chat-history p b{overflow:hidden;font-size:7px;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}
.companion-chat-toggle{display:none}
@media(min-width:761px) and (max-width:1100px){.main-city-stage .companion-console{bottom:88px}}
.main-city-label{position:absolute;z-index:13;left:16px;top:14px;display:grid;grid-template-columns:1fr auto;gap:2px 12px;align-items:center;padding:7px 9px;border-left:2px solid #71ffd0;background:#061127a8;backdrop-filter:blur(10px);pointer-events:none}.main-city-label>small,.main-city-label>strong{display:block}.main-city-label>small{color:#62eaff;font:7px "DM Mono",monospace;letter-spacing:.14em}.main-city-label>strong{grid-column:1;margin-top:3px;font-size:8px}.main-city-online{grid-column:2;grid-row:1/3;display:flex;align-items:center;gap:5px;padding:4px 7px;border:1px solid #72ffd03d;background:#07172cc7;box-shadow:none}.main-city-online span{width:5px;height:5px;background:#72ffd0;box-shadow:0 0 9px #72ffd0}.main-city-online b{font:10px "DM Mono",monospace}.main-city-online small{color:#7896a9;font-size:0}.main-city-online small:after{content:" ONLINE";font:6px "DM Mono",monospace}
.plaza-place{z-index:14;opacity:.96}.plaza-place i{background:#061329f0;box-shadow:0 0 24px #4be7ff25}.plaza-place b{background:#061329f0}
.plaza-dogs{z-index:9;pointer-events:none}.plaza-dogs .pixel-dog{pointer-events:auto}.plaza-dogs .pixel-dog.mine{display:none!important}.city-hud-dock{position:absolute;z-index:15;left:16px;bottom:16px;display:block;width:min(390px,calc(100% - 350px));margin:0}.city-hud-dock .plaza-feed{display:none}.city-hud-dock .plaza-controls{padding:7px;border:1px solid #63eaff36;border-radius:11px;background:#041225d6;box-shadow:0 14px 38px #0008;backdrop-filter:blur(12px)}.city-hud-dock .plaza-actions{gap:5px}.city-hud-dock .plaza-actions button{padding:6px 9px;border-width:1px;border-radius:7px;box-shadow:none}.city-hud-dock #plaza-chat{margin-top:6px}.city-hud-dock #plaza-chat input{padding:7px 9px;border-width:1px;border-radius:7px;background:#020b1bcf}.city-hud-dock #plaza-chat button{padding:0 12px;border-width:1px;border-radius:7px;box-shadow:none}
.plaza-foreground{position:absolute;z-index:11;inset:0;overflow:hidden;pointer-events:none}.plaza-foreground i{position:absolute;inset:0;background:url("./assets/plaza-city-day-v1.png") center/cover no-repeat;image-rendering:pixelated}.plaza-foreground i:first-child{clip-path:polygon(0 78%,8% 80%,14% 87%,24% 91%,31% 100%,0 100%)}.plaza-foreground i:last-child{clip-path:polygon(82% 88%,89% 81%,100% 76%,100% 100%,72% 100%)}
.city-interior{position:relative;min-height:100vh;padding-top:132px!important;background:radial-gradient(circle at 12% 4%,#164c7452,transparent 34%),radial-gradient(circle at 88% 16%,#6f2c8b40,transparent 34%),linear-gradient(145deg,#050c1c,#07091a 55%,#071429)!important}
.city-interior:before{position:fixed;z-index:0;inset:64px 0 0;content:"";pointer-events:none;background:linear-gradient(#53eaff0b 1px,transparent 1px),linear-gradient(90deg,#53eaff0b 1px,transparent 1px);background-size:44px 44px;mask-image:linear-gradient(#0007,transparent 78%)}
.city-interior>*:not(.city-interior-bar){position:relative;z-index:1}
.city-interior-bar{position:absolute!important;z-index:20!important;top:78px;right:clamp(14px,3vw,42px);left:clamp(14px,3vw,42px);display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;padding:10px 12px;border:1px solid #62eaff32;border-radius:12px;background:#061329df;box-shadow:0 12px 40px #0007;backdrop-filter:blur(14px)}
.city-interior-bar button{padding:9px 12px;border:1px solid #62eaff42;border-radius:8px;background:#0b2941;color:#c8f9ff;cursor:pointer}.city-interior-bar div small,.city-interior-bar div strong,.city-interior-bar div span{display:block}.city-interior-bar div small{color:#66eaff;font:6px "DM Mono",monospace;letter-spacing:.14em}.city-interior-bar div strong{font-size:13px}.city-interior-bar div span{color:#6f8b9b;font-size:8px}.city-interior-bar>i{display:grid;width:34px;height:34px;place-items:center;border:1px solid #66eaff55;background:#102748;color:#76f1d4;font:bold 18px "DM Mono"}
.city-interior .panel,.city-interior .arena-main,.city-interior .content-heading{border-color:#63eaff27!important}.city-interior button{transition:transform .18s,border-color .18s,filter .18s}.city-interior button:hover{border-color:#70f2d2!important;filter:brightness(1.13);transform:translateY(-2px)}
.topbar button,.plaza-place,.city-interior button,.city-hud-dock button{transition:transform .16s,filter .16s,border-color .16s,box-shadow .16s,opacity .16s}.topbar button:active,.plaza-place:active,.city-interior button:active,.city-hud-dock button:active{transform:translateY(1px) scale(.97)}.topbar button:disabled,.plaza-place:disabled,.city-interior button:disabled,.city-hud-dock button:disabled{cursor:not-allowed;filter:grayscale(.65);opacity:.45;transform:none}.topbar button[aria-busy="true"],.city-interior button[aria-busy="true"],.city-hud-dock button[aria-busy="true"]{cursor:wait;animation:cityBusy 1s ease-in-out infinite}.topbar button[data-state="success"],.city-interior button[data-state="success"],.city-hud-dock button[data-state="success"]{border-color:#72ffd0!important;box-shadow:0 0 22px #45ffbb24}.topbar button[data-state="error"],.city-interior button[data-state="error"],.city-hud-dock button[data-state="error"]{border-color:#ff6c86!important;box-shadow:0 0 22px #ff456824}@keyframes cityBusy{50%{filter:brightness(1.45)}}
.city-subnav{display:flex;gap:7px;max-width:1500px;margin:0 auto 12px;padding:0 clamp(16px,3vw,46px)}.city-subnav :is(button,a){display:grid;place-items:center;padding:9px 13px;border:1px solid #4bdfff36;border-radius:8px;background:#071a31;color:#9eb9c7;cursor:pointer;text-decoration:none}.city-subnav :is(button,a):first-child{border-color:#6effcf66;color:#d6fff1}
.city-hud-dock .plaza-actions{display:none;align-items:center;gap:5px}.has-plaza-target .city-hud-dock .plaza-actions{display:flex}.city-hud-dock .plaza-actions>span{margin-right:auto;color:#7fffd6;font:7px "DM Mono",monospace;white-space:nowrap}.city-hud-dock #plaza-chat{display:none;margin-top:0}.has-plaza-target .city-hud-dock #plaza-chat{display:grid;margin-top:6px}.city-hud-dock button[aria-busy="true"]{cursor:wait;opacity:.75}.city-hud-dock button[data-state="success"]{border-color:#72ffd0!important;box-shadow:0 0 16px #45ffbb35}.city-hud-dock button[data-state="error"]{border-color:#ff6c86!important;box-shadow:0 0 16px #ff456835}

/* Facility scenes share the main city's visual language. Real controls are
   presented as in-world consoles while the illustrated environment stays visible. */
#arena.city-interior,#kennel.city-interior,#store.city-interior,#home.city-interior{
  min-height:100svh;padding:132px clamp(16px,3vw,46px) 34px!important;
  background-color:#040817!important;background-repeat:no-repeat!important;
  background-position:center top!important;background-size:cover!important;
  background-attachment:fixed!important;isolation:isolate
}
#arena.city-interior{background-image:linear-gradient(180deg,#03081740,#02051478),url("./assets/arena-interior-v1.png")!important}
#arena.city-interior.active-view{height:100svh;overflow:hidden}
#kennel.city-interior{background-image:linear-gradient(180deg,#03081738,#02051482),url("./assets/kennel-interior-v1.png")!important}
#kennel.city-interior.active-view{height:100svh;overflow:hidden}
#store.city-interior{background-image:linear-gradient(180deg,#03081738,#02051482),url("./assets/store-interior-v1.png")!important}
#home.city-interior{background-image:linear-gradient(180deg,#03081738,#02051482),url("./assets/travel-interior-v1.png")!important}
#arena.city-interior:before,#kennel.city-interior:before,#store.city-interior:before,#home.city-interior:before{display:none}
#arena.city-interior:after,#kennel.city-interior:after,#store.city-interior:after,#home.city-interior:after{position:fixed;z-index:0;inset:64px 0 0;content:"";pointer-events:none;background:linear-gradient(180deg,#02061720 0,#02061700 52%,#02061770 100%)}
#arena.city-interior>*:not(.city-interior-bar),#kennel.city-interior>*:not(.city-interior-bar),#store.city-interior>*:not(.city-interior-bar),#home.city-interior>*:not(.city-interior-bar){z-index:2}
#arena .arena-grid,#arena .arena-glow{display:none}
#arena .arena-head{margin-bottom:10px;padding:8px 12px;border:1px solid #70e9ff32;border-radius:10px;background:#041226c7;backdrop-filter:blur(10px)}
#arena .arena-main{grid-template-columns:minmax(0,1.25fr) minmax(310px,.58fr);gap:16px;height:calc(100svh - 234px);min-height:0;margin-top:10px}
#arena .fighter-bay,#arena .arena-console{height:100%;min-height:0;overflow:auto;border-radius:15px;scrollbar-width:thin;scrollbar-color:#59dff844 transparent}
#arena .fighter-bay{border-color:transparent;background:transparent;box-shadow:none;backdrop-filter:none}
#arena .arena-console{align-self:start;min-height:auto;border-color:#6eeaff38;background:linear-gradient(145deg,#031026db,#08091bd9);box-shadow:0 18px 52px #0008;backdrop-filter:blur(10px)}
#arena:not(.server-dog-ready) .fighter-bay{border-color:transparent;background:transparent;box-shadow:none;backdrop-filter:none}
#arena:not(.server-dog-ready) .dog-hologram{height:390px}
#arena:not(.server-dog-ready) .fighter-stats{opacity:.62}
#arena.server-dog-ready .dog-hologram.arena-3d-failed:before{position:absolute;z-index:3;top:50%;left:50%;display:block;width:min(58%,360px);aspect-ratio:1;background:url("./assets/corgi-walk-0.png") center/contain no-repeat;filter:drop-shadow(0 22px 25px #000b) drop-shadow(0 0 30px #49eaff55);content:"";transform:translate(-50%,-54%);animation:arenaDogSafe 3s ease-in-out infinite}
#arena.server-dog-ready .dog-hologram.arena-3d-failed:after{position:absolute;z-index:5;top:18px;left:18px;color:#ffca69;font:7px "DM Mono",monospace;letter-spacing:.12em;content:"3D ENGINE · SAFE MODE"}
#arena.server-dog-ready .dog-hologram.arena-3d-failed canvas{display:none}
@keyframes arenaDogSafe{0%,100%{transform:translate(-50%,-54%)}50%{transform:translate(-50%,-58%)}}
#arena .arena-ticker{margin-top:10px;border:1px solid #70e9ff2d;border-radius:9px;background:#040d20d9}
#arena .social-row{grid-template-columns:1fr 1fr;gap:7px}
#arena .social-row button{min-height:34px;border-color:#55e8ff3b;background:#071b2bd9;color:#aeefff;font-size:8px}

/* Desktop arena is a game stage with a compact command HUD, not a two-column
   dashboard. The same live controls stay mounted over the arena artwork. */
@media(min-width:981px){
  #arena .arena-main{position:relative;display:block;height:calc(100svh - 234px)}
  #arena .fighter-bay{position:absolute;inset:0;padding:16px 390px 16px 16px}
  #arena .dog-hologram{height:calc(100% - 70px)}
  #arena .fighter-stats{position:absolute;right:390px;bottom:12px;left:12px}
  #arena .arena-console{position:absolute;z-index:8;right:12px;bottom:12px;display:grid;width:350px;height:auto;max-height:calc(100% - 24px);gap:8px;padding:10px;overflow:hidden;border-radius:8px;background:linear-gradient(145deg,#031026e8,#08091be6);box-shadow:0 14px 44px #0009,0 0 24px #5de8ff18;clip-path:polygon(9px 0,100% 0,100% calc(100% - 9px),calc(100% - 9px) 100%,0 100%,0 9px)}
  #arena .player-rank{gap:5px}
  #arena .player-rank div{padding:7px 8px;border-radius:5px}
  #arena .player-rank strong{margin-top:2px;font-size:13px}
  #arena .mission-card{padding:11px 12px;border-radius:7px}
  #arena .mission-card h2{margin:6px 0 3px;font-size:15px}
  #arena .mission-card p{min-height:0;margin:0 0 8px;font-size:8px;line-height:1.5}
  #arena .battle-primary{min-height:42px;border-radius:6px}
  #arena .strategy-panel{padding:9px;border-radius:7px}
  #arena .strategy-panel>div{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-top:6px}
  #arena .strategy{min-width:0;min-height:42px;justify-content:center;padding:6px 4px;border-radius:5px;text-align:center}
  #arena .strategy span{display:none}
}
#kennel .content-heading,#store .content-heading{display:none}
#kennel .dog-collection,#store .store-grid{max-width:1420px;margin:0 auto;padding:14px;border:1px solid #70e9ff2f;border-radius:15px;background:#030b1dba;box-shadow:0 24px 80px #0009;backdrop-filter:blur(9px)}
#kennel .dog-collection{position:absolute;top:152px;bottom:24px;left:clamp(20px,4vw,58px);display:grid;grid-template-columns:1fr;grid-auto-rows:minmax(310px,1fr);gap:10px;width:min(300px,29vw);min-height:0;margin:0;padding:0;border:0;background:transparent;box-shadow:none;overflow:auto;backdrop-filter:none;scrollbar-width:thin;scrollbar-color:#cf65ff55 transparent}
#kennel .dog-collection:has(>p:only-child){position:absolute;right:clamp(20px,5vw,70px);bottom:clamp(24px,6vh,60px);left:auto;display:grid;width:min(330px,calc(100% - 40px));min-height:76px;margin:0;padding:14px 18px;place-items:center;border-color:#79efff5c;border-radius:5px;background:#04132bd1;box-shadow:0 0 34px #51e9ff27,7px 7px 0 #020817;color:#d7fbff;font:10px "DM Mono",monospace;text-align:center;clip-path:polygon(9px 0,100% 0,100% calc(100% - 9px),calc(100% - 9px) 100%,0 100%,0 9px)}
#kennel .dog-collection:has(>p:only-child):before{display:block;margin-bottom:5px;color:#76ffcf;font:7px "DM Mono",monospace;letter-spacing:.16em;content:"RESIDENT LINK · WAITING"}
#kennel:has(.dog-collection>p:only-child) .growth-panel,#kennel:has(.dog-collection>p:only-child) .history-panel{display:none}
#kennel .dog-card{height:100%;min-height:0;border:0;border-radius:0;background:transparent;box-shadow:none;clip-path:none;text-shadow:0 2px 10px #020617}
#kennel .dog-card.active{border:0;box-shadow:none}
#kennel .dog-card canvas{height:calc(100% - 58px);min-height:230px}
#kennel .dog-card:has(canvas[data-error]){background:url("./assets/corgi-walk-0.png") center 48%/76% auto no-repeat}
#kennel .dog-card:has(canvas[data-error]):after{position:absolute;top:18px;left:18px;color:#ffca69;font:7px "DM Mono",monospace;letter-spacing:.12em;content:"3D ENGINE · SAFE MODE"}
#kennel .dog-card canvas[data-error]{display:none}
#kennel .growth-panel,#kennel .history-panel,#store .loadout-panel{max-width:1420px;margin:12px auto 0;border:1px solid #70e9ff2f;border-radius:13px;background:#030b1ddb;box-shadow:0 20px 58px #0008;backdrop-filter:blur(10px)}
#kennel .growth-panel{position:absolute;right:clamp(20px,4vw,58px);bottom:24px;display:grid;width:min(590px,57vw);min-height:0;margin:0;padding:16px;border-radius:5px;clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px)}
#kennel .growth-rank{padding-right:16px}
#kennel .growth-rank>strong{font-size:24px}
#kennel .growth-rank p{margin:5px 0;min-height:20px}
#kennel .growth-skins{gap:6px;margin-top:9px}
#blindbox-paid-open{min-height:30px;margin-left:10px;padding:5px 10px;border:1px solid #72ffd266;background:linear-gradient(135deg,#103446,#281d54);color:#cffff0;font:700 7px "DM Mono",monospace;letter-spacing:.06em;clip-path:polygon(6px 0,100% 0,100% calc(100% - 6px),calc(100% - 6px) 100%,0 100%,0 6px)}
#blindbox-paid-open:disabled{border-color:#ffffff1c;background:#050d20;color:#617483;cursor:not-allowed;filter:none;transform:none}
#kennel .growth-skin{padding:8px}
#kennel .history-panel{position:absolute;top:152px;right:clamp(20px,4vw,58px);width:min(440px,43vw);max-height:280px;margin:0;padding:16px;border-radius:5px;overflow:auto;clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px);scrollbar-width:thin;scrollbar-color:#65eaff55 transparent}
#kennel .history-panel h3{margin:4px 0 10px}
#kennel .history-panel .history-row{padding:9px}
#store.city-interior.active-view{height:100svh;overflow:hidden;padding:0!important}
#store .store-grid{position:absolute;z-index:3;inset:64px 0 0;display:block;max-width:none;margin:0;padding:0;border:0;background:transparent;box-shadow:none;overflow:hidden;backdrop-filter:none}
#store .store-item{position:absolute;width:188px;min-height:112px;padding:10px 11px 48px;border:1px solid #71ebff72;border-radius:5px;background:linear-gradient(145deg,#06152ee8,#06091bea);box-shadow:0 14px 32px #000b,0 0 24px #45e4ff19;clip-path:polygon(9px 0,100% 0,100% calc(100% - 9px),calc(100% - 9px) 100%,0 100%,0 9px);transition:filter .2s,transform .2s,box-shadow .2s}
#store .store-item:nth-child(1){left:7%;bottom:21%}#store .store-item:nth-child(2){top:20%;left:9%}#store .store-item:nth-child(3){top:31%;right:10%}#store .store-item:nth-child(4){top:20%;left:43%}#store .store-item:nth-child(5){right:5%;bottom:18%}
#store .store-item:hover,#store .store-item:focus-within{z-index:5;border-color:#78ffd2d1;box-shadow:0 18px 42px #000c,0 0 38px #5effc754;transform:translateY(-5px) scale(1.02)}
#store .store-item.unaffordable{filter:saturate(.68)}
#store .store-item.unaffordable:hover{border-color:#71ebff4d;box-shadow:0 18px 42px #0009,0 0 26px #45e4ff12;transform:none}
#store .store-item-icon{float:left;width:38px;height:38px;margin:0 9px 4px 0;border-radius:4px;font-size:20px}
#store .store-item>small{margin-top:1px;font-size:6px}
#store .store-item h3{margin:4px 0 2px;font-size:11px}
#store .store-item p{min-height:0;margin:5px 0;color:#86a2af;font-size:7px;line-height:1.45}
#store .store-item footer{right:10px;bottom:9px;left:10px}#store .store-item footer strong{font-size:9px}#store .store-item footer button{min-height:30px;padding:6px 9px;font-size:7px}
#store .loadout-panel{position:fixed;z-index:4;right:clamp(16px,3vw,46px);bottom:12px;left:clamp(16px,3vw,46px);display:grid;grid-template-columns:110px 1fr;min-height:62px;margin:0;padding:8px 12px;border-radius:5px;background:#030b1de8;clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px)}#store .loadout-panel h3{margin:2px 0;font-size:11px}#store .loadout-grid article{padding:6px 8px}
#store .store-balance-hud{position:fixed;z-index:24;top:78px;right:28px;bottom:auto;min-width:92px;padding:8px 12px;border-radius:5px;display:block}#store .store-balance-hud strong{font-size:17px}
.store-showcase{position:absolute;z-index:3;top:92px;bottom:154px;left:50%;width:min(470px,40vw);pointer-events:none;transform:translateX(-50%)}.store-showcase:before{position:absolute;right:8%;bottom:18px;left:8%;height:52px;border:1px solid #64eaff70;border-radius:50%;background:radial-gradient(ellipse,#5beaff30,transparent 68%);box-shadow:0 0 58px #4ae7ff40;content:"";transform:perspective(90px) rotateX(62deg)}.store-showcase canvas{position:relative;z-index:2;display:block;width:100%;height:calc(100% - 38px);filter:drop-shadow(0 24px 22px #000b)}.store-showcase>div{position:absolute;z-index:3;right:0;bottom:0;left:0;text-align:center}.store-showcase small,.store-showcase strong{display:block;text-shadow:0 2px 12px #020617}.store-showcase small{color:#67eaff;font:6px "DM Mono",monospace;letter-spacing:.17em}.store-showcase strong{margin-top:4px;font-size:13px}.store-showcase canvas[data-error]{background:radial-gradient(circle,#5ceaff2b,transparent 60%)}
.store-category-menu{position:fixed;z-index:8;right:clamp(16px,3vw,46px);bottom:84px;left:clamp(16px,3vw,46px);display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;padding:7px;border:1px solid #64eaff39;border-radius:6px;background:#030b1de8;box-shadow:0 14px 42px #0009;backdrop-filter:blur(9px)}.store-category-menu button{min-height:38px;border:1px solid #5bdfff38;border-radius:4px;background:#07182edb;color:#8faeba;font:7px "DM Mono",monospace;cursor:pointer}.store-category-menu button.active{border-color:#72ffd0;background:linear-gradient(135deg,#103c44,#272056);color:#edfffa;box-shadow:0 0 22px #51eaff36}
#store .store-item[hidden]{display:none!important}#store .store-item:not([hidden]){top:auto;right:7%;bottom:25%;left:auto}
#home .city-subnav{position:relative;z-index:4;margin:0 auto 10px;padding:0}
.travel-subnav :is(button,a).active{border-color:#72ffd0;color:#eafff7;box-shadow:0 0 18px #45ffbb2e}
#world>.travel-subnav,#passport>.travel-subnav{position:absolute;z-index:21;top:142px;right:clamp(18px,3vw,46px);margin:0;padding:0}
#home .game-shell{position:static;display:block;width:0;height:0;min-height:0;max-width:none;margin:0;padding:0}
#home .journey-column{position:absolute;z-index:3;inset:148px clamp(18px,3vw,46px) 22px;display:block;pointer-events:none}
#home .journey-column>.panel{position:absolute;margin:0;border:1px solid #70e9ff42;border-radius:5px;background:#030b1de3;box-shadow:0 22px 70px #0009,0 0 34px #51e7ff12;backdrop-filter:blur(10px);pointer-events:auto;clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px)}
#home .life-card{left:0;bottom:0;width:min(250px,24vw)}
#home .postcard-card{top:0;left:50%;width:min(315px,30vw);transform:translateX(-50%)}
#home .route-card{right:0;bottom:0;width:min(355px,34vw)}
#home:not(.server-dog-ready) .postcard-card{display:none}
#home:not(.server-dog-ready) .life-card{width:230px}
#home:not(.server-dog-ready) .life-timeline{display:none}
#home .life-card,#home .postcard-card,#home .route-card{padding:16px}
#home .postcard-visual{height:145px}
#home #postcard-scene[data-empty="true"] .postcard-place,#home #postcard-scene[data-empty="true"] .postcard-weather{visibility:hidden}
#home #postcard-scene[data-empty="true"]{filter:saturate(.5);opacity:.78}
#home #save-memory:disabled{cursor:not-allowed;opacity:.38;transform:none}
#home .route-card{min-height:0}

/* The archive is a city facility, not a long document page. */
#passport.city-interior{height:100svh;min-height:700px;overflow:hidden;padding:0!important;background-image:linear-gradient(180deg,#03081755,#02051490),url("./assets/travel-interior-v1.png")!important;background-repeat:no-repeat!important;background-position:center top!important;background-size:cover!important;background-attachment:fixed!important}
#passport.city-interior:before{display:none}#passport.city-interior:after{position:fixed;z-index:0;inset:64px 0 0;content:"";pointer-events:none;background:linear-gradient(180deg,#02061738,#02061700 42%,#020617a8)}
#passport .content-heading{position:absolute;z-index:3;top:150px;left:clamp(20px,4vw,58px);max-width:320px;margin:0;padding:10px 13px;border-left:2px solid #71ffd0;background:#041225cf;backdrop-filter:blur(8px)}
#passport .content-heading .kicker{margin:0;font-size:6px}#passport .content-heading h2{margin:4px 0;font-size:17px}#passport .content-heading>p:last-child{margin:0;font-size:8px;line-height:1.45}
#passport .passport-layout{position:absolute;z-index:2;top:214px;right:clamp(18px,3vw,46px);left:clamp(18px,3vw,46px);display:grid;grid-template-columns:440px minmax(0,1fr);grid-template-rows:252px auto;gap:12px;align-content:start}
#passport .passport-book{min-height:0;height:252px;border-radius:6px;background:#061329e8;clip-path:polygon(12px 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%,0 12px);box-shadow:0 18px 55px #0009,0 0 28px #62eaff16}
#passport .passport-cover{padding:20px 18px;background:linear-gradient(145deg,#173b4bd9,#10172de8)}#passport .passport-cover small{margin-top:22px}#passport .passport-cover h3{font-size:21px}#passport .passport-cover p{bottom:18px}
#passport .passport-profile{padding:18px}#passport .passport-profile img{width:82px;height:82px}#passport .passport-profile dl{gap:8px;margin-top:10px}#passport .passport-code{right:18px;bottom:13px}
#passport .memory-grid{grid-column:2;grid-row:1;display:flex;gap:8px;min-height:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:#59dff844 transparent}
#passport .memory-item{flex:0 0 190px;min-height:0;height:162px;margin-top:auto;padding:12px;background:#061329df;backdrop-filter:blur(7px)}#passport .memory-item strong{margin-top:54px;font-size:12px}#passport .memory-item p{margin-bottom:0}.memory-item .stamp{left:12px;top:12px;width:42px;height:42px}
#passport .journey-ledger{grid-column:1/-1;grid-row:2;min-height:0;padding:12px;border-radius:6px;background:#030b1ddd;overflow:hidden;backdrop-filter:blur(8px)}#passport .journey-ledger h3{font-size:13px}#passport .journey-list{display:flex;gap:8px;margin-top:8px;overflow-x:auto}#passport .journey-list article{flex:0 0 230px;padding:9px}
@media(min-width:981px){#passport .journey-ledger:has(.journey-list article:only-child){width:320px}}

/* The world map is the room itself; city cards become a route dock. */
#world.city-interior{height:100svh;min-height:700px;overflow:hidden;padding:0!important;background:#020617!important}
#world.city-interior:before{display:none}#world .content-heading{position:absolute;z-index:5;top:150px;left:clamp(20px,4vw,58px);max-width:330px;margin:0;padding:10px 13px;border-left:2px solid #71ffd0;background:#041225d9;backdrop-filter:blur(8px)}#world .content-heading .kicker{margin:0;font-size:6px}#world .content-heading h2{margin:4px 0;font-size:17px}#world .content-heading>p:last-child{margin:0;font-size:8px;line-height:1.45}
#world .world-map{position:absolute;z-index:2;top:132px;right:0;bottom:118px;left:0;width:auto;height:auto;min-height:0;margin:0;border:0;border-radius:0;background-position:center;background-size:cover;box-shadow:inset 0 0 110px #01050dd9}
#world .world-atlas{position:absolute;z-index:0;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;filter:saturate(1.08) contrast(1.04);pointer-events:none}
#world .world-map:after{position:absolute;z-index:1;inset:0;content:"";pointer-events:none;background:linear-gradient(180deg,#0206175c 0,transparent 24% 68%,#020617c2),radial-gradient(ellipse at center,transparent 38%,#0206178f 88%)}
#world .map-sky{position:absolute;z-index:2;inset:0;overflow:hidden;pointer-events:none}.map-sky i{position:absolute;width:3px;height:3px;border-radius:50%;background:#dcfbff;box-shadow:0 0 13px #69eaff,72px 31px #fff,154px -8px #89dfff,238px 52px #fff,314px 17px #a48cff,405px 61px #fff,492px 4px #76eaff;opacity:.7;animation:worldDrift 12s linear infinite}.map-sky i:nth-child(1){left:8%;top:18%}.map-sky i:nth-child(2){left:42%;top:9%;animation-delay:-4s}.map-sky i:nth-child(3){left:68%;top:25%;animation-delay:-8s}
#world .map-route{position:absolute;z-index:3;height:3px;border-top:2px dashed #ffe382cc;border-radius:50%;filter:drop-shadow(0 0 7px #ffd66b);pointer-events:none;transform-origin:left center}.route-one{left:25%;top:43%;width:23%;transform:rotate(-7deg)}.route-two{left:47%;top:39%;width:32%;transform:rotate(8deg)}.map-route:after{position:absolute;right:12%;top:-5px;width:8px;height:8px;border-radius:50%;background:#fff5b0;box-shadow:0 0 14px #ffe276;content:"";animation:routeSignal 2.2s ease-in-out infinite}
#world .world-pet{position:absolute;z-index:7;left:var(--pet-x);top:calc(var(--pet-y) + 10%);display:grid;justify-items:center;pointer-events:none;transform:translate(-50%,-100%)}#world .world-pet[hidden]{display:none}#world .world-pet img{width:82px;filter:drop-shadow(0 8px 5px #000b);animation:worldPetBob 1.8s ease-in-out infinite}#world .world-pet span{position:absolute;left:50%;bottom:13px;width:62px;height:17px;border:1px solid #6ceaff99;border-radius:50%;background:#2edfff24;box-shadow:0 0 24px #42dfff8c;transform:translateX(-50%) perspective(70px) rotateX(66deg)}#world .world-pet b{margin-top:-5px;padding:3px 7px;border:1px solid #70efff55;background:#041126df;color:#ddfbff;font:6px "DM Mono",monospace;white-space:nowrap}
#world .world-progress{bottom:18px;left:50%;width:min(520px,calc(100% - 36px));transform:translateX(-50%)}
#world .city-grid{position:absolute;z-index:6;right:clamp(14px,3vw,42px);bottom:10px;left:clamp(14px,3vw,42px);display:grid;grid-template-columns:repeat(3,1fr);gap:8px;height:98px;margin:0}
#world .city-card{min-width:0;height:98px;padding:10px 12px;border-radius:5px;background:#041126e6;box-shadow:0 10px 30px #0008;backdrop-filter:blur(8px);overflow:hidden}#world .city-card.current{border-color:#ffe48880;background:linear-gradient(145deg,#15223ce8,#2d2440e8);box-shadow:0 0 28px #ffe17a1f}#world .city-card.locked{filter:saturate(.3);opacity:.6}#world .city-card header span{font-size:16px}#world .city-card h3{margin:5px 0 2px;font-size:11px}#world .city-card p{min-height:0;margin:0;overflow:hidden;font-size:7px;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}#world .city-card footer{margin-top:5px;padding-top:5px;font-size:6px}
@keyframes worldDrift{50%{opacity:.35;transform:translateY(9px)}to{transform:translateX(16px)}}@keyframes routeSignal{50%{right:72%;opacity:.45}}@keyframes worldPetBob{50%{transform:translateY(-5px)}}
@media(prefers-reduced-motion:reduce){#world .map-sky i,#world .map-route:after,#world .world-pet img{animation:none}}
@media(max-width:980px){#home .game-shell{position:relative;width:auto;height:auto;min-height:0}#home .journey-column{position:relative;inset:auto;display:grid;grid-template-columns:1fr 1fr;gap:12px;width:100%;pointer-events:auto}#home .journey-column>.panel{position:relative;inset:auto;width:auto;transform:none}#home .route-card{grid-column:1/-1}#arena.city-interior.active-view,#kennel.city-interior.active-view{height:auto;overflow:visible}#arena .arena-main{grid-template-columns:1fr;height:auto}#arena .fighter-bay,#arena .arena-console{height:auto;overflow:visible}#arena .fighter-bay{min-height:480px}#kennel .dog-collection,#kennel .growth-panel,#kennel .history-panel{position:relative;inset:auto;width:auto;max-width:none;height:auto;margin:0 0 12px;overflow:visible}#kennel .dog-collection{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));grid-auto-rows:minmax(300px,auto)}#kennel .dog-card{min-height:300px}#kennel .growth-panel{margin-top:0}#kennel .history-panel{max-height:none}}
@media(max-width:760px){.topbar nav{display:none}.top-status{gap:4px}.top-status>span:not(.live-dot),.top-status #world-status{display:none}.city-wallet-button,.city-adopt-button{padding-inline:8px;font-size:8px}.plaza-view{padding-top:72px}.main-city-label{top:9px;left:9px}.main-city-stage .stat-row{right:9px;bottom:116px;left:9px;width:auto}.city-hud-dock{right:9px;bottom:9px;left:9px;width:auto}.has-plaza-target .city-hud-dock .plaza-actions{display:flex;overflow-x:auto;padding-bottom:2px}.city-hud-dock .plaza-actions>span{display:none}.city-hud-dock .plaza-actions button{flex:0 0 auto;min-height:34px}.city-interior{padding-top:148px!important}.city-interior-bar{top:70px;grid-template-columns:auto 1fr}.city-interior-bar>i{display:none}.city-interior-bar div span{display:none}}
@media(max-width:760px){.main-city-stage .game3d-fallback-corgi{width:132px}.main-city-stage .pixel-window.game3d-fallback .speech-bubble{top:calc(var(--owner-dog-y,72%) - 126px);max-width:210px;font-size:8px}}
@media(max-width:760px){#arena.city-interior,#kennel.city-interior,#home.city-interior{padding:142px 10px 26px!important;background-attachment:scroll!important;background-position:center top!important}#store.city-interior{padding:0!important;background-attachment:scroll!important;background-position:center top!important}#home .journey-column{grid-template-columns:1fr}#home .route-card{grid-column:auto}#store .store-grid{top:auto;right:8px;bottom:74px;left:8px;display:flex;gap:8px;height:184px;padding:8px 2px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scrollbar-width:thin;scrollbar-color:#6fffe0 #030819aa}#store .store-grid::-webkit-scrollbar,#store .loadout-panel::-webkit-scrollbar{height:5px}#store .store-grid::-webkit-scrollbar-track,#store .loadout-panel::-webkit-scrollbar-track{border:1px solid #4adff02b;background:#030819aa}#store .store-grid::-webkit-scrollbar-thumb,#store .loadout-panel::-webkit-scrollbar-thumb{border-radius:99px;background:linear-gradient(90deg,#4be5ff,#72ffd0);box-shadow:0 0 8px #4be5ff}#store .store-item,#store .store-item:nth-child(n){position:relative;top:auto;right:auto;bottom:auto;left:auto;flex:0 0 164px;width:164px;min-height:164px;padding:9px 9px 45px;scroll-snap-align:center}#store .store-item:hover,#store .store-item:focus-within{transform:none}#store .store-balance-hud{position:fixed;z-index:24;top:76px;right:10px;margin:0}#store .loadout-panel{position:fixed;right:8px;bottom:8px;left:8px;display:flex;min-height:58px;margin:0;padding:7px 9px;overflow-x:auto;scrollbar-width:thin;scrollbar-color:#6fffe0 #030819aa}#store .loadout-panel>div:first-child{display:none}#store .loadout-grid{display:flex;min-width:max-content;gap:6px}#kennel .growth-panel{grid-template-columns:1fr}#kennel .dog-collection:has(>p:only-child){right:20px;bottom:34px}#arena .arena-head{align-items:flex-start}#arena .arena-main{margin-top:8px}}
@media(max-width:760px){
  .topbar{height:64px;padding:0 10px}.brand-mark{width:40px;height:40px}.brand>span:last-child{display:none}
  .top-status{position:absolute;right:10px;left:auto;z-index:2;display:flex;grid-column:auto;justify-self:auto;width:max-content;max-width:calc(100% - 62px);gap:4px;overflow:visible}
  .top-status .city-account-chip{flex:0 1 auto;min-width:0}.top-status .city-account-chip small{display:none}.top-status .city-account-chip b{max-width:58px}.top-status .city-wallet-button,.top-status .city-adopt-button{flex:0 0 auto;white-space:nowrap}
  .city-wallet-button,.city-adopt-button,.icon-button{min-height:40px}.icon-button{width:40px}
  .city-account-chip{min-height:40px;padding-inline:7px}.city-account-chip small,.city-account-chip b{max-width:74px}
  .city-interior button{min-height:44px}.city-interior #save-memory{min-height:40px;padding:8px 10px}
  .main-city-stage .game3d-hud{top:54px!important;right:9px!important}.main-city-label{max-width:calc(100% - 18px)}
  #kennel .dog-collection,#store .store-grid,#home .life-panel,#home .postcard-card,#home .route-card,#home .journey-ledger{background:#030b1dc4;backdrop-filter:blur(7px)}
  .main-city-stage .companion-console{right:9px;bottom:310px;left:9px;width:auto;min-width:0}.main-city-stage .dog-chat{grid-template-columns:1fr}.main-city-stage .dog-chat>label{display:none}.main-city-stage .dog-chat>div{grid-template-columns:minmax(0,1fr) auto}.main-city-stage .dog-chat button{min-width:54px}.main-city-stage .chat-history{display:none}
  .main-city-stage .companion-console.server-dog-ready:not(.chat-open){right:auto;left:16px;display:block;width:auto;padding:0;border:0;background:transparent;box-shadow:none;backdrop-filter:none}
  .main-city-stage .companion-console:not(.chat-open) .dog-chat,.main-city-stage .companion-console:not(.chat-open) .chat-history{display:none}
  .main-city-stage .companion-chat-toggle{display:block;min-height:44px;padding:0 13px;border:1px solid #72eaff80;border-radius:7px;background:#061a32e8;box-shadow:0 8px 24px #0008,0 0 18px #56eaff21;color:#c9fbff;font:700 8px "DM Mono",monospace}
  .main-city-stage .companion-console.chat-open .companion-chat-toggle{position:absolute;right:0;bottom:calc(100% + 5px);width:44px;padding:0;border-radius:50%;font-size:15px}
  .plaza-dogs .pixel-dog.mine{display:none!important}
}
/* The kennel remains a room, not a scrolling account page. */
#kennel .dog-card{border-color:transparent;background-color:transparent;backdrop-filter:none}
#kennel .growth-panel,#kennel .history-panel{border-color:#70e9ff42;background:#030b1dbd;backdrop-filter:blur(7px)}
@media(max-width:980px){
  #kennel.city-interior.active-view{height:100svh;min-height:650px;overflow:hidden;padding:142px 10px 10px!important}
  #kennel .dog-collection{position:absolute;z-index:3;top:142px;right:20%;bottom:184px;left:20%;display:block;width:auto;height:auto;margin:0;overflow:visible}
  #kennel .dog-card{width:100%;height:100%;min-height:0;margin:0}
  #kennel .dog-card canvas{height:calc(100% - 50px);min-height:0}
  #kennel .growth-panel{position:absolute;z-index:5;right:10px;bottom:10px;left:10px;display:grid;grid-template-columns:minmax(120px,.42fr) 1fr;width:auto;height:162px;margin:0;padding:10px 12px;overflow:hidden}
  #kennel .growth-rank{padding-right:10px}.growth-head{align-items:center}.growth-head h3{font-size:13px}
  #kennel .growth-skins{display:flex;gap:6px;margin-top:7px;overflow-x:auto;scroll-snap-type:x mandatory}
  #kennel .growth-skin{flex:0 0 116px;min-width:116px;scroll-snap-align:start}
  #kennel .history-panel{position:absolute;z-index:5;top:148px;right:10px;width:148px;max-height:116px;margin:0;padding:9px;overflow:auto}
  #kennel .history-panel>div:first-child small{display:none}#kennel .history-panel h3{margin:0 0 5px;font-size:10px}
  #kennel .history-panel .history-row{grid-template-columns:auto 1fr;padding:5px;font-size:7px}#kennel .history-panel .history-row code,#kennel .history-panel .history-row time{display:none}
}
@media(max-width:560px){
  #kennel.city-interior.active-view{min-height:620px}
  #kennel .dog-collection{right:17%;bottom:188px;left:17%}
  #kennel .history-panel{top:146px;right:8px;width:126px;max-height:92px}
  #kennel .growth-panel{right:8px;bottom:8px;left:8px;grid-template-columns:104px 1fr;height:168px;padding:9px}
  #kennel .growth-rank>strong{font-size:19px}#kennel .growth-rank p{font-size:7px}
  #blindbox-paid-open{min-height:38px;margin-left:6px;padding:5px 7px}
}

@media(max-width:760px){
  .store-showcase{top:80px;bottom:244px;width:min(310px,76vw)}
  #store .store-item:not([hidden]){top:auto;right:10px;bottom:116px;left:10px;width:auto;min-height:108px}
  .store-category-menu{right:8px;bottom:60px;left:8px;gap:4px;padding:5px}.store-category-menu button{min-height:40px;padding:4px 2px;font-size:6px}
  #world>.travel-subnav,#passport>.travel-subnav{position:absolute;top:132px;right:8px;left:8px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
  #world>.travel-subnav :is(button,a),#passport>.travel-subnav :is(button,a){min-width:0;min-height:40px;padding:6px 4px;font-size:7px}
}

/* Narrow browser panels still render the complete city as a game scene.
   This must remain after the shell's flex rules so they cannot collapse it. */
@media(max-width:760px){
  .plaza-view.active-view{height:auto;min-height:100svh;overflow:visible}
  .plaza-world{flex:none;height:calc(100svh - 86px);min-height:560px;max-height:720px;background-position:center center;background-size:auto 100%}
  .city-art-loading .plaza-place{visibility:visible;opacity:.58!important;pointer-events:auto}
}

/* Keep the live prop as the visual focus; product controls live in a separate HUD rail. */
#store .store-grid{pointer-events:none}
#store .store-item:not([hidden]){position:fixed;z-index:9;top:50%;right:clamp(18px,4vw,54px);bottom:auto;left:auto;width:220px;min-height:132px;pointer-events:auto;transform:translateY(-42%)}
#store .store-item:not([hidden]):hover,#store .store-item:not([hidden]):focus-within{transform:translateY(calc(-42% - 5px)) scale(1.02)}
@media(max-width:760px){
  .store-showcase{top:78px;bottom:270px;width:min(320px,82vw);transform:translate(-50%,132px)}
  #store .store-grid{position:absolute!important;z-index:9;top:auto!important;right:8px!important;bottom:128px!important;left:8px!important;height:112px;padding:0;overflow:visible;background:none!important}
  #store .store-grid:before{display:none}
  #store .store-item:not([hidden]),#store .store-item:not([hidden]):hover,#store .store-item:not([hidden]):focus-within{position:absolute;inset:0;width:auto;height:112px;min-height:112px;padding:9px 10px 43px;transform:none}
  #store .store-category-menu{position:absolute!important;top:auto!important;right:8px!important;bottom:72px!important;left:8px!important;margin:0!important;transform:none!important}
}

/* Desktop kennel: the resident dog lives on the room's central paw dais. */
@media(min-width:981px){
  #kennel .dog-collection:has(>.dog-card){
    top:146px;
    bottom:116px;
    left:50%;
    width:min(470px,36vw);
    overflow:visible;
    transform:translateX(-50%);
  }
  #kennel .dog-collection:has(>.dog-card) .dog-card{
    display:grid;
    grid-template-rows:minmax(0,1fr) auto;
    place-items:center;
  }
  #kennel .dog-collection:has(>.dog-card) .dog-card canvas{
    width:100%;
    height:100%;
    min-height:0;
    filter:drop-shadow(0 24px 22px #020617b8) drop-shadow(0 0 28px #70efff3d);
  }
  #kennel .dog-collection:has(>.dog-card) .dog-card:has(canvas[data-error]){
    background-position:center 48%;
    background-size:min(72%,330px) auto;
  }
  #kennel .dog-collection:has(>.dog-card) .dog-card>strong,
  #kennel .dog-collection:has(>.dog-card) .dog-card>small{
    justify-self:center;
    text-align:center;
  }
  #kennel .history-panel{width:min(360px,29vw);max-height:190px}
  #kennel .growth-panel{width:min(520px,43vw)}
  #kennel .dog-selector-rail{position:absolute;top:50%;right:calc(100% + 20px);display:grid;width:138px;gap:7px;max-height:270px;overflow:auto;transform:translateY(-50%);scrollbar-width:thin}
}
.dog-selector-rail{z-index:7}.dog-selector{display:grid;grid-template-columns:38px minmax(0,1fr);align-items:center;gap:7px;min-height:48px;padding:5px 7px;border:1px solid #71eaff3d;border-radius:5px;background:#04142dd9;color:#dffcff;box-shadow:0 9px 24px #0008;text-align:left;cursor:pointer;clip-path:polygon(6px 0,100% 0,100% calc(100% - 6px),calc(100% - 6px) 100%,0 100%,0 6px)}.dog-selector:hover,.dog-selector:focus-visible,.dog-selector.active{border-color:#72ffd2;background:#10304b;box-shadow:0 0 24px #55eaff42}.dog-selector img{width:38px;height:38px;object-fit:contain;filter:drop-shadow(0 5px 5px #0008)}.dog-selector span,.dog-selector strong,.dog-selector small{display:block;min-width:0}.dog-selector strong{overflow:hidden;font-size:8px;text-overflow:ellipsis;white-space:nowrap}.dog-selector small{margin-top:2px;color:#79a2b5;font:5px "DM Mono",monospace;text-transform:uppercase}
@media(max-width:980px){#kennel .dog-selector-rail{position:absolute;z-index:7;top:8px;left:-58px;display:grid;gap:5px;max-height:190px;overflow:auto}.dog-selector{grid-template-columns:34px;width:50px;min-height:45px;padding:5px}.dog-selector img{width:34px;height:34px}.dog-selector span{display:none}}
@media(max-width:760px){
  #passport.city-interior{min-height:620px;background-attachment:scroll!important}
  #passport .content-heading{display:none}
  #passport .passport-layout{top:142px;right:8px;bottom:auto;left:8px;grid-template-columns:1fr;grid-template-rows:188px 108px auto;gap:7px;align-content:start}
  #passport .passport-book{grid-template-columns:38% 62%;min-height:0;height:188px}
  #passport .passport-cover{min-height:0;padding:16px 12px}#passport .passport-cover:after{inset:7px}#passport .passport-cover>span{width:36px;height:36px;font-size:17px}#passport .passport-cover small{margin-top:22px;font-size:6px}#passport .passport-cover h3{margin:7px 0;font-size:16px}#passport .passport-cover p{bottom:13px;font-size:5px}
  #passport .passport-profile{min-height:0;padding:13px}#passport .passport-profile img{width:62px;height:62px}#passport .passport-profile dl{gap:5px;margin-top:7px}#passport .passport-profile dl div{padding-bottom:4px}#passport .passport-profile dt{font-size:5px}#passport .passport-profile dd{margin-top:2px;font-size:7px}#passport .passport-code{right:12px;bottom:9px;font-size:5px}
  #passport .memory-grid{grid-column:1;grid-row:2;display:flex;gap:7px;overflow-x:auto;overflow-y:hidden}
  #passport .memory-item{flex:0 0 138px;min-height:100px;padding:8px}#passport .memory-item .stamp{left:8px;top:8px;width:34px;height:34px;font-size:6px}#passport .memory-item>span{right:8px;top:8px;font-size:5px}#passport .memory-item strong{margin-top:39px;font-size:9px}#passport .memory-item p{display:-webkit-box;margin:4px 0 0;overflow:hidden;font-size:6px;-webkit-box-orient:vertical;-webkit-line-clamp:2}
  #passport .journey-ledger{grid-column:1;grid-row:3;max-height:190px;padding:8px}#passport .journey-ledger>header .eyebrow{display:none}#passport .journey-ledger h3{margin:0;font-size:10px}#passport .journey-list{display:flex;gap:5px;margin-top:6px;overflow-x:auto;overflow-y:hidden}#passport .journey-list article{display:block;flex:0 0 112px;min-width:0;padding:7px}#passport .journey-list article>b{width:25px;height:25px;margin-bottom:5px}#passport .journey-list strong,#passport .journey-list small{overflow:hidden;font-size:7px;text-overflow:ellipsis;white-space:nowrap}
  #world.city-interior{min-height:620px}
  #world .content-heading{display:none}
  #world .world-map{top:132px;right:0;bottom:112px;left:0;min-height:0;background-size:auto 100%;background-position:center}
  #world .world-atlas{object-fit:cover;object-position:center}
  #world .world-progress{right:8px;bottom:8px;left:8px;width:auto;padding:9px 10px;transform:none}
  #world .map-pin span{display:block;min-width:70px;padding:5px 7px;font-size:7px}
  #world .world-pet{top:calc(var(--pet-y) + 13%)}#world .world-pet img{width:62px}#world .world-pet b{display:none}
  #world .city-grid{right:8px;bottom:8px;left:8px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;height:98px;overflow:hidden}
  #world .city-card{height:98px;padding:7px}#world .city-card header>span{display:none}#world .city-card header>small{font-size:5px}#world .city-card h3{font-size:8px}#world .city-card p{font-size:5px}#world .city-card footer{font-size:5px}
}
/* Arena mobile layout keeps fighter, strategy and queue action in one battle screen. */
@media(max-width:760px){
  #arena.city-interior.active-view{height:100svh;min-height:650px;overflow:hidden;padding:0!important;background-position:center top!important}
  #arena .arena-head{position:absolute;z-index:6;top:142px;right:8px;left:8px;height:46px;margin:0;padding:6px 9px}
  #arena .arena-mode{width:100%;justify-content:space-between}#arena .arena-mode b{padding:6px 9px}
  #arena .arena-account{display:none}
  #arena .arena-main{position:absolute;z-index:4;top:196px;right:8px;bottom:8px;left:8px;display:block;height:auto;margin:0}
  #arena .fighter-bay{position:absolute;top:0;right:0;left:0;height:280px;min-height:0;padding:9px;overflow:hidden;border:0;background:transparent;box-shadow:none;backdrop-filter:none}
  #arena .bay-hud{position:absolute;z-index:7;top:10px;right:10px;left:10px}
  #arena .dog-hologram{height:218px;margin-top:3px}#arena .dog-hologram strong{bottom:15px;font-size:18px;text-shadow:0 2px 8px #020513}#arena .dog-hologram small{bottom:1px;font-size:6px}
  #arena.server-dog-ready .dog-hologram.arena-3d-failed:before{width:min(62vw,260px);filter:drop-shadow(0 18px 18px #000c) drop-shadow(0 0 34px #49eaff77)}
  #arena .fighter-stats{position:absolute;right:9px;bottom:8px;left:9px;grid-template-columns:repeat(4,1fr);gap:4px}
  #arena .fighter-stats span{padding:5px 7px}#arena .fighter-stats b{margin-top:2px;font-size:12px}
  #arena .arena-console{position:absolute;right:0;bottom:0;left:0;display:grid;grid-template-columns:1.2fr .8fr;grid-template-rows:36px 1fr 32px;gap:5px;height:220px;padding:7px;overflow:hidden;border-radius:12px 12px 4px 4px;background:linear-gradient(145deg,#031026e8,#09091de3);box-shadow:0 -14px 38px #0205138f}
  #arena .player-rank{grid-column:1/-1;gap:5px}#arena .player-rank div{padding:5px 8px}#arena .player-rank strong{margin-top:1px;font-size:11px}
  #arena .mission-card{grid-column:1;grid-row:2;padding:9px}#arena .mission-card>small{font-size:6px}#arena .mission-card h2{margin:5px 0;font-size:11px}#arena .mission-card p{display:none}#arena .battle-primary{min-height:42px;margin-top:8px;border-radius:6px;font-size:9px}
  #arena .strategy-panel{grid-column:2;grid-row:2;padding:8px}#arena .strategy-panel>small{font-size:6px}#arena .strategy-panel>div{gap:4px;margin-top:6px}#arena .strategy{min-height:29px;padding:5px 7px;border-radius:5px}#arena .strategy b{font-size:8px}#arena .strategy span{display:none}
  #arena .social-row{grid-column:1/-1;grid-row:3;gap:5px}
  #arena .social-row button{min-height:30px;padding:4px 8px;font-size:7px}
  #arena .arena-ticker{display:none}
}
@media(max-width:760px){#kennel .dog-collection{background:transparent!important;backdrop-filter:none!important}}
/* Mobile supply depot: the illustrated room stays primary; inventory is a compact game HUD belt. */
@media(max-width:760px){
  #store .store-grid{right:0;bottom:62px;left:0;height:128px;gap:7px;padding:8px 14px 10px;scroll-padding-inline:14px;background:linear-gradient(180deg,transparent,#020616d9 22%,#020616f2)!important;backdrop-filter:none!important}
  #store .store-grid:before{position:sticky;left:14px;align-self:flex-start;flex:0 0 auto;margin-top:-1px;padding:3px 7px;border:1px solid #67eaff55;background:#06162de8;color:#73ffd0;font:6px "DM Mono",monospace;letter-spacing:.13em;content:"SUPPLY BELT"}
  #store .store-item,#store .store-item:nth-child(n){flex:0 0 132px;width:132px;min-height:108px;height:108px;padding:7px 7px 38px;border-radius:4px;scroll-snap-align:start}
  #store .store-item-icon{width:29px;height:29px;margin:0 7px 2px 0;font-size:16px}
  #store .store-item>small{font-size:5px}#store .store-item h3{margin:2px 0;font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #store .store-item p{display:none}
  #store .store-item footer{right:7px;bottom:6px;left:7px;gap:5px}#store .store-item footer strong{font-size:7px;white-space:nowrap}#store .store-item footer button{min-height:28px;padding:4px 6px;font-size:6px}
  #store .loadout-panel{min-height:48px;height:48px;padding:5px 8px;border-top-color:#70efff55;background:#030b1df2}
  #store .loadout-grid article{min-width:82px;padding:4px 6px}#store .loadout-grid article small{font-size:5px}#store .loadout-grid article strong{font-size:7px}
}
/* Mobile arena tactics stay fully playable in one screen: three large horizontal choices. */
@media(max-width:760px){
  #arena .strategy-panel>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}
  #arena .strategy{min-width:0;min-height:48px!important;padding:5px 3px!important;place-items:center;text-align:center}
  #arena .strategy b{font-size:7px;white-space:nowrap}
  #arena .strategy span{display:none}
}
/* Travel is a single playable terminal: scene first, information as consoles. */
@media(max-width:980px){
  #home.city-interior.active-view{height:100svh;min-height:700px;overflow:hidden;padding:0!important;background-position:center top!important}
  #home .city-subnav{position:absolute;z-index:8;top:142px;left:10px;margin:0;padding:0}
  #home .game-shell{position:absolute;inset:0;width:auto;height:auto;margin:0;padding:0}
  #home .journey-column{position:absolute;z-index:4;inset:190px 10px 10px;display:block;width:auto;height:auto;pointer-events:none}
  #home .journey-column>.panel{position:absolute;width:auto;margin:0;padding:11px;border-radius:5px;background:#030b1dc4;box-shadow:0 16px 48px #0009;backdrop-filter:blur(7px);pointer-events:auto;transform:none}
  #home.city-interior.active-view .life-card{position:fixed;z-index:6;top:190px;left:10px;width:44%;height:148px;overflow:hidden}
  #home.city-interior.active-view .postcard-card{position:fixed;z-index:6;top:190px;right:10px;bottom:auto;left:auto;width:53%;height:148px;overflow:hidden}
  #home.city-interior.active-view .route-card{position:fixed;z-index:6;right:10px;bottom:10px;left:10px;width:auto;height:292px;overflow:hidden}
  #home .life-card .section-head h3,#home .postcard-card .section-head h3,#home .route-card .section-head h3{font-size:12px}
  #home .life-now{grid-template-columns:30px 1fr;gap:7px;margin:8px 0;padding:7px}#home .life-now>i{width:30px;height:30px;font-size:15px}#home .life-now p{display:none}
  #home .life-meters{gap:3px}#home .life-meters span{padding:5px;font-size:6px}#home .life-meters b{margin-top:2px;font-size:8px}#home .life-timeline{display:none}
  #home .postcard-visual{height:70px;margin:7px 0}#home .postcard-card>p{display:-webkit-box;margin:0;overflow:hidden;font-size:7px;line-height:1.45;-webkit-box-orient:vertical;-webkit-line-clamp:2}#home .postcard-footer{display:none}
  #home .route-explain{display:none}#home .route-line{margin:10px 0}#home .route-meta{grid-template-columns:repeat(3,1fr);margin-bottom:8px}#home .route-meta span{padding:6px}#home .route-meta b{margin-top:2px}
  #home .transport-picker>span{font-size:7px}#home .transport-picker>div{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin:5px 0 8px}#home .transport{min-height:48px;padding:6px}#home .transport b{font-size:15px}#home .transport em,#home .transport small{font-size:6px}
  #home #travel-button{min-height:40px}
}
@media(max-width:560px){
  #home .journey-column{inset:190px 8px 8px}
  #home.city-interior.active-view .life-card{top:190px;left:8px;width:42%;height:142px}#home.city-interior.active-view .postcard-card{top:190px;right:8px;width:55%;height:142px}
  #home .life-card .eyebrow,#home .postcard-card .eyebrow,#home .route-card .eyebrow{font-size:6px}
  #home .life-status{padding:3px 5px;font-size:6px}#home .life-now strong{font-size:8px}
  #home.city-interior.active-view .route-card{right:8px;bottom:8px;left:8px;height:286px}
}
.topbar button[aria-busy="true"],.city-interior button[aria-busy="true"]{position:relative;padding-right:30px!important}.topbar button[aria-busy="true"]:after,.city-interior button[aria-busy="true"]:after{position:absolute;right:10px;top:50%;width:10px;height:10px;margin-top:-6px;border:2px solid #ffffff45;border-top-color:#7fffe0;border-radius:50%;content:"";animation:citySpinner .7s linear infinite}@keyframes citySpinner{to{transform:rotate(360deg)}}
.city-scene-transition{position:fixed;z-index:120;inset:0;display:grid;place-items:center;overflow:hidden;background:#020617d9;backdrop-filter:blur(10px);pointer-events:none;opacity:0}.city-scene-transition[hidden]{display:none}.city-scene-transition:before,.city-scene-transition:after{position:absolute;inset:-25%;content:"";background:repeating-conic-gradient(from 45deg,#5ceaff00 0 8deg,#5ceaff18 9deg 10deg);animation:cityTransitSpin 4s linear infinite}.city-scene-transition:after{inset:0;background:radial-gradient(circle,#30e8ff30 0 2px,transparent 3px) 0 0/28px 28px;animation:cityTransitGrid .8s linear infinite}.city-scene-transition>div{position:relative;z-index:2;min-width:min(360px,calc(100% - 38px));padding:18px 24px;border:1px solid #70efff66;background:#06132ee8;box-shadow:0 0 80px #48dcff40,8px 8px 0 #020817;text-align:center;clip-path:polygon(12px 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%,0 12px)}.city-scene-transition small,.city-scene-transition strong,.city-scene-transition span{display:block}.city-scene-transition small{color:#62eaff;font:7px "DM Mono",monospace;letter-spacing:.2em}.city-scene-transition strong{margin:8px 0 4px;font-size:18px}.city-scene-transition span{color:#799bac;font-size:9px}.city-scene-transition>i{position:absolute;z-index:3;width:min(520px,75vw);height:2px;background:linear-gradient(90deg,transparent,#79fff0,transparent);box-shadow:0 0 24px #58efff;animation:cityTransitScan .55s ease-in-out}.city-scene-transition>b{position:absolute;z-index:2;right:6vw;bottom:7vh;color:#72ffe0;font:700 34px "DM Mono",monospace;opacity:.3}.city-scene-transition[data-phase="enter"]{animation:cityTransitIn .16s ease-out forwards}.city-scene-transition[data-phase="exit"]{animation:cityTransitOut .56s ease-in forwards}@keyframes cityTransitIn{to{opacity:1}}@keyframes cityTransitOut{0%,42%{opacity:1}100%{opacity:0}}@keyframes cityTransitSpin{to{transform:rotate(1turn)}}@keyframes cityTransitGrid{to{background-position:28px 28px}}@keyframes cityTransitScan{0%{transform:translateY(-38vh);opacity:0}35%,70%{opacity:1}100%{transform:translateY(38vh);opacity:0}}::view-transition-old(root){animation:.18s ease both cityViewOld}::view-transition-new(root){animation:.32s ease both cityViewNew}@keyframes cityViewOld{to{opacity:0;filter:blur(5px);transform:scale(1.025)}}@keyframes cityViewNew{from{opacity:0;filter:blur(4px);transform:scale(.985)}}
@media(prefers-reduced-motion:reduce){.city-scene-transition:before,.city-scene-transition:after,.city-scene-transition>i{animation:none}.city-scene-transition[data-phase="enter"],.city-scene-transition[data-phase="exit"]{animation:none;opacity:.96}::view-transition-old(root),::view-transition-new(root){animation:none}}

/* Shared game-control language across the city and every facility. */
:where(.topbar,.plaza-view,.city-interior,dialog) :where(a,button,[role="button"]):focus-visible,
:where(.topbar,.plaza-view,.city-interior,dialog) input:focus-visible{outline:0;box-shadow:0 0 0 2px #061329,0 0 0 4px #7ffff0,0 0 26px #4ee8ff88!important}
:where(.topbar,.plaza-view,.city-interior,dialog) button:active:not(:disabled):not([aria-busy="true"]){filter:brightness(1.28);transform:translateY(2px) scale(.965)!important}
:where(.topbar,.plaza-view,.city-interior,dialog) button:disabled{cursor:not-allowed!important;filter:grayscale(.72)!important;opacity:.42!important;transform:none!important;box-shadow:none!important}
:where(.topbar,.plaza-view,.city-interior,dialog) button[aria-busy="true"]{cursor:progress!important;pointer-events:none;filter:saturate(.72);animation:cityBusy 1s ease-in-out infinite}
:where(.topbar,.plaza-view,.city-interior,dialog) button[data-state="success"]{color:#eafff7!important;border-color:#72ffd0!important;background-color:#123c39!important;box-shadow:0 0 0 1px #72ffd055,0 0 28px #45ffbb55!important;animation:citySuccess .58s ease-out}
:where(.topbar,.plaza-view,.city-interior,dialog) button[data-state="error"]{color:#fff0f4!important;border-color:#ff6c86!important;background-color:#431527!important;box-shadow:0 0 0 1px #ff6c8655,0 0 28px #ff456855!important;animation:cityError .42s ease-in-out}
@keyframes citySuccess{35%{filter:brightness(1.7);transform:translateY(-2px) scale(1.025)}to{filter:brightness(1);transform:none}}
@keyframes cityError{25%,75%{transform:translateX(-3px)}50%{transform:translateX(3px)}to{transform:none}}
@media(prefers-reduced-motion:reduce){:where(.topbar,.plaza-view,.city-interior,dialog) :where(a,button,[role="button"]){scroll-behavior:auto;transition-duration:.01ms!important}:where(.topbar,.plaza-view,.city-interior,dialog) button[aria-busy="true"],:where(.topbar,.plaza-view,.city-interior,dialog) button[data-state="success"],:where(.topbar,.plaza-view,.city-interior,dialog) button[data-state="error"]{animation:none}}

/* Kennel companion stage: the live dog stands inside the room, never inside a picture card. */
#kennel .dog-collection:has(>.dog-card){background:none!important;box-shadow:none!important;backdrop-filter:none!important}
#kennel .dog-card.active{position:relative;overflow:visible;border:0!important;background:none!important;box-shadow:none!important;clip-path:none!important;cursor:pointer;touch-action:manipulation}
#kennel .dog-card.active:before{position:absolute;z-index:-1;right:12%;bottom:42px;left:12%;height:22px;border-radius:50%;background:radial-gradient(ellipse,#5effdf73 0,#62d8ff30 45%,transparent 72%);filter:blur(7px);content:"";animation:kennelDaisPulse 2.4s ease-in-out infinite}
#kennel .dog-card.active>span{position:absolute;z-index:2;top:10px;left:50%;padding:5px 10px;border:1px solid #72ffdc65;border-radius:999px;background:#04142dbd;color:#8ffff0;font:7px "DM Mono",monospace;letter-spacing:.12em;transform:translateX(-50%);box-shadow:0 0 18px #49fbd133}
#kennel .dog-card.active>strong,#kennel .dog-card.active>small{position:relative;z-index:2;padding:2px 10px;border:0;background:#02091aa8;text-shadow:0 2px 10px #000}
#kennel .dog-card.active>strong{font-size:clamp(14px,1.5vw,22px)}
#kennel .dog-card.active>small{color:#9debe3;font-size:7px}
#kennel .dog-card.active canvas{display:block;width:100%;cursor:pointer;touch-action:manipulation}
#kennel .dog-card.active:has(canvas[data-error]){background:url("./assets/corgi-walk-0.png") center 48%/min(72%,330px) auto no-repeat!important}
@keyframes kennelDaisPulse{50%{opacity:.58;transform:scaleX(.9)}}
@media(min-width:981px){#kennel .dog-collection:has(>.dog-card){width:min(620px,48vw)}#kennel .dog-card.active canvas{min-height:360px}}
@media(max-width:980px){#kennel .dog-collection:has(>.dog-card){position:absolute;top:136px;right:9%;bottom:164px;left:9%;display:block;width:auto;height:auto;margin:0;overflow:visible}#kennel .dog-card.active{width:100%;height:100%;min-height:0}#kennel .dog-card.active canvas{height:calc(100% - 44px);min-height:250px}}
@media(max-width:560px){#kennel .dog-collection:has(>.dog-card){top:126px;right:2%;bottom:288px;left:2%}#kennel .dog-card.active canvas{height:100%;min-height:230px}#kennel .dog-card.active>span{top:2px}#kennel .dog-card.active>strong,#kennel .dog-card.active>small{position:absolute;right:12px;bottom:12px;left:12px;text-align:center}#kennel .dog-card.active>small{bottom:-4px}}

/* Final mobile kennel cascade: low in-world terminal with every real action reachable. */
@media(max-width:560px){
  #kennel .dog-collection{bottom:152px}
  #kennel .growth-panel{grid-template-columns:96px minmax(0,1fr);height:136px;padding:8px}
  #kennel .growth-rank{min-width:0;padding-right:8px}#kennel .growth-rank>strong{font-size:17px}#kennel .growth-rank p{min-height:0;margin:3px 0;font-size:6px;line-height:1.35}
  #kennel .growth-head{display:flex;gap:5px;min-width:0}.growth-head h3{font-size:10px;white-space:nowrap}#kennel .growth-head>span{display:none}
  #kennel #blindbox-paid-open{display:block;flex:0 1 106px;min-width:0;min-height:36px;margin-left:auto;padding:4px 6px;font-size:6px}
  #kennel #blindbox-paid-open:disabled{border-color:#7b91a652!important;background:#07101ee8!important;color:#9eb2bd!important;opacity:.78!important}
  #kennel .growth-skins{height:72px;gap:5px;margin-top:5px;padding-bottom:4px;scrollbar-width:thin;scrollbar-color:#62eaff88 #02091a}
  #kennel .growth-skin{flex:0 0 94px;min-width:94px;min-height:62px;padding:6px;scroll-snap-align:start}
  #kennel .growth-skin strong{font-size:7px}#kennel .growth-skin small{font-size:5px}
}

/* One boot surface: never paint the retired base layout before the city shell owns it. */
.city-booting body{visibility:hidden}

/* Travel terminal uses normal grids; no fixed cards may collide across viewport sizes. */
@media(min-width:981px){
  #home.city-interior.active-view{height:100svh;min-height:700px;overflow:hidden;padding:0!important}
  #home>.travel-subnav,#world>.travel-subnav,#passport>.travel-subnav{position:absolute!important;z-index:80!important;top:164px!important;right:auto!important;left:clamp(18px,3vw,46px)!important;display:flex!important;width:max-content;max-width:calc(100% - 36px);margin:0!important;padding:0!important}
  #home .game-shell{position:absolute!important;inset:0!important;width:auto!important;height:auto!important;margin:0!important;padding:0!important}
  #home .journey-column{position:absolute!important;z-index:4!important;inset:212px clamp(18px,3vw,46px) 18px!important;display:grid!important;grid-template-columns:minmax(220px,.78fr) minmax(270px,1fr) minmax(330px,1.18fr);gap:14px;width:auto!important;height:auto!important;pointer-events:auto!important}
  #home .journey-column>.panel{position:relative!important;inset:auto!important;width:auto!important;height:auto!important;margin:0!important;overflow:auto!important;transform:none!important}
}
@media(max-width:980px){
  #home.city-interior.active-view{height:auto!important;min-height:100svh;overflow-x:hidden!important;overflow-y:auto!important;padding:0!important;background-attachment:scroll!important}
  #home .game-shell{position:relative!important;inset:auto!important;width:100%!important;height:auto!important;min-height:100svh;margin:0!important;padding:0!important}
  #home .journey-column{position:relative!important;inset:auto!important;display:grid!important;grid-template-columns:1fr!important;gap:10px!important;width:auto!important;height:auto!important;margin:0!important;padding:194px 10px 18px!important;pointer-events:auto!important}
  #home .journey-column>.panel,#home.city-interior.active-view .life-card,#home.city-interior.active-view .postcard-card,#home.city-interior.active-view .route-card{position:relative!important;inset:auto!important;top:auto!important;right:auto!important;bottom:auto!important;left:auto!important;width:auto!important;height:auto!important;min-height:0!important;margin:0!important;overflow:visible!important;transform:none!important}
  #home .postcard-visual{height:150px!important}
  #home .route-explain{display:block!important}
}
.travel-subnav{z-index:80!important;pointer-events:auto!important;isolation:isolate}.travel-subnav [data-target]{position:relative;z-index:1;pointer-events:auto!important;touch-action:manipulation}
main:has(>.view:target)>.view{display:none}main>.view:target{display:block}main>#plaza:target{display:flex}
