/* Rollguard illustrated edition. Shared silhouettes, ink edges and tactile controls. */
:root {
  --ui-font: "Malgun Gothic", "Apple SD Gothic Neo", "Noto Sans KR", sans-serif;
  --edge: #163a46; --pan: #234d62; --pan2: #32627a;
  --yel: #ffd75c; --yel2: #f3b52d; --ink2: #51371c;
  --blu: #4aadd5; --blu2: #2783b8;
  --dim: #b2cbd4; --dim2: #8caebc; --gold: #ffdb75;
  --panel: #19394b; --panel2: #24495c; --panel3: #305a70;
  --line: #406b7f; --line2: #5e8a9a;
}
body { background: #102d3b; }
button:focus-visible { outline: 2px solid #fff2ae; outline-offset: 2px; }
#stage .lobby, #stage .lobby :not(kbd), #stage .title, #stage .title :not(kbd) {
  font-family: var(--ui-font); -webkit-font-smoothing: antialiased;
}
#stage .lobby img, #stage .title img { image-rendering: auto; }
.lobby { font-weight: 600; }
.lobby .ol, .lobby .rt, .lobby .nt, .lobby .minfo, .lobby .hplate,
.lobby .it, .lobby .gtitle, .lobby .fc b, .lobby .gcard b, .lobby .pc .pn { text-shadow: none; }
.ltop { height: 36px; padding: 0 9px; gap: 7px; background: #214659; border-bottom: 2px solid var(--edge); box-shadow: inset 0 2px #ffffff19, 0 2px #102c3b20; }
.prof { gap: 6px; }
.prof .ava { width: 29px; height: 29px; border-radius: 9px; background: #b4e5db; border: 2px solid #ffe1a2; box-shadow: 0 1px 0 #102c3b; }
.prof .ava img { width: 27px; height: 35px; margin-top: 1px; }
.prof .pn { line-height: 12px; }
.prof .pn b { font-size: 11px; font-weight: 900; }
.prof .pn i { font-size: 7px; letter-spacing: .25px; color: #aec7cf; }
.cur { height: 23px; padding: 0 3px 0 5px; gap: 3px; background: #122f40; border: 1px solid #487284; border-radius: 7px; }
.cur b { font-size: 11px; font-weight: 800; min-width: 30px; }
.cur img { width: 18px; height: 18px; }
.cur .plus { width: 16px; height: 16px; border-radius: 4px; font-size: 13px; font-weight: 900; background: #78c867; box-shadow: inset 0 -2px #4a9c55; }
.ibtn { width: 27px; height: 27px; background: #4e7688; border: 2px solid #143747; border-radius: 8px; box-shadow: inset 0 2px #ffffff38, 0 1px #112c3c; }
.ibtn img { width: 21px; height: 21px; }
.lbody { top: 36px; bottom: 48px; padding: 7px 10px; }
.lobby.inner .lbody { background: radial-gradient(ellipse at 50% 0, #35687c, transparent 70%), #183b4e; }
.lnav { height: 48px; border-top: 3px solid #133747; background: #264b60; box-shadow: inset 0 2px #6a8a98; }
.nv { padding-bottom: 4px; border-right: 1px solid #142f424f; color: #b8d0d8; gap: 1px; }
.nv .ni { width: 32px; height: 29px; }
.nv .ni img { width: 32px; height: 32px; filter: drop-shadow(0 2px 0 #0f283e55); }
.nv .nt { font-size: 10px; font-weight: 900; line-height: 12px; }
.nv.on { color: #fff1bc; background: linear-gradient(#47798a, #30596b); box-shadow: inset 0 3px #ffe086; }
.nv.on .ni img { transform: translateY(-2px) scale(1.08); }
.nv.main .ni { width: 47px; height: 43px; margin-top: -16px; border-radius: 15px; background: linear-gradient(#ffe99a, #ffc34d); border: 2px solid #17394a; box-shadow: inset 0 2px #fff7cd, inset 0 -4px #d18b30, 0 2px #17394a; transform: rotate(-5deg); }
.nv.main .ni img { width: 33px; height: 33px; transform: rotate(5deg); }
.nv.main.on .ni img { transform: rotate(5deg); }
.nv .dot { top: 3px; }
.lobby .dot { width: 8px; height: 8px; background: #fa705e; box-shadow: 0 1px 0 #80352f; }
.lobby .dd { border-radius: 5px; background: #f4774f; font-size: 9px; line-height: 13px; font-weight: 900; }
.rail { top: 9px; width: 50px; gap: 9px; }
.rail.l { left: 7px; } .rail.r { right: 7px; }
.rb .ri { width: 35px; height: 35px; background: linear-gradient(#fff7db, #e8cf9b); border: 2px solid var(--edge); border-radius: 10px; box-shadow: inset 0 2px #fffdf2, inset 0 -3px #c6aa78, 0 2px #163a4633; }
.rb .ri img { width: 30px; height: 30px; }
.rb.gift .ri { background: linear-gradient(#ffbba0, #f2856f); box-shadow: inset 0 2px #ffe2cd, inset 0 -3px #c86158, 0 2px #163a4633; }
.rb .rt { color: #183d4b; font-size: 9px; font-weight: 900; line-height: 14px; text-shadow: 0 1px #ffffff90; }
.rb .dd { top: 24px; right: -1px; }
.rb .tag { font-size: 8px; }
.rail.r.compact { gap: 4px; }
.rail.r.compact .ri { width: 29px; height: 29px; border-radius: 8px; }
.rail.r.compact .ri img { width: 25px; height: 25px; }
.rail.r.compact .rt { font-size: 8px; line-height: 11px; }
.rail.r.compact .tm { font-size: 8px; line-height: 10px; }
.modes { top: 7px; padding: 3px; gap: 3px; border: 2px solid #285565; border-radius: 10px; background: #3e7785; box-shadow: inset 0 1px #ffffff30, 0 2px #163a4620; }
.md { padding: 3px 14px; font-size: 10px; line-height: 13px; font-weight: 900; border-radius: 6px; color: #d1e8e8; }
.md.on { background: #ffdb7d; box-shadow: inset 0 1px #fff1b4, inset 0 -2px #d8a84b, 0 1px #1c485550; color: #624322; }
.minfo { top: 39px; left: 76px; right: 76px; font-size: 8px; line-height: 12px; color: #345c62; font-weight: 700; }
.minfo b { color: #875829; }
.roster, .hinfo { top: 60px; width: 128px; padding: 7px; border: 2px solid #305966; border-radius: 11px; background: #fff5ddeb; color: #345966; box-shadow: inset 0 2px #fffef5, 0 3px #264a5c29; }
.roster { left: 68px; }
.hd3 { color: #b9d5dd; font-weight: 800; }
.roster .hd3, .hinfo .hd3 { color: #526c6d; font-size: 8px; letter-spacing: .25px; margin: 0 0 4px; display: flex; justify-content: space-between; }
.roster .hd3 span { color: #85948b; font-size: 7px; }
.hrs { gap: 4px; margin-top: 4px; }
.hr { height: 41px; border: 1px solid #7a9b9c; border-radius: 6px; padding: 0; flex-direction: column; justify-content: flex-end; gap: 0; background: linear-gradient(#d8edf0, #a9ced5); color: #365563; box-shadow: inset 0 1px #ffffffaa, inset 0 -2px #8cb6bd; overflow: visible; }
.hr img { width: 29px; height: 34px; margin-top: -3px; }
.hr span { font-size: 7px; line-height: 10px; width: 100%; text-align: center; background: #fff9e2b0; border-radius: 0 0 5px 5px; }
.hr.on { background: linear-gradient(#fff1b0, #f7c869); border-color: #a67c36; color: #704d20; box-shadow: inset 0 0 0 1px #ffe9a2, 0 0 0 1px #b78436; }
.hr.on::after { content: "✓"; position: absolute; right: -2px; top: -4px; width: 12px; height: 12px; border: 1px solid #365c52; border-radius: 50%; background: #77bd7b; color: white; font-size: 8px; text-align: center; }
.hero-showcase { position: absolute; left: 50%; top: 46px; width: 116px; height: 103px; transform: translateX(-50%); pointer-events: none; }
.hero-halo { position: absolute; width: 130px; height: 130px; left: -7px; top: -4px; border-radius: 50%; background: radial-gradient(#fff5c58c, #fff6dc26 62%, transparent 66%); }
.showcase-art { position: absolute; inset: 0; width: 116px; height: 103px; object-fit: contain; filter: drop-shadow(0 3px 0 #1e414b24); animation: hero-breathe 3.6s ease-in-out infinite; transform-origin: bottom center; }
.hero-spark { position: absolute; color: #fff4b3; font-size: 18px; text-shadow: 0 1px #9cac7f; animation: hero-sparkle 2.5s ease-in-out infinite; }
.hero-spark.s1 { top: 28px; left: -5px; } .hero-spark.s2 { top: 71px; right: -6px; font-size: 12px; animation-delay: 1s; }
@keyframes hero-breathe { 50% { transform: translateY(-3px) rotate(1deg); } }
@keyframes hero-sparkle { 50% { opacity: .35; transform: scale(.65); } }
.harrow { top: 105px; width: 25px; height: 28px; border: 2px solid #426977; border-radius: 9px; background: #fff3d9; color: #315968; box-shadow: inset 0 -3px #d8c7a0, 0 2px #284e5820; font-size: 10px; }
.harrow.l { left: 215px; } .harrow.r { left: 400px; }
.hplate { top: 162px; min-width: 125px; padding: 4px 15px; flex-direction: column; align-items: center; gap: 0; border: 2px solid #315866; border-radius: 9px; background: #fff5ddeb; box-shadow: inset 0 2px #fffdf5, 0 3px #1d3e4d33; }
.hplate .hero-role { font-size: 7px; color: #618088; line-height: 10px; }
.hplate b { font-size: 14px; line-height: 18px; font-weight: 900; color: #234b60; letter-spacing: -.5px; }
.hplate .hero-rarity { color: #d39b36; font-size: 7px; line-height: 9px; letter-spacing: 2px; }
.hinfo { right: 68px; width: 140px; gap: 3px; }
.hinfo .hd3 { margin-bottom: 0; }
.hinfo .sk img { width: 27px; height: 27px; }
.hinfo .sk i { color: #78908c; font-size: 7px; line-height: 10px; }
.hinfo .sk b { color: #2d6274 !important; font-weight: 900; font-size: 11px; line-height: 15px; }
.hinfo .ps { font-size: 8px; line-height: 11px; color: #597576; }
.sups { gap: 3px; }
.su { border-radius: 5px; border: 1px solid #8fa6a2; background: #d6e4df; box-shadow: inset 0 1px #fff9; color: #4e6a6c; }
.su img { width: 22px; height: 22px; }
.su span { font-size: 7px; line-height: 10px; }
.su.on { background: #f6d584; box-shadow: inset 0 0 0 1px #fff1bd; border-color: #ad8b45; color: #71521f; }
.hinfo .sd { font-size: 7px; line-height: 10px; color: #8b7753; }
.hfoot { left: 68px; right: 68px; bottom: 7px; height: 44px; gap: 7px; }
.lo { flex-basis: 142px; height: 39px; padding: 3px 6px; background: #345e6eea; border: 2px solid #224555; border-radius: 9px; box-shadow: inset 0 1px #ffffff30, 0 2px #24465640; font-size: 9px; }
.lo img { width: 27px; height: 27px; } .lo .small { font-size: 8px; }
.diffs { gap: 3px; }
.df { padding: 3px 7px; color: #e1ecdc; background: #3c6975; border: 1px solid #274b5b; border-radius: 6px; font-size: 9px; line-height: 14px; font-weight: 800; }
.df.on { background: #fff1b6; color: #755226; border-color: #987d40; box-shadow: inset 0 1px #fffef0, inset 0 -2px #d7ba71; }
.cta { flex-basis: 156px; height: 43px; border-radius: 11px; border: 2px solid #493c28; background: linear-gradient(#ffeaa1, #ffd361 45%, #f8bb3a); box-shadow: inset 0 2px #fff6d0, inset 0 -5px #d49430, 0 3px #23485466; animation: none; }
.cta b { font-size: 18px; line-height: 21px; transform: none; letter-spacing: -.7px; font-weight: 900; margin: 0; }
.cta b i { font-size: 11px; margin-left: 5px; font-style: normal; }
.cta span { font-size: 8px; line-height: 11px; margin-bottom: 3px; color: #927036; }
.cta:hover { filter: brightness(1.08); }
/* Collection, summon and growth retain their behavior, sharing the new materials. */
.b2, .gb { border: 1px solid #153747; border-radius: 6px; background: linear-gradient(#66b6d2, #338aad); box-shadow: inset 0 1px #c0ecf5, inset 0 -2px #236384, 0 1px #112e40; font-weight: 800; }
.b2.y, .gb.ten { background: linear-gradient(#ffe6a1, #f4c05a); box-shadow: inset 0 1px #fff2cb, inset 0 -2px #b88434, 0 1px #112e40; }
.b2.s { font-size: 9px; }
.seg { background: #112e3d; border-color: #4e7b89; border-radius: 8px; }
.sg { font-size: 11px; font-weight: 800; }
.sg.on { background: #f6d17b; }
.back { background: #3d7188; font-size: 10px; font-weight: 800; border-radius: 6px; }
.phead > b { font-weight: 900; }
.lmbox { border: 2px solid #142f40; border-radius: 12px; background: #2b5468; box-shadow: inset 0 2px #76a0ae, 0 5px #102a3a60; }
.lmodal { background: #102a3cbb; backdrop-filter: blur(2px); }
.mtitle { font-weight: 900; }
.bdetail, .ddetail, .wrow, .labslot, .mrow, .rrow, .psum { background: #102e3f88; border-color: #527685; border-radius: 6px; }
.wrow { padding: 3px 4px; }
.mslot { background: #274e61; border-radius: 5px; }
.mcenter { border-color: #7797a1; border-radius: 10px; }
.gcard { border-radius: 7px; background: linear-gradient(#849eae, #496778); box-shadow: inset 0 0 0 1px var(--gc), inset 0 3px #ffffff55, 0 2px #102d3d77; }
.gcard.gB { background: linear-gradient(#6cba9c, #2f6e60); }
.gcard.gA { background: linear-gradient(#6dbbdf, #316b9a); }
.gcard.gS { background: linear-gradient(#b293dc, #68449b); }
.gcard.gSS { background: linear-gradient(#f4cc79, #b07536); }
.gcard b { font-weight: 800; font-size: 8px; }
.gcard img { filter: drop-shadow(0 2px #15364644); }
.gban { border-radius: 10px; padding: 7px; background: #3d476e; box-shadow: inset 0 0 0 1px #8795b3, 0 3px #102c3e; }
.gban.b-dice { background: #245b6c; box-shadow: inset 0 0 0 1px #74a5b3, 0 3px #102c3e; }
.gart { height: 137px; border-radius: 7px; background: radial-gradient(ellipse at 50% 85%, #ffeaa988, transparent 60%), repeating-conic-gradient(from 0deg at 50% 78%, #ffffff12 0deg 10deg, transparent 10deg 20deg), #645c91; }
.b-dice .gart { background: radial-gradient(ellipse at 50% 85%, #cbf9e38c, transparent 60%), repeating-conic-gradient(from 0deg at 50% 78%, #ffffff12 0deg 10deg, transparent 10deg 20deg), #3c8792; }
.gtitle b { font-weight: 900; }
.fc { border: 2px solid #553f2e; border-radius: 8px; background: linear-gradient(#ffe5a5, #dca851); box-shadow: inset 0 2px #fff1bf, 0 3px #27384b55; }
.fc b { color: #5b422b; font-size: 9px; font-weight: 800; }
.fc .fi img { max-width: 50px; max-height: 50px; }
/* Reserve header space before the featured cards; SVGs need a definite icon box. */
.gart { display: flex; flex-direction: column; gap: 4px; padding: 5px 6px 3px; }
.gtitle { position: static; flex: none; min-width: 0; }
.gtitle b { padding-right: 66px; line-height: 14px; }
.gtitle span { white-space: normal; overflow: visible; overflow-wrap: anywhere; font-size: 8px; line-height: 10px; }
.gtitle { display: grid; grid-template-columns: minmax(0,1fr) 62px; align-items: center; gap: 2px 4px; }
.gtitle b { padding-right: 0; }
.gtitle > span { grid-column: 1 / -1; }
.ginfo { width: 62px; min-height: 18px; padding: 2px 3px; font-size: 8px; line-height: 9px; }
.gtitle .ginfo { position: static; }
.gfeat { position: static; flex: 1; min-height: 0; align-items: stretch; gap: 7px; }
.gfeat .fc { height: auto; min-height: 0; flex: 0 1 68px; }
.gfeat .fc.f1 { transform: none; }
.gfeat .fi { width: 100%; min-height: 0; }
.gfeat .fi img { width: 42px; height: 42px; max-width: 100%; max-height: 100%; object-fit: contain; }
.gfeat .fc b { height: 22px; min-height: 22px; flex: none; }
.glab { position: static; flex: none; font-size: 8px; line-height: 10px; }
.gban { min-height: 0; overflow: hidden; }
.gban-content { display: flex; flex-direction: column; gap: 5px; min-height: 0; flex: 1; overflow-y: auto; overflow-x: hidden; overscroll-behavior: contain; touch-action: pan-y; scrollbar-width: thin; scrollbar-color: #8ba6bd #253b5b; }
.gban-content .gart { height: auto; min-height: 125px; }
.gban-content .gfeat { flex: none; height: 70px; }
.gfeat .fi { position: relative; overflow: hidden; }
.gfeat .fi img { position: absolute; inset: 0; margin: auto; width: 100%; height: 100%; max-width: 42px; max-height: 42px; }
.gsub .gcount { flex: 1; min-width: 0; font-size: 8px; line-height: 10px; text-align: right; word-break: keep-all; overflow-wrap: anywhere; }
.gsub .b2 { display: block; min-width: 0; min-height: 24px; padding: 1px 3px; white-space: normal; overflow-wrap: anywhere; font-size: 8px; line-height: 10px; }
.gsub [data-l="adsummon"] { flex: 0 0 31%; }
.gsub [data-l="freesummon"] { flex: 0 0 28%; }
html:is(:lang(ko), :lang(zh)) .gsub { height: 26px; }
.gban-content::-webkit-scrollbar { width: 4px; }
.gban-content::-webkit-scrollbar-track { background: #253b5b; border-radius: 5px; }
.gban-content::-webkit-scrollbar-thumb { background: #8ba6bd; border-radius: 5px; }
html:not([lang="ko"]) .gtitle b { font-size: 10px; line-height: 12px; }
html:not([lang="ko"]) .gtitle span { font-size: 7px; line-height: 9px; }
html:not([lang="ko"]) .glab { font-size: 7px; line-height: 9px; }
html:not([lang="ko"]) .gpity .prow { grid-template-columns: 100px minmax(0,1fr) 35px; font-size: 8px; line-height: 10px; }
html:not([lang="ko"]) .gpity .note, html:not([lang="ko"]) .gpity .soft { font-size: 8px; line-height: 10px; }
.shopc { border-radius: 9px; background: radial-gradient(ellipse at 50% 15%, #a4e4df66, transparent 70%), #386c84; box-shadow: inset 0 2px #78a2b3, 0 2px #122e40; }
.shopc .gi img { width: 33px; height: 33px; }
.shopc .price { background: #f6ce75; border-radius: 5px; color: #694820; font-weight: 800; }
.pkg, .att, .pr { background: linear-gradient(#3b6b7b, #294f65); border-radius: 7px; box-shadow: inset 0 1px #ffffff20; }
.pkg .pki { border-radius: 8px; background: #de9e77; }
.passhead { background: linear-gradient(100deg, #575185, #315e76); border-radius: 8px; }
.pc { border-radius: 9px; border-width: 2px; }
.pc .pin { background: linear-gradient(#385d70, #183c50); border-radius: 6px; }
.rewardbox { background: #354f52; border-radius: 7px; border-color: #ba9b5c; }
/* Title and in-run framing. */
.screen.title { background: linear-gradient(#23677d22, transparent 48%); }
.title .lg { color: #fff0bf; text-shadow: 2px 0 #22485b, -2px 0 #22485b, 0 -2px #22485b, 0 3px #22485b, 0 5px #173b4b; font-size: 50px; line-height: 56px; height: 56px; transform: none; font-weight: 1000; letter-spacing: -3px; }
.title .lgs { color: #68542c; background: #f9db8f; border-color: #47656c; text-shadow: none; font-weight: 900; letter-spacing: 2px; }
.title .tstart { left: 50%; right: auto; width: 240px; transform: translateX(-50%); color: #fff3c7; background: #28566ee8; border: 2px solid #163d50; padding: 5px 18px; border-radius: 20px; font-weight: 900; box-shadow: inset 0 2px #ffffff28, 0 3px #22445755; }
.title .tstart::before { display: none; }
.title .tib { background: #fff1d4; color: #34596a; border: 2px solid #2f5969; border-radius: 9px; box-shadow: inset 0 -3px #cfbe95; font-weight: 800; }
.title .tib { text-shadow: none; padding: 2px; }
.title .tib img { background: none; border: 0; box-shadow: none; }
.title .tsea { background: #2e6177e8; border: 2px solid #234b5b; border-radius: 9px; box-shadow: inset 0 1px #ffffff33; }
.title .tfoot, .title .tcredit { color: #dbede6; text-shadow: 0 1px #163d50; font-size: 8px; }
.btn { border-radius: 6px; box-shadow: inset 0 1px #ffffff22, 0 2px #091e2a55; }
.box, .ready-bar, .result { border-radius: 8px; }
#hud .box, #tower-panel { border-color: #365b6b; background-color: #173b4a; }
#stage :is(#hud, #panel, #screens) :not(kbd), #stage .tile-label {
  font-family: var(--ui-font); -webkit-font-smoothing: antialiased;
}
#stage .tile-label { font-size: 9px; line-height: 10px; font-weight: 700; }
#stage #hud img, #stage #panel img { image-rendering: auto; }
@media (prefers-reduced-motion: reduce) {
  .showcase-art, .hero-spark, .title .tstart { animation: none; }
}

/* Illustrated portraits keep their aspect ratio at every UI size. */
#stage img.guardian-portrait { image-rendering: auto; object-fit: contain; object-position: center bottom; }
#stage .hr img, #stage .prof .ava img, #stage .hero .top img, #stage .showcase-art { object-fit: contain; object-position: center bottom; }
#stage .showcase-art[data-hero-art] { animation: none; }

/* Short network actions pulse a row of pips without shifting the panel. */
.surface-pending,.account-pending { display:inline-flex;align-items:center;gap:6px; }
.surface-pending { color:#e8d28e;font-size:10px;font-weight:700; }
.server-auto-panel .surface-pending { color:#587765; }
.surface-pending::before,.account-pending::before { content:"";flex:none;display:inline-block;width:5px;height:5px;border-radius:1px;background:currentColor;box-shadow:4px -3px 0 -1px currentColor;animation:rg-pending-pip .82s ease-in-out infinite alternate; }
@keyframes rg-pending-pip { from {transform:translateY(1px);opacity:.55} to {transform:translateY(-1px);opacity:1} }
@media(prefers-reduced-motion:reduce){.surface-pending::before,.account-pending::before{animation:none}}
