/* Reference recovery: spacing and component hierarchy only. Business text,
   authoritative values and supplied artwork stay in their original DOM. */
.premium-app:not(:has(.premium-table)) .pp-page{padding:4px 0 20px;font-size:13px;line-height:1.45;min-width:0}
.premium-app:not(:has(.premium-table)) .pp-page>h1{font-size:18px;line-height:1.3;text-align:center;margin:8px 0 14px}
.premium-app:not(:has(.premium-table)) .pp-card{border-radius:10px;padding:12px;margin-bottom:10px;min-width:0}
.premium-app:not(:has(.premium-table)) .pp-card h2{font-size:15px;line-height:1.35;margin:0 0 8px;overflow-wrap:anywhere}
.premium-app:not(:has(.premium-table)) .pp-muted{font-size:12px;line-height:1.5;margin:6px 0}
.premium-app:not(:has(.premium-table)) .pp-line{gap:10px;font-size:12px;line-height:1.45;padding:8px 0;align-items:center}
.premium-app:not(:has(.premium-table)) .pp-line>strong{overflow-wrap:anywhere}
.premium-app:not(:has(.premium-table)) .pp-button{min-height:48px;border-radius:8px;font-size:13px;line-height:1.3;padding:10px 12px;margin-top:8px}
.premium-app:not(:has(.premium-table)) .pp-button:not(:disabled):not([role=tab]){background:linear-gradient(180deg,#F4D17B,#D8AA4C);border-color:#D8AA4C}
.premium-app:not(:has(.premium-table)) .pp-page>.pp-button:first-child{margin:0 0 4px;background:transparent;color:#F5F5F2;border-color:#293744}
.premium-app:not(:has(.premium-table)) .pp-status:not(:empty),.premium-app:not(:has(.premium-table)) .pp-notice{font-size:12px;line-height:1.45;padding:9px;margin:8px 0;border-radius:8px;overflow-wrap:anywhere}
.premium-app:not(:has(.premium-table)) .pp-field{gap:6px;margin:10px 0;font-size:12px}
.premium-app:not(:has(.premium-table)) .pp-field input,.premium-app:not(:has(.premium-table)) .pp-field select{font-size:14px;min-height:48px;border-radius:8px;min-width:0}
/* Three supplied game banners are the actual controls; do not crop their text.
   A separate high fidelity lobby hero has not been supplied. */
.premium-app[data-page=lobby] .pp-entry{padding:0;margin-bottom:10px;border-radius:9px}
.premium-app[data-page=lobby] .pp-entry .pp-button{margin:0;padding:0;background:transparent;border:0;border-radius:0;width:100%;min-height:48px}
.premium-app[data-page=lobby] .asset-game-banner{width:100%;height:auto;object-fit:contain;aspect-ratio:3/1}
.premium-app[data-page=lobby] .asset-banner-pending{min-height:100px;gap:5px;background:#14212C!important}
.premium-app[data-page=lobby] .asset-banner-pending strong{font-size:18px}
/* Quick selection uses real levels and a real buy-in confirmation, rather than
   inventing room occupancy to mimic the reference's room list. */
.premium-app[data-page=quick] .asset-level-tabs{gap:5px;margin:4px 0 12px}
.premium-app[data-page=quick] .asset-level-tabs .pp-button{font-size:12px;min-height:52px;margin:0;padding:8px 2px;border-radius:7px}
.premium-app[data-page=quick] .pp-card>.pp-button{width:100%;margin-right:0}
/* Keep each tournament's banner, fee, capacity, prize and schedule visible.
   Compact the duplicated label space without removing unopened-state notices. */
.premium-app[data-page=tours] .pp-card:has(.asset-tour-banner){display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 10px;padding:10px}
.premium-app[data-page=tours] .pp-card>.asset-tour-banner{grid-column:1/-1;width:100%;height:auto;max-height:64px;object-fit:contain;margin:0 0 8px}
.premium-app[data-page=tours] .pp-card>h2{grid-column:1/-1;font-size:13px;margin-bottom:4px}
.premium-app[data-page=tours] .pp-card>.pp-line{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:5px 0;font-size:11px;min-width:0}
.premium-app[data-page=tours] .pp-card>.pp-line>span{max-width:100%;font-size:10px}
.premium-app[data-page=tours] .pp-card>.pp-line>strong{max-width:100%;text-align:left;font-size:12px}
.premium-app[data-page=tours] .pp-card>.pp-muted,.premium-app[data-page=tours] .pp-card>.pp-notice,.premium-app[data-page=tours] .pp-card>.pp-button{grid-column:1/-1}
.premium-app[data-page=tours] .pp-card>.pp-button{width:100%;margin-right:0}
.premium-app[data-page=training] .pp-card:has(.asset-tour-banner){padding:0 12px 12px;overflow:hidden}
.premium-app[data-page=training] .pp-card>.asset-tour-banner{width:calc(100% + 24px);max-width:none;margin:0 -12px 12px;height:auto;object-fit:contain}
.premium-app[data-page=training] .pp-card>.pp-button{width:100%;margin-right:0}
.premium-app[data-page=match] .pp-card>.pp-button{width:100%;margin-right:0}
.premium-app[data-page=match] .pp-line>strong{word-break:break-word}
/* Reward tabs, seven supplied day cells and real progress remain independent. */
.premium-app[data-page=rewards] .pp-tabs{gap:4px;margin:4px 0 12px}
.premium-app[data-page=rewards] .pp-tabs .pp-button{min-height:48px;font-size:12px;padding:8px 3px;margin:0}
.premium-app[data-page=rewards] .pp-tabs [aria-selected=true]{color:#101923;background:linear-gradient(180deg,#F4D17B,#D8AA4C)}
.premium-app[data-page=rewards] .pp-days{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:10px 0}
.premium-app[data-page=rewards] .pp-day{min-height:94px;padding:9px 3px;gap:7px;border-radius:8px;font-size:11px}
.premium-app[data-page=rewards] .pp-day strong{font-size:11px;overflow-wrap:anywhere}
.premium-app[data-page=rewards] .pp-days+ .pp-button{width:100%;margin-right:0}
.premium-app[data-page=rewards] .pp-tabs+div>.pp-card{padding:10px 12px}
.premium-app[data-page=rewards] .pp-tabs+div>.pp-card h2{font-size:13px;margin:0 0 4px}
.premium-app[data-page=rewards] .pp-tabs+div>.pp-card .pp-line{padding:5px 0}
.premium-app[data-page=me] .pp-assets,.premium-app[data-page=wallet] .pp-assets{gap:8px;margin:12px 0}
.premium-app[data-page=me] .pp-assets .pp-line,.premium-app[data-page=wallet] .pp-assets .pp-line{padding:12px 10px;gap:6px;border-radius:9px;min-width:0}
.premium-app[data-page=me] .pp-assets .pp-line>span,.premium-app[data-page=wallet] .pp-assets .pp-line>span{font-size:11px;white-space:normal;max-width:100%}
.premium-app[data-page=me] .pp-assets strong,.premium-app[data-page=wallet] .pp-assets strong{font-size:21px;line-height:1.2}
.premium-app[data-page=me] .pp-card>.pp-muted{font-size:11px;overflow-wrap:anywhere}
.premium-app[data-page=me] .pp-card>.pp-button{width:100%;margin-right:0}
.premium-app:not(:has(.premium-table)) .pp-history{font-size:12px;padding:10px 0;gap:5px;grid-template-columns:minmax(0,1fr) auto}
.premium-app:not(:has(.premium-table)) .pp-history>*{min-width:0;overflow-wrap:anywhere}
.premium-app:not(:has(.premium-table)) .pp-page summary{font-size:13px;min-height:48px;padding:14px 0}
@media(min-width:390px){.premium-app[data-page=lobby] .pp-entry{margin-bottom:12px}.premium-app[data-page=tours] .pp-card>.asset-tour-banner{max-height:72px}}
@media(orientation:landscape) and (max-height:500px){.premium-app:not(:has(.premium-table)) .pp-page{max-width:560px}.premium-app[data-page=lobby] .asset-game-banner{max-height:110px;object-fit:contain}}
@media(prefers-reduced-motion:no-preference){.premium-app:not(:has(.premium-table)) .pp-button:active{filter:brightness(1.08)}}
/* Reference subpages have one title row, rather than a second lobby masthead.
   Keep the connection notice in the document and all actual controls reachable. */
.premium-app:is([data-page=quick],[data-page=tours],[data-page=training],[data-page=match],[data-page=rewards],[data-page=wallet]) .premium-top{display:none}
.premium-app:is([data-page=quick],[data-page=tours],[data-page=training],[data-page=match],[data-page=rewards],[data-page=wallet]) .premium-notice{font-size:11px;line-height:1.3;min-height:0;padding:4px 0}
.premium-app:not(:has(.premium-table)) .pp-page:has(>.pp-button:first-child){position:relative;padding-top:4px}
.premium-app:not(:has(.premium-table)) .pp-page:has(>.pp-button:first-child)>h1{min-height:48px;display:flex;align-items:center;justify-content:center;margin:0 0 10px;padding:0 82px;font-size:17px}
.premium-app:not(:has(.premium-table)) .pp-page>.pp-button:first-child{position:absolute;top:4px;left:0;max-width:82px;min-height:48px;padding:8px 5px;font-size:11px;margin:0;border:0;background:transparent;z-index:1}
/* Tournament information is dense in the reference. Preserve all authoritative
   fields and notices while removing banner margins and repeated row padding. */
.premium-app[data-page=tours] .pp-card:has(.asset-tour-banner){grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 8px;padding:8px;margin-bottom:8px}
.premium-app[data-page=tours] .pp-card>.asset-tour-banner{height:44px;max-height:44px;object-fit:contain;margin:0 0 4px}
.premium-app[data-page=tours] .pp-card>h2{font-size:12px;line-height:1.25;margin:0 0 3px}
.premium-app[data-page=tours] .pp-card>.pp-line{padding:3px 0;gap:1px;line-height:1.3;border:0}
.premium-app[data-page=tours] .pp-card>.pp-line>span{font-size:10px}
.premium-app[data-page=tours] .pp-card>.pp-line>strong{font-size:11px;line-height:1.3}
.premium-app[data-page=tours] .pp-card>.pp-muted,.premium-app[data-page=tours] .pp-card>.pp-notice{font-size:11px;line-height:1.3;margin:3px 0;padding:4px}
.premium-app[data-page=tours] .pp-card>.pp-button{margin-top:5px;min-height:48px}
/* Task rows: title above reward and progress, with no nested large panels. */
.premium-app[data-page=rewards] .pp-tabs+div>.pp-card{padding:8px 10px;margin-bottom:7px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 8px}
.premium-app[data-page=rewards] .pp-tabs+div>.pp-card>h2,.premium-app[data-page=rewards] .pp-tabs+div>.pp-card>.pp-muted{grid-column:1/-1}
.premium-app[data-page=rewards] .pp-tabs+div>.pp-card h2{font-size:13px;line-height:1.3;margin:0 0 4px}
.premium-app[data-page=rewards] .pp-tabs+div>.pp-card .pp-line{padding:4px 0;font-size:11px;gap:4px;border:0;align-items:flex-start;flex-direction:column}
.premium-app[data-page=rewards] .pp-tabs+div>.pp-card .pp-line>span{max-width:100%;font-size:10px}
.premium-app[data-page=rewards] .pp-tabs+div>.pp-card .pp-line>strong{text-align:left;max-width:100%}
@media(min-width:390px){.premium-app[data-page=tours] .pp-card>.asset-tour-banner{height:48px;max-height:48px}}
