/* The Quest: shared finishing layer for Chromium/Android and WebKit/iOS.
   Keep QG composition and game data intact; enhance reusable player surfaces. */
.player-body{
  --q-text:#f5f3fc;--q-muted:#b8c5db;--q-line:rgba(159,180,212,.28);
  --q-surface:linear-gradient(145deg,rgba(26,43,68,.97),rgba(10,23,43,.98));
  --q-action:linear-gradient(180deg,#8758df,#53318f);
  -webkit-text-size-adjust:100%;text-size-adjust:100%;
}
.player-body button,.player-body a,.player-body input{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.player-body button{font-family:inherit}
.player-body :is(button,a,input,select,textarea):focus-visible{outline:2px solid #f2cf8c;outline-offset:3px}
.player-body button:disabled{cursor:not-allowed}
.player-body .page-stack{gap:16px}
.player-body .page-stack :is(.section-heading h2,.rank-journey h2){line-height:1.22;letter-spacing:.01em}
.player-body .page-stack :is(.eyebrow,.rarity-label){letter-spacing:.12em}
.player-body .page-stack .section-heading{gap:12px}
.player-body .page-stack .section-heading>div{min-width:0}
.player-body .page-stack :is(.fantasy-panel,.passport-stat){box-shadow:0 10px 25px #02091830,inset 0 1px #e7edff0d}
.player-body .page-stack :is(.mission-section,.settings-panel,.account-panel,.rules-panel,.notification-center,.collection-panel,.customization-panel,.inventory-panel,.passport-chronicle){background:var(--q-surface)}

/* Legible, consistent controls. Press feedback never moves surrounding content. */
.player-body :is(.mission-action,.open-chest-btn,.profile-passport-link,.history-void-btn,.ghost-btn,.collection-equip-btn){min-height:44px;line-height:1.35}
.player-body :is(.open-chest-btn,.mission-action,.primary-btn,.declaration-submit){border-radius:10px;background:var(--q-action);border:1px solid #b695f380;box-shadow:inset 0 1px #fff2,0 4px 12px #08051940}
.player-body :is(.open-chest-btn,.mission-action):disabled{background:#26334c;color:#b4bdd0;border-color:#7384a54d;box-shadow:none;opacity:.7}
.player-body :is(.open-chest-btn,.mission-action,.primary-btn,.ghost-btn,.declaration-submit,.player-drawer-nav button){transition:background-color 150ms ease,border-color 150ms ease,filter 150ms ease}
.player-body :is(.open-chest-btn,.mission-action,.primary-btn,.ghost-btn,.declaration-submit):not(:disabled):active{filter:brightness(1.18)}
@media(hover:hover){.player-body :is(.open-chest-btn,.mission-action,.primary-btn,.ghost-btn):not(:disabled):hover{filter:brightness(1.1)}}

/* Missions: clear reward hierarchy and generous action targets. */
.player-body .route-quests .quest-command{row-gap:16px}
.player-body .route-quests .quest-command h2{line-height:1.16;text-wrap:balance}
.player-body .route-quests .quest-command p{font-size:12px;line-height:1.55;max-width:none}
.player-body .route-quests .quest-command-stats article{border-radius:10px;background:linear-gradient(150deg,#21334de6,#0a172ae6);box-shadow:inset 0 1px #fff1}
.player-body .route-quests .quest-command-stats strong{font-size:20px;color:#dfc7ff;font-variant-numeric:tabular-nums}
.player-body .route-quests .quest-tabs{border-radius:12px;padding:5px}
.player-body .route-quests .quest-tabs .ranking-tab{border-radius:8px;min-height:44px;font-size:11px}
.player-body .route-quests .mission-card{padding:18px 4px;column-gap:12px}
.player-body .route-quests .mission-title h3{font-size:18px;line-height:1.2}
.player-body .route-quests .mission-title small{font-size:10px}
.player-body .route-quests .mission-body>p{font-size:11px;line-height:1.5;color:var(--q-muted)}
.player-body .route-quests .mission-linked-action{padding:7px 9px;border-radius:7px;line-height:1.4}
.player-body .route-quests .mission-progress{margin-top:12px}
.player-body .route-quests .mission-progress :is(span,em){font-size:10px}
.player-body .route-quests .quest-rewards{flex-wrap:wrap;gap:8px 12px}
.player-body .route-quests .quest-rewards :is(span,b){font-size:11px}
.player-body .route-quests .mission-footer{flex-wrap:wrap;gap:12px}
.player-body .route-quests .mission-action{font-size:10px;padding:10px 14px;white-space:normal}
.player-body .victory-empty p{font-size:12px;line-height:1.55;max-width:32ch;margin-inline:auto}
.player-body .victory-empty h3{font-size:23px}

/* Treasury: rarity colour belongs to each card, with gold reserved for Coins. */
.player-body .route-shop .chest-card{--chest-accent:#aabbd0;border:1px solid color-mix(in srgb,var(--chest-accent) 45%,#25354e);border-radius:14px;overflow:hidden;background:var(--q-surface);box-shadow:0 10px 25px #030a1833}
.player-body .route-shop .chest-card.rare{--chest-accent:#83baff}
.player-body .route-shop .chest-card.epic{--chest-accent:#c28dff}
.player-body .route-shop .chest-card.legendary{--chest-accent:#f2c476}
.player-body .route-shop .chest-art{background:radial-gradient(ellipse at center,color-mix(in srgb,var(--chest-accent) 16%,transparent),transparent 72%)}
.player-body .route-shop .rarity-label{border-color:var(--chest-accent);color:var(--chest-accent);background:#0a1429e6;padding:5px 7px;font-size:8px;line-height:1.2}
.player-body .route-shop .chest-copy{min-width:0;padding:15px 12px}
.player-body .route-shop .chest-copy h3{font-size:19px;line-height:1.2;color:var(--q-text)}
.player-body .route-shop .chest-copy>p{font-size:11px;line-height:1.5;color:var(--q-muted)}
.player-body .route-shop .probability-list{display:grid;gap:6px;margin-block:12px}
.player-body .route-shop .probability-list>span{display:grid;grid-template-columns:12px minmax(0,1fr) auto;gap:5px;align-items:start;font-size:10px;line-height:1.45}
.player-body .route-shop .probability-list b{font-weight:500;overflow-wrap:anywhere}
.player-body .route-shop .probability-list em{color:#f3cf90;font-variant-numeric:tabular-nums;white-space:nowrap}
.player-body .route-shop .chest-price{color:#ffdb94;font-size:18px;gap:5px;font-variant-numeric:tabular-nums}
.player-body .route-shop .chest-footer{gap:8px;flex-wrap:wrap}
.player-body .route-shop .missing-coins{color:#c4cede;font-size:10px;margin-top:8px}
.player-body .route-shop .open-chest-btn{font-size:10px;padding-inline:14px}
.player-body .route-shop .chest-wallet{display:inline-flex;margin-top:10px;border:1px solid #d9b56b66;border-radius:999px;padding:10px 13px;background:#392b1d99;color:#ffe0a4}
.player-body .route-shop .chest-wallet span{font-size:11px}
.player-body .route-shop .chest-wallet b{font-size:18px;font-variant-numeric:tabular-nums}
.player-body .inventory-card{border-radius:10px;padding:14px;border:1px solid var(--q-line);background:#101f35}
.player-body .inventory-card p{font-size:11px;line-height:1.5;color:var(--q-muted)}

/* Passport, standings and profile share restrained metallic accents. */
.player-body .route-passport .passport-status{background:#10203ab3}
.player-body .route-passport .passport-stat{border-radius:12px;min-width:0}
.player-body .route-passport .passport-stat strong{font-variant-numeric:tabular-nums;color:#f0e4ff}
.player-body .route-passport .passport-next-reward{border-left-color:#edc786;background:linear-gradient(120deg,#383029,#15213a 70%)}
.player-body .route-passport .passport-progress small{font-size:10px;color:#bdcce0}
.player-body .route-passport .rank-journey{overflow:hidden}
.player-body .route-passport .rank-journey :is(.rank-path,.rank-track){scrollbar-width:thin;scrollbar-color:#9a80bc #13223c}
.player-body .route-profile .profile-summary-copy{padding:12px;border-radius:10px;background:linear-gradient(110deg,#0a172dd9,#0a172d33)}
.player-body .route-profile .profile-passport-link{font-size:10px;color:#f5cf88}
.player-body .route-profile .setting-row{min-height:76px;padding-block:14px;column-gap:12px}
.player-body .route-profile .setting-row strong{font-size:12px;line-height:1.35}
.player-body .route-profile .setting-row small{font-size:10px;line-height:1.5;color:var(--q-muted)}
.player-body .route-profile .setting-switch{flex-shrink:0;cursor:pointer}
.player-body .route-profile .setting-switch:disabled{cursor:not-allowed}
.player-body .route-profile .profile-action-row{min-height:68px}
.player-body .route-profile .profile-action-row small{font-size:10px;line-height:1.45;color:var(--q-muted)}
.player-body .route-profile .profile-logout{min-height:46px;border-radius:10px}
.player-body .route-ranking .ranking-row{min-height:66px;border-bottom-color:var(--q-line)}
.player-body .route-ranking .ranking-row.current{border-radius:9px;background:linear-gradient(90deg,#563f805c,#14243c)}
.player-body .route-ranking .ranking-name{font-size:13px}
.player-body .notification-card{padding-block:17px;gap:12px}
.player-body .notification-card strong{font-size:13px;line-height:1.4}
.player-body .notification-card p{font-size:12px;line-height:1.55;color:var(--q-muted)}
.player-body .notification-card small{font-size:10px;color:#a8b9d0}
.player-body .notification-card.unread{background:linear-gradient(100deg,#69489326,transparent);box-shadow:inset 2px 0 #b191ed}
.player-body .page-stack .empty-state{padding:24px 16px;color:var(--q-muted);font-size:12px;line-height:1.6}

/* Dialogs stay usable with browser chrome, safe areas and the on-screen keyboard. */
.player-body .overlay{padding-bottom:env(safe-area-inset-bottom,0px)}
.player-body .overlay :is(.fantasy-dialog,.fantasy-sheet){border-color:#8fa5c666;background:linear-gradient(160deg,#213450,#0c192e 65%);box-shadow:0 -12px 60px #02071366,inset 0 1px #e2eaff20}
.player-body .overlay .fantasy-dialog{border-radius:18px;max-height:calc(100dvh - 32px);overflow-y:auto;overscroll-behavior:contain}
.player-body .overlay .fantasy-sheet{border-radius:20px 20px 0 0}
.player-body .overlay :is(input:not([type=checkbox]),select,textarea){font-size:16px;min-height:44px}
.player-body .overlay :is(.declaration-close,[data-close-overlay]){min-width:44px;min-height:44px;flex-shrink:0}
.player-body .declaration-overlay .bottom-sheet{max-height:min(90dvh,calc(var(--q-visual-height,100dvh) - 12px))}
.player-body .declaration-scroll{min-height:0;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.player-body .declaration-action-card{border-radius:12px;border-color:#8ba2c44d;background:linear-gradient(145deg,#263b59,#12243c)}
.player-body .declaration-basket-panel{border-radius:12px;border-color:#8ba2c44d}
.player-body .declaration-submit{min-height:52px}
.player-body .player-menu-overlay{padding-bottom:0}
.player-body .player-menu-overlay .dialog{border-radius:0;max-height:100dvh;overflow-y:auto}
.player-body .player-drawer-nav{gap:5px}
.player-body .player-drawer-nav button{border:1px solid transparent;border-radius:10px;min-height:54px}
.player-body .player-drawer-nav button.active{border-color:#ac87e64d;background:linear-gradient(110deg,#60429455,#21334b66);box-shadow:inset 3px 0 #e6bf7c}
.player-body .player-drawer-nav button span{font-size:13px}
.player-body .player-drawer-head span{font-size:10px;line-height:1.5}
.player-body .player-drawer-head small{font-size:11px;line-height:1.4}
@media(max-width:370px){
 .player-body .route-shop .chest-card{grid-template-columns:104px minmax(0,1fr)}
 .player-body .route-shop .chest-copy{padding:12px 10px}
 .player-body .route-shop .chest-copy h3{font-size:17px}
 .player-body .route-quests .mission-card{grid-template-columns:44px minmax(0,1fr)}
 .player-body .route-quests .mission-icon,.player-body .route-quests .mission-icon img{width:42px;height:42px}
}
@media(prefers-reduced-motion:reduce){.player-body *, .player-body *:before,.player-body *:after{scroll-behavior:auto!important}}
