.echo-open{overflow:hidden}
.echo-page.echo-page .echo-preview{padding-left:72px;padding-right:72px}
.echo-page .echo-preview .echo-loadout{left:12px;right:12px;top:24px;bottom:12px;width:auto;pointer-events:none}
.echo-page .echo-loadout-items{display:grid;grid-template-columns:52px 52px;grid-template-rows:repeat(4,52px);grid-auto-flow:column;align-content:center;justify-content:space-between;gap:12px;width:100%;height:100%;padding:0;overflow:visible}
.echo-page .echo-loadout-item{width:52px;height:52px;padding:0;pointer-events:auto}
.echo-page .echo-loadout .echo-loadout-toggle{width:52px;height:52px;min-height:44px}
.echo-page .echo-slot-empty{display:grid;place-items:center;color:var(--text-muted);background:var(--surface);border:1px solid var(--border-soft);cursor:default}
.echo-slot-empty svg{width:24px;height:24px}
.echo-page .echo-loadout-remove{top:-6px;right:-6px}
.echo-page[data-echo-mode=collection] .echo-items{grid-template-columns:repeat(auto-fill,minmax(76px,1fr));grid-auto-rows:max-content;align-items:start}
.echo-page[data-echo-mode=collection] .echo-item:not(.echo-set){display:block;box-sizing:border-box;width:100%;height:auto;aspect-ratio:1;min-height:0;padding:6px}
.echo-page[data-echo-mode=collection] .echo-item:not(.echo-set) .echo-item-copy{display:none}
.echo-page[data-echo-mode=collection] .echo-item:not(.echo-set) .echo-thumb{width:100%;height:100%;aspect-ratio:1}
.echo-page .echo-item-detail{box-sizing:border-box;width:min(360px,calc(100% - 32px));max-height:calc(100dvh - 32px);overflow:auto;padding:24px;border:1px solid var(--border-soft);border-radius:8px;background:var(--surface);color:var(--text-primary)}
.echo-item-detail::backdrop{background:rgb(0 0 0 / 72%)}
.echo-page .echo-detail-close{position:absolute;right:4px;top:4px}
.echo-page .echo-detail-art{width:144px;height:144px;margin:16px auto 20px;display:grid;place-items:center;background:transparent}
.echo-detail-meta{display:block;color:var(--text-secondary);font-size:12px}
.echo-item-detail h2{font-size:20px;line-height:1.25;margin:8px 0 12px;overflow-wrap:anywhere}
.echo-item-detail p{font-size:14px;line-height:1.5;color:var(--text-primary);margin:0 0 24px;overflow-wrap:anywhere}
.echo-item-detail [data-echo-item-action]{width:100%}
.echo-item-detail [data-prestige],.echo-item-detail [data-cash]{display:block;width:100%;min-height:44px;margin:8px 0;padding:10px;white-space:normal}
.echo-page .echo-footer{display:block;flex-shrink:0;padding:0 0 env(safe-area-inset-bottom);min-height:64px;background:var(--surface)}
.echo-bottom-nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}
.echo-page .echo-bottom-nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-width:0;min-height:64px;padding:8px 4px;border:0;border-top:2px solid transparent;border-radius:0;background:transparent;color:var(--text-secondary);font-size:12px;line-height:16px;box-shadow:none}
.echo-bottom-nav svg{width:24px;height:24px;flex:none}
.echo-page .echo-bottom-nav button[aria-pressed=true]{border-top-color:var(--primary);color:var(--text-primary);background:var(--nav-bg)}
.echo-page .echo-bottom-nav button:focus-visible{outline:2px solid var(--primary);outline-offset:-3px}
.echo-save-state{display:flex;align-items:center;gap:8px;min-height:0}
.echo-save-state:has(p:empty):has(button[hidden]){display:none}
.echo-page .echo-save-state p{padding:6px 0;font-size:12px;line-height:16px;color:var(--text-secondary)}
.echo-page [data-echo-save-retry][hidden]{display:none}
.echo-page .echo-preview{padding-left:0}
@media(max-width:767px){
 .echo-page:not([data-drawer=full]):not(.echo-drawer-dragging) .echo-preview{min-height:284px}
 .echo-page .echo-categories,.echo-page .echo-items{scrollbar-width:none}
 .echo-page .echo-categories::-webkit-scrollbar,.echo-page .echo-items::-webkit-scrollbar{display:none;width:0;height:0}
}
/* The inventory has two mobile snap points and never closes. */
.echo-page .echo-collection-heading{min-height:0;margin:0;display:block}
.echo-page .echo-drawer-handle,.echo-page .echo-drawer-modes{display:none}
@media(max-width:767px){
 .echo-page .echo-wardrobe{padding-top:0}
 .echo-page .echo-drawer-handle{display:flex;align-items:center;justify-content:center;width:100%;height:44px;min-height:44px;padding:0;background:transparent;border:0;border-radius:0;touch-action:none;cursor:ns-resize;user-select:none}
 .echo-drawer-handle span{width:40px;height:4px;border-radius:2px;background:var(--surface)}
 .echo-page .echo-preview{height:min(36dvh,320px,calc(100% - 240px));min-height:0;transition:height .2s ease-out}
 .echo-page .echo-preview .echo-canvas{width:min(100%,32dvh,280px)}
 .echo-page[data-drawer=full] .echo-preview{height:0;visibility:hidden}
 .echo-page[data-drawer=full] .echo-drawer-modes{display:flex;gap:8px;justify-content:center;margin-bottom:8px}
 .echo-page.echo-drawer-dragging .echo-preview{height:var(--echo-drag-height);visibility:visible;transition:none}
 .echo-page .echo-wardrobe{flex:1;overflow:hidden}
}
@media(prefers-reduced-motion:reduce){.echo-page .echo-preview{transition:none}}
/* Initial mobile loading shares the full scene bounds, not the square compositor. */
@media(max-width:767px){
 .echo-preview:has(>.echo-canvas[data-loading=true]:empty){background-image:linear-gradient(110deg,var(--surface) 25%,var(--surface) 45%,var(--surface) 65%);background-size:300% 100%;animation:echo-shimmer 1.8s linear infinite}
 .echo-preview>.echo-canvas[data-loading=true]:empty::after{display:none}
}
@media(max-width:767px) and (prefers-reduced-motion:reduce){
 .echo-preview:has(>.echo-canvas[data-loading=true]:empty){animation:none}
}
.echo-scene{display:none}
@media(max-width:767px){
 .echo-page.echo-page{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}
 .echo-page .echo-header,.echo-page .echo-footer{padding-left:16px;padding-right:16px;box-sizing:border-box}
 .echo-page .echo-wardrobe{margin-left:16px;margin-right:16px}
 .echo-preview>.echo-scene:not([hidden]){display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;pointer-events:none;z-index:0}
 .echo-preview .echo-canvas{z-index:1}
 .echo-preview .echo-canvas>[data-layer=background]{opacity:0}
 .echo-page .echo-preview .echo-tools{left:16px}
 .echo-preview .echo-loadout{right:16px}
}
.echo-preview{padding-right:76px;padding-left:48px}
.echo-preview .echo-tools{left:0;right:auto}
.echo-loadout{position:absolute;right:0;top:12px;bottom:12px;width:68px;z-index:211;display:flex;flex-direction:column;align-items:center;gap:8px}
.echo-loadout-items{width:100%;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;display:flex;flex-direction:column;gap:8px;padding:2px}
.echo-loadout-item{position:relative;flex-shrink:0;width:60px;padding-top:8px}
.echo-page .echo-loadout-toggle{width:60px;height:60px;padding:0;overflow:hidden;background:var(--surface);border-color:var(--border-soft)}
.echo-loadout-toggle{position:relative}
.echo-loadout-toggle img{position:absolute;max-width:none;max-height:none;width:100%;height:100%;object-fit:contain;display:block}
.echo-loadout-toggle[aria-pressed=false] img{opacity:.25}
.echo-loadout-toggle[aria-pressed=false]{border-style:dashed}
.echo-page .echo-loadout-remove{position:absolute;top:0;right:0;width:24px;height:24px;min-height:24px;padding:5px;display:grid;place-items:center;background:var(--surface);border-radius:50%}
.echo-loadout-remove svg{width:12px;height:12px}
.echo-preview .echo-canvas{max-width:100%}
.echo-set-art{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));aspect-ratio:1;width:100%;overflow:hidden;background:transparent;gap:2px}
.echo-set-art img{width:100%;height:100%;min-height:0;object-fit:contain}
.echo-item .echo-set-name{font-size:10px;color:var(--text-muted)}
.echo-page .echo-item.echo-set{position:relative;display:block;box-sizing:border-box;width:100%;height:auto;aspect-ratio:1;min-height:0;padding:8px;overflow:hidden}
.echo-page .echo-set .echo-set-art{width:100%;height:100%;min-width:0}
.echo-set-art[data-count="1"]{grid-template-columns:1fr;grid-template-rows:1fr}
.echo-set-art[data-count="2"]{grid-template-rows:1fr}
.echo-set-art[data-count="0"]{display:grid;place-items:center;color:var(--text-secondary)}
.echo-set-art>svg{width:60%;height:60%}
.echo-set-package{position:absolute;left:4px;bottom:4px;display:grid;place-items:center;width:24px;height:24px;background:var(--surface);border:1px solid var(--border-soft);border-radius:4px;color:var(--text-primary);pointer-events:none}
.echo-set-package svg{display:block;width:16px;height:16px}
/* The light sits above the scenery and below the Echo base (layer 20). */
.echo-canvas:empty::before{display:none}
.echo-canvas::before{content:"";position:absolute;z-index:19;top:0;left:50%;width:100%;height:90%;transform:translateX(-50%);clip-path:polygon(44% 0,56% 0,100% 100%,0 100%);background:linear-gradient(180deg,rgba(255,249,232,.48),rgba(255,249,232,.2) 45%,rgba(255,249,232,0));pointer-events:none}
.echo-canvas:not([data-loading=true])::after{content:"";position:absolute;z-index:19;top:0;left:calc(50% - 22px);width:44px;height:3px;background:#fff9e8;box-shadow:0 5px 14px 3px rgba(255,249,232,.35);pointer-events:none}
.echo-page{position:fixed;inset:0;z-index:1200;background:var(--surface);color:var(--text-primary);display:flex;flex-direction:column;padding:env(safe-area-inset-top) max(16px,env(safe-area-inset-right)) env(safe-area-inset-bottom) max(16px,env(safe-area-inset-left));font-family:inherit;letter-spacing:0}
.echo-page button{font:inherit;color:inherit;background:var(--surface);border:1px solid var(--border-soft);border-radius:6px;min-height:44px;padding:8px 12px;cursor:pointer}
.echo-page button:focus-visible{outline:2px solid var(--primary);outline-offset:3px}
.echo-page button:disabled{opacity:.48;cursor:default}
.echo-page button[aria-pressed=true]{border-color:var(--primary);background:var(--surface)}
.echo-header{display:flex;align-items:center;gap:14px;min-height:64px;border-bottom:1px solid var(--border-soft);flex-shrink:0}
.echo-header h1{font-size:20px;margin:0}.echo-header>span{margin-left:auto;color:var(--text-secondary)}.echo-header svg{width:22px;height:22px;display:block}
.echo-workspace{flex:1;min-height:0;display:grid;grid-template-columns:minmax(250px,1fr) minmax(300px,1fr);gap:32px;width:100%;max-width:1160px;margin:auto;overflow:hidden}
.echo-preview{display:flex;flex-direction:column;justify-content:center;min-width:0;align-items:center}
.echo-canvas{position:relative;width:min(100%,500px);aspect-ratio:1;isolation:isolate;flex-shrink:0;background:var(--surface);overflow:hidden}
.echo-canvas>img{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.echo-canvas[data-loading=true]:empty::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,var(--surface) 25%,var(--surface) 45%,var(--surface) 65%);background-size:300% 100%;animation:echo-shimmer 1.8s linear infinite}
.echo-page .echo-reload{flex-shrink:0;display:flex;align-items:center;justify-content:center;gap:8px;margin:8px 0 12px}
.echo-page .echo-reload[hidden]{display:none}
.echo-reload svg{width:18px;height:18px}
@media(prefers-reduced-motion:reduce){.echo-canvas[data-loading=true]:empty::after{animation:none}}
.echo-wardrobe{display:flex;flex-direction:column;min-height:0;min-width:0;padding-top:18px}
.echo-modes{display:flex;gap:8px;padding-bottom:14px}.echo-modes button{flex:1}
.echo-categories{display:flex;gap:8px;overflow:auto;flex-shrink:0;padding:4px 2px 12px;scrollbar-width:thin;scrollbar-color:#65717a #111518}
.echo-categories button{white-space:nowrap}
.echo-set-heading{display:flex;align-items:center;gap:8px;flex-shrink:0;border-top:1px solid var(--border-soft);padding:8px 0;margin-bottom:8px;min-width:0}
.echo-set-heading h2{margin:0;min-width:0;font-size:16px;line-height:1.3;overflow-wrap:anywhere}
.echo-set-heading h2:focus{outline:none}
.echo-items{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;overflow:auto;align-content:start;padding:8px 2px 20px;scrollbar-width:thin}
.echo-item{display:flex;flex-direction:column;text-align:left;gap:6px;min-width:0;overflow-wrap:anywhere}
.echo-thumb{display:block;width:100%;aspect-ratio:1;background:var(--surface)}.echo-thumb img{width:100%;height:100%}
.echo-thumb,.echo-set-art>span{position:relative;overflow:hidden}
.echo-thumb img,.echo-set-art>span>img{position:absolute;max-width:none;max-height:none}
.echo-item strong{font-size:13px}.echo-item small{font-size:11px;color:var(--text-secondary)}.echo-item.rarity-rare{border-color:var(--border-default)}.echo-item.rarity-legendary{border-color:var(--warning)}.echo-item.rarity-epic{border-color:var(--border-default)}
.echo-footer{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:12px 0;border-top:1px solid var(--border-soft);flex-wrap:wrap}.echo-footer p{margin:0;flex:1;font-size:13px}.echo-page .echo-primary{background:var(--primary-strong);border-color:var(--primary);color:var(--button-primary-text)}
.echo-loading{margin:auto;width:80%}.echo-skeleton{height:280px;background:linear-gradient(110deg,var(--surface) 25%,var(--surface) 45%,var(--surface) 65%);background-size:300% 100%;animation:echo-shimmer 1.8s linear infinite}
.echo-preview{position:relative}
@keyframes echo-shimmer{to{background-position:-300% 0}}
@media(max-width:767px){.echo-workspace{display:flex;flex-direction:column;gap:0}.echo-preview{height:min(38dvh,340px);flex-shrink:0}.echo-canvas{height:auto;width:min(100%,38dvh,340px);max-width:100%}.echo-wardrobe{flex:1;padding-top:8px}.echo-items{grid-template-columns:repeat(3,minmax(0,1fr))}.echo-header{min-height:56px}.echo-footer p:not(:empty){flex-basis:100%}.echo-footer>button{flex:1}.echo-modes{padding-bottom:5px}.echo-page{padding-left:12px;padding-right:12px}}
@media(prefers-reduced-motion:reduce){.echo-skeleton{animation:none}}

/* The character and every equipped layer share one canvas and one scale. */
.echo-page{padding-left:max(20px,env(safe-area-inset-left));padding-right:max(20px,env(safe-area-inset-right));background:var(--surface)}
.echo-header{border:0;height:68px;gap:12px}.echo-header h1{font-size:22px}.echo-page .echo-icon{width:44px;height:44px;padding:10px;display:grid;place-items:center;background:transparent;border-color:transparent;flex-shrink:0}.echo-icon svg,.echo-equipped svg{width:22px;height:22px}
.echo-gender{display:flex;gap:4px;margin-left:auto}.echo-page .echo-icon[aria-pressed=true]{color:var(--primary);border-color:var(--primary);background:var(--surface)}.echo-page .echo-icon:hover{background:var(--surface-hover)}
.echo-workspace{grid-template-columns:minmax(0,1fr) 300px;gap:36px;max-width:1180px}.echo-preview{overflow:hidden}.echo-preview .echo-canvas{background:transparent;width:min(100%,65dvh,620px);transform:scale(1.2)}
.echo-tools{position:absolute;right:0;top:12px;display:flex;flex-direction:column;gap:10px;z-index:210}.echo-page .echo-tools .echo-icon{background:var(--surface);border-color:var(--border-soft);border-radius:8px}.echo-page .echo-tools .echo-icon[aria-pressed=true]{border-color:var(--primary);background:var(--surface)}
.echo-wardrobe{padding-top:32px;border-left:1px solid var(--border-soft);padding-left:24px}.echo-collection-heading{display:flex;align-items:center;min-height:44px;margin-bottom:12px}.echo-collection-heading h2{font-size:17px;margin:0}.echo-items{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.echo-page .echo-item{position:relative;padding:0;gap:0;overflow:hidden;border-radius:8px;background:var(--surface);min-height:160px}.echo-thumb{background:transparent;overflow:hidden}.echo-thumb img{display:block}.echo-item-copy{display:flex;flex-direction:column;gap:6px;padding:12px}.echo-item strong{font-size:14px}.echo-item small{color:var(--text-secondary)}.echo-equipped{position:absolute;top:8px;right:8px;color:var(--primary)}
.echo-footer{max-width:1180px;width:100%;margin:0 auto;border-color:var(--border-soft);min-height:70px}.echo-footer>button{min-width:110px}.echo-page .echo-primary{background:var(--primary-strong);color:var(--button-primary-text)}.echo-page button:disabled{opacity:.6}.echo-page button:disabled .echo-thumb{opacity:.45}
@media(max-width:767px){.echo-page{padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}.echo-header{height:60px;min-height:60px}.echo-workspace{display:flex;gap:0}.echo-preview{height:min(53dvh,460px);width:100%;flex-shrink:0}.echo-preview .echo-canvas{width:min(100%,47dvh,400px)}.echo-tools{top:12px;right:0}.echo-wardrobe{border-left:0;border-top:1px solid var(--border-soft);padding:12px 0 0}.echo-collection-heading{min-height:32px;margin-bottom:6px}.echo-items{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.echo-page .echo-item{min-height:0;display:grid;grid-template-columns:60px minmax(0,1fr);min-height:92px;align-items:center}.echo-thumb{aspect-ratio:1;width:60px}.echo-item-copy{padding:10px 8px 10px 0}.echo-item strong{font-size:13px}.echo-equipped{top:4px;right:4px}.echo-equipped svg{width:15px;height:15px}.echo-footer{min-height:64px;padding:10px 0}.echo-footer>button{flex:initial;min-width:96px}.echo-footer p:empty{display:none}.echo-footer p:not(:empty){flex-basis:100%}}
