/* Rarity outfitters: compact shelves, large previews, and a saved tap-to-open ritual. */
.home-wallet{display:block;margin-top:14px;color:#efd38f;font:11px var(--mono);text-align:center}
.coin-reward{color:#f1d28b!important;font:12px/1.5 var(--mono)!important}
.outfit-dialog{max-width:960px;padding:25px;background:linear-gradient(145deg,#233b31,#132a25)}
.outfit-heading{display:flex;align-items:center;justify-content:space-between;gap:14px}
.outfit-heading h2{font-size:30px;margin:20px 0}
.coin-purse{flex-shrink:0;background:#3a422e;border:1px solid #bda36b66;border-radius:8px;padding:10px 20px;text-align:center}
.coin-purse span{font:8px var(--mono);color:#d4be8a;letter-spacing:1px}.coin-purse strong{display:block;font:bold 28px var(--mono);color:#f3d58a}
.outfit-tabs{display:flex;gap:8px;border-bottom:1px solid #8b9e7155;padding-bottom:10px}
.outfit-tabs button{padding:10px 18px;background:transparent;border:1px solid transparent;color:#b6c6af;border-radius:5px;font-weight:bold}
.outfit-tabs button[aria-selected="true"]{background:#3a5037;border-color:#aaba7355;color:#f6e1ad}
.outfit-status{font-size:12px;min-height:0;margin:12px 0}.outfit-status:empty{display:none}
.crate-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;margin:22px 0 12px}
.crate-card{padding:22px 14px 18px;text-align:center;border:1px solid var(--crate-color);border-radius:9px;background:radial-gradient(ellipse at 50% 20%,#435741,#1a3028 80%)}
.crate-card h3{font-size:19px;margin:17px 0 7px;color:#eee3c3}.crate-tier-range{font-size:11px!important;min-height:34px;line-height:1.4!important;color:var(--crate-color)!important}
.crate-card .primary{width:100%;justify-content:center;padding:11px 8px}
.shop-crate-art{position:static;display:block;width:min(100%,200px);height:auto;aspect-ratio:16/11;margin:0 auto;image-rendering:auto}
.shop-footnote{text-align:center;font-size:11px!important;color:#a6bba2!important}
.shop-details{font-size:12px;border-top:1px solid #7e956944;padding:15px 0;margin-top:18px}
.shop-details summary{cursor:pointer;color:#c6d0b5}.shop-details p{font-size:11px}
.pool-group{padding:12px}.pool-row{margin:12px 0;border-left:2px solid var(--rarity);padding-left:12px}.pool-row b{color:var(--rarity)}.pool-row p{font-size:10px}.pool-row small{color:#9fb49a}
.resume-crate{width:100%;justify-content:center;margin:18px 0}
.locker-heading{display:flex;justify-content:space-between;gap:10px;align-items:center;margin:16px 0}
.locker-heading p{font:11px var(--mono)}.locker-filters{display:flex;gap:7px;flex-wrap:wrap}
.locker-filters button[aria-pressed="true"]{border-color:#d6c383;color:#f6dea1;background:#465335}
.locker-layout{display:grid;grid-template-columns:minmax(220px,.9fr) minmax(0,1.3fr);gap:20px;align-items:start}
.locker-inspect{position:sticky;top:0;border:1px solid var(--rarity);background:radial-gradient(ellipse at 50% 30%,#354438,#142820);padding:20px;text-align:center;border-radius:8px}
.locker-inspect canvas{position:static;width:100%;height:auto;aspect-ratio:10/7;image-rendering:pixelated}
.locker-inspect h3{font-size:24px;margin:12px 0 6px}.locker-inspect p{font-size:12px;min-height:40px;margin:6px 0 17px}
.locker-inspect .primary{width:100%;justify-content:center}
.rarity-label{display:block;font:bold 10px var(--mono);letter-spacing:1.5px;text-transform:uppercase;color:var(--rarity)}
.locker-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.locker-tile{min-width:0;border:1px solid #72856755;border-bottom:3px solid var(--rarity);border-radius:5px;padding:7px;background:#1d342c;color:#dfdfc6;text-align:center}
.locker-tile[aria-pressed="true"]{outline:2px solid var(--rarity);outline-offset:1px;background:#354438}
.locker-tile .cosmetic-preview{position:static;width:100%;height:auto;aspect-ratio:10/7}
.locker-tile .tile-name{display:block;font-size:10px;line-height:1.3;margin:6px 0}
.locker-tile small{font:8px var(--mono);color:var(--rarity)}.locker-tile.locked canvas{opacity:1}.locker-tile.equipped{box-shadow:inset 0 0 0 1px var(--rarity)}
[data-rarity="5"] .rarity-label,[data-rarity="5"]>.tile-name{color:#f49ccc;text-shadow:0 0 10px #f154c0,0 0 20px #ab65fa}
.locker-inspect[data-rarity="5"],.locker-tile[data-rarity="5"]{border-color:#df70bf;box-shadow:0 0 17px #d34bae33,inset 0 0 20px #964ac522}
.crate-dialog{max-width:1100px;width:calc(100% - 28px);max-height:94svh;background:#101b23;padding:22px;border:1px solid #8a886666}
.crate-dialog::backdrop{background:#050a13ed;backdrop-filter:blur(8px)}
.crate-dialog[open]{animation:crate-zoom .35s cubic-bezier(.2,.75,.2,1) both}
.crate-stage{--rarity:#d9c490;position:relative;min-height:min(70svh,620px);display:grid;place-items:center;overflow:hidden;border-radius:12px;background:radial-gradient(ellipse at 50% 45%,#283541,#101b23 70%)}
.crate-tap-area{text-align:center;width:100%;padding:28px 10px}
.opening-rarity{display:none;font:bold 11px var(--mono);color:var(--rarity);letter-spacing:2px;text-transform:uppercase}
.tap-crate{display:block;position:relative;width:min(720px,100%);height:auto;aspect-ratio:16/11;margin:15px auto;background:transparent;border:0;perspective:650px;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.crate-tap-area h2{font-size:24px;margin:0}.crate-tap-area p{color:#b6bdc3;font:11px var(--mono)}
.crate-prize{position:relative;z-index:2;width:100%;padding:32px 20px;text-align:center}
.crate-prize canvas{position:relative;inset:auto;display:block;width:min(360px,80%);height:auto;aspect-ratio:10/7;margin:0 auto 17px;image-rendering:pixelated;border-radius:8px}
.crate-prize .eyebrow{display:block;margin-bottom:10px}.crate-prize h2{font-size:36px;margin:16px 0 9px;color:#f8e9ca}.crate-prize p{font-size:13px}
.prize-actions{display:flex;gap:12px;justify-content:center;margin-top:20px}.prize-actions button{min-width:130px;justify-content:center}
.prize-halo{position:absolute;inset:0 8%;z-index:-1;background:radial-gradient(ellipse,var(--rarity),transparent 65%);opacity:.3}
.crate-stage[data-rarity="5"] .prize-halo{background:radial-gradient(ellipse,#ff435fa0,#f225aa70,#8b24bd30,transparent 72%);opacity:.6}
.crate-stage[data-impact="true"] .crate-prize{animation:prize-arrive var(--arrival-time,600ms) cubic-bezier(.16,.85,.3,1) both}
.crate-flash{position:absolute;inset:10%;pointer-events:none;z-index:5;opacity:0;background:radial-gradient(ellipse,#fffef3,transparent 70%)}
.crate-stage[data-burst="true"] .crate-flash{animation:crate-soft-flash var(--opening-time,850ms) ease-in-out both}
@keyframes crate-zoom{from{transform:scale(.86);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes prize-rise{from{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}
@keyframes crate-soft-flash{0%,45%{opacity:0}78%{opacity:.95}100%{opacity:0}}
.outfit-dialog[data-gentle="true"] *,.crate-dialog[data-gentle="true"],.crate-dialog[data-gentle="true"] *{animation:none!important;transition:none!important}
@media(max-width:650px){.outfit-dialog{padding:16px}.outfit-heading h2{font-size:23px}.coin-purse{padding:8px 12px}.coin-purse strong{font-size:24px}.crate-choices{gap:8px}.crate-card{padding:15px 8px}.shop-crate-art{width:100%;margin:0}.crate-card h3{font-size:14px}.crate-tier-range{font-size:9px!important;min-height:38px}.crate-card .primary{font-size:11px}.locker-heading{display:block}.locker-filters{margin:10px 0}.locker-layout{grid-template-columns:1fr}.locker-inspect{position:static;display:grid;grid-template-columns:140px 1fr;gap:5px 12px;text-align:left;padding:14px}.locker-inspect canvas{grid-column:1;grid-row:1/5}.locker-inspect h3{font-size:21px;margin:4px 0}.locker-inspect p{font-size:11px;min-height:0;margin:3px 0}.locker-inspect .primary{font-size:12px;padding:8px}.locker-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.tap-crate{height:auto}.crate-tap-area h2{font-size:20px}.crate-prize h2{font-size:28px}.crate-dialog{padding:14px}.crate-stage{min-height:65svh}}
@media(max-width:420px){.crate-choices{grid-template-columns:1fr}.crate-card{display:grid;grid-template-columns:90px 1fr;align-items:center;text-align:left;gap:0 12px}.shop-crate-art{grid-column:1;grid-row:1/4;width:100%;margin:0}.crate-card h3{margin:5px 0}.crate-tier-range{min-height:0;margin:5px 0}.crate-card .primary{grid-column:2}.locker-inspect{grid-template-columns:100px 1fr}.locker-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.locker-filters button{padding:8px}.outfit-tabs button{flex:1}.prize-actions{gap:8px}.prize-actions button{min-width:0}}
@media(prefers-reduced-motion:reduce){.outfit-dialog *,.crate-dialog,.crate-dialog *{animation:none!important;transition:none!important}}




.crate-canvas{position:absolute;inset:0;display:block;width:100%;height:100%;image-rendering:auto;pointer-events:none}
.tap-crate:focus-visible{outline:2px solid var(--rarity);outline-offset:3px;border-radius:12px}


.crate-stage[data-burst="true"]{animation:crate-impact var(--opening-time,850ms) ease-out both}
@keyframes crate-impact{0%,100%{transform:translate(0,0)}20%{transform:translate(calc(var(--shake)*-.5),calc(var(--shake)*.3))}35%{transform:translate(calc(var(--shake)*.6),calc(var(--shake)*-.35))}50%{transform:translate(calc(var(--shake)*-.7),calc(var(--shake)*.4))}70%{transform:translate(var(--shake),calc(var(--shake)*-.4))}85%{transform:translate(calc(var(--shake)*-.4),0)}}


.loadout-heading{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;grid-column:1/-1;margin-bottom:12px}.loadout-heading .loadout-label{margin:0;text-align:left}
.locker-lighting{display:flex;flex-direction:column;align-items:center;gap:5px;margin-left:auto}.lighting-caption{font:8px var(--mono);letter-spacing:1.4px;color:#bac8b9}.lighting-hint{font:8px var(--mono);color:#b5c6bc;line-height:1.4}
.locker-time-toggle{display:flex;align-items:center;gap:8px;padding:7px 10px;background:#10221fd9;color:#a8b8b1;border:1px solid #b0c6aa55;border-radius:24px;font:10px var(--mono);min-height:40px;box-shadow:inset 0 1px 0 #ffffff0c;transition:border-color .2s,background .2s}
.locker-time-toggle:hover:not(:disabled){border-color:#e4ce91;background:#20382d}.time-track-switch{position:relative;width:42px;height:22px;flex:none;background:#806e40;border:1px solid #ccb774;border-radius:20px;transition:background .22s,border-color .22s}.time-thumb{position:absolute;left:3px;top:3px;width:14px;height:14px;background:#ffe5a2;border-radius:50%;box-shadow:0 0 7px #f7d48b55;transition:transform .22s,background .22s,box-shadow .22s}
.locker-time-toggle[aria-checked="false"] .time-day{color:#ffe3a0}.locker-time-toggle[aria-checked="true"] .time-night{color:#e3d1ff}.locker-time-toggle[aria-checked="true"] .time-track-switch{background:#443460;border-color:#9e85c6}.locker-time-toggle[aria-checked="true"] .time-thumb{transform:translateX(20px);background:#ded1ff;box-shadow:0 0 7px #bf9cff55}.locker-time-toggle:disabled{opacity:.8;cursor:default}.locker-time-toggle[data-locked="true"] .time-thumb:after{content:'';position:absolute;inset:4px;border:1px solid #66518c;border-radius:1px}
.outfit-dialog[data-gentle="true"] :is(.time-thumb,.time-track-switch,.locker-time-toggle){transition:none}
@media(max-width:650px){.loadout-heading{gap:8px}.lighting-hint{font-size:7px}}
.loadout-label{display:block;font:9px var(--mono);letter-spacing:1.5px;color:#c7cdb3;margin:0 0 10px;grid-column:1/-1}
.locker-inspect canvas{aspect-ratio:10/7}
@media(max-width:650px){.locker-inspect canvas{grid-row:2/6}}


.crate-stage[data-rarity="4"] .prize-halo{opacity:.55;filter:blur(8px)}
.crate-stage[data-rarity="5"] .prize-halo{opacity:.75;filter:blur(10px)}
.crate-tap-area h2{font-size:19px;color:#ddd8c9;font-weight:500;letter-spacing:.03em}


.crate-stage[data-impact="true"]{animation:prize-impact var(--arrival-time,600ms) ease-out both}
@keyframes prize-impact{0%{transform:translate(0,0)}9%{transform:translate(calc(var(--shake)*-1),calc(var(--shake)*.5))}20%{transform:translate(var(--shake),calc(var(--shake)*-.4))}34%{transform:translate(calc(var(--shake)*-.6),calc(var(--shake)*.25))}50%{transform:translate(calc(var(--shake)*.35),0)}70%,100%{transform:translate(0,0)}}
@keyframes prize-arrive{0%{opacity:0;transform:translateY(var(--arrival-rise)) scale(var(--arrival-scale))}48%{opacity:1;transform:translateY(-3px) scale(1.025)}100%{opacity:1;transform:translateY(0) scale(1)}}
.crate-prize::before,.crate-prize::after{content:"";position:absolute;pointer-events:none;left:50%;top:35%;width:min(65%,430px);aspect-ratio:1;border:2px solid var(--rarity);border-radius:50%;opacity:0;z-index:-1;box-shadow:0 0 25px var(--rarity),inset 0 0 18px var(--rarity)}
.crate-stage[data-impact="true"] .crate-prize::before{animation:prize-wave var(--arrival-time,600ms) ease-out both}
.crate-stage[data-impact="true"] .crate-prize::after{animation:prize-wave var(--arrival-time,600ms) .12s ease-out both}
@keyframes prize-wave{0%{opacity:var(--pulse-strength);transform:translate(-50%,-50%) scale(.25)}100%{opacity:0;transform:translate(-50%,-50%) scale(1.8)}}
.locker-heading p{min-width:160px}.locker-heading p::after{content:"";display:block;height:3px;margin-top:10px;background:linear-gradient(90deg,#d9c88a var(--collected,0%),#57694a55 var(--collected,0%));border-radius:2px}
.locker-tile{transition:border-color .16s,background-color .16s,box-shadow .16s}.locker-tile:focus-visible{outline:2px solid var(--rarity);outline-offset:2px}.locker-tile:hover{background:#35483d}
/* Motion preferences cover generated pseudo-elements as well as the main scene. */
.crate-dialog[data-gentle="true"] *::before,.crate-dialog[data-gentle="true"] *::after{animation:none!important}
@media(prefers-reduced-motion:reduce){.crate-dialog *::before,.crate-dialog *::after{animation:none!important}}


.crate-stage[data-rarity="5"][data-reveal="true"]{background:radial-gradient(ellipse at 50% 42%,#6f183a,#28102f 45%,#0b1420 78%)}
.crate-stage[data-rarity="5"] .prize-halo{box-shadow:0 0 65px #ff315444,inset 0 0 45px #ef20bf33}

