:root{font-family:Barlow,Arial,sans-serif;color:#f2efe9;background:#101825;--surface:#1b2937;--surface2:#233445;--line:#3a4c59;--gold:#e4b96a;--muted:#a8b5be;--mine:#75d4c7;--theirs:#f39a83}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 50% -15%,#2c4b5d 0,transparent 45%),#101825;min-height:100vh}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:inherit}.shell{max-width:1180px;margin:auto;padding:0 18px}.top{height:82px;display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line)}.brand{text-decoration:none;display:flex;align-items:center;gap:11px;font-weight:900;letter-spacing:.14em;font-size:17px;white-space:nowrap}.brand b{color:var(--gold)}.brand-mark{border:2px solid var(--gold);color:var(--gold);padding:7px;border-radius:8px;font-size:13px;letter-spacing:0}.account{display:flex;align-items:center;gap:9px;color:var(--muted);font-size:13px}.account img{width:30px;height:30px;border-radius:50%}.account button{background:none;border:0;color:var(--muted);text-decoration:underline}.eyebrow{text-transform:uppercase;letter-spacing:.19em;font-size:11px;color:var(--gold);font-weight:800}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(36px,7vw,76px);line-height:.98;letter-spacing:-.065em;margin:16px 0}h2{font-size:26px;letter-spacing:-.035em}p{color:var(--muted);line-height:1.55}.hero{padding:65px 0 38px;max-width:760px}.hero p{font-size:18px;max-width:550px}.actions{display:flex;gap:10px;flex-wrap:wrap;margin:20px 0}.btn{border:1px solid var(--gold);background:var(--gold);color:#182434;border-radius:9px;padding:13px 18px;font-weight:800;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;min-height:46px}.btn.secondary{background:transparent;color:var(--gold)}.btn.ghost{background:transparent;color:#f2efe9;border-color:var(--line)}.panel{border:1px solid var(--line);background:rgba(27,41,55,.88);border-radius:18px;padding:22px;margin:16px 0}.row{display:flex;align-items:center;justify-content:space-between;gap:12px}.section{margin:24px 0 36px}.list{display:grid;gap:10px}.match-link{padding:15px 17px;border:1px solid var(--line);border-radius:12px;text-decoration:none;display:flex;justify-content:space-between;gap:12px;background:var(--surface)}.match-link:hover{border-color:var(--gold)}.muted{color:var(--muted)}.small{font-size:12px}.input{color:#fff;background:#101b28;border:1px solid var(--line);border-radius:9px;padding:13px;width:min(100%,290px);text-transform:uppercase;letter-spacing:.12em}.code{font-size:30px;color:var(--gold);font-weight:900;letter-spacing:.18em}.pill{border:1px solid var(--line);padding:7px 10px;border-radius:100px;font-size:12px;color:var(--muted)}.pill.turn{color:#101825;background:var(--gold);border-color:var(--gold);font-weight:800}.scoreline{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.arena{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,440px);gap:22px;align-items:start}.board{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;aspect-ratio:1;width:100%;max-width:560px;margin:auto}.cell{background:#152635;border:1px dashed #50707e;border-radius:12px;padding:4px;position:relative;display:grid;place-items:center;min-width:0;min-height:0;color:#90a5ad}.cell.available{border-style:solid;border-color:#d9bc7d;background:#293747}.cell.available:hover{background:#3a4b59}.cell-label{font-size:23px;opacity:.28}.card{--accent:#e4b96a;border:2px solid var(--accent);border-radius:10px;background:linear-gradient(165deg,color-mix(in srgb,var(--accent) 18%,#192837),#15202d 65%);padding:6px;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:space-between;aspect-ratio:3/4;width:100%;max-width:126px;box-shadow:0 9px 18px #080d1680;position:relative;text-align:center;overflow:hidden}.card.owned{outline:3px solid var(--mine)}.card.enemy{outline:3px solid var(--theirs)}.card.selected{transform:translateY(-8px);box-shadow:0 0 0 3px var(--gold),0 16px 25px #060a14}.card .label{font-size:clamp(9px,1.4vw,12px);font-weight:800;line-height:1.05;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card .category{font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:#cad5d6}.car-shape{width:75%;height:25%;border-radius:60% 65% 30% 25%;background:linear-gradient(140deg,#ffffff33,var(--accent));box-shadow:0 5px 0 #080f1d,0 10px 15px #0008;transform:skewX(-15deg)}.stats{display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-rows:repeat(3,1fr);place-items:center;width:76%;height:42%;font-size:clamp(12px,2.5vw,20px);font-weight:900}.stats span{background:#0b1420ba;border-radius:5px;min-width:1.4em}.stats .north{grid-area:1/2}.stats .east{grid-area:2/3}.stats .south{grid-area:3/2}.stats .west{grid-area:2/1}.hand{display:flex;gap:7px;overflow-x:auto;padding:12px 4px 20px;scroll-snap-type:x mandatory}.hand button{background:transparent;border:0;padding:0;flex:0 0 min(27vw,112px);scroll-snap-align:center}.hand .card{width:100%}.hand button:focus-visible,.cell:focus-visible,.btn:focus-visible{outline:3px solid white;outline-offset:2px}.notice{padding:14px;border-left:3px solid var(--gold);background:#37404a;border-radius:4px;color:#f5e8d0}.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(105px,1fr));gap:15px}.cards-grid .card{max-width:none}.back{display:inline-block;margin:24px 0;color:var(--muted);text-decoration:none}.loading{padding:70px 0;color:var(--muted)}#toast{position:fixed;z-index:10;bottom:24px;left:50%;transform:translateX(-50%);max-width:min(92vw,480px);padding:12px 18px;border-radius:10px;background:#f0c27b;color:#17202b;box-shadow:0 10px 35px #0008;font-weight:700;display:none}footer{margin:60px 0 25px;border-top:1px solid var(--line);padding-top:18px;font-size:11px;letter-spacing:.15em;color:var(--muted);display:flex;justify-content:space-between;gap:10px}@media(max-width:760px){.shell{padding:0 12px}.top{height:68px}.brand{font-size:13px}.account span{display:none}.hero{padding:44px 0 15px}.hero p{font-size:16px}.panel{padding:16px}.arena{display:block}.board{gap:5px;max-width:470px}.board .card{padding:3px;border-radius:7px}.board .card .category{font-size:7px}.board .card .label{font-size:clamp(8px,2vw,11px)}.board .card .stats{height:45%;font-size:clamp(11px,4vw,19px)}.hand{margin:0 -12px;padding-left:12px;padding-right:12px}.hand button{flex-basis:27vw}footer span{font-size:9px;text-align:right}}@media(max-width:370px){.board .card .category{display:none}.board .card .stats{font-size:12px}.hand button{flex-basis:29vw}}
/* Octane Nine visual system: track markings, stamped typography, playing cards. */
:root{font-family:Barlow,Arial,sans-serif;color:#f5f0e6;background:#0b0c0d;--surface:#191a1a;--surface2:#242524;--line:#494743;--gold:#f56a40;--muted:#b7b4ab;--mine:#74cbb0;--theirs:#ff8a64}
body{background:repeating-linear-gradient(90deg,transparent 0,transparent calc(25% - 1px),#ffffff05 25%),radial-gradient(circle at 78% 7%,#642b1c 0,transparent 34%),#0b0c0d}
.shell{max-width:1340px;padding:0 clamp(16px,3vw,48px)}.top{height:74px;border-bottom:1px solid #78736a66}.brand{font-family:'Barlow Condensed','Arial Narrow',sans-serif;font-size:23px;letter-spacing:.07em;font-style:italic}.brand b{color:var(--gold)}.brand-mark{font-family:Barlow,Arial,sans-serif;font-style:normal;background:var(--gold);border:0;color:#0b0c0d;padding:9px 7px;border-radius:0;font-weight:900;transform:skew(-8deg)}
h1,h2,h3{font-family:'Barlow Condensed','Arial Narrow',sans-serif;font-weight:900;text-transform:uppercase;letter-spacing:.005em}h1{font-size:clamp(58px,8.2vw,128px);line-height:.88;margin:20px 0 28px}h1 em{font-style:normal;color:var(--gold)}h2{font-size:clamp(30px,4vw,48px);line-height:1}.eyebrow{color:var(--gold);font-weight:900;letter-spacing:.24em}
.hero{max-width:none;min-height:560px;display:grid;grid-template-columns:1fr minmax(340px,.9fr);align-items:center;gap:12px;padding:55px 0 45px;border-bottom:1px solid var(--line);position:relative;overflow:hidden}.hero-copy{position:relative;z-index:2}.hero p{font-size:clamp(17px,2vw,22px);max-width:470px;color:#d1c9ba}.hero-caption{display:block;margin-top:55px;font:700 11px Barlow,Arial,sans-serif;letter-spacing:.17em;text-transform:uppercase;color:#918f89}.hero-art{height:490px;position:relative;display:grid;place-items:center;isolation:isolate}.track-ring{width:490px;height:490px;border:1px solid #e9dec02b;border-radius:50%;position:absolute;transform:rotate(-18deg) scaleX(1.26)}.track-ring:before,.track-ring:after{content:'';position:absolute;inset:29px;border:1px dashed #f56a405e;border-radius:50%}.track-ring:after{inset:65px;border-color:#e9dec025}.hero-grid{width:min(76%,350px);aspect-ratio:1;display:grid;grid-template-columns:repeat(3,1fr);gap:6px;transform:rotate(-12deg) skew(3deg);filter:drop-shadow(20px 25px 10px #000a)}.hero-grid span{display:grid;place-items:center;background:linear-gradient(145deg,#343531,#171819);border:1px solid #81796b;color:#c4baaa;font:900 38px 'Barlow Condensed','Arial Narrow',sans-serif}.hero-grid .hero-tile{background:#e9623d;color:#10100f;display:flex;flex-direction:column;justify-content:center;gap:4px;border:3px solid #ffbe84}.hero-tile b{font:900 64px 'Barlow Condensed','Arial Narrow',sans-serif}.hero-tile i{font:900 12px Barlow,Arial,sans-serif;letter-spacing:.1em}.hero-number{position:absolute;right:0;bottom:-45px;font:900 200px 'Barlow Condensed','Arial Narrow',sans-serif;color:#ffffff08;z-index:-1}
.btn{border:1px solid var(--gold);background:var(--gold);border-radius:0;color:#111;min-height:50px;text-transform:uppercase;letter-spacing:.05em;box-shadow:5px 5px 0 #b94327;font-size:13px}.btn:hover{filter:brightness(1.13)}.btn.secondary{box-shadow:none;color:#f5f0e6;border-color:#8a7363}.btn.ghost{box-shadow:none}.panel{background:#191a1ae8;border:1px solid #5d5850;border-radius:0}.rules{border-top:3px solid var(--gold);padding:26px 4px}.rule-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:25px}.rule-steps p{border-top:1px solid var(--line);padding-top:18px;font-size:15px}.rule-steps b{display:block;color:var(--gold);font:900 30px 'Barlow Condensed','Arial Narrow',sans-serif;margin-bottom:12px}.board{gap:6px;background:#363631;padding:6px;transform:rotate(0)}.cell{border-radius:0;background:#232624;border:1px solid #626257}.cell.available{background:#453127;border:1px solid var(--gold)}.card{border-radius:2px;background:linear-gradient(160deg,color-mix(in srgb,var(--accent) 23%,#23221e),#141615 68%);border:2px solid var(--accent);box-shadow:4px 6px 0 #0009;transform:skew(-1deg)}.card .category{font-weight:900;color:#e5dbcb}.car-shape{height:30%;width:80%;background:linear-gradient(175deg,#faf7ec 0%,var(--accent) 32%,#171b1b 45%,var(--accent) 61%,#c2ad8d 100%);clip-path:polygon(3% 72%,10% 40%,25% 35%,36% 12%,70% 12%,84% 39%,95% 48%,100% 72%,91% 80%,86% 97%,73% 97%,69% 80%,31% 80%,28% 97%,14% 97%,10% 79%);border-radius:0;box-shadow:none;transform:none}.stats span{border:1px solid #ffffff2b;border-radius:0;background:#101211e8}.card .label{text-transform:uppercase;letter-spacing:.035em}.match-link{border-radius:0;background:#20211f}.pill{border-radius:0;text-transform:uppercase;letter-spacing:.06em}footer{border-top:2px solid var(--gold)}
@media(max-width:800px){.hero{grid-template-columns:1fr;min-height:auto;padding:42px 0 22px}.hero-copy{z-index:2}.hero-art{height:300px;grid-row:2;opacity:.9}.track-ring{width:330px;height:330px}.hero-grid{width:230px}.hero-grid span{font-size:26px}.hero-tile b{font-size:46px}.hero-caption{margin-top:34px}.rule-steps{grid-template-columns:1fr;gap:0}.rules{padding:22px 0}.hero-number{font-size:120px;bottom:-20px}.arena{display:block}}
@media(max-width:430px){h1{font-size:clamp(54px,15vw,76px)}.hero-art{height:260px}.hero-grid{width:210px}.track-ring{width:270px;height:270px}.hero-caption{font-size:9px}.brand{font-size:18px}.shell{padding:0 16px}}
/* V0.3 cards: typography first, no placeholder vehicle silhouette. */
.cards-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:24px 16px}.collection-item{min-width:0}.collection-item .card{max-width:none;width:100%;aspect-ratio:3/4}.collection-item>a{display:inline-block;color:#d6cfc1;font-size:12px;margin-top:10px;text-underline-offset:4px}.collection-item>a:hover{color:var(--gold)}
.card{padding:0;display:block;isolation:isolate;text-align:left;border:1px solid color-mix(in srgb,var(--accent) 70%,#d9d0be);background:linear-gradient(146deg,color-mix(in srgb,var(--accent) 16%,#2a2a27),#111311 56%);box-shadow:0 8px 0 #080908,0 16px 25px #0008;transform:none;overflow:hidden}.card:before{content:'';position:absolute;inset:5px;border:1px solid #ffffff29;pointer-events:none}.card:after{content:'';position:absolute;width:85%;height:68%;background:linear-gradient(90deg,transparent,var(--accent),transparent);opacity:.12;transform:rotate(-30deg);right:-30%;top:18%;pointer-events:none}.card-top{height:14%;display:flex;align-items:center;justify-content:space-between;padding:0 8%;border-bottom:1px solid #ffffff33;position:relative;z-index:1}.card-no{font-size:clamp(9px,1vw,12px);color:var(--accent);font-weight:900;letter-spacing:.12em}.card .category{font-size:clamp(8px,.8vw,10px);color:#e8e3d8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:70%}.card-identity{position:absolute;z-index:2;top:17%;left:8%;right:7%;display:grid;gap:2px}.card-brand{font-size:clamp(10px,1.1vw,13px);color:var(--accent);letter-spacing:.17em;text-transform:uppercase;font-weight:900}.card-model{font-family:'Barlow Condensed','Arial Narrow',sans-serif;font-size:clamp(16px,1.8vw,25px);line-height:1.02;letter-spacing:.02em;text-transform:uppercase;color:#faf5eb;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-height:2.05em}.card-center{position:absolute;inset:37% 0 19%;display:grid;place-items:center;overflow:hidden}.card-mark{font-family:'Barlow Condensed','Arial Narrow',sans-serif;font-size:clamp(50px,6vw,92px);line-height:.8;letter-spacing:-.05em;color:var(--accent);opacity:.23;transform:skew(-14deg)}.card-stroke{position:absolute;width:120%;height:4px;background:var(--accent);left:-10%;top:60%;transform:rotate(-13deg);opacity:.55}.card-bottom{position:absolute;bottom:0;left:0;right:0;height:15%;border-top:1px solid #ffffff40;background:#0d100fea;display:flex;align-items:center;justify-content:space-between;gap:3px;padding:0 8%;font-size:clamp(8px,.9vw,11px);font-weight:900;z-index:3}.card-power{color:#f9f5e9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-index{color:var(--accent);letter-spacing:.08em;white-space:nowrap}.card .stats{position:absolute;inset:38% 10% 19%;height:auto;width:auto;z-index:4;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);font-size:clamp(15px,2vw,25px);pointer-events:none}.card .stats span{display:grid;place-items:center;background:#0c0f0de8;color:#f6f2e8;min-width:1.5em;min-height:1.5em;border:1px solid color-mix(in srgb,var(--accent) 60%,#ded8cf);font-family:'Barlow Condensed','Arial Narrow',sans-serif}.card .stats .north{grid-area:1/2;align-self:start}.card .stats .east{grid-area:2/3;justify-self:end}.card .stats .south{grid-area:3/2;align-self:end}.card .stats .west{grid-area:2/1;justify-self:start}.card.selected{transform:translateY(-8px);box-shadow:0 0 0 3px var(--gold),0 16px 25px #060a14}
.board .card{height:100%;max-width:none}.board .card-top{padding:0 6%}.board .card-identity{top:15%;left:6%;right:5%}.board .card-brand{font-size:clamp(6px,.9vw,9px)}.board .card-model{font-size:clamp(10px,1.3vw,16px)}.board .card-no,.board .card .category{font-size:clamp(6px,.8vw,9px)}.board .card .stats{font-size:clamp(10px,1.5vw,20px);inset:42% 5% 15%}.board .card-bottom{height:14%;padding:0 5%;font-size:clamp(6px,.8vw,9px)}.hand .card{max-width:none}.hand .card-brand{font-size:9px}.hand .card-model{font-size:clamp(11px,1.5vw,18px)}.hand .card .stats{font-size:clamp(12px,2vw,18px)}
@media(max-width:760px){.cards-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 10px}.collection-item .card-brand{font-size:11px}.collection-item .card-model{font-size:clamp(16px,4vw,24px)}.collection-item .card .stats{font-size:clamp(16px,4.3vw,23px)}.board .card .category{display:none}.board .card-no{font-size:7px}.board .card-brand{font-size:7px}.board .card-model{font-size:clamp(9px,2.2vw,13px)}.board .card .stats{font-size:clamp(10px,3.4vw,16px)}.board .card-bottom{font-size:7px}.board .card-index{display:none}.hand .card .stats{font-size:clamp(12px,4vw,16px)}}
@media(max-width:370px){.cards-grid{gap:10px}.board .card-model{font-size:9px}.board .card .stats{font-size:10px}}


/* Drift9 v0.4 — TCG card anatomy: art upper half, information lower half, stats in border. */
.card{aspect-ratio:63/88;position:relative;padding:0;border-width:2px;background:#111311}
.card-top{height:9%;padding:0 7%;background:#0b0d0c;border-bottom:1px solid #ffffff28}
.card-rarity{font-family:'Barlow Condensed','Arial Narrow',sans-serif;font-size:clamp(10px,1vw,13px);color:var(--accent);letter-spacing:.08em}
.card-art{position:absolute;inset:9% 5% 45%;overflow:hidden;border-bottom:1px solid #ffffff30;background:linear-gradient(145deg,color-mix(in srgb,var(--accent) 22%,#262824),#0e100f 76%)}
.card-art .card-brand{position:absolute;left:6%;top:7%;z-index:2}
.card-art .card-model{position:absolute;left:6%;right:6%;top:20%;z-index:2}
.card-art .card-mark{position:absolute;right:6%;bottom:0;font-family:'Barlow Condensed','Arial Narrow',sans-serif;font-size:clamp(52px,7vw,108px);line-height:.75;color:var(--accent);opacity:.18;transform:skew(-12deg)}
.card-info{position:absolute;left:5%;right:5%;top:57%;bottom:7%;padding:8% 7% 5%;display:flex;flex-direction:column;justify-content:flex-end;gap:4px;background:#0d100ff2;border-top:1px solid #ffffff24;font-size:clamp(7px,.8vw,10px);text-transform:uppercase;letter-spacing:.035em}
.card-meta{display:flex;align-items:center;justify-content:space-between;gap:6px;border-top:1px solid #ffffff14;padding-top:4px;color:#ddd7cc}
.card-meta span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.card .stats{position:absolute;inset:7% 2.5% 3%;width:auto;height:auto;z-index:6;pointer-events:none;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr)}
.card .stats span{font-size:clamp(11px,1.6vw,20px);min-width:2em;min-height:1.6em;padding:2px 4px}
.card .stats .north{grid-area:1/2;align-self:start;justify-self:center}
.card .stats .east{grid-area:2/3;align-self:center;justify-self:end}
.card .stats .south{grid-area:3/2;align-self:end;justify-self:center}
.card .stats .west{grid-area:2/1;align-self:center;justify-self:start}
.board .card-art{inset:9% 4% 45%}.board .card-info{left:4%;right:4%;font-size:6px;padding-left:5%;padding-right:5%}.board .card .stats{inset:5% 1% 2%}
.hand .card-info{font-size:6px}.hand .card-meta:nth-child(2){display:none}
@media(max-width:760px){.collection-item .card-info{font-size:8px}.collection-item .card .stats span{font-size:clamp(12px,3.7vw,19px)}.board .card-info{display:none}.board .card-art{bottom:10%}.hand .card-info{display:none}.hand .card-art{bottom:10%}}


/* Drift9 v0.4 admin + solo */
.solo-panel{border:1px solid #6e5a4d;background:linear-gradient(110deg,#1b1a18,#2c211b);padding:24px;margin:24px 0}
.admin-head{display:flex;align-items:end;justify-content:space-between;gap:18px;margin:30px 0 16px}.admin-head h1{margin-bottom:0}
.admin-nav{display:flex;gap:8px;margin-bottom:18px;position:sticky;top:8px;z-index:8;background:#0b0c0de8;padding:8px 0;backdrop-filter:blur(10px)}
.admin-layout{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(340px,.95fr);gap:18px;align-items:start}
.admin-form{position:sticky;top:74px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.form-grid.compact{grid-template-columns:repeat(4,minmax(0,1fr))}
.admin-form label{display:grid;gap:6px;color:#d9d1c5;font-size:12px}.admin-form .input{text-transform:none;letter-spacing:0;width:100%;max-width:none}
.admin-form select.input{appearance:auto}.check{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center;gap:9px!important;margin:16px 0}.check input{width:auto}
.rarity-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:7px}.rarity-grid label{text-align:center}.rarity-grid .input{text-align:center;padding:10px 6px}
.admin-items{display:grid;gap:8px;max-height:72vh;overflow:auto;padding-right:4px}.admin-item{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid #494743;background:#121413;padding:12px}
.admin-item>div:first-child{min-width:0;display:grid;gap:4px}.admin-item strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-item span{font-size:11px;color:var(--muted)}
.admin-item-actions{display:flex;gap:6px;align-items:center;flex:0 0 auto}.admin-item-actions .btn{min-height:34px;padding:7px 9px;font-size:10px}.admin-item.archived{opacity:.48}
.admin-list h2,.admin-form h2{margin-bottom:12px}.admin-form h3{font-size:18px;margin:20px 0 8px}
.card-logo{max-width:44px;max-height:20px;object-fit:contain;filter:grayscale(1) brightness(2)}
@media(max-width:920px){.admin-layout{grid-template-columns:1fr}.admin-form{position:static}.admin-items{max-height:none}.form-grid.compact{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.admin-head{align-items:start;flex-direction:column}.form-grid{grid-template-columns:1fr}.rarity-grid{grid-template-columns:repeat(3,1fr)}.admin-item{align-items:flex-start;flex-direction:column}.admin-item-actions{width:100%}.admin-item-actions .btn{flex:1}.solo-panel{padding:18px}}


/* Drift9 v0.5 — Arnaud-inspired compact trading card */
.cards-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:22px}
.collection-item{display:grid;gap:8px}.collection-item>a{font-size:11px;color:var(--muted);text-decoration:none}
.card{
  --accent:#d8d2c8;
  width:100%;
  max-width:250px;
  aspect-ratio:63/88;
  padding:0;
  border:3px solid var(--accent);
  border-radius:18px;
  background:#f5f2ea;
  color:#101211;
  overflow:hidden;
  position:relative;
  display:grid;
  grid-template-rows:auto minmax(0,1.28fr) minmax(82px,.72fr) auto;
  align-items:stretch;
  transform:none;
  box-shadow:0 12px 28px #0007;
  text-align:left;
}
.card:before{content:"";position:absolute;inset:6px;border:2px solid #111;border-radius:13px;pointer-events:none;z-index:5}
.card-nameplate{height:38px;margin:10px 13px 0;padding:0 10px;display:flex;align-items:center;justify-content:space-between;gap:8px;border-bottom:2px solid #111;text-transform:uppercase;font-weight:900;line-height:1;z-index:3}
.card-maker{font-size:clamp(10px,1.2vw,14px);letter-spacing:.045em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card-model-name{font-size:clamp(10px,1.15vw,14px);color:color-mix(in srgb,var(--accent) 70%,#111);text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card-visual{margin:0 13px;position:relative;border:2px solid #111;border-top:0;background:linear-gradient(155deg,#dfe7eb,#fff 70%);overflow:hidden;min-height:0}
.card-vehicle-image{width:100%;height:100%;object-fit:cover;display:block}
.card-vehicle-placeholder{height:100%;min-height:150px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:8px;background:
  linear-gradient(160deg,color-mix(in srgb,var(--accent) 22%,#e7ebed),#fff 62%),
  repeating-linear-gradient(90deg,transparent 0 24px,#11108 24px 25px)}
.card-vehicle-placeholder span{font:900 clamp(46px,6vw,72px) 'Barlow Condensed','Arial Narrow',sans-serif;letter-spacing:-.04em;color:#1112}
.card-vehicle-placeholder strong{font:900 clamp(12px,1.5vw,17px) 'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase;color:#111b;max-width:82%;text-align:center}
.card-rarity{position:absolute;top:8px;right:8px;min-width:30px;height:30px;display:grid;place-items:center;border:2px solid #111;background:var(--accent);font-weight:900;font-size:11px;z-index:2}
.stats-diamond{
  position:absolute;
  left:50%;
  top:56%;
  width:96px;
  height:96px;
  transform:translate(-50%,-50%) rotate(45deg);
  display:grid;
  grid-template-columns:1fr 1fr;
  grid-template-rows:1fr 1fr;
  background:#fff;
  border:3px solid #111;
  z-index:7;
  box-shadow:0 4px 0 #0002
}
.stats-diamond span{display:grid;place-items:center;border:1px solid #111;font:900 19px/1 Barlow,Arial,sans-serif;transform:rotate(-45deg);background:#fff}
.stats-diamond .north{grid-area:1/1}.stats-diamond .east{grid-area:1/2}.stats-diamond .west{grid-area:2/1}.stats-diamond .south{grid-area:2/2}
.card-body{margin:0 13px;padding:34px 10px 8px;border-left:2px solid #111;border-right:2px solid #111;background:#fff;display:grid;gap:7px;align-content:start;min-height:0}
.card-id-row{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:26px}
.card-brand-lockup{display:flex;align-items:center;min-height:24px}.card-brand-word{font:900 13px Barlow,Arial,sans-serif;letter-spacing:.06em;text-transform:uppercase}.card-logo{max-width:62px;max-height:26px;object-fit:contain;filter:none}
.card-country{font-size:26px;line-height:1}
.card-specs{display:flex;gap:6px;flex-wrap:wrap}.card-specs span{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;border:1px solid #111;padding:4px 6px;background:#f2f0ea}
.card-signature{margin:0!important;color:#4d4b47!important;font-size:10px!important;line-height:1.25!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card-footer{height:36px;margin:0 13px 10px;padding:0 10px;border:2px solid #111;border-top:2px solid #111;display:flex;align-items:center;justify-content:space-between;gap:8px;background:#fff;text-transform:uppercase;font-weight:900;font-size:11px}
.card-footer span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.card.owned{outline:4px solid var(--mine);outline-offset:1px}.card.enemy{outline:4px solid var(--theirs);outline-offset:1px}.card.selected{transform:translateY(-7px);box-shadow:0 0 0 4px var(--gold),0 18px 32px #0009}
.rarity-c{--accent:#e8e5df}.rarity-nc{--accent:#7ad98b}.rarity-r{--accent:#69a4ff}.rarity-sr{--accent:#b181ff}.rarity-ur{--accent:#f2d354}.rarity-ss{--accent:#ff665c}
.catalogue-intro{max-width:760px}.catalogue-toolbar{display:grid;grid-template-columns:minmax(180px,1.2fr) minmax(160px,.8fr) minmax(160px,.8fr) auto;gap:10px;align-items:center;margin:20px 0 24px}
.catalogue-toolbar .input{width:100%;max-width:none;text-transform:none;letter-spacing:0}.catalogue-toolbar .pill{white-space:nowrap;text-align:center}
.board .card{max-width:none;border-radius:7px;border-width:2px}
.board .card:before{inset:3px;border-width:1px;border-radius:4px}
.board .card-nameplate{height:18px;margin:4px 5px 0;padding:0 3px;border-bottom-width:1px}.board .card-maker,.board .card-model-name{font-size:6px}
.board .card-visual{margin:0 5px;border-width:1px}.board .card-rarity{width:14px;min-width:14px;height:14px;top:3px;right:3px;border-width:1px;font-size:5px}
.board .card-vehicle-placeholder{min-height:0}.board .card-vehicle-placeholder span{font-size:20px}.board .card-vehicle-placeholder strong{display:none}
.board .stats-diamond{width:38px;height:38px;border-width:1px;top:55%}.board .stats-diamond span{font-size:8px;border-width:.5px}
.board .card-body{margin:0 5px;padding:14px 3px 2px;border-width:1px;gap:2px}.board .card-id-row{min-height:10px}.board .card-brand-word{font-size:5px}.board .card-logo{max-width:18px;max-height:8px}.board .card-country{font-size:8px}.board .card-specs,.board .card-signature{display:none}
.board .card-footer{height:14px;margin:0 5px 4px;padding:0 3px;border-width:1px;font-size:5px}
.hand .card{max-width:none}.hand .card-nameplate{height:24px;margin:6px 7px 0;padding:0 5px}.hand .card-maker,.hand .card-model-name{font-size:8px}.hand .card-visual{margin:0 7px}.hand .stats-diamond{width:56px;height:56px;top:56%;border-width:2px}.hand .stats-diamond span{font-size:11px}.hand .card-body{margin:0 7px;padding:22px 5px 4px;gap:3px}.hand .card-country{font-size:13px}.hand .card-brand-word{font-size:7px}.hand .card-logo{max-width:28px;max-height:12px}.hand .card-specs span{font-size:5px;padding:2px 3px}.hand .card-signature{display:none}.hand .card-footer{height:20px;margin:0 7px 6px;padding:0 5px;font-size:7px}
@media(max-width:760px){.catalogue-toolbar{grid-template-columns:1fr 1fr}.catalogue-toolbar .catalogue-search{grid-column:1/-1}.cards-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.cards-grid .card{max-width:none}.card-nameplate{height:31px;margin:8px 10px 0}.card-visual,.card-body,.card-footer{margin-left:10px;margin-right:10px}.stats-diamond{width:74px;height:74px}.stats-diamond span{font-size:14px}.card-body{padding-top:27px}.card-footer{margin-bottom:8px}.card-country{font-size:20px}}
@media(max-width:390px){.cards-grid{grid-template-columns:1fr}.catalogue-toolbar{grid-template-columns:1fr}.catalogue-toolbar .catalogue-search{grid-column:auto}.collection-item .card{max-width:280px;margin:auto}}

/* Rarity owns the card frame; optional admin accent only affects the visual well. */
.card{--rarity:#e8e5df;--vehicle-accent:#d8d2c8;border-color:var(--rarity)}
.card-model-name{color:color-mix(in srgb,var(--rarity) 70%,#111)}
.card-rarity{background:var(--rarity)}
.card-vehicle-placeholder{background:linear-gradient(160deg,color-mix(in srgb,var(--vehicle-accent) 22%,#e7ebed),#fff 62%),repeating-linear-gradient(90deg,transparent 0 24px,#11108 24px 25px)}
.rarity-c{--rarity:#e8e5df}.rarity-nc{--rarity:#7ad98b}.rarity-r{--rarity:#69a4ff}.rarity-sr{--rarity:#b181ff}.rarity-ur{--rarity:#f2d354}.rarity-ss{--rarity:#ff665c}


/* Drift9 v0.6 — match-first responsive game system */
:root{
  --you:#ff6b3d;
  --rival:#62a7ff;
  --ink:#0b0c0d;
  --paper:#f5f0e6;
  --race-panel:#171918;
  --race-panel-2:#202321;
}

/* Cards: Arnaud's hierarchy, Drift9's visual language */
.card{
  --rarity:#b8b5ad;
  --vehicle-accent:#5b5f5b;
  width:100%;
  max-width:250px;
  aspect-ratio:63/88;
  padding:0;
  border:1px solid color-mix(in srgb,var(--rarity) 62%,#242522);
  border-radius:5px;
  background:
    linear-gradient(160deg,color-mix(in srgb,var(--vehicle-accent) 12%,#232522),#101211 55%),
    #101211;
  color:var(--paper);
  overflow:hidden;
  position:relative;
  display:grid;
  grid-template-rows:auto minmax(0,1.34fr) minmax(72px,.66fr) auto;
  align-items:stretch;
  transform:none;
  box-shadow:5px 7px 0 #0008;
  text-align:left;
}
.card:before{
  content:"";
  position:absolute;
  inset:4px;
  border:1px solid #ffffff16;
  border-radius:2px;
  pointer-events:none;
  z-index:5;
}
.card:after{
  content:"";
  position:absolute;
  left:0;top:0;bottom:0;width:4px;
  background:var(--rarity);
  opacity:.95;
  z-index:6;
}
.card-nameplate{
  min-height:34px;
  margin:0;
  padding:8px 9px 7px 12px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:7px;
  border:0;
  border-bottom:1px solid #ffffff18;
  background:linear-gradient(90deg,#282a27,#151715);
  text-transform:uppercase;
  font-weight:900;
  line-height:1;
  z-index:3;
}
.card-maker{font:900 10px/1 Barlow,Arial,sans-serif;letter-spacing:.12em;color:#d8d2c6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card-model-name{font:900 10px/1 Barlow,Arial,sans-serif;letter-spacing:.02em;color:var(--rarity);text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card-visual{
  margin:0;
  position:relative;
  border:0;
  border-bottom:1px solid #ffffff16;
  background:
    linear-gradient(135deg,#ffffff08,transparent 32%),
    repeating-linear-gradient(90deg,transparent 0 39px,#ffffff05 40px),
    #202320;
  overflow:hidden;
  min-height:0;
}
.card-visual:after{
  content:"";
  position:absolute;
  left:-10%;right:-10%;bottom:14%;
  height:1px;
  background:linear-gradient(90deg,transparent,var(--you),transparent);
  opacity:.45;
  transform:rotate(-5deg);
}
.card-vehicle-image{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.86) contrast(1.05)}
.card-vehicle-placeholder{
  height:100%;min-height:120px;
  display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;
  background:
    radial-gradient(circle at 65% 38%,color-mix(in srgb,var(--vehicle-accent) 30%,transparent),transparent 38%),
    linear-gradient(155deg,#272a27,#131513 72%);
}
.card-vehicle-placeholder span{font:900 clamp(38px,5vw,62px)/1 'Barlow Condensed','Arial Narrow',sans-serif;letter-spacing:-.06em;color:#ffffff0e;font-style:italic}
.card-vehicle-placeholder strong{font:900 clamp(9px,1.2vw,13px)/1.05 Barlow,Arial,sans-serif;text-transform:uppercase;color:#f5f0e699;max-width:78%;text-align:center;letter-spacing:.05em}
.card-rarity{
  position:absolute;top:7px;right:7px;min-width:27px;height:23px;
  display:grid;place-items:center;border:1px solid #000;
  background:var(--rarity);color:#0c0d0c;
  font:900 9px/1 Barlow,Arial,sans-serif;z-index:8;
  box-shadow:2px 2px 0 #0008;
}
.stats-diamond{
  position:absolute;
  left:50%;top:56%;
  width:84px;height:84px;
  transform:translate(-50%,-50%) rotate(45deg);
  display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;
  background:#111311;
  border:2px solid #d8d2c5;
  z-index:9;
  box-shadow:5px 5px 0 #0007;
}
.stats-diamond span{
  display:grid;place-items:center;
  border:1px solid #4c4d48;
  font:900 16px/1 'Barlow Condensed','Arial Narrow',sans-serif;
  transform:rotate(-45deg);
  background:#151715;color:#f6efe3;
}
.stats-diamond span:after{font:700 5px/1 Barlow,Arial,sans-serif;color:#928e84;position:absolute;letter-spacing:.03em}
.stats-diamond .north{grid-area:1/1}.stats-diamond .east{grid-area:1/2}.stats-diamond .west{grid-area:2/1}.stats-diamond .south{grid-area:2/2}
.card-body{
  margin:0;
  padding:28px 10px 7px 12px;
  border:0;
  background:linear-gradient(180deg,#1b1d1b,#121412);
  display:grid;gap:5px;align-content:start;min-height:0;
}
.card-id-row{display:flex;justify-content:space-between;align-items:center;gap:10px;min-height:21px}
.card-brand-lockup{display:flex;align-items:center;min-height:18px}
.card-brand-word{font:900 9px Barlow,Arial,sans-serif;letter-spacing:.09em;text-transform:uppercase;color:#e5ded2}
.card-logo{max-width:52px;max-height:19px;object-fit:contain;filter:grayscale(1) brightness(2)}
.card-country{font-size:19px;line-height:1;filter:saturate(.82)}
.card-specs{display:flex;gap:4px;flex-wrap:wrap}
.card-specs span{font-size:7px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;border:1px solid #4b4b46;padding:3px 5px;background:#242623;color:#c9c2b6}
.card-signature{margin:0!important;color:#85827a!important;font-size:8px!important;line-height:1.2!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card-footer{
  min-height:27px;margin:0;padding:0 9px 0 12px;
  border:0;border-top:1px solid #44443f;
  display:flex;align-items:center;justify-content:space-between;gap:7px;
  background:#0f110f;text-transform:uppercase;font-weight:900;font-size:8px;color:#d4cec2;
}
.card-footer span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.card-owner-tag{
  position:absolute;left:8px;top:42px;z-index:12;
  padding:4px 6px;
  font:900 7px/1 Barlow,Arial,sans-serif;letter-spacing:.1em;
  color:#080908;background:var(--you);
  box-shadow:2px 2px 0 #0008;
}
.card.enemy .card-owner-tag{background:var(--rival)}
.card.owned,.card.enemy{outline:none!important}
.card.owned{border-color:var(--you);box-shadow:inset 4px 0 0 var(--you),5px 7px 0 #0008,0 0 18px #ff6b3d18}
.card.enemy{border-color:var(--rival);box-shadow:inset 4px 0 0 var(--rival),5px 7px 0 #0008,0 0 18px #62a7ff16}
.card.owned .card-nameplate{background:linear-gradient(90deg,#402117,#171817)}
.card.enemy .card-nameplate{background:linear-gradient(90deg,#172b42,#171817)}
.card.selected{transform:translateY(-4px)!important;box-shadow:0 0 0 2px var(--you),6px 10px 0 #0009!important}

/* Match layout */
.match-page{max-width:1180px;margin:0 auto;padding-bottom:40px}
.match-topbar{
  min-height:66px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:18px;
  margin:8px 0 14px;border-bottom:1px solid #504c45;padding-bottom:9px;
}
.match-back{margin:0;justify-self:start}
.match-context{text-align:center;display:grid;gap:3px}.match-context strong{font:900 18px 'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase;letter-spacing:.04em}
.match-actions{justify-self:end;display:flex;align-items:center;gap:8px}
.match-rule-btn,.race-rules{
  border:1px solid #5b5750;background:transparent;color:#d6cfc2;
  padding:9px 11px;text-transform:uppercase;letter-spacing:.08em;font:800 10px Barlow,Arial,sans-serif
}
.match-rule-btn:hover,.race-rules:hover{border-color:var(--you);color:#fff}
.turn-light{border:1px solid #494740;padding:9px 11px;font:900 10px Barlow,Arial,sans-serif;letter-spacing:.1em;color:#87847d}
.turn-light.active{background:var(--you);border-color:var(--you);color:#111;box-shadow:4px 4px 0 #8d321a}

.live-score{
  display:grid;grid-template-columns:minmax(120px,180px) minmax(240px,1fr) minmax(120px,180px);
  align-items:stretch;gap:1px;margin:14px 0 20px;
  background:#545049;border:1px solid #545049;
}
.score-player{
  min-height:112px;padding:14px 16px;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto 1fr auto;
  background:#161817;position:relative;overflow:hidden
}
.score-player:before{content:"";position:absolute;inset:0 auto 0 0;width:5px;background:var(--you)}
.score-player.rival:before{left:auto;right:0;background:var(--rival)}
.score-player.rival{text-align:right}
.score-player>span:first-child{font:900 10px Barlow,Arial,sans-serif;letter-spacing:.16em;color:var(--you)}
.score-player.rival>span:first-child{color:var(--rival);grid-column:1}
.score-player>strong{grid-row:1/3;grid-column:2;font:900 54px/1 'Barlow Condensed','Arial Narrow',sans-serif;color:#f5f0e6;align-self:center}
.score-player.rival>strong{grid-column:1;grid-row:1/3}
.score-player>small{font-size:10px;color:#8d8a82;align-self:end;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.score-player.rival>small{grid-column:2}
.round-dots{display:flex;gap:4px;align-items:end}.score-player.rival .round-dots{justify-content:flex-end;grid-column:2}
.round-dots i{width:13px;height:4px;background:#3b3c38;display:block}.round-dots.you i.won{background:var(--you)}.round-dots.rival i.won{background:var(--rival)}
.score-center{background:#202220;padding:14px 18px;display:flex;flex-direction:column;justify-content:center;gap:7px;text-align:center}
.score-round{font:900 9px Barlow,Arial,sans-serif;letter-spacing:.2em;color:#817e77}
.score-meter{height:8px;background:var(--rival);position:relative;overflow:hidden}
.score-meter i{position:absolute;inset:0 auto 0 0;background:var(--you);transition:width .4s cubic-bezier(.2,.8,.2,1)}
.score-message{font:900 14px/1.1 Barlow,Arial,sans-serif;text-transform:uppercase;color:#eee6d8}
.move-impact{font:900 9px Barlow,Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--you)}
.live-score.score-updated .score-player>strong{animation:scorePop .38s ease-out}

.battle-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:18px;align-items:start}
.board-panel{border-top:3px solid var(--you);background:#171918;padding:14px}
.board-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:11px}
.ownership-key{display:flex;gap:10px;font:800 8px Barlow,Arial,sans-serif;letter-spacing:.09em;text-transform:uppercase;color:#8f8c84}
.ownership-key span:before{content:"";display:inline-block;width:12px;height:4px;margin-right:5px;vertical-align:middle}.key-you:before{background:var(--you)}.key-rival:before{background:var(--rival)}
.board{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));
  gap:7px;aspect-ratio:1;width:min(100%,660px);max-width:none;margin:0 auto;padding:7px;
  background:
    linear-gradient(90deg,transparent 49.7%,#ffffff05 50%,transparent 50.3%),
    linear-gradient(0deg,transparent 49.7%,#ffffff05 50%,transparent 50.3%),
    #0d0f0e;
  border:1px solid #4b4a45;
}
.cell{
  border-radius:0;padding:3px;min-width:0;min-height:0;
  background:#1b1e1c;border:1px solid #424440;color:#74766f;
  display:grid;place-items:center;position:relative;overflow:visible
}
.cell.empty{border-style:dashed;background:linear-gradient(135deg,#171917,#111311)}
.cell.empty.drop-ready{cursor:crosshair}
.cell.empty.available,.cell.empty.drop-target{border-style:solid;border-color:var(--you);background:#2b1d18;box-shadow:inset 0 0 0 2px #ff6b3d25}
.cell.empty.drop-target{animation:dropPulse .7s infinite alternate}
.cell-cross{font:900 24px/1 Barlow,Arial,sans-serif;color:#ffffff16}.cell.empty small{position:absolute;bottom:6px;font:800 6px Barlow,Arial,sans-serif;letter-spacing:.16em;color:#ff6b3d70}
.cell.committing{pointer-events:none}
.board .card{
  width:100%;height:100%;max-width:none;aspect-ratio:auto;
  border-radius:2px;box-shadow:none;
  grid-template-rows:20px 1fr 16px;
}
.board .card:before{inset:2px;border-radius:0}
.board .card-nameplate{min-height:20px;height:20px;padding:4px 4px 3px 6px;margin:0}
.board .card-maker,.board .card-model-name{font-size:clamp(5px,.65vw,8px)}
.board .card-maker{letter-spacing:.05em}
.board .card-visual{margin:0;min-height:0}
.board .card-rarity{min-width:16px;width:16px;height:14px;top:3px;right:3px;font-size:5px;border-width:1px}
.board .card-vehicle-placeholder{min-height:0}.board .card-vehicle-placeholder span{font-size:clamp(17px,3vw,35px)}.board .card-vehicle-placeholder strong{font-size:clamp(5px,.7vw,8px)}
.board .stats-diamond{width:clamp(37px,6.2vw,64px);height:clamp(37px,6.2vw,64px);top:58%;border-width:1px;box-shadow:2px 2px 0 #0007}
.board .stats-diamond span{font-size:clamp(7px,1.25vw,12px);border-color:#3f403c}
.board .card-body{display:none!important}
.board .card-footer{min-height:16px;height:16px;margin:0;padding:0 4px 0 6px;font-size:clamp(4px,.6vw,7px)}
.board .card-owner-tag{left:4px;top:24px;padding:2px 3px;font-size:4px;letter-spacing:.04em}
.board .card.owned{box-shadow:inset 4px 0 0 var(--you),0 0 0 1px var(--you)!important}
.board .card.enemy{box-shadow:inset 4px 0 0 var(--rival),0 0 0 1px var(--rival)!important}

.race-panel{background:#171918;border:1px solid #4a4842;border-top:3px solid #6b665c;padding:16px;display:grid;gap:15px}
.race-status{display:grid;grid-template-columns:10px 1fr;gap:5px 9px;border-top:1px solid #46443f;border-bottom:1px solid #46443f;padding:13px 0}
.race-status i{width:9px;height:9px;background:#555750;align-self:center}.race-status.your-turn i{background:var(--you);box-shadow:0 0 12px #ff6b3d88}
.race-status strong{font:900 14px Barlow,Arial,sans-serif;letter-spacing:.09em}.race-status span{grid-column:2;font-size:9px;color:#89867e}
.race-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}
.race-kpis div{background:#222421;padding:9px 7px;display:grid;gap:5px}.race-kpis span{font-size:7px;text-transform:uppercase;letter-spacing:.06em;color:#77746e}.race-kpis strong{font:900 21px 'Barlow Condensed','Arial Narrow',sans-serif}
.race-rules{text-align:left;width:100%}

.hand-panel{margin-top:18px;border-top:3px solid #5d5951;background:#171918;padding:14px 14px 12px}
.hand-head{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:10px}.hand-head h3{margin:4px 0 0;font-size:18px}.hand-hint{font-size:9px;color:#85827a;text-transform:uppercase;letter-spacing:.08em}
.hand.hand-grid{
  display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr));gap:clamp(5px,1vw,12px);
  width:100%;overflow:visible!important;padding:0!important;margin:0!important;scroll-snap-type:none!important
}
.hand-card{
  min-width:0;width:100%;padding:0;border:0;background:transparent;
  display:block;touch-action:none;position:relative
}
.hand-card:disabled{opacity:.58}
.hand-card .card{width:100%;max-width:none;height:auto;aspect-ratio:63/88;box-shadow:3px 5px 0 #0008}
.hand-card.is-dragging{opacity:.25}
.hand-note{margin:9px 0 0!important;font-size:9px!important;color:#77746e!important}
.match-end-actions{display:flex;justify-content:center;margin-top:18px}

.drag-ghost.card{
  position:fixed!important;z-index:9999!important;pointer-events:none!important;
  width:130px!important;height:auto!important;max-width:none!important;
  left:0;top:0;transform:translate(-50%,-62%) rotate(-4deg)!important;
  opacity:.92;box-shadow:12px 16px 30px #000b!important;
  transition:none!important;
}
body.dragging-card{cursor:grabbing}

/* Rules in-match */
.rules-dialog{width:min(760px,calc(100vw - 24px));max-height:90vh;padding:0;border:1px solid #5a564e;background:#101210;color:#f5f0e6;box-shadow:0 30px 100px #000c}
.rules-dialog::backdrop{background:#050605d9;backdrop-filter:blur(4px)}
.rules-card{padding:22px}.rules-head{display:flex;justify-content:space-between;gap:18px;align-items:start;border-bottom:1px solid #4b4842;padding-bottom:14px;margin-bottom:14px}
.rules-head h2{margin:5px 0 0;font-size:34px}.rules-close{width:38px;height:38px;border:1px solid #57534c;background:#1c1e1c;color:#fff;font-size:24px}
.rules-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.rules-grid article{background:#1b1d1b;padding:13px;border-left:3px solid #514e47}.rules-grid b{display:block;color:var(--you);font:900 20px 'Barlow Condensed','Arial Narrow',sans-serif}.rules-grid strong{font:900 11px Barlow,Arial,sans-serif;text-transform:uppercase;letter-spacing:.08em}.rules-grid p{font-size:11px;margin:6px 0 0;color:#a8a39a}
.rules-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:10px}.rules-stats span{background:#222421;padding:10px;display:grid;gap:3px}.rules-stats i{font:900 20px 'Barlow Condensed','Arial Narrow',sans-serif;color:var(--you);font-style:normal}.rules-stats b{font-size:9px;text-transform:uppercase}.rules-stats small{font-size:7px;color:#86827b}
.rules-foot{font-size:10px;margin:12px 0 0;color:#8d8980}

/* Placement / capture feedback */
.cell.just-played .card{animation:cardLand .48s cubic-bezier(.16,.9,.28,1.2)}
.cell.just-played:after{content:"";position:absolute;inset:-3px;border:2px solid var(--you);animation:impactRing .65s ease-out;pointer-events:none;z-index:20}
.cell.just-captured .card{animation:captureSwitch .72s ease both}
.cell.just-captured:after{content:"CAPTURE";position:absolute;inset:0;display:grid;place-items:center;background:#ff6b3d24;color:#fff;font:900 clamp(7px,1vw,11px) 'Barlow Condensed','Arial Narrow',sans-serif;letter-spacing:.12em;z-index:25;animation:captureFlash .78s ease both;pointer-events:none}

@keyframes cardLand{0%{transform:translateY(-28px) scale(1.08);opacity:.15}65%{transform:translateY(3px) scale(.99);opacity:1}100%{transform:none}}
@keyframes impactRing{0%{opacity:1;transform:scale(.75)}100%{opacity:0;transform:scale(1.12)}}
@keyframes captureSwitch{0%{transform:rotateY(0);filter:brightness(1)}45%{transform:rotateY(90deg) scale(.95);filter:brightness(1.8)}100%{transform:rotateY(0);filter:brightness(1)}}
@keyframes captureFlash{0%,15%{opacity:0}40%{opacity:1}100%{opacity:0}}
@keyframes scorePop{0%{transform:scale(.76);color:var(--you)}70%{transform:scale(1.1)}100%{transform:scale(1)}}
@keyframes dropPulse{from{box-shadow:inset 0 0 0 2px #ff6b3d22,0 0 0 #ff6b3d00}to{box-shadow:inset 0 0 0 2px #ff6b3d55,0 0 20px #ff6b3d33}}

/* Invitation */
.invite-panel{max-width:620px;margin:40px auto}

/* Desktop hand: five equal cards, never one odd-sized */
@media(min-width:761px){
  .hand-card .card{max-height:245px}
}

/* Tablet / phone */
@media(max-width:900px){
  .battle-layout{grid-template-columns:1fr}
  .race-panel{grid-template-columns:1fr auto;align-items:start}
  .race-panel>.eyebrow{grid-column:1/-1}.race-status{margin:0}.race-kpis{min-width:210px}.race-rules{grid-column:1/-1}
}
@media(max-width:760px){
  .match-page{margin:0 -4px}
  .match-topbar{grid-template-columns:auto 1fr auto;gap:8px;min-height:54px}
  .match-context{text-align:left}.match-context .eyebrow{display:none}.match-context strong{font-size:14px}
  .match-rule-btn{padding:8px;font-size:8px}.turn-light{padding:8px;font-size:8px}
  .live-score{grid-template-columns:84px minmax(0,1fr) 84px;margin-top:8px}
  .score-player{min-height:86px;padding:9px 10px}.score-player>strong{font-size:37px}.score-player>span:first-child{font-size:8px}.score-player>small{font-size:7px}
  .score-center{padding:9px 7px;gap:5px}.score-message{font-size:9px}.score-meter{height:6px}.move-impact{font-size:7px}.score-round{font-size:6px}
  .round-dots i{width:8px;height:3px}
  .board-panel{padding:8px}.board-head{margin-bottom:7px}.ownership-key{font-size:6px}
  .board{gap:4px;padding:4px}
  .race-panel{padding:10px;gap:8px}.race-status{padding:7px 0}.race-status strong{font-size:10px}.race-status span{font-size:7px}.race-kpis div{padding:6px 5px}.race-kpis strong{font-size:16px}
  .hand-panel{padding:9px 6px 8px;margin-top:10px}.hand-head{margin-bottom:6px}.hand-head h3{font-size:12px}.hand-hint{font-size:6px}
  .hand.hand-grid{gap:4px}
  .hand-card .card{
    aspect-ratio: .72;
    grid-template-rows:16px 1fr 13px;
    min-width:0;
  }
  .hand .card:before{inset:2px}
  .hand .card-nameplate{min-height:16px;height:16px;padding:3px 2px 2px 4px}
  .hand .card-maker,.hand .card-model-name{font-size:clamp(4px,1.45vw,6px);letter-spacing:0}
  .hand .card-model-name{max-width:55%}
  .hand .card-visual{min-height:0}
  .hand .card-rarity{min-width:13px;width:13px;height:11px;top:2px;right:2px;font-size:4px;border:0}
  .hand .card-vehicle-placeholder{min-height:0}.hand .card-vehicle-placeholder span{font-size:18px}.hand .card-vehicle-placeholder strong{font-size:4px}
  .hand .stats-diamond{width:31px;height:31px;top:59%;border-width:1px;box-shadow:1px 1px 0 #000}
  .hand .stats-diamond span{font-size:6px;border-width:.5px}
  .hand .card-body{display:none!important}
  .hand .card-footer{min-height:13px;height:13px;padding:0 2px 0 4px;font-size:4px}
  .hand .card-owner-tag{display:none}
  .hand-note{font-size:7px!important}
  .drag-ghost.card{width:96px!important}
  .rules-card{padding:14px}.rules-head h2{font-size:24px}.rules-grid{grid-template-columns:1fr}.rules-stats{grid-template-columns:1fr 1fr}
}
@media(max-width:390px){
  .live-score{grid-template-columns:72px minmax(0,1fr) 72px}
  .score-player{padding:7px}.score-player>strong{font-size:31px}.score-player>small{display:none}
  .race-panel{grid-template-columns:1fr}.race-kpis{min-width:0}.race-rules{grid-column:auto}
  .hand.hand-grid{gap:3px}
  .hand-card .card{grid-template-rows:14px 1fr 11px}
  .hand .card-nameplate{height:14px;min-height:14px}.hand .card-maker{font-size:4px}.hand .card-model-name{display:none}
  .hand .stats-diamond{width:28px;height:28px}.hand .stats-diamond span{font-size:5px}
  .hand .card-footer{height:11px;min-height:11px}.hand .card-footer span{display:none}
}
@media(prefers-reduced-motion:reduce){
  .cell.just-played .card,.cell.just-captured .card,.cell.just-captured:after,.cell.just-played:after,.live-score.score-updated .score-player>strong,.cell.empty.drop-target{animation:none!important}
  .score-meter i{transition:none}
}


/* Drift9 v0.7 — true single-screen duel + dedicated game cards */
body.match-mode{overflow:hidden}
body.match-mode .shell{
  height:100dvh;
  max-width:none;
  padding:0 clamp(8px,1.5vw,20px);
  display:grid;
  grid-template-rows:52px minmax(0,1fr);
}
body.match-mode .top{
  height:52px;
  min-height:52px;
  border-bottom:1px solid #3f3c36;
}
body.match-mode .brand{font-size:18px}
body.match-mode .brand-mark{padding:6px 5px}
body.match-mode #app{min-height:0;overflow:hidden}
body.match-mode footer{display:none}

.match-page{
  height:100%;
  min-height:0;
  max-width:1220px;
  margin:0 auto;
  padding:8px 0 10px;
  display:grid;
  grid-template-rows:38px 62px minmax(0,1fr) 146px;
  gap:8px;
  position:relative;
  overflow:hidden;
}
.match-topbar{
  min-height:0;
  height:38px;
  margin:0;
  padding:0 0 6px;
  grid-template-columns:1fr auto 1fr;
}
.match-back{font-size:11px}
.match-context{gap:1px}.match-context strong{font-size:15px}.match-context .eyebrow{font-size:8px}
.match-actions{gap:6px}
.match-rule-btn,.turn-light{padding:6px 8px;font-size:8px;min-height:28px}

.live-score{
  min-height:0;
  height:62px;
  margin:0;
  grid-template-columns:120px minmax(0,1fr) 120px;
}
.score-player{
  min-height:0;
  height:60px;
  padding:7px 10px;
  grid-template-rows:auto 1fr;
}
.score-player>strong{font-size:34px;line-height:.9;align-self:center}
.score-player>small{display:none}
.score-player>span:first-child{font-size:7px}
.round-dots{align-self:end}.round-dots i{height:3px;width:10px}
.score-center{padding:6px 10px;gap:4px}
.score-round{font-size:6px}
.score-message{font-size:10px}
.move-impact{font-size:6px}
.score-meter{height:5px}
.score-meter.empty{background:linear-gradient(90deg,var(--you) 0 50%,var(--rival) 50% 100%);opacity:.32}
.score-meter.empty i{display:none}

.battle-layout{
  min-height:0;
  height:100%;
  display:grid;
  grid-template-columns:minmax(0,1fr) 236px;
  gap:8px;
  align-items:stretch;
}
.board-panel{
  min-height:0;
  height:100%;
  padding:8px;
  display:grid;
  grid-template-rows:21px minmax(0,1fr);
  overflow:hidden;
}
.board-head{margin:0 0 5px}
.board-head .eyebrow{font-size:8px}
.ownership-key{font-size:6px;gap:7px}

.board{
  align-self:stretch;
  justify-self:center;
  height:100%;
  width:auto;
  max-width:100%;
  aspect-ratio:1;
  gap:4px;
  padding:4px;
}
.cell{padding:2px;overflow:hidden}
.cell-cross{font-size:18px}
.cell.empty small{bottom:4px;font-size:5px}

.race-panel{
  height:100%;
  min-height:0;
  padding:10px;
  gap:8px;
  align-content:start;
  overflow:hidden;
}
.race-panel>.eyebrow{font-size:8px}
.race-status{padding:8px 0;gap:3px 7px}
.race-status strong{font-size:10px}
.race-status span{font-size:7px;line-height:1.2}
.race-kpis{gap:4px}
.race-kpis div{padding:6px 5px}
.race-kpis span{font-size:5px}
.race-kpis strong{font-size:15px}
.race-rules{font-size:7px;padding:7px}

.hand-panel{
  min-height:0;
  height:146px;
  margin:0;
  padding:7px 8px 6px;
  display:grid;
  grid-template-rows:25px minmax(0,1fr) 12px;
  gap:5px;
  overflow:hidden;
}
.hand-head{margin:0;min-height:0}
.hand-head .eyebrow{font-size:7px}
.hand-head h3{font-size:11px;margin:1px 0 0}
.hand-hint{font-size:6px}
.hand-note{font-size:6px!important;margin:0!important;line-height:1!important}

.hand.hand-grid{
  min-height:0;
  height:100%;
  display:grid!important;
  grid-template-columns:repeat(5,minmax(0,138px));
  justify-content:center;
  align-items:stretch;
  gap:clamp(4px,.8vw,10px);
  overflow:hidden!important;
}
.hand-card,.hand-slot-empty{
  min-width:0;
  width:100%;
  height:100%;
}
.hand-card{display:block;padding:0;border:0;background:transparent;touch-action:none}
.hand-slot-empty{
  border:1px dashed #4a4741;
  background:linear-gradient(145deg,#161816,#0f100f);
  display:grid;
  place-items:center;
  color:#4a4843;
  font:900 18px 'Barlow Condensed','Arial Narrow',sans-serif;
}
.hand-card:disabled{opacity:.62}

/* Dedicated game card: one centered visual system at every gameplay size */
.game-card{
  --rarity:#a9a69f;
  --owner:#686962;
  width:100%;
  height:100%;
  min-width:0;
  min-height:0;
  position:relative;
  overflow:hidden;
  display:grid;
  grid-template-rows:auto auto minmax(0,1fr) auto;
  background:
    radial-gradient(circle at 50% 42%,color-mix(in srgb,var(--vehicle-accent) 24%,transparent),transparent 38%),
    linear-gradient(155deg,#252824,#111311 72%);
  border:1px solid #585b55;
  border-top:3px solid var(--owner);
  color:#f5f0e6;
  box-shadow:inset 0 0 0 1px #ffffff07;
  transform:none;
}
.game-card.owned{--owner:var(--you);border-color:#75412f;border-top-color:var(--you)}
.game-card.enemy{--owner:var(--rival);border-color:#385b80;border-top-color:var(--rival)}
.game-card.selected{
  outline:2px solid var(--you);
  outline-offset:-2px;
  box-shadow:0 0 0 2px #ff6b3d45,inset 0 0 0 1px #ffffff08;
  transform:translateY(-2px);
}
.game-card-head{
  min-width:0;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:5px;
  padding:4px 5px 2px;
}
.game-brand{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font:900 7px/1 Barlow,Arial,sans-serif;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:#aaa69d;
}
.game-rarity{
  flex:0 0 auto;
  min-width:18px;
  padding:2px 3px;
  background:var(--rarity);
  color:#0b0c0b;
  text-align:center;
  font:900 6px/1 Barlow,Arial,sans-serif;
}
.game-model{
  min-width:0;
  padding:0 5px 3px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  text-align:center;
  font:900 8px/1 Barlow,Arial,sans-serif;
  text-transform:uppercase;
  color:#f1eadf;
}
.game-card-field{
  min-height:0;
  position:relative;
  display:grid;
  place-items:center;
  overflow:hidden;
  border-top:1px solid #ffffff0b;
  border-bottom:1px solid #ffffff0b;
}
.game-car-image{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  opacity:.58;
  filter:saturate(.72) contrast(1.1) brightness(.78);
}
.game-car-placeholder{
  position:absolute;
  inset:0;
  display:grid;
  place-items:center;
  background:
    linear-gradient(112deg,transparent 0 36%,#f5f0e611 36.5% 37.5%,transparent 38%),
    linear-gradient(170deg,transparent 0 69%,#ff6b3d18 70% 70.5%,transparent 71%);
}
.game-car-placeholder span{
  font:italic 900 clamp(18px,4vh,38px)/1 'Barlow Condensed','Arial Narrow',sans-serif;
  color:#ffffff09;
  letter-spacing:-.06em;
}
.game-stats{
  position:relative;
  z-index:3;
  width:min(78%,118px);
  aspect-ratio:1;
  display:grid;
  grid-template-columns:repeat(3,1fr);
  grid-template-rows:repeat(3,1fr);
  align-items:center;
  justify-items:center;
}
.game-stats:before{
  content:"";
  position:absolute;
  inset:23%;
  border:1px solid #6b6a63;
  transform:rotate(45deg);
  background:#111310db;
  box-shadow:3px 3px 0 #0007;
}
.game-stats span{
  z-index:1;
  min-width:28px;
  min-height:25px;
  padding:2px 3px;
  display:grid;
  place-items:center;
  align-content:center;
  gap:1px;
  background:#151715ef;
  border:1px solid #565750;
  color:#f4ede2;
}
.game-stats small{
  font:800 4px/1 Barlow,Arial,sans-serif;
  letter-spacing:.08em;
  color:#817f77;
}
.game-stats b{font:900 10px/1 'Barlow Condensed','Arial Narrow',sans-serif}
.game-stats .north{grid-area:1/2}
.game-stats .east{grid-area:2/3}
.game-stats .south{grid-area:3/2}
.game-stats .west{grid-area:2/1}

.game-card-foot{
  min-width:0;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:5px;
  padding:3px 5px;
  font:800 6px/1 Barlow,Arial,sans-serif;
  text-transform:uppercase;
  color:#aaa79f;
}
.game-card-foot span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.game-card-foot strong{flex:0 0 auto;color:#e5ded2;font-size:6px}

/* Board cards: near-square, only game-critical information */
.game-card-board .game-brand{font-size:clamp(5px,.55vw,7px)}
.game-card-board .game-model{font-size:clamp(6px,.72vw,9px)}
.game-card-board .game-rarity{font-size:5px;min-width:15px}
.game-card-board .game-stats{width:min(76%,102px)}
.game-card-board .game-stats span{min-width:24px;min-height:21px}
.game-card-board .game-stats b{font-size:clamp(8px,1vw,12px)}
.game-card-board .game-card-foot{font-size:clamp(4px,.5vw,6px)}
.game-card-board .game-card-foot strong{font-size:inherit}

/* Hand cards: still compact, but deliberately easier to read */
.game-card-hand .game-card-head{padding:5px 6px 2px}
.game-card-hand .game-brand{font-size:7px}
.game-card-hand .game-model{font-size:9px;padding-bottom:4px}
.game-card-hand .game-stats{width:min(72%,94px)}
.game-card-hand .game-stats span{min-width:27px;min-height:23px}
.game-card-hand .game-stats b{font-size:10px}
.game-card-hand .game-card-foot{font-size:6px;padding:4px 6px}
.game-card-hand .game-card-foot strong{font-size:6px}

.drag-ghost.game-card{
  position:fixed!important;
  z-index:9999!important;
  pointer-events:none!important;
  width:112px!important;
  height:142px!important;
  left:0;top:0;
  transform:translate(-50%,-60%) rotate(-3deg)!important;
  opacity:.94;
  box-shadow:12px 16px 30px #000c!important;
}
.cell.just-played .game-card{animation:cardLand .48s cubic-bezier(.16,.9,.28,1.2)}
.cell.just-captured .game-card{animation:captureSwitch .72s ease both}

/* Round-end action floats without consuming vertical game space */
.match-end-actions{
  position:absolute;
  right:10px;
  bottom:154px;
  z-index:30;
  margin:0;
}
.match-end-actions .btn{
  min-height:34px;
  padding:8px 12px;
  font-size:8px;
}

/* Tablet: Race Control becomes expendable; the score/top bar already carry its critical info */
@media(max-width:900px){
  body.match-mode .shell{grid-template-rows:46px minmax(0,1fr)}
  body.match-mode .top{height:46px;min-height:46px}
  body.match-mode .brand{font-size:15px}
  body.match-mode .account{font-size:10px}
  body.match-mode .account img{width:24px;height:24px}

  .match-page{
    padding-top:5px;
    grid-template-rows:34px 54px minmax(0,1fr) 126px;
    gap:6px;
  }
  .match-topbar{height:34px}
  .live-score{height:54px;grid-template-columns:80px minmax(0,1fr) 80px}
  .score-player{height:52px;padding:5px 7px}
  .score-player>strong{font-size:29px}
  .score-message{font-size:8px}
  .battle-layout{grid-template-columns:1fr}
  .race-panel{display:none}
  .board-panel{padding:5px;grid-template-rows:17px minmax(0,1fr)}
  .board-head{margin-bottom:3px}
  .board{gap:3px;padding:3px}
  .hand-panel{height:126px;grid-template-rows:21px minmax(0,1fr) 9px;padding:5px}
  .hand-head h3{font-size:9px}
  .hand.hand-grid{gap:4px;grid-template-columns:repeat(5,minmax(0,1fr))}
  .game-card-hand .game-card-head{padding:3px 3px 1px}
  .game-card-hand .game-brand{font-size:5px}
  .game-card-hand .game-model{font-size:6px;padding:0 3px 2px}
  .game-card-hand .game-rarity{font-size:4px;min-width:12px;padding:1px 2px}
  .game-card-hand .game-stats{width:min(78%,66px)}
  .game-card-hand .game-stats span{min-width:18px;min-height:17px;padding:1px}
  .game-card-hand .game-stats small{font-size:3px}
  .game-card-hand .game-stats b{font-size:7px}
  .game-card-hand .game-card-foot{font-size:4px;padding:2px 3px}
  .game-card-hand .game-card-foot strong{font-size:4px}
  .hand-slot-empty{font-size:12px}
  .match-end-actions{bottom:132px}
}

@media(max-width:520px){
  body.match-mode .shell{padding:0 6px}
  .match-page{
    grid-template-rows:31px 50px minmax(0,1fr) 114px;
    gap:4px;
    padding-bottom:5px;
  }
  .match-topbar{height:31px;padding-bottom:3px}
  .match-back{font-size:9px}
  .match-context strong{font-size:11px}
  .match-rule-btn,.turn-light{padding:4px 5px;font-size:6px;min-height:23px}
  .live-score{height:50px;grid-template-columns:62px minmax(0,1fr) 62px}
  .score-player{height:48px;padding:4px 5px}
  .score-player>strong{font-size:25px}
  .score-player>span:first-child{font-size:6px}
  .score-center{padding:4px 5px;gap:3px}
  .score-message{font-size:7px}
  .move-impact{font-size:5px}
  .score-meter{height:4px}
  .round-dots i{width:6px;height:2px}

  .board-panel{padding:3px;grid-template-rows:14px minmax(0,1fr)}
  .board-head .eyebrow{font-size:6px}
  .ownership-key{font-size:5px}
  .ownership-key span:before{width:7px;height:2px}
  .board{gap:2px;padding:2px}
  .game-card-board .game-card-head{padding:2px 2px 1px}
  .game-card-board .game-brand{font-size:4px}
  .game-card-board .game-model{font-size:5px;padding:0 2px 1px}
  .game-card-board .game-rarity{font-size:3px;min-width:10px;padding:1px}
  .game-card-board .game-stats{width:min(80%,57px)}
  .game-card-board .game-stats span{min-width:16px;min-height:15px;padding:1px}
  .game-card-board .game-stats small{font-size:2.5px}
  .game-card-board .game-stats b{font-size:6px}
  .game-card-board .game-card-foot{font-size:3.5px;padding:1px 2px}
  .game-car-placeholder span{font-size:17px}

  .hand-panel{height:114px;grid-template-rows:18px minmax(0,1fr) 8px;padding:4px 3px}
  .hand-head h3{font-size:8px}
  .hand-hint{font-size:5px}
  .hand-note{font-size:5px!important}
  .hand.hand-grid{gap:3px}
  .game-card-hand .game-model{font-size:5px}
  .game-card-hand .game-stats{width:min(80%,55px)}
  .game-card-hand .game-stats span{min-width:15px;min-height:14px}
  .game-card-hand .game-stats b{font-size:6px}
  .game-card-hand .game-card-foot span{max-width:70%}
  .match-end-actions{bottom:118px;right:5px}
  .match-end-actions .btn{padding:6px 8px;font-size:6px;min-height:27px}
}

@media(max-height:720px) and (min-width:700px){
  body.match-mode .shell{grid-template-rows:44px minmax(0,1fr)}
  body.match-mode .top{height:44px;min-height:44px}
  .match-page{grid-template-rows:30px 48px minmax(0,1fr) 112px;gap:5px;padding:4px 0}
  .match-topbar{height:30px}
  .live-score{height:48px}
  .score-player{height:46px}
  .board-panel{padding:4px;grid-template-rows:15px minmax(0,1fr)}
  .race-panel{padding:7px}
  .hand-panel{height:112px;grid-template-rows:18px minmax(0,1fr) 8px;padding:4px}
  .hand.hand-grid{grid-template-columns:repeat(5,minmax(0,116px))}
  .game-card-hand .game-model{font-size:6px}
  .game-card-hand .game-stats{width:min(72%,62px)}
  .match-end-actions{bottom:116px}
}

@media(prefers-reduced-motion:reduce){
  .cell.just-played .game-card,.cell.just-captured .game-card{animation:none!important}
}


/* Board is constrained by both viewport height and available width. */
body.match-mode .board{
  height:auto!important;
  width:min(100%,calc(100dvh - 350px))!important;
  max-width:100%!important;
  aspect-ratio:1!important;
}
@media(max-width:900px){
  body.match-mode .board{width:min(100%,calc(100dvh - 300px))!important}
}
@media(max-width:520px){
  body.match-mode .board{width:min(100%,calc(100dvh - 270px))!important}
}
@media(max-height:720px) and (min-width:700px){
  body.match-mode .board{width:min(100%,calc(100dvh - 245px))!important}
}


/* Drift9 v0.7.1 — readable one-screen proportions */
body.match-mode{
  --hand-h:clamp(168px,21dvh,220px);
  --board-max:calc(100dvh - var(--hand-h) - 210px);
}

/* Give the garage real vertical space; the board adapts instead. */
.match-page{
  grid-template-rows:38px 58px minmax(0,1fr) var(--hand-h);
}
.live-score{height:58px}
.score-player{height:56px}

.hand-panel{
  height:var(--hand-h);
  grid-template-rows:27px minmax(0,1fr);
  padding:8px 10px 9px;
  gap:7px;
}
.hand-note{display:none}
.hand.hand-grid{
  min-height:0;
  height:100%;
  grid-template-columns:repeat(5,minmax(0,142px));
  align-items:stretch;
}
.hand-card,.hand-slot-empty{height:100%;min-height:0}

/* A hand card is intentionally shorter than a collection card, but always complete. */
.game-card-hand{
  height:100%;
  grid-template-rows:20px 19px minmax(0,1fr) 20px;
}
.game-card-hand .game-card-head{padding:4px 6px 2px}
.game-card-hand .game-brand{font-size:7px}
.game-card-hand .game-rarity{font-size:6px;min-width:18px;padding:2px 3px}
.game-card-hand .game-model{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:1px 5px 3px;
  font-size:8px;
  line-height:1;
}
.game-card-hand .game-card-field{min-height:0}
.game-card-hand .game-stats{width:min(72%,82px)}
.game-card-hand .game-stats span{min-width:23px;min-height:21px;padding:1px 2px}
.game-card-hand .game-stats small{font-size:3.5px}
.game-card-hand .game-stats b{font-size:9px}
.game-card-hand .game-card-foot{padding:3px 5px;font-size:5.5px}
.game-card-hand .game-card-foot strong{font-size:5.5px}

/* The board is no longer allowed to steal the garage's height. */
body.match-mode .board{
  width:min(100%,var(--board-max))!important;
  height:auto!important;
}
.board-panel{
  align-content:start;
}
.board{
  align-self:start;
}

/* Gameplay cards on the board: bigger type and a stronger centered core. */
.game-card-board{
  grid-template-rows:22px 22px minmax(0,1fr) 19px;
}
.game-card-board .game-card-head{padding:4px 5px 2px}
.game-card-board .game-brand{font-size:7px;letter-spacing:.06em}
.game-card-board .game-rarity{font-size:6px;min-width:17px;padding:2px}
.game-card-board .game-model{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:1px 5px 3px;
  font-size:9px;
  line-height:1;
}
.game-card-board .game-stats{width:min(74%,92px)}
.game-card-board .game-stats span{min-width:27px;min-height:24px;padding:2px}
.game-card-board .game-stats small{font-size:3.5px}
.game-card-board .game-stats b{font-size:11px}
.game-card-board .game-card-foot{font-size:5.5px;padding:3px 5px}
.game-card-board .game-card-foot strong{font-size:5.5px}

/* Slightly stronger contrast for values and model names. */
.game-model{color:#fff}
.game-stats span{background:#101210f2;border-color:#74736b}
.game-stats b{color:#fff}
.game-stats small{color:#aaa69d}
.game-card-foot{color:#c6c0b5}

/* Keep the end-of-round CTA above the enlarged garage. */
.match-end-actions{bottom:calc(var(--hand-h) + 8px)}

/* Mid-height desktops: preserve full hand before anything else. */
@media(max-height:900px) and (min-width:901px){
  body.match-mode{
    --hand-h:clamp(156px,22dvh,188px);
    --board-max:calc(100dvh - var(--hand-h) - 196px);
  }
  .match-page{grid-template-rows:34px 54px minmax(0,1fr) var(--hand-h);gap:6px}
  .match-topbar{height:34px}
  .live-score{height:54px}
  .score-player{height:52px}
}

/* Tablet/mobile: all five cards remain complete, never clipped. */
@media(max-width:900px){
  body.match-mode{
    --hand-h:clamp(138px,20dvh,168px);
    --board-max:calc(100dvh - var(--hand-h) - 175px);
  }
  .match-page{
    grid-template-rows:34px 52px minmax(0,1fr) var(--hand-h);
  }
  .hand-panel{
    height:var(--hand-h);
    grid-template-rows:22px minmax(0,1fr);
    padding:5px;
    gap:4px;
  }
  .hand.hand-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:4px}
  .game-card-hand{grid-template-rows:16px 16px minmax(0,1fr) 15px}
  .game-card-hand .game-brand{font-size:5px}
  .game-card-hand .game-rarity{font-size:4px;min-width:12px;padding:1px 2px}
  .game-card-hand .game-model{font-size:6px;padding:1px 2px}
  .game-card-hand .game-stats{width:min(78%,58px)}
  .game-card-hand .game-stats span{min-width:16px;min-height:15px;padding:1px}
  .game-card-hand .game-stats small{display:none}
  .game-card-hand .game-stats b{font-size:6.5px}
  .game-card-hand .game-card-foot{font-size:4px;padding:2px 3px}
  .game-card-hand .game-card-foot strong{font-size:4px}
}

/* Phones: use every pixel; model + values stay readable, secondary labels yield first. */
@media(max-width:520px){
  body.match-mode{
    --hand-h:clamp(126px,19dvh,150px);
    --board-max:calc(100dvh - var(--hand-h) - 158px);
  }
  .match-page{
    grid-template-rows:30px 48px minmax(0,1fr) var(--hand-h);
  }
  .hand-panel{height:var(--hand-h);grid-template-rows:18px minmax(0,1fr);padding:4px 2px}
  .hand.hand-grid{gap:2px}
  .hand-hint{display:none}
  .game-card-hand{grid-template-rows:13px 14px minmax(0,1fr) 12px}
  .game-card-hand .game-brand{font-size:4px}
  .game-card-hand .game-rarity{font-size:3.5px;min-width:10px}
  .game-card-hand .game-model{font-size:5px}
  .game-card-hand .game-stats{width:min(82%,48px)}
  .game-card-hand .game-stats span{min-width:14px;min-height:13px}
  .game-card-hand .game-stats b{font-size:5.5px}
  .game-card-hand .game-card-foot{font-size:3.5px;padding:1px 2px}
  .game-card-hand .game-card-foot strong{font-size:3.5px}

  .game-card-board .game-brand{font-size:4.5px}
  .game-card-board .game-model{font-size:5.5px}
  .game-card-board .game-stats{width:min(80%,60px)}
  .game-card-board .game-stats span{min-width:17px;min-height:16px}
  .game-card-board .game-stats small{display:none}
  .game-card-board .game-stats b{font-size:6.5px}
}


/* Drift9 v0.7.1 — collector card alignment */
.cards-grid .card{
  aspect-ratio:3/4;
  grid-template-rows:34px minmax(0,1.35fr) minmax(78px,.65fr) 30px;
}
.cards-grid .card-nameplate{
  min-height:34px;
  height:34px;
  padding:7px 9px 6px 12px;
}
.cards-grid .card-maker,
.cards-grid .card-model-name{font-size:9px}
.cards-grid .card-visual{
  margin:0;
  display:grid;
  place-items:center;
}
.cards-grid .card-visual:after{
  left:20%;
  right:20%;
  bottom:12%;
  transform:none;
  opacity:.14;
}
.cards-grid .card-vehicle-placeholder{
  min-height:0;
  width:100%;
  height:100%;
  background:
    radial-gradient(circle at 50% 42%,color-mix(in srgb,var(--vehicle-accent) 26%,transparent),transparent 39%),
    linear-gradient(160deg,#252824,#131513 72%);
}
.cards-grid .card-vehicle-placeholder span{
  font-size:clamp(34px,5vw,58px);
  color:#ffffff0b;
}
.cards-grid .card-vehicle-placeholder strong{display:none}

/* True cardinal layout: top/right/bottom/left around one centered core. */
.cards-grid .stats-diamond{
  left:50%;
  top:55%;
  width:112px;
  height:112px;
  transform:translate(-50%,-50%);
  display:block;
  background:transparent;
  border:0;
  box-shadow:none;
}
.cards-grid .stats-diamond:before{
  content:"";
  position:absolute;
  left:50%;
  top:50%;
  width:52px;
  height:52px;
  transform:translate(-50%,-50%) rotate(45deg);
  border:1px solid #77746c;
  background:#101210e8;
  box-shadow:3px 3px 0 #0007;
}
.cards-grid .stats-diamond span{
  position:absolute;
  width:42px;
  height:31px;
  padding:0;
  transform:none!important;
  display:grid;
  place-items:center;
  background:#111311f2;
  border:1px solid #65645e;
  font:900 14px/1 'Barlow Condensed','Arial Narrow',sans-serif;
  color:#f7f0e5;
  z-index:2;
}
.cards-grid .stats-diamond .north{
  left:50%;
  top:0;
  transform:translateX(-50%)!important;
}
.cards-grid .stats-diamond .east{
  right:0;
  top:50%;
  transform:translateY(-50%)!important;
}
.cards-grid .stats-diamond .south{
  left:50%;
  bottom:0;
  transform:translateX(-50%)!important;
}
.cards-grid .stats-diamond .west{
  left:0;
  top:50%;
  transform:translateY(-50%)!important;
}
.cards-grid .card-body{
  margin:0;
  padding:34px 11px 7px 12px;
  gap:5px;
}
.cards-grid .card-id-row{
  min-height:21px;
  align-items:center;
}
.cards-grid .card-brand-word{font-size:8px}
.cards-grid .card-country{font-size:19px}
.cards-grid .card-specs{
  justify-content:flex-start;
  gap:4px;
}
.cards-grid .card-specs span{font-size:6.5px}
.cards-grid .card-signature{
  font-size:7.5px!important;
  text-align:left;
}
.cards-grid .card-footer{
  min-height:30px;
  height:30px;
  padding:0 9px 0 12px;
  font-size:7.5px;
}

@media(max-width:760px){
  .cards-grid .stats-diamond{width:96px;height:96px}
  .cards-grid .stats-diamond:before{width:44px;height:44px}
  .cards-grid .stats-diamond span{width:36px;height:27px;font-size:12px}
  .cards-grid .card-body{padding-top:29px}
}


/* Drift9 v0.7.2 — isolated collector card system */
.cards-grid{
  grid-template-columns:repeat(auto-fill,minmax(220px,1fr));
  align-items:start;
}
.collection-item{min-width:0}
.collector-card{
  --rarity:#a9a69f;
  --vehicle-accent:#545751;
  width:100%;
  max-width:260px;
  aspect-ratio:63/88;
  margin:0 auto;
  display:grid;
  grid-template-rows:44px minmax(0,1.2fr) minmax(92px,.62fr) 34px;
  min-width:0;
  overflow:hidden;
  position:relative;
  background:#111311;
  color:#f5f0e6;
  border:1px solid #4c4f49;
  border-top:4px solid var(--rarity);
  border-radius:5px;
  box-shadow:5px 7px 0 #0008;
}
.collector-card:before{
  content:"";
  position:absolute;
  inset:4px;
  border:1px solid #ffffff0b;
  pointer-events:none;
  z-index:10;
}
.collector-card.rarity-c{--rarity:#d9d6cf}
.collector-card.rarity-nc{--rarity:#7ad98b}
.collector-card.rarity-r{--rarity:#69a4ff}
.collector-card.rarity-sr{--rarity:#b181ff}
.collector-card.rarity-ur{--rarity:#f2d354}
.collector-card.rarity-ss{--rarity:#ff665c}

.collector-head{
  min-width:0;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:8px;
  padding:7px 9px 6px 11px;
  background:linear-gradient(90deg,#242723,#161816);
  border-bottom:1px solid #ffffff12;
}
.collector-title{
  min-width:0;
  display:grid;
  grid-template-columns:minmax(0,.72fr) minmax(0,1.28fr);
  align-items:center;
  gap:7px;
  text-transform:uppercase;
}
.collector-title span,
.collector-title strong{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.collector-title span{
  font:900 8px/1 Barlow,Arial,sans-serif;
  letter-spacing:.09em;
  color:#b8b3aa;
}
.collector-title strong{
  font:900 9px/1 Barlow,Arial,sans-serif;
  text-align:right;
  color:#f4ede1;
}
.collector-rarity{
  min-width:28px;
  height:24px;
  display:grid;
  place-items:center;
  background:var(--rarity);
  color:#0b0c0b;
  font:900 8px/1 Barlow,Arial,sans-serif;
  box-shadow:2px 2px 0 #0008;
}

.collector-stage{
  min-height:0;
  position:relative;
  overflow:hidden;
  display:grid;
  place-items:center;
  background:
    radial-gradient(circle at 50% 46%,color-mix(in srgb,var(--vehicle-accent) 28%,transparent),transparent 38%),
    linear-gradient(160deg,#252824 0%,#191b19 52%,#111311 100%);
  border-bottom:1px solid #ffffff12;
}
.collector-stage:before{
  content:"";
  position:absolute;
  left:50%;
  top:50%;
  width:68%;
  aspect-ratio:1;
  transform:translate(-50%,-50%);
  border-radius:50%;
  background:radial-gradient(circle,#ffffff07 0 34%,transparent 66%);
  pointer-events:none;
}
.collector-stage:after{
  content:"";
  position:absolute;
  left:50%;
  bottom:15%;
  width:72%;
  height:1px;
  transform:translateX(-50%);
  background:linear-gradient(90deg,transparent,var(--rarity),transparent);
  opacity:.26;
  pointer-events:none;
}
.collector-image{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
  filter:saturate(.78) contrast(1.08) brightness(.72);
}
.collector-placeholder{
  position:absolute;
  inset:0;
  display:grid;
  place-items:center;
}
.collector-placeholder span{
  font:italic 900 clamp(44px,7vw,76px)/1 'Barlow Condensed','Arial Narrow',sans-serif;
  letter-spacing:-.06em;
  color:#ffffff09;
  transform:translateY(-2%);
}
.collector-placeholder i{
  position:absolute;
  width:46%;
  height:2px;
  background:linear-gradient(90deg,transparent,#ffffff25,transparent);
  transform:rotate(-8deg);
}

.collector-stats{
  position:relative;
  z-index:3;
  width:min(56%,124px);
  aspect-ratio:1;
  display:grid;
  grid-template-columns:repeat(3,1fr);
  grid-template-rows:repeat(3,1fr);
  align-items:center;
  justify-items:center;
}
.collector-stats:before{
  content:"";
  position:absolute;
  inset:26%;
  transform:rotate(45deg);
  border:1px solid #77756d;
  background:#0f110fdd;
  box-shadow:4px 4px 0 #0007;
}
.collector-stats span{
  z-index:2;
  width:100%;
  max-width:44px;
  min-height:36px;
  padding:3px 4px;
  display:grid;
  place-items:center;
  align-content:center;
  gap:2px;
  background:#121412f4;
  border:1px solid #666760;
  color:#f8f1e6;
}
.collector-stats small{
  font:800 5px/1 Barlow,Arial,sans-serif;
  letter-spacing:.08em;
  color:#9b988f;
}
.collector-stats b{
  font:900 15px/1 'Barlow Condensed','Arial Narrow',sans-serif;
}
.collector-stats .north{grid-area:1/2}
.collector-stats .east{grid-area:2/3}
.collector-stats .south{grid-area:3/2}
.collector-stats .west{grid-area:2/1}

.collector-meta{
  min-width:0;
  padding:10px 11px 8px;
  display:grid;
  grid-template-rows:auto auto minmax(0,1fr);
  gap:7px;
  align-content:start;
  background:linear-gradient(180deg,#1a1c1a,#121412);
}
.collector-identity{
  min-width:0;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:10px;
}
.collector-brand-lockup{
  min-width:0;
  display:flex;
  align-items:center;
  min-height:20px;
}
.collector-brand-text{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font:900 9px/1 Barlow,Arial,sans-serif;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:#e4ddd1;
}
.collector-logo{
  max-width:70px;
  max-height:22px;
  object-fit:contain;
  object-position:left center;
  filter:grayscale(1) brightness(2);
}
.collector-country{
  flex:0 0 auto;
  font-size:21px;
  line-height:1;
}
.collector-tags{
  min-width:0;
  display:flex;
  flex-wrap:wrap;
  gap:4px;
}
.collector-tags span{
  max-width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  padding:4px 6px;
  border:1px solid #4e4f49;
  background:#242623;
  color:#c9c2b6;
  font:800 6.5px/1 Barlow,Arial,sans-serif;
  letter-spacing:.05em;
  text-transform:uppercase;
}
.collector-signature{
  min-width:0;
  margin:0!important;
  align-self:end;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:#858178!important;
  font-size:7.5px!important;
  line-height:1.15!important;
}
.collector-foot{
  min-width:0;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:8px;
  padding:0 11px;
  background:#0f110f;
  border-top:1px solid #454640;
  color:#d7d0c4;
  font:900 8px/1 Barlow,Arial,sans-serif;
  text-transform:uppercase;
}
.collector-foot span{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.collector-foot strong{flex:0 0 auto;color:#f4ede1}

@media(max-width:760px){
  .cards-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .collector-card{
    max-width:none;
    grid-template-rows:38px minmax(0,1.16fr) minmax(80px,.64fr) 30px;
  }
  .collector-head{padding:6px 7px 5px 9px}
  .collector-title span{font-size:7px}
  .collector-title strong{font-size:7.5px}
  .collector-rarity{min-width:24px;height:21px;font-size:7px}
  .collector-stats{width:min(58%,108px)}
  .collector-stats span{max-width:38px;min-height:31px;padding:2px}
  .collector-stats small{font-size:4px}
  .collector-stats b{font-size:13px}
  .collector-meta{padding:8px 9px 6px;gap:5px}
  .collector-brand-text{font-size:8px}
  .collector-country{font-size:18px}
  .collector-tags span{font-size:5.5px;padding:3px 4px}
  .collector-signature{font-size:6.5px!important}
  .collector-foot{padding:0 9px;font-size:7px}
}
@media(max-width:390px){
  .cards-grid{grid-template-columns:1fr}
  .collector-card{max-width:290px}
}


/* Drift9 v0.7.3 — typography/readability pass */
.cards-grid{
  grid-template-columns:repeat(auto-fill,minmax(240px,1fr));
  gap:18px;
}
.collector-card{
  max-width:280px;
  grid-template-rows:48px minmax(0,1.16fr) minmax(108px,.68fr) 38px;
}
.collector-head{padding:8px 10px 7px 12px}
.collector-title{grid-template-columns:minmax(0,.66fr) minmax(0,1.34fr);gap:8px}
.collector-title span{font-size:9.5px;letter-spacing:.08em}
.collector-title strong{font-size:11px;line-height:1.05}
.collector-rarity{min-width:31px;height:27px;font-size:9px}

.collector-stats{width:min(61%,132px)}
.collector-stats span{max-width:46px;min-height:39px;padding:4px 5px}
.collector-stats small{font-size:6px;letter-spacing:.07em}
.collector-stats b{font-size:17px}

.collector-meta{padding:11px 12px 9px;gap:8px}
.collector-brand-text{font-size:10px;letter-spacing:.07em}
.collector-logo{max-width:78px;max-height:24px}
.collector-country{font-size:23px}
.collector-tags{gap:5px}
.collector-tags span{
  padding:5px 7px;
  font-size:7.5px;
  letter-spacing:.04em;
}
.collector-signature{
  font-size:8.5px!important;
  color:#a19c92!important;
}
.collector-foot{
  padding:0 12px;
  font-size:9px;
}
.collection-item>a{font-size:12px}

/* Gameplay cards: prioritize model and values over micro-labels. */
.game-card-board .game-brand{font-size:7.5px}
.game-card-board .game-model{font-size:10px}
.game-card-board .game-rarity{font-size:6.5px}
.game-card-board .game-stats b{font-size:12.5px}
.game-card-board .game-stats small{font-size:4px}
.game-card-board .game-card-foot,
.game-card-board .game-card-foot strong{font-size:6px}

.game-card-hand .game-brand{font-size:8px}
.game-card-hand .game-model{font-size:10px}
.game-card-hand .game-rarity{font-size:6.5px}
.game-card-hand .game-stats b{font-size:11px}
.game-card-hand .game-stats small{font-size:4px}
.game-card-hand .game-card-foot,
.game-card-hand .game-card-foot strong{font-size:6.5px}

/* Tablet: stay readable even if fewer cards fit per row. */
@media(max-width:900px){
  .cards-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
  .collector-title span{font-size:8.5px}
  .collector-title strong{font-size:9.5px}
  .collector-rarity{font-size:8px}
  .collector-stats b{font-size:15px}
  .collector-stats small{font-size:5px}
  .collector-brand-text{font-size:9px}
  .collector-tags span{font-size:7px}
  .collector-signature{font-size:8px!important}
  .collector-foot{font-size:8px}

  .game-card-hand .game-model{font-size:7px}
  .game-card-hand .game-stats b{font-size:8px}
  .game-card-board .game-model{font-size:7px}
  .game-card-board .game-stats b{font-size:8px}
}

/* Phone catalogue: one genuinely readable card per row. */
@media(max-width:520px){
  .cards-grid{grid-template-columns:1fr;gap:16px}
  .collector-card{
    width:min(100%,320px);
    max-width:320px;
    grid-template-rows:48px minmax(0,1.14fr) minmax(108px,.7fr) 38px;
  }
  .collector-title span{font-size:9px}
  .collector-title strong{font-size:10.5px}
  .collector-rarity{font-size:9px}
  .collector-stats{width:min(60%,128px)}
  .collector-stats span{max-width:44px;min-height:37px}
  .collector-stats small{font-size:5.5px}
  .collector-stats b{font-size:16px}
  .collector-brand-text{font-size:10px}
  .collector-country{font-size:22px}
  .collector-tags span{font-size:7.5px}
  .collector-signature{font-size:8.5px!important}
  .collector-foot{font-size:9px}

  /* In a duel, keep five cards visible but make the actual numbers the focus. */
  .game-card-hand .game-brand{font-size:4.5px}
  .game-card-hand .game-model{font-size:5.5px}
  .game-card-hand .game-rarity{font-size:4px}
  .game-card-hand .game-stats b{font-size:7px}
  .game-card-hand .game-card-foot,
  .game-card-hand .game-card-foot strong{font-size:4px}

  .game-card-board .game-brand{font-size:5px}
  .game-card-board .game-model{font-size:6px}
  .game-card-board .game-rarity{font-size:4px}
  .game-card-board .game-stats b{font-size:7.5px}
  .game-card-board .game-card-foot,
  .game-card-board .game-card-foot strong{font-size:4px}
}


/* Drift9 v0.8.0 — Race Control-first duel layout */
body.match-mode{
  --hand-h:clamp(168px,20dvh,208px);
  --board-max:calc(100dvh - var(--hand-h) - 150px);
}
.match-page{
  grid-template-rows:40px minmax(0,1fr) var(--hand-h);
  gap:8px;
}
.match-topbar{height:40px;min-height:40px}
.match-context strong{font-size:16px}
.match-rule-btn,.turn-light{font-size:9px;padding:7px 9px}

/* Remove the old horizontal score-strip footprint entirely. */
.live-score{display:none!important}

/* Narrower board + wider information rail. */
.battle-layout{
  min-height:0;
  height:100%;
  display:grid;
  grid-template-columns:minmax(0,680px) minmax(320px,360px);
  justify-content:center;
  gap:12px;
  align-items:stretch;
}
.board-panel{
  min-height:0;
  height:100%;
  padding:10px;
  grid-template-rows:34px minmax(0,1fr);
}
.board-head{
  align-items:end;
  margin:0 0 8px;
}
.board-head>div:first-child{display:grid;gap:2px}
.board-head .eyebrow{font-size:9px}
.board-turn{
  font:900 11px/1 Barlow,Arial,sans-serif;
  text-transform:uppercase;
  color:#e7dfd3;
}
.ownership-key{font-size:7px;gap:10px}

body.match-mode .board{
  width:min(100%,var(--board-max),620px)!important;
  height:auto!important;
  align-self:start;
}
.board{gap:5px;padding:5px}

/* Race Control now carries score, round state and action history. */
.race-panel{
  min-height:0;
  height:100%;
  padding:12px;
  display:grid;
  grid-template-rows:auto auto auto auto auto minmax(0,1fr) auto;
  gap:10px;
  align-content:stretch;
  overflow:hidden;
  border-top:3px solid var(--you);
}
.race-title{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.race-title .eyebrow{font-size:10px}
.race-round{
  min-width:34px;
  height:26px;
  display:grid;
  place-items:center;
  border:1px solid #56524b;
  color:#d7d0c5;
  font:900 9px/1 Barlow,Arial,sans-serif;
  letter-spacing:.08em;
}

.race-score{
  display:grid;
  grid-template-columns:72px minmax(0,1fr) 72px;
  gap:8px;
  align-items:center;
  padding:10px;
  background:#111311;
  border:1px solid #4a4842;
}
.race-score-player{
  display:grid;
  gap:3px;
  min-width:0;
}
.race-score-player.rival{text-align:right}
.race-score-player>span{
  font:900 8px/1 Barlow,Arial,sans-serif;
  letter-spacing:.13em;
}
.race-score-player.you>span{color:var(--you)}
.race-score-player.rival>span{color:var(--rival)}
.race-score-player>strong{
  font:900 42px/.9 'Barlow Condensed','Arial Narrow',sans-serif;
  color:#f7f0e5;
}
.race-score-player>small{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:#918d84;
  font-size:8px;
}
.race-score-center{
  display:grid;
  justify-items:center;
  gap:6px;
  min-width:0;
}
.race-score-center>span{
  font:900 7px/1 Barlow,Arial,sans-serif;
  letter-spacing:.16em;
  color:#7f7c75;
}
.race-score-center>b{
  font:900 14px/1 Barlow,Arial,sans-serif;
  color:#e9e2d7;
}
.race-score-meter{
  position:relative;
  width:100%;
  height:7px;
  overflow:hidden;
  background:var(--rival);
}
.race-score-meter i{
  position:absolute;
  inset:0 auto 0 0;
  background:var(--you);
  transition:width .35s ease;
}
.race-score-meter.empty{
  background:linear-gradient(90deg,var(--you) 0 50%,var(--rival) 50% 100%);
  opacity:.34;
}
.race-score-meter.empty i{display:none}

.race-rounds{
  display:grid;
  grid-template-columns:auto auto 1fr;
  align-items:center;
  gap:10px;
  padding:8px 10px;
  background:#202220;
}
.race-rounds>span{
  font:900 8px/1 Barlow,Arial,sans-serif;
  letter-spacing:.12em;
  color:#8d8980;
}
.race-rounds-score{
  display:flex;
  align-items:center;
  gap:5px;
}
.race-rounds-score b{
  font:900 18px/1 'Barlow Condensed','Arial Narrow',sans-serif;
}
.race-rounds-score i{
  color:#68665f;
  font-style:normal;
}
.race-round-dots{
  display:flex;
  justify-content:flex-end;
  align-items:center;
  gap:9px;
}
.race-round-dots .round-dots{gap:3px}
.race-round-dots .round-dots i{width:10px;height:3px}

.race-status{
  display:grid;
  grid-template-columns:10px minmax(0,1fr);
  align-items:start;
  gap:7px;
  padding:9px 0;
}
.race-status>i{margin-top:3px}
.race-status>div{display:grid;gap:3px}
.race-status strong{
  font-size:11px;
  letter-spacing:.08em;
}
.race-status span{
  font-size:9px;
  line-height:1.3;
  color:#aaa59b;
}

.race-hands{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:6px;
}
.race-hands>span{
  padding:8px 9px;
  display:flex;
  align-items:end;
  justify-content:space-between;
  gap:8px;
  background:#222421;
}
.race-hands small{
  font:800 7px/1 Barlow,Arial,sans-serif;
  letter-spacing:.08em;
  color:#858179;
}
.race-hands b{
  font:900 19px/1 'Barlow Condensed','Arial Narrow',sans-serif;
}

.race-log{
  min-height:0;
  display:grid;
  grid-template-rows:auto minmax(0,1fr);
  gap:7px;
  border-top:1px solid #45433e;
  padding-top:9px;
}
.race-log-title{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
}
.race-log-title strong{
  font:900 10px/1 Barlow,Arial,sans-serif;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.race-log-title span{
  font-size:8px;
  color:#817e76;
}
.race-log-list{
  min-height:0;
  overflow:auto;
  display:grid;
  align-content:start;
  gap:5px;
  padding-right:2px;
}
.race-log-item{
  display:grid;
  grid-template-columns:5px minmax(0,1fr);
  gap:8px;
  padding:8px 8px 8px 0;
  border-bottom:1px solid #33342f;
}
.race-log-item.latest{
  background:#ffffff03;
}
.race-log-marker{
  width:4px;
  height:100%;
  min-height:38px;
  background:var(--rival);
}
.race-log-item.mine .race-log-marker{background:var(--you)}
.race-log-copy{
  min-width:0;
  display:grid;
  gap:3px;
}
.race-log-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
}
.race-log-head strong{
  font:900 8px/1 Barlow,Arial,sans-serif;
  letter-spacing:.1em;
}
.race-log-item.mine .race-log-head strong{color:var(--you)}
.race-log-item.rival .race-log-head strong{color:var(--rival)}
.race-log-head span{
  font-size:7px;
  color:#77746c;
}
.race-log-card{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:10px;
  color:#e9e2d7;
}
.race-log-copy small{
  font-size:8px;
  color:#9b978e;
}
.race-log-empty{
  margin:0;
  padding:12px 0;
  font-size:9px;
  color:#817e76;
}

.race-footer-actions{
  display:grid;
  grid-template-columns:1fr;
  gap:6px;
}
.race-footer-actions .race-rules,
.race-footer-actions .race-next{
  width:100%;
  text-align:center;
  min-height:34px;
  font-size:8px;
}
.race-next{display:grid;place-items:center;text-decoration:none}

/* The garage keeps its readability budget. */
.hand-panel{
  height:var(--hand-h);
  grid-template-rows:27px minmax(0,1fr);
  padding:8px 10px 9px;
}
.hand-head h3{font-size:12px}
.hand-head .eyebrow{font-size:8px}
.hand-hint{font-size:7px}

/* No floating round button anymore: it lives in Race Control. */
.match-end-actions{display:none!important}

/* Medium screens: Race Control remains visible, but more compact. */
@media(max-width:1050px){
  .battle-layout{
    grid-template-columns:minmax(0,1fr) 300px;
    gap:8px;
  }
  body.match-mode .board{width:min(100%,var(--board-max),560px)!important}
  .race-panel{padding:9px;gap:7px}
  .race-score{grid-template-columns:58px minmax(0,1fr) 58px;padding:8px}
  .race-score-player>strong{font-size:34px}
  .race-log-item{padding-top:6px;padding-bottom:6px}
}

/* Tablet/mobile: Race Control becomes a compact score/status rail above the board.
   The move log is hidden first; score and turn state remain readable. */
@media(max-width:900px){
  .match-page{
    grid-template-rows:34px minmax(0,1fr) var(--hand-h);
  }
  .battle-layout{
    grid-template-columns:1fr;
    grid-template-rows:auto minmax(0,1fr);
    gap:6px;
  }
  .race-panel{
    order:-1;
    height:auto;
    min-height:0;
    grid-template-columns:auto minmax(0,1fr) auto;
    grid-template-rows:auto auto;
    gap:6px 8px;
    padding:7px 8px;
  }
  .race-title{grid-column:1;grid-row:1}
  .race-score{grid-column:2;grid-row:1 / span 2;padding:6px 8px}
  .race-rounds{grid-column:3;grid-row:1;padding:6px 8px}
  .race-status{grid-column:1;grid-row:2;padding:4px 0}
  .race-hands{grid-column:3;grid-row:2}
  .race-log,.race-footer-actions{display:none}
  .race-score-player>strong{font-size:28px}
  .race-score-player>small{display:none}
  .race-score-center>b{font-size:11px}
  .race-rounds>span{display:none}
  .race-rounds{grid-template-columns:auto auto}
  .race-round-dots{display:none}
  .race-hands small{font-size:6px}
  .race-hands b{font-size:15px}
  .board-panel{padding:5px;grid-template-rows:28px minmax(0,1fr)}
  .board-turn{font-size:8px}
  body.match-mode .board{width:min(100%,var(--board-max),520px)!important}
}

@media(max-width:520px){
  .race-panel{
    grid-template-columns:1fr;
    grid-template-rows:auto auto auto;
  }
  .race-title{display:none}
  .race-score{grid-column:1;grid-row:1}
  .race-status{grid-column:1;grid-row:2}
  .race-rounds,.race-hands{display:none}
  .race-score{
    grid-template-columns:50px minmax(0,1fr) 50px;
  }
  .race-score-player>strong{font-size:24px}
  .race-score-player>span{font-size:6px}
  .race-score-center>span{font-size:6px}
  .race-status strong{font-size:9px}
  .race-status span{font-size:7px}
  .board-panel{grid-template-rows:24px minmax(0,1fr)}
  .board-turn{font-size:7px}
}


/* Drift9 v0.8.0 — final readability tuning */
.game-card-board .game-stats small,
.game-card-hand .game-stats small{display:none!important}
.game-card-board .game-stats b{font-size:14px}
.game-card-hand .game-stats b{font-size:12px}
.game-card-board .game-model{font-size:10.5px}
.game-card-hand .game-model{font-size:10.5px}
.game-card-board .game-brand,
.game-card-hand .game-brand{font-size:8px}
.race-log-card{font-size:11px}
.race-log-copy small{font-size:9px}
.race-log-head strong{font-size:9px}
.race-log-head span{font-size:8px}
.race-hands small{font-size:8px}
.race-score-player>small{font-size:9px}
.race-status span{font-size:10px}
.race-footer-actions .race-rules,
.race-footer-actions .race-next{font-size:9px}


/* Drift9 v0.8.1 — readability + long-name handling */
.match-rule-btn,.turn-light{font-size:10px}
.board-head .eyebrow{font-size:10px}
.board-turn{font-size:12px;line-height:1.1}
.ownership-key{font-size:8px}

/* Model names can use two lines instead of being crushed into one. */
.game-model{
  white-space:normal!important;
  overflow:hidden;
  text-overflow:clip;
  display:-webkit-box!important;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  line-clamp:2;
  text-wrap:balance;
  line-height:1.05!important;
  min-width:0;
}
.game-card-board{
  grid-template-rows:24px minmax(28px,auto) minmax(0,1fr) 21px;
}
.game-card-hand{
  grid-template-rows:21px minmax(27px,auto) minmax(0,1fr) 21px;
}
.game-card-board .game-brand{font-size:9px}
.game-card-board .game-model{font-size:11.5px;padding:2px 6px 4px}
.game-card-board .game-model.model-long{font-size:10px}
.game-card-board .game-model.model-xlong{font-size:9px}
.game-card-board .game-rarity{font-size:7px;min-width:20px}
.game-card-board .game-stats b{font-size:15px}
.game-card-board .game-card-foot,
.game-card-board .game-card-foot strong{font-size:7.5px}

.game-card-hand .game-brand{font-size:8.5px}
.game-card-hand .game-model{font-size:11px;padding:2px 5px 4px}
.game-card-hand .game-model.model-long{font-size:9.5px}
.game-card-hand .game-model.model-xlong{font-size:8.5px}
.game-card-hand .game-rarity{font-size:7px;min-width:19px}
.game-card-hand .game-stats b{font-size:13px}
.game-card-hand .game-card-foot,
.game-card-hand .game-card-foot strong{font-size:7px}

/* Race Control: keep useful information comfortably readable. */
.race-title .eyebrow{font-size:12px}
.race-round{font-size:10px}
.race-score-player>span{font-size:9px}
.race-score-player>small{font-size:10px}
.race-score-center>span{font-size:8px}
.race-score-center>b{font-size:15px}
.race-rounds>span{font-size:9px}
.race-rounds-score b{font-size:20px}
.race-status strong{font-size:12px}
.race-status span{font-size:10.5px;line-height:1.35}
.race-hands small{font-size:9px}
.race-hands b{font-size:21px}
.race-log-title strong{font-size:11px}
.race-log-title span{font-size:9px}
.race-log-head strong{font-size:10px}
.race-log-head span{font-size:9px}
.race-log-card{font-size:12px;line-height:1.15}
.race-log-copy small{font-size:10px;line-height:1.25}
.race-log-empty{font-size:10px}
.race-footer-actions .race-next{font-size:10px}

/* Tablet keeps two-line names and prioritises numbers over secondary copy. */
@media(max-width:900px){
  .game-card-board .game-brand{font-size:6px}
  .game-card-board .game-model{font-size:8px}
  .game-card-board .game-model.model-long{font-size:7px}
  .game-card-board .game-model.model-xlong{font-size:6.4px}
  .game-card-board .game-stats b{font-size:9px}
  .game-card-board .game-card-foot,
  .game-card-board .game-card-foot strong{font-size:5px}

  .game-card-hand .game-brand{font-size:5.5px}
  .game-card-hand .game-model{font-size:7px}
  .game-card-hand .game-model.model-long{font-size:6.2px}
  .game-card-hand .game-model.model-xlong{font-size:5.7px}
  .game-card-hand .game-stats b{font-size:8px}
  .game-card-hand .game-card-foot,
  .game-card-hand .game-card-foot strong{font-size:5px}

  .race-status strong{font-size:10px}
  .race-status span{font-size:8px}
}
@media(max-width:520px){
  .game-card-board{grid-template-rows:15px minmax(18px,auto) minmax(0,1fr) 12px}
  .game-card-hand{grid-template-rows:14px minmax(18px,auto) minmax(0,1fr) 12px}
  .game-card-board .game-model{font-size:6px}
  .game-card-board .game-model.model-long{font-size:5.4px}
  .game-card-board .game-model.model-xlong{font-size:5px}
  .game-card-hand .game-model{font-size:5.7px}
  .game-card-hand .game-model.model-long{font-size:5.1px}
  .game-card-hand .game-model.model-xlong{font-size:4.8px}
}


/* Collector names follow the same two-line strategy as gameplay cards. */
.collector-title strong{
  white-space:normal!important;
  overflow:hidden;
  text-overflow:clip;
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  line-clamp:2;
  text-wrap:balance;
  line-height:1.05;
}
.collector-title strong.collector-model-long{font-size:10px}
.collector-title strong.collector-model-xlong{font-size:9px}

@media(max-width:900px){
  .collector-title strong.collector-model-long{font-size:9px}
  .collector-title strong.collector-model-xlong{font-size:8px}
}
@media(max-width:520px){
  .collector-title strong.collector-model-long{font-size:9.5px}
  .collector-title strong.collector-model-xlong{font-size:8.5px}
}


/* Drift9 v0.10 — data lab */
.collector-country{
  display:flex;
  align-items:center;
  gap:7px;
  min-width:0;
}
.collector-country>b{font-size:1em;line-height:1}
.collector-country>strong{
  max-width:110px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font:900 9px/1 Barlow,Arial,sans-serif;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:#e4ddd1;
}
.game-country{font-weight:900;color:#e9e1d5}
.admin-kpis{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
  margin:14px 0;
}
.admin-kpis article{
  border:1px solid var(--line,#3f413d);
  background:#171917;
  padding:14px;
  display:grid;
  gap:5px;
}
.admin-kpis span{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:#918e86}
.admin-kpis strong{font:900 28px/1 'Barlow Condensed','Arial Narrow',sans-serif;color:#f1e9dc}
.admin-data-layout{align-items:start}
.scoring-rules{display:grid;gap:10px;margin:16px 0}
.scoring-rule{
  display:grid;
  grid-template-columns:minmax(150px,1fr) minmax(130px,.7fr) minmax(130px,.7fr);
  gap:10px;
  align-items:end;
  padding:12px;
  border:1px solid #3f413d;
  background:#151715;
}
.scoring-rule>div{display:grid;gap:5px;align-self:center}
.scoring-rule>div strong{font-size:13px;text-transform:uppercase;letter-spacing:.04em}
.scoring-rule>div span{font-size:9px;color:#918e86;text-transform:uppercase}
.scoring-rule label{position:relative}
.scoring-rule label small{position:absolute;right:10px;bottom:12px;color:#77746d;font-size:8px;pointer-events:none}
.scoring-rule label .input{padding-right:44px}
.import-panel{align-self:start}
#catalog-import-status{min-height:1.4em}
@media(max-width:900px){
  .admin-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .scoring-rule{grid-template-columns:1fr 1fr}
  .scoring-rule>div{grid-column:1/-1}
}
@media(max-width:520px){
  .admin-kpis{grid-template-columns:1fr 1fr}
  .admin-kpis strong{font-size:23px}
  .scoring-rule{grid-template-columns:1fr}
  .scoring-rule>div{grid-column:auto}
}


/* Drift9 v0.11 — accounts, personal garage and decks */
.account-profile{
  color:inherit;
  text-decoration:none;
  font-weight:900;
}
.account-profile:hover{text-decoration:underline}
.account-role{
  padding:3px 6px;
  border:1px solid #484a45;
  color:#9c988f;
  font:800 7px/1 Barlow,Arial,sans-serif;
  letter-spacing:.07em;
  text-transform:uppercase;
}

.profile-hero{
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  gap:16px;
  align-items:center;
  margin:18px 0;
  padding:18px;
  border:1px solid #3f413d;
  background:linear-gradient(135deg,#1b1d1b,#101210);
}
.profile-hero h1{margin:4px 0 2px}
.profile-hero p{margin:0;color:#969289}
.profile-avatar{
  width:64px;height:64px;
  display:grid;place-items:center;
  overflow:hidden;
  border:1px solid #5a5c56;
  background:#101210;
  font:900 20px/1 'Barlow Condensed','Arial Narrow',sans-serif;
}
.profile-avatar img{width:100%;height:100%;object-fit:cover}
.profile-role{align-self:start}

.profile-kpis{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
  margin:0 0 18px;
}
.profile-kpis article{
  min-width:0;
  display:grid;
  gap:5px;
  padding:14px;
  border:1px solid #3f413d;
  background:#151715;
}
.profile-kpis span{
  font:800 9px/1 Barlow,Arial,sans-serif;
  text-transform:uppercase;
  letter-spacing:.08em;
  color:#8f8c84;
}
.profile-kpis strong{
  font:900 30px/1 'Barlow Condensed','Arial Narrow',sans-serif;
  color:#f2eadf;
}
.profile-kpis small{font-size:9px;color:#99958d}

.profile-layout{
  display:grid;
  grid-template-columns:minmax(0,.72fr) minmax(0,1.28fr);
  gap:14px;
  align-items:start;
}
.profile-form{display:grid;gap:12px}
.profile-form label,
.profile-deck-panel>form>label{
  display:grid;
  gap:6px;
  font-size:10px;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.05em;
}
.deck-picker{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px;
  margin:12px 0;
  max-height:430px;
  overflow:auto;
  padding-right:4px;
}
.deck-pick{
  min-width:0;
  min-height:50px;
  display:grid;
  grid-template-columns:auto auto minmax(0,1fr);
  align-items:center;
  gap:8px;
  padding:8px;
  border:1px solid #3e403b;
  background:#121412;
  cursor:pointer;
}
.deck-pick.selected{
  border-color:#b7b0a3;
  background:#22241f;
}
.deck-pick input{width:18px;height:18px}
.deck-pick>span{font-size:18px}
.deck-pick>div{min-width:0;display:grid;gap:3px}
.deck-pick strong{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:10px;
}
.deck-pick small{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:8px;
  color:#8f8c84;
  text-transform:uppercase;
}

.profile-history{margin-top:18px}
.profile-matches{display:grid;gap:7px}
.profile-match{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  padding:11px 12px;
  border:1px solid #3e403b;
  background:#131513;
  color:inherit;
  text-decoration:none;
}
.profile-match>div{min-width:0;display:grid;gap:3px}
.profile-match strong{font-size:11px}
.profile-match span{font-size:9px;color:#8f8c84;text-transform:uppercase}
.profile-match>b{font:900 18px/1 'Barlow Condensed','Arial Narrow',sans-serif;white-space:nowrap}

.garage-owned-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(240px,1fr));
  gap:18px;
}
.garage-owned-item{min-width:0}
.garage-source{
  display:block;
  margin-top:6px;
  color:#8f8c84;
  font-size:9px;
  text-transform:uppercase;
  letter-spacing:.06em;
}

.admin-users{margin-top:14px}
.admin-player-list{display:grid;gap:8px;margin-top:14px}
.admin-player-row{
  display:grid;
  grid-template-columns:minmax(260px,1fr) 130px 90px auto;
  gap:10px;
  align-items:center;
  padding:10px;
  border:1px solid #3e403b;
  background:#141614;
}
.admin-player-row.archived{opacity:.58}
.admin-player-identity{
  min-width:0;
  display:grid;
  grid-template-columns:38px minmax(0,1fr);
  gap:9px;
  align-items:center;
}
.admin-player-identity img,
.admin-player-avatar{
  width:38px;height:38px;
  display:grid;place-items:center;
  object-fit:cover;
  border:1px solid #4d4f49;
  background:#101210;
  font:900 10px/1 'Barlow Condensed','Arial Narrow',sans-serif;
}
.admin-player-identity>div{min-width:0;display:grid;gap:3px}
.admin-player-identity strong{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:11px;
}
.admin-player-identity span{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:#8f8c84;
  font-size:8px;
}
.admin-player-row>label{
  display:grid;
  gap:4px;
  font-size:8px;
  text-transform:uppercase;
  letter-spacing:.05em;
}
.admin-player-active{
  display:flex!important;
  align-items:center;
  gap:6px!important;
}

@media(max-width:900px){
  .profile-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .profile-layout{grid-template-columns:1fr}
  .admin-player-row{grid-template-columns:minmax(0,1fr) 120px auto}
  .admin-player-identity{grid-column:1/-1}
}
@media(max-width:520px){
  .profile-hero{grid-template-columns:auto minmax(0,1fr);padding:12px}
  .profile-role{grid-column:1/-1;justify-self:start}
  .profile-avatar{width:52px;height:52px}
  .profile-kpis{grid-template-columns:1fr 1fr}
  .profile-kpis strong{font-size:25px}
  .deck-picker{grid-template-columns:1fr;max-height:none}
  .garage-owned-grid{grid-template-columns:1fr}
  .admin-player-row{grid-template-columns:1fr}
  .admin-player-identity{grid-column:auto}
}


/* Drift9 v0.12 — image enrichment */
.image-kpis{grid-template-columns:repeat(6,minmax(0,1fr))}
.image-control{margin:14px 0}
.image-review{padding:16px;margin:16px 0;border:1px solid #51544d;background:#1a1c19}
.image-review h3{margin:3px 0 0}
.image-review-controls{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}
.image-review-controls select{flex:1 1 230px;min-width:0}
.image-review-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;align-items:start}
.image-review-option{border:1px solid #44473f;background:#111310;min-width:0}
.image-review-pick{display:block;width:100%;padding:0;border:0;background:#0b0d0b;cursor:pointer}
.image-review-pick:focus-visible{outline:2px solid #fb6938;outline-offset:2px}
.image-review-option img{display:block;width:100%;aspect-ratio:4/3;object-fit:contain;background:#0b0d0b}
.image-review-error{display:grid;place-items:center;min-height:180px;aspect-ratio:4/3;padding:16px;color:#bbb;background:#222;text-align:center}
.image-review-unavailable button{cursor:not-allowed;opacity:.55}
.image-review-option>div{padding:8px;display:grid;gap:8px}
.image-review-option span{font-size:11px;line-height:1.4;overflow-wrap:anywhere}
.image-review-grid>a{grid-column:1/-1;justify-self:start}
.image-review-manual{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;align-items:center}
.image-review-manual input{flex:1 1 270px;min-width:0}
.google-review-results{height:0;overflow:hidden}
/* The engine is configured with Google's overlay layout. Its results are rendered
   as selectable cards above; the empty overlay would otherwise cover those cards. */
body.image-review-google-active .gsc-modal-background-image,
body.image-review-google-active .gsc-results-wrapper-overlay{display:none!important}
@media(max-width:900px){.image-review-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:600px){.image-review-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.image-review-controls .btn{flex:1 1 auto}}
.image-toolbar{
  display:grid;
  grid-template-columns:minmax(220px,1fr) minmax(170px,.4fr) auto;
  gap:10px;
  align-items:center;
  margin:14px 0;
}
.admin-image-list{display:grid;gap:9px}
.admin-image-row{
  display:grid;
  grid-template-columns:128px minmax(0,1fr) auto;
  gap:12px;
  align-items:center;
  padding:10px;
  border:1px solid #3e403b;
  background:#141614;
}
.admin-image-preview{
  width:128px;
  aspect-ratio:16/9;
  overflow:hidden;
  display:grid;
  place-items:center;
  background:#0e100e;
  border:1px solid #3f413d;
  font:900 18px/1 'Barlow Condensed','Arial Narrow',sans-serif;
}
.admin-image-preview img{width:100%;height:100%;object-fit:cover}
.admin-image-copy{min-width:0;display:grid;gap:4px}
.admin-image-title{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.admin-image-title strong{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:12px;
}
.admin-image-copy>span,
.admin-image-copy>a,
.admin-image-copy>small{font-size:9px}
.admin-image-copy>span{color:#969289;text-transform:uppercase}
.admin-image-copy>a{color:#c9c1b4;text-decoration:none}
.admin-image-copy>a:hover{text-decoration:underline}
.image-error{color:#d99b83}
.image-status-badge{
  display:inline-flex;
  align-items:center;
  padding:4px 6px;
  border:1px solid #4a4c47;
  font:800 8px/1 Barlow,Arial,sans-serif;
  text-transform:uppercase;
  letter-spacing:.06em;
}
.status-candidate .image-status-badge{border-color:#d8b468}
.status-validated .image-status-badge{border-color:#7ea681}
.status-manual .image-status-badge{border-color:#7892b8}
.status-error .image-status-badge{border-color:#b36f63}
.admin-image-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.manual-image-form{
  grid-column:2/-1;
  display:grid;
  grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) auto;
  gap:8px;
}
@media(max-width:1100px){
  .image-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:760px){
  .image-toolbar{grid-template-columns:1fr}
  .admin-image-row{grid-template-columns:92px minmax(0,1fr)}
  .admin-image-preview{width:92px}
  .admin-image-actions{grid-column:1/-1;justify-content:flex-start}
  .manual-image-form{grid-column:1/-1;grid-template-columns:1fr}
}
@media(max-width:520px){
  .image-kpis{grid-template-columns:1fr 1fr}
}


/* Drift9 v0.13 — photo-first cards */
.collector-card{
  width:100%;
  max-width:340px;
  aspect-ratio:auto;
  grid-template-rows:auto auto auto auto auto;
  background:#111311;
}
.collector-head{
  min-height:52px;
  padding:9px 12px 8px 14px;
}
.collector-title span{font-size:10px}
.collector-title strong{font-size:12px}
.collector-title strong.collector-model-long{font-size:11px}
.collector-title strong.collector-model-xlong{font-size:10px}
.collector-rarity{min-width:34px;height:30px;font-size:10px}

.collector-stage{
  width:100%;
  aspect-ratio:16/10;
  min-height:0;
  display:block;
  border-bottom:0;
  background:#1b1d1a;
}
.collector-stage:before,
.collector-stage:after{display:none}
.collector-image{
  position:absolute;
  inset:0;
  object-fit:cover;
  object-position:center;
  filter:saturate(.94) contrast(1.04) brightness(.91);
}
.collector-placeholder{
  background:
    radial-gradient(circle at 50% 45%,color-mix(in srgb,var(--vehicle-accent) 28%,transparent),transparent 42%),
    linear-gradient(160deg,#252824,#111311);
}

.collector-stat-strip{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  background:#0d0f0d;
  border-top:1px solid #55564f;
  border-bottom:1px solid #45463f;
}
.collector-stat-strip span{
  min-width:0;
  min-height:62px;
  display:grid;
  place-items:center;
  align-content:center;
  gap:4px;
  padding:8px 5px 7px;
  border-right:1px solid #3e403b;
}
.collector-stat-strip span:last-child{border-right:0}
.collector-stat-strip small{
  color:#97938a;
  font:900 7px/1 Barlow,Arial,sans-serif;
  letter-spacing:.08em;
}
.collector-stat-strip b{
  color:#f7f0e5;
  font:900 24px/.92 'Barlow Condensed','Arial Narrow',sans-serif;
}
.collector-meta{
  min-width:0;
  padding:12px 14px 11px;
  display:grid;
  grid-template-rows:none;
  gap:9px;
  align-content:start;
}
.collector-signature{
  align-self:auto;
  white-space:normal;
  overflow:visible;
  text-overflow:clip;
  min-height:1em;
}
.collector-foot{
  min-height:34px;
  padding:0 14px;
}
.cards-grid{
  grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
  gap:22px;
}
.collection-item{align-self:start}

/* Duel cards keep directionality, but the photo is no longer hidden by a
   central diamond. Values sit on the four actual fighting edges. */
.game-card-field{place-items:stretch}
.game-car-image{
  opacity:.78;
  filter:saturate(.88) contrast(1.04) brightness(.88);
}
.game-stats,
.game-card-board .game-stats,
.game-card-hand .game-stats{
  position:absolute;
  inset:0;
  width:100%!important;
  height:100%;
  aspect-ratio:auto;
  display:block;
  pointer-events:none;
}
.game-stats:before{display:none!important}
.game-stats span,
.game-card-board .game-stats span,
.game-card-hand .game-stats span{
  position:absolute;
  z-index:4;
  width:auto!important;
  max-width:none!important;
  min-width:28px;
  min-height:25px;
  padding:3px 5px;
  display:grid;
  place-items:center;
  align-content:center;
  background:#0e100eea;
  border:1px solid #858279;
  box-shadow:2px 2px 0 #0009;
}
.game-stats .north{top:3px;left:50%;transform:translateX(-50%)}
.game-stats .east{right:3px;top:50%;transform:translateY(-50%)}
.game-stats .south{bottom:3px;left:50%;transform:translateX(-50%)}
.game-stats .west{left:3px;top:50%;transform:translateY(-50%)}
.game-card-board .game-stats b{font-size:13px}
.game-card-hand .game-stats b{font-size:12px}

/* Image-review controls: the auto picker now favours exterior views. */
.status-rejected .image-status-badge{border-color:#7b7770}

@media(max-width:900px){
  .cards-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
  .collector-card{max-width:340px}
  .collector-stat-strip span{min-height:56px}
  .collector-stat-strip b{font-size:21px}
  .collector-stat-strip small{font-size:6px}
}
@media(max-width:520px){
  .cards-grid{grid-template-columns:1fr;gap:18px}
  .collector-card{
    width:min(100%,360px);
    max-width:360px;
    grid-template-rows:auto auto auto auto auto;
  }
  .collector-head{min-height:50px;padding:8px 10px 7px 12px}
  .collector-title span{font-size:9.5px}
  .collector-title strong{font-size:11px}
  .collector-title strong.collector-model-long{font-size:10px}
  .collector-title strong.collector-model-xlong{font-size:9px}
  .collector-stage{aspect-ratio:16/10}
  .collector-stat-strip span{min-height:58px;padding:7px 3px}
  .collector-stat-strip b{font-size:22px}
  .collector-stat-strip small{font-size:6.5px}
  .collector-meta{padding:11px 12px 10px;gap:8px}
  .collector-foot{min-height:34px;padding:0 12px}

  .game-stats span,
  .game-card-board .game-stats span,
  .game-card-hand .game-stats span{
    min-width:15px;
    min-height:14px;
    padding:1px 2px;
  }
  .game-card-board .game-stats b{font-size:7px}
  .game-card-hand .game-stats b{font-size:6.5px}
  .game-stats .north{top:1px}
  .game-stats .east{right:1px}
  .game-stats .south{bottom:1px}
  .game-stats .west{left:1px}
  .game-car-image{opacity:.84;filter:saturate(.9) contrast(1.03) brightness(.9)}
}


/* Drift9 v0.13.1 — mobile admin containment + duplicate-free card meta */
body:not(.match-mode){overflow-x:hidden}
.admin-nav{
  display:grid!important;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:8px;
  width:100%;
  max-width:100%;
}
.admin-nav .btn{
  min-width:0;
  width:100%;
  padding:10px 8px;
  line-height:1.08;
  white-space:normal;
  text-align:center;
}
.collector-identity-country-only{
  display:flex;
  justify-content:flex-end;
  min-height:24px;
}
.collector-identity-country-only .collector-country{
  margin-left:auto;
}
.collector-meta{
  grid-template-rows:auto auto!important;
}
.collector-signature{display:none!important}

@media(max-width:760px){
  .admin-nav{
    position:static!important;
    grid-template-columns:repeat(2,minmax(0,1fr));
    padding:0;
    background:transparent;
    backdrop-filter:none;
  }
  .admin-nav .btn{
    min-height:44px;
    font-size:10px;
    letter-spacing:.03em;
  }
  .admin-nav .btn:last-child{
    grid-column:1/-1;
  }
}


/* Drift9 v0.13.2 — cardinal stats, rarity frame, hard name bounds */
.collector-card,
.game-card{
  --rarity:#8d8a82;
}
.collector-card.rarity-c,.game-card.rarity-c{--rarity:#8d8a82}
.collector-card.rarity-nc,.game-card.rarity-nc{--rarity:#6f9f79}
.collector-card.rarity-r,.game-card.rarity-r{--rarity:#5b91da}
.collector-card.rarity-sr,.game-card.rarity-sr{--rarity:#9468d3}
.collector-card.rarity-ur,.game-card.rarity-ur{--rarity:#c9ab48}
.collector-card.rarity-ss,.game-card.rarity-ss{--rarity:#d65a4e}

.collector-card{
  grid-template-rows:auto auto auto auto!important;
  border:2px solid var(--rarity)!important;
  border-top-width:4px!important;
  box-shadow:
    0 0 0 1px color-mix(in srgb,var(--rarity) 18%,transparent),
    5px 7px 0 #0008!important;
}
.collector-card.rarity-sr,
.collector-card.rarity-ur,
.collector-card.rarity-ss{
  box-shadow:
    0 0 0 1px color-mix(in srgb,var(--rarity) 35%,transparent),
    0 0 14px color-mix(in srgb,var(--rarity) 14%,transparent),
    5px 7px 0 #0008!important;
}
.collector-head{
  grid-template-columns:1fr!important;
  min-height:58px!important;
}
.collector-title{
  grid-template-columns:minmax(72px,.32fr) minmax(0,.68fr)!important;
}
.collector-title strong{
  max-height:2.15em!important;
  overflow:hidden!important;
  display:-webkit-box!important;
  -webkit-box-orient:vertical!important;
  -webkit-line-clamp:2!important;
  line-clamp:2!important;
  overflow-wrap:anywhere;
  word-break:break-word;
  text-overflow:ellipsis!important;
}
.collector-title strong.collector-model-long{font-size:10px!important}
.collector-title strong.collector-model-xlong{font-size:9px!important}

.collector-stage-wrap{
  position:relative;
  width:100%;
  min-width:0;
}
.collector-stage{
  width:100%;
  aspect-ratio:16/10;
}
.collector-cardinal-stats{
  position:absolute;
  inset:0;
  z-index:5;
  pointer-events:none;
}
.collector-cardinal-stats span{
  position:absolute;
  min-width:44px;
  min-height:39px;
  display:grid;
  place-items:center;
  align-content:center;
  gap:2px;
  padding:4px 5px;
  color:#f8f1e6;
  background:#0c0e0ce8;
  border:1px solid color-mix(in srgb,var(--rarity) 58%,#7b7b74);
  box-shadow:2px 2px 0 #0008;
}
.collector-cardinal-stats small{
  font:800 6px/1 Barlow,Arial,sans-serif;
  letter-spacing:.08em;
  color:#a6a198;
}
.collector-cardinal-stats b{
  font:900 17px/1 'Barlow Condensed','Arial Narrow',sans-serif;
}
.collector-cardinal-stats .north{top:6px;left:50%;transform:translateX(-50%)}
.collector-cardinal-stats .east{right:6px;top:50%;transform:translateY(-50%)}
.collector-cardinal-stats .south{bottom:6px;left:50%;transform:translateX(-50%)}
.collector-cardinal-stats .west{left:6px;top:50%;transform:translateY(-50%)}

.collector-meta{
  grid-template-rows:auto auto!important;
}
.collector-rarity,
.game-rarity{display:none!important}

/* Rarity is encoded by the complete frame, never by a header badge. */
.game-card{
  border:2px solid var(--rarity)!important;
  box-shadow:
    inset 0 0 0 1px color-mix(in srgb,var(--rarity) 22%,transparent),
    3px 4px 0 #0008;
}
.game-card.rarity-sr,
.game-card.rarity-ur,
.game-card.rarity-ss{
  box-shadow:
    inset 0 0 0 1px color-mix(in srgb,var(--rarity) 34%,transparent),
    0 0 9px color-mix(in srgb,var(--rarity) 15%,transparent),
    3px 4px 0 #0008;
}

/* Long model names are allowed two lines, then are hard-clipped with ellipsis.
   The full name remains available through the title attribute. */
.game-model{
  min-width:0!important;
  width:100%;
  max-height:2.15em!important;
  overflow:hidden!important;
  display:-webkit-box!important;
  -webkit-box-orient:vertical!important;
  -webkit-line-clamp:2!important;
  line-clamp:2!important;
  overflow-wrap:anywhere;
  word-break:break-word;
  text-overflow:ellipsis!important;
}
.game-card-board .game-model,
.game-card-hand .game-model{
  align-self:stretch;
  min-height:0!important;
}
.game-card-board{
  grid-template-rows:24px 28px minmax(0,1fr) 21px!important;
}
.game-card-hand{
  grid-template-rows:21px 27px minmax(0,1fr) 21px!important;
}

@media(max-width:900px){
  .collector-head{min-height:54px!important}
  .collector-title strong.collector-model-long{font-size:9px!important}
  .collector-title strong.collector-model-xlong{font-size:8px!important}
  .collector-cardinal-stats span{min-width:39px;min-height:34px;padding:3px 4px}
  .collector-cardinal-stats b{font-size:15px}
}
@media(max-width:520px){
  .collector-head{min-height:56px!important}
  .collector-title{
    grid-template-columns:minmax(70px,.3fr) minmax(0,.7fr)!important;
  }
  .collector-title strong{font-size:10px!important}
  .collector-title strong.collector-model-long{font-size:9px!important}
  .collector-title strong.collector-model-xlong{font-size:8px!important}
  .collector-cardinal-stats span{min-width:42px;min-height:36px}
  .collector-cardinal-stats b{font-size:16px}

  .game-card-board{grid-template-rows:15px 18px minmax(0,1fr) 12px!important}
  .game-card-hand{grid-template-rows:14px 18px minmax(0,1fr) 12px!important}
  .game-model{
    -webkit-line-clamp:2!important;
    line-clamp:2!important;
  }
}

/* v0.13.3 — shared cardinal frame. Each rating has its own grid cell;
   the photograph can never extend beneath a value. */
.card-field{
  --rail-x:40px;
  --rail-y:36px;
  position:relative;
  min-width:0;
  min-height:0;
  display:grid;
  grid-template-columns:var(--rail-x) minmax(0,1fr) var(--rail-x);
  grid-template-rows:var(--rail-y) minmax(0,1fr) var(--rail-y);
  background:linear-gradient(135deg,#242722,#111410);
  overflow:hidden;
}
.vehicle-window{
  grid-area:2/2;
  position:relative;
  min-width:0;
  min-height:0;
  overflow:hidden;
  border:1px solid #ffffff18;
  border-radius:2px;
  background:radial-gradient(ellipse at center,color-mix(in srgb,var(--vehicle-accent) 35%,#242722),#141713);
  display:grid;
  place-items:center;
}
.vehicle-window img{display:block;width:100%;height:100%;object-fit:cover;position:absolute;inset:0}
.card-art-placeholder{font:italic 900 38px/1 'Barlow Condensed','Arial Narrow',sans-serif;color:#ffffff20;letter-spacing:-.05em}
.card-rating{
  min-width:0;min-height:0;
  display:flex;flex-direction:column;justify-content:center;align-items:center;
  gap:3px;color:#f8f1e6;
  font-variant-numeric:tabular-nums;
}
.card-rating.north{grid-area:1/2}
.card-rating.east{grid-area:2/3}
.card-rating.south{grid-area:3/2}
.card-rating.west{grid-area:2/1}
.card-rating small{font:800 6px/1 Barlow,Arial,sans-serif;letter-spacing:.09em;color:#aaa79b}
.card-rating b{font:900 20px/1 'Barlow Condensed','Arial Narrow',sans-serif}
.card-field-collector .vehicle-window{aspect-ratio:4/3}
.collector-card{
  height:auto!important;min-height:0!important;aspect-ratio:auto!important;
  align-content:start;grid-template-rows:auto auto auto auto!important;
}
.collector-head{min-height:64px!important;padding:10px 12px!important}
.collector-title{grid-template-columns:minmax(0,1fr)!important;gap:5px}
.collector-title span{font-size:9px}
.collector-title strong,
.collector-title strong.collector-model-long,
.collector-title strong.collector-model-xlong{
  text-align:left;font-size:13px!important;line-height:1.15;
  white-space:normal;max-height:2.3em!important;
}
.collector-meta{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;
  min-height:0;height:auto;padding:10px 12px;gap:8px;
  border-top:1px solid #ffffff12;
}
.collector-identity-country-only{min-height:0;order:2;margin-left:auto}
.collector-country{font-size:18px;gap:6px}
.collector-country strong{font-size:8px}
.collector-tags{flex:1 1 100px;gap:4px}
.collector-tags span{font-size:7px;padding:5px 6px}
.collector-foot{margin:0!important;padding:9px 12px!important;min-height:32px;letter-spacing:.1em}
.card-field-game{--rail-x:22%;--rail-y:22%}
.card-field-game .card-rating{gap:0}
.card-field-game .card-rating small{display:none}
.card-field-game .card-rating b{font:900 12px/1 Barlow,Arial,sans-serif;letter-spacing:-.04em}
.card-field-game .card-art-placeholder{font-size:20px}
.game-model{white-space:normal!important}
.game-card.owned .card-field{background:linear-gradient(135deg,color-mix(in srgb,var(--you) 18%,#20231f),#111410)}
.game-card.enemy .card-field{background:linear-gradient(135deg,color-mix(in srgb,var(--rival) 18%,#20231f),#111410)}
@media(max-width:520px){
  .card-field-game .card-rating b{font-size:8px}
  .card-field-game .card-art-placeholder{font-size:12px}
}

/* v0.13.4 — mobile duel: normal document flow, one score, one status.
   Safari's changing viewport must never crop the board behind the hand. */
.mobile-result-actions{display:none}
@media(max-width:900px){
  body.match-mode{overflow-y:auto;overflow-x:hidden;background:#101210}
  body.match-mode .shell{
    display:block;height:auto;min-height:100dvh;
    padding:0 14px max(18px,env(safe-area-inset-bottom));
  }
  body.match-mode .top{display:none}
  body.match-mode #app{overflow:visible}
  .match-page{
    height:auto;min-height:0;max-width:540px;
    display:flex;flex-direction:column;gap:16px;
    padding:8px 0 0;overflow:visible;
  }
  .match-topbar{
    height:auto;min-height:44px;padding:0;
    display:grid;grid-template-columns:1fr auto 1fr;gap:8px;
    border:0;background:none;
  }
  .match-back{margin:0;font-size:12px;min-height:44px;display:flex;align-items:center}
  .match-context strong{font:800 15px/1.2 Barlow,Arial,sans-serif;letter-spacing:-.03em}
  .match-context .eyebrow,.match-actions .turn-light{display:none}
  .match-actions{justify-self:end}
  .match-rule-btn{font-size:10px;min-height:40px;padding:8px 10px;border:1px solid #41453c;border-radius:7px}
  .battle-layout{height:auto;display:flex;flex-direction:column;gap:16px;overflow:visible}
  .race-panel{
    display:grid;order:-1;height:auto;min-height:0;
    grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto;
    align-items:center;gap:12px;padding:10px 12px;
    border:1px solid #32372e;border-radius:10px;background:#1b1e19;
  }
  .race-title,.race-status,.race-hands,.race-log,.race-footer-actions{display:none}
  .race-score{
    grid-column:1;grid-row:1;grid-template-columns:auto minmax(24px,1fr) auto;
    padding:0;gap:12px;border:0;background:none;
  }
  .race-score-player{display:flex;align-items:center;gap:7px}
  .race-score-player>span{font-size:8px;letter-spacing:.06em}
  .race-score-player>strong{font:800 22px/1 Barlow,Arial,sans-serif}
  .race-score-player>small,.race-score-center>span,.race-score-center>b{display:none}
  .race-score-meter{height:4px;margin:0;border:0;border-radius:4px;overflow:hidden}
  .race-rounds{
    display:grid;grid-column:2;grid-row:1;gap:3px;
    grid-template-columns:1fr;padding:0 0 0 12px;
    border:0;border-left:1px solid #41453c;background:none;text-align:center;
  }
  .race-rounds>span{display:block;font-size:7px;letter-spacing:.08em;color:#aaa99e}
  .race-rounds-score{gap:6px;justify-content:center}
  .race-rounds-score b{font:700 12px/1 Barlow,Arial,sans-serif}
  .race-round-dots{display:none}
  .board-panel{
    display:flex;flex-direction:column;gap:12px;
    height:auto;min-height:0;padding:0;border:0;background:none;overflow:visible;
  }
  .board-head{min-height:24px;margin:0;align-items:center;gap:8px}
  .board-head .eyebrow{display:none}
  .board-turn{font:700 12px/1.35 Barlow,Arial,sans-serif;text-transform:none}
  .ownership-key{font-size:7px;gap:8px;white-space:nowrap}
  body.match-mode .board{
    width:100%!important;max-width:none!important;height:auto!important;
    aspect-ratio:1;grid-template-columns:repeat(3,minmax(0,1fr));
    grid-template-rows:repeat(3,minmax(0,1fr));
    padding:0;gap:7px;border:0;background:none;margin:0;
  }
  .board .cell{padding:0;border:0;background:none;overflow:hidden;border-radius:5px}
  .board .cell.empty{border:1px dashed #464c40;background:#1a1d18;min-height:0}
  .board .cell.empty small{display:none}
  .game-card{border-radius:5px;box-shadow:none}
  .hand-panel{
    position:static;height:auto;min-height:0;display:grid;
    grid-template-rows:auto auto;gap:10px;padding:14px 0 0;
    border:0;border-top:1px solid #32372e;background:none;overflow:visible;
  }
  .hand-head{margin:0;align-items:center;gap:8px}
  .hand-head .eyebrow{display:none}
  .hand-head h3{margin:0;font:700 12px/1.3 Barlow,Arial,sans-serif}
  .hand-hint{font-size:8px;line-height:1.4;max-width:44%;text-align:right}
  .hand.hand-grid{
    height:clamp(105px,31vw,155px);min-height:0;
    grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;padding:0;
  }
  .hand-slot-empty{border:0;border-radius:5px;background:#ffffff03}
  .hand-slot-empty span{font-size:12px;color:#555b4e}
  .match-page.is-finished .hand-panel{display:none}
  .mobile-result-actions{
    display:grid;gap:12px;margin:0;padding:16px;
    border:1px solid #3d4435;border-radius:10px;background:#1b1e19;
  }
  .mobile-result-actions p{display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px;margin:0;font-size:12px;color:#eee9dd}
  .mobile-result-actions p span{font-size:10px;color:#aaa99e}
  .mobile-result-actions .btn{width:100%;min-height:46px;border-radius:7px;font-size:12px}
  .game-card-board{grid-template-rows:14px 22px minmax(0,1fr) 12px!important}
  .game-card-board .game-model{max-height:2.4em!important;padding:0 4px!important;line-height:1.15;font-size:7px}
  .game-card-board .game-model.model-long{font-size:6.4px}
  .game-card-board .game-model.model-xlong{font-size:6px}
  .game-card-board .game-brand{font-size:6px}
  .game-card-hand .game-model{padding:0 2px!important;line-height:1.15;max-height:2.4em!important}
}
@media(max-width:900px){
  .game-card-board .game-card-head,.game-card-hand .game-card-head{min-height:0;padding:2px 4px!important;line-height:1}
  .game-card-board .game-card-foot,.game-card-hand .game-card-foot{min-height:0;padding:2px 4px!important;align-items:center;line-height:1}
  .game-card-hand{grid-template-rows:12px 20px minmax(0,1fr) 12px!important;text-align:left}
  .game-card-hand .game-model{font-size:5.7px!important;line-height:1.2;max-height:2.4em!important}
  .game-card-hand .game-brand{font-size:5px;line-height:1}
  .hand-hint{display:block}
  .mobile-result-actions .btn{box-shadow:none}
}
@media(max-width:900px){
  .game-card .game-brand,.game-card .game-card-foot{line-height:1.35!important}
  .game-card-hand .game-model{line-height:1.2!important}
  .card-field-game .card-rating b{line-height:1.25}
  .hand.hand-grid{margin:0}
}

/* v0.14 — Arnaud's diamond card. */
.d9-card.collector-card,.d9-card.game-card{
  display:grid;grid-template-rows:12% 54% 26% 8%!important;
  padding:5px!important;gap:0;position:relative;isolation:isolate;
  border:2px solid #1f2826!important;border-radius:14px;
  background:var(--rarity);color:#1c2725;overflow:hidden;
  box-shadow:0 3px 0 #0005,0 8px 20px #0003!important;
}
.d9-card.collector-card{width:100%;max-width:360px;height:auto!important;aspect-ratio:4/5!important;align-content:normal}
.d9-card:before{display:none!important}
.d9-nameplate{display:grid;grid-template-columns:minmax(0,.36fr) minmax(0,.64fr);gap:8px;align-items:center;padding:7px 9px;min-width:0;min-height:0;background:#f7f8f3;border:1px solid #34403a;border-radius:8px 8px 0 0;text-transform:uppercase}
.d9-nameplate>span{font:800 11px/1.3 Barlow,Arial,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.d9-nameplate>strong{font:900 12px/1.15 Barlow,Arial,sans-serif;text-align:right;min-width:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;max-height:2.3em;color:#294a3d}
.d9-photo{position:relative;min-width:0;min-height:0;overflow:hidden;background:linear-gradient(145deg,#e4e9e7,#9ca9a5);border:1px solid #34403a;border-top:0;border-radius:0 0 7px 7px;display:grid;place-items:center}
.d9-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;display:block}
.d9-placeholder{font:italic 900 60px/1 Barlow,Arial,sans-serif;color:#44584d35}
.d9-details{position:relative;min-width:0;min-height:0;background:linear-gradient(135deg,#fff,#eff2ed);margin-top:7px;border:1px solid #34403a;border-bottom:0;border-radius:7px 7px 0 0}
.d9-diamond{position:absolute;z-index:3;left:50%;top:0;width:29%;aspect-ratio:1;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;transform:translate(-50%,-38%) rotate(45deg);border:2px solid #24322c;background:#24322c;gap:1px;box-shadow:2px 2px 0 #0002}
.d9-value{display:grid;place-items:center;min-width:0;min-height:0;background:#fcfdf9;color:#18251f}
.d9-value.north{grid-area:1/1}.d9-value.east{grid-area:1/2}.d9-value.south{grid-area:2/2}.d9-value.west{grid-area:2/1}
.d9-value b{transform:rotate(-45deg);font:900 22px/1.3 Barlow,Arial,sans-serif;letter-spacing:-.07em;font-variant-numeric:tabular-nums}
.d9-emblems{display:flex;justify-content:space-between;align-items:center;padding:9px 10px;gap:50%;min-width:0}
.d9-brand-logo{width:32px;height:32px;object-fit:contain}
.d9-brand-emblem{display:flex;align-items:center;justify-content:center;flex:none;width:32px;height:32px}
.d9-brand-emblem [hidden]{display:none!important}
.d9-signature{font:italic 900 18px/1.2 Barlow,Arial,sans-serif;letter-spacing:-.08em;color:#4c6054}
.d9-flag{font-size:26px;line-height:1.2}
.d9-specs{position:absolute;left:10px;right:10px;bottom:10px;max-height:2.5em;font:700 9px/1.25 Barlow,Arial,sans-serif;text-transform:uppercase;letter-spacing:.02em;text-align:center;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.d9-footer{display:flex;justify-content:space-between;align-items:center;gap:8px;min-width:0;min-height:0;padding:4px 10px;background:#f7f8f3;border:1px solid #34403a;border-radius:0 0 7px 7px;font:900 10px/1.3 Barlow,Arial,sans-serif;text-transform:uppercase}
.d9-footer>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.d9-footer>strong{flex:0 0 auto}
.d9-card.game-card{padding:2px!important;border-width:1px!important;border-radius:6px;grid-template-rows:18% 47% 25% 10%!important;box-shadow:none!important}
.d9-card.game-card .d9-nameplate{padding:2px 3px;gap:3px;border-radius:3px 3px 0 0;grid-template-columns:1fr}
.d9-card.game-card .d9-nameplate>span{font-size:5px;line-height:1.3}
.d9-card.game-card .d9-nameplate>strong{font-size:6px;line-height:1.15;text-align:left;max-height:2.3em}
.d9-card.game-card .d9-photo{border-radius:0 0 3px 3px}
.d9-card.game-card .d9-details{margin-top:3px;border-radius:3px 3px 0 0}
.d9-card.game-card .d9-diamond{width:32%;border-width:1px;gap:1px;box-shadow:none}
.d9-card.game-card .d9-value b{font-size:9px;letter-spacing:-.08em}
.d9-card.game-card .d9-emblems{padding:4px;gap:50%}
.d9-card.game-card .d9-brand-logo{width:13px;height:13px}
.d9-card.game-card .d9-signature{font-size:8px}
.d9-card.game-card .d9-flag{font-size:12px}
.d9-card.game-card .d9-footer{padding:1px 3px;font-size:5px;border-radius:0 0 3px 3px}
.d9-card.game-card .d9-placeholder{font-size:24px}
.d9-card.game-card.owned .d9-photo{border-bottom:3px solid var(--you)}
.d9-card.game-card.enemy .d9-photo{border-bottom:3px solid var(--rival)}
.d9-card.game-card.selected{outline:2px solid var(--you);outline-offset:2px;transform:translateY(-3px)}
@media(max-width:520px){
  .d9-card.game-card .d9-nameplate>span{font-size:4px}
  .d9-card.game-card .d9-nameplate>strong{font-size:4.5px}
  .d9-card.game-card .d9-value b{font-size:8px}
  .d9-card.game-card .d9-footer{font-size:4px}
  .d9-card.game-card-hand .d9-value b{font-size:6px}
  .d9-card.game-card-hand .d9-nameplate>strong{font-size:4px}
  .d9-card.game-card-hand .d9-diamond{width:38%}
  .d9-card.game-card-hand .d9-emblems{padding:3px 2px}
  .d9-card.game-card-hand .d9-brand-logo{width:9px;height:9px}
  .d9-card.game-card-hand .d9-flag{font-size:9px}
  .d9-card.game-card-hand .d9-signature{font-size:6px}
}

/* v0.14.1 — values are the primary game information, even in a five-card hand. */
.d9-card.game-card{grid-template-rows:18% 38% 36% 8%!important}
.d9-card.game-card .d9-diamond{width:min(56%,80px);transform:translate(-50%,-50%) rotate(45deg)}
.d9-card.game-card .d9-value b{font-size:16px;font-weight:900;line-height:1;letter-spacing:-.06em;color:#080e0a}
.d9-card.game-card .d9-emblems{display:none}
.d9-card.game-card-hand .d9-diamond{width:min(64%,64px)}
.d9-card.game-card-hand .d9-value b{font-size:13px}
@media(max-width:900px){
  .d9-card.game-card-board .d9-value b{font-size:14px}
  .hand.hand-grid{height:auto;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:clamp(128px,36vw,180px);gap:10px}
  .d9-card.game-card-hand .d9-value b{font-size:14px}
}
@media(max-width:360px){
  .d9-card.game-card-board .d9-value b{font-size:12px}
  .d9-card.game-card-hand .d9-value b{font-size:12px}
}

/* v0.14.6 — restrained paper, satin and foil finishes. */
.d9-card.rarity-c,.rarity-count.rarity-c{--rarity:#b5a58c;--stock:#e4d9c5;--ink:#342e25;--sheen:#fff8e635}
.d9-card.rarity-nc,.rarity-count.rarity-nc{--rarity:#557d64;--stock:#c0d0bf;--ink:#203b2d;--sheen:#f0ffe938}
.d9-card.rarity-r,.rarity-count.rarity-r{--rarity:#527b9c;--stock:#bccbd7;--ink:#233b4e;--sheen:#effaff55}
.d9-card.rarity-sr,.rarity-count.rarity-sr{--rarity:#946184;--stock:#d6bdd0;--ink:#46263d;--sheen:#fff2fa55}
.d9-card.rarity-ur,.rarity-count.rarity-ur{--rarity:#b18b49;--stock:#ddcba2;--ink:#49381e;--sheen:#fff4c780}
.d9-card.rarity-ss,.rarity-count.rarity-ss{--rarity:#aa555c;--stock:#dcb5b4;--ink:#4c262a;--sheen:#ffefed55}
.d9-card.collector-card,.d9-card.game-card{
  background:linear-gradient(125deg,#ffffff55,transparent 35%,#00000018),var(--stock);
  border-color:var(--rarity)!important;
}
.d9-card.collector-card .d9-nameplate,.d9-card.game-card .d9-nameplate,
.d9-card.collector-card .d9-details,.d9-card.game-card .d9-details{
  background:linear-gradient(115deg,var(--sheen),transparent 42%,#00000008),var(--stock);
  border-color:color-mix(in srgb,var(--rarity) 40%,transparent);color:var(--ink);
}
.d9-card .d9-nameplate>strong{color:var(--ink)}
.d9-card.rarity-c .d9-details{background-image:radial-gradient(ellipse at 20% 20%,#fffaf02b,transparent 70%)}
.d9-card.rarity-nc .d9-details{background-image:linear-gradient(150deg,#efffe81c,transparent 60%,#2946320a)}
.d9-card.rarity-r .d9-details{background-image:linear-gradient(110deg,transparent 15%,#f5fbff45 47%,transparent 75%)}
.d9-card.rarity-sr .d9-details{background-image:radial-gradient(ellipse at 12% 100%,#f5e9ff50,transparent 65%),radial-gradient(ellipse at 95% 0%,#fff1e63b,transparent 60%)}
.d9-card.rarity-ur .d9-details{background-image:linear-gradient(115deg,transparent 12%,#fff7da80 40%,#96733a0d 62%,#fff2c433 85%)}
.d9-card.rarity-ss .d9-details{background-image:linear-gradient(120deg,#ffe4cc24,transparent 25%,#eee0ff50 44%,#d9f5f042 54%,transparent 72%)}
.d9-card.collector-card .d9-footer,.d9-card.game-card .d9-footer{
  background:color-mix(in srgb,var(--ink) 88%,#151b23);color:#faf6ef;border-color:#ffffff26;
}
.d9-card .d9-value{background:#fffaf0;color:#080e0a}
.d9-card .d9-specs{background:none;color:var(--ink);padding:0;bottom:8px}
.d9-card .d9-photo{box-shadow:inset 0 0 0 1px #ffffff26}
@media(min-width:761px){.catalogue-toolbar{grid-template-columns:minmax(180px,1.2fr) repeat(3,minmax(145px,.8fr)) auto}}
.rarity-overview{margin:22px 0 28px;padding:20px;border:1px solid var(--line);background:#15191b;border-radius:10px}
.rarity-overview h2{font:700 20px/1.3 Barlow,Arial,sans-serif;text-transform:none;letter-spacing:-.02em;margin:6px 0 16px}
.rarity-overview>.small{margin:12px 0 0}
.rarity-counts{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}
.rarity-count{min-width:0;padding:12px;background:#ffffff04;border:1px solid #ffffff0c;border-radius:7px;display:grid;grid-template-columns:1fr auto;gap:7px}
.rarity-count>span{color:var(--stock);font-size:11px;font-weight:800;letter-spacing:.12em;grid-column:1/-1}
.rarity-count>strong{font-size:26px;line-height:1.2;color:#f5f2ed;font-variant-numeric:tabular-nums}
.rarity-count>small{align-self:end;color:#aeb5b9;font-size:11px;padding-bottom:3px;white-space:nowrap}
.rarity-meter{grid-column:1/-1;height:3px;background:#ffffff0b;border-radius:3px;overflow:hidden}
.rarity-meter>i{display:block;height:100%;background:var(--rarity)}
@media(max-width:900px){.rarity-counts{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:440px){.rarity-overview{padding:14px}.rarity-overview>.row{align-items:start;flex-direction:column;gap:0;margin-bottom:12px}.rarity-counts{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Catalogue age distribution mirrors rarity KPIs without adding another colour code. */
.decade-overview{margin:0 0 28px;padding:20px;border:1px solid var(--line);background:#15191b;border-radius:10px}
.decade-overview h2{font:700 20px/1.3 Barlow,Arial,sans-serif;text-transform:none;letter-spacing:-.02em;margin:6px 0 16px}
.decade-overview>.small{margin:12px 0 0}
.decade-counts{display:grid;grid-template-columns:repeat(auto-fit,minmax(115px,1fr));gap:10px}
.decade-count{min-width:0;padding:12px;background:linear-gradient(180deg,#191e20,#121618);border:1px solid #ffffff0d;border-radius:7px;display:grid;grid-template-columns:1fr auto;gap:7px}
.decade-count>span{color:#d8dcda;font-size:10px;font-weight:800;letter-spacing:.08em;grid-column:1/-1;text-transform:uppercase;white-space:nowrap}
.decade-count>strong{font-size:26px;line-height:1.2;color:#f5f2ed;font-variant-numeric:tabular-nums}
.decade-count>small{align-self:end;color:#aeb5b9;font-size:11px;padding-bottom:3px;white-space:nowrap}
.decade-meter{grid-column:1/-1;height:3px;background:#ffffff0b;border-radius:3px;overflow:hidden}
.decade-meter>i{display:block;height:100%;background:linear-gradient(90deg,#a8492d,var(--gold))}
.decade-count.decade-unknown{opacity:.66}
@media(max-width:600px){.decade-counts{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:440px){.decade-overview{padding:14px}.decade-overview>.row{align-items:start;flex-direction:column;gap:0;margin-bottom:12px}}

/* v0.15.1 — Neo Racing Luxury.
   One premium dark chassis for every rarity. Rarity is communicated by the
   frame, restrained light and accents — never by a loud material texture. */
.d9-card.rarity-c,.rarity-count.rarity-c{
  --rarity:#8a9091;--stock:#b8bebd;--rarity-light:#c9cdcc;
}
.d9-card.rarity-nc,.rarity-count.rarity-nc{
  --rarity:#4f8e6a;--stock:#77b38d;--rarity-light:#9bc7aa;
}
.d9-card.rarity-r,.rarity-count.rarity-r{
  --rarity:#4f7fae;--stock:#77a2ca;--rarity-light:#9bbbd8;
}
.d9-card.rarity-sr,.rarity-count.rarity-sr{
  --rarity:#8267ad;--stock:#aa92ca;--rarity-light:#c5b4dc;
}
.d9-card.rarity-ur,.rarity-count.rarity-ur{
  --rarity:#b18e49;--stock:#d0b66f;--rarity-light:#e3d09c;
}
.d9-card.rarity-ss,.rarity-count.rarity-ss{
  --rarity:#b8514d;--stock:#d67a72;--rarity-light:#e7a09a;
}

.d9-card.collector-card,.d9-card.game-card{
  --material:none;
  background-image:none!important;
  background:
    radial-gradient(circle at 92% 4%,color-mix(in srgb,var(--rarity) 8%,transparent) 0,transparent 28%),
    linear-gradient(145deg,#1b2022 0%,#121618 48%,#0d1113 100%)!important;
  border-color:color-mix(in srgb,var(--rarity) 76%,#303638)!important;
  color:#eef1ef;
  box-shadow:
    inset 0 0 0 1px #ffffff08,
    0 10px 26px #00000052!important;
}
.d9-card.collector-card{
  border-width:1px!important;
  border-top-width:3px!important;
}
.d9-card.game-card{
  border-width:1px!important;
  box-shadow:inset 0 0 0 1px #ffffff07!important;
}

.d9-card.collector-card.rarity-r,
.d9-card.collector-card.rarity-sr,
.d9-card.collector-card.rarity-ur,
.d9-card.collector-card.rarity-ss{
  box-shadow:
    inset 0 0 0 1px #ffffff09,
    0 0 0 1px color-mix(in srgb,var(--rarity) 12%,transparent),
    0 10px 28px #00000058!important;
}
.d9-card.collector-card.rarity-sr,
.d9-card.collector-card.rarity-ur,
.d9-card.collector-card.rarity-ss{
  box-shadow:
    inset 0 0 0 1px #ffffff0a,
    0 0 16px color-mix(in srgb,var(--rarity) 9%,transparent),
    0 12px 30px #00000060!important;
}

.d9-card.collector-card .d9-nameplate,
.d9-card.game-card .d9-nameplate{
  background-image:none!important;
  background:linear-gradient(180deg,#1d2224 0%,#151a1c 100%)!important;
  border-color:#ffffff12;
  color:#eef1ef;
}
.d9-card .d9-nameplate>span,
.d9-card .d9-nameplate>strong{
  background:transparent!important;
  padding:0!important;
  color:#eef1ef;
  border-radius:0;
  box-decoration-break:slice;
}
.d9-card .d9-nameplate>span{
  color:var(--rarity-light);
  letter-spacing:.08em;
}
.d9-card .d9-nameplate>strong{
  color:#f5f6f3!important;
  letter-spacing:-.01em;
}

.d9-card .d9-photo{
  background:#171c1e;
  border-color:#ffffff14;
  box-shadow:
    inset 0 0 0 1px #ffffff0a,
    inset 0 -16px 28px #00000018;
}
.d9-card .d9-photo img{
  filter:saturate(.94) contrast(1.04) brightness(.94);
}
.d9-card .d9-placeholder{
  color:#ffffff10;
}

.d9-card.collector-card .d9-details,
.d9-card.game-card .d9-details{
  background-image:none!important;
  background:
    linear-gradient(180deg,#181d1f 0%,#111517 100%)!important;
  border-color:#ffffff12;
  color:#e8ece9;
}
.d9-card .d9-diamond{
  border-color:color-mix(in srgb,var(--rarity) 64%,#3a4143);
  background:#0d1214;
  box-shadow:
    0 0 0 1px #ffffff08,
    0 4px 12px #00000045;
}
.d9-card .d9-value{
  background:#171d1f!important;
  color:#f5f6f3!important;
  box-shadow:inset 0 0 0 1px #ffffff05;
}
.d9-card .d9-value b{
  color:#f7f8f5!important;
  text-shadow:none;
}

.d9-card .d9-brand-emblem{
  background:#f1f2ee!important;
  border:1px solid #ffffff1f;
  border-radius:50%;
  padding:3px;
  box-sizing:content-box;
  box-shadow:0 2px 8px #00000038;
}
.d9-card .d9-signature{color:#222a2c}
.d9-card .d9-flag{filter:saturate(.82)}
.d9-card .d9-specs{
  background:transparent!important;
  color:#9ea6a8!important;
  padding:0!important;
  letter-spacing:.05em;
}
.d9-card.collector-card .d9-footer,
.d9-card.game-card .d9-footer{
  background:#0c1012!important;
  color:#bdc3c2!important;
  border-color:#ffffff12;
}
.d9-card .d9-footer>strong{color:var(--rarity-light)}

.d9-card.game-card.owned{
  border-color:color-mix(in srgb,var(--you) 52%,var(--rarity))!important;
}
.d9-card.game-card.enemy{
  border-color:color-mix(in srgb,var(--rival) 52%,var(--rarity))!important;
}
.d9-card.game-card.owned .d9-photo{border-bottom-color:var(--you)}
.d9-card.game-card.enemy .d9-photo{border-bottom-color:var(--rival)}
.d9-card.game-card.selected{
  outline:2px solid var(--you);
  outline-offset:2px;
  box-shadow:0 0 18px color-mix(in srgb,var(--you) 18%,transparent)!important;
}

/* The admin overview mirrors the same restrained rarity language. */
.rarity-count{
  background:linear-gradient(180deg,#191e20,#121618);
  border-color:#ffffff0d;
}
.rarity-count>span{color:var(--stock)}
.rarity-meter{background:#ffffff0b}
.rarity-meter>i{
  background:linear-gradient(90deg,var(--rarity),var(--rarity-light));
}

/* Compact duel cards keep the same material language without expensive effects. */
.d9-card.game-card .d9-diamond{
  box-shadow:0 1px 4px #00000045;
}
.d9-card.game-card .d9-brand-emblem{
  padding:1px;
  box-shadow:none;
}

@media(max-width:520px){
  .d9-card.collector-card{
    box-shadow:inset 0 0 0 1px #ffffff08,0 8px 20px #0000004d!important;
  }
  .d9-card .d9-photo img{filter:saturate(.96) contrast(1.03) brightness(.95)}
}



/* v0.17 — Admin web import assistant. */
.web-import-panel{margin:0 0 28px;border-color:#5a5148;background:linear-gradient(155deg,#191b1c,#111416)}
.web-import-panel>p{max-width:820px}
.web-import-search{display:grid;grid-template-columns:minmax(150px,.8fr) minmax(220px,1.4fr) minmax(120px,.55fr) auto;gap:10px;align-items:end;margin:16px 0 10px}
.web-import-search label{display:grid;gap:6px;color:#d9d1c5;font-size:12px}.web-import-search .input{width:100%;max-width:none;text-transform:none;letter-spacing:0}.web-import-search .btn{min-width:120px}
.web-import-results,.web-import-review{margin-top:14px}
.web-import-candidates,.web-import-variants{display:grid;gap:8px}.web-import-candidate{width:100%;display:flex;align-items:center;justify-content:space-between;gap:14px;text-align:left;padding:12px 14px;background:#101416;border:1px solid #ffffff15;color:#f1eee8}.web-import-candidate:hover{border-color:var(--gold);background:#171b1d}.web-import-candidate>span{display:grid;gap:3px;min-width:0}.web-import-candidate strong,.web-import-candidate>span>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.web-import-candidate small{color:var(--muted)}.web-import-candidate>b{color:var(--gold);font-size:11px;text-transform:uppercase;letter-spacing:.08em;flex:0 0 auto}
.web-import-review-grid{display:grid;grid-template-columns:minmax(220px,310px) minmax(0,1fr);gap:22px;align-items:start;padding-top:16px;border-top:1px solid #ffffff12}.web-import-preview{max-width:310px}.web-import-preview .d9-card{width:100%}.web-import-proposal h3{font:700 24px/1.15 Barlow,Arial,sans-serif;text-transform:none;letter-spacing:-.025em;margin:5px 0 14px}
.web-import-brandline{display:flex;align-items:center;gap:10px;padding:9px 0 13px;color:var(--muted);font-size:12px}.web-import-brandline img{width:42px;height:42px;object-fit:contain;background:#f3f3ef;border-radius:50%;padding:5px}
.web-import-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.web-import-metrics article{padding:10px 11px;background:#0e1214;border:1px solid #ffffff10;display:grid;gap:4px}.web-import-metrics span{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.07em}.web-import-metrics strong{font-size:17px;font-variant-numeric:tabular-nums}
.web-import-image{margin-top:12px;display:grid;grid-template-columns:110px 1fr;gap:12px;align-items:center;color:var(--muted);font-size:12px}.web-import-image img{width:110px;height:70px;object-fit:cover;border:1px solid #ffffff18;background:#0d1012}
.web-import-warning,.web-import-ok{margin-top:10px;padding:10px 12px;border-left:3px solid #a85a38;background:#2d211c;color:#ddd5c9;font-size:12px;display:grid;gap:4px}.web-import-ok{border-left-color:#6fa989;background:#17231d}.web-import-warning>span{color:#c4b9ac}.web-import-variants{margin-top:16px;padding-top:14px;border-top:1px solid #ffffff12}.web-import-variants>strong{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:2px}
@media(max-width:820px){.web-import-search{grid-template-columns:1fr 1fr}.web-import-search .btn{width:100%}.web-import-review-grid{grid-template-columns:1fr}.web-import-preview{max-width:330px;margin:auto}.web-import-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.web-import-search{grid-template-columns:1fr}.web-import-panel{padding:15px}.web-import-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.web-import-image{grid-template-columns:92px 1fr}.web-import-image img{width:92px;height:62px}}


/* v0.18 — Race Control navigation + strict catalogue quality workflow. */
.admin-nav{
  display:grid!important;
  grid-template-columns:repeat(5,minmax(0,1fr))!important;
  gap:1px!important;
  padding:4px!important;
  margin:0 0 24px!important;
  top:8px!important;
  background:#111517f2!important;
  border:1px solid #ffffff10;
  border-radius:12px;
  box-shadow:0 12px 30px #00000030;
  overflow:hidden;
}
.admin-nav-item{
  appearance:none;border:0;background:transparent;color:#8f989a;
  min-width:0;padding:11px 12px;display:grid;gap:3px;text-align:left;
  border-radius:8px;cursor:pointer;transition:background .16s ease,color .16s ease,box-shadow .16s ease;
}
.admin-nav-item>span{font:800 11px/1.1 Barlow,Arial,sans-serif;text-transform:uppercase;letter-spacing:.08em}
.admin-nav-item>small{font:500 10px/1.15 Barlow,Arial,sans-serif;color:#697275;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-nav-item:hover{background:#ffffff06;color:#dfe3e1}
.admin-nav-item.active{background:linear-gradient(180deg,#252b2d,#1b2022);color:#f5f3ed;box-shadow:inset 0 0 0 1px #ffffff0c}
.admin-nav-item.active>small{color:#c9a877}
.admin-nav-item.active::after{content:"";height:2px;background:linear-gradient(90deg,var(--gold),#d56b3f);border-radius:3px;margin-top:5px}

.quality-command{margin:0 0 30px;padding:20px;border:1px solid #ffffff11;border-radius:12px;background:linear-gradient(155deg,#171b1d,#0f1214)}
.quality-command-head{display:flex;align-items:start;justify-content:space-between;gap:24px;margin-bottom:18px}
.quality-command-head h2{margin:5px 0 8px;font:800 25px/1.1 Barlow,Arial,sans-serif;text-transform:none;letter-spacing:-.03em}
.quality-command-head p{max-width:760px;margin:0;color:#9da5a7}
.quality-kpis{grid-template-columns:repeat(6,minmax(0,1fr))}
.quality-kpis article{min-width:0}.quality-kpis small{display:block;color:#778082;font-size:10px;margin-top:3px}
.quality-toolbar{display:grid;grid-template-columns:minmax(220px,1.5fr) minmax(190px,.8fr) auto;gap:10px;align-items:center;margin:18px 0 10px}
.quality-toolbar .input{max-width:none;width:100%;text-transform:none;letter-spacing:0}
.quality-selection-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-top:1px solid #ffffff0a}
.quality-selection-bar .actions{margin:0}.quality-selection-bar>strong{font-size:11px;color:#c9a877;text-transform:uppercase;letter-spacing:.06em}
.quality-bulk-actions{display:flex;flex-wrap:wrap;gap:8px;padding:10px 0 4px}
.btn.danger{border-color:#7b423b;color:#e9a79e}.btn.danger:hover{background:#40221f}
.quality-list{display:grid;gap:7px;margin-top:15px}
.quality-row{display:grid;grid-template-columns:34px 86px minmax(0,1fr) 46px auto;gap:12px;align-items:center;padding:9px 11px;border:1px solid #ffffff0d;background:#101416;border-radius:8px}
.quality-row.published{border-left:3px solid #5d9476}.quality-row.ready{border-left:3px solid #b49359}.quality-row.blocked{border-left:3px solid #9a5546}.quality-row.hidden{opacity:.55;border-left:3px solid #606568}
.quality-check{display:grid;place-items:center}.quality-check input{width:17px;height:17px;accent-color:#c79a5b}
.quality-thumb{width:86px;height:52px;overflow:hidden;background:#0a0d0e;border:1px solid #ffffff0e;display:grid;place-items:center;color:#ffffff22;font:900 18px/1 Barlow,Arial,sans-serif}
.quality-thumb img{width:100%;height:100%;object-fit:cover}
.quality-copy{min-width:0;display:grid;gap:4px}.quality-title{display:flex;align-items:center;gap:9px;min-width:0}.quality-title>strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.quality-copy>span{font-size:10px;color:#7f898b}
.quality-state{flex:0 0 auto;font-size:9px;text-transform:uppercase;letter-spacing:.07em;color:#b7bebd;border:1px solid #ffffff14;padding:3px 5px;border-radius:4px}
.quality-badges{display:flex;gap:5px;flex-wrap:wrap}.quality-badge{font-size:9px;padding:2px 5px;border-radius:4px;background:#ffffff05;color:#737d7f}.quality-badge.ok{color:#83b298;background:#20352a}.quality-badge.bad{color:#d89c8d;background:#38221e}
.quality-logo{width:42px;height:42px;border-radius:50%;background:#eef0eb;display:grid;place-items:center;padding:5px;color:#182022;font:900 10px/1 Barlow,Arial,sans-serif}.quality-logo img{max-width:100%;max-height:100%;object-fit:contain}
.quality-meta{display:grid;justify-items:end;gap:5px}.quality-meta>span{font-size:9px;text-transform:uppercase;color:#7f888a}.quality-meta .btn{padding:6px 8px;min-height:30px;font-size:9px}
.quality-pagination{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:14px}.quality-pagination>span{font-size:10px;color:#879092;text-transform:uppercase;letter-spacing:.06em}
.quality-section-title{display:flex;align-items:end;justify-content:space-between;gap:16px;margin:30px 0 12px}.quality-section-title h2{margin:4px 0 0;font:800 23px/1.1 Barlow,Arial,sans-serif;text-transform:none;letter-spacing:-.025em}

@media(max-width:960px){
  .quality-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
  .quality-row{grid-template-columns:30px 74px minmax(0,1fr) 42px}.quality-meta{grid-column:3/-1;display:flex;justify-content:flex-end;align-items:center}.quality-thumb{width:74px;height:48px}
}
@media(max-width:760px){
  .admin-nav{display:flex!important;overflow-x:auto!important;scrollbar-width:none;padding:4px!important;background:#111517!important;position:sticky!important;top:4px!important}
  .admin-nav::-webkit-scrollbar{display:none}.admin-nav-item{flex:0 0 132px;padding:10px}.admin-nav-item>small{font-size:9px}
  .quality-command{padding:14px}.quality-command-head{display:grid;gap:12px}.quality-command-head .btn{width:100%}
  .quality-toolbar{grid-template-columns:1fr}.quality-toolbar .pill{justify-self:start}
  .quality-selection-bar{align-items:flex-start;flex-direction:column}.quality-bulk-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.quality-bulk-actions .btn{width:100%}
  .quality-row{grid-template-columns:26px 68px minmax(0,1fr);gap:8px}.quality-thumb{width:68px;height:46px}.quality-logo{display:none}.quality-meta{grid-column:2/-1}.quality-title{align-items:flex-start;flex-direction:column;gap:4px}.quality-badges{gap:3px}.quality-badge{font-size:8px}
}
@media(max-width:480px){
  .quality-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .quality-bulk-actions{grid-template-columns:1fr 1fr}.quality-bulk-actions [data-quality-action="publish"]{grid-column:1/-1;grid-row:1}
}

.admin-catalogue-toolbar{display:grid;grid-template-columns:minmax(0,1fr) minmax(150px,.55fr);gap:8px;margin:0 0 8px}
.admin-catalogue-toolbar .input{width:100%;max-width:none;text-transform:none;letter-spacing:0}
@media(max-width:560px){.admin-catalogue-toolbar{grid-template-columns:1fr}}


/* v0.18.2 — stronger rarity read without losing the premium chassis. */
.d9-card.rarity-c{--rare-frame:0px;--rare-inner:20%;--rare-glow-size:0px;--rare-glow-alpha:0%;--collector-top:3px;--game-frame:1px}
.d9-card.rarity-nc{--rare-frame:1px;--rare-inner:24%;--rare-glow-size:6px;--rare-glow-alpha:6%;--collector-top:3px;--game-frame:1px}
.d9-card.rarity-r{--rare-frame:1px;--rare-inner:28%;--rare-glow-size:10px;--rare-glow-alpha:9%;--collector-top:4px;--game-frame:1px}
.d9-card.rarity-sr{--rare-frame:2px;--rare-inner:34%;--rare-glow-size:14px;--rare-glow-alpha:12%;--collector-top:4px;--game-frame:2px}
.d9-card.rarity-ur{--rare-frame:2px;--rare-inner:40%;--rare-glow-size:18px;--rare-glow-alpha:15%;--collector-top:5px;--game-frame:2px}
.d9-card.rarity-ss{--rare-frame:3px;--rare-inner:46%;--rare-glow-size:24px;--rare-glow-alpha:18%;--collector-top:5px;--game-frame:2px}
.d9-card.collector-card,.d9-card.game-card{position:relative}
.d9-card.collector-card::before,.d9-card.collector-card::after,.d9-card.game-card::before,.d9-card.game-card::after{content:"";display:block!important;position:absolute;inset:0;border-radius:inherit;pointer-events:none}
.d9-card.collector-card::before,.d9-card.game-card::before{z-index:0;box-shadow:inset 0 0 0 1px #ffffff0b,inset 0 0 0 calc(var(--rare-frame) + 1px) color-mix(in srgb,var(--rarity) var(--rare-inner),transparent)}
.d9-card.collector-card::after,.d9-card.game-card::after{z-index:0;inset:-1px;box-shadow:0 0 0 var(--rare-frame) color-mix(in srgb,var(--rarity) 20%,transparent),0 0 var(--rare-glow-size) color-mix(in srgb,var(--rarity) var(--rare-glow-alpha),transparent)}
.d9-card.collector-card>*,.d9-card.game-card>*{position:relative;z-index:1}
.d9-card.collector-card{border-width:2px!important;border-top-width:var(--collector-top)!important;box-shadow:inset 0 0 0 1px #ffffff09,0 14px 30px #00000058,0 0 var(--rare-glow-size) color-mix(in srgb,var(--rarity) var(--rare-glow-alpha),transparent)!important}
.d9-card.game-card{border-width:var(--game-frame)!important;box-shadow:inset 0 0 0 1px #ffffff08,0 0 0 var(--rare-frame) color-mix(in srgb,var(--rarity) 16%,transparent),0 0 calc(var(--rare-glow-size) * .7) color-mix(in srgb,var(--rarity) var(--rare-glow-alpha),transparent)!important}
.d9-card.collector-card .d9-nameplate,.d9-card.game-card .d9-nameplate{box-shadow:inset 0 1px 0 color-mix(in srgb,var(--rarity) 12%,transparent)}
.d9-card.collector-card .d9-details,.d9-card.game-card .d9-details{box-shadow:inset 0 1px 0 color-mix(in srgb,var(--rarity) 8%,transparent)}
.d9-card .d9-diamond{box-shadow:0 0 0 1px color-mix(in srgb,var(--rarity) 20%,transparent),0 4px 12px #00000045,0 0 calc(var(--rare-glow-size) * .45) color-mix(in srgb,var(--rarity) var(--rare-glow-alpha),transparent)}
.d9-card .d9-footer{box-shadow:inset 0 1px 0 color-mix(in srgb,var(--rarity) 12%,transparent)}
.d9-card.collector-card.rarity-ur .d9-nameplate,.d9-card.collector-card.rarity-ss .d9-nameplate,.d9-card.collector-card.rarity-ur .d9-footer,.d9-card.collector-card.rarity-ss .d9-footer,.d9-card.game-card.rarity-ur .d9-nameplate,.d9-card.game-card.rarity-ss .d9-nameplate{background-image:linear-gradient(180deg,color-mix(in srgb,var(--rarity) 10%,#202527),#151a1c)!important}
.d9-card.collector-card.rarity-sr .d9-nameplate,.d9-card.collector-card.rarity-sr .d9-footer,.d9-card.game-card.rarity-sr .d9-nameplate{background-image:linear-gradient(180deg,color-mix(in srgb,var(--rarity) 8%,#1f2426),#151a1c)!important}
.d9-card.game-card-hand::after,.d9-card.game-card-board::after{box-shadow:0 0 0 var(--rare-frame) color-mix(in srgb,var(--rarity) 18%,transparent),0 0 calc(var(--rare-glow-size) * .5) color-mix(in srgb,var(--rarity) var(--rare-glow-alpha),transparent)}

/* v0.19 — guided card authoring. Derived fields look deliberate, not disabled. */
.auto-field{min-height:72px;padding:10px 12px;border:1px solid #ffffff12;background:#0f1315;border-radius:6px;display:grid;align-content:center;gap:4px}
.auto-field>span{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:#858e90}
.auto-field>strong{font-size:16px;color:#edf0ed;min-width:0;overflow:hidden;text-overflow:ellipsis}
.auto-field>small{font-size:10px;line-height:1.3;color:#6f797b}
.auto-logo-preview{position:absolute;right:10px;bottom:9px;width:38px;height:38px;display:grid;place-items:center;border-radius:50%;background:#eef0eb;color:#1c2526;font:900 10px/1 Barlow,Arial,sans-serif;padding:5px}
.auto-field:has(.auto-logo-preview){position:relative;padding-right:58px}
.auto-logo-preview img{max-width:100%;max-height:100%;object-fit:contain}
.web-import-panel .pill{white-space:nowrap}
@media(max-width:520px){.auto-field{min-height:66px}}


/* v0.22 — data lab scroll behaviour + source-review workflow. */
#admin-data .admin-data-layout > .admin-form{
  position:static!important;
  top:auto!important;
}
.source-workflow{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:6px;
  margin:14px 0 8px;
}
.source-workflow span{
  min-width:0;
  padding:9px 10px;
  border:1px solid #ffffff0d;
  background:#111516;
  color:#8f9899;
  font-size:9px;
  line-height:1.25;
  text-transform:uppercase;
  letter-spacing:.06em;
}
.source-workflow b{
  display:inline-grid;
  place-items:center;
  width:18px;
  height:18px;
  margin-right:6px;
  border:1px solid #67543c;
  color:#d5ad73;
  font-size:9px;
}
@media(max-width:760px){
  .source-workflow{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:480px){
  .source-workflow{grid-template-columns:1fr}
}


/* v0.22.1 — technical sanity line on every card. */
.d9-card .d9-specs{
  white-space:nowrap;
  text-overflow:ellipsis;
  display:block;
  max-height:none;
  overflow:hidden;
}
.d9-card.game-card .d9-specs{
  left:3px;
  right:3px;
  bottom:2px;
  font-size:4.5px;
  line-height:1.1;
  letter-spacing:.01em;
}
@media(max-width:520px){
  .d9-card.game-card .d9-specs{font-size:4px}
}


/* v0.22.2 — compact energy pictogram beside vehicle category. */
.d9-footer-main{
  display:flex;
  align-items:center;
  gap:5px;
  min-width:0;
}
.d9-footer-main>span:last-child{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.d9-energy-icon{
  position:relative;
  flex:0 0 auto;
  width:13px;
  height:13px;
  display:inline-grid;
  place-items:center;
  color:#aab2b1;
  line-height:1;
}
.d9-energy-icon svg{
  width:100%;
  height:100%;
  display:block;
}
.d9-energy-icon>span{
  font:900 7px/1 Barlow,Arial,sans-serif;
  letter-spacing:-.05em;
}
.d9-energy-icon>b{
  position:absolute;
  right:-2px;
  bottom:-2px;
  min-width:7px;
  height:7px;
  padding:0 1px;
  display:grid;
  place-items:center;
  border-radius:4px;
  background:#0c1012;
  color:currentColor;
  font:900 5px/1 Barlow,Arial,sans-serif;
}
.d9-energy-petrol{color:#c4a36f}
.d9-energy-diesel{color:#9fa8aa}
.d9-energy-hybrid{color:#88ad8c}
.d9-energy-electric{color:#79a9c9}
.d9-energy-hydrogen{color:#86b9c5}
.d9-energy-gpl{color:#bd9275}
.d9-card.game-card .d9-footer-main{gap:2px}
.d9-card.game-card .d9-energy-icon{
  width:7px;
  height:7px;
}
.d9-card.game-card .d9-energy-icon>span{font-size:4px}
.d9-card.game-card .d9-energy-icon>b{
  display:none;
}


/* v0.23 — collection economy, deck builder, duel formats and rarity accent band. */
.d9-card .d9-photo::after{
  content:"";
  position:absolute;
  left:7%;
  right:7%;
  bottom:0;
  height:4px;
  border-radius:4px 4px 0 0;
  background:linear-gradient(90deg,color-mix(in srgb,var(--rarity) 78%,#fff),var(--rarity),color-mix(in srgb,var(--rarity) 72%,#111));
  box-shadow:0 0 9px color-mix(in srgb,var(--rarity) 30%,transparent);
  z-index:2;
  pointer-events:none;
}
.d9-card.game-card .d9-photo::after{left:5%;right:5%;height:2px;box-shadow:0 0 5px color-mix(in srgb,var(--rarity) 26%,transparent)}

.pack-economy-panel,.duel-config-panel{
  display:flex;align-items:center;justify-content:space-between;gap:22px;
  padding:20px;border:1px solid #ffffff11;background:linear-gradient(145deg,#181d1f,#101416);border-radius:10px
}
.pack-economy-copy{display:grid;gap:7px;min-width:0}.pack-economy-copy h2,.duel-config-panel h2{margin:0;font:800 24px/1.12 Barlow,Arial,sans-serif;text-transform:none;letter-spacing:-.03em}
.pack-economy-copy p{margin:0;max-width:760px;color:#9da5a7}.pack-economy-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:6px;font-size:11px;color:#838c8e}
.deck-ready{color:#7fb393}.deck-waiting{color:#d0976f}.pack-open{flex:0 0 auto;min-width:220px}
.duel-config-panel{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,340px);align-items:end}.duel-config-panel>.row,.duel-config-panel>p{grid-column:1/-1}.duel-config-panel label{display:grid;gap:6px;font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:#899294}

.pack-reveal{position:fixed;inset:0;z-index:1200;background:#050708d9;backdrop-filter:blur(12px);display:grid;place-items:center;padding:20px;overflow:auto}
.pack-sheet{width:min(1120px,100%);padding:20px;border:1px solid #ffffff18;background:linear-gradient(145deg,#181d1f,#0d1113);box-shadow:0 30px 80px #0008}
.pack-sheet-head{display:flex;justify-content:space-between;align-items:start;gap:16px}.pack-sheet-head h2{margin:4px 0 0;font:900 34px/1 Barlow,Arial,sans-serif;text-transform:uppercase}
.pack-close{appearance:none;border:0;background:#ffffff0b;color:#eee;width:40px;height:40px;border-radius:50%;font-size:24px;cursor:pointer}
.pack-cards{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;margin:22px 0}.pack-card{min-width:0}.pack-card .d9-card{width:100%}.pack-done{display:block;margin-left:auto}

.deck-toolbar{display:grid;grid-template-columns:minmax(160px,1.4fr) repeat(3,minmax(120px,.75fr));gap:7px;margin:14px 0 9px}.deck-toolbar .input{width:100%;max-width:none;text-transform:none;letter-spacing:0}
.deck-legality{display:flex;flex-wrap:wrap;gap:5px;margin:0 0 12px}.deck-legality span{padding:4px 6px;border:1px solid #ffffff10;font-size:8px;text-transform:uppercase;letter-spacing:.05em;color:#727c7e}.deck-legality .ok{color:#7fb393;border-color:#335844;background:#17251d}.deck-legality .no{color:#b77f72;background:#271a18}
.profile-deck-panel .deck-picker{display:grid;gap:6px;max-height:560px;overflow:auto;padding-right:3px}
.profile-deck-panel .deck-pick{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:9px;align-items:center;padding:8px 9px;border:1px solid #ffffff0d;background:#0f1315;border-radius:6px}
.profile-deck-panel .deck-pick.selected{border-color:#7c6442;background:#181713}.deck-pick-flag{font-size:18px}.deck-pick-copy{min-width:0;display:grid;gap:2px}.deck-pick-copy strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11px}.deck-pick-copy small{font-size:8px;color:#798284}
.deck-stepper{display:grid;grid-template-columns:28px 24px 28px;align-items:center}.deck-stepper button{height:28px;border:1px solid #ffffff12;background:#171c1e;color:#ddd;cursor:pointer}.deck-stepper button:disabled{opacity:.25;cursor:not-allowed}.deck-stepper b{text-align:center;font-size:12px}
.profile-deck-panel #deck-save:disabled{opacity:.45}

@media(max-width:900px){
  .pack-cards{grid-template-columns:repeat(3,minmax(0,1fr))}
  .deck-toolbar{grid-template-columns:1fr 1fr}
}
@media(max-width:680px){
  .pack-economy-panel{align-items:stretch;flex-direction:column}.pack-open{width:100%;min-width:0}
  .duel-config-panel{grid-template-columns:1fr}
  .pack-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .deck-toolbar{grid-template-columns:1fr}
}


/* v0.24 — automated cross-source catalogue reconciliation. */
.source-sync-panel{
  margin:0 0 18px;padding:20px;border:1px solid #ffffff12;border-radius:12px;
  background:linear-gradient(150deg,#171c1e,#0f1315);
}
.source-sync-panel h2{margin:5px 0 9px;font:800 25px/1.1 Barlow,Arial,sans-serif;text-transform:none;letter-spacing:-.03em}
.source-sync-panel>p{max-width:880px;color:#9ba4a6}
.source-sync-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:16px 0}
.source-sync-kpis article{padding:12px;border:1px solid #ffffff0d;background:#0d1113;display:grid;gap:4px}
.source-sync-kpis span{font-size:9px;text-transform:uppercase;letter-spacing:.07em;color:#788184}
.source-sync-kpis strong{font-size:23px;font-variant-numeric:tabular-nums;color:#f0eee8}
.source-manual-heading{margin:28px 0 10px;padding-top:14px;border-top:1px solid #ffffff0d}
.source-manual-heading p{margin:4px 0 0;color:#788184;font-size:11px}
@media(max-width:720px){.source-sync-kpis{grid-template-columns:1fr 1fr}.source-sync-panel{padding:15px}}


/* v0.25 — placement synergies + driver progression. */
.d9-card.synergy-country{--synergy:#59b77b}
.d9-card.synergy-brand{--synergy:#5b8fe2}
.d9-card.synergy-country .d9-value,
.d9-card.synergy-brand .d9-value{
  border-color:color-mix(in srgb,var(--synergy) 78%,#20302b)!important;
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--synergy) 18%,transparent);
}
.d9-card.synergy-country .d9-value b,
.d9-card.synergy-brand .d9-value b{
  color:var(--synergy)!important;
  text-shadow:0 0 8px color-mix(in srgb,var(--synergy) 28%,transparent);
}
.d9-synergy-badge{
  position:absolute;
  left:50%;
  top:2px;
  z-index:5;
  transform:translate(-50%,-50%);
  max-width:78%;
  padding:3px 7px;
  border:1px solid color-mix(in srgb,var(--synergy,#79837f) 70%,#fff);
  border-radius:999px;
  background:#0c1110ee;
  color:var(--synergy,#dce4df);
  font:900 7px/1 Barlow,Arial,sans-serif;
  letter-spacing:.06em;
  white-space:nowrap;
}
.d9-card.game-card .d9-synergy-badge{
  top:1px;
  padding:1px 3px;
  font-size:4px;
  border-width:1px;
}
.cell.empty.synergy-country{border-color:#59b77b!important;box-shadow:inset 0 0 0 2px #59b77b3a,0 0 18px #59b77b22}
.cell.empty.synergy-brand{border-color:#5b8fe2!important;box-shadow:inset 0 0 0 2px #5b8fe23a,0 0 18px #5b8fe222}
.placement-preview{
  position:absolute;
  inset:3px;
  z-index:8;
  pointer-events:none;
  opacity:.9;
  transform:scale(.97);
}
.cell.empty{position:relative}
.placement-preview .d9-card{width:100%;height:100%}
.cell.occupied.preview-capture{
  outline:2px solid #68bf7e;
  outline-offset:-2px;
  box-shadow:0 0 18px #68bf7e44;
}
.drag-ghost.synergy-country{box-shadow:0 0 26px #59b77b66,12px 16px 30px #000c!important}
.drag-ghost.synergy-brand{box-shadow:0 0 26px #5b8fe266,12px 16px 30px #000c!important}

.progression-panel{
  padding:20px;
  border:1px solid #ffffff12;
  border-radius:10px;
  background:linear-gradient(145deg,#171c1e,#0e1214);
}
.progression-head,.daily-missions-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.progression-head h2{
  margin:5px 0 0;
  font:800 25px/1.1 Barlow,Arial,sans-serif;
  text-transform:none;
  letter-spacing:-.03em;
}
.progression-bars{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
  margin:18px 0;
}
.progression-bars>div{
  padding:11px 12px;
  border:1px solid #ffffff0d;
  background:#0d1113;
  display:grid;
  gap:8px;
}
.progression-bars span{
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  gap:8px;
}
.progression-bars span b{font-size:10px;text-transform:uppercase;letter-spacing:.05em}
.progression-bars span small{font-size:9px;color:#7c8789;font-variant-numeric:tabular-nums}
.progression-bars i{
  display:block;
  height:5px;
  overflow:hidden;
  border-radius:5px;
  background:#ffffff0a;
}
.progression-bars i>b{
  display:block;
  height:100%;
  background:linear-gradient(90deg,#a96a46,#d7a45f);
  border-radius:inherit;
}
.progression-bars>div+div i>b{background:linear-gradient(90deg,#557d64,#82b18d)}
.daily-missions-head{
  padding-top:13px;
  margin-top:4px;
  border-top:1px solid #ffffff0d;
  font-size:9px;
  letter-spacing:.08em;
  color:#899294;
}
.daily-missions{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:7px;
  margin:9px 0 12px;
}
.daily-missions article{
  min-width:0;
  padding:10px;
  border:1px solid #ffffff0d;
  background:#101416;
  display:grid;
  grid-template-columns:28px minmax(0,1fr);
  gap:8px;
  align-items:start;
}
.daily-missions article.complete{
  border-color:#385d46;
  background:#122019;
}
.mission-check{
  width:26px;height:26px;
  display:grid;place-items:center;
  border:1px solid #ffffff14;
  border-radius:50%;
  font:900 8px/1 Barlow,Arial,sans-serif;
  color:#b8bfbc;
}
.daily-missions .complete .mission-check{background:#315c41;border-color:#5a946b;color:#eaf4ed}
.daily-missions article>div{min-width:0;display:grid;gap:3px}
.daily-missions strong{font-size:9px;line-height:1.25}
.daily-missions small{font-size:8px;line-height:1.35;color:#778184}

.race-log-item .synergy-note{color:#74a8df}

@media(max-width:900px){
  .daily-missions{grid-template-columns:repeat(2,minmax(0,1fr))}
  .progression-bars{grid-template-columns:1fr}
}
@media(max-width:560px){
  .progression-panel{padding:14px}
  .daily-missions{grid-template-columns:1fr}
  .placement-preview{inset:2px}
}


/* v0.26 — immersive booster opening: large cards, breathing room and mobile snap carousel. */
.pack-reveal{
  position:fixed;
  inset:0;
  z-index:1200;
  display:grid;
  place-items:center;
  padding:clamp(12px,2vw,28px);
  overflow:hidden;
  background:
    radial-gradient(circle at 50% 42%,#29322f55 0,transparent 42%),
    radial-gradient(circle at 18% 18%,#d86b3d18 0,transparent 28%),
    #040607f2;
  backdrop-filter:blur(16px);
}
.pack-sheet{
  position:relative;
  width:min(1740px,100%);
  height:min(920px,calc(100dvh - 24px));
  margin:auto;
  padding:clamp(22px,2vw,34px);
  display:grid;
  grid-template-rows:auto minmax(0,1fr) auto;
  gap:18px;
  overflow:hidden;
  border:1px solid #ffffff1b;
  border-radius:18px;
  background:
    linear-gradient(90deg,#ffffff05 1px,transparent 1px) 0 0/88px 88px,
    linear-gradient(#ffffff04 1px,transparent 1px) 0 0/88px 88px,
    radial-gradient(circle at 50% 48%,#202a2714 0,transparent 52%),
    linear-gradient(150deg,#151b1d 0%,#0b0f11 58%,#080b0c 100%);
  box-shadow:0 42px 110px #000c,inset 0 1px 0 #ffffff08;
}
.pack-sheet::before{
  content:"";
  position:absolute;
  inset:0 0 auto 0;
  height:3px;
  background:linear-gradient(90deg,transparent 3%,#f06b43 22%,#d49c5c 50%,#557d64 78%,transparent 97%);
  opacity:.9;
  pointer-events:none;
}
.pack-sheet-head{
  position:relative;
  z-index:3;
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:24px;
  padding-bottom:18px;
  border-bottom:1px solid #ffffff10;
}
.pack-intro{min-width:0}
.pack-sheet-head .eyebrow{
  color:#ec6b43;
  font-size:11px;
  letter-spacing:.24em;
}
.pack-title-line{
  display:flex;
  align-items:center;
  gap:16px;
  min-width:0;
  margin-top:7px;
}
.pack-sheet-head h2{
  margin:0;
  font:900 clamp(38px,3.7vw,64px)/.92 Barlow,Arial,sans-serif;
  letter-spacing:-.055em;
  text-transform:uppercase;
  color:#f4f1e9;
}
.pack-count-badge{
  flex:0 0 auto;
  display:grid;
  place-items:center;
  min-width:54px;
  height:42px;
  padding:0 12px;
  border:1px solid #f06b4366;
  background:#f06b4312;
  color:#f07a55;
  font:900 18px/1 Barlow,Arial,sans-serif;
  letter-spacing:-.03em;
}
.pack-lede{
  margin:10px 0 0;
  color:#899294;
  font-size:13px;
}
.pack-close{
  appearance:none;
  flex:0 0 auto;
  width:50px;
  height:50px;
  border:1px solid #ffffff0c;
  border-radius:50%;
  background:#ffffff08;
  color:#dfe3df;
  font:300 30px/1 Barlow,Arial,sans-serif;
  cursor:pointer;
  transition:background .16s ease,transform .16s ease,border-color .16s ease;
}
.pack-close:hover,.pack-close:focus-visible{
  background:#ffffff12;
  border-color:#ffffff1f;
  transform:scale(1.04);
  outline:none;
}
.pack-stage{
  position:relative;
  min-height:0;
  display:grid;
  align-items:center;
  overflow:hidden;
}
.pack-stage::before{
  content:"";
  position:absolute;
  left:50%;
  top:48%;
  width:min(1200px,84%);
  height:78%;
  transform:translate(-50%,-50%);
  background:radial-gradient(ellipse at center,#ffffff09 0,#ffffff03 42%,transparent 72%);
  filter:blur(4px);
  pointer-events:none;
}
.pack-cards{
  position:relative;
  z-index:2;
  min-width:0;
  min-height:0;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:clamp(16px,1.25vw,24px);
  overflow-x:auto;
  overflow-y:hidden;
  padding:20px 10px 30px;
  scroll-snap-type:x mandatory;
  overscroll-behavior-x:contain;
  scrollbar-width:thin;
  scrollbar-color:#ffffff20 transparent;
}
.pack-cards::-webkit-scrollbar{height:5px}
.pack-cards::-webkit-scrollbar-track{background:transparent}
.pack-cards::-webkit-scrollbar-thumb{background:#ffffff20;border-radius:10px}
.pack-card{
  flex:0 0 clamp(248px,15.5vw,300px);
  min-width:0;
  scroll-snap-align:center;
  transform-origin:50% 80%;
  animation:pack-card-arrive .48s cubic-bezier(.18,.78,.22,1) calc(var(--pack-order,0)*70ms) both;
}
.pack-card .d9-card{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  transition:transform .18s ease,filter .18s ease,box-shadow .18s ease;
  filter:drop-shadow(0 18px 24px #0008);
}
.pack-card:hover .d9-card{
  transform:translateY(-6px);
  filter:drop-shadow(0 24px 32px #000b);
}
.pack-card .d9-nameplate>span{font-size:12px}
.pack-card .d9-nameplate>strong{font-size:13px}
.pack-card .d9-value b{font-size:24px}
.pack-card .d9-brand-logo,.pack-card .d9-brand-emblem{width:34px;height:34px}
.pack-card .d9-flag{font-size:28px}
.pack-card .d9-specs{font-size:10px}
.pack-card .d9-footer{font-size:11px}
@keyframes pack-card-arrive{
  from{opacity:0;transform:translateY(26px) scale(.95)}
  to{opacity:1;transform:translateY(0) scale(1)}
}
.pack-actions{
  position:relative;
  z-index:3;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  padding-top:18px;
  border-top:1px solid #ffffff10;
}
.pack-actions-copy{
  min-width:0;
  display:grid;
  gap:4px;
}
.pack-actions-copy strong{
  color:#ece9e0;
  font:800 12px/1.2 Barlow,Arial,sans-serif;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.pack-actions-copy span{
  color:#747e80;
  font-size:11px;
}
.pack-done{
  flex:0 0 auto;
  min-width:190px;
  min-height:50px;
  margin:0;
  padding-inline:26px;
  font-size:12px;
}
@media(max-width:1320px){
  .pack-card{flex-basis:248px}
  .pack-cards{justify-content:flex-start}
}
@media(max-width:760px){
  .pack-reveal{padding:6px}
  .pack-sheet{
    width:100%;
    height:calc(100dvh - 12px);
    padding:18px 14px 14px;
    gap:12px;
    border-radius:14px;
  }
  .pack-sheet-head{gap:12px;padding-bottom:13px}
  .pack-sheet-head .eyebrow{font-size:9px;letter-spacing:.2em}
  .pack-title-line{gap:10px;margin-top:5px}
  .pack-sheet-head h2{font-size:clamp(31px,10vw,42px);line-height:.95}
  .pack-count-badge{min-width:42px;height:34px;padding:0 9px;font-size:15px}
  .pack-lede{margin-top:7px;font-size:11px}
  .pack-close{width:42px;height:42px;font-size:26px}
  .pack-stage{margin-inline:-14px}
  .pack-cards{
    justify-content:flex-start;
    gap:14px;
    padding:16px max(16px,11vw) 22px;
  }
  .pack-card{flex-basis:min(78vw,310px)}
  .pack-card .d9-nameplate>span{font-size:11px}
  .pack-card .d9-nameplate>strong{font-size:12px}
  .pack-card .d9-value b{font-size:23px}
  .pack-actions{gap:12px;padding-top:13px}
  .pack-actions-copy span{display:none}
  .pack-actions-copy strong{font-size:9px;line-height:1.35}
  .pack-done{min-width:144px;min-height:46px;padding-inline:18px}
}
@media(max-width:430px){
  .pack-title-line{align-items:flex-end}
  .pack-count-badge{margin-bottom:2px}
  .pack-card{flex-basis:min(80vw,306px)}
  .pack-actions{align-items:stretch;flex-direction:column}
  .pack-actions-copy{display:none}
  .pack-done{width:100%}
}
@media(prefers-reduced-motion:reduce){
  .pack-card{animation:none}
  .pack-card .d9-card,.pack-close{transition:none}
}


/* v0.27 — booster hub, sealed-pack opening, header indicator, weekly rotation and admin reset. */
.account{position:relative}
.header-packs{position:relative;display:grid;place-items:center;width:42px;height:42px;border:1px solid #ffffff12;background:#111516;color:#697173;text-decoration:none;transition:transform .16s ease,border-color .16s ease,background .16s ease,filter .16s ease}
.header-packs:hover{transform:translateY(-1px);border-color:#ffffff28}
.header-pack-icon{position:relative;width:19px;height:25px;display:grid;place-items:center;border:1px solid currentColor;background:linear-gradient(145deg,#ffffff0b,transparent);transform:skew(-3deg)}
.header-pack-icon::before,.header-pack-icon::after{content:"";position:absolute;left:2px;right:2px;height:2px;border-top:1px dashed currentColor;opacity:.65}
.header-pack-icon::before{top:3px}.header-pack-icon::after{bottom:3px}.header-pack-icon i{position:absolute;inset:6px 3px;border:1px solid currentColor;opacity:.35}.header-pack-icon b{position:relative;font:900 7px/1 Barlow,Arial,sans-serif;letter-spacing:-.08em}
.header-packs.has-packs{color:#f06b43;border-color:#f06b4350;background:#261711;box-shadow:0 0 0 1px #f06b4310,0 0 22px #f06b4320;animation:header-pack-pulse 1.7s ease-in-out infinite}
.header-pack-badge{position:absolute;right:-6px;top:-6px;min-width:19px;height:19px;padding:0 5px;display:grid;place-items:center;border:2px solid #0b0c0d;border-radius:999px;background:#f06b43;color:#0b0c0d;font:900 10px/1 Barlow,Arial,sans-serif}
@keyframes header-pack-pulse{0%,100%{filter:brightness(1)}50%{filter:brightness(1.32)}}

.booster-shop-hero{min-height:330px;margin:10px 0 44px;padding:42px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:36px;border:1px solid #ffffff12;background:radial-gradient(circle at 78% 32%,#f06b4320,transparent 28%),linear-gradient(145deg,#171c1e,#0b0f10);position:relative;overflow:hidden}
.booster-shop-hero h1{font-size:clamp(54px,7vw,104px);margin:16px 0 20px}.booster-shop-hero p{max-width:650px;margin:0}
.booster-shop-kpi{width:190px;aspect-ratio:1;display:grid;place-content:center;text-align:center;border:1px solid #f06b4355;background:#0b0e0fe8;box-shadow:14px 14px 0 #0005}
.booster-shop-kpi strong{font:900 72px/.85 'Barlow Condensed','Arial Narrow',sans-serif;color:#f06b43}.booster-shop-kpi span{margin-top:12px;font:800 9px/1.2 Barlow,Arial,sans-serif;text-transform:uppercase;letter-spacing:.12em;color:#9ea5a4}
.booster-section-head h2{margin:5px 0 0}.booster-inventory-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:18px}
.booster-stock{min-width:0;display:grid;grid-template-columns:minmax(130px,.72fr) minmax(0,1fr);gap:18px;align-items:center;padding:18px;border:1px solid #ffffff10;background:linear-gradient(150deg,#171b1d,#0e1214)}
.booster-stock.empty{opacity:.55}.booster-stock-art{display:grid;place-items:center;min-height:260px}.booster-stock-art .booster-art{width:min(100%,170px)}
.booster-stock-copy{min-width:0}.booster-stock-copy h3{font-size:26px;margin:5px 0 7px}.booster-stock-copy p{font-size:11px;margin:8px 0 16px}.booster-stock-count{display:block;font:900 28px/1 'Barlow Condensed','Arial Narrow',sans-serif;color:#f4f0e8}.booster-stock-copy .btn{width:100%;font-size:10px;padding-inline:10px}

.booster-art{--pack:#8f9896;--pack2:#37413f;position:relative;aspect-ratio:5/8;overflow:hidden;display:grid;grid-template-rows:auto 1fr auto auto;padding:14px 12px 16px;border:1px solid color-mix(in srgb,var(--pack) 72%,#fff);background:linear-gradient(120deg,transparent 0 18%,#ffffff22 20% 21%,transparent 23% 42%,#ffffff18 44% 45%,transparent 47% 100%),radial-gradient(circle at 72% 28%,color-mix(in srgb,var(--pack) 50%,transparent),transparent 34%),linear-gradient(155deg,color-mix(in srgb,var(--pack) 68%,#242a28),var(--pack2) 55%,#080a0a);box-shadow:0 18px 34px #0009,inset 0 0 0 4px #ffffff08;isolation:isolate;transform:rotate(-1deg)}
.booster-art--starter{--pack:#6d927c;--pack2:#263b31}.booster-art--reward{--pack:#d58a4f;--pack2:#4a2a1b}.booster-art--free{--pack:#66869c;--pack2:#253541}.booster-art--shop{--pack:#9d7755;--pack2:#31251c}
.booster-art::before{content:"";position:absolute;inset:7px;border:1px solid #ffffff2c;z-index:-1}.booster-art::after{content:"";position:absolute;width:130%;height:32%;left:-15%;top:38%;background:linear-gradient(90deg,transparent,#ffffff17,transparent);transform:rotate(-24deg);z-index:-1}
.booster-art-shine{position:absolute;inset:0;background:linear-gradient(110deg,transparent 20%,#ffffff35 36%,transparent 52%);transform:translateX(-90%);opacity:.45}
.booster-art-top{font:900 13px/1 Barlow,Arial,sans-serif;letter-spacing:.12em;color:#f6f2e9}.booster-art-top b{color:#0a0c0c;background:var(--pack);padding:1px 3px;margin-left:2px}.booster-art-mark{align-self:center;justify-self:center;font:italic 900 clamp(52px,6vw,82px)/1 'Barlow Condensed','Arial Narrow',sans-serif;letter-spacing:-.1em;color:#ffffff1e;text-shadow:1px 1px 0 #0003}.booster-art-title{font:900 17px/1 'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase;color:#f9f4e9;letter-spacing:.04em}.booster-art-sub{margin-top:5px;font:700 7px/1.25 Barlow,Arial,sans-serif;text-transform:uppercase;letter-spacing:.08em;color:#e2ddd1}.booster-art-cut{position:absolute;left:0;right:0;top:8px;border-top:1px dashed #ffffff6b}

.booster-market{padding-top:12px;border-top:1px solid #ffffff10}.booster-market-note{max-width:760px;font-size:12px}.booster-market-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:18px}
.booster-market-card{min-width:0;display:grid;grid-template-columns:120px minmax(0,1fr);gap:15px;padding:16px;border:1px solid #ffffff0e;background:#101416}.booster-market-art .booster-art{width:110px}.booster-market-card h3{margin:4px 0 7px;font-size:21px}.booster-market-card p{font-size:10px;min-height:32px;margin-bottom:10px}.booster-market-meta{display:flex;justify-content:space-between;gap:8px;margin:9px 0 12px;font-size:9px;color:#7e888a;text-transform:uppercase}.booster-market-meta strong{color:#b99d72}.booster-market-card .btn{width:100%;min-height:38px;padding:8px;font-size:8px}.booster-market-empty{grid-column:1/-1;padding:28px;border:1px dashed #ffffff16;background:#0e1213}

.pack-opening-overlay{position:fixed;inset:0;z-index:1250;display:grid;place-items:center;padding:18px;background:radial-gradient(circle at 50% 45%,#34413d44,transparent 36%),#030506f1;backdrop-filter:blur(18px);overflow:hidden}
.pack-opening-shell{position:relative;width:min(720px,100%);height:min(820px,calc(100dvh - 36px));display:grid;grid-template-rows:auto minmax(0,1fr);place-items:center;padding:34px;border:1px solid #ffffff18;background:linear-gradient(155deg,#151a1c,#090c0d);box-shadow:0 40px 100px #000d;overflow:hidden}
.pack-opening-copy{text-align:center;position:relative;z-index:4}.pack-opening-copy h2{margin:7px 0 6px;font-size:clamp(42px,7vw,72px)}.pack-opening-copy p{margin:0;font-size:12px}.pack-opening-close{position:absolute;right:20px;top:20px;z-index:6;width:44px;height:44px;border:1px solid #ffffff10;border-radius:50%;background:#ffffff08;color:#ddd;font-size:26px}
.booster-open-target{position:relative;align-self:center;width:min(310px,72vw);border:0;background:none;padding:0;color:inherit;display:grid;place-items:center;gap:18px;perspective:1000px}.booster-open-target .booster-art{width:100%;transition:transform .3s ease,filter .3s ease}.booster-open-target:hover .booster-art{transform:rotate(-1deg) translateY(-8px) scale(1.025);filter:brightness(1.08)}.booster-open-target:hover .booster-art-shine{animation:foil-sweep .7s ease both}.booster-open-hint{font:900 10px/1 Barlow,Arial,sans-serif;text-transform:uppercase;letter-spacing:.16em;color:#c3c1ba}
@keyframes foil-sweep{from{transform:translateX(-100%)}to{transform:translateX(110%)}}
.pack-opening-overlay.is-opening .booster-art{animation:pack-shake .18s linear 4}.pack-opening-overlay.is-opening .booster-art-cut{border-color:#fff;box-shadow:0 0 12px #fff8}.pack-opening-overlay.is-torn .booster-art{animation:pack-rip .42s cubic-bezier(.3,.8,.2,1) forwards}
@keyframes pack-shake{0%,100%{transform:rotate(-1deg) translateX(0)}25%{transform:rotate(-2deg) translateX(-5px)}75%{transform:rotate(0deg) translateX(5px)}}@keyframes pack-rip{0%{transform:scale(1);opacity:1;clip-path:inset(0)}45%{transform:scale(1.06) rotate(1deg);clip-path:polygon(0 0,100% 0,100% 48%,54% 45%,48% 53%,0 49%)}100%{transform:scale(1.18);opacity:0;clip-path:polygon(0 0,100% 0,100% 38%,55% 34%,47% 62%,0 56%)}}

.weekly-duel-panel{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px;align-items:center;padding:22px;border:1px solid #b18b4944;background:radial-gradient(circle at 82% 50%,#b18b4920,transparent 26%),linear-gradient(145deg,#181a18,#101312)}.weekly-duel-copy h2{margin:5px 0 8px;font:900 32px/1 'Barlow Condensed','Arial Narrow',sans-serif}.weekly-duel-copy p{margin:0;max-width:680px}.weekly-duel-badge{min-width:190px;padding:15px;border:1px solid #b18b4944;background:#0d100f;text-align:right}.weekly-duel-badge span{display:block;font-size:8px;text-transform:uppercase;letter-spacing:.1em;color:#8d908a}.weekly-duel-badge strong{display:block;margin-top:5px;color:#d2af6a;font-size:12px;text-transform:uppercase}
.admin-player-actions{display:flex;gap:7px;justify-content:flex-end}.admin-player-actions .btn{min-height:36px;padding:7px 10px;font-size:8px;box-shadow:none}.admin-player-reset{background:transparent!important}

@media(max-width:1100px){.booster-inventory-grid{grid-template-columns:1fr}.booster-stock{grid-template-columns:180px minmax(0,1fr)}.booster-stock-art{min-height:250px}.booster-market-grid{grid-template-columns:1fr 1fr}.admin-player-actions{grid-column:1/-1}}
@media(max-width:760px){.account{gap:7px}.header-packs{width:38px;height:38px}.header-pack-icon{width:17px;height:22px}.account-role{display:none!important}.booster-shop-hero{min-height:0;padding:24px 18px;grid-template-columns:1fr}.booster-shop-kpi{width:120px;aspect-ratio:auto;padding:16px;justify-self:start}.booster-shop-kpi strong{font-size:48px}.booster-inventory-grid{gap:10px}.booster-stock{grid-template-columns:112px minmax(0,1fr);gap:12px;padding:12px}.booster-stock-art{min-height:180px}.booster-stock-copy h3{font-size:21px}.booster-stock-count{font-size:23px}.booster-market-grid{grid-template-columns:1fr}.booster-market-card{grid-template-columns:96px minmax(0,1fr)}.booster-market-art .booster-art{width:88px}.pack-opening-shell{height:calc(100dvh - 12px);padding:24px 12px;border-radius:0}.pack-opening-close{right:12px;top:12px}.booster-open-target{width:min(300px,76vw)}.weekly-duel-panel{grid-template-columns:1fr}.weekly-duel-badge{text-align:left;min-width:0}.admin-player-actions{width:100%;display:grid;grid-template-columns:1fr 1fr}.admin-player-actions .btn{width:100%}}
@media(max-width:430px){.account-profile{max-width:92px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.booster-stock{grid-template-columns:92px minmax(0,1fr)}.booster-stock-art{min-height:145px}.booster-stock-copy p{display:none}.booster-stock-copy .eyebrow{font-size:8px}.booster-stock-copy h3{font-size:18px}.booster-stock-count{font-size:20px;margin-bottom:10px}.booster-market-card{grid-template-columns:78px minmax(0,1fr);padding:11px}.booster-market-art .booster-art{width:72px}.booster-market-card p{display:none}}
@media(prefers-reduced-motion:reduce){.header-packs.has-packs,.pack-opening-overlay.is-opening .booster-art,.pack-opening-overlay.is-torn .booster-art{animation:none}}


/* v0.27.1 — booster reveal cards use catalogue sizing; wrap instead of shrinking. */
.pack-reveal{
  align-items:start;
  overflow-y:auto;
  overflow-x:hidden;
  padding:16px;
}
.pack-sheet{
  width:min(1120px,calc(100vw - 32px));
  height:auto;
  min-height:0;
  max-height:none;
  margin:auto;
  grid-template-rows:auto auto auto;
  overflow:visible;
}
.pack-stage{
  display:block;
  min-height:0;
  overflow:visible;
}
.pack-stage::before{
  top:50%;
  height:88%;
}
.pack-cards{
  width:min(100%,920px);
  margin:0 auto;
  display:flex;
  flex-wrap:wrap;
  justify-content:center!important;
  align-items:flex-start;
  align-content:flex-start;
  gap:24px;
  overflow:visible;
  padding:28px 12px 34px;
  scroll-snap-type:none;
}
.pack-card{
  flex:0 0 280px!important;
  width:280px;
  min-width:280px;
  max-width:280px;
  scroll-snap-align:none;
}
.pack-card .d9-card{
  width:100%!important;
  max-width:360px!important;
}
.pack-card .d9-nameplate>span{font-size:11px}
.pack-card .d9-nameplate>strong{font-size:12px}
.pack-card .d9-value b{font-size:22px}
.pack-card .d9-brand-logo,.pack-card .d9-brand-emblem{width:32px;height:32px}
.pack-card .d9-flag{font-size:26px}
.pack-card .d9-specs{font-size:9px}
.pack-card .d9-footer{font-size:10px}
.pack-actions{
  position:sticky;
  bottom:0;
  margin:0 -4px -4px;
  padding:18px 4px 4px;
  background:linear-gradient(180deg,transparent,#0b0f11 28%);
}

@media(max-width:900px){
  .pack-sheet{width:min(760px,calc(100vw - 24px))}
  .pack-cards{width:min(100%,620px);gap:20px}
  .pack-card{
    flex-basis:280px!important;
    width:280px;
    min-width:280px;
    max-width:280px;
  }
}
@media(max-width:620px){
  .pack-reveal{padding:6px}
  .pack-sheet{
    width:100%;
    height:auto;
    min-height:calc(100dvh - 12px);
    padding:18px 14px 14px;
  }
  .pack-stage{margin-inline:0}
  .pack-cards{
    width:100%;
    display:flex;
    gap:18px;
    padding:18px 0 24px;
  }
  .pack-card{
    flex:0 0 min(84vw,320px)!important;
    width:min(84vw,320px);
    min-width:min(84vw,320px);
    max-width:min(84vw,320px);
  }
  .pack-actions{
    margin:0;
    padding:14px 0 0;
    background:#0b0f11;
  }
}


/* v0.27.3 — readable long brands and visible synergy identity during duels. */
.d9-card.collector-card .d9-nameplate{
  grid-template-columns:minmax(0,45%) minmax(0,55%);
  gap:10px;
}
.d9-card.collector-card .d9-nameplate>span{
  white-space:normal;
  overflow:hidden;
  text-overflow:clip;
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  overflow-wrap:anywhere;
  max-height:2.6em;
}
.d9-card.collector-card.brand-long .d9-nameplate>span{
  font-size:10px;
  letter-spacing:.045em;
}

/* The logo and flag are game information: they must remain visible in hand and board cards. */
.d9-card.game-card .d9-emblems{
  display:flex!important;
  position:absolute;
  z-index:2;
  left:5px;
  right:5px;
  top:50%;
  transform:translateY(-50%);
  justify-content:space-between;
  align-items:center;
  gap:0;
  padding:0!important;
  pointer-events:none;
}
.d9-card.game-card .d9-brand-emblem{
  width:clamp(18px,1.65vw,24px);
  height:clamp(18px,1.65vw,24px);
  padding:2px;
  border:1px solid #ffffff44;
  border-radius:50%;
  background:#f1f2ed;
  box-shadow:0 2px 6px #0007;
}
.d9-card.game-card .d9-brand-logo{
  width:100%!important;
  height:100%!important;
  object-fit:contain;
}
.d9-card.game-card .d9-signature{
  color:#26322e;
  font-size:clamp(7px,.72vw,10px)!important;
  letter-spacing:-.04em;
}
.d9-card.game-card .d9-flag{
  min-width:clamp(22px,1.9vw,28px);
  min-height:clamp(18px,1.55vw,22px);
  display:grid;
  place-items:center;
  padding:1px 3px;
  border:1px solid #ffffff28;
  border-radius:4px;
  background:#0d1112c9;
  box-shadow:0 2px 6px #0007;
  font-size:clamp(15px,1.45vw,20px)!important;
  line-height:1!important;
}
.d9-card.game-card.synergy-brand .d9-brand-emblem{
  border-color:#efb05f;
  box-shadow:0 0 0 2px #efb05f88,0 0 13px #efb05f66,0 2px 6px #0008;
  transform:scale(1.12);
}
.d9-card.game-card.synergy-country .d9-flag{
  border-color:#6db59a;
  box-shadow:0 0 0 2px #6db59a88,0 0 13px #6db59a66,0 2px 6px #0008;
  transform:scale(1.08);
}
.d9-card.game-card .d9-synergy-badge{
  z-index:5;
}

/* Hand cards are where matching decisions are made: make identity slightly stronger. */
.d9-card.game-card-hand .d9-brand-emblem{
  width:clamp(20px,1.9vw,27px);
  height:clamp(20px,1.9vw,27px);
}
.d9-card.game-card-hand .d9-flag{
  min-width:clamp(24px,2.1vw,30px);
  font-size:clamp(16px,1.6vw,21px)!important;
}

/* Long brands remain legible on compact gameplay cards instead of becoming an ellipsis. */
.d9-card.game-card.brand-long .d9-nameplate>span{
  font-size:clamp(4.5px,.55vw,6px);
  letter-spacing:.035em;
  white-space:normal;
  overflow:hidden;
  text-overflow:clip;
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
}

@media(max-width:520px){
  .d9-card.collector-card .d9-nameplate{
    grid-template-columns:minmax(0,46%) minmax(0,54%);
  }
  .d9-card.game-card .d9-emblems{left:3px;right:3px}
  .d9-card.game-card .d9-brand-emblem{
    width:17px;
    height:17px;
    padding:1px;
  }
  .d9-card.game-card .d9-flag{
    min-width:20px;
    min-height:16px;
    padding:1px 2px;
    font-size:14px!important;
  }
  .d9-card.game-card-hand .d9-brand-emblem{width:18px;height:18px}
  .d9-card.game-card-hand .d9-flag{min-width:21px;font-size:15px!important}
}
@media(prefers-reduced-motion:reduce){
  .d9-card.game-card.synergy-brand .d9-brand-emblem,
  .d9-card.game-card.synergy-country .d9-flag{transition:none}
}


/* v0.28 — shadow Catalogue V2 rebuild pipeline. */
.admin-nav{grid-template-columns:repeat(6,minmax(0,1fr))!important}
.admin-nav-v2>span::after{
  content:"V2";
  display:inline-grid;
  place-items:center;
  min-width:22px;
  height:15px;
  margin-left:6px;
  padding:0 4px;
  border:1px solid #ef6b43aa;
  color:#ef805f;
  font:900 7px/1 Barlow,Arial,sans-serif;
  letter-spacing:.05em;
  vertical-align:2px;
}
.v2-hero{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:28px;
  align-items:center;
  margin-bottom:18px;
  padding:30px;
  border-color:#ef6b4333;
  background:
    radial-gradient(circle at 82% 20%,#ef6b4315,transparent 30%),
    linear-gradient(145deg,#171c1e,#0d1112);
}
.v2-hero h2{margin:6px 0 10px;font:900 clamp(34px,4.2vw,62px)/.95 'Barlow Condensed','Arial Narrow',sans-serif;letter-spacing:-.025em}
.v2-hero p{max-width:900px;margin:0}
.v2-shadow-lock{
  min-width:190px;
  padding:18px;
  border:1px solid #6f9f7d55;
  background:#0c1510;
  text-align:right;
}
.v2-shadow-lock strong{display:block;color:#8ec49d;font:900 13px/1 Barlow,Arial,sans-serif;text-transform:uppercase;letter-spacing:.08em}
.v2-shadow-lock span{display:block;margin-top:6px;color:#77857a;font-size:9px;text-transform:uppercase;letter-spacing:.07em}
.v2-kpis{margin-bottom:18px}
.v2-kpis article:last-child{border-color:#6fa98955;background:#102018}
.v2-kpis article:last-child strong{color:#8cc59d}

.v2-pipeline-panel{padding:24px;margin-bottom:18px}
.v2-flow{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:8px;
  margin:20px 0;
}
.v2-step{
  appearance:none;
  min-width:0;
  min-height:108px;
  padding:14px;
  display:grid;
  grid-template-columns:auto 1fr;
  grid-template-rows:auto 1fr auto;
  gap:4px 9px;
  text-align:left;
  color:#dde2df;
  border:1px solid #ffffff12;
  background:linear-gradient(145deg,#151a1c,#0e1213);
  cursor:pointer;
  transition:transform .15s ease,border-color .15s ease,background .15s ease;
}
.v2-step:hover:not(:disabled){transform:translateY(-2px);border-color:#ef6b4355;background:#191f20}
.v2-step:disabled{cursor:progress;opacity:.55}
.v2-step b{
  grid-row:1/3;
  color:#ef714d;
  font:900 24px/.9 'Barlow Condensed','Arial Narrow',sans-serif;
}
.v2-step span{font:900 11px/1.1 Barlow,Arial,sans-serif;text-transform:uppercase;letter-spacing:.06em}
.v2-step small{grid-column:2;color:#737e80;font-size:9px;line-height:1.25}
.v2-main-actions{align-items:center;flex-wrap:wrap}
.v2-main-actions .danger{margin-left:auto}
.v2-status{min-height:1.45em;margin-top:12px;color:#9fa7a5}

.v2-source-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:14px;
  margin-bottom:18px;
}
.v2-source-card{min-width:0;padding:20px}
.v2-source-card h3{margin:5px 0 18px;font-size:21px}
.v2-source-card>strong{display:block;color:#f0eee8;font:900 42px/.9 'Barlow Condensed','Arial Narrow',sans-serif}
.v2-source-card>span:not(.eyebrow){display:block;margin-top:5px;color:#758082;font-size:9px;text-transform:uppercase;letter-spacing:.08em}
.v2-source-card>small{display:block;margin-top:9px;color:#788284;font-size:9px;line-height:1.35}
.v2-source-progress{height:5px;margin-top:15px;overflow:hidden;background:#ffffff0a}
.v2-source-progress i{display:block;width:0;height:100%;background:linear-gradient(90deg,#ef6b43,#bf9a62,#6fa989);transition:width .25s ease}

.v2-gate-panel{padding:24px}
.v2-quality-summary{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;
  margin:18px 0;
}
.v2-quality-summary article{padding:13px;border:1px solid #ffffff0d;background:#0f1314}
.v2-quality-summary span{display:block;color:#768083;font-size:8px;text-transform:uppercase;letter-spacing:.08em}
.v2-quality-summary strong{display:block;margin-top:5px;color:#e9ece8;font:900 25px/1 'Barlow Condensed','Arial Narrow',sans-serif}
.v2-vehicle-list{display:grid;gap:6px}
.v2-vehicle-row{
  display:grid;
  grid-template-columns:minmax(260px,1.2fr) auto minmax(260px,1fr);
  gap:14px;
  align-items:center;
  padding:12px 13px;
  border:1px solid #ffffff0d;
  background:#0e1213;
}
.v2-vehicle-row.ready{border-left:3px solid #6fa989}
.v2-vehicle-row.blocked{border-left:3px solid #725448}
.v2-vehicle-main{min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr);gap:3px 9px;align-items:center}
.v2-vehicle-main .v2-state{grid-row:1/3;padding:5px 6px;border:1px solid #ffffff16;color:#9ba4a3;font:900 7px/1 Barlow,Arial,sans-serif;letter-spacing:.06em}
.v2-vehicle-row.ready .v2-state{border-color:#6fa98988;color:#8ec49d}
.v2-vehicle-main strong{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px}
.v2-vehicle-main small{color:#6f7a7c;font-size:9px}
.v2-source-chips{display:flex;gap:4px;flex-wrap:wrap;justify-content:center}
.v2-source-chips span{padding:4px 6px;border:1px solid #ffffff12;color:#9ba3a1;font:800 7px/1 Barlow,Arial,sans-serif;letter-spacing:.05em}
.v2-issues{min-width:0;display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.v2-issues span{padding:4px 6px;border:1px solid #754d3f55;background:#241510;color:#c98b76;font-size:8px}
.v2-issues span.ok{border-color:#4d785c66;background:#0f1c14;color:#83b891}
.v2-issues small{flex-basis:100%;text-align:right;color:#a76e5e;font-size:8px}
.v2-cutover-panel{
  margin-top:18px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:20px;
  border-style:dashed;
  opacity:.82;
}
.v2-cutover-panel h2{margin:5px 0 7px}
.v2-cutover-panel p{margin:0;max-width:850px}

@media(max-width:1050px){
  .admin-nav{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  .v2-flow{grid-template-columns:repeat(2,minmax(0,1fr))}
  .v2-flow .v2-step:last-child{grid-column:1/-1}
  .v2-source-grid{grid-template-columns:1fr}
  .v2-vehicle-row{grid-template-columns:1fr auto}
  .v2-issues{grid-column:1/-1;justify-content:flex-start}
  .v2-issues small{text-align:left}
}
@media(max-width:760px){
  .admin-nav{display:flex!important}
  .v2-hero{grid-template-columns:1fr;padding:20px}
  .v2-shadow-lock{text-align:left;min-width:0}
  .v2-flow{grid-template-columns:1fr 1fr}
  .v2-main-actions{display:grid;grid-template-columns:1fr 1fr}
  .v2-main-actions .btn{width:100%;margin:0}
  .v2-quality-summary{grid-template-columns:1fr 1fr}
  .v2-vehicle-row{grid-template-columns:1fr}
  .v2-source-chips{justify-content:flex-start}
  .v2-cutover-panel{align-items:flex-start;flex-direction:column}
}
@media(max-width:460px){
  .v2-flow{grid-template-columns:1fr}
  .v2-flow .v2-step:last-child{grid-column:auto}
  .v2-main-actions{grid-template-columns:1fr}
  .v2-quality-summary{grid-template-columns:1fr 1fr}
  .v2-vehicle-main{grid-template-columns:1fr}
  .v2-vehicle-main .v2-state{grid-row:auto;width:max-content}
}


/* v0.28.5 — Catalogue V2 diagnostics: explain quarantine, not just count it. */
.v2-diagnostics-panel{padding:24px;margin-bottom:18px;border-color:#bc805044;background:linear-gradient(145deg,#181a19,#111414)}
.v2-diagnostics-panel h2{margin:5px 0 8px;font-size:24px}
.v2-diagnostics-panel>p{max-width:980px;color:#9ba29f}

.v2-adac-states{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:8px;
  margin:20px 0;
}
.v2-adac-states article{
  min-width:0;
  padding:14px;
  border:1px solid #ffffff0e;
  background:#0f1313;
  cursor:pointer;
  transition:border-color .15s ease,transform .15s ease,background .15s ease;
}
.v2-adac-states article:hover{transform:translateY(-1px);border-color:#ef6b4355;background:#141817}
.v2-adac-states span{display:block;color:#79817f;font:800 8px/1 Barlow,Arial,sans-serif;text-transform:uppercase;letter-spacing:.08em}
.v2-adac-states strong{display:block;margin-top:7px;color:#eeeae2;font:900 30px/.95 'Barlow Condensed','Arial Narrow',sans-serif}
.v2-adac-states small{display:block;margin-top:5px;color:#68706e;font-size:8px;line-height:1.25}
.v2-adac-states [data-v2-adac-card="complete"]{border-left:3px solid #659477}
.v2-adac-states [data-v2-adac-card="no_match"]{border-left:3px solid #806a4f}
.v2-adac-states [data-v2-adac-card="review"]{border-left:3px solid #c99a58}
.v2-adac-states [data-v2-adac-card="error"]{border-left:3px solid #a45945}
.v2-adac-states [data-v2-adac-card="pending"]{border-left:3px solid #65727a}

.v2-diagnostic-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(340px,.8fr);gap:12px}
.v2-diagnostic-block{padding:17px;border:1px solid #ffffff0d;background:#0d1111}
.v2-diagnostic-title{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin-bottom:13px}
.v2-diagnostic-title>span{font:900 11px/1 Barlow,Arial,sans-serif;text-transform:uppercase;letter-spacing:.07em;color:#d9d9d3}
.v2-diagnostic-title>small{color:#68716f;font-size:8px;text-align:right}

.v2-blocker-list{display:grid;gap:5px}
.v2-blocker-row{
  appearance:none;
  width:100%;
  display:grid;
  grid-template-columns:28px minmax(0,1fr) 64px;
  gap:9px;
  align-items:center;
  padding:8px;
  border:1px solid transparent;
  background:#111515;
  color:inherit;
  text-align:left;
  cursor:pointer;
}
.v2-blocker-row:hover{border-color:#ef6b433e;background:#151918}
.v2-blocker-rank{color:#59615f;font:900 9px/1 Barlow,Arial,sans-serif}
.v2-blocker-copy{min-width:0}
.v2-blocker-copy strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px}
.v2-blocker-copy i{display:block;height:3px;margin-top:6px;background:#ffffff08;overflow:hidden}
.v2-blocker-copy i b{display:block;height:100%;background:linear-gradient(90deg,#ef6845,#bd8e5e,#6e9c7c)}
.v2-blocker-number{text-align:right;color:#e9e5dd;font:900 16px/1 'Barlow Condensed','Arial Narrow',sans-serif}
.v2-blocker-number small{display:block;margin-top:3px;color:#65706d;font:700 7px/1 Barlow,Arial,sans-serif}

.v2-readiness-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.v2-readiness-grid button{
  appearance:none;
  padding:11px;
  border:1px solid #ffffff0c;
  background:#111515;
  color:inherit;
  text-align:left;
  cursor:pointer;
}
.v2-readiness-grid button:hover{border-color:#6f9e7d55;background:#131a16}
.v2-readiness-grid span{display:block;color:#707a77;font-size:8px;text-transform:uppercase;letter-spacing:.07em}
.v2-readiness-grid strong{display:block;margin-top:4px;font:900 25px/.95 'Barlow Condensed','Arial Narrow',sans-serif}
.v2-source-coverage{display:flex;flex-wrap:wrap;gap:5px;margin-top:12px;padding-top:11px;border-top:1px solid #ffffff0a}
.v2-source-coverage span{padding:5px 7px;border:1px solid #ffffff0d;background:#101414;color:#747d7a;font-size:8px}
.v2-source-coverage b{color:#c8cec9}

.v2-action-plan{margin-top:12px;padding:17px;border:1px solid #ffffff0d;background:#0d1111}
.v2-action-list{display:grid;gap:6px}
.v2-action-item{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px;border:1px solid #ffffff0c;background:#111515}
.v2-action-index{color:#ef6b43;font:900 18px/.9 'Barlow Condensed','Arial Narrow',sans-serif}
.v2-action-item strong{display:block;font-size:10px}
.v2-action-item small{display:block;margin-top:3px;color:#727a78;font-size:8px;line-height:1.3}
.v2-action-item .btn{min-height:32px;padding:7px 10px;font-size:8px}

.v2-quality-summary{grid-template-columns:repeat(6,minmax(0,1fr))}
.v2-list-tools{display:grid;grid-template-columns:minmax(190px,1fr) minmax(210px,1.4fr) auto;gap:8px;align-items:center;margin:15px 0}
.v2-list-tools select{
  width:100%;
  min-height:38px;
  padding:0 11px;
  color:#d9dcda;
  border:1px solid #ffffff14;
  background:#101719;
  font:800 9px/1 Barlow,Arial,sans-serif;
  text-transform:uppercase;
  letter-spacing:.05em;
}
.v2-list-tools .pill{justify-self:end}
.v2-adac-chip{border-color:#ffffff18!important}
.v2-adac-chip.complete{color:#86b996!important;border-color:#5c8d6b66!important}
.v2-adac-chip.no_match{color:#b29a78!important;border-color:#7b674b66!important}
.v2-adac-chip.review{color:#d5a461!important;border-color:#9a754366!important}
.v2-adac-chip.error{color:#cb806a!important;border-color:#8d4d3d66!important}
.v2-adac-chip.pending{color:#89979c!important}
.v2-issues button{
  appearance:none;
  padding:4px 6px;
  border:1px solid #754d3f55;
  background:#241510;
  color:#c98b76;
  font:inherit;
  font-size:8px;
  cursor:pointer;
}
.v2-issues button:hover{border-color:#bd785f88;background:#2d1913}

@media(max-width:1050px){
  .v2-adac-states{grid-template-columns:repeat(3,minmax(0,1fr))}
  .v2-diagnostic-grid{grid-template-columns:1fr}
  .v2-quality-summary{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:760px){
  .v2-adac-states{grid-template-columns:1fr 1fr}
  .v2-diagnostic-title{align-items:flex-start;flex-direction:column}
  .v2-diagnostic-title>small{text-align:left}
  .v2-list-tools{grid-template-columns:1fr}
  .v2-list-tools .pill{justify-self:start}
  .v2-action-item{grid-template-columns:28px minmax(0,1fr)}
  .v2-action-item .btn{grid-column:2;width:100%}
}
@media(max-width:480px){
  .v2-adac-states{grid-template-columns:1fr}
  .v2-readiness-grid{grid-template-columns:1fr 1fr}
  .v2-quality-summary{grid-template-columns:1fr 1fr}
}


/* v0.28.6 — Catalogue V2 operator workflow: verify, correct, publish. */
.v2-pipeline-panel.finished{
  padding:16px 20px;
  opacity:.78;
}
.v2-pipeline-panel.finished .v2-flow{display:none}
.v2-pipeline-panel.finished .v2-main-actions{margin-top:10px}
.v2-pipeline-panel.finished #v2-run-all{background:transparent;color:#b7b2aa;border:1px solid #ffffff18;box-shadow:none}
.v2-pipeline-panel.finished #v2-pause{display:none}

.v2-now-panel{
  margin-bottom:18px;
  padding:24px;
  border-color:#ef6b4350;
  background:
    radial-gradient(circle at 88% 12%,#ef6b4315,transparent 30%),
    linear-gradient(145deg,#191c1b,#111414);
}
.v2-now-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}
.v2-now-panel h2{margin:5px 0 8px;font-size:30px}
.v2-now-panel>p{max-width:1050px;color:#a5aaa6}
.v2-now-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:18px}
.v2-now-steps article{
  min-width:0;
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  gap:10px;
  align-items:start;
  padding:16px;
  border:1px solid #ffffff10;
  background:#0f1313;
}
.v2-now-steps article.ready{border-color:#63917155;background:#101913}
.v2-now-steps article>b{color:#ef6b43;font:900 25px/.9 'Barlow Condensed','Arial Narrow',sans-serif}
.v2-now-steps article div{min-width:0}
.v2-now-steps article span{display:block;color:#767f7d;font:800 8px/1 Barlow,Arial,sans-serif;text-transform:uppercase;letter-spacing:.08em}
.v2-now-steps article strong{display:block;margin-top:6px;font-size:12px;line-height:1.25}
.v2-now-steps article strong i{font:900 24px/.85 'Barlow Condensed','Arial Narrow',sans-serif;font-style:normal;color:#ece9e2;margin-right:4px}
.v2-now-steps article small{display:block;margin-top:7px;color:#77807e;font-size:8px;line-height:1.35}
.v2-now-steps article .btn{grid-column:1/-1;width:100%;margin-top:5px}

.v2-vehicle-row{
  grid-template-columns:minmax(250px,1.15fr) auto minmax(240px,1fr) auto;
}
.v2-vehicle-row.published{border-left:3px solid #5d8d6a;background:#0c1510}
.v2-vehicle-row.published .v2-state{border-color:#5c8c6966;color:#8fbd99}
.v2-row-actions{display:flex;gap:6px;align-items:center;justify-content:flex-end}
.v2-row-actions .btn{min-height:32px;padding:7px 10px;font-size:8px;white-space:nowrap}

.v2-review-dialog{
  width:min(1180px,calc(100vw - 28px));
  max-height:calc(100vh - 28px);
  padding:0;
  border:1px solid #ffffff1a;
  background:#0d1112;
  color:#e7e6e0;
  box-shadow:0 24px 80px #000b;
}
.v2-review-dialog::backdrop{background:#020405d9;backdrop-filter:blur(5px)}
.v2-review-shell{display:flex;flex-direction:column;max-height:calc(100vh - 30px)}
.v2-review-shell>header{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
  padding:20px 22px;
  border-bottom:1px solid #ffffff0e;
  background:linear-gradient(180deg,#171b1c,#121617);
}
.v2-review-shell>header h2{margin:4px 0 3px;font-size:25px}
.v2-review-shell>header p{margin:0;color:#7e8885;font-size:9px}
.v2-dialog-close{
  appearance:none;
  width:40px;height:40px;border:1px solid #ffffff14;border-radius:50%;
  background:#171b1c;color:#ddd;font-size:23px;cursor:pointer;
}
.v2-review-layout{display:grid;grid-template-columns:330px minmax(0,1fr);gap:0;min-height:0;overflow:auto}
.v2-review-layout>aside{padding:18px;border-right:1px solid #ffffff0e;background:#0b0f10}
.v2-review-image{
  aspect-ratio:4/3;
  display:grid;
  place-items:center;
  overflow:hidden;
  border:1px solid #ffffff12;
  background:#070a0b;
  position:relative;
}
.v2-review-image img{width:100%;height:100%;object-fit:cover}
.v2-review-image>span:not(.empty){position:absolute;left:8px;bottom:8px;padding:5px 7px;background:#0a0d0ddd;color:#d7d9d5;font-size:8px;text-transform:uppercase}
.v2-review-image .empty{color:#5f6765;font:900 24px/1 'Barlow Condensed','Arial Narrow',sans-serif}
.v2-review-blockers,.v2-review-sources{margin-top:14px;padding-top:12px;border-top:1px solid #ffffff0b}
.v2-review-blockers>strong,.v2-review-sources>strong{display:block;margin-bottom:8px;font-size:9px;text-transform:uppercase;letter-spacing:.08em}
.v2-review-blockers>span{display:inline-block;margin:0 4px 4px 0;padding:5px 7px;border:1px solid #7a4d3f55;background:#21130f;color:#cf8b76;font-size:8px}
.v2-review-blockers>strong.ok,.v2-review-blockers>span.ok{color:#87b995;border-color:#4f7d5c55;background:#101b14}
.v2-review-sources{display:grid;gap:6px}
.v2-review-sources>a{display:grid;grid-template-columns:44px minmax(0,1fr);gap:4px 8px;padding:8px;border:1px solid #ffffff0d;background:#101414;color:inherit;text-decoration:none}
.v2-review-sources>a:hover{border-color:#ef6b4344}
.v2-review-sources>a b{grid-row:1/3;color:#ef7b58;font-size:8px}
.v2-review-sources>a span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:9px}
.v2-review-sources>a small{color:#68716f;font-size:7px}

.v2-review-fields{padding:20px;min-width:0}
.v2-review-help{padding:12px 13px;margin-bottom:14px;border:1px solid #5b7d6550;background:#101814}
.v2-review-help strong{display:block;color:#94c09e;font-size:10px}
.v2-review-help span{display:block;margin-top:5px;color:#85908b;font-size:9px;line-height:1.4}
.v2-form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
.v2-form-grid label,.v2-wide-field{display:grid;gap:5px}
.v2-form-grid label>span,.v2-wide-field>span{color:#737d7a;font-size:8px;text-transform:uppercase;letter-spacing:.06em}
.v2-form-grid input,.v2-wide-field input{
  width:100%;min-height:38px;padding:8px 10px;
  border:1px solid #ffffff13;background:#0c1112;color:#e6e6e1;
}
.v2-wide-field{margin-top:9px}
.v2-manual-validation{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}
.v2-manual-validation label{display:grid;grid-template-columns:auto 1fr;gap:9px;padding:11px;border:1px solid #ffffff0e;background:#101414;cursor:pointer}
.v2-manual-validation input{margin-top:2px}
.v2-manual-validation strong{display:block;font-size:9px}
.v2-manual-validation small{display:block;margin-top:3px;color:#707a77;font-size:8px;line-height:1.3}
.v2-review-shell>footer{
  display:flex;justify-content:space-between;align-items:center;gap:16px;
  padding:14px 20px;border-top:1px solid #ffffff0e;background:#111516;
}
.v2-review-shell>footer>span{color:#8c9692;font-size:9px}
.v2-review-shell>footer .actions{display:flex;gap:7px;flex-wrap:wrap}
.v2-review-shell>footer .btn{min-height:36px}

@media(max-width:1050px){
  .v2-now-steps{grid-template-columns:1fr}
  .v2-vehicle-row{grid-template-columns:1fr auto}
  .v2-row-actions{grid-column:1/-1;justify-content:flex-start}
  .v2-review-layout{grid-template-columns:280px minmax(0,1fr)}
  .v2-form-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:760px){
  .v2-now-head{flex-direction:column}
  .v2-review-dialog{width:100vw;max-height:100vh;border:0}
  .v2-review-shell{max-height:100vh}
  .v2-review-layout{grid-template-columns:1fr}
  .v2-review-layout>aside{border-right:0;border-bottom:1px solid #ffffff0e}
  .v2-review-image{max-height:260px}
  .v2-form-grid{grid-template-columns:1fr}
  .v2-manual-validation{grid-template-columns:1fr}
  .v2-review-shell>footer{align-items:flex-start;flex-direction:column}
  .v2-review-shell>footer .actions{width:100%;display:grid;grid-template-columns:1fr}
}


/* v0.28.7 — source-neutral eligibility and automatic source-photo recovery. */
.v2-auto-photo{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  margin-top:14px;
  padding:12px 14px;
  border:1px solid #6d8f7655;
  background:#0f1813;
}
.v2-auto-photo[hidden]{display:none!important}
.v2-auto-photo strong{display:block;color:#9cc4a6;font-size:10px}
.v2-auto-photo span{display:block;margin-top:4px;color:#7d8a82;font-size:8px;line-height:1.35}
.v2-auto-photo .btn{flex:0 0 auto;white-space:nowrap}
@media(max-width:760px){
  .v2-auto-photo{align-items:stretch;flex-direction:column}
  .v2-auto-photo .btn{width:100%}
}

/* v0.28.9 — a compact logged-in home with one clear primary action. */
.home-dashboard{display:flex;align-items:center;justify-content:space-between;gap:28px;margin:22px 0 24px;padding:24px 28px;border:1px solid #f56a4055;background:linear-gradient(115deg,#1b1c1b,#211814);min-height:0}
.home-dashboard h1{font-size:clamp(31px,3.4vw,48px);line-height:1;margin:7px 0 6px;white-space:normal}
.home-dashboard p{font-size:14px;line-height:1.4;margin:0;color:#c7bdb1}
.home-quick-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px;flex:0 1 600px}
.home-quick-actions .btn{min-height:42px;padding:8px 13px;font-size:11px;box-shadow:none;white-space:nowrap}
.home-progression{border:1px solid #494743;background:#171a19;margin:20px 0}
.home-progression summary{cursor:pointer;display:flex;justify-content:space-between;gap:12px;align-items:center;padding:17px 20px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;list-style:none}
.home-progression summary::-webkit-details-marker{display:none}
.home-progression summary::after{content:'⌄';color:#f56a40;font-size:20px;line-height:0;margin-left:auto}
.home-progression[open] summary::after{transform:rotate(180deg)}
.home-progression summary span{font-size:11px;color:#b7b4ab;font-weight:600;letter-spacing:0;text-transform:none}
.home-progression .progression-panel{margin:0;border:0;border-top:1px solid #494743}
.header-packs{width:42px;height:42px;color:#f56a40;border-color:#f56a4077;background:#241813}
.header-packs .header-pack-icon{display:block;width:25px;height:31px;transform:none;border:0;background:none;overflow:visible}
.header-packs.is-empty{opacity:.7}
@media(max-width:760px){
  .home-dashboard{display:block;margin:14px 0 18px;padding:18px 16px}
  .home-dashboard h1{font-size:clamp(30px,8vw,38px);margin:6px 0}
  .home-dashboard p{font-size:13px}
  .home-quick-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:17px}
  .home-quick-actions .btn{min-width:0;width:100%;min-height:42px;padding:8px 6px;font-size:10px}
  .home-quick-actions .btn:first-child{grid-column:1/-1;font-size:12px;background:#f56a40;color:#111}
  .header-packs{flex:0 0 38px;width:38px;height:38px}
  .header-packs .header-pack-icon{width:23px;height:29px}
  .account-profile{display:none!important}
  .account{gap:8px}
  .account img{width:30px;height:30px}
  .account button{font-size:11px;text-decoration:none;border:1px solid #ffffff33;padding:8px;color:#c7bdb1}
  .home-progression summary{padding:14px}
}

.catalogue-bulk{display:grid;gap:12px;margin-bottom:18px}.catalogue-bulk .actions{display:flex;gap:10px;flex-wrap:wrap}.catalogue-bulk label{display:grid;gap:8px}.catalog-reset{border-top:1px solid var(--line,rgba(255,255,255,.15));padding-top:14px}.catalog-reset summary{cursor:pointer;font-weight:700}.catalog-reset p{max-width:65ch}

.photo-choice{display:grid;gap:10px}.photo-file{display:inline-flex;align-items:center;justify-content:center;width:max-content;cursor:pointer;padding:10px 16px;border:1px solid currentColor;border-radius:10px;font-weight:700}.photo-file input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.series-card-choice{display:flex;gap:10px;align-items:center;cursor:pointer}.series-card-choice input{accent-color:#e8bf65}.admin-list+.admin-list{margin-top:16px}#series-name{max-width:330px}

/* Admin catalogue: let the form and card list follow the page scroll. */
#admin-cards .admin-form{position:static!important;top:auto!important;align-self:start}
#admin-cards .admin-items{max-height:none;overflow:visible}

#admin-boosters .admin-form{position:static!important;top:auto!important}
.series-panel{margin-top:18px}
.series-controls{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:12px 0}
.series-controls .input{flex:1 1 240px;min-width:0}
.series-candidates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:420px;overflow:auto;margin:14px 0 22px}
.series-candidate{display:flex;gap:10px;align-items:center;padding:12px;border:1px solid #494743;background:#121413;cursor:pointer}
.series-candidate:has(input:disabled){opacity:.5;cursor:default}
.series-candidate input{accent-color:#f27045;flex:0 0 auto}
.series-candidate span{display:grid;gap:3px;min-width:0}.series-candidate strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.series-candidate small{color:var(--muted)}
@media(max-width:680px){.series-candidates{grid-template-columns:1fr;max-height:none}}
#card-brand-other[hidden]{display:none!important}
#card-form select[name="brand"]{appearance:auto;min-height:54px}

/* Catalogue administration: the inventory comes first, creation remains below. */
.catalogue-layout{grid-template-columns:1fr}
.catalogue-layout>.admin-list{order:-1}
.catalogue-layout .admin-items{max-height:none}
.image-control>summary{cursor:pointer;font-weight:700;padding:8px 0}
.catalog-card-progress{font-weight:700;color:#d4d5ce}
.catalogue-editor>summary{cursor:pointer;font-weight:700;padding:16px;border:1px solid #44473f;background:#1a1c19}

#admin-card-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px}
.admin-catalogue-card{min-width:0;padding:12px;border:1px solid #44473f;background:#111310;display:flex;flex-direction:column;gap:12px}
.admin-catalogue-card>.d9-card{width:100%;margin:0}
.admin-catalogue-meta{display:grid;gap:8px}
.admin-catalogue-meta span{display:block;font-size:12px;line-height:1.5}
.admin-catalogue-card .admin-item-actions{display:flex!important;flex-wrap:wrap;gap:6px}
.admin-catalogue-card .btn{font-size:11px;padding:10px}
.admin-catalogue-card.archived{opacity:.65}
.catalogue-reports>summary{cursor:pointer;font-weight:700;padding:8px}
@media(max-width:600px){#admin-card-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.admin-catalogue-card{padding:6px}.admin-catalogue-card .btn{padding:8px;font-size:10px}}

.admin-nav{grid-template-columns:repeat(4,minmax(0,1fr))!important}
.admin-catalogue-card>.d9-card{max-width:none}
@media(max-width:600px){.admin-nav{grid-template-columns:repeat(2,minmax(0,1fr))!important}}

/* v0.33.2 — keep the diamond clear of the two-line technical description. */
.d9-card.collector-card{grid-template-rows:12% 50% 30% 8%!important}
.d9-card.collector-card .d9-diamond{transform:translate(-50%,-75%) rotate(45deg)}
.d9-card .d9-specs{
  white-space:normal;
  overflow-wrap:anywhere;
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  max-height:2.5em;
}
@media(max-width:760px){
  .d9-card.collector-card{grid-template-rows:12% 48% 32% 8%!important}
  .d9-card.collector-card .d9-diamond{transform:translate(-50%,-85%) rotate(45deg)}
  .d9-card.collector-card .d9-specs{left:5px;right:5px;bottom:5px;font-size:8px}
}

/* ==========================================================================
   v0.34 — Pit Lane cards
   One card component for collection, board, hand and booster reveals.
   Sizes use container units (--u = 1% of the card), so every variant scales
   from the same rules. Rarity: frame + stripe + tag colour; SR, UR and SS add
   a holographic foil. Ownership on the board uses the player colours.
   ========================================================================== */
@font-face{font-family:'Barlow Condensed';font-weight:700;font-style:normal;font-display:swap;src:url(fonts/barlow-condensed-latin-700-normal.woff2) format('woff2')}
@font-face{font-family:'Barlow Condensed';font-weight:800 900;font-style:normal;font-display:swap;src:url(fonts/barlow-condensed-latin-800-normal.woff2) format('woff2')}
@font-face{font-family:'Barlow Condensed';font-weight:800 900;font-style:italic;font-display:swap;src:url(fonts/barlow-condensed-latin-800-italic.woff2) format('woff2')}
@font-face{font-family:'Barlow';font-weight:400;font-style:normal;font-display:swap;src:url(fonts/barlow-latin-400-normal.woff2) format('woff2')}
@font-face{font-family:'Barlow';font-weight:500;font-style:normal;font-display:swap;src:url(fonts/barlow-latin-500-normal.woff2) format('woff2')}
@font-face{font-family:'Barlow';font-weight:800 900;font-style:normal;font-display:swap;src:url(fonts/barlow-latin-800-normal.woff2) format('woff2')}
@font-face{font-family:'Barlow';font-weight:600;font-style:normal;font-display:swap;src:url(fonts/barlow-latin-600-normal.woff2) format('woff2')}
@font-face{font-family:'Barlow';font-weight:700;font-style:normal;font-display:swap;src:url(fonts/barlow-latin-700-normal.woff2) format('woff2')}

.pl-card{
  --pl-r:#b9bec4;--pl-r2:#6b737c;--u:1cqi;
  --pl-ink:#f5f2ec;--pl-muted:#a7afb6;--pl-base:#14171b;
  --pl-frame:0 0 0 2px var(--pl-r);
  container-type:inline-size;position:relative;display:block;width:100%;aspect-ratio:5/7;
  overflow:hidden;isolation:isolate;border-radius:10px;background:var(--pl-base);color:var(--pl-ink);
  box-shadow:var(--pl-frame),0 12px 22px #000a;
  font-family:'Barlow',system-ui,sans-serif;text-align:left;line-height:1.1;user-select:none;
}
.pl-card.rarity-c{--pl-r:#b9bec4;--pl-r2:#6b737c}
.pl-card.rarity-nc{--pl-r:#7ad98b;--pl-r2:#2f7a44}
.pl-card.rarity-r{--pl-r:#69a4ff;--pl-r2:#2a5fb8}
.pl-card.rarity-sr{--pl-r:#b181ff;--pl-r2:#5b3fd1}
.pl-card.rarity-ur{--pl-r:#f2d354;--pl-r2:#a0741a}
.pl-card.rarity-ss{--pl-r:#ff665c;--pl-r2:#a01f1f}
.pl-card.rarity-sr,.pl-card.rarity-ur,.pl-card.rarity-ss{
  --pl-frame:0 0 0 2px var(--pl-r),0 0 0 3px color-mix(in srgb,var(--pl-r2) 70%,#000);
}

/* photo */
.pl-photo{position:absolute;inset:0 0 calc(100% - var(--pl-split,64%)) 0;z-index:0;overflow:hidden;
  background:radial-gradient(120% 85% at 50% 100%,color-mix(in srgb,var(--pl-r) 28%,#1d2228),#0d0f12 72%)}
.pl-photo img{width:100%;height:100%;object-fit:cover;display:block}
.pl-photo::after{content:'';position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(#0000 0%,#0000 70%,color-mix(in srgb,var(--pl-base) 80%,transparent) 100%)}
.pl-placeholder{position:absolute;inset:0;display:grid;place-items:center;font:800 italic calc(var(--u)*34)/1 'Barlow Condensed',sans-serif;
  color:color-mix(in srgb,var(--pl-r) 22%,transparent);letter-spacing:-.02em}

/* holographic foil from SR */
.pl-holo{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;mix-blend-mode:color-dodge;
  background:linear-gradient(115deg,transparent 28%,#ff9de64d 40%,#8ff7ff4d 48%,#fff38a4d 56%,transparent 68%);background-size:220% 100%;background-position:100% 0}
.pl-card.rarity-sr .pl-holo{opacity:.75}
.pl-card.rarity-ur .pl-holo{opacity:.9;background-image:linear-gradient(115deg,transparent 26%,#ffe2854d 38%,#fff6c966 47%,#ffc94d4d 56%,transparent 68%)}
.pl-card.rarity-ss .pl-holo{opacity:1;background-image:linear-gradient(115deg,transparent 22%,#ff8a8a55 34%,#ffe09a55 42%,#9df6ff55 50%,#d9a1ff55 58%,transparent 70%)}
.pl-collector.rarity-sr .pl-holo,.pl-collector.rarity-ur .pl-holo,.pl-collector.rarity-ss .pl-holo{animation:pl-foil 6s ease-in-out infinite}
@keyframes pl-foil{0%,100%{background-position:100% 0}50%{background-position:0 0}}

/* rarity line at the photo edge, fading at both sides */
.pl-stripe{position:absolute;left:0;right:0;top:var(--pl-split,64%);height:max(2px,calc(var(--u)*.7));z-index:2;transform:translateY(-50%);
  background:linear-gradient(90deg,transparent,var(--pl-r) 22%,var(--pl-r) 78%,transparent)}

/* identity: translucent black band across the top, photo still visible
   behind; model in the rarity colour, brand in white underneath */
.pl-head{position:absolute;top:0;left:0;right:0;z-index:3;padding:calc(var(--u)*3.6) calc(var(--u)*5) calc(var(--u)*3.2);
  background:#08090bb3;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);border-bottom:1px solid #ffffff14}
.pl-model{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  font:800 italic calc(var(--u)*11)/.95 'Barlow Condensed',sans-serif;text-transform:uppercase;letter-spacing:.01em;color:var(--pl-r)}
.pl-brand{display:block;margin-top:calc(var(--u)*1.2);font:700 calc(var(--u)*4.4)/1.1 'Barlow',sans-serif;letter-spacing:.22em;text-transform:uppercase;color:#f3f0ea;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* stat diamond, centred on the photo edge: four separate cardinal tiles,
   a 2x2 grid turned 45 degrees so each value sits on its own card edge */
.pl-details{position:absolute;inset:0;z-index:4;pointer-events:none}
.pl-diamond{position:absolute;left:50%;top:var(--pl-split,64%);width:calc(var(--u)*33);aspect-ratio:1;transform:translate(-50%,-50%) rotate(45deg);
  display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:calc(var(--u)*1.4)}
.pl-value{display:grid;place-items:center;min-width:0;min-height:0;background:#0b0d10;border:max(1.5px,calc(var(--u)*.7)) solid var(--pl-r);
  border-radius:calc(var(--u)*1.2);box-shadow:0 calc(var(--u)*1.5) calc(var(--u)*4) #000a}
.pl-value.north{grid-area:1/1}.pl-value.east{grid-area:1/2}.pl-value.south{grid-area:2/2}.pl-value.west{grid-area:2/1}
.pl-value b{transform:rotate(-45deg);font:800 calc(var(--u)*8.6)/1 'Barlow Condensed',sans-serif;color:#fff;font-variant-numeric:tabular-nums}
.pl-synergy-badge{position:absolute;left:50%;top:calc(var(--pl-split,64%) - var(--u)*27);transform:translateX(-50%);white-space:nowrap;
  padding:calc(var(--u)*1) calc(var(--u)*2.4);border-radius:calc(var(--u)*6);font:800 calc(var(--u)*4.6)/1 'Barlow',sans-serif;letter-spacing:.08em;
  background:#5b8fe2;color:#08111f}
.pl-card.synergy-country .pl-synergy-badge{background:#59b77b}
.pl-card.synergy-brand .pl-value b{color:#9cc2ff}
.pl-card.synergy-country .pl-value b{color:#9ee0b1}

/* emblem, flag, specs, footer */
.pl-emblem{position:absolute;left:calc(var(--u)*5);top:calc(var(--pl-split,64%) + var(--u)*5);z-index:3;width:calc(var(--u)*14);height:calc(var(--u)*14);
  border-radius:50%;background:#f3f0ea;display:grid;place-items:center;overflow:hidden;
  box-shadow:0 0 0 max(1px,calc(var(--u)*.4)) color-mix(in srgb,var(--pl-r) 55%,transparent),0 calc(var(--u)*1) calc(var(--u)*3) #0008;transition:background-color .2s ease}
.pl-emblem img{width:72%;height:72%;object-fit:contain}
/* light or white logos (measured in app.js) sit on a dark disc instead */
.pl-emblem.is-light-logo{background:#101317}
.pl-emblem.is-mixed-logo{background:#8d949c}
/* logos shipped on their own square: the disc takes that colour (set inline) */
.pl-emblem.is-filled-logo img{width:70%;height:70%}
.pl-signature{font:800 italic calc(var(--u)*6.4)/1 'Barlow Condensed',sans-serif;color:#15181c}
.pl-flag{position:absolute;right:calc(var(--u)*5);top:calc(var(--pl-split,64%) + var(--u)*6);z-index:3;font-size:calc(var(--u)*9);line-height:1}
.pl-specs{position:absolute;left:calc(var(--u)*5);right:calc(var(--u)*5);bottom:calc(var(--u)*12);z-index:3;text-align:center;
  font:600 calc(var(--u)*4.3)/1.2 'Barlow',sans-serif;color:var(--pl-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pl-foot{position:absolute;left:calc(var(--u)*5);right:calc(var(--u)*5);bottom:calc(var(--u)*4);z-index:3;display:flex;justify-content:space-between;align-items:center;gap:calc(var(--u)*2);
  font:700 calc(var(--u)*4.3)/1 'Barlow',sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--pl-muted)}
.pl-foot b{color:var(--pl-r);letter-spacing:.08em}
.pl-foot-main{display:flex;align-items:center;gap:calc(var(--u)*1.6);min-width:0}
.pl-foot-main>span:last-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pl-foot .d9-energy-icon{width:calc(var(--u)*5);height:calc(var(--u)*5);display:inline-grid;place-items:center;flex:none;font-size:calc(var(--u)*3.4)}
.pl-foot .d9-energy-icon svg{width:100%;height:100%}

/* ---- compact variants: board and hand ---- */
.pl-card.game-card{border-radius:7px}
.pl-card.game-card .pl-photo{inset:0}
.pl-card.game-card .pl-photo::after{background:linear-gradient(#0000 0%,#0000 50%,#000c 100%)}
.pl-card.game-card .pl-emblem,.pl-card.game-card .pl-specs,.pl-card.game-card .pl-foot,.pl-card.game-card .pl-brand{display:none}
.pl-card.game-card .pl-head{right:0;padding:calc(var(--u)*4) calc(var(--u)*6) calc(var(--u)*3.5)}
.pl-card.game-card .pl-model{font-size:calc(var(--u)*11.5);-webkit-line-clamp:2}
.pl-card.game-card .pl-stripe{top:auto;bottom:calc(var(--u)*5);transform:none;height:max(2px,calc(var(--u)*1))}
.pl-card.game-card .pl-diamond{top:60%;width:calc(var(--u)*42);gap:calc(var(--u)*1.8)}
.pl-card.game-card .pl-value b{font-size:calc(var(--u)*12.2)}
.pl-card.game-card .pl-value{border-width:max(1.5px,calc(var(--u)*.9))}
.pl-card.game-card .pl-flag{top:auto;bottom:calc(var(--u)*9);right:calc(var(--u)*5);font-size:calc(var(--u)*11)}
.pl-card.game-card .pl-synergy-badge{top:auto;bottom:calc(var(--u)*1.5);font-size:calc(var(--u)*6.5)}

/* board cells and hand slots are not 5:7: fill the slot and size from its smaller side */
.pl-card.pl-board,.pl-card.pl-hand{container-type:size;--u:1cqmin;width:100%;height:100%;aspect-ratio:auto}
.cell.occupied{padding:3px}
.pl-card.pl-board.owned{--own:var(--you,#ff6b3d)}
.pl-card.pl-board.enemy{--own:var(--rival,#62a7ff)}
.pl-card.pl-board.owned,.pl-card.pl-board.enemy{
  box-shadow:0 0 0 2px var(--pl-r),0 0 0 calc(2px + max(3px,var(--u)*2.4)) var(--own),0 6px 14px #000a}
.pl-card.pl-board.owned::after,.pl-card.pl-board.enemy::after{content:'';position:absolute;left:0;right:0;bottom:0;height:max(3px,calc(var(--u)*2.2));background:var(--own);z-index:5}
.placement-preview .pl-card{width:100%;height:100%;opacity:.9}

/* hand */
.pl-card.pl-hand{transition:transform .18s ease,box-shadow .18s ease}
.pl-card.pl-hand.selected{transform:translateY(-8px);box-shadow:0 0 0 2px var(--pl-r),0 0 0 5px var(--gold,#f56a40),0 16px 26px #000c}
.drag-ghost.pl-card{width:112px!important;height:128px!important}
.pl-card.synergy-brand{box-shadow:0 0 0 2px var(--pl-r),0 0 22px #5b8fe280,0 6px 14px #000a}
.pl-card.synergy-country{box-shadow:0 0 0 2px var(--pl-r),0 0 22px #59b77b80,0 6px 14px #000a}

/* collection grid and booster reveal host the collector card at its own ratio */
.collection-item .pl-card,.pack-card .pl-card{width:100%;max-width:none}
.cards-grid:has(.pl-card){grid-template-columns:repeat(auto-fill,minmax(min(200px,calc(50% - 8px)),1fr));gap:22px 16px}
@media(max-width:560px){.cards-grid:has(.pl-card){grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 10px}}

@media (hover:hover){
  .collection-item .pl-card{transition:transform .2s ease,box-shadow .2s ease}
  .collection-item .pl-card:hover{transform:translateY(-4px);box-shadow:var(--pl-frame),0 0 26px color-mix(in srgb,var(--pl-r) 35%,transparent),0 16px 28px #000c}
}
@media (prefers-reduced-motion:reduce){
  .pl-collector .pl-holo{animation:none!important}
  .pl-card,.collection-item .pl-card{transition:none!important}
}

/* ==========================================================================
   v0.35 — Pit Lane site
   Shared tokens and components for every screen, matching the Pit Lane
   cards: Barlow type, one surface colour, condensed italic headings, a
   single accent. Rules are scoped with #app / .shell so they win over the
   older per-version layers above without !important.
   ========================================================================== */
:root{
  --pl-bg:#0b0d10;--pl-surface:#13161a;--pl-surface-2:#1a1e23;--pl-raise:#20252b;
  --pl-line:#ffffff17;--pl-line-strong:#ffffff2e;--pl-text:#f3f0ea;--pl-soft:#c9c4bb;--pl-dim:#9aa3ab;
  --pl-accent:#f56a40;--pl-accent-ink:#140c08;--pl-ok:#6fcf8e;--pl-warn:#f2b84b;
  --pl-radius:14px;--pl-radius-sm:10px;
  --surface:var(--pl-surface);--surface2:var(--pl-surface-2);--line:var(--pl-line-strong);--muted:var(--pl-dim);--gold:var(--pl-accent);
}
body{background:radial-gradient(1200px 520px at 80% -10%,#f56a4026,transparent 60%),radial-gradient(900px 420px at 0% 0%,#62a7ff12,transparent 60%),var(--pl-bg);color:var(--pl-text)}

/* shell: header and footer */
.shell>.top{height:72px;border-bottom:1px solid var(--pl-line)}
.shell .brand{font:800 italic 26px/1 'Barlow Condensed','Arial Narrow',sans-serif;letter-spacing:.04em}
.shell .brand-mark{font:800 italic 14px/1 'Barlow Condensed','Arial Narrow',sans-serif;border-radius:6px;transform:skew(-8deg)}
.shell .account{font:600 13px/1 Barlow,Arial,sans-serif;color:var(--pl-dim)}
.shell .account .account-profile{color:var(--pl-text);font-weight:700;text-decoration:none}
.shell .account .account-role{font:700 10px/1 Barlow,Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;padding:4px 7px;border:1px solid var(--pl-line-strong);border-radius:999px;color:var(--pl-dim)}
.shell .account button{font:600 13px/1 Barlow,Arial,sans-serif;color:var(--pl-dim)}
.shell>footer{margin:56px 0 24px;padding-top:16px;border-top:1px solid var(--pl-line);font:700 11px/1 Barlow,Arial,sans-serif;letter-spacing:.16em;color:var(--pl-dim)}
.shell>footer{position:relative}

/* type scale */
#app h1{font:800 italic clamp(42px,5.6vw,76px)/.92 'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase;letter-spacing:.005em;margin:8px 0 14px;color:var(--pl-text)}
#app h1 em{font-style:inherit;color:var(--pl-accent)}
#app h2{font:800 italic clamp(26px,2.5vw,34px)/1 'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase;letter-spacing:.01em;margin:6px 0 10px;color:var(--pl-text)}
#app h3{font:800 italic 22px/1.05 'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase;letter-spacing:.01em;margin:4px 0 6px}
#app .eyebrow{font:700 11px/1.2 Barlow,Arial,sans-serif;letter-spacing:.2em;text-transform:uppercase;color:var(--pl-accent)}
#app p{color:var(--pl-soft);line-height:1.5}
#app .small{font-size:13px;color:var(--pl-dim)}
#app .back{display:inline-flex;align-items:center;gap:6px;margin:22px 0 6px;font:700 13px/1 Barlow,Arial,sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--pl-dim);text-decoration:none}
#app .back:hover{color:var(--pl-text)}

/* controls */
#app .btn,.pack-reveal .btn,.pack-opening-overlay .btn{
  min-height:46px;padding:0 20px;border-radius:var(--pl-radius-sm);border:1px solid var(--pl-accent);background:var(--pl-accent);color:var(--pl-accent-ink);
  font:800 italic 18px/1 'Barlow Condensed','Arial Narrow',sans-serif;letter-spacing:.03em;text-transform:uppercase;box-shadow:none;
  display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:filter .15s ease,background-color .15s ease,border-color .15s ease}
#app .btn:hover:not(:disabled){filter:brightness(1.1)}
#app .btn.secondary{background:transparent;color:var(--pl-text);border-color:color-mix(in srgb,var(--pl-accent) 70%,transparent)}
#app .btn.secondary:hover:not(:disabled){background:#f56a4018;filter:none}
#app .btn.ghost{background:transparent;color:var(--pl-soft);border-color:var(--pl-line-strong)}
#app .btn.ghost:hover:not(:disabled){border-color:var(--pl-text);color:var(--pl-text);filter:none}
#app .btn:disabled{opacity:.45}
#app .btn:focus-visible,#app .input:focus-visible,#app a:focus-visible,#app summary:focus-visible{outline:2px solid var(--pl-text);outline-offset:2px}
#app .input{min-height:46px;padding:0 14px;border-radius:var(--pl-radius-sm);border:1px solid var(--pl-line-strong);background:#0e1115;color:var(--pl-text);
  font:600 15px/1 Barlow,Arial,sans-serif;letter-spacing:.01em;text-transform:none;width:100%;max-width:none}
#app .input::placeholder{color:#7d858d}
#app .input:focus{border-color:var(--pl-accent);outline:none}
#app select.input{padding-right:34px}
#app label{display:grid;gap:7px;font:700 11px/1.2 Barlow,Arial,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--pl-dim)}
#app .pill{display:inline-flex;align-items:center;min-height:28px;padding:0 11px;border-radius:999px;border:1px solid var(--pl-line-strong);background:transparent;
  font:700 11px/1 Barlow,Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--pl-soft);white-space:nowrap}
#app .pill.deck-ready{border-color:#6fcf8e66;color:var(--pl-ok)}
#app .pill.deck-waiting{border-color:#f2b84b66;color:var(--pl-warn)}
#app .row{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap}

/* surfaces: every boxed block shares one look */
#app .panel,#app .home-dashboard,#app .play-panel,#app .home-duels,#app .pack-economy-panel,#app .weekly-duel-panel,#app .home-progression,
#app .booster-shop-hero,#app .booster-stock,#app .booster-market-card,#app .booster-market-empty,#app .profile-hero,#app .progression-panel,
#app .catalogue-intro{
  background:linear-gradient(180deg,var(--pl-surface-2),var(--pl-surface));border:1px solid var(--pl-line);border-radius:var(--pl-radius);box-shadow:0 10px 30px #0006}
#app .panel,#app .play-panel,#app .home-duels,#app .pack-economy-panel,#app .weekly-duel-panel,#app .progression-panel{padding:22px}
#app .section{margin:0 0 20px}

/* lists */
#app .list{display:grid;gap:8px}
#app .match-link,#app .profile-match{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-radius:var(--pl-radius-sm);
  border:1px solid var(--pl-line);background:var(--pl-surface-2);text-decoration:none;color:var(--pl-text);transition:border-color .15s ease}
#app .match-link:hover,#app .profile-match:hover{border-color:color-mix(in srgb,var(--pl-accent) 60%,transparent)}
#app .match-link strong,#app .profile-match strong{font:800 italic 19px/1 'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase;letter-spacing:.02em}
#app .match-link .muted{font:600 13px/1.2 Barlow,Arial,sans-serif;color:var(--pl-dim)}

/* ---------- home ---------- */
#app .home-dashboard{position:relative;overflow:hidden;display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin:22px 0 20px;padding:28px 30px}
#app .home-dashboard h1{margin:6px 0 8px}
#app .home-dashboard p{margin:0;max-width:560px}
#app .home-quick-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.home-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,1fr);gap:20px;align-items:start}
.home-main,.home-side{display:grid;gap:20px;min-width:0}
.home-main>.section,.home-side>.section,.home-side>details{margin:0}
#app .play-format{max-width:360px;margin-top:6px}
#app .play-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:16px}
#app .play-option{position:relative;display:flex;flex-direction:column;gap:6px;padding:16px;border-radius:var(--pl-radius-sm);border:1px solid var(--pl-line);background:#0f1216}
#app .play-option p{font-size:14px;margin:0 0 8px;flex:1}
#app .play-option-no{position:absolute;right:14px;top:10px;font:800 italic 30px/1 'Barlow Condensed','Arial Narrow',sans-serif;color:transparent;-webkit-text-stroke:1px #ffffff30}
#app .play-option .btn{width:100%}
#app .solo-levels{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:0}
#app .solo-levels .btn{padding:0 6px;font-size:16px}
#app .solo-levels .btn{flex-direction:column;gap:2px;height:auto;min-height:44px;padding:6px}
#app .solo-xp{display:block;font:700 11px/1 Barlow,Arial,sans-serif;letter-spacing:.04em;color:#ffd76a}
#app .duel-rules{margin-top:12px;font-size:14px;color:var(--pl-muted,#9aa3ab)}
#app .duel-rules summary{cursor:pointer;font:800 12px/1.4 Barlow,Arial,sans-serif;letter-spacing:.06em;text-transform:uppercase}
#app .duel-rules ul{margin:8px 0 0;padding-left:18px;display:grid;gap:4px}
#app #join{display:grid;gap:8px;margin:0}
#app #invite{text-transform:uppercase;letter-spacing:.2em;font-weight:700}
#app .pack-economy-panel{display:flex;flex-direction:column;align-items:stretch;gap:14px}
#app .pack-economy-panel .btn{width:100%}
#app .pack-economy-meta{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:10px;font:600 13px/1.2 Barlow,Arial,sans-serif;color:var(--pl-dim)}
#app .pack-economy-meta .deck-ready{color:var(--pl-ok)}#app .pack-economy-meta .deck-waiting{color:var(--pl-warn)}
#app .weekly-duel-panel{border-color:#62a7ff40;background:linear-gradient(180deg,#16202c,var(--pl-surface))}
#app .weekly-duel-panel .eyebrow{color:#8dbdff}
#app .home-progression{padding:0;overflow:hidden}
#app .home-progression>summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:18px 22px;cursor:pointer;list-style:none;
  font:800 italic 22px/1 'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase}
#app .home-progression>summary::-webkit-details-marker{display:none}
#app .home-progression>summary span{font:700 12px/1 Barlow,Arial,sans-serif;letter-spacing:.08em;color:var(--pl-dim);text-transform:none}
#app .home-progression>summary::after{content:'+';font:700 22px/1 Barlow,Arial,sans-serif;color:var(--pl-accent)}
#app .home-progression[open]>summary::after{content:'−'}
#app .home-progression .progression-panel{border:0;border-top:1px solid var(--pl-line);border-radius:0;box-shadow:none;margin:0;background:transparent}
#app .rules{padding:20px 22px;border:1px dashed var(--pl-line-strong);border-radius:var(--pl-radius)}
#app .rule-steps{display:grid;grid-template-columns:1fr;gap:10px}
#app .rule-steps p{margin:0;padding:10px 0 0;border-top:1px solid var(--pl-line);font-size:14px}
#app .rule-steps b{display:inline;margin:0 8px 0 0;font:800 italic 20px/1 'Barlow Condensed','Arial Narrow',sans-serif;color:var(--pl-accent)}

/* progression (home + profile) */
#app .progression-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
#app .progression-bars{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:14px 0}
#app .progression-bars>div{padding:12px 14px;border:1px solid var(--pl-line);border-radius:var(--pl-radius-sm);background:#0f1216}
#app .progression-bars span{display:flex;justify-content:space-between;gap:8px;margin-bottom:8px;font:700 12px/1 Barlow,Arial,sans-serif;letter-spacing:.06em;text-transform:uppercase}
#app .progression-bars small{color:var(--pl-dim);font-weight:600;text-transform:none;letter-spacing:0}
#app .progression-bars i{display:block;height:6px;border-radius:99px;background:#ffffff14;overflow:hidden}
#app .progression-bars i b{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--pl-accent),#ffb36b)}
#app .daily-missions-head{display:flex;justify-content:space-between;font:700 11px/1 Barlow,Arial,sans-serif;letter-spacing:.16em;color:var(--pl-dim);margin:6px 0 8px}
#app .daily-missions{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px}
#app .daily-missions article{display:flex;gap:10px;align-items:center;padding:10px 12px;border:1px solid var(--pl-line);border-radius:var(--pl-radius-sm);background:#0f1216}
#app .daily-missions article.complete{border-color:#6fcf8e55;background:#6fcf8e0d}
#app .daily-missions strong{display:block;font:700 13px/1.2 Barlow,Arial,sans-serif}
#app .daily-missions small{display:block;font:500 12px/1.3 Barlow,Arial,sans-serif;color:var(--pl-dim)}
#app .mission-check{flex:none;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;border:1px solid var(--pl-line-strong);font:700 11px/1 Barlow,Arial,sans-serif;color:var(--pl-soft)}
#app .daily-missions article.complete .mission-check{border-color:var(--pl-ok);color:var(--pl-ok)}

/* ---------- collection ---------- */
#app .catalogue-intro{padding:14px 18px;margin:0 0 14px}
#app .catalogue-intro p{margin:0}
#app .catalogue-toolbar{display:grid;grid-template-columns:minmax(0,1.6fr) repeat(3,minmax(0,1fr)) auto;gap:10px;align-items:center;margin:0 0 20px;
  position:sticky;top:0;z-index:5;padding:10px 0;background:linear-gradient(var(--pl-bg) 70%,transparent)}

/* ---------- boosters ---------- */
#app .booster-shop-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:30px;margin:10px 0 24px}
#app .booster-shop-kpi{display:grid;place-items:center;min-width:170px;padding:22px;border-radius:var(--pl-radius);border:1px solid #f56a4066;background:#f56a4012}
#app .booster-shop-kpi strong{font:800 italic 64px/1 'Barlow Condensed','Arial Narrow',sans-serif;color:var(--pl-accent)}
#app .booster-shop-kpi span{font:700 11px/1.2 Barlow,Arial,sans-serif;letter-spacing:.16em;text-transform:uppercase;color:var(--pl-dim);text-align:center}
#app .booster-inventory-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
#app .booster-stock{display:grid;grid-template-columns:minmax(0,120px) minmax(0,1fr);gap:16px;align-items:center;padding:16px}
#app .booster-stock.empty{opacity:.62}
#app .booster-stock-count{font:800 italic 30px/1 'Barlow Condensed','Arial Narrow',sans-serif;color:var(--pl-text)}
#app .booster-stock-copy p{font-size:13px;margin:6px 0 12px}
#app .booster-stock-copy .btn{width:100%}
#app .booster-market-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
#app .booster-market-card{display:grid;grid-template-columns:110px minmax(0,1fr);gap:16px;padding:16px;align-items:center}
#app .booster-market-meta{display:flex;justify-content:space-between;gap:8px;margin:8px 0 10px;font:700 12px/1 Barlow,Arial,sans-serif;letter-spacing:.06em;color:var(--pl-dim);text-transform:uppercase}
#app .booster-market-meta strong{color:var(--pl-warn)}
#app .booster-market-note{font-size:14px;margin:0 0 14px}

/* ---------- profile ---------- */
#app .profile-hero{display:flex;align-items:center;gap:20px;padding:24px 26px;margin:10px 0 14px}
#app .profile-hero h1{margin:4px 0 2px}
#app .profile-hero p{margin:0}
#app .profile-hero .profile-role{margin-left:auto}
#app .profile-avatar{flex:none;width:76px;height:76px;border-radius:50%;overflow:hidden;display:grid;place-items:center;border:2px solid var(--pl-accent);background:#0f1216;
  font:800 italic 26px/1 'Barlow Condensed','Arial Narrow',sans-serif;color:var(--pl-accent)}
#app .profile-avatar img{width:100%;height:100%;object-fit:cover}
#app .profile-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0 0 20px}
#app .profile-kpis article{padding:16px 18px;border:1px solid var(--pl-line);border-radius:var(--pl-radius);background:linear-gradient(180deg,var(--pl-surface-2),var(--pl-surface))}
#app .profile-kpis span{display:block;font:700 11px/1 Barlow,Arial,sans-serif;letter-spacing:.16em;text-transform:uppercase;color:var(--pl-dim)}
#app .profile-kpis strong{display:block;margin:8px 0 4px;font:800 italic 44px/1 'Barlow Condensed','Arial Narrow',sans-serif;color:var(--pl-text)}
#app .profile-kpis small{font:600 12px/1.3 Barlow,Arial,sans-serif;color:var(--pl-dim)}
#app .profile-layout{display:grid;grid-template-columns:minmax(260px,.8fr) minmax(0,2fr);gap:20px;align-items:start;margin:20px 0}
#app .profile-form{display:grid;gap:14px;margin-top:10px}
#app .deck-toolbar{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(3,minmax(0,1fr));gap:8px;margin:12px 0 10px}
#app .deck-legality{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
#app .deck-legality span{padding:5px 10px;border-radius:999px;border:1px solid var(--pl-line-strong);font:700 11px/1 Barlow,Arial,sans-serif;letter-spacing:.08em;text-transform:uppercase}
#app .deck-legality .ok{border-color:#6fcf8e66;color:var(--pl-ok)}#app .deck-legality .no{border-color:#ff665c55;color:#ff8a80}
#app .deck-picker{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px;max-height:520px;overflow:auto;padding-right:4px}
#app .deck-pick{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--pl-radius-sm);border:1px solid var(--pl-line);background:#0f1216;min-height:60px}
#app .deck-pick.selected{border-color:color-mix(in srgb,var(--pl-accent) 65%,transparent);background:#f56a400f}
#app .deck-pick-flag{font-size:22px;line-height:1}
#app .deck-pick-copy{flex:1;min-width:0}
#app .deck-pick-copy strong{display:block;font:700 14px/1.2 Barlow,Arial,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#app .deck-pick-copy small{display:block;margin-top:3px;font:500 12px/1.2 Barlow,Arial,sans-serif;color:var(--pl-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#app .deck-stepper{display:flex;align-items:center;gap:2px;border:1px solid var(--pl-line-strong);border-radius:999px;padding:2px}
#app .deck-stepper button{width:32px;height:32px;border-radius:50%;border:0;background:transparent;color:var(--pl-text);font:700 18px/1 Barlow,Arial,sans-serif}
#app .deck-stepper button:hover:not(:disabled){background:#ffffff14}
#app .deck-stepper b{min-width:18px;text-align:center;font:800 italic 20px/1 'Barlow Condensed','Arial Narrow',sans-serif}
#app .garage-owned-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(200px,calc(50% - 8px)),1fr));gap:22px 16px;margin-top:14px}
#app .garage-source{display:block;margin-top:8px;font:700 11px/1 Barlow,Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--pl-dim)}

/* ---------- responsive ---------- */
@media(max-width:1020px){
  .home-grid{grid-template-columns:1fr}
  #app .play-options{grid-template-columns:1fr}
  #app .booster-inventory-grid{grid-template-columns:1fr}
  #app .profile-layout{grid-template-columns:1fr}
  #app .catalogue-toolbar{grid-template-columns:1fr 1fr}
  #app .catalogue-toolbar .catalogue-search{grid-column:1/-1}
}
@media(max-width:640px){
  .shell>.top{height:60px}
  .shell .brand{font-size:22px}
  #app .home-dashboard{flex-direction:column;align-items:stretch;padding:20px 18px 24px}
  #app .home-quick-actions{justify-content:stretch}
  #app .home-quick-actions .btn{flex:1}
  #app .panel,#app .play-panel,#app .home-duels,#app .pack-economy-panel,#app .weekly-duel-panel,#app .progression-panel{padding:18px 16px}
  #app .progression-bars{grid-template-columns:1fr}
  #app .booster-shop-hero{flex-direction:column;align-items:stretch;padding:22px 18px}
  #app .booster-stock,#app .booster-market-card{grid-template-columns:96px minmax(0,1fr)}
  #app .profile-hero{flex-wrap:wrap;padding:20px 18px}
  #app .profile-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  #app .deck-toolbar{grid-template-columns:1fr 1fr}
  #app .deck-toolbar #deck-search{grid-column:1/-1}
  #app .deck-picker{grid-template-columns:1fr;max-height:none}
}
#app .home-main>*,#app .home-side>*{margin:0}
#app .booster-shop-kpi{box-shadow:none}
#app .booster-shop-hero h1{font-size:clamp(46px,6.4vw,92px)}
#app .home-quick-actions{flex:0 0 auto}

/* ---------- duel (layout unchanged, Pit Lane surfaces) ---------- */
body.match-mode #app h3{font-size:18px;margin:2px 0}
body.match-mode #app .board-panel,body.match-mode #app .race-panel,body.match-mode #app .hand-panel{
  background:linear-gradient(180deg,var(--pl-surface-2),var(--pl-surface));border:1px solid var(--pl-line);border-radius:var(--pl-radius);box-shadow:0 10px 30px #0006}
body.match-mode #app .board{background:transparent}
body.match-mode #app .cell.empty{border:1px dashed #ffffff26;background:#ffffff05;border-radius:8px;color:#ffffff40}
body.match-mode #app .cell.empty.available,body.match-mode #app .cell.empty.drop-ready:hover{border-color:var(--pl-accent);background:#f56a4012}
body.match-mode #app .match-rule-btn{border:1px solid var(--pl-line-strong);border-radius:var(--pl-radius-sm);background:transparent;color:var(--pl-text);
  font:800 italic 16px/1 'Barlow Condensed','Arial Narrow',sans-serif;letter-spacing:.04em;text-transform:uppercase}
body.match-mode #app .turn-light{border-radius:var(--pl-radius-sm);font:800 italic 16px/1 'Barlow Condensed','Arial Narrow',sans-serif;letter-spacing:.04em;box-shadow:none}
body.match-mode #app .match-context strong{font:800 italic 26px/1 'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase}
body.match-mode #app .race-panel>*{border-color:var(--pl-line)}
body.match-mode{--board-max:calc(100dvh - var(--hand-h) - 196px)}
body.match-mode #app .board{max-width:min(560px,var(--board-max));max-height:var(--board-max)}
@media(max-width:1020px){
  body.match-mode #app .hand-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;overflow:visible}
  body.match-mode #app .hand-grid .hand-card,body.match-mode #app .hand-grid .hand-slot-empty{height:auto;min-height:0;aspect-ratio:5/7}
  body.match-mode #app .hand-grid .pl-card.pl-hand{height:100%}
  body.match-mode #app .pl-card.pl-hand .pl-model{font-size:calc(var(--u)*13);-webkit-line-clamp:2}
  body.match-mode #app .pl-card.pl-hand .pl-diamond{width:calc(var(--u)*61);top:62%}
  body.match-mode #app .pl-card.pl-hand .pl-value b{font-size:calc(var(--u)*17)}
  body.match-mode #app .pl-card.pl-hand .pl-flag,body.match-mode #app .pl-card.pl-hand .pl-stripe{display:none}
  body.match-mode #app .pl-card.pl-hand .pl-head{padding:calc(var(--u)*5) calc(var(--u)*7) calc(var(--u)*4)}
}
#app .btn.danger{background:transparent;color:#ff8a80;border-color:#ff665c80}
#app .btn.danger:hover:not(:disabled){background:#ff665c1a;color:#ffb3ab;filter:none}
/* admin keeps dense tools: smaller buttons, actions on one wrapping row */
#app .admin-item-actions,#app .admin-player-actions{display:flex;flex-wrap:wrap;gap:6px}
#app [class*="admin"] .btn{min-height:38px;padding:0 12px;font-size:15px}

/* booster reveal: five Pit Lane cards on one row, scroll sideways on phones */
.pack-reveal .pack-cards{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;width:100%;margin:18px 0;overflow:visible}
.pack-reveal .pack-card{flex:1 1 auto!important;width:auto;min-width:0;max-width:none}
.pack-reveal h2,.pack-opening-overlay h2{font:800 italic clamp(30px,4vw,48px)/.95 'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase}
.pack-reveal .eyebrow,.pack-opening-overlay .eyebrow{font:700 11px/1.2 Barlow,Arial,sans-serif;letter-spacing:.2em;text-transform:uppercase;color:var(--pl-accent)}
.pack-reveal .pack-count-badge{border-radius:999px;border-color:#f56a4080;background:#f56a401a}
@media(max-width:900px){
  .pack-reveal .pack-cards{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:6px}
  .pack-reveal .pack-cards{flex-direction:row;flex-wrap:nowrap}
  .pack-reveal .pack-card{flex:0 0 min(62vw,240px)!important;width:min(62vw,240px);scroll-snap-align:center}
}

/* rules dialog */
.rules-card{border-radius:var(--pl-radius);border-color:var(--pl-line)!important;background:linear-gradient(180deg,var(--pl-surface-2),var(--pl-surface))!important}
.rules-grid article{border-radius:var(--pl-radius-sm);border-left-color:var(--pl-accent);background:#0f1216}
.rules-grid b{font-style:italic}
.pack-reveal .pack-sheet{max-width:calc(100vw - 16px);min-width:0}
.pack-reveal .pack-stage,.pack-reveal .pack-cards{min-width:0;max-width:100%}
.pack-reveal .pack-sheet>*{min-width:0}
#app input[type=file].input{height:auto;padding:10px 12px;line-height:1.3}

/* flags: bundled 4:3 SVGs with a thin edge so white flags stay visible */
.flag-icon{display:inline-block;width:1.34em;height:1em;vertical-align:-.12em;border-radius:2px;object-fit:cover;
  box-shadow:0 0 0 1px #ffffff2e,0 1px 3px #0009}
.flag-emoji{display:inline-block;line-height:1}
.pl-flag{display:grid;place-items:center}
.pl-flag .flag-icon{width:calc(var(--u)*11);height:calc(var(--u)*8.25);border-radius:calc(var(--u)*1)}
.pl-card.game-card .pl-flag .flag-icon{width:calc(var(--u)*12);height:calc(var(--u)*9)}
#app .deck-pick-flag .flag-icon{width:26px;height:19.5px}
/* v0.37 series auto + missing logos */
.series-auto{border:1px solid var(--line,#2a2f35);border-radius:12px;padding:14px;margin:12px 0 18px}
.series-auto .rarity-grid{margin:10px 0}
.series-panel .check,.series-auto .check{display:flex;gap:8px;align-items:center;margin:8px 0;font-size:14px}
/* v0.38 card stages + edit dialog */
.admin-catalogue-card.stage-draft{border-color:#6b7076}
.admin-catalogue-card.stage-ready{border-color:#e8b62c;box-shadow:inset 0 0 0 1px #e8b62c55}
.admin-catalogue-card.stage-active{border-color:#3fbf6a;box-shadow:inset 0 0 0 1px #3fbf6a55}
.stage-badge{align-self:flex-start;font:800 10px/1 var(--font-display,inherit);letter-spacing:.08em;text-transform:uppercase;padding:4px 8px;border-radius:99px}
.stage-badge.stage-draft{background:#6b707633;color:#c3c7cc}
.stage-badge.stage-ready{background:#e8b62c26;color:#f1c54a}
.stage-badge.stage-active{background:#3fbf6a26;color:#5fd98a}
.stage-legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.stage-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:-4px}
.stage-dot.stage-draft{background:#6b7076}.stage-dot.stage-ready{background:#e8b62c}.stage-dot.stage-active{background:#3fbf6a}
.admin-catalogue-card .btn.ready-card{background:#e8b62c!important;color:#111!important;border-color:#e8b62c!important}
.admin-catalogue-card .ready-card:disabled{opacity:.45;cursor:not-allowed}
.card-dialog{width:min(920px,calc(100vw - 24px));max-height:calc(100dvh - 24px);padding:0;border:0;background:transparent;color:inherit;overflow:auto}
.card-dialog::backdrop{background:#000b;backdrop-filter:blur(4px)}
.card-dialog .admin-form{position:static!important;margin:0}
.card-dialog .admin-form>.row{position:sticky;top:0;z-index:2;background:inherit}
#card-new{margin-left:auto}
/* v0.39 brand catalogue */
.admin-nav{grid-template-columns:repeat(5,minmax(0,1fr))!important}
@media(max-width:760px){.admin-nav{grid-template-columns:none!important}}
.brands-list{display:grid;gap:8px}
.brand-row{display:grid;grid-template-columns:64px minmax(120px,.8fr) minmax(130px,.7fr) minmax(0,1.3fr) minmax(0,.9fr) auto;gap:10px;align-items:center;padding:10px;border-radius:12px;background:#ffffff08;border:1px solid transparent}
.brand-row.is-missing{border-color:#e8b62c66}
.brand-row .input{width:100%;max-width:none;text-transform:none;letter-spacing:0}
.brand-row input[type=file]{min-width:0;font-size:12px}
.brand-logo-preview{width:56px;height:56px;border-radius:50%;background:#f3f0ea;display:grid;place-items:center;overflow:hidden}
.brand-logo-preview img{width:78%;height:78%;object-fit:contain}
.brand-logo-preview b{font-size:10px;color:#6b7076;text-align:center}
.brand-id{display:grid;gap:2px;min-width:0}.brand-id small{color:var(--muted,#9aa0a6)}
.brand-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:900px){.brand-row{grid-template-columns:56px minmax(0,1fr)}.brand-row>.input,.brand-row>input[type=file],.brand-actions{grid-column:1/-1}.brand-actions{justify-content:flex-start}}
/* v0.41 collection album */
.series-tabs{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;margin:8px 0 18px;padding-bottom:2px}
.series-tab{flex:0 0 auto;display:grid;gap:2px;text-align:left;padding:10px 14px;border-radius:12px;border:1px solid var(--line);background:#ffffff08;color:inherit}
.series-tab small{color:var(--muted);font-size:11px}
.series-tab.active{border-color:var(--gold);background:color-mix(in srgb,var(--gold) 14%,transparent)}
.album-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}
.album-head h2{margin:4px 0 0}
.album-progress{display:grid;gap:6px;min-width:180px;text-align:right}
.album-progress strong{font:900 34px/1 'Barlow Condensed','Arial Narrow',sans-serif}
.album-progress small{font-size:18px;color:var(--muted)}
.album-meter{height:6px;border-radius:9px;background:#ffffff14;overflow:hidden}.album-meter i{display:block;height:100%;background:var(--gold)}
.album-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:16px 0 20px}
.album-toolbar .input{width:auto!important;max-width:240px!important;text-transform:none;letter-spacing:0}
.album-slot{position:relative;min-width:0}
.album-num{position:absolute;left:8px;bottom:-20px;font-size:11px;color:var(--muted);letter-spacing:.06em}
.album-count{position:absolute;top:-8px;right:-6px;z-index:3;background:var(--gold);color:#111;font-weight:900;font-size:12px;padding:3px 8px;border-radius:99px;box-shadow:0 3px 8px #0008}
.card-back{aspect-ratio:63/88;width:100%;border-radius:12px;border:2px solid #3a3f45;position:relative;display:grid;place-items:center;overflow:hidden;
  background:repeating-linear-gradient(135deg,#ffffff06 0 10px,transparent 10px 20px),radial-gradient(circle at 50% 40%,#2a2f36,#121417 75%);box-shadow:inset 0 0 0 6px #0b0d0f,inset 0 0 0 7px #ffffff14}
.card-back-mark{font:italic 900 clamp(38px,7vw,64px)/1 'Barlow Condensed','Arial Narrow',sans-serif;color:#ffffff1f;letter-spacing:-.04em}
.card-back-brand{position:absolute;top:14%;font:800 10px Barlow,Arial,sans-serif;letter-spacing:.35em;color:#ffffff40}
.card-back-number{position:absolute;bottom:9%;font:700 12px Barlow,Arial,sans-serif;color:#ffffff73;letter-spacing:.08em}
.cards-grid.album-grid{row-gap:34px!important}
/* v0.41 ready counter by rarity */
.stage-rarity{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 10px}
.stage-rarity span{font-size:12px;padding:5px 9px;border-radius:99px;background:#ffffff0d;border:1px solid #ffffff1a}
.stage-rarity span.done{border-color:#3fbf6a;color:#5fd98a}
/* v0.42 model name: slightly smaller, one line, shrinks with long names
   (size in card units = band width / (0.5 x letters), capped at the base size) */
.pl-model{display:block;white-space:nowrap;text-overflow:ellipsis;-webkit-line-clamp:unset;font-size:calc(var(--u)*min(10,180/var(--name-len,10)))}
.pl-card.game-card .pl-model{-webkit-line-clamp:unset;font-size:calc(var(--u)*min(10.5,176/var(--name-len,10)))}
body.match-mode #app .pl-card.pl-hand .pl-model{-webkit-line-clamp:unset;font-size:calc(var(--u)*min(12,172/var(--name-len,10)))}
#app .home-progression .progression-panel{border-top:0;padding:22px}
/* v0.42 admin catalogue filters + delete */
.admin-catalogue-toolbar{grid-template-columns:repeat(4,minmax(0,1fr)) auto!important}.admin-catalogue-toolbar #admin-card-search{grid-column:1/-1}#admin-card-sort-dir{min-width:46px;padding:0 14px}
@media(max-width:760px){.admin-catalogue-toolbar{grid-template-columns:1fr 1fr!important}.admin-catalogue-toolbar #admin-card-search{grid-column:1/-1}}
.admin-catalogue-card .btn.danger{background:#c8372d!important;border-color:#c8372d!important;color:#fff!important}
.stage-rarity strong{font-size:12px;align-self:center;margin-right:4px}

/* v0.43 collector cards: photo/info line raised from 64% to 52% so 16:9 photos lose less of their sides */
.pl-card.pl-collector{--pl-split:52%}
/* v0.44 the photo line runs through the middle of the top stat tile:
   top tile centre measured ~12.2u above the diamond centre */
.pl-card.pl-collector .pl-diamond{top:calc(var(--pl-split) + var(--u)*12.2)}
.pl-card.pl-collector .pl-synergy-badge{top:calc(var(--pl-split) - var(--u)*16)}
/* model name: smaller base, shrinks with length, then JS trims any residual overflow (--name-fit) */
.pl-model{font-size:calc(var(--u)*min(8.8,170/var(--name-len,10))*var(--name-fit,1))}
.pl-card.game-card .pl-model{font-size:calc(var(--u)*min(9.6,166/var(--name-len,10))*var(--name-fit,1))}
body.match-mode #app .pl-card.pl-hand .pl-model{font-size:calc(var(--u)*min(11,162/var(--name-len,10))*var(--name-fit,1))}
.admin-catalogue-card .btn.ready-card.is-incomplete{opacity:.5}
/* v0.46 update notice */
#update-toast{position:fixed;z-index:1400;left:50%;bottom:calc(16px + env(safe-area-inset-bottom));transform:translateX(-50%);display:flex;align-items:center;gap:10px;
  max-width:calc(100vw - 24px);padding:10px 10px 10px 16px;border-radius:14px;background:#15181b;border:1px solid #f56a40;color:#f3f0ea;box-shadow:0 12px 34px #000b;font:600 14px Barlow,Arial,sans-serif}
#update-toast[hidden]{display:none}
#update-toast-apply{border:0;border-radius:10px;padding:9px 14px;background:#f56a40;color:#111;font:800 13px Barlow,Arial,sans-serif;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}
#update-toast-later{border:0;background:none;color:#9aa3ab;font-size:16px;padding:6px}
/* v0.48 boosters + series CSV */
.booster-summary{display:block;font-size:12px;color:var(--pl-soft,#c9c4bb);margin-top:2px}
.booster-exclude{display:flex;gap:4px;align-items:center;font-size:11px;margin-top:4px;text-transform:none;letter-spacing:0}
#booster-form.is-editing{outline:2px solid #f56a40;outline-offset:2px}
.series-item{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}
.series-item>div:first-child{display:grid;gap:2px}
.series-import{cursor:pointer}
/* v0.48.1 home actions on phones / PWA: 2 columns, the main action full width */
@media(max-width:760px){
  #app .home-quick-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%}
  #app .home-quick-actions .btn{flex:none;min-width:0;width:100%;white-space:normal;line-height:1.1;text-align:center}
  #app .home-quick-actions .btn:first-child:nth-last-child(odd){grid-column:1/-1}
}
/* v0.49 shop: one heading per series, one colour per booster tier */
.booster-market-series{grid-column:1/-1;margin:14px 0 0;font:800 italic 20px/1 'Barlow Condensed',sans-serif;text-transform:uppercase;letter-spacing:.02em;color:var(--pl-text,#f3f0ea)}
.booster-market-series:first-child{margin-top:0}
.booster-art--tier-basic{--pack:#7f9aa8;--pack2:#24333c}
.booster-art--tier-premium{--pack:#c9a24a;--pack2:#3d2f12}
.booster-art--tier-no_common{--pack:#a87fd1;--pack2:#2f2242}
/* v0.50 tokens */
.header-tokens{display:inline-flex;align-items:center;gap:4px;min-height:30px;padding:0 10px;border-radius:999px;border:1px solid #f5c04a66;color:#f5c04a;font:800 13px/1 Barlow,Arial,sans-serif;text-decoration:none;white-space:nowrap}
.token-pill{color:#f5c04a!important;border-color:#f5c04a66!important}
/* v0.51 persistent navigation under the header */
.main-nav{position:sticky;top:0;z-index:30;display:flex;gap:4px;margin:0 -18px;padding:8px 18px;background:#0b0c0de6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--pl-line,#ffffff17);overflow-x:auto;scrollbar-width:none}
.main-nav[hidden]{display:none}
.main-nav::-webkit-scrollbar{display:none}
.main-nav a{flex:0 0 auto;padding:9px 14px;border-radius:999px;text-decoration:none;color:var(--pl-soft,#c9c4bb);font:800 13px/1 Barlow,Arial,sans-serif;letter-spacing:.06em;text-transform:uppercase}
.main-nav a:hover{color:#f3f0ea;background:#ffffff0d}
.main-nav a.active{color:#111;background:#f56a40}
body.match-mode .main-nav{display:none}
@media(max-width:760px){.main-nav{margin:0 -12px;padding:6px 12px;gap:2px;justify-content:space-between}.main-nav a{padding:9px 10px;font-size:12px;letter-spacing:.03em}}
#app .admin-nav{top:56px!important}
@media(max-width:760px){#app .admin-nav{top:50px!important}}
/* v0.52 admin rules page */
.rules-page h3{margin:22px 0 8px;font:800 italic 20px/1 'Barlow Condensed',sans-serif;text-transform:uppercase}
.rules-page ul{margin:0;padding-left:18px;display:grid;gap:6px;color:var(--pl-soft,#c9c4bb);line-height:1.5}
.rules-page b{color:var(--pl-text,#f3f0ea)}
@media(max-width:1050px){#app .admin-nav{grid-template-columns:repeat(3,minmax(0,1fr))!important}}
@media(min-width:1051px){#app .admin-nav{grid-template-columns:repeat(6,minmax(0,1fr))!important}}
/* v0.52.1 pack titles fit the pack width (long names like RAVITAILLEMENT) */
.booster-art{container-type:inline-size}
.booster-art .booster-art-title{font-size:min(20px,calc(165cqi / var(--len,8)))!important;max-width:100%;white-space:normal;overflow-wrap:normal;letter-spacing:.02em;line-height:1}
.booster-art .booster-art-sub{max-width:100%;overflow-wrap:anywhere;white-space:normal}
#app .home-quick-actions:empty{display:none}
@media(max-width:760px){#app .home-quick-actions .btn:only-child{grid-column:1/-1}}
/* v0.53 card-by-card booster reveal */
.pack-card{perspective:1200px;cursor:pointer}
.pack-flip{position:relative;transform-style:preserve-3d;transition:transform .55s cubic-bezier(.2,.7,.2,1)}
.pack-card.is-hidden .pack-flip{transform:rotateY(180deg)}
.pack-face{backface-visibility:hidden;-webkit-backface-visibility:hidden}
.pack-back{position:absolute;inset:0;transform:rotateY(180deg)}
.pack-back .card-back{height:100%;aspect-ratio:auto;border-color:#f56a40aa;box-shadow:0 18px 28px #0009,inset 0 0 0 6px #0b0d0f,inset 0 0 0 7px #f56a4033}
.pack-card.is-hidden:hover .pack-back .card-back{border-color:#f56a40}
.pack-card.is-revealed{cursor:default}
.pack-card.is-rare.is-revealed .pack-front{animation:pack-rare-glow 1.4s ease-out 1}
@keyframes pack-rare-glow{0%{filter:drop-shadow(0 0 0 #ffd36a)}35%{filter:drop-shadow(0 0 28px #ffd36a)}100%{filter:drop-shadow(0 0 0 #ffd36a)}}
@media(prefers-reduced-motion:reduce){.pack-flip{transition:none}.pack-card.is-rare.is-revealed .pack-front{animation:none}}
.pack-cards{justify-content:safe center!important}
/* v0.54 series mark, bottom right of collector cards */
.pl-card.pl-collector .pl-specs{bottom:calc(var(--u)*15.5)}
.pl-card.pl-collector .pl-foot{bottom:calc(var(--u)*7.5)}
.pl-set{position:absolute;right:calc(var(--u)*5);bottom:calc(var(--u)*2.6);z-index:3;font:700 calc(var(--u)*3.3)/1 Barlow,Arial,sans-serif;letter-spacing:.08em;color:#f3f0ea99;white-space:nowrap}
.pl-card.game-card .pl-set{display:none}
/* v0.55 duel cards: brand logo bottom left, flag bottom right (board and hand) */
.pl-card.game-card .pl-emblem{display:grid;top:auto;left:calc(var(--u)*5);bottom:calc(var(--u)*8);width:calc(var(--u)*13);height:calc(var(--u)*13);box-shadow:0 1px 4px #0009}
.pl-card.game-card .pl-emblem .pl-signature{font-size:calc(var(--u)*5)}
body.match-mode #app .pl-card.pl-hand .pl-flag{display:block;top:auto;bottom:calc(var(--u)*5);right:calc(var(--u)*5)}
body.match-mode #app .pl-card.pl-hand .pl-flag .flag-icon{width:calc(var(--u)*22);height:calc(var(--u)*16)}
body.match-mode #app .pl-card.pl-hand .pl-emblem{bottom:calc(var(--u)*4);left:calc(var(--u)*4);width:calc(var(--u)*22);height:calc(var(--u)*22)}
/* v0.55 phone duel: board sized so the hand always fits under it */
@media(max-width:900px){
  body.match-mode{--hand-card:calc((min(100vw,540px) - 28px - 24px) / 5);--hand-panel:calc(var(--hand-card) * 1.4 + 58px)}
  body.match-mode #app .board{width:min(100%,calc(100dvh - var(--hand-panel) - 272px - env(safe-area-inset-top) - env(safe-area-inset-bottom)))!important;max-width:none!important;max-height:none!important;margin-inline:auto}
}
/* v0.57 mystery pick (pioche mystère) */
.wonder-feed{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(300px,360px);gap:14px;overflow-x:auto;padding:4px 2px 12px;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}
.wonder-item{scroll-snap-align:start;display:grid;gap:10px;padding:14px;border:1px solid #2b3036;border-radius:14px;background:#14171b}
.wonder-item.is-picked{opacity:.62}
.wonder-item-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.wonder-item-head strong{font-size:15px;color:#f5f2ec}
.wonder-item-head span{font-size:12px;color:#a7afb6;text-align:right}
.wonder-cards{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px}
.wonder-mini{min-width:0;pointer-events:none}
.wonder-mini .pl-card{width:100%}
.wonder-mini.is-mine{outline:2px solid #f56a40;outline-offset:2px;border-radius:6px}
.wonder-item .btn{width:100%}
.wonder-done{font-size:13px;color:#a7afb6;text-align:center;padding:9px 0}
.wonder-choices .pack-front:empty{aspect-ratio:5/7}
.wonder-choices .pack-card.is-hidden:hover .pack-flip{transform:rotateY(180deg) translateY(-6px)}
.wonder-reveal.is-picking .pack-card.is-hidden{cursor:progress}
.wonder-choices .pack-card.is-won .pack-front{filter:drop-shadow(0 0 18px #f56a40aa)}
.pack-reveal .wonder-choices .pack-card.is-other.is-revealed{opacity:.45!important;transform:scale(.94);transition:opacity .4s,transform .4s}
@media(max-width:760px){.wonder-feed{grid-auto-columns:86%}}
@media(max-width:900px){
  .pack-reveal .wonder-choices{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;overflow:visible;scroll-snap-type:none}
  .pack-reveal .wonder-choices .pack-card{grid-column:span 2;width:auto!important;flex:none!important}
  .pack-reveal .wonder-choices .pack-card:nth-child(4){grid-column:2/span 2}
  .wonder-reveal .pack-actions-copy{display:block}
  .wonder-reveal .pack-actions-copy strong{font-size:14px}
}
/* v0.58 rarity + total grade, bottom left (mirrors the series mark) */
.pl-grade{position:absolute;left:calc(var(--u)*5);bottom:calc(var(--u)*2.6);z-index:3;font:700 calc(var(--u)*3.3)/1 Barlow,Arial,sans-serif;letter-spacing:.08em;color:#f3f0ea99;white-space:nowrap}
.pl-card.game-card .pl-grade{display:none}
/* v0.58 Cartes + Decks */
.cards-head{align-items:flex-end;flex-wrap:wrap}
.owned-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px;margin:14px 0}
.owned-filters .input{width:100%;text-transform:none;letter-spacing:.02em;padding:10px 12px}
.owned-sort{display:grid;grid-template-columns:1fr auto;gap:6px}.owned-sort .btn{min-height:0;padding:8px 14px}
.owned-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))!important;gap:18px 14px!important}
.owned-slot{min-width:0;display:grid;gap:8px}
.owned-meta{display:flex;align-items:center;justify-content:space-between;gap:6px}
.owned-meta span{font:700 12px/1.2 Barlow,Arial,sans-serif;color:#a7afb6}
.owned-meta .btn{min-height:0;padding:7px 12px;font-size:12px}
.d9-sheet{position:fixed;inset:0;z-index:60;background:#000a;display:grid;place-items:end center;padding:12px}
@media(min-width:761px){.d9-sheet{place-items:center}}
.d9-sheet-panel{width:min(100%,460px);max-height:min(80dvh,640px);overflow:auto;background:#14171b;border:1px solid #2b3036;border-radius:16px;padding:16px 16px calc(16px + env(safe-area-inset-bottom));box-shadow:0 20px 60px #000c}
.d9-sheet-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}
.d9-sheet-head h2{font:800 italic 22px/1.05 'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase;margin:0}
.deck-choice-list{display:grid;gap:8px}
.deck-choice{display:grid;gap:3px;text-align:left;padding:12px 14px;border:1px solid #2b3036;border-radius:12px;background:#0f1216;color:#f3f0ea;cursor:pointer}
.deck-choice:hover:not(:disabled){border-color:#f56a40}
.deck-choice strong{font:800 15px/1.2 Barlow,Arial,sans-serif}.deck-choice strong small{color:#a7afb6;font-weight:700}
.deck-choice span{font-size:12px;color:#a7afb6}
.deck-choice.new{border-style:dashed;border-color:#f56a4088}.deck-choice.new strong{color:#f56a40}
.decks-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;margin-top:14px}
.deck-tile{display:grid;grid-template-columns:120px 1fr;gap:14px;padding:14px;border:1px solid #2b3036;border-radius:14px;background:#14171b}
.deck-tile.is-active{border-color:#f56a40;box-shadow:0 0 0 1px #f56a4055}
.deck-tile-thumbs{position:relative;height:150px}
.deck-thumb{position:absolute;width:86px;top:0}.deck-thumb:nth-child(1){left:0;z-index:3}.deck-thumb:nth-child(2){left:17px;top:6px;z-index:2;transform:rotate(4deg)}.deck-thumb:nth-child(3){left:34px;top:12px;z-index:1;transform:rotate(8deg)}
.deck-thumb.empty{position:static;width:86px;aspect-ratio:5/7;border:1px dashed #3a3f45;border-radius:8px;display:grid;place-items:center;color:#6b737c;font-size:12px}
.deck-tile-copy{display:grid;gap:8px;align-content:start;min-width:0}
.deck-tile-title{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.deck-tile-title h3{margin:0;font-size:18px;overflow-wrap:anywhere}
.deck-tile.is-active .deck-state{color:#111;background:#f56a40;border-color:#f56a40}
.deck-tile.is-incomplete:not(.is-active) .deck-state{color:#e4b96a;border-color:#e4b96a66}
.deck-meter{height:6px;border-radius:99px;background:#ffffff12;overflow:hidden}.deck-meter i{display:block;height:100%;background:#f56a40}
.deck-tile.is-incomplete .deck-meter i{background:#e4b96a}
.deck-tile-actions{display:flex;flex-wrap:wrap;gap:6px}.deck-tile-actions .btn{min-height:0;padding:8px 12px;font-size:12px}
.deck-editor-head{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;margin:8px 0 14px}
.deck-editor-head .btn{min-height:0;padding:9px 14px}
.deck-name{width:100%!important;text-transform:none!important;letter-spacing:.01em!important;font-weight:800;font-size:18px}
.deck-count{font-size:14px!important;font-weight:800}.deck-count.is-full{color:#111!important;background:#6fcf8e;border-color:#6fcf8e}
.deck-editor-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:16px;align-items:start}
.deck-editor-grid .panel{margin:0}
.deck-content{position:sticky;top:64px;max-height:calc(100dvh - 80px);overflow:auto}
.deck-row{display:grid;grid-template-columns:44px 1fr auto;gap:10px;align-items:center;padding:6px 0;border-bottom:1px solid #ffffff0d}
.deck-row-card .pl-card{width:44px}.deck-row-card{pointer-events:none}
.deck-row-copy{min-width:0;display:grid;gap:2px}.deck-row-copy strong{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.deck-row-copy small{font-size:12px;color:#a7afb6}
.deck-pool .deck-row.in-deck .deck-row-copy strong{color:#f56a40}
.deck-row .deck-stepper{grid-template-columns:34px 26px 34px}.deck-row .deck-stepper button{height:34px;border-radius:8px;font-size:18px}
.deck-pool-list{max-height:none}
.deck-save-bar{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 6px}
@media(max-width:900px){.deck-editor-grid{grid-template-columns:1fr}.deck-content{position:static;max-height:none}}
@media(max-width:760px){
  .owned-filters{grid-template-columns:1fr 1fr}.owned-filters [data-f="q"]{grid-column:1/-1}.owned-sort{grid-column:1/-1}
  .owned-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:14px 10px!important}
  .deck-tile{grid-template-columns:96px 1fr}.deck-thumb{width:70px}.deck-tile-thumbs{height:124px}
  .deck-editor-head{grid-template-columns:1fr auto}.deck-editor-head #deck-back{grid-column:1/-1;justify-self:start}
  .play-setup{display:grid;gap:4px}
}
.owned-filters{grid-template-columns:1fr!important}
.owned-more summary{cursor:pointer;font:800 12px/1 Barlow,Arial,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:#a7afb6;padding:6px 0;list-style:none}
.owned-more summary::-webkit-details-marker{display:none}
.owned-more summary::before{content:'▸ ';color:#f56a40}.owned-more[open] summary::before{content:'▾ '}
.owned-more-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px;margin-top:6px}
@media(min-width:761px){.owned-more summary{display:none}}
@media(max-width:760px){
  .owned-more-grid{grid-template-columns:1fr 1fr}.owned-more-grid .owned-sort{grid-column:1/-1}
  .cards-head{flex-direction:column;align-items:flex-start;gap:6px}.cards-head h1{margin-bottom:4px}
  .deck-tile-title{flex-direction:column;gap:4px}.deck-tile-title h3{font-size:16px}
  .deck-tile-actions{display:grid;grid-template-columns:1fr 1fr}.deck-tile-actions .btn{padding:8px 6px}
}
/* v0.59 grade in the rarity colour (C stays light grey) */
.pl-grade{color:var(--pl-r);text-shadow:0 1px 2px #000a}
.stage-badge.photo-external{color:#e4b96a;border-color:#e4b96a66;background:#e4b96a14}
.localize-failures{margin-top:8px}.localize-failures summary{cursor:pointer;font-weight:700;color:#e4b96a}.localize-failures a{color:#f3f0ea}.localize-failures small{color:#8b939a}
.wonder-cost{display:inline-block;margin-top:8px;padding:6px 12px;border-radius:999px;font:800 13px/1 Barlow,Arial,sans-serif;letter-spacing:.06em;text-transform:uppercase}
.wonder-cost.is-free{color:#111;background:#6fcf8e}.wonder-cost.is-paid{color:#111;background:#e4b96a}
/* v0.63 header pack button: grey when empty, bright gold when boosters are waiting */
.header-packs{overflow:visible}
.header-packs .header-pack-icon{border:0;background:none;transform:none;width:22px;height:28px}
.header-packs .header-pack-icon::before,.header-packs .header-pack-icon::after{display:none}
.header-packs.is-empty{background:#141719;border-color:#ffffff10}
.header-packs.is-empty .pk-body{fill:#3a3f45;stroke:#5c636b}.header-packs.is-empty .pk-seal{stroke:#24282c}
.header-packs.is-empty .pk-diamond{fill:#24282c;stroke:#7d858c}.header-packs.is-empty .pk-text{fill:#9aa1a7}
.header-packs.has-packs{color:#ffd76a;border-color:#ffd76a99;background:radial-gradient(circle at 50% 35%,#5a4510,#231a06 70%);
  box-shadow:0 0 0 1px #ffd76a33,0 0 18px #ffcf4d66,0 0 34px #ffb80033;animation:header-pack-glow 1.8s ease-in-out infinite}
.header-packs.has-packs .pk-body{fill:#f5c542;stroke:#fff1b0}.header-packs.has-packs .pk-seal{stroke:#8a6512}
.header-packs.has-packs .pk-diamond{fill:#3d2b05;stroke:#fff6cf}.header-packs.has-packs .pk-text{fill:#fff8de}
.header-packs.has-packs .header-pack-icon{filter:drop-shadow(0 0 5px #ffd76aaa)}
.header-pack-shine{position:absolute;inset:0;overflow:hidden;pointer-events:none;border-radius:inherit}
.header-pack-shine::before{content:"";position:absolute;inset:-20% -80%;opacity:0}
.header-packs.has-packs .header-pack-shine::before{opacity:1;background:linear-gradient(115deg,transparent 42%,#fff9 50%,transparent 58%);animation:header-pack-sweep 2.6s ease-in-out infinite}
.header-packs.has-packs .header-pack-badge{background:#ffd76a;color:#1a1204;box-shadow:0 0 10px #ffd76a}
@keyframes header-pack-glow{0%,100%{box-shadow:0 0 0 1px #ffd76a33,0 0 14px #ffcf4d55}50%{box-shadow:0 0 0 1px #ffd76a66,0 0 26px #ffcf4daa,0 0 44px #ffb80055}}
@keyframes header-pack-sweep{0%,55%{transform:translateX(-60%)}85%,100%{transform:translateX(60%)}}
@media(prefers-reduced-motion:reduce){.header-packs.has-packs,.header-packs.has-packs .header-pack-shine::before{animation:none}}
/* v0.63 card error reports */
.report-btn{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:8px;border:1px solid #ffffff1c;background:#0f1216;color:#a7afb6;font-size:15px;cursor:pointer;flex:none}
.report-btn:hover{color:#ffd76a;border-color:#ffd76a66}
.owned-actions{display:flex;gap:6px;align-items:center}
.album-slot{position:relative}
.album-report{position:absolute;left:-6px;top:-8px;z-index:3;width:28px;height:28px;font-size:13px;opacity:.75;background:#14171bcc}
.album-slot:hover .album-report,.album-report:focus-visible{opacity:1}
.report-form{display:grid;gap:12px}.report-form label{display:grid;gap:6px;font-weight:700;font-size:13px}
.report-form .input{width:100%;text-transform:none;letter-spacing:.01em;font:500 15px/1.4 Barlow,Arial,sans-serif;resize:vertical}
.report-form .actions{margin:4px 0 0}
.nav-alert{display:inline-grid;place-items:center;min-width:18px;height:18px;margin-left:6px;padding:0 5px;border-radius:99px;background:#ff665c;color:#fff;font-size:11px;letter-spacing:0;vertical-align:1px}
.admin-reports{margin:0 0 14px;border:1px solid #2b3036;border-radius:14px;background:#14171b;padding:12px 16px}
.admin-reports.has-open{border-color:#ff665c88;box-shadow:0 0 0 1px #ff665c33}
.admin-reports summary{cursor:pointer;display:flex;gap:12px;align-items:baseline;flex-wrap:wrap;list-style:none}
.admin-reports summary::-webkit-details-marker{display:none}
.admin-reports.has-open summary strong{color:#ff8a80}
#admin-report-list{display:grid;gap:10px;margin-top:12px}
.report-item{display:grid;grid-template-columns:84px 1fr;gap:12px;padding:10px;border:1px solid #ffffff10;border-radius:12px;background:#0f1216}
.report-item.status-done,.report-item.status-rejected{opacity:.55}
.report-card .pl-card{width:84px}.report-card{pointer-events:none}
.report-body{display:grid;gap:4px;min-width:0}.report-body p{margin:4px 0;color:#f3f0ea;overflow-wrap:anywhere}
.report-body a{font-size:13px;color:#e4b96a;overflow-wrap:anywhere}
.report-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.report-actions .btn{min-height:0;padding:7px 12px;font-size:12px}
/* v0.64 trades */
.trade-item{display:grid;gap:10px;padding:14px;margin:10px 0;border:1px solid #2b3036;border-radius:14px;background:#14171b}
.trade-item.status-pending{border-color:#e4b96a55}
.trade-head{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;align-items:baseline}.trade-head small{color:#a7afb6}
.trade-sides{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:center}
.trade-arrow{font-size:22px;color:#e4b96a}
.trade-cards{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.trade-mini{position:relative;width:64px;pointer-events:none}.trade-mini .pl-card{width:64px}.trade-mini .album-count{top:-6px;right:-6px;font-size:10px;padding:2px 6px}
.trade-actions{display:flex;flex-wrap:wrap;gap:6px}.trade-actions .btn{min-height:0;padding:8px 14px;font-size:13px}
.trade-history summary{cursor:pointer;list-style:none}.trade-history summary h2{display:inline}
.trade-history .trade-item{opacity:.75}
.trade-item.status-accepted .trade-head span{color:#6fcf8e}
.trade-editor #trade-player{width:100%;text-transform:none;letter-spacing:.01em}
.trade-send{position:sticky;bottom:0;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px;padding:12px 16px;border:1px solid #2b3036;border-radius:14px;background:#0f1216f2;backdrop-filter:blur(6px)}
#trade-balance.is-full{color:#111;background:#6fcf8e;border-color:#6fcf8e}
@media(max-width:760px){.trade-sides{grid-template-columns:1fr}.trade-arrow{transform:rotate(90deg);justify-self:center}.trade-mini,.trade-mini .pl-card{width:56px}}
/* v0.65 trade suggestions: cards the other side does not own yet */
.deck-row.is-new{background:linear-gradient(90deg,#6fcf8e14,transparent 70%)}
.trade-new{justify-self:start;display:inline-block;margin:2px 0;padding:2px 7px;border-radius:99px;background:#6fcf8e;color:#0b1a10;font:800 10px/1.4 Barlow,Arial,sans-serif;letter-spacing:.06em;text-transform:uppercase;vertical-align:2px;white-space:nowrap}
.trade-useful{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 12px;font:600 14px/1.3 Barlow,Arial,sans-serif;text-transform:none;letter-spacing:0;color:#f3f0ea;cursor:pointer}.trade-useful input{width:18px;height:18px;accent-color:#6fcf8e}.trade-useful[data-summary]::after{flex-basis:100%}
.trade-useful[data-summary]::after{content:attr(data-summary);color:#6fcf8e;font-weight:700;font-size:12px}
.trade-filter{min-height:0;padding:8px 14px;font-size:12px}.trade-filter[aria-pressed="true"]{color:#0b1a10;background:#6fcf8e;border-color:#6fcf8e}
/* v0.66 trades: sized by card count, zoom, exchange animation */
.trade-sides{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)!important}
.trade-sides .trade-arrow{transform:none!important;align-self:center}
.trade-cards{display:grid!important;grid-template-columns:repeat(var(--cols,1),minmax(0,1fr));gap:6px;max-width:calc(var(--cols,1) * 150px)}
.trade-mini{width:auto!important;padding:0;border:0;background:none;cursor:zoom-in;pointer-events:auto!important;text-align:left}
.trade-mini .pl-card{width:100%!important}
.trade-editor .deck-row-card{padding:0;border:0;background:none;cursor:zoom-in;pointer-events:auto}
.card-zoom{position:fixed;inset:0;z-index:80;display:grid;place-items:center;align-content:center;gap:10px;padding:16px;background:#000c;cursor:zoom-out;animation:zoom-in .18s ease-out}
.card-zoom-card{width:min(86vw,380px,calc((100dvh - 80px) * 5 / 7))}.card-zoom-card .pl-card{width:100%}
.card-zoom p{color:#a7afb6}
@keyframes zoom-in{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}
.trade-anim{position:fixed;inset:0;z-index:90;display:grid;place-items:center;align-content:center;gap:14px;background:radial-gradient(circle at 50% 50%,#2a2010,#050505 75%);transition:opacity .25s}
.trade-anim.is-done{opacity:0}
.trade-anim-row{display:flex;gap:8px;justify-content:center}
.trade-anim-card{width:min(22vw,110px);animation:trade-out 2.1s cubic-bezier(.5,0,.3,1) both;animation-delay:calc(var(--i) * 70ms)}
.trade-anim-row.is-get .trade-anim-card{animation-name:trade-in}
.trade-anim-mark{font-size:40px;color:#ffd76a;animation:trade-spin 2.1s ease-in-out both;text-shadow:0 0 18px #ffd76a}
.trade-anim-title{font:800 italic clamp(24px,6vw,40px)/1 'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase;color:#f3f0ea;margin:6px 0 0;animation:trade-title 2.1s ease-out both}
@keyframes trade-out{0%{transform:translateY(0);opacity:1}35%{transform:translateY(0)}75%,100%{transform:translateY(70vh) rotate(-12deg);opacity:0}}
@keyframes trade-in{0%,30%{transform:translateY(-70vh) rotate(10deg);opacity:0}70%{transform:translateY(8px);opacity:1}82%,100%{transform:none;opacity:1}}
@keyframes trade-spin{0%{transform:rotate(0) scale(.6);opacity:0}30%{opacity:1;transform:scale(1)}70%,100%{transform:rotate(360deg) scale(1)}}
@keyframes trade-title{0%,55%{opacity:0;transform:translateY(10px)}75%,100%{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.trade-anim-card,.trade-anim-mark,.trade-anim-title{animation:none}}
/* v0.67 pending offers: cards missing from the receiver's collection */
.trade-mini-wrap{display:grid;gap:4px;min-width:0}.trade-mini-wrap .trade-new{justify-self:start;max-width:100%;overflow:hidden;text-overflow:ellipsis}
/* v0.68 styled confirmation dialog */
.d9-confirm{z-index:1500;place-items:center}
.d9-confirm .d9-sheet-panel{width:min(100%,440px);animation:zoom-in .16s ease-out}
.d9-confirm p{color:#d9d4cc;line-height:1.5;margin:0 0 14px}
.d9-confirm-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px}
.d9-confirm-actions .btn{min-height:44px}
.btn.danger{background:#ff665c;border-color:#ff665c;color:#1a0806}
.confirm-trade{margin:0 0 14px;padding:10px;border:1px solid #ffffff12;border-radius:12px;background:#0f1216}
.trade-sides{align-items:start!important}.trade-sides .trade-arrow{align-self:center}
/* v0.70 daily trade limit */
.trade-quota{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:10px 0 14px;padding:10px 14px;border:1px solid #2b3036;border-radius:12px;background:#14171b;font:700 13px/1.2 Barlow,Arial,sans-serif}
.trade-quota>span{color:#a7afb6;text-transform:uppercase;letter-spacing:.1em;font-size:11px}
.trade-quota-dots{display:flex;gap:5px}.trade-quota-dots i{width:14px;height:14px;border-radius:50%;border:2px solid #e4b96a88;background:transparent}
.trade-quota-dots i.on{background:#e4b96a;border-color:#e4b96a}
.trade-quota strong{font-size:16px;color:#f3f0ea}.trade-quota small{color:#a7afb6;font-weight:600}
.trade-quota.is-full{border-color:#ff665c66}.trade-quota.is-full small{color:#ff8a80}
.trade-their-quota{color:#ff8a80}
/* v0.71 board: one clean owner ring (orange = you, blue = rival) around the rarity frame,
   no clipped square outline and no extra bottom bar. */
.board .cell.occupied{overflow:visible!important;padding:5px!important;border:0!important;background:none!important}
.pl-card.pl-board.owned{--own-from:var(--rival,#62a7ff)}
.pl-card.pl-board.enemy{--own-from:var(--you,#ff6b3d)}
.pl-card.pl-board.owned,.pl-card.pl-board.enemy{box-shadow:0 0 0 2px var(--pl-r),0 0 0 5px var(--own),0 6px 14px #000a}
.pl-card.pl-board.owned::after,.pl-card.pl-board.enemy::after{display:none}
.pl-card.pl-board.synergy-brand{box-shadow:0 0 0 2px var(--pl-r),0 0 0 5px var(--own),0 0 22px #5b8fe2aa,0 6px 14px #000a}
.pl-card.pl-board.synergy-country{box-shadow:0 0 0 2px var(--pl-r),0 0 0 5px var(--own),0 0 22px #59b77baa,0 6px 14px #000a}
/* v0.71 slower, sequenced moves: the card lands, then each captured card flips in turn,
   showing the old owner's colour until mid-flip. */
.board .cell.just-played .pl-card.pl-board{animation:d9-land .7s cubic-bezier(.2,.9,.25,1.15) both}
.board .cell.just-played:after{inset:0;border-radius:12px;border-width:3px;border-color:var(--ring,var(--you));opacity:0;animation:impactRing .9s ease-out both}
.board .cell.just-played.by-rival{--ring:var(--rival)}
.board .cell.just-captured .pl-card.pl-board{animation:d9-capture 1s cubic-bezier(.45,0,.25,1) both;animation-delay:calc(.65s + var(--cap-i,0) * .3s)}
.board .cell.just-captured:after{border-radius:12px;font-size:clamp(9px,1.4vw,13px);animation:captureFlash 1.2s ease both;animation-delay:calc(.75s + var(--cap-i,0) * .3s)}
@keyframes d9-land{0%{transform:translateY(-44px) scale(1.16);opacity:0}55%{transform:translateY(4px) scale(.98);opacity:1}78%{transform:translateY(-2px)}100%{transform:none;opacity:1}}
@keyframes d9-capture{
  0%{transform:perspective(700px) rotateY(0);box-shadow:0 0 0 2px var(--pl-r),0 0 0 5px var(--own-from),0 6px 14px #000a;filter:brightness(1)}
  49%{transform:perspective(700px) rotateY(90deg) scale(.94);box-shadow:0 0 0 2px var(--pl-r),0 0 0 5px var(--own-from),0 6px 14px #000a;filter:brightness(1.7)}
  51%{transform:perspective(700px) rotateY(90deg) scale(.94);box-shadow:0 0 0 2px var(--pl-r),0 0 0 5px var(--own),0 0 26px var(--own);filter:brightness(1.7)}
  80%{box-shadow:0 0 0 2px var(--pl-r),0 0 0 5px var(--own),0 0 26px var(--own)}
  100%{transform:none;box-shadow:0 0 0 2px var(--pl-r),0 0 0 5px var(--own),0 6px 14px #000a;filter:brightness(1)}}
@media(prefers-reduced-motion:reduce){.board .cell.just-played .pl-card.pl-board,.board .cell.just-captured .pl-card.pl-board,.board .cell.just-captured:after{animation:none!important}}
/* v0.72 booster reveal: one card at a time, full size, then a summary */
.reveal1{--glow:#f56a40;position:fixed;inset:0;z-index:70;display:grid;grid-template-rows:auto 1fr auto;gap:10px;padding:max(14px,env(safe-area-inset-top)) 16px max(18px,env(safe-area-inset-bottom));
  background:radial-gradient(circle at 50% 45%,color-mix(in srgb,var(--glow) 26%,#0b0c0d) 0,#050506 62%);color:#f3f0ea;overflow:hidden;animation:zoom-in .2s ease-out}
.reveal1.rarity-c{--glow:#9aa1a7}.reveal1.rarity-nc{--glow:#7ad98b}.reveal1.rarity-r{--glow:#69a4ff}.reveal1.rarity-sr{--glow:#b181ff}.reveal1.rarity-ur{--glow:#f2d354}.reveal1.rarity-ss{--glow:#ff665c}
.reveal1-top{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px}
.reveal1-skip{justify-self:end;background:none;border:0;color:#a7afb6;font:700 13px/1 Barlow,Arial,sans-serif;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;padding:8px}
.reveal1-dots{display:flex;gap:6px}.reveal1-dots i{width:10px;height:10px;border-radius:50%;border:2px solid #ffffff44}
.reveal1-dots i.done{background:var(--glow);border-color:var(--glow)}.reveal1-dots i.now{transform:scale(1.25);border-color:#fff}
.reveal1-stage{display:grid;place-items:center;min-height:0}
.reveal1-card{position:relative;width:min(80vw,380px,calc((100dvh - 190px) * 5 / 7));padding:0;border:0;background:none;cursor:pointer;perspective:1400px;animation:reveal1-in .45s cubic-bezier(.2,.9,.25,1.1) both}
.reveal1-flip{position:relative;transform-style:preserve-3d;transition:transform .6s cubic-bezier(.3,.8,.25,1);transform:rotateY(180deg)}
.reveal1-card.is-flipped .reveal1-flip{transform:rotateY(0)}
.reveal1-face{backface-visibility:hidden;-webkit-backface-visibility:hidden}
.reveal1-front .pl-card{width:100%}
.reveal1-back{position:absolute;inset:0;transform:rotateY(180deg)}
.reveal1-back .card-back{height:100%;aspect-ratio:auto;border-color:var(--glow);box-shadow:0 22px 40px #000a,0 0 30px color-mix(in srgb,var(--glow) 35%,transparent)}
.reveal1-card:not(.is-flipped):hover .reveal1-flip{transform:rotateY(180deg) translateY(-6px)}
.reveal1.is-rare .reveal1-card.is-flipped .reveal1-front{animation:reveal1-rare 1.6s ease-out .55s both}
.reveal1-badge{position:absolute;left:50%;top:-14px;transform:translateX(-50%);z-index:4;white-space:nowrap;padding:7px 16px;border-radius:999px;font:900 italic 18px/1 'Barlow Condensed','Arial Narrow',sans-serif;letter-spacing:.05em;text-transform:uppercase}
.reveal1-badge.is-new{color:#0b1a10;background:#6fcf8e;box-shadow:0 0 0 3px #0b1a10,0 0 24px #6fcf8ecc;animation:reveal1-pop .55s cubic-bezier(.2,1.6,.4,1) both}
.reveal1-badge.is-dup{color:#d9d4cc;background:#1c2024;border:1px solid #ffffff22;font-size:13px;font-style:normal;animation:reveal1-fade .3s ease-out both}
.reveal1-burst{position:absolute;inset:-30%;z-index:-1;pointer-events:none;opacity:0;border-radius:50%;
  background:repeating-conic-gradient(from 0deg,#6fcf8e55 0 6deg,transparent 6deg 22deg);-webkit-mask:radial-gradient(circle,#000 30%,transparent 70%);mask:radial-gradient(circle,#000 30%,transparent 70%)}
.reveal1-card.is-new .reveal1-burst{animation:reveal1-burst 1.6s ease-out both}
.reveal1-hint{text-align:center;color:#a7afb6;margin:0;font-size:14px}
@keyframes reveal1-in{from{transform:translateX(60px) rotate(4deg);opacity:0}to{transform:none;opacity:1}}
@keyframes reveal1-pop{0%{transform:translateX(-50%) scale(.3) rotate(-8deg);opacity:0}70%{transform:translateX(-50%) scale(1.12) rotate(2deg);opacity:1}100%{transform:translateX(-50%) scale(1)}}
@keyframes reveal1-fade{from{opacity:0;transform:translateX(-50%) translateY(6px)}to{opacity:1;transform:translateX(-50%)}}
@keyframes reveal1-burst{0%{opacity:0;transform:scale(.6) rotate(0)}25%{opacity:1}100%{opacity:0;transform:scale(1.3) rotate(40deg)}}
@keyframes reveal1-rare{0%{filter:drop-shadow(0 0 0 var(--glow))}35%{filter:drop-shadow(0 0 34px var(--glow))}100%{filter:drop-shadow(0 0 10px var(--glow))}}
.reveal1.is-summary{display:grid;place-items:center;grid-template-rows:1fr;overflow:auto}
.reveal1-summary{width:min(100%,980px);display:grid;gap:16px}
.reveal1-sum-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.reveal1-sum-head h2{font:800 italic clamp(28px,6vw,44px)/1 'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase;margin:6px 0}
.reveal1-sum-head p{margin:0;color:#a7afb6}.reveal1-new-count{color:#6fcf8e}
.reveal1-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.reveal1-mini{position:relative;padding:0;border:0;background:none;cursor:zoom-in;animation:reveal1-in .4s ease-out both;animation-delay:calc(var(--i) * 70ms)}
.reveal1-mini .pl-card{width:100%}
.reveal1-mini.is-new .pl-card{box-shadow:0 0 0 4px #0b0d10,0 0 0 7px #6fcf8e,0 0 22px #6fcf8e88}
.reveal1-mini-badge{position:absolute;left:50%;top:-9px;transform:translateX(-50%);z-index:3;padding:3px 9px;border-radius:999px;background:#6fcf8e;color:#0b1a10;font:900 11px/1.2 Barlow,Arial,sans-serif;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
.reveal1-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}
@media(max-width:760px){.reveal1-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.reveal1-mini{grid-column:span 2}.reveal1-mini:nth-child(4){grid-column:2/span 2}
  .reveal1-actions{display:grid;grid-template-columns:1fr 1fr}}
@media(prefers-reduced-motion:reduce){.reveal1-card,.reveal1-badge,.reveal1-burst,.reveal1-mini,.reveal1 .reveal1-front{animation:none!important}.reveal1-flip{transition:none}}
.reveal1-mini{padding-top:13px}.reveal1-mini-badge{top:0}
.reveal1-card{margin-top:14px}
.reveal1-card{margin-top:30px}.reveal1-badge{top:-38px}
/* v0.73 mystery pick: cards missing from your collection */
.wonder-new-count{justify-self:start;padding:4px 10px;border-radius:999px;background:#6fcf8e;color:#0b1a10;font:800 12px/1.2 Barlow,Arial,sans-serif;letter-spacing:.04em}
.wonder-new-count.is-none{background:#1c2024;color:#8b939a;border:1px solid #ffffff14}
.wonder-mini{position:relative}
.wonder-mini.is-new .pl-card{box-shadow:0 0 0 2px #6fcf8e,0 0 10px #6fcf8e88}
.wonder-new-dot{position:absolute;left:50%;top:-7px;transform:translateX(-50%);z-index:3;padding:1px 5px;border-radius:999px;background:#6fcf8e;color:#0b1a10;font:900 8px/1.3 Barlow,Arial,sans-serif;letter-spacing:.08em}
.wonder-cards{padding-top:7px}
.pack-card.is-new-win{position:relative}
.wonder-win-new{position:absolute;left:50%;top:-12px;transform:translateX(-50%);z-index:4;padding:5px 12px;border-radius:999px;background:#6fcf8e;color:#0b1a10;font:900 italic 14px/1 'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;box-shadow:0 0 18px #6fcf8ecc;animation:reveal1-pop .55s cubic-bezier(.2,1.6,.4,1) .55s both}
/* v0.74 instant feedback on "Manche suivante"; no double-tap delay on touch screens */
button,.btn,a.btn{touch-action:manipulation}
#next.is-loading,#next-mobile.is-loading{opacity:.75;cursor:progress;position:relative}
#next.is-loading::after,#next-mobile.is-loading::after{content:'';display:inline-block;width:14px;height:14px;margin-left:10px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite;vertical-align:-2px}
@keyframes spin{to{transform:rotate(360deg)}}
/* v0.75 end of round / end of duel */
.endfx{--tone:#ffd76a;position:fixed;inset:0;z-index:85;display:grid;place-items:center;padding:20px;cursor:pointer;
  background:radial-gradient(circle at 50% 45%,color-mix(in srgb,var(--tone) 22%,transparent),#000c 70%);animation:endfx-bg .35s ease-out both}
.endfx.is-win{--tone:#ff6b3d}.endfx.is-loss{--tone:#62a7ff}.endfx.is-draw{--tone:#c9c4bb}
.endfx.is-out{animation:endfx-out .3s ease-in both}
.endfx-panel{display:grid;justify-items:center;gap:10px;text-align:center;padding:26px 30px;min-width:min(88vw,360px);border-radius:20px;background:#0f1216f2;border:2px solid var(--tone);
  box-shadow:0 0 0 1px #000,0 0 50px color-mix(in srgb,var(--tone) 45%,transparent),0 24px 60px #000c;animation:endfx-in .6s cubic-bezier(.2,1.4,.4,1) both}
.endfx-title{margin:0;font:900 italic clamp(40px,12vw,76px)/.9 'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase;color:var(--tone);letter-spacing:-.01em;
  text-shadow:0 0 24px color-mix(in srgb,var(--tone) 60%,transparent);animation:endfx-title .8s cubic-bezier(.2,1.5,.4,1) .15s both}
.endfx-sub{margin:0;color:#d9d4cc;font-size:15px}
.endfx-score{display:grid;grid-template-columns:1fr auto 1fr;gap:14px;align-items:center;margin-top:6px}
.endfx-score span{display:block;font:800 11px/1 Barlow,Arial,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#a7afb6;margin-bottom:6px}
.endfx-score b{font:900 28px/1 'Barlow Condensed','Arial Narrow',sans-serif;color:#f3f0ea}
.endfx-dots{display:flex;gap:5px;justify-content:center}.endfx-dots i{width:13px;height:13px;border-radius:50%;border:2px solid #ffffff33}
.endfx-dots i.on{animation:endfx-dot .4s cubic-bezier(.2,1.6,.4,1) .55s both}.endfx-dots i.on.you{background:#ff6b3d;border-color:#ff6b3d}.endfx-dots i.on.rival{background:#62a7ff;border-color:#62a7ff}
.endfx small{color:#8b939a;font-size:12px;margin-top:4px}
.endfx.is-final .endfx-panel{padding:34px 34px 26px}
.endfx.is-final.is-loss .endfx-panel{animation:endfx-in .6s ease-out both,endfx-shake .5s ease-in-out .6s}
.endfx-confetti{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.endfx-confetti i{position:absolute;top:-20px;left:calc(var(--x) * 1%);width:9px;height:14px;background:var(--c);border-radius:2px;transform:rotate(var(--r));animation:endfx-fall 2.6s cubic-bezier(.25,.6,.4,1) var(--d) both}
@keyframes endfx-bg{from{opacity:0}to{opacity:1}}
@keyframes endfx-out{to{opacity:0}}
@keyframes endfx-in{0%{transform:scale(.6) translateY(30px);opacity:0}100%{transform:none;opacity:1}}
@keyframes endfx-title{0%{transform:scale(1.8);opacity:0;filter:blur(6px)}100%{transform:none;opacity:1;filter:none}}
@keyframes endfx-dot{from{transform:scale(0)}to{transform:none}}
@keyframes endfx-shake{0%,100%{transform:none}20%{transform:translateX(-8px)}40%{transform:translateX(7px)}60%{transform:translateX(-5px)}80%{transform:translateX(3px)}}
@keyframes endfx-fall{0%{transform:translateY(0) rotate(var(--r));opacity:1}100%{transform:translateY(110vh) rotate(calc(var(--r) + 540deg));opacity:.9}}
@media(prefers-reduced-motion:reduce){.endfx,.endfx *{animation:none!important}}
.endfx:not(.is-final){pointer-events:none;cursor:default}
.endfx-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%;margin-top:8px}.endfx-actions .btn{min-height:44px}
/* v0.76 development environment ribbon */
.env-ribbon{position:sticky;top:0;z-index:40;padding:5px 12px;text-align:center;background:repeating-linear-gradient(-45deg,#ffd76a 0 14px,#f5c542 14px 28px);color:#1a1204;font:900 12px/1.2 Barlow,Arial,sans-serif;letter-spacing:.14em;text-transform:uppercase}
body.env-dev .main-nav{top:24px}
.admin-env{display:grid;gap:4px;font:700 11px/1 Barlow,Arial,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:#a7afb6}
.admin-env .input{width:auto;text-transform:none;letter-spacing:.01em;padding:8px 10px}
.admin-env.is-dev .input{border-color:#ffd76a;color:#ffd76a}
/* v0.77.2 desktop drag: the mini-card sits right under the cursor, no text selection while dragging */
body.dragging-card{user-select:none;-webkit-user-select:none;cursor:grabbing}
.drag-ghost.drag-ghost-mouse{pointer-events:none!important;width:96px!important;height:110px!important}
/* v0.77.2 collection grid: every card keeps its 5:7 ratio whatever its neighbours' footer needs,
   and the footer wraps instead of overflowing onto the next card. */
.owned-slot{align-content:start;grid-template-columns:minmax(0,1fr)}
.owned-slot>.pl-card{align-self:start;height:auto}
.owned-meta{flex-wrap:wrap;min-width:0}
.owned-actions{flex-wrap:nowrap;margin-left:auto}
/* v0.78 weekly rules: three rules, one line each */
.weekly-rules{list-style:none;margin:10px 0 6px;padding:0;display:grid;gap:8px}
.weekly-rules li{display:grid;gap:2px}
.weekly-rules li b{font:800 15px/1.2 Barlow,Arial,sans-serif;letter-spacing:.02em;color:#f3f0ea}
.weekly-rules li span{font-size:12px;color:#a7afb6}
/* v0.78 sound toggle in the header */
.account .sound-toggle{display:inline-grid;place-items:center;width:34px;height:34px;padding:0;border:1px solid #ffffff22;border-radius:50%;background:#ffffff0d;color:#c9c4bb;cursor:pointer;text-decoration:none!important}
.account .sound-toggle:hover,.account .sound-toggle:focus-visible{color:#fff;border-color:#ffffff55}
/* v0.79 avatar = entry to the garage / profile */
.account .account-avatar{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:50%;padding:0;text-decoration:none!important;border:2px solid transparent;transition:border-color .15s,box-shadow .15s}
.account .account-avatar img{display:block;width:30px;height:30px;border-radius:50%}
.account .account-initial{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:linear-gradient(145deg,#ff6b3d,#b8451f);color:#fff;font:900 15px/1 Barlow,Arial,sans-serif}
.account .account-avatar:hover,.account .account-avatar:focus-visible{border-color:#ffffff55}
.account .account-avatar.active{border-color:var(--you,#ff6b3d);box-shadow:0 0 0 2px #ff6b3d33}
/* v0.79 "Lire une carte": subtle legend, closed by default */
.stat-legend{margin:2px 0 14px}
.stat-legend summary{display:inline-flex;align-items:center;gap:7px;cursor:pointer;list-style:none;font:700 12px/1 Barlow,Arial,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#a7afb6;padding:6px 2px}
.stat-legend summary::-webkit-details-marker{display:none}
.stat-legend summary:hover,.stat-legend summary:focus-visible{color:#f3f0ea}
.stat-legend-q{display:inline-grid;place-items:center;width:18px;height:18px;border:1px solid currentColor;border-radius:50%;font-size:11px}
.stat-legend[open] summary{color:#f3f0ea}
.stat-legend-body{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px 22px;align-items:center;margin-top:6px;padding:14px 16px;border:1px solid #ffffff14;border-radius:12px;background:#ffffff08;max-width:620px}
.stat-legend-diamond{position:relative;width:200px;height:110px;font:700 9px/1.1 Barlow,Arial,sans-serif;letter-spacing:.04em;text-transform:uppercase;color:#c9c4bb}
.stat-legend-diamond b{position:absolute;white-space:nowrap}
.stat-legend-diamond .n{top:0;left:50%;transform:translateX(-50%)}
.stat-legend-diamond .s{bottom:0;left:50%;transform:translateX(-50%)}
.stat-legend-diamond .w{left:0;top:50%;transform:translateY(-50%)}
.stat-legend-diamond .e{right:0;top:50%;transform:translateY(-50%)}
.stat-legend-diamond i{position:absolute;left:50%;top:50%;width:34px;height:34px;transform:translate(-50%,-50%) rotate(45deg);border:1.5px solid #ff6b3d;background:#ff6b3d14}
.stat-legend-body ul{list-style:none;margin:0;padding:0;display:grid;gap:5px}
.stat-legend-body li{display:flex;justify-content:space-between;gap:12px;font-size:13px}
.stat-legend-body li b{color:#f3f0ea;font-weight:700}.stat-legend-body li span{color:#a7afb6}
.stat-legend-body p{grid-column:1/-1;margin:2px 0 0;font-size:12px;color:#a7afb6}
@media(max-width:560px){.stat-legend-body{grid-template-columns:1fr}.stat-legend-diamond{margin:0 auto}}
/* v0.79 deck editor: Équilibré | VMAX indicator and the VMAX switch */
.deck-mode-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:10px 0 14px}
.deck-mode{display:inline-flex;border:1px solid #ffffff22;border-radius:999px;padding:3px;background:#ffffff08}
.deck-mode span{padding:6px 14px;border-radius:999px;font:800 12px/1 Barlow,Arial,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:#7d858c;transition:background .15s,color .15s}
.deck-mode[data-active="balanced"] [data-mode="balanced"]{background:#6fcf8e;color:#0b1a10}
.deck-mode[data-active="vmax"] [data-mode="vmax"]{background:#ff6b3d;color:#1a0d08}
.deck-vmax{display:inline-flex;align-items:center;gap:8px;font:700 12px/1.2 Barlow,Arial,sans-serif;letter-spacing:.04em;color:#c9c4bb;cursor:pointer}
.deck-vmax input{width:18px;height:18px;accent-color:#ff6b3d;cursor:pointer}
.deck-vmax input:disabled{cursor:not-allowed}
.deck-mode-note b{color:#f3f0ea}
.deck-stepper button[data-plus][title]:disabled{cursor:not-allowed}
.deck-content .deck-vmax{display:inline-flex!important;flex-direction:row!important;align-items:center;gap:8px}
.deck-content .deck-vmax input{flex:none;width:18px!important;height:18px;padding:0;margin:0}

/* v0.79.1 waiting duels can be cancelled from the home list */
.match-row{display:flex;gap:8px;align-items:stretch}
.match-row .match-link{flex:1;min-width:0}
.match-row .match-cancel{flex:none;align-self:center;min-height:0;padding:9px 14px;font-size:12px}
.match-row .match-link{display:flex;align-items:center;gap:12px}
.match-main{display:grid;gap:2px;min-width:0;flex:1}
.match-result{flex:none;display:grid;place-items:center;width:34px;height:34px;border-radius:10px;font:900 18px/1 'Barlow Condensed','Arial Narrow',sans-serif;border:1px solid}
.match-result.is-win{color:#5fd38a;background:#5fd38a1f;border-color:#5fd38a88}
.match-result.is-loss{color:#ff6b6b;background:#ff6b6b1f;border-color:#ff6b6b88}

/* v0.79.2 duel format badge (tap for the rule) */
.rule-info{margin:2px 0 10px}
.rule-badge{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid #62a7ff55;border-radius:999px;background:#62a7ff14;color:#cfe3ff;font:800 11px/1 Barlow,Arial,sans-serif;letter-spacing:.1em;text-transform:uppercase;cursor:pointer}
.rule-badge:hover,.rule-badge:focus-visible{border-color:#62a7ffaa;color:#fff}
.rule-badge::after{content:'ⓘ';font-size:12px;opacity:.7}
.rule-desc{margin:8px 0 0;padding:10px 12px;border-radius:10px;background:#ffffff0a;border:1px solid #ffffff14;font-size:12px;line-height:1.45;color:#c9c4bb;max-width:520px}
.invite-panel .rule-info{margin:10px 0}

/* v0.80 year filter: custom range */
.owned-year-custom{display:flex;align-items:center;gap:8px;min-width:0}
.owned-year-custom[hidden]{display:none}
.owned-year-custom .input{flex:1;min-width:0;width:100%}
.owned-year-custom span{color:#7d858c}

/* v0.80.1 level-up banner, booster banner, animated progress bars */
.levelup{position:fixed;inset:0;z-index:1300;display:grid;place-items:center;cursor:pointer;background:radial-gradient(circle at 50% 45%,#ff6b3d33,#000d 68%);animation:endfx-bg .35s ease-out both}
.levelup.is-out{animation:endfx-out .3s ease-in both}
.levelup-rays{position:absolute;inset:-20%;background:repeating-conic-gradient(from 0deg,#ffd76a22 0 7deg,transparent 7deg 20deg);-webkit-mask:radial-gradient(circle,#000 8%,transparent 62%);mask:radial-gradient(circle,#000 8%,transparent 62%);animation:levelup-spin 14s linear infinite}
.levelup-panel{position:relative;display:grid;justify-items:center;gap:6px;text-align:center;padding:30px 44px;border:2px solid #ffd76a;border-radius:22px;background:#0f1216f2;box-shadow:0 0 60px #ffd76a55,0 24px 60px #000c;animation:endfx-in .6s cubic-bezier(.2,1.4,.4,1) both}
.levelup-title{font:900 italic clamp(44px,13vw,86px)/.9 'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase;color:#ffd76a;text-shadow:0 0 28px #ffd76a88;animation:endfx-title .8s cubic-bezier(.2,1.5,.4,1) .15s both}
.levelup-panel p{margin:0;color:#d9d4cc;font-size:15px}
@keyframes levelup-spin{to{transform:rotate(360deg)}}
.booster-toast{position:fixed;left:50%;bottom:calc(18px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:1200;display:flex;align-items:center;gap:12px;max-width:min(94vw,460px);padding:10px 12px 10px 16px;border:1px solid #ffd76a88;border-radius:14px;background:#17140acc;backdrop-filter:blur(10px);box-shadow:0 0 30px #ffd76a33,0 14px 34px #000a;color:#f3f0ea;animation:booster-toast-in .45s cubic-bezier(.2,1.3,.4,1) both}
.booster-toast.is-out{animation:booster-toast-out .3s ease-in both}
.booster-toast .btn{min-height:0;padding:9px 16px;font-size:13px}
.booster-toast-x{background:none;border:0;color:#a7afb6;font-size:16px;cursor:pointer;padding:6px}
@keyframes booster-toast-in{from{opacity:0;transform:translate(-50%,24px) scale(.94)}to{opacity:1;transform:translate(-50%,0) scale(1)}}
@keyframes booster-toast-out{to{opacity:0;transform:translate(-50%,16px)}}
.progression-bars i>b{transform-origin:left center;animation:d9-bar-fill 1s cubic-bezier(.2,.8,.2,1) both}
@keyframes d9-bar-fill{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media(prefers-reduced-motion:reduce){.levelup-rays,.levelup-panel,.levelup-title,.booster-toast,.progression-bars i>b{animation:none!important}}
.booster-toast span{white-space:nowrap}

/* v0.80.2 format badge lives inside the board header row (fixed-height grid row) with a floating description */
.board-head .rule-info{position:relative;margin:0;flex:none;align-self:center}
.board-head .rule-badge{padding:4px 10px;font-size:10px}
.rule-info.is-pop .rule-desc{position:absolute;top:calc(100% + 6px);left:0;z-index:60;width:min(320px,82vw);margin:0;background:#12161bf5;box-shadow:0 12px 30px #000a}
@media(max-width:560px){.board-head .rule-prefix{display:none}.board-head .rule-badge{padding:3px 8px;font-size:9px}}
.board-head{position:relative}
.board-head .rule-info.is-pop{position:static}
.board-head .rule-info.is-pop .rule-desc{left:0;right:auto;width:min(340px,100%);top:calc(100% + 4px)}

/* v0.80.3 daily duel-token gauge and reward chips */
.duel-tokens{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:4px 12px;align-items:center;margin:2px 0 14px;padding:10px 14px;border:1px solid #ffd76a33;border-radius:12px;background:#ffd76a0d}
.duel-tokens-label{font:800 11px/1 Barlow,Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:#ffd76a}
.duel-tokens-pips{display:flex;gap:4px;min-width:0}
.duel-tokens-pips i{flex:1;max-width:22px;height:8px;border-radius:3px;background:#ffffff1c;transition:background .3s}
.duel-tokens-pips i.on{background:linear-gradient(180deg,#ffe28a,#e0a82a);box-shadow:0 0 8px #ffd76a66}
.duel-tokens-count{font:900 16px/1 'Barlow Condensed','Arial Narrow',sans-serif;color:#f3f0ea;font-variant-numeric:tabular-nums}
.duel-tokens small{grid-column:1/-1;color:#a7afb6;font-size:12px}
.duel-tokens.is-capped{border-color:#ffffff22;background:#ffffff08}.duel-tokens.is-capped .duel-tokens-label{color:#a7afb6}
.reward-chip{display:inline-block;margin:0 0 8px;padding:4px 10px;border-radius:999px;border:1px solid #ffd76a55;background:#ffd76a14;color:#ffd76a;font:800 11px/1 Barlow,Arial,sans-serif;letter-spacing:.06em;text-transform:uppercase}
.reward-chip.is-off{border-color:#ffffff22;background:#ffffff08;color:#7d858c}
.reveal1-xp{color:#ffd76a}
.reward-chip{justify-self:start;align-self:start;width:fit-content}

/* v0.80.5 yellow token icon wherever an amount is shown */
.tok{color:#ffc93c;font-size:.82em;line-height:1;margin-right:.18em;text-shadow:0 0 6px #ffc93c55}
.tok-amt{white-space:nowrap;font-variant-numeric:tabular-nums}
.duel-tokens-label .tok{margin-right:.35em}
/* v0.81.1 mission-complete toast */
.mission-toast{position:fixed;left:50%;bottom:calc(18px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:1250;display:flex;align-items:center;gap:12px;max-width:min(94vw,460px);padding:12px 18px 12px 12px;border:1px solid #5fd38a88;border-radius:14px;background:#0c1a12cc;backdrop-filter:blur(10px);box-shadow:0 0 30px #5fd38a33,0 14px 34px #000a;color:#f3f0ea;animation:booster-toast-in .45s cubic-bezier(.2,1.3,.4,1) both}
.mission-toast.is-out{animation:booster-toast-out .3s ease-in both}
.mission-tick{flex:none;width:34px;height:34px;fill:#5fd38a22;stroke:#5fd38a;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.mission-tick path{stroke-dasharray:20;stroke-dashoffset:20;animation:mission-tick-draw .45s ease-out .25s forwards}
.mission-text{display:grid;gap:2px;font-size:13px;color:#d9d4cc}
.mission-text b{font-size:15px;color:#fff}
@keyframes mission-tick-draw{to{stroke-dashoffset:0}}
@media(prefers-reduced-motion:reduce){.mission-toast,.mission-tick path{animation:none!important;stroke-dashoffset:0}}
.levelup-gift{color:#ffd76a!important;font-weight:800;letter-spacing:.04em}
/* v0.82 online light */
.presence{display:inline-flex;align-items:center;gap:6px;margin-top:4px;font-size:11px;color:#a7afb6;white-space:nowrap}
.presence i{width:8px;height:8px;border-radius:50%;background:#6b737c;flex:none}
.presence.is-online{color:#5fd38a}
.presence.is-online i{background:#5fd38a;box-shadow:0 0 8px #5fd38a}
/* v0.83 server check */
.check-table{width:100%;border-collapse:collapse;margin:8px 0 18px;font-size:13px}
.check-table th{text-align:left;font-weight:600;color:#a7afb6;padding:8px 12px 8px 0;vertical-align:top;width:42%}
.check-table td{padding:8px 0;border-top:1px solid #ffffff14;word-break:break-word}
.check-table tr:first-child td,.check-table tr:first-child th{border-top:0}
.check-ok{color:#5fd38a}.check-bad{color:#ff8a6b}
/* v0.84 notifications */
.push-panel{margin:16px 0}
.push-list{display:grid;gap:4px;margin:12px 0}
.push-sub{display:grid;gap:4px;padding-left:14px;border-left:2px solid #ffffff1a}
.push-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 0;border-top:1px solid #ffffff10;cursor:pointer}
.push-row span{display:grid;gap:2px}
.push-row small{color:#a7afb6;font-size:12px}
.push-row input{width:22px;height:22px;accent-color:#ffd76a;flex:none}
.nudge-btn{width:100%;margin-top:10px;min-height:42px}
/* v0.85 language switch */
.lang-switch{display:inline-flex;gap:2px;margin:0 8px;vertical-align:middle}
.lang-switch button{background:none;border:1px solid #ffffff22;color:#a7afb6;font:700 11px/1 inherit;letter-spacing:.08em;padding:5px 8px;cursor:pointer;border-radius:6px}
.lang-switch button.active{color:#101317;background:#ffd76a;border-color:#ffd76a}
/* v0.86 boosters in stock: side by side, tap the booster to open it */
#app .booster-inventory-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}
@media(max-width:1100px){#app .booster-inventory-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}}
@media(max-width:480px){#app .booster-inventory-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.booster-tile{display:block;width:100%;padding:0;border:0;background:none;cursor:pointer;border-radius:10px;transition:transform .18s ease,filter .18s ease}
.booster-tile:hover,.booster-tile:focus-visible{transform:translateY(-4px);filter:drop-shadow(0 8px 18px #ff6b3d55)}
.booster-tile:active{transform:scale(.97)}
.booster-tile .booster-art{width:100%}

.achievements-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;margin:12px 0}
.achievements-grid article{display:grid;gap:6px;padding:12px;border:1px solid #ffffff1f;border-radius:12px;background:#ffffff08}
.achievements-grid article.complete{border-color:#5fd38a88}
.achievement-top{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.achievement-top b{font-size:1.3rem}
.achievements-grid i{display:block;height:6px;border-radius:99px;background:#ffffff1a;overflow:hidden}
.achievements-grid i b{display:block;height:100%;background:#5fd38a}
.achievements-grid small{color:#aab}
.achievement-dots{display:flex;gap:4px}
.achievement-dots em{width:10px;height:10px;border-radius:50%;background:#ffffff22}
.achievement-dots em.on{background:#5fd38a}
.achievement-dots em.booster{outline:1px solid #f5c542;outline-offset:1px}
.deck-vmax-alert{margin:8px 0;padding:8px 12px;border:1px solid #ff6b3d88;border-radius:10px;background:#ff6b3d1a;color:#ffd2c2;font:700 13px/1.35 Barlow,Arial,sans-serif}
.deck-vmax-alert[hidden]{display:none}
.brand-new-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px;align-items:center;margin:12px 0;padding:12px;border:1px dashed #ffffff33;border-radius:12px}
.brand-new-form strong{grid-column:1/-1}

/* v0.92.0 accueil connecté : bandeau d'état, bouton Jouer principal, historique compact, sections repliables */
.home-status{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:14px 0 16px}
.hs-chip{display:grid;gap:3px;padding:10px 12px;border:1px solid var(--pl-line,#ffffff1f);border-radius:12px;background:#12161b;text-decoration:none;min-width:0}
.hs-chip .hs-k{font:800 10px/1.1 Barlow,Arial,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:#a7afb6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hs-chip b{font:900 17px/1.1 'Barlow Condensed','Arial Narrow',sans-serif;color:#f3f0ea;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hs-chip.is-hot{border-color:#ffd76a88;background:#ffd76a14}.hs-chip.is-hot b{color:#ffd76a}
.hs-chip.is-ok b{color:#5fd38a}.hs-chip.is-warn{border-color:#f56a4066}.hs-chip.is-warn b{color:#f56a40}.hs-chip.is-off b{color:#7d858c}
.live-duels{display:grid;gap:8px}.live-duels:empty{display:none}
.live-duel{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid #5fd38a66;border-radius:12px;background:#5fd38a14}
.live-duel.is-waiting{border-color:#ffd76a55;background:#ffd76a10}
.live-duel>a:first-child{display:grid;gap:2px;min-width:0;text-decoration:none;flex:1}
.live-duel strong{font:800 italic 19px/1 'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase}
.live-duel small{color:#a7afb6;font-size:12px}
.live-duel .btn{flex:none;min-height:42px;padding:8px 16px;font-size:12px;box-shadow:none}
.play-main{width:100%;flex-direction:column;gap:3px;min-height:64px;margin-top:14px;font-size:16px}
.play-main small{font:700 12px/1 Barlow,Arial,sans-serif;letter-spacing:.04em;text-transform:none;opacity:.8}
.level-chips{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}
.level-chip{min-height:40px;border:1px solid #ffffff2a;border-radius:10px;background:transparent;color:#c9c4bb;font:800 12px/1 Barlow,Arial,sans-serif;letter-spacing:.06em;text-transform:uppercase}
.level-chip.on{border-color:#f56a40;color:#111;background:#f56a40}
.play-reward{margin:10px 0 0}.play-reward .reward-chip{margin:0}
.play-more{margin-top:10px;border-top:1px solid #ffffff14;padding-top:6px}
.play-more>summary,.weekly-duel-panel>summary,.home-progression>summary{cursor:pointer;list-style:none}
.play-more>summary::-webkit-details-marker,.weekly-duel-panel>summary::-webkit-details-marker{display:none}
.play-more>summary{padding:10px 0;font:800 12px/1 Barlow,Arial,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:#a7afb6;display:flex;justify-content:space-between}
.play-more>summary::after,.weekly-duel-panel>summary::after{content:'+';color:#f56a40;font-size:20px;line-height:.6}
.play-more[open]>summary::after,.weekly-duel-panel[open]>summary::after{content:'−'}
#app .play-options{grid-template-columns:repeat(2,minmax(0,1fr))}
#app .weekly-duel-panel{display:block;padding:0}
#app .weekly-duel-panel>summary{display:flex;align-items:center;gap:10px;padding:14px 18px}
#app .weekly-duel-panel>summary b{flex:1;min-width:0;font:800 italic 16px/1.1 'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#app .weekly-duel-panel>.weekly-duel-copy{padding:0 18px 16px}
#app .home-progression>summary{display:grid;grid-template-columns:auto minmax(40px,1fr) auto auto;gap:12px;align-items:center;padding:14px 18px;text-transform:none;letter-spacing:0}
#app .home-progression>summary::after{margin-left:0}
.hp-title{font:800 italic 16px/1 'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase}
.hp-bar{display:block;height:6px;border-radius:3px;background:#ffffff1c;overflow:hidden}.hp-bar b{display:block;height:100%;background:linear-gradient(90deg,#f56a40,#ffd76a)}
#app .home-progression>summary .hp-missions{font:700 12px/1 Barlow,Arial,sans-serif;color:#a7afb6;letter-spacing:0}
.form-pips{display:flex;align-items:center;gap:4px}.form-pips small{margin-left:6px;color:#a7afb6;font-size:12px}
.fp{display:grid;place-items:center;width:20px;height:20px;border-radius:6px;font:900 12px/1 'Barlow Condensed','Arial Narrow',sans-serif;font-style:normal}
.fp.is-win{color:#5fd38a;background:#5fd38a1f}.fp.is-loss{color:#ff6b6b;background:#ff6b6b1f}
.home-duels .list{margin-top:12px;gap:6px}
#app .home-duels .match-link{padding:8px 12px;min-height:46px}
#app .home-duels .match-link strong{font-size:16px}
#app .home-duels .match-link .muted{font-size:12px}
.home-duels .match-result{width:28px;height:28px;font-size:15px}
.history-all{display:block;margin-top:10px;padding:10px;text-align:center;border:1px dashed #ffffff2a;border-radius:10px;color:#f56a40;font:800 12px/1 Barlow,Arial,sans-serif;letter-spacing:.08em;text-transform:uppercase;text-decoration:none}
.history-all[hidden]{display:none}
.match-skel{height:46px;border-radius:12px;background:linear-gradient(90deg,#ffffff0a,#ffffff18,#ffffff0a);background-size:200% 100%;animation:match-skel 1.2s linear infinite}
@keyframes match-skel{to{background-position:-200% 0}}
@media(prefers-reduced-motion:reduce){.match-skel{animation:none}}
@media(max-width:760px){
  .home-main,.home-side{display:contents}
  .home-grid{gap:14px}
  .live-duels{order:0}.play-panel{order:1}.pack-economy-panel{order:2}.home-duels{order:3}.weekly-duel-panel{order:4}.home-progression{order:5}
  #app .play-options{grid-template-columns:1fr}
  #app .pack-economy-copy p,#app .pack-economy-copy h2{display:none}
  #app .pack-economy-panel{padding:14px 16px;gap:10px}
  #app .pack-economy-meta{margin-top:4px}
  #app .play-panel,#app .home-duels{padding:16px}
  .home-status{gap:6px;margin:10px 0 12px}.hs-chip{padding:8px 9px}.hs-chip b{font-size:15px}
}
/* v0.92.1 format et deck visibles avant de lancer le duel IA */
.play-panel>.play-setup{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}
.play-panel>.play-setup .play-format{max-width:none;margin:0;min-width:0}
.play-panel>.play-setup .input{width:100%}
@media(max-width:340px){.play-panel>.play-setup{grid-template-columns:1fr}}
.play-panel>.duel-incompat,.play-panel>#duel-rule-description{margin:8px 0 0}
/* v0.92.2 éditeur de deck : boutons d'enregistrement aussi au bout de la ligne du nom */
.deck-head-save{display:flex;gap:8px;flex-wrap:nowrap}
.deck-head-save .btn{white-space:nowrap}
@media(max-width:760px){.deck-head-save{grid-column:1/-1}.deck-head-save .btn{flex:1}}
/* v0.93.0 solde de pièces dans l'en-tête */
.header-coins{display:inline-flex;align-items:center;gap:4px;min-height:30px;padding:0 10px;border-radius:999px;border:1px solid #9bd3ff66;color:#9bd3ff;font:800 13px/1 Barlow,Arial,sans-serif;white-space:nowrap;cursor:default}
@media(max-width:760px){.header-coins{padding:0 8px;font-size:12px}}
@media(max-width:480px){.account{gap:5px}.header-tokens,.header-coins{padding:0 7px;font-size:12px}.account #logout{padding:6px 8px;font-size:11px;line-height:1.1}}
/* v0.93.2 objectifs de la semaine */
.weekly-head{margin-top:18px;padding-top:14px;border-top:1px solid #ffffff14}
.weekly-missions .mission-check{border-color:#62a7ff66}
.weekly-missions article.complete .mission-check{border-color:#5fd38a}
.weekly-head i{font-style:normal}
/* v0.94.0 enchères */
.auction-balance{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}
.auction-row{grid-template-columns:44px minmax(0,1fr) auto}
.auction-side{display:grid;gap:6px;justify-items:end;align-content:center}
.auction-time{font:900 20px/1 'Barlow Condensed','Arial Narrow',sans-serif;font-variant-numeric:tabular-nums;color:#ffd76a}
.auction-ot{font:800 11px/1 Barlow,Arial,sans-serif;font-style:normal;letter-spacing:.08em;text-transform:uppercase;color:#f56a40}
.auction-side .btn{min-height:40px;padding:8px 14px;font-size:12px;white-space:nowrap}
.auction-price{color:#ffd76a}
.auction-history{display:grid;gap:6px}
.auction-hist{display:flex;justify-content:space-between;gap:10px;padding:10px 12px;border:1px solid #ffffff14;border-radius:10px;background:#12161b}
.auction-hist small{color:#a7afb6;text-align:right}
.auctions-page h2{margin:22px 0 10px}
#d9-sheet .play-format{display:grid;gap:4px;max-width:none;margin:0 0 10px}
#d9-sheet .play-format .input{width:100%}
/* v0.94.2 aperçu des enchères sur l'accueil */
.home-auctions-slot:empty{display:none}
.home-auctions{display:grid;gap:6px;padding:12px 14px;border:1px solid #ffd76a44;border-radius:12px;background:#ffd76a0d;text-decoration:none}
.ha-row{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.ha-line{font:800 italic 17px/1.1 'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase}
.ha-line.is-ok{color:#5fd38a}.ha-line.is-warn{color:#f56a40}
.ha-row small{color:#a7afb6;font-size:12px;white-space:nowrap}
@media(max-width:760px){.home-auctions-slot{order:0}}
/* v0.94.3 filtres et historique des mises */
button.auction-hist{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer}
button.auction-hist span{font-weight:700}
.link-btn{background:none;border:0;padding:0;color:#9bd3ff;font:700 12px/1.2 Barlow,Arial,sans-serif;text-decoration:underline;cursor:pointer;justify-self:start}
.auction-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:8px 0}
.auction-filters .input{width:100%;text-transform:none;letter-spacing:.01em;min-width:0}
.auction-filters #auc-q{grid-column:1/-1}
@media(min-width:761px){.auction-filters{grid-template-columns:2fr 1fr 1fr 1fr}.auction-filters #auc-q{grid-column:auto}}
.auction-filters #auc-sort{grid-column:1/-1}@media(min-width:761px){.auction-filters #auc-sort{grid-column:auto}}
/* v0.94.4 accueil : booster en premier quand il est prêt, compte à rebours discret sinon, prochaines missions en deux lignes */
.pack-wait{display:flex;align-items:center;gap:10px;margin:0;padding:10px 14px;border:1px solid #ffffff14;border-radius:12px;background:#12161b;font:700 13px/1.2 Barlow,Arial,sans-serif;color:#a7afb6}
.pack-wait b{flex:1;color:#f3f0ea;font:800 15px/1.1 'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase}
button.home-goals{display:grid;gap:6px;width:100%;margin:0;padding:12px 14px;text-align:left;color:inherit;font:inherit;border:1px solid #ffffff1f;border-radius:12px;background:#12161b;cursor:pointer}
.hg-row{display:flex;align-items:baseline;gap:10px;min-width:0}
.hg-k{flex:none;font:800 10px/1.1 Barlow,Arial,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:#a7afb6}
.hg-row b{flex:1;min-width:0;font:800 italic 16px/1.1 'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hg-p{flex:none;font:800 13px/1 'Barlow Condensed','Arial Narrow',sans-serif;color:#ffd76a;font-variant-numeric:tabular-nums}
@media(max-width:760px){
  #app .pack-economy-panel.is-ready{order:0}
  .home-goals,.pack-wait{order:2}
}
/* v0.94.5 : compteur d'enchères actives (vert : je mène partout, rouge : dépassé quelque part) */
.main-nav .nav-alert.is-win{background:#2fae6b;color:#06180d}
.main-nav .nav-alert.is-lose{background:#ff665c;color:#fff}
.main-nav a.active .nav-alert{box-shadow:0 0 0 2px #111}
/* v0.94.5 : sur mobile le bandeau (logo, compte) reste fixé au-dessus du menu */
@media(max-width:760px){
  .shell>.top{position:sticky;top:0;z-index:31;background:#0b0c0def;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
  .shell>.top+.main-nav{top:72px}
  #app .admin-nav{top:122px!important}
}
@media(max-width:640px){
  .shell>.top+.main-nav{top:60px}
  #app .admin-nav{top:110px!important}
}
body.match-mode .shell>.top{position:static}
.weekly-won{color:var(--green,#4ade80);font-weight:800;margin-left:.3em}
.live-countdown{font-variant-numeric:tabular-nums}
.wonder-feed{scrollbar-width:thin;scrollbar-color:#ff6a3d99 #ffffff12}
.wonder-feed::-webkit-scrollbar{height:8px}
.wonder-feed::-webkit-scrollbar-track{background:#ffffff12;border-radius:10px}
.wonder-feed::-webkit-scrollbar-thumb{background:#ff6a3d99;border-radius:10px}

/* v0.95: premium booster — UR card of the series in the pack, holo foil, 3D tilt, rare charge-up and flash */
.booster-art-hero{position:absolute;inset:0;z-index:-2;overflow:hidden;background:#07090a}
.booster-art-hero img{display:block}
/* v0.95.2: car photos are wide. The same photo, blurred, fills the pack; the whole car sits sharp across the middle. */
.booster-art-hero-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scale(1.35);filter:blur(14px) saturate(1.4) brightness(.6)}
.booster-art-hero-car{position:absolute;z-index:1;left:-16%;width:132%;top:47%;transform:translateY(-50%);height:auto;filter:saturate(1.15) contrast(1.06);
  -webkit-mask:linear-gradient(180deg,transparent 0,#000 16%,#000 84%,transparent 100%);mask:linear-gradient(180deg,transparent 0,#000 16%,#000 84%,transparent 100%)}
.booster-art-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#000c 0,#0004 22%,transparent 40%,transparent 52%,color-mix(in srgb,var(--pack2) 70%,#000e) 80%,#000 100%),linear-gradient(155deg,color-mix(in srgb,var(--pack) 45%,transparent),transparent 55%)}
.booster-art.has-hero{background:#07090a}
.booster-art.has-hero .booster-art-mark{visibility:hidden}
.booster-art.has-hero::after{display:none}
.booster-art-foil{position:absolute;inset:0;z-index:-1;pointer-events:none;mix-blend-mode:color-dodge;opacity:.13;
  background:linear-gradient(115deg,transparent 18%,#ff6ad5 30%,#ffe36a 40%,#6affb4 50%,#6ad1ff 60%,#c06aff 70%,transparent 82%);background-size:260% 260%;background-position:var(--fx,30%) 50%;transition:background-position .25s ease-out}
.booster-art.has-hero .booster-art-title,.booster-art.has-hero .booster-art-sub{text-shadow:0 2px 8px #000}

.pack-opening-ambient{position:absolute;inset:-10%;z-index:0;pointer-events:none;overflow:hidden}
.pack-opening-ambient img{width:100%;height:100%;object-fit:cover;filter:blur(48px) saturate(1.6);opacity:.38;transform:scale(1.2)}
.pack-opening-overlay .pack-opening-shell{z-index:1;background:linear-gradient(155deg,#151a1ccc,#090c0de6)}
.booster-open-tilt{display:block;width:100%;transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .18s ease-out;animation:pack-float 3.6s ease-in-out infinite}
.booster-open-target .booster-art{box-shadow:0 30px 60px #000c,0 0 0 1px #ffffff22,0 0 50px color-mix(in srgb,var(--pack) 30%,transparent)}
.booster-open-target .booster-art-foil{opacity:.32}
.booster-open-target .booster-art-shine{animation:foil-sweep 2.8s ease-in-out infinite;opacity:.55}
.pack-opening-overlay.is-opening .booster-open-tilt{animation:none}
.pack-opening-overlay.is-opening .booster-art{animation:pack-shake-hard .09s linear infinite}
.pack-opening-overlay.is-opening .booster-art-cut{border-top:2px solid #fff;box-shadow:0 0 18px #fff,0 0 40px #ffe9a8}
.pack-opening-flash{position:absolute;inset:0;z-index:5;pointer-events:none;opacity:0;background:radial-gradient(circle at 50% 50%,#fff 0,#fff6d8 18%,transparent 62%)}
.pack-opening-overlay.is-torn .pack-opening-flash{animation:pack-flash .52s ease-out both}
@keyframes pack-float{0%,100%{translate:0 0}50%{translate:0 -10px}}
@keyframes pack-shake-hard{0%,100%{transform:rotate(-1deg) translate(0,0)}25%{transform:rotate(-2.5deg) translate(-4px,1px)}50%{transform:rotate(.5deg) translate(3px,-2px)}75%{transform:rotate(1.5deg) translate(4px,1px)}}
@keyframes pack-flash{0%{opacity:0;transform:scale(.4)}35%{opacity:1}100%{opacity:0;transform:scale(1.6)}}

.reveal1-card.is-charging .reveal1-flip{animation:reveal1-charge .08s linear infinite}
.reveal1-card.is-charging .reveal1-back .card-back{box-shadow:0 22px 40px #000a,0 0 30px var(--glow),0 0 80px var(--glow);animation:reveal1-glow .6s ease-in both}
.reveal1-flash{position:absolute;inset:0;z-index:3;pointer-events:none;opacity:0;background:radial-gradient(circle at 50% 50%,#fff 0,color-mix(in srgb,var(--glow) 70%,#fff) 20%,transparent 65%)}
.reveal1.is-flash .reveal1-flash{animation:pack-flash .6s ease-out both}
.reveal1.is-rare .reveal1-card.is-flipped .reveal1-burst{--burst:color-mix(in srgb,var(--glow) 60%,transparent);background:repeating-conic-gradient(from 0deg,var(--burst) 0 5deg,transparent 5deg 18deg);animation:reveal1-burst 2s ease-out both}
@keyframes reveal1-charge{0%,100%{transform:rotateY(180deg) translate(0,0)}25%{transform:rotateY(180deg) translate(-3px,1px) rotate(-1deg)}75%{transform:rotateY(180deg) translate(3px,-1px) rotate(1deg)}}
@keyframes reveal1-glow{from{filter:brightness(1)}to{filter:brightness(1.6)}}
@media(prefers-reduced-motion:reduce){.booster-open-tilt,.booster-open-target .booster-art-shine,.pack-opening-overlay.is-opening .booster-art,.pack-opening-flash,.reveal1-flash,.reveal1-card.is-charging .reveal1-flip{animation:none!important}.booster-open-tilt{transform:none}}

/* v0.95.1: real pack opening — tear line, flying strip, cards sliding out, pack dropping, fan */
.pack3d{position:relative;display:block}
.pack3d .booster-art{position:relative;z-index:2}
.pack3d-tearline{position:absolute;left:0;right:0;top:11%;height:3px;z-index:4;pointer-events:none;opacity:0;transform:scaleX(0);transform-origin:left center;background:linear-gradient(90deg,#fff 0,#fff6d0 70%,#ffd76a);box-shadow:0 0 12px #fff,0 0 28px #ffd76a}
.is-tearing .pack3d-tearline{animation:tear-run .43s cubic-bezier(.55,0,.45,1) forwards}
.is-torn .pack3d-tearline{animation:tear-fade .35s ease-out forwards}
.is-tearing .pack3d{animation:pack-strain .09s linear infinite}
.is-torn .pack3d{animation:none}
.pack-opening-overlay.is-unpacking .booster-open-tilt{animation:none}
.pack-opening-overlay.is-unpacking .booster-art{animation:none;transform:rotate(-1deg);filter:none}
.pack-opening-overlay.is-unpacking .booster-art.pack3d-flap{position:absolute;left:0;top:0;width:100%;z-index:3;animation:flap-off .8s cubic-bezier(.2,.7,.3,1) forwards}
.pack-opening-overlay.is-fanned .booster-art.pack3d-body{animation:pack-drop .6s cubic-bezier(.5,0,.75,0) forwards}
.pack-opening-overlay.is-unpacking .pack-opening-copy,.pack-opening-overlay.is-unpacking .booster-open-hint,.pack-opening-overlay.is-unpacking .pack-opening-close{opacity:0;transition:opacity .3s}
.pack3d-cards{position:absolute;inset:0;z-index:1;pointer-events:none}
.is-fanned .pack3d-cards{z-index:3}
.pack3d-card{position:absolute;left:7%;top:14%;width:86%;transition:transform .7s cubic-bezier(.2,.8,.2,1) calc(var(--i) * 60ms)}
.pack3d-card .card-back{box-shadow:0 10px 24px #000b;transition:border-color .4s .3s,box-shadow .4s .3s}
.is-out .pack3d-card{transform:translateY(calc(-62% - var(--i) * 2.5%))}
.is-fanned .pack3d-card{transform:translate(calc(var(--o) * 15%),calc(4% + var(--o) * var(--o) * 2%)) rotate(calc(var(--o) * 6deg)) scale(.8);transition-duration:.55s;transition-delay:calc(var(--i) * 55ms)}
.is-fanned .pack3d-cards.is-rare .card-back{border-color:var(--glow);box-shadow:0 10px 24px #000b,0 0 26px var(--glow)}
@keyframes tear-run{from{opacity:1;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}
@keyframes tear-fade{from{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(1) scaleY(3)}}
@keyframes pack-strain{0%,100%{transform:translate(0,0)}50%{transform:translate(1px,-1px)}}
@keyframes flap-off{0%{transform:rotate(-1deg);opacity:1}25%{transform:translate(6%,-10%) rotate(7deg);opacity:1}100%{transform:translate(75%,-95%) rotate(40deg);opacity:0}}
@keyframes pack-drop{to{transform:translateY(90%) rotate(8deg);opacity:0}}
.pack-opening-overlay.is-unpacking.is-torn .pack-opening-flash{animation:pack-flash-soft .6s ease-out both}
@keyframes pack-flash-soft{0%{opacity:0;transform:scale(.3)}30%{opacity:.55}100%{opacity:0;transform:scale(1.4)}}
.pack-opening-overlay.is-unpacking .booster-open-target{pointer-events:none}
/* v0.95.2: iPhone Safari lost the tap on the 3D-tilted pack: the button itself takes every tap. */
.booster-open-target *{pointer-events:none}

/* v0.95.3: lighter rendering for iPhone Safari / PWA (the opening could freeze there). No backdrop blur behind
   the opening (its background is already opaque), page behind hidden, no blurred ambient photo, no blur or
   blend mode on the pack being opened, no holo foil on the boosters of the list. */
.pack-opening-overlay{backdrop-filter:none;-webkit-backdrop-filter:none;background:radial-gradient(circle at 50% 45%,#34413d44,transparent 36%),#030506}
body:has(#pack-opening) #app,body:has(.reveal1) #app{visibility:hidden}
.pack-opening-overlay .booster-art-hero-bg{filter:none;transform:scale(2.2);opacity:.35}
.pack-opening-overlay .booster-art-foil{mix-blend-mode:normal;opacity:.12}
.booster-art-foil{display:none}
.booster-open-target .booster-art-foil{display:block}
/* v0.95.5: messages above every window (the booster opening hid its errors behind it) */
#toast{z-index:100000}

/* v0.95.6: shop on desktop (Arnaud: poor rendering). Series side by side, product cards standing up with a large
   booster, price button on one line. Phones keep the compact row layout. */
#app .booster-market-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:18px;align-items:start}
.booster-market-group{min-width:0;display:grid;gap:12px}
.booster-market-group .booster-market-series{margin:0}
.booster-market-items{display:grid;gap:14px}
#app .booster-market-btn,.booster-market-card .btn{white-space:nowrap}
@media(min-width:761px){
  #app .booster-market-card{grid-template-columns:1fr;justify-items:center;text-align:center;gap:14px;padding:22px 18px 18px;transition:transform .18s ease,border-color .18s ease}
  #app .booster-market-card:hover{transform:translateY(-4px);border-color:#ff6b3d55}
  #app .booster-market-art{width:190px;max-width:100%}
  #app .booster-market-art .booster-art{width:100%}
  #app .booster-market-card>div:last-child{width:100%}
  #app .booster-market-card p{min-height:0}
  #app .booster-market-meta{justify-content:center}
}

/* v0.95.8: UR (and SS) shine differently from SR (Arnaud): a glint of light runs around the contour. Collector cards only (collection, reveal, zoom), never on the duel board. SR stays still. */
@property --pl-ang{syntax:'<angle>';inherits:false;initial-value:0deg}
.pl-collector.rarity-ur{--pl-glint:#fff3b0}
.pl-collector.rarity-ss{--pl-glint:#ffd0c8}
.pl-collector.rarity-ur::after,.pl-collector.rarity-ss::after{
  content:'';position:absolute;inset:0;z-index:8;pointer-events:none;border-radius:inherit;padding:max(2.5px,calc(var(--u)*1.3));
  background:conic-gradient(from var(--pl-ang),transparent 0deg 200deg,color-mix(in srgb,var(--pl-r) 80%,transparent) 270deg,var(--pl-glint) 315deg,#fff 332deg,var(--pl-glint) 342deg,transparent 360deg);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;
  mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);
  animation:pl-glint 3.6s linear infinite}
.pl-collector.rarity-ss::after{animation-duration:2.6s}
@keyframes pl-glint{to{--pl-ang:360deg}}
@media (prefers-reduced-motion:reduce){.pl-collector.rarity-ur::after,.pl-collector.rarity-ss::after{animation:none!important}}
/* v0.95.9: board readability (player feedback). A dark gap now separates the rarity frame from the owner ring
   (orange = you, blue = rival): a blue rare card held by you no longer reads as one blue/orange blur. */
.board .cell.occupied{padding:8px!important}
.pl-card.pl-board.owned,.pl-card.pl-board.enemy{box-shadow:0 0 0 2px var(--pl-r),0 0 0 5px #0b0d10,0 0 0 8px var(--own),0 6px 14px #000a}
.pl-card.pl-board.synergy-brand{box-shadow:0 0 0 2px var(--pl-r),0 0 0 5px #0b0d10,0 0 0 8px var(--own),0 0 22px #5b8fe2aa,0 6px 14px #000a}
.pl-card.pl-board.synergy-country{box-shadow:0 0 0 2px var(--pl-r),0 0 0 5px #0b0d10,0 0 0 8px var(--own),0 0 22px #59b77baa,0 6px 14px #000a}
@keyframes d9-capture{
  0%{transform:perspective(700px) rotateY(0);box-shadow:0 0 0 2px var(--pl-r),0 0 0 5px #0b0d10,0 0 0 8px var(--own-from),0 6px 14px #000a;filter:brightness(1)}
  49%{transform:perspective(700px) rotateY(90deg) scale(.94);box-shadow:0 0 0 2px var(--pl-r),0 0 0 5px #0b0d10,0 0 0 8px var(--own-from),0 6px 14px #000a;filter:brightness(1.7)}
  51%{transform:perspective(700px) rotateY(90deg) scale(.94);box-shadow:0 0 0 2px var(--pl-r),0 0 0 5px #0b0d10,0 0 0 8px var(--own),0 0 26px var(--own);filter:brightness(1.7)}
  80%{box-shadow:0 0 0 2px var(--pl-r),0 0 0 5px #0b0d10,0 0 0 8px var(--own),0 0 26px var(--own)}
  100%{transform:none;box-shadow:0 0 0 2px var(--pl-r),0 0 0 5px #0b0d10,0 0 0 8px var(--own),0 6px 14px #000a;filter:brightness(1)}}
/* v0.95.10 (Arnaud): auctions show how many copies I own; my own sales show my name in green. */
.auction-owned{justify-self:start;display:inline-block;margin:2px 0;padding:1px 7px;border:1px solid #ffffff2e;border-radius:99px;color:var(--pl-text,#f3f0ea);font:800 10px/1.4 Barlow,Arial,sans-serif;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
.auction-seller.is-me{color:#6fcf8e;font-weight:800}
.booster-market-card.is-plain>div:last-child{display:flex;flex-direction:column;justify-content:flex-end}
/* v0.96: booster tickets. Shop cards get a "Ticket" button next to the token price; a purchase lands in the inventory. */
.booster-wallet{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}
.ticket-pill.has-tickets{border-color:#6fcf8e88;color:#6fcf8e}
.booster-buy-row{display:flex;gap:8px;width:100%}
.booster-buy-row .btn{flex:1 1 auto;min-width:0}
.booster-buy-row .ticket-btn{flex:0 0 auto;background:#6fcf8e;color:#0b1a10;border-color:#6fcf8e}
.booster-added{display:grid;justify-items:center;gap:14px;text-align:center}
.booster-added-art .booster-art{width:150px}
.booster-added-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
#app .booster-market-card .booster-buy-row .btn{width:auto;flex:1 1 0;min-width:0}
#app .booster-market-card .booster-buy-row .ticket-btn{flex:0 0 auto;padding-left:14px;padding-right:14px;background:#6fcf8e;color:#0b1a10;border-color:#6fcf8e}
/* v0.96.1: booster ticket counter in the header, next to tokens and coins (green when there is one to spend). */
.header-tickets{display:inline-flex;align-items:center;gap:4px;min-height:30px;padding:0 10px;border-radius:999px;border:1px solid #ffffff2e;color:#a9b3b5;font:800 13px/1 Barlow,Arial,sans-serif;text-decoration:none;white-space:nowrap}
.header-tickets svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linejoin:round}
.header-tickets.has-tickets{border-color:#6fcf8e88;color:#6fcf8e}
@media(max-width:760px){.header-tickets{padding:0 8px;font-size:12px}}
@media(max-width:480px){.header-tickets{padding:0 7px}.header-tickets svg{width:13px;height:13px}}
@media(max-width:380px){.top .brand>span:not(.brand-mark){display:none}}
@media(max-width:400px){.header-tickets,.header-tokens,.header-coins{padding:0 5px;gap:3px}}
/* v0.96.3 (Thomas): sound and logout live in the profile's account panel, no longer in the header. */
.profile-device-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.profile-device-actions .btn{display:inline-flex;align-items:center;gap:8px}
.profile-device-actions svg{width:18px;height:18px}

/* v0.96.4 : icône ticket partout, boutons d'achat sur deux lignes, ouverture rapide */
.ticket-pill svg,.ticket-btn svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linejoin:round;flex:0 0 auto}
.ticket-pill{display:inline-flex;align-items:center;gap:5px}
.ticket-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px}
.booster-market-card .booster-buy-row{flex-wrap:wrap}
.booster-market-card .booster-buy-row+.booster-buy-row{margin-top:8px}
#app .booster-market-card .booster-buy-row .ticket-btn{flex:1 1 0;padding-left:10px;padding-right:10px}
.booster-quick{display:flex;flex-direction:column;align-items:flex-start;gap:6px;margin-top:16px}
.booster-quick small{color:#a9b3b5}

/* v0.96.6 (Arnaud) : infobulle au survol / focus de chaque monnaie de l'en-tête */
.header-tickets,.header-tokens,.header-coins{position:relative;text-decoration:none;cursor:pointer}
.header-tickets[data-tip]::after,.header-tokens[data-tip]::after,.header-coins[data-tip]::after{content:attr(data-tip);position:absolute;top:calc(100% + 8px);width:230px;padding:9px 11px;border-radius:10px;border:1px solid #ffffff2e;background:#0d1214;color:#d7dedf;font:600 12px/1.4 Barlow,Arial,sans-serif;white-space:normal;text-align:left;box-shadow:0 8px 24px #000a;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .12s;z-index:60}
.header-tickets[data-tip]::after{left:0}
.header-tokens[data-tip]::after{left:50%;transform:translateX(-50%)}
.header-coins[data-tip]::after{right:0}
@media(hover:hover){.header-tickets[data-tip]:hover::after,.header-tokens[data-tip]:hover::after,.header-coins[data-tip]:hover::after{opacity:1;visibility:visible}}
.header-tickets[data-tip]:focus-visible::after,.header-tokens[data-tip]:focus-visible::after,.header-coins[data-tip]:focus-visible::after{opacity:1;visibility:visible}

/* v0.96.8 (Arnaud) : ouverture multiple, cartes regroupées par booster */
.reveal1-group{display:grid;gap:10px;padding-top:6px}
.reveal1-group+.reveal1-group{border-top:1px solid #ffffff1f;padding-top:16px}
.reveal1-group h3{margin:0;font:800 italic 20px/1 'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase;display:flex;align-items:baseline;gap:10px}
.reveal1-group h3 small{font:600 12px/1 Barlow,Arial,sans-serif;letter-spacing:.04em;color:#a7afb6;text-transform:none}
.reveal1.is-summary .reveal1-summary{margin:auto;align-self:start}

.reveal1-sum-head .reveal1-series{margin:0 0 6px;color:#f2efe9;font:800 15px/1.2 Barlow,Arial,sans-serif;letter-spacing:.04em}

/* v0.96.11 : place pour l'anneau « nouvelle » (4 px d'espace + 3 px de vert) entre les cartes */
.reveal1-grid{gap:18px 16px}

/* v0.96.11 : cartes en petit cliquables (agrandissement) */
.wonder-mini .pl-card,.album-slot .pl-card,.owned-slot .pl-card,.deck-thumb .pl-card,.deck-row-card .pl-card,.auction-row .pl-card{cursor:zoom-in}

/* v0.96.13 : « Mes cartes », boutons sous la carte sur une ligne propre (compteur au-dessus, actions pleine largeur) */
.owned-slot .owned-meta{flex-direction:column;align-items:stretch;gap:6px}
.owned-slot .owned-actions{width:100%;margin-left:0;display:flex;flex-wrap:nowrap;gap:6px}
.owned-slot .owned-actions .btn{flex:1 1 0;min-width:0;padding-left:6px;padding-right:6px;white-space:nowrap}
.owned-slot .owned-actions .report-btn{flex:0 0 auto}

/* v0.96.15 : le résumé de tirage ne doit pas dépasser de l'écran (colonnes de grille bornées) */
.reveal1.is-summary{grid-template-columns:minmax(0,1fr)}
.reveal1-summary,.reveal1-group{grid-template-columns:minmax(0,1fr);min-width:0;max-width:100%}
.reveal1-grid{min-width:0}

/* v0.96.17 : garde-fou, rien ne doit élargir la page ni l'écran de résumé au-delà de l'écran */
html,body{max-width:100%;overflow-x:clip}
.reveal1,.reveal1.is-summary{max-width:100vw;overflow-x:hidden}
.reveal1-summary,.reveal1-group,.reveal1-grid{width:100%;max-width:100%;box-sizing:border-box}
.reveal1-mini{min-width:0;max-width:100%}

/* v0.96.18 (Arnaud) : fenêtre « Enchère remportée » */
.auction-won{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:16px;background:#000c;animation:aw-fade .25s ease-out both;overflow:auto}
.auction-won-box{--glow:#f2d354;width:min(100%,380px);margin:auto;display:grid;gap:12px;justify-items:center;text-align:center;padding:22px 18px;border-radius:18px;border:1px solid #ffffff2e;background:#0d1214}
.auction-won.rarity-sr .auction-won-box{--glow:#b181ff}.auction-won.rarity-ur .auction-won-box,.auction-won.rarity-ss .auction-won-box{--glow:#ff665c}
.auction-won-box h2{margin:0;font:800 italic 34px/1 'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase;color:var(--glow);animation:aw-title .6s cubic-bezier(.2,1.5,.4,1) both}
.auction-won-box p{margin:0;color:#d7dedf}
.auction-won-stage{position:relative;width:min(62vw,230px);padding:10px 0}
.auction-won-card{animation:aw-card .8s cubic-bezier(.2,1.3,.35,1) .15s both;filter:drop-shadow(0 0 22px var(--glow))}
.auction-won-card .pl-card{width:100%}
.auction-won-sparks i{position:absolute;left:50%;top:50%;width:7px;height:7px;margin:-3px;border-radius:50%;background:var(--glow);opacity:0;animation:aw-spark 1.1s ease-out var(--d) .5s both;--r:120px}
@keyframes aw-fade{from{opacity:0}}
@keyframes aw-title{from{transform:scale(.6);opacity:0}}
@keyframes aw-card{from{transform:translateY(40px) scale(.6) rotate(-6deg);opacity:0}60%{transform:translateY(-6px) scale(1.04) rotate(1deg)}}
@keyframes aw-spark{0%{opacity:1;transform:rotate(var(--a)) translateX(30px)}100%{opacity:0;transform:rotate(var(--a)) translateX(var(--r)) scale(.3)}}
.auction-won-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
@media(prefers-reduced-motion:reduce){.auction-won,.auction-won-box h2,.auction-won-card,.auction-won-sparks i{animation:none!important}.auction-won-sparks{display:none}}

/* v0.96.19 (Thomas) : barres de tirets supprimées ; sélecteur de langue dans le profil (pied de page seulement hors connexion) */
body.is-auth footer .lang-switch{display:none}
.profile-lang{display:flex;align-items:center;gap:10px;margin-top:14px;flex-wrap:wrap}
.profile-lang>span{font:700 12px/1 Barlow,Arial,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#a7afb6}
.profile-lang .lang-switch{margin:0}
.profile-lang .lang-switch button{padding:9px 14px;font-size:13px}

/* v0.96.21 : invitation à installer l'app / activer les notifications */
.install-hint{position:fixed;left:50%;bottom:calc(14px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:1150;width:min(94vw,460px);display:grid;gap:10px;padding:14px 16px;border-radius:14px;border:1px solid #ffffff2e;background:#0d1214f2;box-shadow:0 10px 30px #000a;animation:aw-fade .3s ease-out both}
.install-hint.is-out{opacity:0;transition:opacity .3s}
.install-hint-text{display:grid;gap:4px}.install-hint-text b{font:800 16px/1.2 Barlow,Arial,sans-serif}.install-hint-text small{color:#a9b3b5;font:600 13px/1.4 Barlow,Arial,sans-serif}
.install-hint-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.install-hint-actions .btn{min-height:0;padding:9px 16px;font-size:13px}
.install-hint-never{background:none;border:0;color:#a9b3b5;font:600 12px/1 Barlow,Arial,sans-serif;text-decoration:underline;cursor:pointer;margin-left:auto;padding:6px}
