/* css/festival.css — 단계 5: 치바 썸머 페스 화면(입구 카드·참가자·대진표·점수판·시상대) */
.calrow.fest .cn{color:#ffd6a0;}
.fs-bg{filter:saturate(1.1);}
.stage.fs-dim .fs-bg{filter:brightness(.45) saturate(1.1);}
.fs-lanterns{position:absolute; left:0; right:0; top:0; height:12%; display:flex; justify-content:space-around; z-index:2; pointer-events:none;}
.fs-lanterns i{width:14px; height:20px; border-radius:7px; background:radial-gradient(circle at 50% 40%,#fff3c0,#ff8a3c 60%,#c0302a); box-shadow:0 0 12px #ffb050; animation:twinkle 2.4s infinite;}
.fs-lanterns i:nth-child(odd){animation-delay:1.2s; margin-top:8px;}
.fs-title{position:absolute; top:5%; left:50%; transform:translateX(-50%); z-index:6; text-align:center; background:rgba(40,8,24,.88); border:2px solid var(--gold);
  border-radius:6px; padding:4px 18px; box-shadow:0 4px 12px rgba(0,0,0,.5); white-space:nowrap; max-width:96%; overflow:hidden; text-overflow:ellipsis;}
.fs-title span{display:block; font-size:10px; color:#ffb070; letter-spacing:1px;}
.fs-title b{font-size:15px; color:var(--gold-lt); text-shadow:0 2px 0 #7a2240;}
.fs-body{position:absolute; top:20%; right:3%; bottom:4%; left:3%; z-index:5; display:flex; align-items:center; justify-content:center;}
.fs-hero{position:absolute; bottom:1%; height:84%; z-index:4; pointer-events:none; left:13%; transform:translateX(-50%);}
.fs-hero.small{height:70%; left:10%;}
.fs-hero svg,.fs-hero canvas{height:100%; width:auto; display:block;}
.fs-hero img.hero-sprite{filter:drop-shadow(0 6px 8px rgba(0,0,0,.6));}
.fs-hero.left ~ .fs-body{left:25%;}
.fs-hero.small ~ .fs-body{left:20%;}
/* 얼굴 칩 */
.fs-face{width:42px; height:42px; border-radius:50%; overflow:hidden; border:2px solid var(--gold); background:linear-gradient(#ffe0ef,#c9f3e6); flex:0 0 auto;
  display:flex; align-items:center; justify-content:center; font-size:22px; position:relative;}
.fs-face.xs{width:20px; height:20px; font-size:11px; border-width:1px;}
.fs-face.sm{width:30px; height:30px; font-size:16px;}
.fs-face.lg{width:64px; height:64px; font-size:34px;}
.fs-face.w-hero{border-color:#ff5fa0; box-shadow:0 0 8px #ff5fa0;}
.fs-face.w-rival{border-color:#ffb030; box-shadow:0 0 8px #ffb030;}
.fs-face img,.fs-face svg{width:100%; height:100%; object-fit:cover; object-position:50% 0;}
.fs-face .npc-img{position:absolute; inset:0; background-size:cover; background-position:50% 15%;}
.fs-face .npc-fbk{font-size:inherit; display:flex; flex-direction:column; align-items:center;}
.fs-face .npc-fbk small{display:none;}
.fs-face .npc-img:not(.asset-fb) .npc-fbk{display:none;}
/* 입구 카드 */
.fs-cards{display:grid; grid-template-columns:1fr 1fr; gap:8px; width:100%; height:100%;}
.fs-card{position:relative; border:2px solid var(--gold); border-radius:8px; overflow:hidden; background:#2a0c1c; color:var(--parch); text-align:left; padding:0;
  box-shadow:0 4px 10px rgba(0,0,0,.5); transition:transform .12s, box-shadow .12s;}
.fs-card:hover:not(.off){transform:translateY(-2px); box-shadow:0 0 14px #ff8fc0;}
.fs-card.sel{border-color:#ff5fa0; box-shadow:0 0 0 2px #ff5fa0, 0 0 18px #ff5fa0;}
.fs-card.off{filter:grayscale(.85) brightness(.6);}
.fs-cbg{position:absolute; inset:0; background-size:cover; background-position:center;}
.fs-cin{position:absolute; left:0; right:0; bottom:0; padding:5px 8px; background:linear-gradient(transparent,rgba(26,6,16,.95) 35%);}
.fs-cin b{display:block; font-size:14px; color:var(--gold-lt);}
.fs-cin small{display:block; font-size:10px; line-height:1.35; color:var(--parch);}
.fs-rival{position:absolute; top:5px; right:5px; display:flex; align-items:center; gap:4px; background:rgba(40,8,24,.85); border:1px solid #ffb030; border-radius:14px; padding:2px 8px 2px 2px; font-size:10px; color:#ffd070;}
.fs-pick{display:flex; gap:8px; align-items:center; justify-content:center; flex-wrap:wrap;}
.fs-pick #fsSel{font-size:12px; color:var(--gold-lt); min-width:180px; text-align:center;}
.fs-pick small{display:block; font-size:9px; opacity:.8;}
/* 참가자 소개 */
.fs-intro{background:rgba(26,6,16,.8); border:1px solid var(--gold); border-radius:6px; padding:8px 10px; width:100%;}
.fs-sub{font-size:12px; color:#ffb070; margin-bottom:6px; text-align:center;}
.fs-ents{display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:6px;}
.fs-ent{display:flex; align-items:center; gap:6px; font-size:12px; background:rgba(0,0,0,.3); border-radius:20px; padding:2px 8px 2px 2px;}
.fs-ent em{font-style:normal; font-size:10px; color:#ffb030; margin-left:auto;}
/* 대진표 */
.fb{display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); gap:6px; width:100%; height:100%; align-items:stretch;}
.fb-half{display:grid; grid-template-columns:1.8fr 1fr 1fr; gap:4px;}
.fb-half.rev{grid-template-columns:1fr 1fr 1.8fr;}
.fb-col{display:flex; flex-direction:column; justify-content:space-around; gap:2px; min-width:0;}
.fb-c{display:flex; align-items:center; gap:3px; font-size:9.5px; background:rgba(26,6,16,.85); border:1px solid var(--gold-dk); border-radius:10px; padding:1px 6px 1px 1px;
  white-space:nowrap; overflow:hidden; min-height:20px;}
.fb-c span{overflow:hidden; text-overflow:ellipsis;}
.fb-c em{font-style:normal; color:#7be08a; margin-left:auto; font-size:8.5px;}
.fb-c.lost{opacity:.4; text-decoration:line-through;}
.fb-c.w-hero{border-color:#ff5fa0; color:#ffd0e4;}
.fb-c.w-rival{border-color:#ffb030; color:#ffe0a0;}
.fb-c.next{box-shadow:0 0 0 2px #ffb030; animation:wave 1s infinite;}
.fb-c.me{box-shadow:0 0 0 2px #ff5fa0;}
.fb-c.ghost{justify-content:center; color:#806070; padding:1px;}
.fb-final{display:flex; align-items:center; justify-content:center; min-width:90px;}
.fb-vs{display:flex; flex-direction:column; gap:4px; align-items:center;}
.fb-vs i{font-style:normal; color:var(--gold-lt); font-size:13px;}
.fb-champ{text-align:center; font-size:22px; color:#ffd700; display:flex; flex-direction:column; align-items:center; gap:2px;}
.fb-champ b{font-size:11px; color:var(--gold-lt);}
/* 점수판 */
.fs-board{width:100%; display:flex; flex-direction:column; gap:3px; background:rgba(26,6,16,.78); border:1px solid var(--gold); border-radius:6px; padding:6px;}
.fs-row{display:grid; grid-template-columns:auto minmax(0,1.3fr) 1fr 40px 34px; align-items:center; gap:6px; font-size:11px; opacity:.35; transition:opacity .3s;}
.fs-row.show{opacity:1;}
.fs-row.w-hero{background:rgba(255,95,160,.18); border-radius:6px;}
.fs-row.w-rival{background:rgba(255,176,48,.14); border-radius:6px;}
.fs-rn b{display:block; font-size:12px;}
.fs-rn small{display:block; font-size:9px; color:var(--parch-dk); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.fs-bar{height:9px; background:rgba(0,0,0,.45); border-radius:5px; overflow:hidden;}
.fs-bar span{display:block; height:100%; background:linear-gradient(90deg,var(--mint),var(--pink)); transition:width .6s ease-out;}
.fs-row.w-hero .fs-bar span{background:linear-gradient(90deg,#ff8fc0,#ffd700);}
.fs-sc{text-align:right; font-size:14px; color:var(--gold-lt);}
.fs-pl{text-align:center;}
/* 시상대 */
.fs-res{display:flex; flex-direction:column; align-items:center; gap:6px; width:100%;}
.fs-podium{display:flex; align-items:flex-end; justify-content:center; gap:8px;}
.fs-ped{display:flex; flex-direction:column; align-items:center; gap:2px; width:110px; font-size:11px;}
.fs-ped b{background:rgba(26,6,16,.85); padding:1px 6px; border-radius:8px; max-width:110px; text-align:center; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--gold-lt); text-shadow:0 1px 0 #000;}
.fs-ped small{font-size:10px; color:var(--parch); background:rgba(26,6,16,.7); padding:0 5px; border-radius:6px;}
.fs-blk{width:100%; background:linear-gradient(180deg,#ffe48a,#c99a2e); color:#4a0f22; font-size:22px; text-align:center; border:2px solid #fff3c0; border-radius:4px 4px 0 0;}
.fs-ped.p1 .fs-blk{height:64px; line-height:60px;}
.fs-ped.p2 .fs-blk{height:44px; line-height:40px; background:linear-gradient(180deg,#f0f0f8,#9aa0b8);}
.fs-ped.p3 .fs-blk{height:30px; line-height:26px; background:linear-gradient(180deg,#f0c8a0,#a8683a);}
.fs-ped.empty b{visibility:hidden;}
.fs-me{background:rgba(26,6,16,.88); border:2px solid var(--gold); border-radius:6px; padding:4px 14px; font-size:14px;}
.fs-me.win{border-color:#ffd700; box-shadow:0 0 16px #ffd700;}
.fs-me b{color:#ff8fc0;}
.fs-prize{display:flex; gap:10px; flex-wrap:wrap; justify-content:center; background:rgba(40,8,24,.9); border:1px dashed #ffd700; border-radius:6px; padding:4px 12px; font-size:12px; animation:fsPop .6s ease-out;}
.fs-prize b{color:#ffd700;}
.fs-ko{font-size:11px; color:#7be08a; background:rgba(0,0,0,.5); padding:2px 8px; border-radius:8px;}
@keyframes fsPop{0%{transform:scale(.6); opacity:0;} 60%{transform:scale(1.08); opacity:1;} 100%{transform:scale(1);}}
@media(max-width:900px){ .fs-hero{display:none;} .fs-body{left:3% !important;} .fb-c{font-size:8px;} .fs-ped{width:84px;} }
@media(max-width:520px){ .fs-cin small{display:none;} .fb .fs-face{display:none;} .fs-row{grid-template-columns:auto minmax(0,1fr) 60px 32px 26px;} }
.menu-grid .mi.fest{background:linear-gradient(180deg,#ff9a4a,#c0302a); color:#fff3c0; box-shadow:0 0 10px #ffb050; animation:wave 1.4s infinite;}
