/* Compact screens based on the approved Carto references. */
.money-cards{display:flex;flex-direction:column;flex:1;min-height:0;gap:12px}.money-card{flex:1;min-height:0;background:#081e33e8;border:1px solid #d5bd7c66;border-radius:16px;padding:16px 20px;display:flex;flex-direction:column;justify-content:center;gap:5px}.money-card>span{font-size:14px;color:#cfdae4}.money-card>strong{font-size:clamp(28px,5dvh,42px);letter-spacing:-.04em;color:#ffe09a;line-height:1.15}.money-card small{font-size:12px;color:#b7c7d5}.money-card.wallet{background:linear-gradient(120deg,#173952ed,#0a2239f0);border-color:#edcc78}.boutique.layout{max-width:560px}.boutique .sell-main{min-height:56px;flex-shrink:0}.boutique>.text-btn{min-height:32px;font-size:13px;flex-shrink:0}
.wallet-strip{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-shrink:0}.wallet-strip .text-btn{min-height:30px;font-size:12px;padding:0}.wallet-strip strong{color:#ffdf87;margin-left:5px;font-size:14px}.purchase-formats{display:flex;justify-content:center;gap:6px;flex-shrink:0}.purchase-formats button{flex:1;min-height:35px;background:#081e34ce;border:1px solid #ffffff2c;border-radius:8px;color:#cbd5df;font-size:13px}.purchase-formats button.active{border-color:#ffdb7b;color:#ffdb7b;background:#173047}.product-price{display:flex;justify-content:space-between;align-items:center;width:100%;color:#ffe08c;font-size:19px;font-weight:800;padding:5px 0 0;margin-top:5px;border-top:1px solid #ffffff20;min-height:30px}.product-price small{font-size:11px;color:#bfd0dc;font-weight:400}.products .pack-information h2{font-size:clamp(16px,2.3dvh,21px)}.products .pack-information{padding:9px 12px}.products .carousel-stage{min-height:85px}.products .split-actions .btn{min-height:46px;font-size:14px}
.sale-filters{display:flex;gap:8px;flex-shrink:0;align-items:center}.sale-filters .input{flex:1}.sale-filters .text-btn{font-size:12px}.sale-filters .active{color:#ffdb79}.sale-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}.sale-grid .selected{outline:2px solid #ffdc7b;outline-offset:3px;border-radius:5px}.sale-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-shrink:0;padding:7px 10px;background:#081e34d9;border-radius:8px;font-size:13px}.sale-summary strong{color:#ffdc7b;font-size:20px}.sale-summary .text-btn{font-size:12px;padding:0}.sell .btn{flex-shrink:0}.sell.layout,.stock.layout,.ledger.layout{max-width:620px}.sale-detail{display:flex;gap:18px;align-items:center;margin:15px 0}.sale-detail-art{height:200px;width:143px;flex-shrink:0}.sale-detail-art .image-wrap{height:100%;width:100%}.sale-detail h3{font-size:18px;margin:0 0 8px}.sale-detail p{font-size:13px;margin-bottom:8px}.sale-detail strong{display:block;font-size:23px}.sale-detail small{display:block;font-size:11px;line-height:1.4;margin-top:5px}.quantity-stepper{display:flex;align-items:center;justify-content:center;gap:12px}.quantity-stepper input{width:66px;padding:8px;border:1px solid #9dafc0;border-radius:8px;background:white;color:#102c43;text-align:center;font-size:20px}.quantity-stepper label{display:flex;align-items:center;gap:5px;font-size:12px}.sale-note{font-size:13px;line-height:1.5;margin:15px 0}.transaction-lines{max-height:40dvh;overflow:auto;margin:15px 0}.transaction-lines>div{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid #b5c6d4}.transaction-lines span{font-size:14px}.transaction-lines small{display:block;font-size:11px;margin-top:3px}.transaction-lines strong{font-size:14px;white-space:nowrap}.transaction-total{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#dae6ef;border-radius:10px;padding:14px;margin-top:15px;font-size:14px}.transaction-total strong{font-size:23px}.purchase-detail{display:grid;gap:8px;margin-top:15px}.purchase-detail h3{font-size:19px}.purchase-detail p{font-size:13px}.price-note{font-size:12px;line-height:1.5;margin-bottom:15px}.purchase-choices{display:flex;flex-direction:column;gap:10px}.purchase-choices .btn{margin:0}.purchase-choices~.micro-note{margin-top:12px}.stock-list{flex:1;min-height:0;display:grid;grid-template-rows:repeat(3,minmax(0,1fr));gap:12px}.stock-row{display:flex;align-items:center;gap:16px;background:#081e34e6;border:1px solid #c6b07466;border-radius:12px;padding:12px;min-height:0}.stock-row>div:last-child{flex:1;min-width:0}.stock-row strong{font-size:16px}.stock-row p{font-size:12px;color:#c4d2dd;margin:5px 0 8px}.stock-art{height:100%;max-height:125px;aspect-ratio:.6;flex-shrink:0}.stock-icon{width:65px;color:#ffda7f}.stock-icon .icon{width:45px;height:45px}.stock-buttons{display:flex;gap:8px}.stock-row .btn{font-size:13px;min-height:36px;margin:0;padding:6px 12px}.ledger-list{flex:1;min-height:0;display:grid;grid-template-rows:repeat(4,minmax(0,1fr));gap:10px}.ledger-row{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#082138df;border:1px solid #b4cad340;border-radius:12px;padding:15px}.ledger-row strong{font-size:14px}.ledger-row>strong{color:#ffdc86;white-space:nowrap}.ledger-row small{display:block;color:#bbccda;font-size:12px;margin-top:5px}
.cover-art-space{width:100%;position:relative;overflow:hidden}.cover-art-space .image-wrap{width:100%;height:100%;background:transparent;border-radius:0;aspect-ratio:auto;opacity:.65;filter:sepia(.7) saturate(.65)}.cover-art-space .image-wrap img{object-fit:cover;object-position:50% 25%}.cover-art-space .fallback{font-size:10px}.binder-cover:not(.illustrated) .cover-art-space{mask-image:linear-gradient(transparent,#000 15%,#000 85%,transparent)}
@media(max-height:720px){.money-cards{gap:9px}.money-card{padding:12px 16px;gap:4px}.money-card>strong{font-size:29px}.sale-detail-art{height:150px;width:107px}.sale-detail{margin:10px 0;gap:12px}.sale-detail h3{font-size:16px}.wallet-strip .text-btn{min-height:25px}.purchase-formats button{min-height:31px}.product-price{font-size:17px;margin-top:3px;padding-top:4px}.products .pack-information{padding:7px 10px}.products .pack-information h2{font-size:16px;margin:4px 0}.products .selector-tools{min-height:27px}.products .selector-tools .text-btn{min-height:27px}.sale-summary strong{font-size:17px}.stock-row{gap:10px;padding:9px}.stock-row p{margin:4px 0}.stock-row .btn{min-height:32px}.ledger-row{padding:12px}}
body:not([data-view=home]){background-image:url('/assets/ship-deck-v4.webp');background-position:center center}
body:before{background:linear-gradient(#051d3680,#061d3455 50%,#061d3470);backdrop-filter:blur(3px)}
body[data-view=products]:before{backdrop-filter:blur(1px);background:linear-gradient(#061a3545,transparent 65%,#061a3522)}
.header #language{margin-left:auto;background:#08233dc9;color:white;border:1px solid #ffffff40;min-width:64px;border-radius:12px}
.header:has(#language)>.icon-btn{margin-left:8px}.header-note{margin-left:auto}
.layout.products,.layout.collection{max-width:710px;padding-inline:18px}
.collection .game-heading{padding-top:clamp(2px,3dvh,35px)}.collection .game-heading h1{font-size:clamp(29px,5.2dvh,44px)}
.collection .eyebrow{letter-spacing:.2em;font-size:11px;color:#c1ccd6;margin-bottom:7px}
.tabs{border-radius:12px;padding:0;overflow:hidden}.tabs button{border-radius:11px;min-height:44px;font-weight:700}.tabs .active{background:linear-gradient(110deg,#ffe78a,#ffd555)}
.products .carousel-stage{margin:5px -10px;min-height:110px}.carousel-item{height:80%;width:49%;max-width:300px;top:47%}.carousel-item.selected{filter:drop-shadow(0 5px 10px #001124aa)}.stage-arrow{color:#ffdd85;background:#09243ce8}.carousel-code{bottom:-12px;border:1px solid #ffffff45;padding:5px 12px}.selected .carousel-code{color:#ffdf85;border-color:#ffdf85}
.pack-information{background:#071d32ee;border:1px solid #d2c18f80;box-shadow:none}.pack-information h2{font-size:clamp(17px,2.5dvh,24px);letter-spacing:-.035em}.pack-information p{font-size:13px}.selector-tools{margin:0;min-height:32px}.selector-tools .text-btn{font-size:11px;min-height:32px}.products .split-actions .btn{min-height:52px}
.binder-shelf{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;max-width:600px;width:100%;margin:auto;justify-items:center;padding:12px 2px;align-items:center}
.binder-cover{max-height:430px;aspect-ratio:.64;max-width:270px;transform:rotateY(-5deg);padding-left:11px;padding-right:5px}.binder-face{padding:clamp(14px,3dvh,28px) 10px 15px;gap:9px}.binder-cover.illustrated .binder-face{background:var(--cover-art) center/100% 100%;border:0;box-shadow:inset 4px 0 7px #0005}.illustrated .binder-face:before{display:none}.cover-code{font:500 clamp(28px,5dvh,49px)/1.1 Georgia,serif;color:#f7dfa0;letter-spacing:0}.cover-art-space{flex:1;display:flex;align-items:center;justify-content:center;min-height:10px}.cover-art-space .icon{width:75px;height:75px;opacity:.22}.cover-count{font-size:20px;color:#fff}.cover-count>span{font-size:15px;color:#d4cbbd}.cover-bottom{font-size:12px;letter-spacing:.07em}.binder-spine{width:16px;font-size:12px}.collection .screen-pager{gap:26px}.collection-tools{display:flex;justify-content:space-between;align-items:center;flex-shrink:0;gap:8px}.collection-tools .text-btn{min-height:36px;font-size:12px}.collection-tools .icon{width:18px;height:18px}
.nav{border-radius:20px 20px 0 0;background:#081b2fea}.nav button{padding:7px 4px;min-height:52px}.nav .active{background:linear-gradient(120deg,#ffe98e,#ffdc63);color:#081d32}
.crew-intro{font-size:12px;line-height:1.4;color:#d3e0e9}.crew-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:10px;flex:1;min-height:0}.crew-slot{display:flex;flex-direction:column;align-items:center;gap:5px;padding:8px 5px;border:1px solid #aec5d659;border-radius:12px;background:#081f37db;min-height:0;overflow:hidden;color:white}.crew-slot:first-child{border-color:#f7d77d}.crew-slot .image-wrap{flex:1;min-height:0;width:100%;background:none;aspect-ratio:auto}.crew-slot strong{font-size:11px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0}.crew-slot small{font-size:9px;color:#bfd1de;flex-shrink:0}.crew-role{font-size:9px;letter-spacing:.08em;color:#ffe398;flex-shrink:0}.crew-plus{flex:1;display:grid;place-items:center;font-size:40px;font-weight:300;color:#e8c46e}.crew-status{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-shrink:0;font-size:12px;background:#082039c4;padding:10px;border-radius:8px}.crew-status strong{color:#ffe291}.crew-status .text-btn{font-size:12px;padding:0}.crew-candidates{grid-template-columns:repeat(3,minmax(0,1fr))!important}
.mission-card{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;padding:15px;background:radial-gradient(ellipse at 50% 25%,#31506b80,transparent 70%),#071e35ed;border:1px solid var(--mission-color);border-radius:18px;position:relative;overflow:hidden}.mission-number{font-size:11px;letter-spacing:.2em;color:var(--mission-color)}.mission-compass{display:grid;place-items:center;width:clamp(45px,10dvh,90px);height:clamp(45px,10dvh,90px);color:var(--mission-color);border:1px solid var(--mission-color);border-radius:50%;flex-shrink:0}.mission-compass .icon{width:70%;height:70%;stroke-width:1}.mission-card h2{font-size:clamp(22px,4dvh,36px);color:var(--mission-color)}.mission-card p{font-size:13px;max-width:32ch;color:#d0dce7}.mission-score{display:flex;flex-direction:column;gap:3px}.mission-score strong{font-size:clamp(26px,4.8dvh,42px);color:white}.mission-score span,.mission-reward{font-size:12px;color:#c4d5e3}.mission-stars{font-size:30px;letter-spacing:8px;color:#ffda78}.mission-details{font-size:13px;line-height:1.5;display:grid;gap:12px;margin-top:15px}.mission-details ul{padding-left:20px}.cosmetic-list{display:grid;gap:10px;margin-top:16px}.cosmetic-list small{display:block;font-weight:400;font-size:12px}.cosmetic-list .btn{margin:0}.cosmetic-list .btn:disabled{opacity:.4}
body[data-cosmetic=album] .binder-face{outline:2px solid var(--cosmetic);outline-offset:2px}body[data-cosmetic=badge] .crew-status:before{content:'★';color:var(--cosmetic);font-size:20px}body[data-cosmetic=atlas] .mission-card{background:radial-gradient(circle at 20% 10%,#9784c74d,transparent 60%),#0c1b35;border-color:var(--cosmetic)}
.crew.layout,.crewPicker.layout,.expeditions.layout,.expeditionResult.layout{max-width:620px}.crew .btn,.expeditions .btn{flex-shrink:0}.crew>.text-btn{flex-shrink:0;min-height:32px;font-size:12px}
@media(max-height:720px){.collection .game-heading{padding-top:5px}.collection .game-heading h1{font-size:31px}.collection .eyebrow{margin-bottom:4px}.binder-shelf{padding-block:7px}.binder-face{padding:17px 8px 14px;gap:6px}.cover-code{font-size:32px}.cover-count{font-size:17px}.cover-count>span{font-size:12px}.cover-bottom{font-size:11px}.collection .screen-pager{min-height:40px}.collection-tools .text-btn{min-height:28px}.mission-card{gap:7px;padding:10px}.mission-compass{width:46px;height:46px}.mission-card h2{font-size:25px}.mission-stars{font-size:24px}.mission-score strong{font-size:29px}.crew-intro{font-size:11px}.crew-slot{padding:5px;gap:3px}.settings-content .text-btn{font-size:12px;min-height:25px;padding:0}.settings-content .btn{min-height:36px}}
@media(min-width:900px){.binder-shelf{max-width:600px;gap:30px}.carousel-item{width:43%;height:83%}.header #language{margin-left:auto}.collection .game-heading{padding-top:10px}}

/* V6: legible binder pages, compact ordering controls */
.album-controls{display:flex;gap:8px;flex-shrink:0}.album-controls select{min-width:0;width:50%;padding:7px 10px;font-size:12px;background:#10283e;color:#f7df9b;border:1px solid #cba65a66;border-radius:9px}.album .album-title .eyebrow,.album .album-hint{display:none}.album .album-toolbar{gap:12px}.album .album-toolbar .icon-btn{min-height:32px;height:32px;width:32px}.album .album-book{padding:6px 6px 6px 18px}.album .pocket img{object-fit:contain;width:100%;height:100%;filter:none}.album .pocket.filled{padding:0;background:#0e2033}.album .pocket-index{display:none}.album .album-footer .btn{min-height:36px;font-size:11px}.album .pocket-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}.album .sheet-footer{display:none}@media(min-width:900px){.album .pocket-grid{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr))}.album-controls{max-width:450px;margin:auto;width:100%}}

.trade-actions{display:flex;align-items:center;gap:8px}.trade-actions>*{min-width:0;flex:1}.trade-code{min-height:120px;max-height:25dvh;font-size:12px;word-break:break-all}.trade-line{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid #ffffff20}.trade-line small,.trade-pick small{display:block;opacity:.7;font-size:11px}.trade-pick{display:flex;gap:8px;align-items:center;padding:5px 0}.trade-pick>button:first-child{width:42px;height:60px;padding:0;flex-shrink:0}.trade-pick .image-wrap{height:100%;width:100%;aspect-ratio:auto}.trade-pick img{object-fit:contain}.trade-pick>span{flex:1;font-size:12px}.trade-pick .icon-btn{min-height:30px;width:30px;height:30px}.trade-history{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px}.trade-history .info-card{text-align:left;flex:1;padding:12px;min-height:0}.trade-history p{font-size:12px}.trades>p{margin:0}.trades .btn{min-height:42px}

.auto-button{flex-shrink:0;border:1px solid #ffdc79aa;background:#102b45;color:#ffe292;padding:9px 12px;border-radius:20px;font-weight:700}.auto-button[aria-pressed=true]{background:#ffdc79;color:#09233b}.opening-top{gap:8px}.opening-title{min-width:0}.hit-spin .image-wrap{animation:hit-turn .8s ease-out;transform-style:preserve-3d}@keyframes hit-turn{0%{transform:perspective(800px) rotateY(0deg) scale(.92);filter:brightness(1.6)}55%{filter:brightness(1.2)}100%{transform:perspective(800px) rotateY(360deg) scale(1);filter:brightness(1)}}.reduced .hit-spin .image-wrap{animation:none}@media(prefers-reduced-motion:reduce){.hit-spin .image-wrap{animation:none}}

/* V7 collection: real products and full card artwork */
.set-ribbon{display:flex;gap:12px;overflow-x:auto;flex-shrink:0;padding:7px 3px;scroll-snap-type:x proximity;min-height:140px;height:clamp(140px,23dvh,205px)}.set-mini{flex:0 0 82px;display:flex;flex-direction:column;align-items:center;gap:3px;padding:4px;scroll-snap-align:start;border-radius:12px;border:1px solid transparent}.set-mini .real-pack-art,.all-cover{flex:1;min-height:0;width:100%;max-width:80px;position:relative}.all-cover{display:grid;place-items:center;border:1px solid #cfaa58;background:#081a2b;border-radius:10px;font:700 25px Georgia;color:#ffdf89}.category-cover{font-size:18px}.set-mini small{font-size:10px}.set-mini b{font-size:12px}.set-mini.active{border-color:#ffdf89;box-shadow:0 0 14px #ffd95a55}.collection .game-heading{padding-top:0}.collection .game-heading h1{font:400 clamp(26px,4dvh,38px) Georgia}.collection-scroll{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding:3px 1px 12px}.catalog-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.catalog-grid .card-tile{height:auto;min-width:0;background:#081a2de8;padding:3px;border:1px solid #627b9255;border-radius:10px}.catalog-grid .image-wrap{aspect-ratio:600/838;height:auto;width:100%;background:#081a2d}.catalog-grid img{object-fit:contain;width:100%;height:100%}.catalog-grid .unowned{opacity:1;filter:none}.catalog-grid .unowned .card-meta{color:#a9b9ca}.product-status{display:block;color:#f2d285;font-size:11px;margin-top:4px}.catalog-grid .card-label{font-size:12px}.catalog-grid .card-meta{font-size:10px}.catalog-grid .card-price{font-size:13px}.collection .tabs button{min-height:35px;flex:1;min-width:0}.collection .input{min-height:36px;flex:0}.collection-tools{flex-shrink:0}.carousel-item.selected .real-pack-art{outline:2px solid #ffe69b;outline-offset:3px;box-shadow:0 0 12px #ffdc7977,0 12px 24px #e6b13d55;transition:outline-color .25s,box-shadow .25s}.carousel-item:not(.selected) .real-pack-art{outline:2px solid transparent;box-shadow:none;transition:.25s}.pack-information{border-color:#ddbc7c}.pack-information h2{font-family:Georgia,serif}.card-rules{margin:12px 0;padding:12px;border:1px solid #8fa2b655;border-radius:10px}.card-rules p{white-space:pre-wrap;margin-top:8px;font-size:14px;line-height:1.6}.full-card-zoom .image-wrap{width:100%;height:auto;aspect-ratio:600/838}.full-card-zoom img{object-fit:contain}dialog .detail-img{display:block;width:min(100%,350px);height:auto;max-height:none;margin:10px auto;padding:0}dialog .detail-img .image-wrap{max-height:none;aspect-ratio:600/838}dialog .detail-img img{object-fit:contain}.singleShop .sale-detail .image-wrap{width:100px}.singleShop .game-heading h1{font-size:26px}@media(min-width:700px){.catalog-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.set-mini{flex-basis:100px}}

/* V9: reserve card geometry before loading, including Safari flex layouts. */
.catalog-grid .card-tile{display:block;align-self:start}
.catalog-grid .card-tile .image-wrap{display:block;position:relative;flex:none;min-height:0;height:0;padding-bottom:139.666667%;aspect-ratio:auto;opacity:1;filter:none}
.catalog-grid .card-tile .image-wrap img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.catalog-grid .card-tile.unowned .image-wrap{opacity:1;filter:none}
.catalog-grid .card-price{display:block}
@media(display-mode:standalone){html,body{background-color:#081a2d}.nav{border-left:0;border-right:0;border-bottom:0}}

/* All bounded card grids: fill the available frame without Safari intrinsic sizing. */
.card-tile .image-wrap{display:block;position:relative;width:100%;overflow:hidden}
.card-tile .image-wrap img,.pocket .image-wrap img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.image-wrap.loaded>.fallback{display:none}
/* Reading mode: retain the selected series and give the cards the screen. */
.collection-compact-toggle{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-shrink:0;min-height:38px;padding:7px 12px;border:1px solid #dab96e80;border-radius:10px;background:#081e33ed;color:#ffe09a;font-size:13px;text-align:left}
.collection-compact-toggle .compact-label{font-size:11px;color:#dce7ef}.collection-compact-toggle:focus-visible{outline:2px solid #ffe09a;outline-offset:2px}
.collection.reading-cards{gap:7px;padding-inline:10px}.collection.reading-cards .set-ribbon,.collection.reading-cards>.tabs{display:none}.collection.reading-cards .game-heading .eyebrow{display:none}.collection.reading-cards .game-heading h1{font-size:23px}.collection.reading-cards .game-heading{padding:0;min-height:30px}.collection .catalog-grid{gap:8px}.collection .catalog-grid .card-tile{padding:2px}.collection .catalog-grid .card-label{font-size:13px}.collection .collection-scroll{scrollbar-width:thin;scrollbar-color:#d2b36c #0b2235;overflow-anchor:none;touch-action:pan-y}
@media(max-width:699px){.collection.layout{padding-inline:10px;gap:7px}.collection .set-ribbon{height:clamp(110px,18dvh,155px);min-height:110px}.collection .game-heading .eyebrow{margin-bottom:2px}.collection .game-heading h1{font-size:27px}.collection .collection-tools .text-btn{min-height:32px}.album.layout{gap:6px;padding-inline:8px}.album .album-title h1{font-size:14px}.album .album-title .progress{display:none}.album .album-book{padding:3px 3px 3px 12px}.album .album-sheet{padding:3px}.album .album-rings{width:12px}.album .album-footer .btn{min-height:32px}.album .sheet-heading{font-size:9px}.album .album-top .badge{font-size:9px}}
@media(max-width:380px){.collection.reading-cards .catalog-grid .card-meta{font-size:9px}.collection.reading-cards .catalog-grid .card-label{font-size:12px}}
.full-card-zoom{width:min(100%,520px);margin:0 auto;touch-action:pan-x pan-y pinch-zoom}.full-card-zoom .image-wrap{display:block;position:relative}.full-card-zoom img{position:absolute;inset:0;width:100%;height:100%}

/* V20: responsive frame. Never infer viewport size from physical screen size. */
:root{--layout-version:24;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}
html,body{height:100%;margin:0;padding:0;overflow:hidden}
/* Keep the document itself fixed: iOS must not scroll a second safe-area strip below the app. */
body{position:fixed;inset:0;height:auto;background-color:#070e15}
#app{position:fixed;inset:0;width:100%;height:auto;min-height:0;display:flex;flex-direction:column}
#app>.layout{flex:1 1 0;min-height:0}
#app>.nav{position:relative;inset:auto;transform:none;flex:0 0 auto;height:auto;min-height:60px;max-height:none;align-items:center;box-sizing:border-box;padding:4px max(8px,env(safe-area-inset-right)) max(4px, var(--safe-bottom)) max(8px,env(safe-area-inset-left));margin:0 auto;width:100%;max-width:none;border-radius:18px 18px 0 0}
#app>.nav button{min-height:52px;flex:1 1 0;justify-content:center}
#app>.home.layout{padding-bottom:12px}
.layout.products{gap:clamp(5px,1.1dvh,10px);padding-block:clamp(4px,1dvh,9px);padding-inline:max(12px,env(safe-area-inset-left),env(safe-area-inset-right))}
.products .carousel-stage{flex:1 1 0;min-height:90px;margin:0 -4px}
.products .split-actions .btn{min-height:44px;padding-block:10px}
.products .pack-information h2{overflow-wrap:anywhere}
.viewport-diagnostics{font-size:11px;line-height:1.5;color:#c3d2df;white-space:pre-line;overflow-wrap:anywhere}
@media(max-height:650px){
 #app>.products.layout{overflow-y:auto}
 .products .tabs button{min-height:36px}.products .pack-information{padding:6px 10px}
 .products .pack-information h2{font-size:15px}.products .pack-information p{font-size:12px}
 .products .selector-tools,.products .selector-tools .text-btn{min-height:26px}
 .products .carousel-stage{min-height:75px}
}
/* Short landscape screens and enlarged text retain every control through local scrolling. */
@media(max-height:500px){#app>.layout{overflow-y:auto}.products .carousel-stage{flex:0 0 110px}.header{min-height:calc(48px + var(--safe-top))}}
@media(min-width:900px){#app>.nav{max-width:900px}}

/* V21: mobile frame, readable cards and reachable controls. */
body{height:100dvh}
button,a,input,select{touch-action:manipulation}
button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid #ffdf85;outline-offset:3px}
.layout{min-width:0}.header,.nav,.game-heading,.collection-tools,.split-actions{flex-shrink:0}
.header{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}
.catalog-grid .image-wrap,.detail-img .image-wrap,.full-card-zoom .image-wrap{aspect-ratio:63/88}
.catalog-grid .card-label{white-space:normal;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card-browse{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:10px 0;font-size:12px}.card-browse button{min-height:44px}
.card-variants{margin:12px 0;padding:10px;border:1px solid #99afbf;border-radius:10px;font-size:13px}.card-variants summary{cursor:pointer;padding:8px 0}.card-variants>div{display:flex;flex-wrap:wrap;gap:7px;padding-top:10px}.card-variants button{border:1px solid #9cb0bf;background:#e2ecf3;color:#15354c;border-radius:8px;padding:8px;min-height:44px}.card-variants button.active{background:#143a53;color:#ffe298;border-color:#b38b2e}
.empty-results{grid-column:1/-1;text-align:center;padding:26px 12px}.empty-results h2{font-size:20px}.empty-results p{font-size:14px;margin:12px 0}
.shop-entry{display:flex;justify-content:space-between;align-items:center;gap:10px;color:#ffe4a0;text-decoration:none;background:#071e35dc;border:1px solid #dfbb6a80;border-radius:12px;min-height:44px;padding:10px 14px;font-size:14px;flex-shrink:0}.shop-entry span{font-size:11px;color:#d1e1ec}
.settings-content{overflow-y:auto;overscroll-behavior:contain}.settings-content>*{flex-shrink:0}
dialog{max-width:calc(100vw - 24px - env(safe-area-inset-left) - env(safe-area-inset-right));max-height:calc(100dvh - 24px - var(--safe-top) - var(--safe-bottom));overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
dialog .detail-img{width:min(100%,300px,calc(46dvh * .716))}.sale-detail>.image-wrap{width:100px;flex-shrink:0;aspect-ratio:63/88}
@media(max-width:600px){input,select,textarea{font-size:16px!important}.collection-tools .text-btn,.selector-tools .text-btn{min-height:44px}.header-note{font-size:9px}.shop-entry{font-size:13px}}
@media(max-height:700px){.home.layout{overflow-y:auto}.home-air{min-height:0}.home-menu{flex-shrink:0}.home-cta{min-height:58px}.home-caption{margin:5px 0}.shop-entry{padding:6px 12px}.collection:not(.reading-cards) .set-ribbon{height:100px;min-height:100px}}
@media(min-width:700px){.layout.collection,.layout.singleShop{max-width:1080px}.catalog-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}}
@media(min-width:1200px){.catalog-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}
@media(max-height:500px) and (orientation:landscape){.open-layout{overflow-y:auto}.open-stage{min-height:180px}.opening-info{flex-shrink:0}.home.layout{padding-top:8px}.home-air{display:none}}

/* V22: anchor the complete flex frame to the viewport edges.
   The iPhone home-indicator inset belongs inside the navigation background,
   never below a shorter body/visualViewport-sized application. */
#app>.nav{border-bottom-left-radius:0;border-bottom-right-radius:0}

/* The fixed frame and body share the viewport; controls alone own safe-area padding. */
