/* Submenu design system. Deliberately scoped: gameplay HUD is unchanged. */
body dialog{--panel:#101c2b;--card:#192a3c;--line:#385169;--text:#f3f7fc;--muted:#b6c7d8;color-scheme:dark;background:var(--panel)!important;color:var(--text)!important;border:1px solid var(--line)!important;border-radius:20px;padding:20px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);box-sizing:border-box;overflow:auto;overscroll-behavior:contain;box-shadow:0 24px 80px #0009;font-size:14px;line-height:1.5;scroll-padding-top:90px}
body dialog::backdrop{background:#030914c9;backdrop-filter:none}
body dialog *,body dialog *::before,body dialog *::after{box-sizing:border-box}
body dialog .dialog-head{position:sticky;top:-20px;z-index:5;background:var(--panel);padding:12px 0;gap:12px;border-bottom:1px solid var(--line);margin-bottom:16px}
body dialog .dialog-head>div{min-width:0}body dialog .dialog-head h2{font-size:24px;line-height:1.2;letter-spacing:-.4px;color:var(--text);margin:4px 0}
body dialog .eyebrow{color:#8ee5ce;font-size:10px;letter-spacing:1.4px}
body dialog :is(p,small,.dialog-desc,.muted){color:var(--muted);line-height:1.5}
body dialog :is(h3,h4,b,strong,label){color:var(--text)}
body dialog :is(button,select,input:not([type=file]),textarea,.file-button,summary){min-height:44px;min-width:44px;font:inherit;border-radius:10px;touch-action:manipulation}
body dialog :is(button,.file-button){background:#223c51;color:var(--text);border:1px solid #4d6c83;padding:10px 12px;font-size:13px;font-weight:650;line-height:1.3;box-shadow:none;white-space:normal;overflow-wrap:anywhere}
body dialog button:disabled{background:#1b2938!important;color:#aebccd!important;border-color:#405268!important;opacity:1;filter:none;cursor:not-allowed;box-shadow:none}
body dialog :is(.primary,button.equip){background:#8ee5ce;color:#08271f;border-color:#8ee5ce}
body dialog :is(button,input,select,textarea,summary):focus-visible{outline:3px solid #8ee5ce;outline-offset:2px}
body dialog .close{width:44px;height:44px;flex:0 0 44px;font-size:26px;padding:0;background:#223347}
body dialog :is(input:not([type=file]),select,textarea){background:#091522;color:var(--text);border:1px solid #4d6c83;padding:10px 12px;width:100%;max-width:100%}
body dialog input::placeholder{color:#aebccd}body dialog label{display:block;margin:12px 0}body dialog summary{padding:10px 0;cursor:pointer;color:#8ee5ce}
body dialog :is(.shop-card,.guardian,.island-card){background:var(--card)!important;border:1px solid var(--line);border-radius:14px;padding:16px;box-shadow:none;min-width:0;display:flex;flex-direction:column;gap:8px}
body dialog :is(.shop-card,.guardian,.island-card) :is(h3,h4,p,b){margin:0}body dialog :is(.shop-card,.guardian,.island-card) button{margin-top:auto;width:100%}
body dialog :is(.shop-card,.guardian,.island-card) p{min-height:0;font-size:13px}
body dialog :is(#island-list,#league-list,#battle-opponents,#shop-items,#premium-items){display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:16px 0}
body dialog .guardian img{width:88px;height:88px;object-fit:contain;margin:auto}body dialog .guardian b{color:#efda99;font-size:13px}
body :is(#shop,#islands,#leagues,#battle-select,#ranking,#options){width:820px}
body :is(#account,#auth,#country-choice){width:460px}
body dialog #shop-hero{background:#183c40;box-shadow:none;border:1px solid #3b6967;padding:14px;border-radius:14px;margin:14px 0}
body dialog #shop-hero>img{width:72px;height:72px}body dialog #shop-hero h3{font-size:18px}
body dialog #shop-balance{background:#243842;color:#a8f0d9;border:1px solid #3e6b66;padding:8px 12px;border-radius:10px;font-size:13px}
body dialog :is(#payment-availability,#checkout){background:#17283a;border:1px solid var(--line);padding:12px;border-radius:12px}
body dialog .premium-preview{width:76px;height:76px;box-shadow:0 0 10px #0005}body dialog #premium-items b{color:#efda99;font-size:19px}
body dialog .option-buttons{display:flex;flex-wrap:wrap;gap:10px}body dialog .file-button{display:inline-flex;align-items:center;margin:0}
body dialog .ranking-scroll{width:100%;overflow:auto}body dialog table{width:100%;min-width:0;border-collapse:collapse;table-layout:fixed}body dialog :is(th,td){padding:12px 8px;border-bottom:1px solid var(--line);color:var(--text);background:transparent;overflow-wrap:anywhere;text-align:left;font-size:13px}body dialog th{color:#b6c7d8}body dialog th:first-child{width:38px}body dialog th:nth-child(2){width:32%}
body dialog [data-kind=error]{color:#ffb5be}body dialog [role=status]:empty{display:none}
body #album[open]{display:flex;flex-direction:column;width:1080px;height:min(820px,calc(100dvh - 24px));overflow:hidden;gap:0}
body #album .dialog-head{position:relative;top:auto;flex:none;margin:0 0 12px;padding:0 0 12px}
body #album-number{display:inline-block;background:#22394b;color:#b6ecdc;font-size:12px;padding:5px 8px;margin:4px 0 0 10px;letter-spacing:0}
body #album .album-toolbar{flex:none;background:transparent;border:0;padding:0;margin:0 0 12px;gap:10px;align-items:stretch}
body #album .album-toolbar input{width:auto;flex:1}body #album .tabs{background:#192a3c;padding:3px;gap:3px;display:flex}body #album .tabs button{padding:8px 12px;background:transparent;border-color:transparent;color:#b6c7d8}body #album .tabs button.active{background:#8ee5ce;color:#08271f}
body #album-body{flex:1;min-height:0;height:auto;display:grid;grid-template-columns:minmax(0,1fr) 370px;gap:16px;overflow:visible}
body #album-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:4px;min-height:0;overflow:auto}
body #album-grid button{background:#192a3c;border:1px solid #385169;color:#f3f7fc;padding:22px 6px 10px;border-radius:12px}
body #album-grid button.selected{background:#203e48;outline:2px solid #8ee5ce;outline-offset:-2px}body #album-grid img{width:64px;height:64px;object-fit:contain}body #album-grid b{font-size:12px}body #album-grid small{color:#b6c7d8;font-size:11px}body #album-grid .locked img{opacity:.55}body #album-grid .equipped-badge{background:#234c42;color:#a8f0d9;font-size:8px;top:5px;left:5px}
body #detail{padding:12px;background:#142435;border:1px solid #385169;border-radius:14px;overflow:auto;min-height:0}
body #detail>img{width:72px;height:72px}body #detail h3{font-size:21px;margin:4px 0}body #detail p{color:#b6c7d8;font-size:12px}body #detail .detail-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:8px 0}body #detail .detail-stats b{font-size:17px}body #detail :is(.detail-fact small,.detail-stats small){color:#b6c7d8;font-size:10px}
body #detail .rarity-strip{gap:6px;padding:5px 3px 9px;margin:6px 0;overflow-x:auto;overflow-y:hidden}
body #detail .rarity-action-card{display:flex;flex-direction:column;flex:0 0 64px;width:64px;height:94px;min-height:94px;margin:0;padding:6px 3px;gap:5px;border:1px solid #385169;background:#192a3c;overflow:visible}
body #detail .rarity-action-card.selected{outline:2px solid #8ee5ce;outline-offset:1px;background:#203e48}
body #detail .rarity-action-card:disabled{filter:none}body #detail .form-name{font-size:10px;line-height:1.3}body #detail .form-state{font-size:9px;color:#b6c7d8}
body #detail .album-detail-actions button{margin:0;width:100%;font-size:12px;padding:8px;min-height:44px;background:#223c51;color:#f3f7fc}
body #detail .album-detail-actions .equip{background:#8ee5ce;color:#08271f}body #detail #country-primary[aria-pressed=true]{border-color:#8ee5ce;color:#a8f0d9}
body #album .album-footer{flex:none;margin-top:10px;padding-top:8px;color:#b6c7d8;border-color:#385169;gap:8px}
body dialog .zorb-form{position:relative;display:inline-grid;place-items:center;width:40px;height:40px;flex:none;border-radius:50%;background:radial-gradient(circle at 30% 20%,var(--form-light),var(--form-dark));box-shadow:0 0 9px color-mix(in srgb,var(--form-light) 35%,transparent)}
body dialog .zorb-form img{width:90%;height:90%;object-fit:contain;position:relative;z-index:1}body dialog .zorb-form:after{content:'';position:absolute;inset:0;border-radius:50%;border:2px solid var(--form-light);background:linear-gradient(135deg,#ffffff38,transparent 45%,#0005);z-index:2;pointer-events:none}
body dialog .zorb-spark{position:absolute;right:-3px;top:-5px;z-index:3;color:var(--form-light);font-size:13px;text-shadow:0 1px 3px #000}
body dialog .zorb-form[data-form=ruby]:after,body dialog .zorb-form[data-form=emerald]:after{border-radius:35%;transform:rotate(45deg)}
body dialog .zorb-form[data-form=infinity]:after{inset:-4px;border-width:1px;transform:rotate(-30deg) scaleY(.75);box-shadow:0 0 8px #9865ff}
body #detail>.selected-zorb{display:grid;margin:0 auto 8px;width:72px;height:72px}
body #world-map canvas{max-width:100%;height:auto}body #packet-reveal{width:460px}body #packet-reveal-card{background:#192a3c;color:#f3f7fc;border-color:#385169}body #packet-reveal-stage{min-height:180px}body #packet-reveal-card img{max-height:150px;object-fit:contain}
@media(max-width:760px){body dialog{padding:14px;border-radius:16px;max-width:calc(100vw - 16px);max-height:calc(100dvh - 16px)}body dialog .dialog-head{top:-14px}body dialog .dialog-head h2{font-size:21px}body dialog :is(#island-list,#league-list,#battle-opponents){grid-template-columns:1fr}body #album[open]{width:calc(100vw - 16px);height:calc(100dvh - 16px);padding:12px;max-height:calc(100dvh - 16px)}body #album .album-toolbar{flex-direction:column;gap:6px}body #album .tabs button{flex:1}body #album-number{font-size:11px;margin-left:6px}body #album-body{grid-template-columns:1fr;grid-template-rows:minmax(140px,32%) minmax(0,1fr);gap:10px}body #album-grid{grid-template-columns:repeat(3,minmax(0,1fr))}body #album-grid img{width:48px;height:48px}body #album .album-footer{font-size:10px}body dialog :is(th,td){font-size:11px;padding:10px 4px}body dialog #shop-hero{gap:10px}body dialog #shop-hero h3{font-size:16px}}
@media(max-width:360px){body dialog :is(#shop-items,#premium-items){grid-template-columns:1fr}body #album .dialog-head h2{font-size:19px}body #album-number{display:block;margin:4px 0 0}body #album .album-footer>span:first-child{display:none}}
/* Album v2: one scroll surface; selected form and rarity strip lead the team. */
body #album[open]{height:min(820px,calc(100dvh - 24px));max-height:calc(100dvh - 24px);overflow:hidden;padding-bottom:12px}
body #album-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:0 4px calc(24px + env(safe-area-inset-bottom));scroll-padding-bottom:calc(24px + env(safe-area-inset-bottom));overscroll-behavior:contain}
body #album-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,370px);gap:14px;min-height:0;height:auto;overflow:visible}
body #album-grid{min-height:220px;max-height:520px;overflow:auto}
body #detail{min-height:0;overflow:visible}
body #album-preview{text-align:center;border-bottom:1px solid #385169;padding-bottom:6px}
body #album-preview .selected-zorb{display:grid;place-items:center;margin:0 auto 2px;width:72px;height:72px}
body #album-preview .selected-zorb .form-thumb{width:68px;height:68px}
body #album-preview h3{margin:2px 0;font-size:18px}
body #album-team{display:block;min-height:58px;margin:8px 0 2px;padding:6px 0;border-top:1px solid #385169;border-bottom:1px solid #385169;overflow-x:auto;overflow-y:hidden}
body #album-team::before{content:'EQUIPE';display:block;color:#b6c7d8;font-size:10px;font-weight:800;letter-spacing:1px;margin-bottom:4px}
body #album #team{display:flex;position:static;align-items:center;justify-content:flex-start;gap:7px;margin:0;min-height:46px;overflow-x:auto;overflow-y:hidden}
body #album #team button{display:flex;flex:0 0 46px;width:46px;height:46px;min-width:44px;min-height:44px}
@media(max-width:760px){body #album[open]{height:calc(100dvh - 16px);max-height:calc(100dvh - 16px);padding:10px}body #album .dialog-head{position:sticky;top:-10px;z-index:2;margin-bottom:8px;padding:4px 0 8px}body #album .album-toolbar{flex-direction:row;gap:5px;margin-bottom:8px}body #album .album-toolbar input{min-width:0;padding:7px 8px}body #album .tabs{display:flex;min-width:0;overflow-x:auto}body #album .tabs button{padding:6px 7px;font-size:11px;white-space:nowrap}body #album-body{display:block}body #album-grid{display:none}body #detail{padding:8px}body #album-preview .selected-zorb{width:58px;height:58px}body #album-preview .selected-zorb .form-thumb{width:54px;height:54px}body #album-preview h3{font-size:16px}body #detail .form-album{margin:5px 0 8px}body #detail .rarity-action-card{flex-basis:48px;width:48px;min-height:48px;height:58px}body #detail .form-thumb{width:25px;height:25px}body #album-team{margin:5px 0;padding:5px 0}body #album .album-footer{margin-top:7px;padding-top:5px}body #detail .album-detail-grid,body #detail .detail-stats{margin:5px 0;gap:4px}body #detail .detail-fact,body #detail .detail-stats>div{padding:5px}body #detail .album-detail-actions{gap:4px;margin-top:5px}body #detail .album-detail-action{min-height:44px;padding:6px 4px;font-size:10px}}
@media(prefers-reduced-motion:reduce){body dialog *,body dialog *::before,body dialog *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Album catalog-first contract: mobile shows cards before any Zorb detail. */
@media(max-width:760px){
 body #album[data-view="catalog"] #album-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));min-height:0;max-height:none;overflow:auto}
 body #album[data-view="catalog"] #detail{display:none}
 body #album[data-view="detail"] #album-grid{display:none}
 body #album[data-view="detail"] #detail{display:block}
}
/* The cooperative world canvas owns its BASE label; never let it float over Album. */
body:has(#album[open]) #world{visibility:hidden}
