@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700;900&family=Oswald:wght@400;600&display=swap');
:root {
  --primary:#0f1e3a; --primary-dark:#091225; --primary-light:#1b2f5a;
  --accent:#d4a017; --accent-dark:#b89014;
  --bg:#f4f6fb; --bg2:#e7ecf5; --panel:#ffffff; --panel2:#f7f9fd;
  --border:#d5dbea; --text:#0c1628; --text2:#4a5a73; --text3:#7c8aa3;
  --gold:#d4a017; --silver:#aab2c3; --bronze:#a97142;
  --danger:#c0392b; --success:#1a8a4a; --info:#3b6ed4;
  --shadow:0 2px 12px rgba(15,30,58,0.12); --shadow-lg:0 8px 32px rgba(15,30,58,0.20);
  --radius:8px; --radius-lg:14px;
}
*{margin:0;padding:0;box-sizing:border-box;}
body{font-family:'Noto Sans KR',sans-serif;background:linear-gradient(180deg,#f4f6fb 0%,#eef2f8 100%);color:var(--text);min-height:100vh;font-size:15px;}

/* HEADER */
.app-header{background:linear-gradient(135deg,#091225 0%,#0f1e3a 55%,#1b2f5a 100%);color:white;position:sticky;top:0;z-index:1000;box-shadow:0 4px 24px rgba(0,0,0,0.35);}
.header-top{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 16px;border-bottom:1px solid rgba(255,255,255,0.12);flex-wrap:nowrap;}
.logo{display:flex;align-items:center;gap:10px;min-width:0;flex:1 1 auto;}
.logo-icon{width:38px;height:38px;background:var(--accent);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;box-shadow:0 2px 8px rgba(0,0,0,0.2);}
.logo-text{min-width:0;}
.logo-text h1{font-family:'Oswald',sans-serif;font-size:1.1rem;font-weight:600;letter-spacing:.05em;line-height:1.2;}
.logo-text p{font-size:.65rem;opacity:.75;letter-spacing:.1em;}
.header-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:nowrap;max-width:none;flex:0 0 auto;}
.admin-badge{background:var(--accent);color:var(--text);font-size:.7rem;font-weight:700;padding:3px 10px;border-radius:20px;display:none;white-space:nowrap;line-height:1.1;}
.admin-badge.show{display:inline-flex;align-items:center;}
.btn-sm{padding:4px 10px;border:1px solid rgba(255,255,255,0.32);background:transparent;color:white;border-radius:12px;cursor:pointer;font-size:.73rem;font-family:'Noto Sans KR',sans-serif;transition:all .2s;min-height:30px;white-space:nowrap;line-height:1.1;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;}
.btn-sm:hover{background:rgba(255,255,255,0.15);}
.btn-sm.active{background:var(--accent);border-color:var(--accent);color:var(--text);}
.login-menu-wrap{position:relative;flex:0 0 auto;}
.login-menu-btn{min-width:102px;}
.login-menu-panel{position:absolute;right:0;top:calc(100% + 8px);display:none;flex-direction:column;gap:8px;min-width:190px;padding:10px;background:rgba(9,18,37,.98);border:1px solid rgba(255,255,255,.12);border-radius:14px;box-shadow:0 14px 32px rgba(0,0,0,.28);z-index:1400}
.login-menu-wrap.open .login-menu-panel{display:flex}
.js-mini-menu.open .login-menu-panel{display:none !important}
.login-menu-panel .login-menu-item{width:100%;justify-content:flex-start;padding:8px 12px;font-size:.76rem;min-height:36px;border-radius:10px}
.login-menu-panel #regClubNameBadge{display:none;max-width:100%;text-align:left}
@media(max-width:680px){
  .login-menu-btn{min-width:auto}
  .login-menu-panel{right:0;left:auto;min-width:176px;padding:9px;border-radius:12px}
  .login-menu-panel .login-menu-item{font-size:.72rem;min-height:34px;padding:7px 10px}
}

@media(max-width:680px){
  .header-top{flex-direction:row;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;flex-wrap:nowrap;}
  .logo{justify-content:flex-start;gap:8px;min-width:0;flex:1 1 auto;}
  .logo img{width:36px !important;height:36px !important;border-radius:10px !important;}
  .logo-icon{width:34px;height:34px;font-size:16px;}
  .logo-text h1{font-size:1rem;}
  .logo-text p{font-size:.56rem;}
  .header-actions{display:flex;flex-wrap:nowrap;gap:4px;align-items:center;justify-content:flex-end;flex:0 0 auto;min-width:0;}
  .header-actions .btn-sm{padding:4px 7px;font-size:.64rem;min-height:28px;border-radius:10px;letter-spacing:-.01em;}
  .header-actions .admin-badge,
  .header-actions .admin-badge.show,
  #regLoginBadge,#opLoginBadge,#adminBadge{display:none !important;}
  #adminSettingsBtn{display:none !important;}
  .admin-mode #adminSettingsBtn{display:inline-flex !important;}
  .login-menu-panel #regClubNameBadge{display:none !important;}
}
@media(max-width:420px){
  .logo-text h1{font-size:.93rem;}
  .logo-text p{font-size:.52rem;}
  .header-actions{gap:3px;}
  .header-actions .btn-sm{padding:4px 6px;font-size:.61rem;min-height:27px;}
}
.nav-tabs{display:flex;overflow-x:auto;gap:0;scrollbar-width:none;}
.nav-tabs::-webkit-scrollbar{display:none;}
.nav-tab{flex:0 0 auto;padding:10px 16px;cursor:pointer;font-size:.83rem;font-weight:500;color:rgba(255,255,255,.65);border-bottom:2px solid transparent;transition:all .2s;white-space:nowrap;display:flex;align-items:center;gap:5px;letter-spacing:.01em;}
.nav-tab:hover{color:white;background:rgba(255,255,255,.08);}
.nav-tab.active{color:white;border-bottom:3px solid var(--accent);font-weight:700;background:rgba(255,255,255,0.12);border-radius:4px 4px 0 0;}
.nav-tab .nbadge{background:var(--accent);color:var(--text);font-size:.6rem;font-weight:700;padding:1px 6px;border-radius:10px;min-width:18px;text-align:center;}

/* LAYOUT */
.main-content{max-width:1100px;margin:0 auto;padding:20px 16px 60px;}
.page{display:none;} .page.active{display:block;}

/* COMMON */
.sec-title{font-family:'Oswald',sans-serif;font-size:1.3rem;font-weight:600;color:var(--primary-dark);margin-bottom:16px;display:flex;align-items:center;gap:8px;letter-spacing:.03em;}
.sec-title::before{content:'';display:block;width:4px;height:22px;background:var(--accent);border-radius:2px;}
.card{background:var(--panel);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:20px;margin-bottom:16px;border:1px solid var(--border);}
.card-title{font-size:.95rem;font-weight:700;color:var(--primary-dark);margin-bottom:14px;padding-bottom:8px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;}
.g4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;}
.stat-card{background:var(--panel);border-radius:var(--radius-lg);padding:16px 18px;border:1px solid var(--border);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:4px;}
.stat-icon{font-size:1.6rem;margin-bottom:4px;}
.stat-val{font-family:'Oswald',sans-serif;font-size:1.8rem;font-weight:600;color:var(--primary);line-height:1;}
.stat-label{font-size:.78rem;color:var(--text2);letter-spacing:.02em;}
.home-status-card{padding:14px 16px;}
.home-stats{gap:10px;}
.home-stats .stat-card{padding:12px 14px;min-height:68px;justify-content:center;}
.home-stats .stat-val{font-size:1.55rem;}
.hero-sub{font-size:.9rem;font-weight:700;}
.hero-chips{display:flex;gap:10px;flex-wrap:wrap;}
.hero-chip b{font-weight:900;}
@media(max-width:680px){
  .home-stats{grid-template-columns:repeat(2,1fr)!important;}
  .home-stats .stat-card{min-height:60px;}
  .home-stats .stat-val{font-size:1.35rem;}
}
.btn{padding:8px 16px;border:none;border-radius:var(--radius);cursor:pointer;font-family:'Noto Sans KR',sans-serif;font-size:.92rem;font-weight:700;letter-spacing:.01em;transition:all .2s;display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:40px;line-height:1.25;}
.btn-primary{background:var(--primary);color:white;box-shadow:0 2px 8px rgba(21,101,192,0.25);}
.btn-primary:hover{background:var(--primary-dark);transform:translateY(-1px);box-shadow:0 4px 12px rgba(26,107,60,.3);}
.btn-accent{background:var(--accent);color:var(--text);font-weight:700;}
.btn-accent:hover{background:var(--accent-dark);}
.btn-outline{background:transparent;border:1.5px solid var(--primary);color:var(--primary);}
.btn-outline:hover{background:var(--primary);color:white;}
.btn-danger{background:var(--danger);color:white;}
.btn-danger:hover{background:#a93226;}
.btn-gray{background:var(--bg2);color:var(--text2);border:1px solid var(--border);}
.btn-gray:hover{background:var(--border);}
.form-group{margin-bottom:14px;}
.form-label{display:block;font-size:.82rem;font-weight:600;color:var(--text2);margin-bottom:5px;letter-spacing:.02em;}
.form-label .req{color:var(--danger);margin-left:2px;}
.form-input,.form-select,.form-textarea{width:100%;padding:9px 12px;border:1.5px solid var(--border);border-radius:var(--radius);font-family:'Noto Sans KR',sans-serif;font-size:.9rem;color:var(--text);background:white;outline:none;transition:border-color .2s;min-height:42px;}
.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(26,107,60,.1);}
.form-textarea{resize:vertical;min-height:80px;}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.frow3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;}
.table-wrap{overflow-x:auto;border-radius:var(--radius);}
table{width:100%;border-collapse:collapse;font-size:.88rem;}
table th{background:var(--primary);color:white;padding:8px 12px;text-align:center;font-weight:600;font-size:.82rem;letter-spacing:.02em;white-space:nowrap;}
table td{padding:9px 12px;border-bottom:1px solid var(--border);text-align:center;vertical-align:middle;}
table tr:last-child td{border-bottom:none;}
table tr:hover td{background:var(--panel2);}
table tr:nth-child(even) td{background:var(--bg);}
table tr:nth-child(even):hover td{background:var(--panel2);}
.badge{display:inline-block;padding:2px 9px;border-radius:12px;font-size:.74rem;font-weight:700;}
.live-blink{animation:liveBlink 1.1s ease-in-out infinite;}
.live-card{border-color:#f5a623 !important; box-shadow:0 0 0 2px rgba(245,166,35,.14), var(--shadow);}
@keyframes liveBlink{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.04)}}
.bg-gold{background:#fef3cd;color:#856404;border:1px solid #ffd700;}
.bg-silver{background:#f0f0f0;color:#5a5a5a;border:1px solid #aaa;}
.bg-bronze{background:#fde8d0;color:#8a4500;border:1px solid #cd7f32;}
.bg-blue{background:#ddeeff;color:#1a5276;border:1px solid #5dade2;}
.bg-green{background:#dce8fb;color:#1565c0;border:1px solid #52be80;}
.bg-gray{background:#f0f0f0;color:#666;border:1px solid #ddd;}
.bg-red{background:#fde;color:var(--danger);border:1px solid #e88;}
.itabs{display:flex;gap:0;border-bottom:2px solid var(--border);margin-bottom:18px;}
.itab{padding:8px 16px;cursor:pointer;font-size:.86rem;font-weight:500;color:var(--text2);border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .2s;white-space:nowrap;}
.itab:hover{color:var(--primary);}
.itab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:700;}
.dpill{display:inline-flex;align-items:center;gap:5px;padding:4px 12px;border-radius:20px;font-size:.8rem;font-weight:700;cursor:pointer;border:2px solid transparent;transition:all .18s;}
.dpill.gold{background:#fef3cd;color:#856404;border-color:#ffd700;}
.dpill.silver{background:#f0f0f0;color:#5a5a5a;border-color:#aaa;}
.dpill.bronze{background:#fde8d0;color:#8a4500;border-color:#cd7f32;}
.dpill.blue{background:#ddeeff;color:#1a5276;border-color:#5dade2;}
.dpill.purple{background:#f3e8ff;color:#6b21a8;border-color:#c084fc;}
.empty-state{text-align:center;padding:50px 20px;color:var(--text3);}
.empty-icon{font-size:3rem;margin-bottom:12px;}
.empty-state p{font-size:.88rem;}

/* MODAL */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:9000;display:none;align-items:center;justify-content:center;padding:16px;}
.modal-overlay.open{display:flex;}
.modal-box{background:white;border-radius:var(--radius-lg);width:100%;max-width:540px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,.25);animation:mIn .2s ease;}
.modal-box.fullscreen{width:100vw !important;height:100vh !important;max-width:none !important;max-height:none !important;border-radius:0 !important;resize:none !important;}
.modal-box.fullscreen .modal-body{max-height:calc(100vh - 120px) !important;overflow-y:auto !important;}
.modal-box.fullscreen .modal-header{border-radius:0 !important;}
@keyframes mIn{from{transform:translateY(20px) scale(.97);opacity:0}to{transform:none;opacity:1}}
.modal-header{background:var(--primary);color:white;padding:16px 20px;border-radius:var(--radius-lg) var(--radius-lg) 0 0;display:flex;align-items:center;justify-content:space-between;}
.modal-header h3{font-size:1.02rem;font-weight:700;}
.modal-close{background:rgba(255,255,255,.2);border:none;color:white;width:26px;height:26px;border-radius:50%;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:background .2s;}
.modal-close:hover{background:rgba(255,255,255,.35);}
.modal-body{padding:20px;}
.modal-footer{padding:10px 18px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px;}

/* TOAST */
.toast-container{position:fixed;bottom:24px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:8px;}
.toast{background:var(--text);color:white;padding:10px 18px;border-radius:var(--radius);font-size:.87rem;box-shadow:var(--shadow-lg);animation:tIn .25s ease;max-width:300px;display:flex;align-items:center;gap:7px;}
.toast.success{background:var(--success);}
.toast.error{background:var(--danger);}
.toast.info{background:var(--info);}
@keyframes tIn{from{transform:translateX(30px);opacity:0}to{transform:none;opacity:1}}
.sticky-alert-wrap{position:fixed;right:20px;bottom:24px;z-index:10020;display:none;max-width:min(420px,calc(100vw - 24px));}
.sticky-alert-wrap.show{display:block;animation:tIn .22s ease;}
.sticky-alert-wrap.left-side{right:auto;left:20px;}
.sticky-alert-card{background:linear-gradient(135deg,#1d4ed8,#2563eb);color:#fff;border-radius:16px;box-shadow:0 16px 36px rgba(37,99,235,.28);padding:14px 16px;border:1px solid rgba(255,255,255,.18);}
.sticky-alert-title{font-size:.92rem;font-weight:900;display:flex;align-items:center;gap:8px;margin-bottom:6px;}
.sticky-alert-msg{font-size:.84rem;line-height:1.6;opacity:.97;word-break:keep-all;}
.sticky-alert-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px;flex-wrap:wrap;}
.sticky-alert-btn{border:none;border-radius:999px;padding:8px 14px;font-size:.78rem;font-weight:900;cursor:pointer;}
.sticky-alert-btn.primary{background:#fff;color:#1d4ed8;}
.sticky-alert-btn.secondary{background:rgba(255,255,255,.16);color:#fff;border:1px solid rgba(255,255,255,.22);}
@media(max-width:680px){.sticky-alert-wrap,.sticky-alert-wrap.left-side{left:10px;right:10px;bottom:max(88px,calc(env(safe-area-inset-bottom,0px) + 72px));max-width:none}.sticky-alert-card{border-radius:14px;padding:13px 14px}.sticky-alert-title{font-size:.88rem}.sticky-alert-msg{font-size:.8rem}.sticky-alert-actions{justify-content:stretch}.sticky-alert-btn{flex:1 1 0;padding:9px 10px}}

/* HERO */
.hero{background:linear-gradient(135deg,#0f1e3a,#1b2f5a 60%,#233d74);border-radius:var(--radius-lg);color:white;padding:28px 24px;margin-bottom:20px;position:relative;overflow:hidden;}
.hero::after{content:'🎾';position:absolute;right:20px;bottom:-10px;font-size:7rem;opacity:.12;}
.hero h2{font-family:'Oswald',sans-serif;font-size:1.6rem;font-weight:600;letter-spacing:.05em;margin-bottom:6px;}
.hero p{font-size:.88rem;opacity:.85;}
.hero-meta{margin-top:14px;display:flex;gap:10px;flex-wrap:wrap;}
.hero-chip{background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.3);padding:4px 12px;border-radius:20px;font-size:.76rem;font-weight:500;}
.recent-list{list-style:none;}
.ri{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--border);font-size:.87rem;}
.ri:last-child{border-bottom:none;}
.ri-icon{width:28px;height:28px;border-radius:50%;background:var(--bg2);display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0;}
.ri-text{flex:1;}
.ri-meta{color:var(--text3);font-size:.76rem;}
.ri-time{font-size:.74rem;color:var(--text3);white-space:nowrap;}

/* TOURNAMENT CARD */
.tc{background:var(--panel);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow);overflow:hidden;margin-bottom:12px;transition:box-shadow .2s;}
.tc:hover{box-shadow:var(--shadow-lg);}
.tc-hdr{background:linear-gradient(90deg,#091225,#0f1e3a);color:white;padding:12px 16px;display:flex;align-items:center;justify-content:space-between;}
.tc-hdr h3{font-size:1rem;font-weight:700;}
.tc-body{padding:14px 16px;}
.tc-meta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px;}
.tc-mi{display:flex;align-items:center;gap:4px;font-size:.8rem;color:var(--text2);}
.tc-acts{display:flex;gap:6px;justify-content:flex-end;margin-top:10px;}
.sbadge{display:inline-block;padding:3px 10px;border-radius:12px;font-size:.68rem;font-weight:700;letter-spacing:.05em;}
.s-open{background:#dce8fb;color:#1565c0;}
.s-closed{background:#fde8d0;color:#8a4500;}
.s-ongoing{background:#ddeeff;color:#1a5276;}
.s-finished{background:#f0f0f0;color:#555;}

/* PLAYER SLOT */
.pslot{display:flex;align-items:center;gap:4px;padding:5px 6px;background:var(--panel2);border-radius:var(--radius);border:1.5px solid var(--border);margin-bottom:5px;min-width:0;overflow:hidden;}
.pslot-num{width:22px;height:22px;background:var(--primary);color:white;border-radius:50%;font-size:.68rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:opacity .15s;}
.pslot-num[onclick]:hover{opacity:.75;}
.pslot input{flex:1;min-width:0;border:none;background:transparent;font-family:'Noto Sans KR',sans-serif;font-size:1rem;color:var(--text);outline:none;font-weight:700;}
.pslot input::placeholder{font-size:.92rem;color:var(--text3);font-weight:500;}
.pslot{min-width:0;}
.pslot button{flex-shrink:0;}
body{overflow-x:hidden;}

.phint{font-size:.68rem;color:var(--text3);margin-top:-4px;margin-bottom:6px;padding-left:32px;min-height:16px;}
.team-num{width:26px;height:26px;background:var(--primary);color:white;border-radius:50%;font-size:.72rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;}

/* BRACKET */
.bracket-wrap{overflow-x:auto;padding:10px 0;}
.bracket{display:flex;gap:0;min-width:600px;}
.br-round{flex:1;display:flex;flex-direction:column;position:relative;}
.br-round-title{text-align:center;font-size:.72rem;font-weight:700;color:var(--primary);padding:6px 0;letter-spacing:.05em;background:var(--panel2);border-radius:4px;margin-bottom:8px;}
.br-matches{flex:1;display:flex;flex-direction:column;justify-content:space-around;}
.br-match{margin:6px 4px;border:1.5px solid var(--border);border-radius:var(--radius);overflow:hidden;background:white;box-shadow:var(--shadow);}
.br-team{padding:7px 10px;font-size:.78rem;display:flex;align-items:center;justify-content:space-between;gap:6px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .15s;}
.br-team:last-child{border-bottom:none;}
.br-team:hover{background:var(--panel2);}
.br-team.winner{background:#dce8fb;font-weight:700;color:var(--primary-dark);}
.br-team .tlabel{flex:1;}
.br-team .tscore{font-weight:700;font-size:.85rem;color:var(--primary);min-width:20px;text-align:right;}
.br-team.tbd{color:var(--text3);font-style:italic;}

/* GROUP */
.grp-block{background:var(--panel);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow);margin-bottom:14px;overflow:hidden;}
.grp-hdr{background:linear-gradient(135deg,#0f1e3a 0%,#1b2f5a 100%);color:white;padding:11px 16px;font-weight:800;font-size:.92rem;display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;}
.grp-body{padding:12px;}
.grp-tr{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:var(--radius);margin-bottom:4px;background:var(--panel2);border:1px solid var(--border);font-size:.82rem;}
.grp-seed{width:22px;height:22px;background:var(--bg2);border-radius:50%;font-size:.68rem;font-weight:700;display:flex;align-items:center;justify-content:center;color:var(--text2);flex-shrink:0;}
/* grp-card: 조별 대진표 카드 */
.grp-card{background:var(--panel);border:1.5px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:14px;box-shadow:0 2px 12px rgba(0,0,0,.08);}
.gs-row{display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid var(--border);font-size:.88rem;transition:background .15s;}
.gs-row:hover{background:var(--panel2);}
.gs-row:last-child{border-bottom:none;}
.gs-rk{width:28px;font-size:1.15rem;text-align:center;flex-shrink:0;}
.gs-nm{flex:1;font-weight:700;font-size:.94rem;}
.gs-stats{display:flex;gap:10px;font-size:.84rem;color:var(--text2);}
.gs-row.adv-1st{background:linear-gradient(90deg,#e8f4fd,#f0f8ff);}
.gs-row.adv-2nd{background:linear-gradient(90deg,#fff3e0,#fff8f0);}
.gs-row.adv{background:var(--panel2);}
.adv-chip{display:inline-block;padding:1px 7px;border-radius:999px;font-size:.74rem;font-weight:700;margin-left:6px;}
.grp-matches-section{padding:0 12px 12px;border-top:2px solid var(--border);margin-top:2px;}
.grp-matches-label{font-size:.82rem;font-weight:700;color:var(--text2);padding:8px 2px 6px;letter-spacing:.2px;}

/* MATCH CARD */
.match-card{background:var(--panel);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow);padding:14px 16px;margin-bottom:10px;transition:box-shadow .2s;}
.match-card:hover{box-shadow:var(--shadow-lg);}
.match-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;flex-wrap:wrap;gap:6px;}
.match-meta{font-size:.72rem;color:var(--text3);}
.match-teams{display:flex;align-items:center;gap:10px;}
.match-team{flex:1;text-align:center;padding:10px;background:var(--panel2);border-radius:var(--radius);border:1.5px solid var(--border);}
.match-team.winner{border-color:var(--success);background:#dce8fb;}
.match-team-name{font-weight:800;font-size:1.02rem;line-height:1.25;}
.match-team-players{font-size:.88rem;color:var(--text2);margin-top:4px;line-height:1.45;}
.match-vs{font-family:'Oswald',sans-serif;font-size:1rem;font-weight:700;color:var(--text3);flex-shrink:0;}
.score-inputs{display:flex;align-items:center;gap:10px;margin-top:10px;padding-top:10px;border-top:1px solid var(--border);}
.sig{flex:1;display:flex;gap:4px;}
.sig input{width:100%;padding:7px;border:1.5px solid var(--border);border-radius:var(--radius);font-size:1rem;font-weight:700;text-align:center;font-family:'Oswald',sans-serif;outline:none;transition:border-color .2s;}
.sig input:focus{border-color:var(--primary);}

/* PLAYER PROFILE */
.pp-hdr{display:flex;align-items:center;gap:16px;background:linear-gradient(135deg,var(--primary-dark),var(--primary));color:white;border-radius:var(--radius-lg);padding:20px;margin-bottom:16px;}
.pp-avatar{width:56px;height:56px;background:var(--accent);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.4rem;font-weight:700;color:var(--text);flex-shrink:0;font-family:'Oswald',sans-serif;}
.pp-info h3{font-size:1.2rem;font-weight:700;}
.pp-info p{font-size:.78rem;opacity:.8;margin-top:2px;}
.pp-tags{margin-top:8px;display:flex;gap:5px;flex-wrap:wrap;}
.ps-row{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px;}
.psm{background:var(--panel);border-radius:var(--radius);border:1px solid var(--border);padding:10px 12px;text-align:center;}
.psm-val{font-family:'Oswald',sans-serif;font-size:1.3rem;font-weight:600;color:var(--primary);}
.psm-label{font-size:.66rem;color:var(--text3);margin-top:2px;}
.hist-row{display:flex;align-items:center;gap:8px;padding:9px 12px;border-bottom:1px solid var(--border);font-size:.82rem;}
.hist-row:last-child{border-bottom:none;}
.hist-yr{font-family:'Oswald',sans-serif;font-size:.85rem;font-weight:600;color:var(--primary);width:60px;flex-shrink:0;}
.hist-detail{flex:1;color:var(--text2);}

/* MISC */
.scroll-top{position:fixed;bottom:24px;left:20px;width:36px;height:36px;background:var(--primary);color:white;border:none;border-radius:50%;cursor:pointer;font-size:16px;display:none;align-items:center;justify-content:center;box-shadow:var(--shadow);z-index:500;}
.scroll-top.show{display:flex;}
.fade-in{animation:fadeIn .3s ease;}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.6}}
@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes tennisBallSpin{0%{transform:rotate(0deg) scale(1)}100%{transform:rotate(360deg) scale(1)}}
@keyframes tennisBounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes drawPop{0%{transform:scale(.78);opacity:.2}70%{transform:scale(1.08);opacity:1}100%{transform:scale(1);opacity:1}}
@keyframes cardFlyIn{0%{transform:translate(var(--fx,120px),var(--fy,-80px)) rotate(var(--fr,18deg)) scale(.55);opacity:0}60%{transform:translate(calc(var(--fx,120px)*.12),calc(var(--fy,-80px)*.12)) rotate(calc(var(--fr,18deg)*.1)) scale(1.08);opacity:1}80%{transform:translate(0,4px) rotate(-2deg) scale(1.03)}100%{transform:translate(0,0) rotate(0deg) scale(1);opacity:1}}
@keyframes cardLand{0%{transform:scale(1)}30%{transform:scale(.93) translateY(3px)}60%{transform:scale(1.04)}100%{transform:scale(1)}}
@keyframes cardShake{0%,100%{transform:rotate(0)}20%{transform:rotate(-4deg)}40%{transform:rotate(3deg)}60%{transform:rotate(-2deg)}80%{transform:rotate(1deg)}}
@keyframes slotGroupComplete{0%{box-shadow:0 0 0 0 rgba(34,197,94,.6)}70%{box-shadow:0 0 0 14px rgba(34,197,94,0)}100%{box-shadow:0 0 0 0 rgba(34,197,94,0)}}
@keyframes confettiFall{0%{transform:translateY(-10px) rotate(0deg);opacity:1}100%{transform:translateY(60px) rotate(720deg);opacity:0}}
@keyframes drumRollPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.04)}}
@keyframes leafFloat{
  0%  {transform:translate(0,0) rotate(0deg) scale(1);}
  20% {transform:translate(7px,-10px) rotate(7deg) scale(1.03);}
  40% {transform:translate(-5px,-16px) rotate(-5deg) scale(.98);}
  60% {transform:translate(8px,-8px) rotate(8deg) scale(1.02);}
  80% {transform:translate(-6px,-12px) rotate(-4deg) scale(.99);}
  100%{transform:translate(0,0) rotate(0deg) scale(1);}
}
@keyframes leafLand{
  0%  {transform:translate(var(--lx,0px),var(--ly,-80px)) rotate(var(--lr,25deg)) scale(.6); opacity:0;}
  45% {opacity:1;}
  68% {transform:translate(calc(var(--lx,0px)*.03),6px) rotate(-2deg) scale(1.08);}
  82% {transform:translate(0,-2px) rotate(1deg) scale(1.02);}
  100%{transform:translate(0,0) rotate(0deg) scale(1); opacity:1;}
}
@keyframes rouletteScroll{
  0%  {transform:translateY(0);}
  100%{transform:translateY(-50%);}
}
@keyframes slotBlink{
  0%,100%{background:var(--panel);border-color:#93c5fd;box-shadow:none;color:var(--text2);}
  50%    {background:#dbeafe;border-color:#1565c0;box-shadow:0 0 0 4px rgba(21,101,192,.22);color:#1565c0;}
}
@keyframes slotFill{
  0%  {transform:scale(.65) translateY(-10px);opacity:0;}
  60% {transform:scale(1.1) translateY(2px);opacity:1;}
  80% {transform:scale(.97);}
  100%{transform:scale(1) translateY(0);opacity:1;}
}
.leaf-card-stage{
  display:inline-flex;align-items:center;justify-content:center;
  padding:10px 18px;border-radius:14px;font-size:.9rem;font-weight:800;
  background:linear-gradient(135deg,#0f1e3a,#1b2f5a);color:white;
  box-shadow:0 6px 22px rgba(15,30,58,.35);
  border:2px solid rgba(255,255,255,.28);
  min-width:100px;white-space:nowrap;cursor:default;
}
.leaf-card-stage.same-club-card{background:linear-gradient(135deg,#d97706,#f59e0b);}
.leaf-card-stage.floating{animation:leafFloat 2.2s ease-in-out infinite;}
.leaf-card-stage.landing{animation:leafLand .88s cubic-bezier(.22,.68,.35,1.25) forwards;}
/* ── 조 슬롯 ── */
/* ── 조 편성 설정 ── */
.draw-cfg{padding:14px;background:var(--panel2);border-radius:var(--radius-lg);border:1px solid var(--border);margin-bottom:14px;}
.draw-cfg-row{display:flex;align-items:center;gap:10px;margin-bottom:8px;flex-wrap:wrap;}
.draw-cfg-row:last-child{margin-bottom:0;}
.draw-cfg-label{font-size:.78rem;font-weight:700;color:var(--text2);min-width:100px;}
.draw-progress{height:4px;background:var(--border);border-radius:2px;overflow:hidden;margin:10px 0;}
.draw-progress-bar{height:100%;background:linear-gradient(90deg,var(--primary),var(--accent));border-radius:2px;transition:width .4s ease;}
.same-club-warn{font-size:.72rem;color:#b45309;background:#fef3cd;padding:5px 10px;border-radius:var(--radius);margin-top:6px;display:none;}
.same-club-warn.show{display:block;}
/* ── 조 슬롯 행 ── */
.draw-group-row{display:flex;align-items:center;gap:8px;padding:10px;border-radius:var(--radius);background:var(--panel2);border:1px solid var(--border);margin-bottom:6px;}
.draw-group-label{font-weight:900;font-size:1rem;color:var(--primary);width:36px;text-align:center;flex-shrink:0;}
/* ── 팀 슬롯 ── */
.draw-team-slot{display:inline-flex;align-items:center;padding:4px 12px;border-radius:12px;font-size:.8rem;font-weight:600;background:var(--panel);border:1.5px dashed var(--border);min-width:80px;justify-content:center;transition:all .4s;flex-shrink:0;}
.draw-team-slot.slot-active{animation:slotBlink .52s ease-in-out infinite;}
.draw-team-slot.slot-filled{background:linear-gradient(135deg,#0f1e3a,#1b2f5a)!important;color:white!important;border-style:solid!important;border-color:#0f1e3a!important;font-weight:800!important;animation:slotFill .42s cubic-bezier(.22,.68,.35,1.3) forwards;}
.draw-team-slot.slot-filled.same-club{background:linear-gradient(135deg,#d97706,#f59e0b)!important;border-color:#d97706!important;}
/* ── 낙엽 카드 (스테이지용) ── */
.leaf-card-stage{
  display:inline-flex;align-items:center;justify-content:center;
  padding:10px 20px;border-radius:14px;font-size:.92rem;font-weight:800;
  background:linear-gradient(135deg,#1565c0,#1e88e5);color:white;
  box-shadow:0 6px 24px rgba(21,101,192,.42);
  border:2px solid rgba(255,255,255,.28);
  min-width:110px;white-space:nowrap;
}
.leaf-card-stage.same-club-card{background:linear-gradient(135deg,#d97706,#f59e0b);}
.leaf-card-stage.floating{animation:leafFloat 2.2s ease-in-out infinite;}
.leaf-card-stage.landing{animation:leafLand .88s cubic-bezier(.22,.68,.35,1.25) forwards;}
/* ── 룰렛 ── */
.roulette-strip-wrap{
  width:100%;height:180px;overflow:hidden;border-radius:12px;
  border:1.5px solid var(--border);background:var(--bg2);position:relative;
}
.roulette-strip-wrap::before,.roulette-strip-wrap::after{
  content:'';position:absolute;left:0;right:0;height:44px;z-index:2;pointer-events:none;
}
.roulette-strip-wrap::before{top:0;background:linear-gradient(to bottom,var(--bg2) 30%,transparent);}
.roulette-strip-wrap::after{bottom:0;background:linear-gradient(to top,var(--bg2) 30%,transparent);}
.roulette-highlight{
  position:absolute;left:4px;right:4px;top:50%;transform:translateY(-50%);
  height:42px;background:rgba(15,30,58,.08);
  border-top:2px solid rgba(15,30,58,.35);border-bottom:2px solid rgba(15,30,58,.35);
  z-index:1;pointer-events:none;border-radius:6px;
}
.roulette-strip{display:flex;flex-direction:column;will-change:transform;}
.roulette-strip.spinning{animation:rouletteScroll var(--speed,.1s) linear infinite;}
.roulette-item{
  height:42px;display:flex;align-items:center;justify-content:center;
  font-size:.85rem;font-weight:600;color:var(--text1);
  border-bottom:1px solid var(--border);flex-shrink:0;padding:0 14px;
  white-space:nowrap;
}
.roulette-item.winner-item{
  color:#fff;font-weight:900;font-size:.9rem;
  background:linear-gradient(135deg,#0f1e3a,#1b2f5a);border-radius:6px;
}
/* ── 스테이지 카드 ── */
.draw-stage-card{
  background:linear-gradient(135deg,#fbfbfd,#f1f4fa);
  border:1.5px solid #d5dbea;border-radius:14px;padding:12px;
}
/* ── confetti ── */
.confetti-piece{position:absolute;width:8px;height:8px;border-radius:2px;pointer-events:none;animation:confettiFall .7s ease-out forwards;}
.grp-preset{display:inline-block;padding:5px 11px;border-radius:20px;border:1.5px solid var(--border);background:var(--bg2);color:var(--text1);font-size:.78rem;font-weight:600;cursor:pointer;transition:all .15s;user-select:none;}
.grp-preset:hover{border-color:var(--primary);color:var(--primary);background:#e8f0fe;}
.grp-preset.active{background:var(--primary);color:#fff;border-color:var(--primary);}
@media(max-width:600px){
  #drawCfgScreen > div[style*="grid-template-columns"],
  #drawRunScreen > div[style*="grid-template-columns"]{
    grid-template-columns:1fr!important;
  }
}

/* 운영용 부서 sticky 배너 */
.op-division-banner{position:sticky;top:94px;z-index:120;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:12px 14px;border-radius:16px;margin:0 0 12px 0;border:2px solid var(--border);box-shadow:0 8px 18px rgba(15,30,58,.12);backdrop-filter:saturate(120%) blur(2px)}
.op-division-banner .op-title{font-weight:900;font-size:1rem;line-height:1.2}
.op-division-banner .op-sub{font-size:.74rem;opacity:.88;margin-top:3px}
.op-division-banner .op-quick-summary{display:flex;gap:6px;flex-wrap:wrap}
.op-banner-gold{background:linear-gradient(135deg,#fff8df,#f8e39c);border-color:#d4a017;color:#6b4e00}
.op-banner-silver{background:linear-gradient(135deg,#f8fafc,#dfe6ef);border-color:#aab2c3;color:#334155}
.op-banner-bronze{background:linear-gradient(135deg,#fff2e8,#efc29d);border-color:#a97142;color:#7c4220}
.op-banner-green{background:linear-gradient(135deg,#edfdf2,#c8f2d4);border-color:#37a565;color:#14532d}
.op-banner-blue{background:linear-gradient(135deg,#eef4ff,#d7e6ff);border-color:#4f7edc;color:#123a88}
.op-side-ribbon{display:none}.op-sticky-ribbon{position:fixed;left:8px;top:118px;z-index:1650;display:none;align-items:center;gap:6px;padding:8px 10px;border-radius:14px;border:2px solid var(--border);box-shadow:0 10px 22px rgba(15,30,58,.16);font-weight:900;font-size:.78rem;line-height:1.1;background:rgba(255,255,255,.97);backdrop-filter:saturate(120%) blur(2px);max-width:min(220px,calc(100vw - 18px));flex-wrap:wrap;justify-content:flex-start}.op-sticky-ribbon.show{display:inline-flex}.op-div-marker{display:block;height:1px;opacity:0;pointer-events:none}.op-sticky-ribbon .mini{font-size:.66rem;padding:2px 7px;border-radius:999px;background:rgba(15,30,58,.08)}.op-sticky-ribbon .sub{display:block;flex-basis:100%;font-size:.62rem;opacity:.78;font-weight:700;line-height:1.2}
.op-sticky-ribbon.mobile-lowered{top:auto;bottom:max(78px,calc(env(safe-area-inset-bottom,0px) + 62px));left:8px;right:8px;max-width:calc(100vw - 16px);} 
.op-sticky-ribbon .closex{margin-left:auto;border:none;background:rgba(15,30,58,.12);color:inherit;border-radius:999px;padding:2px 8px;font-size:.72rem;font-weight:900;cursor:pointer;line-height:1.2;} 
.op-sticky-ribbon .closex:hover{background:rgba(15,30,58,.2);} 
.op-side-ribbon .mini{font-size:.66rem;font-weight:800;opacity:.9}
.op-side-ribbon .sub{display:none}
.br-floating-notice{position:fixed;left:50%;top:148px;transform:translateX(-50%);z-index:3000;display:none;align-items:center;gap:10px;min-width:min(760px,calc(100vw - 20px));max-width:min(960px,calc(100vw - 20px));padding:10px 14px;border-radius:14px;border:2px solid #d4a017;background:linear-gradient(135deg,#fff8df,#ffe68a);color:#4a3510;box-shadow:0 12px 30px rgba(15,30,58,.28);font-weight:900;cursor:move;user-select:none;touch-action:none}
.br-floating-notice.show{display:flex !important}
.br-floating-notice .tag{flex:0 0 auto;padding:4px 10px;border-radius:999px;background:#0f1e3a;color:#fff;font-size:.76rem;letter-spacing:.02em}
.br-floating-notice .text{flex:1;min-width:0;overflow:hidden;position:relative;height:1.45em;display:flex;align-items:center}
.br-floating-notice .text .marquee{display:inline-flex;align-items:center;gap:46px;white-space:nowrap;will-change:transform;animation:noticeMarquee 18s linear infinite}
.br-floating-notice .text .msg{display:inline-block;font-size:.95rem;font-weight:900;white-space:nowrap;flex:0 0 auto}
.br-floating-notice .text.static .marquee{animation:none;transform:none}
.br-floating-notice .actions{display:flex;gap:6px;flex:0 0 auto;cursor:auto}
.br-floating-notice .btnx{border:none;background:#0f1e3a;color:#fff;border-radius:999px;padding:6px 10px;font-size:.72rem;font-weight:800;cursor:pointer;touch-action:manipulation}
@keyframes noticeMarquee{0%{transform:translateX(0)}100%{transform:translateX(calc(-50% - 23px))}}
@media(max-width:680px){
  .op-division-banner{top:84px;padding:9px 11px}
  .op-side-ribbon{left:4px;top:76px;font-size:.7rem;padding:5px 8px;gap:4px;max-width:150px;border-radius:12px}
  .br-floating-notice{top:132px;min-width:calc(100vw - 12px);max-width:calc(100vw - 12px);padding:8px 10px;gap:7px;border-radius:12px}
  .br-floating-notice .tag{font-size:.66rem;padding:3px 8px}
  .br-floating-notice .text{height:1.35em}
  .br-floating-notice .text .msg{font-size:.8rem}
  .br-floating-notice .btnx{font-size:.66rem;padding:5px 8px}
  .op-sticky-ribbon{left:8px;top:auto;bottom:max(84px,calc(env(safe-area-inset-bottom,0px) + 68px));right:8px;padding:8px 10px;font-size:.72rem;max-width:calc(100vw - 16px);border-radius:12px}
  .op-sticky-ribbon .mini{font-size:.6rem;padding:2px 6px}
  .op-sticky-ribbon .sub{font-size:.58rem}
}
  .g2,.g3,.g4{grid-template-columns:1fr;}
  .frow,.frow3{grid-template-columns:1fr;}
  .ps-row{grid-template-columns:1fr 1fr;}
  .match-teams{flex-direction:column;}
}

.m3card{background:var(--panel);border:1.5px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:10px;box-shadow:var(--shadow);}
.m3hdr{background:linear-gradient(90deg,#091225,#0f1e3a);color:white;padding:9px 14px;display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;}
.m3badge{font-size:.85rem;background:rgba(255,255,255,.2);padding:3px 10px;border-radius:10px;font-weight:700;}
.m3body{padding:10px 14px;}
.m3sc-row{display:grid;grid-template-columns:1fr auto 1fr;gap:8px;align-items:center;margin-bottom:8px;}
.m3sc{font-family:'Oswald',sans-serif;font-size:2.45rem;font-weight:700;color:var(--primary);text-align:center;line-height:1;}
.m3tnm{font-weight:800;font-size:1.08rem;text-align:center;line-height:1.3;}
.m3tnm.win{color:var(--success);}
.m3tnm.lose{color:var(--text3);}
.rb-rows{margin-top:6px;display:flex;flex-direction:column;gap:3px;}
.rb-row{display:grid;grid-template-columns:1fr auto 1fr;gap:8px;align-items:center;padding:7px 10px;border-radius:8px;font-size:.92rem;line-height:1.35;}
.rb-row.pend{background:var(--bg2);color:var(--text3);}
.rb-row.win1{background:#eef2ff;}
.rb-row.win2{background:#fdf0ef;}
.rb-p1{font-weight:600;}
.rb-p2{text-align:right;font-weight:600;}
.rb-sc{font-family:'Oswald',sans-serif;font-weight:700;text-align:center;min-width:64px;font-size:1rem;}
.t-bracket{display:flex;gap:0;overflow-x:auto;padding-bottom:8px;align-items:stretch;}
.t-round{display:flex;flex-direction:column;min-width:170px;position:relative;}
.t-rtitle{text-align:center;font-size:.7rem;font-weight:700;color:white;background:#0f1e3a;padding:5px 0;border-radius:4px 4px 0 0;margin-bottom:4px;margin:0 20px 4px 4px;}
.t-matches{display:flex;flex-direction:column;justify-content:space-around;flex:1;gap:6px;}
/* 경기 카드 래퍼 (연결선 포함) */
.t-match-wrap{display:flex;align-items:stretch;position:relative;}
.t-match-wrap .t-match{flex:1;min-width:0;}
/* 오른쪽 ─ 수평 연결선 */
.t-match-wrap .t-conn-h{width:20px;flex:0 0 20px;position:relative;}
.t-match-wrap .t-conn-h::before{content:'';position:absolute;top:50%;left:0;width:100%;height:2px;background:#c8d4e8;}
/* 짝(pair)으로 묶인 경기: 수직 브래킷 선 */
.t-pair{display:flex;flex-direction:column;gap:6px;position:relative;}
.t-pair::after{content:'';position:absolute;right:0;top:calc(25%);height:50%;width:2px;background:#c8d4e8;border-radius:0;}
/* 경기 카드 */
.t-match{border:1.5px solid #d5dbea;border-radius:var(--radius);overflow:hidden;background:var(--panel);}
.t-match.has-winner{border-color:#1565c0;box-shadow:0 0 0 1.5px #1565c044;}
.t-slot{display:flex;align-items:center;padding:7px 9px;font-size:.78rem;border-bottom:1px solid var(--border);background:var(--panel);}
.t-slot:last-child{border-bottom:none;}
/* 승리팀: 파란 강조바 + 진하게 */
.t-slot.wsl{background:linear-gradient(to right,#1565c0 3px,#dce8fb 3px);font-weight:800;color:#0c3880;padding-left:12px;}
/* 패배팀: 흐리게 */
.t-slot.loser{opacity:.5;background:#f4f6fb;color:var(--text3);}
.t-slot.tbd{color:var(--text3);font-style:italic;background:var(--bg2);}
.t-sn{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.t-ss{font-family:'Oswald',sans-serif;font-weight:800;font-size:.88rem;min-width:22px;text-align:right;}
.t-champ{background:linear-gradient(135deg,#fff7dd,#d4a017);border:2px solid var(--accent);border-radius:var(--radius-lg);padding:14px 10px;text-align:center;margin:0 4px;}
@media(max-width:680px){.t-bracket{flex-direction:column;}.t-round{min-width:100%;}.t-conn-h,.t-pair::after{display:none;}}
.sf-flow{display:flex;align-items:flex-start;gap:0;overflow-x:auto;padding:10px 0 6px;}
.sf-step{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:76px;position:relative;}
.sf-step:not(:last-child)::after{content:'›';position:absolute;right:-10px;top:10px;color:var(--text3);font-size:1.1rem;font-weight:700;}
.sf-dot{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.82rem;font-weight:700;}
.sf-done{background:var(--success);color:white;}
.sf-active{background:var(--accent);color:var(--text);}
.sf-pend{background:var(--border);color:var(--text3);}
.sf-lbl{font-size:.72rem;text-align:center;color:var(--text2);line-height:1.35;font-weight:600;}

.gs-row:last-child{border-bottom:none;}
.gs-row.adv-1st{background:linear-gradient(90deg,#e3eeff,#eef2ff);border-left:3px solid #1565c0;}
.gs-row.adv-2nd{background:linear-gradient(90deg,#fff3e0,#fffde7);border-left:3px solid #e67e22;}
.gs-row.adv{background:#e3eeff;}
.gs-rk{width:26px;text-align:center;font-weight:700;font-family:'Oswald',sans-serif;}
.gs-nm{flex:1;font-weight:600;}
.gs-stats{display:flex;gap:8px;font-size:.72rem;color:var(--text2);}
.adv-chip{font-size:.6rem;background:var(--success);color:white;padding:2px 6px;border-radius:8px;}
.rb-blk{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-bottom:8px;}
.rb-bhdr{background:var(--primary);color:white;padding:7px 12px;font-size:.8rem;font-weight:700;display:flex;align-items:center;justify-content:space-between;}
.rb-bbdy{padding:10px 12px;}

.m3-pick-wrap{display:flex;flex-direction:column;gap:8px}
.m3-picked{display:flex;flex-wrap:wrap;gap:6px;min-height:36px}
.m3-picked-empty{font-size:.76rem;color:var(--text3);padding:6px 2px}
.m3-picked-item{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border-radius:999px;background:var(--primary);color:#fff;font-size:.9rem;font-weight:800;line-height:1;border:1.5px solid var(--primary)}
.m3-picked-item .num{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:rgba(255,255,255,.16);font-size:.72rem;font-weight:900}
.m3-picked-item .rm{border:none;background:rgba(255,255,255,.15);color:#fff;width:22px;height:22px;border-radius:50%;cursor:pointer;font-size:.8rem;font-weight:900;line-height:1}
.m3-picker-toggle{width:100%;justify-content:space-between;padding:10px 12px !important;font-size:.9rem !important;font-weight:800 !important}
.m3-picker-list{display:none;border:1.5px solid var(--border);border-radius:12px;background:#fff;max-height:200px;overflow:auto}
.m3-picker-list.open{display:block}
.m3-picker-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 12px;border-bottom:1px solid var(--border);font-size:.92rem;font-weight:700}
.m3-picker-row:last-child{border-bottom:none}
.m3-picker-row .meta{font-size:.72rem;color:var(--text3);font-weight:700;margin-right:auto}
.m3-picker-row.pickable{cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .08s ease;user-select:none;-webkit-tap-highlight-color:transparent;}
.m3-picker-row.pickable:hover{background:var(--panel2);}
.m3-picker-row.pickable:active{background:#eef2ff;transform:scale(.995);}
.p-chip{display:inline-flex;align-items:center;gap:5px;padding:8px 14px;border:1.5px solid var(--border);border-radius:16px;cursor:pointer;font-size:1.06rem;font-weight:700;background:var(--panel2);margin:4px;transition:all .15s;line-height:1.2;}
.p-chip:hover{border-color:var(--primary);}
.p-chip.sel{background:var(--primary);color:white;border-color:var(--primary);}
.rb-sc-row{display:grid;grid-template-columns:1fr 20px 1fr;gap:6px;align-items:center;margin-top:8px;}
.rb-sc-in{width:100%;padding:13px 10px;border:1.5px solid var(--border);border-radius:var(--radius);font-size:1.75rem;font-weight:700;text-align:center;font-family:'Oswald',sans-serif;outline:none;transition:border-color .2s;min-height:62px;}
.rb-sc-in:focus{border-color:var(--primary);}
.tb-row{font-size:.72rem;color:var(--text3);margin-top:6px;padding-top:5px;border-top:1px dashed var(--border);display:flex;align-items:center;gap:6px;}
/* t-bracket mobile: see above */
.admin-only{display:none}
.admin-mode .admin-only{display:inline-flex !important}
.admin-mode .admin-only.admin-block{display:block !important}

/* ── 스와이프 페이지 인디케이터 ── */
.swipe-indicator{
  display:flex;justify-content:center;align-items:center;
  gap:5px;padding:3px 0 4px;
  background:linear-gradient(135deg,#091225 0%,#0f1e3a 55%,#1b2f5a 100%);
}
.swipe-dot{
  width:5px;height:5px;border-radius:50%;
  background:rgba(255,255,255,0.3);
  transition:all .25s ease;flex-shrink:0;
}
.swipe-dot.active{
  background:var(--accent);
  width:16px;border-radius:3px;
}


/* ✅ 선수기록(전체 선수 목록) 이름: 좌측정렬 + 모바일에서 안 잘리게(줄바꿈) */
#page-players .table-wrap table{table-layout:auto;}
/* 선수기록/선수등록 탭 */
.players-tab-bar{display:flex;gap:0;border-bottom:2px solid var(--border);margin-bottom:14px;}
.players-tab-btn{padding:8px 18px;font-size:.85rem;font-weight:600;color:var(--text2);border:none;background:none;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s;}
.players-tab-btn.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:800;}
.reg-club-card{background:var(--panel2);border:1px solid var(--border);border-radius:12px;margin-bottom:10px;overflow:hidden;}
.reg-club-header{display:flex;align-items:center;justify-content:space-between;padding:9px 14px;background:var(--primary-dark);color:#fff;cursor:pointer;gap:8px;}
.reg-club-body{padding:10px 12px;display:flex;flex-wrap:wrap;gap:6px;}
.reg-member-chip{display:inline-flex;align-items:center;gap:4px;background:var(--bg);border:1px solid var(--border);border-radius:20px;padding:3px 10px;font-size:.78rem;cursor:pointer;transition:background .12s;}
.reg-member-chip:hover{background:var(--primary-light);color:var(--primary-dark);}
.reg-member-chip.has-sub{border-color:#c084fc;background:#fdf4ff;color:#6b21a8;}
.reg-member-chip.has-sub:hover{background:#e9d5ff;}
.sub-badge{font-size:.65rem;background:#7c3aed;color:#fff;border-radius:10px;padding:1px 5px;font-weight:700;}
#page-players .table-wrap table th:nth-child(1),
#page-players .table-wrap table td:nth-child(1){text-align:left !important;}
/* ✅ 선수기록 소속(클럽) 열: 항상 가로로 표시 */
#page-players .table-wrap table th:nth-child(2),
#page-players .table-wrap table td:nth-child(2){
  white-space:nowrap;
  min-width:60px;
}
#page-players .table-wrap table th:nth-child(1){min-width:110px;}
#page-players .table-wrap table td:nth-child(1){
  white-space:normal;          /* 줄바꿈 허용 */
  overflow:visible;            /* 잘림 방지 */
  text-overflow:clip;
  word-break:keep-all;         /* 한글 단어 단위 유지 */
  overflow-wrap:anywhere;      /* 아주 긴 문자열 대비 */
  line-height:1.25;
}
#page-players .table-wrap table td:nth-child(1) small{margin-left:6px; color:var(--text3);}

/* 🎰 슬롯(추첨) 강조 표시 */

.first-appearance-star{ display:none; }
.first-appearance-name{ font-weight:700; }
/* 첫 출전 chip 색상 - rosterPlayerHTML에서 직접 처리 */
.debut-chip{
  background:linear-gradient(135deg,#fff7ed,#fef3c7) !important;
  border-color:#f59e0b !important;
  color:#92400e !important;
}
.debut-chip .debut-num{
  background:#f59e0b !important;
  color:#fff !important;
}
.reg-roster-card{
  margin-top:12px;
}
.reg-roster-card .rr-title{
  display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;
  margin-bottom:10px;font-weight:800;color:var(--primary-dark);font-size:.9rem;
}
.reg-roster-card .rr-guide{
  margin:-2px 0 12px;padding:8px 12px;background:var(--panel2);border:1px solid var(--border);
  border-radius:var(--radius);font-size:.76rem;color:var(--text2);
}
.reg-roster-card .rr-head{
  display:flex;gap:10px;align-items:center;margin-bottom:12px;padding:8px 14px;
  background:var(--primary);color:white;border-radius:var(--radius-lg)
}

.draw-slot-big{
  min-width:240px;
  display:inline-flex;
  justify-content:center;
  align-items:center;
  padding:12px 16px;
  border-radius:16px;
  border:2px solid var(--border);
  background:#fff;
  font-weight:900;
  font-size:1.05rem;
  letter-spacing:.2px;
}


/* ── 통합 등록 팀 현황 (모바일 대응) ── */
.rr-team-card{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:12px;}
.rr-team-header{background:var(--primary-dark);color:#fff;padding:8px 14px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px;}
.rr-team-info{display:flex;align-items:center;gap:8px;}
.rr-team-num{width:24px;height:24px;border-radius:50%;background:rgba(255,255,255,.25);display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;flex-shrink:0;}
.rr-team-name{font-weight:700;font-size:.92rem;}
.rr-team-count{font-size:.72rem;opacity:.75;background:rgba(255,255,255,.15);padding:2px 7px;border-radius:20px;}
.rr-admin-btns{display:flex;gap:6px;flex-wrap:nowrap;align-items:center;}
.rr-btn-edit,.rr-btn-del{padding:3px 9px!important;font-size:.68rem!important;line-height:1.4;}
.rr-rub-grid{display:grid;grid-template-columns:repeat(var(--rr-cols,3),1fr);gap:6px;padding:10px 12px;}
.rr-rub-card{background:var(--panel2);border:1px solid var(--border);border-radius:var(--radius);padding:7px 8px;text-align:center;}
.rr-rub-label{font-size:.6rem;color:var(--text3);margin-bottom:4px;font-weight:600;letter-spacing:.03em;}
.rr-rub-names{font-size:.9rem;line-height:1.6;word-break:keep-all;font-weight:600;}
.rr-slash{color:var(--text3);font-size:.7rem;margin:0 1px;}
.rr-sub{padding:0 12px 10px;font-size:.72rem;color:var(--text3);}
@media(max-width:600px){
  .rr-rub-grid{grid-template-columns:repeat(2,1fr)!important;gap:5px;padding:8px;}
  .rr-rub-names{font-size:.84rem;}
  .rr-team-name{font-size:.84rem;}
  .rr-btn-edit,.rr-btn-del{padding:2px 7px!important;font-size:.64rem!important;}
}
@media(max-width:380px){
  .rr-rub-grid{grid-template-columns:1fr 1fr!important;}
  .rr-rub-card{padding:5px 4px;}
}


.btn-primary{background:#d4a017;color:white;box-shadow:0 2px 8px rgba(15,30,58,0.22);} 
.btn-primary:hover{background:#b89014;transform:translateY(-1px);box-shadow:0 4px 12px rgba(15,30,58,0.28);} 
.btn-outline{background:transparent;border:1.5px solid var(--primary);color:var(--primary);} 
.btn-outline:hover{background:var(--primary);color:white;} 
.card{border-top:3px solid #d4a017;} 
.stat-val{color:var(--primary-dark);} 
.bg-gold{background:#fff7dd;color:#8a6412;border:1px solid #d4a017;} 
.bg-silver{background:#f4f6fb;color:#5a677c;border:1px solid #aab2c3;} 
.bg-bronze{background:#f8ece3;color:#8a5836;border:1px solid #a97142;} 
.dpill.gold{background:#fff7dd;color:#8a6412;border-color:#d4a017;} 
.dpill.silver{background:#f4f6fb;color:#5a677c;border-color:#aab2c3;} 
.dpill.bronze{background:#f8ece3;color:#8a5836;border-color:#a97142;} 
.logo-icon{background:var(--accent);color:white;} 
.nav-tab .nbadge{color:white;} 
.hero-chip{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.28);} 


.match-focus-pulse{position:relative;transform:scale(1.02);border:3px solid #2563eb !important;box-shadow:0 0 0 5px rgba(37,99,235,.18),0 18px 36px rgba(37,99,235,.22) !important;transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;}
.match-focus-pulse .m3hdr{background:linear-gradient(90deg,#1d4ed8,#2563eb) !important;}
@keyframes matchFocusBlink{0%,100%{box-shadow:0 0 0 5px rgba(37,99,235,.16),0 18px 36px rgba(37,99,235,.18)}50%{box-shadow:0 0 0 9px rgba(37,99,235,.28),0 22px 42px rgba(37,99,235,.28)}}
.match-focus-pulse{animation:matchFocusBlink 1.1s ease-in-out 2;}


#mM3Footer{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:10px 16px;align-items:stretch;}

#mM3Footer .btn{width:100%;min-height:42px !important;padding:8px 6px !important;font-size:.8rem !important;white-space:nowrap;justify-content:center;min-width:0;letter-spacing:-.02em;}
#mM3Footer #mM3SubmitHomeBtn,#mM3Footer #mM3SubmitOperatorHomeBtn{order:1;grid-column:1;}
#mM3Footer #mM3SubmitAwayBtn,#mM3Footer #mM3SubmitOperatorAwayBtn{order:2;grid-column:2;}
#mM3Footer #mM3SubmitBtn{order:3;grid-column:1 / span 2;min-width:0;}
#mM3Footer #mM3SaveBtn{order:10;grid-column:1;}
#mM3Footer #mM3UnlockBtn{order:11;grid-column:2;}
#mM3Footer #mM3SaveResultBtn{order:12;grid-column:1;}
#mM3Footer #mM3CloseBtn{order:13;grid-column:2;}
#mM3Footer #mM3SubmitHomeBtn,#mM3Footer #mM3SubmitAwayBtn,#mM3Footer #mM3SubmitOperatorHomeBtn,#mM3Footer #mM3SubmitOperatorAwayBtn,#mM3Footer #mM3SubmitBtn{font-size:.76rem !important;}
#mM3Footer .btn:disabled{opacity:.48 !important;cursor:not-allowed !important;filter:grayscale(.15);}

#mM3Footer .m3-side-submit-btn{background:#fff !important;border:1.5px solid #24324d !important;color:#24324d !important;font-weight:800 !important;box-shadow:none !important;}
#mM3Footer .m3-side-submit-btn:hover{background:#f7f9fc !important;color:#162033 !important;border-color:#162033 !important;}
#mM3Footer #mM3SubmitBtn{background:#d4a017 !important;color:#fff !important;border:none !important;box-shadow:0 2px 8px rgba(212,160,23,.25) !important;}
#mM3Footer #mM3SubmitBtn:hover{background:#b89014 !important;}
#mM3Footer #mM3SaveResultBtn{background:#0f1e3a !important;color:#fff !important;border:none !important;box-shadow:0 2px 8px rgba(15,30,58,.22) !important;}
#mM3Footer #mM3SaveResultBtn:hover{background:#091225 !important;}
#mM3Footer #mM3SaveBtn{background:#f3f4f6 !important;color:#475569 !important;border:1.5px solid #d5dbea !important;box-shadow:none !important;}
#mM3Footer #mM3SaveBtn:hover{background:#e5e7eb !important;color:#334155 !important;}
#mM3Footer #mM3UnlockBtn{background:#c62828 !important;color:#fff !important;border:none !important;box-shadow:0 2px 8px rgba(198,40,40,.22) !important;}
#mM3Footer #mM3UnlockBtn:hover{background:#a61f1f !important;}
#mM3Footer #mM3CloseBtn{background:#eef2f7 !important;color:#667085 !important;border:1.5px solid #d5dbea !important;box-shadow:none !important;}
#mM3Footer #mM3CloseBtn:hover{background:#e3e8f0 !important;color:#475467 !important;}
@media(max-width:480px){
  #mM3Footer{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px !important;padding:10px 10px;}
  #mM3Footer .btn{min-height:40px !important;font-size:.72rem !important;padding:7px 4px !important;border-radius:10px !important;}
  #mM3Footer #mM3SubmitHomeBtn,#mM3Footer #mM3SubmitAwayBtn,#mM3Footer #mM3SubmitOperatorHomeBtn,#mM3Footer #mM3SubmitOperatorAwayBtn,#mM3Footer #mM3SubmitBtn{font-size:.69rem !important;}
}



.pslot{padding:7px 8px;min-height:52px;}
.pslot-num,.team-num{width:30px;height:30px;font-size:.82rem;}
.form-label{font-size:.88rem;}
.match-team-name{font-size:1.14rem;}
.match-team-players{font-size:1rem;line-height:1.55;}
.rb-row{font-size:1rem;padding:9px 12px;}
@media(max-width:680px){
  .btn{font-size:.88rem;min-height:38px;padding:7px 14px;}
  .btn-sm{font-size:.76rem;min-height:32px;padding:5px 10px;}
  .p-chip{font-size:1.02rem;padding:10px 14px;border-radius:18px;}
  .p-chip small{font-size:.72em !important;}
  .pslot input{font-size:1.05rem;}
  .pslot input::placeholder{font-size:.96rem;}
  #mM3Footer{gap:6px !important;}
}

/* v36: 내 경기 모아보기/경기목록 가독성 및 버튼 균형 조정 */
.my-match-summary-wrap{display:flex;gap:7px;flex-wrap:wrap;align-items:center;justify-content:flex-end;margin-top:7px;}
.my-match-summary-chip{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border-radius:999px;font-size:.82rem !important;font-weight:900 !important;line-height:1.15;border-width:1.5px;}
.my-match-summary-pub{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border-radius:999px;font-size:.82rem !important;font-weight:900 !important;line-height:1.15;border-width:1.5px;}
.my-match-card-title{font-size:1.06rem !important;font-weight:900 !important;line-height:1.3;}
.my-match-section-label{font-size:.92rem !important;font-weight:900 !important;color:#166534;}
.my-match-panel-title{font-size:1rem !important;font-weight:900 !important;color:#166534;}
.my-match-toggle-btn{font-size:.82rem !important;font-weight:800 !important;padding:5px 12px !important;min-height:auto !important;}
.m3hdr .btn{min-height:32px !important;padding:5px 11px !important;font-size:.8rem !important;line-height:1.15 !important;border-radius:10px !important;box-shadow:none !important;}
.m3hdr .btn.btn-accent,.m3hdr .btn.btn-primary,.m3hdr .btn.btn-gray,.m3hdr .btn.btn-outline{width:auto !important;}


@media(max-width:680px){
  .my-match-panel-title{font-size:1.06rem !important;}
  .my-match-section-label{font-size:.97rem !important;}
  .my-match-card-title{font-size:1.12rem !important;}
  .my-match-summary-chip,.my-match-summary-pub{font-size:.86rem !important;padding:6px 11px !important;}
  .m3hdr .btn{min-height:38px !important;padding:6px 12px !important;font-size:.86rem !important;}

}


/* === v10 readability up: home/menu/register/players === */
.nav-tab{font-size:.84rem !important;padding:9px 14px !important;font-weight:600 !important;}
.nav-tab .nbadge{font-size:.72rem !important;padding:2px 7px !important;min-width:20px !important;}
.swipe-indicator{padding:5px 0 6px !important;}

#page-home .card-title{font-size:1.02rem !important;}
#page-home .hero h2{font-size:1.82rem !important;}
#page-home .hero p,
#page-home .hero-sub,
#page-home .hero-chip,
#page-home #homeTournInfo,
#page-home #recentLog,
#page-home #homeDivStatus,
#page-home #myClubHomeBody,
#page-home #homeRegViewerCard button{font-size:.95rem !important;}
#page-home .stat-label{font-size:.9rem !important;font-weight:700 !important;}
#page-home .stat-val{font-size:2rem !important;}
#page-home .home-stats .stat-card{min-height:82px !important;padding:14px 16px !important;}
#page-home .ri{font-size:.9rem !important;}
#page-home .ri-meta,
#page-home .ri-time{font-size:.78rem !important;}

#page-register .card-title{font-size:1.04rem !important;}
#page-register .form-label{font-size:.92rem !important;}
#page-register .form-input,
#page-register .form-select,
#page-register .form-textarea{font-size:.98rem !important;padding:11px 13px !important;}
#page-register #regModeLabel{font-size:.84rem !important;}
#page-register #regPlayerLabel{font-size:1rem !important;font-weight:800 !important;}
#page-register .pslot{padding:7px 8px !important;min-height:44px !important;}
#page-register .pslot-num,
#page-register .team-num{width:30px !important;height:30px !important;font-size:.84rem !important;}
#page-register .pslot input{font-size:1.14rem !important;line-height:1.35 !important;}
#page-register .pslot input::placeholder{font-size:1rem !important;}
#page-register .phint{font-size:.8rem !important;min-height:18px !important;}
#page-register .btn{font-size:.92rem !important;padding:10px 16px !important;}
#page-register #regDivisionOverview,
#page-register #regSection,
#page-register #regRosterPreviewBody{font-size:.95rem !important;}

#page-players .card-title{font-size:1.02rem !important;}
#page-players .players-tab-btn{font-size:.98rem !important;padding:10px 18px !important;}
#page-players .form-input,
#page-players .form-select{font-size:.95rem !important;padding:10px 12px !important;}
#page-players .table-wrap table th{font-size:.88rem !important;padding:10px 12px !important;}
#page-players .table-wrap table td{font-size:.92rem !important;padding:10px 12px !important;line-height:1.4 !important;}
#page-players #regTabStat,
#page-players #pFInfo,
#page-players .empty-state p{font-size:.9rem !important;}

@media(max-width:680px){
  .nav-tab{font-size:.9rem !important;padding:11px 16px !important;}
  #page-home .stat-val{font-size:1.75rem !important;}
  #page-home .stat-label{font-size:.84rem !important;}
  #page-home .hero h2{font-size:1.55rem !important;}
  #page-home .hero p,
  #page-home .hero-sub,
  #page-home .hero-chip,
  #page-home #homeTournInfo,
  #page-home #recentLog,
  #page-home #homeDivStatus,
  #page-home #myClubHomeBody,
  #page-home #homeRegViewerCard button{font-size:.9rem !important;}
  #page-register .pslot input{font-size:1.08rem !important;}
  #page-register .form-label{font-size:.88rem !important;}
  #page-players .table-wrap table th{font-size:.82rem !important;}
  #page-players .table-wrap table td{font-size:.86rem !important;}
}


/* === v38 team registration roster readability balance === */
.rr-team-header{
  padding:10px 14px !important;
}
.rr-team-name{
  font-size:1.08rem !important;
  font-weight:900 !important;
  line-height:1.25 !important;
}
.rr-team-count{
  font-size:.82rem !important;
  padding:3px 8px !important;
}
.rr-admin-btns{
  gap:8px !important;
}
.rr-admin-btns .btn{
  min-height:40px !important;
}
.rr-btn-edit,
.rr-btn-del{
  padding:4px 10px !important;
  font-size:.76rem !important;
  line-height:1.15 !important;
  min-height:30px !important;
  border-radius:8px !important;
  font-weight:700 !important;
}
.rr-rub-grid{
  gap:8px !important;
  padding:12px 14px !important;
}
.rr-rub-card{
  padding:10px 12px !important;
}
.rr-rub-label{
  font-size:.84rem !important;
  margin-bottom:6px !important;
  font-weight:700 !important;
}
.rr-rub-names{
  font-size:1.2rem !important;
  line-height:1.75 !important;
  font-weight:900 !important;
  word-break:keep-all !important;
}
.rr-sub{
  font-size:.84rem !important;
  padding:0 14px 12px !important;
}
@media(max-width:600px){
  .rr-team-header{
    display:flex !important;
    align-items:center !important;
    justify-content:space-between !important;
    flex-wrap:nowrap !important;
  }
  .rr-team-info{min-width:0;flex:1 1 auto;}
  .rr-admin-btns{flex-wrap:nowrap !important;gap:6px !important;flex:0 0 auto;}
  .rr-admin-btns .btn{white-space:nowrap !important;}

    padding:10px 12px !important;
    gap:8px !important;
  }
  .rr-team-name{
    font-size:1rem !important;
  }
  .rr-team-count{
    font-size:.78rem !important;
  }
  .rr-admin-btns{
    gap:6px !important;
  }
  .rr-admin-btns .btn{
    min-height:36px !important;
  }
  .rr-btn-edit,
  .rr-btn-del{
    padding:3px 8px !important;
    font-size:.72rem !important;
    min-height:28px !important;
  }
  .rr-rub-grid{
    gap:6px !important;
    padding:10px !important;
  }
  .rr-rub-card{
    padding:9px 10px !important;
  }
  .rr-rub-label{
    font-size:.84rem !important;
    font-weight:800 !important;
  }
  .rr-rub-names{
    font-size:1.15rem !important;
    line-height:1.7 !important;
    font-weight:900 !important;
  }
}

.home-click-card,.home-click-chip{cursor:pointer;transition:transform .15s ease, box-shadow .15s ease, border-color .15s ease;}
.home-click-card:hover,.home-click-chip:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(15,30,58,.12);}
.home-click-card:active,.home-click-chip:active{transform:translateY(0);}



/* === mobile gesture hints === */
.page-gesture-hint{
  position:fixed;
  left:50%;
  bottom:max(88px,calc(env(safe-area-inset-bottom,0px) + 74px));
  transform:translateX(-50%) translateY(16px);
  z-index:3200;
  max-width:min(calc(100vw - 24px), 420px);
  padding:10px 14px;
  border-radius:14px;
  border:1.5px solid rgba(255,255,255,.18);
  background:rgba(15,30,58,.94);
  color:#fff;
  box-shadow:0 12px 28px rgba(15,30,58,.28);
  font-size:.84rem;
  font-weight:800;
  line-height:1.45;
  opacity:0;
  pointer-events:none;
  transition:opacity .24s ease, transform .24s ease;
  text-align:center;
  backdrop-filter:blur(6px) saturate(120%);
}
.page-gesture-hint.show{
  opacity:1;
  transform:translateX(-50%) translateY(0);
}
.page-gesture-hint .sub{
  display:block;
  margin-top:3px;
  font-size:.72rem;
  font-weight:600;
  opacity:.86;
}
.page-gesture-hint.swipe{
  background:linear-gradient(135deg,rgba(15,30,58,.97),rgba(27,47,90,.97));
}
.page-gesture-hint.bracket{
  background:linear-gradient(135deg,rgba(133,100,4,.98),rgba(15,30,58,.96));
}

/* === page slider motion === */
body.slider-ready .page-viewport{
  width:100%;
  overflow-x:hidden;
  overflow-y:visible;
  position:relative;
  min-height:300px;
}
body.slider-ready .page-slider{
  display:flex;
  align-items:flex-start;
  width:100%;
  will-change:auto;
  transition:transform .10s linear;
  transform:translate3d(0,0,0);
  backface-visibility:hidden;
}
body.slider-ready .page{
  display:block !important;
  flex:0 0 100%;
  width:100%;
}
body.slider-ready .page:not(.active){
  opacity:.999;
}


/* fix: 선수 이름 가로 정렬 유지 */
.m3-picked-item{
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  max-width: 100% !important;
}


/* v10: 예선/본선 현황판 전체 가독성 강화 + 본선 라운드 표시 */
.main-status-board{border:1.5px solid #d7e3ff !important;background:linear-gradient(135deg,#f9fbff,#eef4ff) !important;}
.main-status-board .card{padding:12px 14px !important;border-radius:14px !important;}
.main-status-card{padding:12px 14px !important;border-radius:14px !important;}
.main-status-top-title{font-size:1.08rem !important;font-weight:900 !important;}
.main-status-title{font-size:1.1rem !important;font-weight:900 !important;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.main-status-round{display:inline-flex;align-items:center;padding:5px 11px;border-radius:999px;background:#ede9fe;color:#6d28d9;font-size:.84rem;font-weight:900;line-height:1;}
.main-status-section-title{font-size:.96rem !important;font-weight:900 !important;}
.main-status-board .badge{font-size:.86rem !important;font-weight:900 !important;padding:4px 10px !important;}
.main-status-board [style*="현황"]{letter-spacing:-.01em;}
.main-status-board [style*="순위"]{font-size:.84rem !important;}
.main-status-board [style*="득실"]{font-size:.78rem !important;}
.main-status-row{padding:11px 13px !important;border-radius:12px !important;}
.main-status-row .ms-chip{font-size:.9rem !important;padding:5px 10px !important;border-radius:7px !important;}
.main-status-row .ms-round-chip{display:inline-flex;align-items:center;gap:4px;font-size:.82rem !important;font-weight:900 !important;padding:4px 9px !important;border-radius:999px !important;background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe;line-height:1;}
.main-status-row .ms-move{font-size:.86rem !important;font-weight:800 !important;}
.main-status-row .ms-name{font-size:1.02rem !important;font-weight:800 !important;line-height:1.35 !important;}
.main-status-row .ms-score{font-size:1.08rem !important;font-weight:900 !important;}
.main-status-board .main-status-row [style*="font-size:.84rem"]{font-size:.94rem !important;}
.main-status-board .main-status-row [style*="font-size:.86rem"]{font-size:.96rem !important;}
.main-status-board .main-status-row [style*="font-size:.78rem"]{font-size:.88rem !important;}
.main-status-board .main-status-row [style*="font-size:.9rem"]{font-size:1rem !important;}
.main-status-board .main-status-row [style*="font-size:.92rem"]{font-size:1.04rem !important;}
.main-status-board [style*="font-size:.74rem"]{font-size:.84rem !important;}
.main-status-board [style*="font-size:.72rem"]{font-size:.8rem !important;}
.main-status-board [style*="font-size:.78rem"]{font-size:.88rem !important;}
@media(max-width:680px){
  .main-status-board{margin-top:10px !important;}
  .main-status-board .card,.main-status-card{padding:14px 14px !important;}
  .main-status-top-title{font-size:1.14rem !important;}
  .main-status-title{font-size:1.2rem !important;}
  .main-status-round{font-size:.9rem !important;padding:6px 11px !important;}
  .main-status-section-title{font-size:1.02rem !important;}
  .main-status-board .badge{font-size:.92rem !important;padding:5px 11px !important;}
  .main-status-row{padding:12px 13px !important;gap:10px !important;}
  .main-status-row .ms-chip{font-size:.96rem !important;padding:6px 11px !important;}
  .main-status-row .ms-round-chip{font-size:.9rem !important;padding:5px 10px !important;}
  .main-status-row .ms-move{font-size:.92rem !important;}
  .main-status-row .ms-name{font-size:1.08rem !important;}
  .main-status-row .ms-score{font-size:1.16rem !important;}
  .main-status-board [style*="font-size:.84rem"]{font-size:1rem !important;}
  .main-status-board [style*="font-size:.86rem"]{font-size:1.02rem !important;}
  .main-status-board [style*="font-size:.78rem"]{font-size:.94rem !important;}
  .main-status-board [style*="font-size:.9rem"]{font-size:1.04rem !important;}
  .main-status-board [style*="font-size:.92rem"]{font-size:1.08rem !important;}
  .main-status-board [style*="font-size:.74rem"]{font-size:.9rem !important;}
  .main-status-board [style*="font-size:.72rem"]{font-size:.86rem !important;}
}



/* === draw modal mobile cleanup === */
.main-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.main-info-item{
  background:var(--panel2);
  border:1px solid var(--border);
  border-radius:12px;
  padding:10px 12px;
  font-size:.84rem;
  font-weight:700;
  color:var(--text2);
}
.main-info-item b{
  display:block;
  margin-top:2px;
  font-size:1.06rem;
  color:var(--primary-dark);
}
/* === bracket prelim sticky toggle === */
.prelim-sticky-toggle-wrap{
  position:sticky;
  top:118px;
  z-index:260;
  display:flex;
  justify-content:flex-end;
  margin:6px 0 12px;
  pointer-events:none;
}
.prelim-sticky-toggle-wrap .prelim-sticky-toggle-btn{
  pointer-events:auto;
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:9px 14px;
  min-height:40px;
  border-radius:999px;
  border:1.5px solid #bfdbfe;
  background:rgba(255,255,255,.96);
  color:#1d4ed8;
  font-size:.82rem;
  font-weight:900;
  box-shadow:0 10px 24px rgba(15,30,58,.16);
  backdrop-filter:saturate(120%) blur(4px);
}
.prelim-sticky-toggle-wrap .prelim-sticky-toggle-btn:hover{
  background:#eff6ff;
}
@media(max-width:680px){
  .prelim-sticky-toggle-wrap{
    top:84px;
    justify-content:center;
    margin:4px 0 10px;
  }
  .prelim-sticky-toggle-wrap .prelim-sticky-toggle-btn{
    width:100%;
    justify-content:center;
    font-size:.84rem;
    padding:10px 14px;
  }
}


/* === mobile header / notice cleanup === */
#bracketExportBar{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;}
@media(max-width:680px){
  .logo img{width:32px !important;height:32px !important;border-radius:10px !important;}
  .logo-icon{width:30px !important;height:30px !important;font-size:14px !important;}
  .logo-text h1{font-size:.82rem !important;line-height:1.05 !important;letter-spacing:0 !important;}
  .logo-text p{display:none !important;}
  .header-actions{gap:4px !important;}
  .header-actions .btn-sm{padding:4px 6px !important;font-size:.62rem !important;min-height:30px !important;border-radius:10px !important;}
    .swipe-indicator{display:none !important;}
  .main-content{padding-top:12px !important;}
  .br-floating-notice{top:86px !important;min-width:calc(100vw - 12px) !important;max-width:calc(100vw - 12px) !important;padding:7px 9px !important;gap:6px !important;border-radius:12px !important;}
  .br-floating-notice .tag{padding:3px 7px !important;font-size:.62rem !important;flex:0 0 auto;}
  .br-floating-notice .text{height:1.25em !important;}
  .br-floating-notice .text .msg{font-size:.76rem !important;}
  .br-floating-notice .btnx{padding:4px 7px !important;font-size:.62rem !important;}
  #bracketExportBar{display:grid !important;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px !important;margin-bottom:10px !important;}
  #bracketExportBar .btn{width:100% !important;justify-content:center !important;min-width:0 !important;min-height:38px !important;padding:8px 4px !important;font-size:.72rem !important;line-height:1.15 !important;white-space:nowrap !important;}
  #page-bracket .sec-title{font-size:1.12rem !important;line-height:1.2 !important;}
  #page-bracket .sec-title span{display:none !important;}
}
@media(max-width:420px){
  .header-actions .btn-sm{padding:4px 5px !important;font-size:.58rem !important;min-height:29px !important;}
  #bracketExportBar .btn{font-size:.68rem !important;}
  .br-floating-notice .tag{display:none !important;}
}

@media(max-width:820px){
  #mDraw.modal-overlay,#mMain.modal-overlay{padding:0!important;}
  #mDraw .modal-box,#mMain .modal-box{
    width:100vw!important;
    height:100vh!important;
    max-width:none!important;
    max-height:none!important;
    border-radius:0!important;
    margin:0!important;
  }
  #mDraw .modal-header,#mMain .modal-header{border-radius:0!important;padding:12px 14px!important;}
  #mDraw .modal-body,#mMain .modal-body{
    padding:12px!important;
    max-height:calc(100vh - 186px)!important;
    overflow-y:auto!important;
    -webkit-overflow-scrolling:touch;
  }
  #mDraw .modal-footer,#mMain .modal-footer{
    padding:10px 12px!important;
    padding-bottom:calc(10px + env(safe-area-inset-bottom, 0px))!important;
    gap:8px!important;
    flex-wrap:nowrap!important;
    position:relative;
    z-index:1;
  }
  #mDraw .modal-footer .btn,#mMain .modal-footer .btn{
    flex:1 1 0;
    min-width:0;
    padding:10px 8px!important;
    font-size:.84rem!important;
  }
  #drawCfgScreen > div[style*="grid-template-columns"],
  #drawRunScreen > div[style*="grid-template-columns"],
  #mainStep1 > div[style*="grid-template-columns"],
  #mainStep2 > div[style*="grid-template-columns"]{
    grid-template-columns:1fr!important;
    gap:10px!important;
  }
  #mainAdvTeams > div,
  #drawTeamList > div{
    padding:10px 12px!important;
  }
  #mainAdvTeams .badge,
  #drawTeamList .badge{
    display:inline-flex!important;
    align-items:center!important;
    max-width:100%;
    padding:6px 10px!important;
    font-size:.74rem!important;
    line-height:1.25!important;
    white-space:normal!important;
    word-break:keep-all!important;
  }
  #mainBracketInfo{
    padding:0!important;
    background:transparent!important;
    border:none!important;
  }
  .main-info-grid{
    grid-template-columns:1fr!important;
    gap:6px!important;
  }
  .main-info-item{
    padding:9px 11px!important;
    font-size:.82rem!important;
  }
  .main-info-item b{
    font-size:1rem!important;
  }
  .draw-cfg{
    padding:12px!important;
  }
  .draw-cfg-row{
    align-items:flex-start!important;
    gap:6px!important;
  }
  .draw-cfg-label{
    min-width:auto!important;
    width:100%!important;
    font-size:.76rem!important;
  }
  #mainSeedPreview,
  #mainBracketPreview,
  #drawMainPreviewContent,
  #drawRunPreviewContent{
    padding:8px!important;
    overflow-x:auto!important;
    -webkit-overflow-scrolling:touch;
  }
  #drawMainPreviewBox > div:first-child,
  #mainStep1 > div > div:last-child > div:first-child,
  #mainStep2 > div > div:last-child > div:first-child{
    font-size:.86rem!important;
    margin-bottom:4px!important;
  }
}


/* === simplified order modal: keep selected-player preview visible, hide only picker controls === */
.order-simple-mode .m3-picker-toggle,
.order-simple-mode .m3-picker-list,
.order-simple-mode .m3-picker-row{
  display:none !important;
}
.order-simple-mode .m3-pick-wrap{
  display:flex !important;
}
.order-simple-mode .m3-picked{
  display:flex !important;
}
.order-simple-mode .order-simple-note{
  display:block !important;
}
.order-simple-note{
  display:none;
  padding:10px 12px;
  margin-bottom:10px;
  border-radius:12px;
  background:linear-gradient(135deg,#fff7dd,#ffefb0);
  border:1px solid #d4a017;
  color:#8a6412;
  font-size:.8rem;
  line-height:1.6;
  font-weight:800;
}


/* tap order footer 4-button balance */
#mTapOrder .modal-footer{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;
}
#mTapOrder .modal-footer .btn{
  width:100%;
  min-width:0;
  padding:9px 6px;
  font-size:.78rem;
}

.individual-entry-title{display:block;white-space:normal;overflow:visible;text-overflow:clip;word-break:keep-all;line-height:1.35;}
.rr-team-card.individual-entry-card .rr-team-header{padding:8px 10px !important;align-items:center !important;flex-wrap:nowrap !important;gap:8px !important;}
.rr-team-card.individual-entry-card .rr-team-info{min-width:0;flex:1 1 auto;align-items:flex-start !important;}
.rr-team-card.individual-entry-card .rr-team-name{font-size:.96rem !important;line-height:1.35 !important;white-space:normal !important;overflow:visible !important;text-overflow:clip !important;word-break:keep-all !important;flex:1 1 auto;}
.rr-team-card.individual-entry-card .rr-team-count{display:none !important;}
.rr-team-card.individual-entry-card .rr-admin-btns{gap:4px !important;flex:0 0 auto;}
.rr-team-card.individual-entry-card .rr-admin-btns .btn,.rr-team-card.individual-entry-card .rr-btn-edit,.rr-team-card.individual-entry-card .rr-btn-del{min-height:26px !important;padding:3px 7px !important;font-size:.68rem !important;border-radius:8px !important;}
@media(max-width:600px){
  .rr-team-card.individual-entry-card .rr-team-header{padding:7px 8px !important;gap:6px !important;}
  .rr-team-card.individual-entry-card .rr-team-num{width:22px !important;height:22px !important;font-size:.7rem !important;}
  .rr-team-card.individual-entry-card .rr-team-name{font-size:.88rem !important;line-height:1.32 !important;}
  .rr-team-card.individual-entry-card .rr-admin-btns .btn,.rr-team-card.individual-entry-card .rr-btn-edit,.rr-team-card.individual-entry-card .rr-btn-del{min-height:24px !important;padding:2px 6px !important;font-size:.64rem !important;}
}
@media(max-width:680px){
  #mTapOrder .modal-footer{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}


.court-drop-zone{position:relative;transition:box-shadow .15s ease, transform .15s ease, border-color .15s ease;}
.court-drop-zone.drag-over{box-shadow:0 0 0 3px rgba(37,99,235,.18), 0 12px 28px rgba(15,30,58,.14);border-color:#2563eb !important;transform:translateY(-1px);}
.court-wait-card{cursor:grab;user-select:none;-webkit-user-drag:element;}
.court-wait-card:active{cursor:grabbing;}
.court-wait-card.dragging{opacity:.45;transform:scale(.99);}
.shared-wait-stack{display:flex;flex-direction:column;gap:6px;}
.court-wait-stack{display:flex;flex-direction:column;gap:6px;}
.shared-wait-stack .court-wait-card{margin-top:0;}
.court-wait-priority{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 7px;border-radius:999px;background:#0f1e3a;color:#fff;font-size:.68rem;font-weight:900;line-height:1;}
.court-drop-hint{margin-top:6px;font-size:.68rem;color:#64748b;}


/* === mobile bottom tab navigation === */
@media (max-width: 768px){
  .nav-tabs{
    display:none !important;
  }
  #swipeDots,
  .swipe-indicator{
    display:none !important;
  }
  body{
    padding-bottom:68px !important;
  }
  .main-content{
    padding-bottom:86px !important;
  }
  .bottom-tab-bar{
    position:fixed;
    left:0;
    right:0;
    bottom:0;
    z-index:99999;
    display:flex;
    align-items:stretch;
    justify-content:space-between;
    height:58px;
    padding-bottom:env(safe-area-inset-bottom, 0px);
    background:rgba(9,18,37,.58);
    backdrop-filter:blur(12px) saturate(140%);
    -webkit-backdrop-filter:blur(12px) saturate(140%);
    border-top:1px solid rgba(255,255,255,.10);
    box-shadow:0 -6px 18px rgba(0,0,0,.18);
  }
  .bottom-tab-bar button{
    flex:1 1 16.66%;
    min-width:0;
    border:none;
    background:transparent;
    color:rgba(255,255,255,.72);
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:3px;
    font-family:'Noto Sans KR',sans-serif;
    font-size:10px;
    font-weight:800;
    line-height:1.1;
    cursor:pointer;
  }
  .bottom-tab-bar button .icon{
    font-size:15px;
    line-height:1;
  }
  .bottom-tab-bar button.active{
    color:#facc15;
  }
}
@media (max-width: 768px){
  .toast-container{
    bottom:calc(env(safe-area-inset-bottom, 0px) + 72px) !important;
    right:10px !important;
    left:10px !important;
    align-items:flex-end;
  }
  .toast{
    max-width:min(360px, calc(100vw - 20px));
  }
  .sticky-alert-wrap,
  .sticky-alert-wrap.left-side{
    left:10px !important;
    right:10px !important;
    bottom:calc(env(safe-area-inset-bottom, 0px) + 72px) !important;
    max-width:none !important;
  }
  .scroll-top{
    bottom:calc(env(safe-area-inset-bottom, 0px) + 74px) !important;
    left:12px !important;
    z-index:100001 !important;
  }
}
@media (min-width: 769px){
  .bottom-tab-bar{
    display:none !important;
  }
}


/* === v-notice-mobile-drag-fix: 전체공지 모바일 드래그 보정 === */
.br-floating-notice{touch-action:none !important;-webkit-user-select:none !important;user-select:none !important;}
.br-floating-notice .text{pointer-events:none;}
.br-floating-notice .actions,.br-floating-notice .actions *{pointer-events:auto;}
@media(max-width:680px){
  .br-floating-notice{
    min-width:0 !important;
    width:min(520px, calc(100vw - 28px)) !important;
    max-width:calc(100vw - 28px) !important;
    left:14px !important;
    top:86px !important;
    right:auto !important;
    transform:none !important;
  }
  .br-floating-notice[data-moved="1"]{
    width:min(520px, calc(100vw - 28px)) !important;
    max-width:calc(100vw - 28px) !important;
  }
}


/* === v208 registry multi compact: 선수등록 현황 다중 배치 + 이름 보호 === */
#ptab-registry-content .reg-region-section{margin-bottom:0 !important;}
#ptab-registry-content .reg-club-card{margin-bottom:0 !important;}
#ptab-registry-content .reg-club-body{
  display:grid !important;
  grid-template-columns:repeat(auto-fill,minmax(104px,1fr)) !important;
  gap:5px !important;
  align-items:stretch !important;
}
#ptab-registry-content .reg-member-chip{
  width:100% !important;
  min-width:0 !important;
  min-height:28px !important;
  line-height:1.16 !important;
  padding:3px 6px !important;
  border-radius:9px !important;
  overflow:hidden !important;
}
#ptab-registry-content .reg-member-chip > span:first-child{
  flex:0 0 auto !important;
  max-width:100% !important;
  overflow:visible !important;
  text-overflow:clip !important;
  white-space:nowrap !important;
  word-break:keep-all !important;
  font-weight:900 !important;
}
#ptab-registry-content .reg-member-chip .sub-badge{
  flex:1 1 auto !important;
  min-width:0 !important;
  max-width:48px !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  white-space:nowrap !important;
}
@media(max-width:680px){
  #ptab-registry-content .card{padding:8px !important;}
  #ptab-registry-content .reg-region-section{padding:6px !important;border-radius:14px !important;}
  #ptab-registry-content .reg-club-header{padding:6px 9px !important;}
  #ptab-registry-content .reg-club-body{
    grid-template-columns:repeat(auto-fill,minmax(92px,1fr)) !important;
    gap:4px !important;
    padding:6px !important;
  }
  #ptab-registry-content .reg-member-chip{
    min-height:27px !important;
    padding:3px 5px !important;
    font-size:.8rem !important;
    gap:3px !important;
  }
  #ptab-registry-content .reg-member-chip .sub-badge{
    max-width:42px !important;
    font-size:.54rem !important;
    padding:1px 4px !important;
  }
  #ptab-registry-content .reg-member-chip .btn{
    min-height:20px !important;
    padding:1px 4px !important;
    font-size:.55rem !important;
  }
}
@media(max-width:380px){
  #ptab-registry-content .reg-club-body{grid-template-columns:repeat(auto-fill,minmax(88px,1fr)) !important;}
  #ptab-registry-content .reg-member-chip{font-size:.78rem !important;}
  #ptab-registry-content .reg-member-chip .sub-badge{max-width:36px !important;}
}
@media(min-width:681px){
  #ptab-registry-content .reg-club-body{grid-template-columns:repeat(auto-fill,minmax(118px,1fr)) !important;}
}

/* ===== extracted style block ===== */

@keyframes ldA{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}
.match-focus-pulse{position:relative;transform:scale(1.02);border:3px solid #2563eb !important;box-shadow:0 0 0 5px rgba(37,99,235,.18),0 18px 36px rgba(37,99,235,.22) !important;transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;}
.match-focus-pulse .m3hdr{background:linear-gradient(90deg,#1d4ed8,#2563eb) !important;}
@keyframes matchFocusBlink{0%,100%{box-shadow:0 0 0 5px rgba(37,99,235,.16),0 18px 36px rgba(37,99,235,.18)}50%{box-shadow:0 0 0 9px rgba(37,99,235,.28),0 22px 42px rgba(37,99,235,.28)}}
.match-focus-pulse{animation:matchFocusBlink 1.1s ease-in-out 2;}

/* fix: 선수 이름 가로 정렬 유지 */
.m3-picked-item{
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  max-width: 100% !important;
}


/* === draw modal mobile cleanup === */
.main-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.main-info-item{
  background:var(--panel2);
  border:1px solid var(--border);
  border-radius:12px;
  padding:10px 12px;
  font-size:.84rem;
  font-weight:700;
  color:var(--text2);
}
.main-info-item b{
  display:block;
  margin-top:2px;
  font-size:1.06rem;
  color:var(--primary-dark);
}
@media(max-width:820px){
  #mDraw.modal-overlay,#mMain.modal-overlay{padding:0!important;}
  #mDraw .modal-box,#mMain .modal-box{
    width:100vw!important;
    height:100vh!important;
    max-width:none!important;
    max-height:none!important;
    border-radius:0!important;
    margin:0!important;
  }
  #mDraw .modal-header,#mMain .modal-header{border-radius:0!important;padding:12px 14px!important;}
  #mDraw .modal-body,#mMain .modal-body{
    padding:12px!important;
    max-height:calc(100vh - 186px)!important;
    overflow-y:auto!important;
    -webkit-overflow-scrolling:touch;
  }
  #mDraw .modal-footer,#mMain .modal-footer{
    padding:10px 12px!important;
    padding-bottom:calc(10px + env(safe-area-inset-bottom, 0px))!important;
    gap:8px!important;
    flex-wrap:nowrap!important;
    position:relative;
    z-index:1;
  }
  #mDraw .modal-footer .btn,#mMain .modal-footer .btn{
    flex:1 1 0;
    min-width:0;
    padding:10px 8px!important;
    font-size:.84rem!important;
  }
  #drawCfgScreen > div[style*="grid-template-columns"],
  #drawRunScreen > div[style*="grid-template-columns"],
  #mainStep1 > div[style*="grid-template-columns"],
  #mainStep2 > div[style*="grid-template-columns"]{
    grid-template-columns:1fr!important;
    gap:10px!important;
  }
  #mainAdvTeams > div,
  #drawTeamList > div{
    padding:10px 12px!important;
  }
  #mainAdvTeams .badge,
  #drawTeamList .badge{
    display:inline-flex!important;
    align-items:center!important;
    max-width:100%;
    padding:6px 10px!important;
    font-size:.74rem!important;
    line-height:1.25!important;
    white-space:normal!important;
    word-break:keep-all!important;
  }
  #mainBracketInfo{
    padding:0!important;
    background:transparent!important;
    border:none!important;
  }
  .main-info-grid{
    grid-template-columns:1fr!important;
    gap:6px!important;
  }
  .main-info-item{
    padding:9px 11px!important;
    font-size:.82rem!important;
  }
  .main-info-item b{
    font-size:1rem!important;
  }
  .draw-cfg{
    padding:12px!important;
  }
  .draw-cfg-row{
    align-items:flex-start!important;
    gap:6px!important;
  }
  .draw-cfg-label{
    min-width:auto!important;
    width:100%!important;
    font-size:.76rem!important;
  }
  #mainSeedPreview,
  #mainBracketPreview,
  #drawMainPreviewContent,
  #drawRunPreviewContent{
    padding:8px!important;
    overflow-x:auto!important;
    -webkit-overflow-scrolling:touch;
  }
  #drawMainPreviewBox > div:first-child,
  #mainStep1 > div > div:last-child > div:first-child,
  #mainStep2 > div > div:last-child > div:first-child{
    font-size:.86rem!important;
    margin-bottom:4px!important;
  }
}


/* === mobile bottom tab navigation === */
@media (max-width: 768px){
  .nav-tabs{
    display:none !important;
  }
  #swipeDots,
  .swipe-indicator{
    display:none !important;
  }
  body{
    padding-bottom:68px !important;
  }
  .main-content{
    padding-bottom:86px !important;
  }
  .bottom-tab-bar{
    position:fixed;
    left:0;
    right:0;
    bottom:0;
    z-index:99999;
    display:flex;
    align-items:stretch;
    justify-content:space-between;
    height:58px;
    padding-bottom:env(safe-area-inset-bottom, 0px);
    background:rgba(9,18,37,.58);
    backdrop-filter:blur(12px) saturate(140%);
    -webkit-backdrop-filter:blur(12px) saturate(140%);
    border-top:1px solid rgba(255,255,255,.10);
    box-shadow:0 -6px 18px rgba(0,0,0,.18);
  }
  .bottom-tab-bar button{
    flex:1 1 16.66%;
    min-width:0;
    border:none;
    background:transparent;
    color:rgba(255,255,255,.72);
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:3px;
    font-family:'Noto Sans KR',sans-serif;
    font-size:11px;
    font-weight:800;
    line-height:1.1;
    cursor:pointer;
  }
  .bottom-tab-bar button .icon{
    font-size:16px;
    line-height:1;
  }
  .bottom-tab-bar button.active{
    color:#facc15;
  }
}
@media (min-width: 769px){
  .bottom-tab-bar{
    display:none !important;
  }
}

/* ===== extracted style block ===== */

.bv-wrap{overflow-x:auto;overflow-y:visible;padding:8px 0 20px;}
.bv-tree{display:flex;align-items:flex-start;min-width:max-content;}

/* 각 라운드 컬럼 */
.bv-col{display:flex;flex-direction:column;position:relative;}
.bv-col-title{text-align:center;font-size:.7rem;font-weight:800;padding:5px 8px;border-radius:6px;margin:0 0 10px;background:var(--primary);color:white;}
.bv-col-title.fin{background:var(--accent);color:var(--text);}
.bv-col-body{position:relative;} /* height는 JS로 설정 */

/* 매치 박스 — position:absolute로 정확한 Y 위치 */
.bv-match{position:absolute;left:0;right:0;border:1.5px solid var(--border);border-radius:9px;overflow:hidden;background:white;box-shadow:0 1px 4px rgba(0,0,0,.08);cursor:pointer;transition:.15s;}
.bv-match:hover{box-shadow:0 3px 10px rgba(0,0,0,.13);transform:translateY(-1px);}
.bv-slot{display:flex;align-items:center;gap:6px;padding:7px 9px;font-size:.78rem;border-bottom:1px solid var(--border);}
.bv-slot:last-child{border-bottom:none;}
.bv-slot .nm{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600;}
.bv-slot .sc{font-family:'Oswald',sans-serif;font-weight:800;min-width:22px;text-align:right;color:var(--primary);font-size:.82rem;}
.bv-slot.win{background:#dce8fb;color:#1e3a8a;}
.bv-slot.win .nm{font-weight:800;}
.bv-slot.tbd{background:var(--bg2);color:var(--text3);font-style:italic;}
.bv-slot.bye-slot{background:#f0fdf4;color:#16a34a;font-style:italic;font-size:.7rem;}

/* 컬럼 간 연결선 SVG */
.bv-connector-col{position:relative;flex-shrink:0;}

/* 시상 */
.bv-champ-col{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:120px;gap:8px;padding:0 8px;margin-left:4px;}
.bv-champ-box{border:2px solid var(--accent);border-radius:12px;background:linear-gradient(135deg,#fef3cd,#ffe082);padding:10px 14px;text-align:center;min-width:108px;}
.bv-champ-box .ci{font-size:1.5rem;}
.bv-champ-box .cn{font-size:.78rem;font-weight:800;color:#b45309;margin-top:3px;}
.bv-champ-box .cl{font-size:.6rem;color:#92400e;margin-top:1px;}

/* 툴바 */
.bv-toolbar{display:flex;gap:6px;justify-content:flex-end;margin-bottom:10px;flex-wrap:wrap;}
.bv-pill{padding:5px 14px;border-radius:999px;border:1.5px solid var(--border);background:white;cursor:pointer;font-size:.74rem;font-weight:800;}
.bv-pill.active{background:var(--primary);color:white;border-color:var(--primary);}

/* ── 부서별 복식 수 선택 ── */
.div-rubber-row{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:var(--radius);background:var(--panel2);border:1px solid var(--border);}
.div-rubber-sel{display:flex;gap:5px;}
.rub-opt{display:inline-block;padding:4px 14px;border-radius:20px;border:1.5px solid var(--border);background:var(--bg);color:var(--text2);font-size:.78rem;font-weight:600;cursor:pointer;transition:all .15s;user-select:none;}
.rub-opt:hover{border-color:var(--primary);color:var(--primary);}
.rub-opt.active{background:var(--primary);color:#fff;border-color:var(--primary);}

.match-focus-pulse{position:relative;transform:scale(1.02);border:3px solid #2563eb !important;box-shadow:0 0 0 5px rgba(37,99,235,.18),0 18px 36px rgba(37,99,235,.22) !important;transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;}
.match-focus-pulse .m3hdr{background:linear-gradient(90deg,#1d4ed8,#2563eb) !important;}
@keyframes matchFocusBlink{0%,100%{box-shadow:0 0 0 5px rgba(37,99,235,.16),0 18px 36px rgba(37,99,235,.18)}50%{box-shadow:0 0 0 9px rgba(37,99,235,.28),0 22px 42px rgba(37,99,235,.28)}}
.match-focus-pulse{animation:matchFocusBlink 1.1s ease-in-out 2;}


/* fix: 선수 이름 가로 정렬 유지 */
.m3-picked-item{
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  max-width: 100% !important;
}


/* === draw modal mobile cleanup === */
.main-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.main-info-item{
  background:var(--panel2);
  border:1px solid var(--border);
  border-radius:12px;
  padding:10px 12px;
  font-size:.84rem;
  font-weight:700;
  color:var(--text2);
}
.main-info-item b{
  display:block;
  margin-top:2px;
  font-size:1.06rem;
  color:var(--primary-dark);
}
@media(max-width:820px){
  #mDraw.modal-overlay,#mMain.modal-overlay{padding:0!important;}
  #mDraw .modal-box,#mMain .modal-box{
    width:100vw!important;
    height:100vh!important;
    max-width:none!important;
    max-height:none!important;
    border-radius:0!important;
    margin:0!important;
  }
  #mDraw .modal-header,#mMain .modal-header{border-radius:0!important;padding:12px 14px!important;}
  #mDraw .modal-body,#mMain .modal-body{
    padding:12px!important;
    max-height:calc(100vh - 186px)!important;
    overflow-y:auto!important;
    -webkit-overflow-scrolling:touch;
  }
  #mDraw .modal-footer,#mMain .modal-footer{
    padding:10px 12px!important;
    padding-bottom:calc(10px + env(safe-area-inset-bottom, 0px))!important;
    gap:8px!important;
    flex-wrap:nowrap!important;
    position:relative;
    z-index:1;
  }
  #mDraw .modal-footer .btn,#mMain .modal-footer .btn{
    flex:1 1 0;
    min-width:0;
    padding:10px 8px!important;
    font-size:.84rem!important;
  }
  #drawCfgScreen > div[style*="grid-template-columns"],
  #drawRunScreen > div[style*="grid-template-columns"],
  #mainStep1 > div[style*="grid-template-columns"],
  #mainStep2 > div[style*="grid-template-columns"]{
    grid-template-columns:1fr!important;
    gap:10px!important;
  }
  #mainAdvTeams > div,
  #drawTeamList > div{
    padding:10px 12px!important;
  }
  #mainAdvTeams .badge,
  #drawTeamList .badge{
    display:inline-flex!important;
    align-items:center!important;
    max-width:100%;
    padding:6px 10px!important;
    font-size:.74rem!important;
    line-height:1.25!important;
    white-space:normal!important;
    word-break:keep-all!important;
  }
  #mainBracketInfo{
    padding:0!important;
    background:transparent!important;
    border:none!important;
  }
  .main-info-grid{
    grid-template-columns:1fr!important;
    gap:6px!important;
  }
  .main-info-item{
    padding:9px 11px!important;
    font-size:.82rem!important;
  }
  .main-info-item b{
    font-size:1rem!important;
  }
  .draw-cfg{
    padding:12px!important;
  }
  .draw-cfg-row{
    align-items:flex-start!important;
    gap:6px!important;
  }
  .draw-cfg-label{
    min-width:auto!important;
    width:100%!important;
    font-size:.76rem!important;
  }
  #mainSeedPreview,
  #mainBracketPreview,
  #drawMainPreviewContent,
  #drawRunPreviewContent{
    padding:8px!important;
    overflow-x:auto!important;
    -webkit-overflow-scrolling:touch;
  }
  #drawMainPreviewBox > div:first-child,
  #mainStep1 > div > div:last-child > div:first-child,
  #mainStep2 > div > div:last-child > div:first-child{
    font-size:.86rem!important;
    margin-bottom:4px!important;
  }
}


/* === mobile bottom tab navigation === */
@media (max-width: 768px){
  .nav-tabs{
    display:none !important;
  }
  #swipeDots,
  .swipe-indicator{
    display:none !important;
  }
  body{
    padding-bottom:78px !important;
  }
  .main-content{
    padding-bottom:96px !important;
  }
  .bottom-tab-bar{
    position:fixed;
    left:0;
    right:0;
    bottom:0;
    z-index:99999;
    display:flex;
    align-items:stretch;
    justify-content:space-between;
    height:66px;
    padding-bottom:env(safe-area-inset-bottom, 0px);
    background:linear-gradient(180deg,#091225 0%, #0f1e3a 100%);
    border-top:1px solid rgba(255,255,255,.14);
    box-shadow:0 -8px 24px rgba(0,0,0,.22);
  }
  .bottom-tab-bar button{
    flex:1 1 16.66%;
    min-width:0;
    border:none;
    background:transparent;
    color:rgba(255,255,255,.72);
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:3px;
    font-family:'Noto Sans KR',sans-serif;
    font-size:11px;
    font-weight:800;
    line-height:1.1;
    cursor:pointer;
  }
  .bottom-tab-bar button .icon{
    font-size:16px;
    line-height:1;
  }
  .bottom-tab-bar button.active{
    color:#facc15;
  }
}
@media (min-width: 769px){
  .bottom-tab-bar{
    display:none !important;
  }
}


/* === mobile bottom nav / modal safe area fix === */
@media (max-width: 768px){
  body{
    padding-bottom:66px !important;
  }
  .main-content{
    padding-bottom:84px !important;
  }
  .bottom-tab-bar{
    height:58px !important;
    padding-bottom:env(safe-area-inset-bottom, 0px) !important;
  }
  .bottom-tab-bar button{
    gap:2px !important;
    font-size:10px !important;
    padding:2px 0 !important;
  }
  .bottom-tab-bar button .icon{
    font-size:15px !important;
  }

  .modal-overlay{
    align-items:flex-start !important;
    padding:8px 8px calc(66px + env(safe-area-inset-bottom, 0px)) !important;
  }
  .modal-box{
    margin:0 auto auto !important;
    max-height:calc(100vh - 16px - 66px - env(safe-area-inset-bottom, 0px)) !important;
  }
  .modal-body{
    -webkit-overflow-scrolling:touch;
  }
  .modal-footer{
    position:sticky !important;
    bottom:0 !important;
    z-index:6 !important;
    background:#fff !important;
    padding-bottom:calc(10px + env(safe-area-inset-bottom, 0px)) !important;
    box-shadow:0 -6px 16px rgba(15,30,58,.08);
  }

  #mDraw.modal-overlay,
  #mMain.modal-overlay{
    padding:0 0 calc(58px + env(safe-area-inset-bottom, 0px)) 0 !important;
    align-items:flex-start !important;
  }
  #mDraw .modal-box,
  #mMain .modal-box{
    height:calc(100vh - 58px - env(safe-area-inset-bottom, 0px)) !important;
    max-height:calc(100vh - 58px - env(safe-area-inset-bottom, 0px)) !important;
    margin:0 auto auto !important;
  }
  #mDraw .modal-body,
  #mMain .modal-body{
    max-height:calc(100vh - 58px - 186px - env(safe-area-inset-bottom, 0px)) !important;
  }
}

/* ===== extracted style block ===== */

@page { size: A4 portrait; margin: 7mm 8mm; }
  *{ box-sizing:border-box; margin:0; padding:0; }
  body{
    margin:0;
    background:#eef3f8;
    color:#111827;
    font-family:'Malgun Gothic','Apple SD Gothic Neo','Noto Sans KR',sans-serif;
    font-size:8.5pt;
    line-height:1.3;
  }
  .toolbar{
    position:sticky; top:0; z-index:10;
    display:flex; justify-content:flex-end; gap:8px;
    padding:8px 12px; background:#0f1e3a;
  }
  .toolbar button{
    border:none; border-radius:8px; padding:7px 14px;
    font-size:12px; font-weight:800; cursor:pointer;
    background:#fff; color:#0f1e3a;
  }
  .page{
    width:210mm;
    margin:12px auto;
    background:#fff;
    padding:6mm 7mm 5mm;
    box-shadow:0 4px 20px rgba(15,30,58,.12);
  }
  .sheet-title{
    font-size:13pt; font-weight:900; color:#0f1e3a;
    text-align:center; margin-bottom:2px;
  }
  .sheet-sub{
    font-size:8pt; color:#475569;
    text-align:center; margin-bottom:7px;
  }
  .group-grid{
    display:grid;
    grid-template-columns:repeat(4, minmax(0,1fr));
    gap:4px;
  }
  .group-grid.cols-5{
    grid-template-columns:repeat(5, minmax(0,1fr));
  }
  .group-card{
    border:1px solid #94a3b8;
    border-radius:4px;
    overflow:hidden;
    break-inside:avoid;
    page-break-inside:avoid;
    background:#fff;
  }
  .group-head{
    display:flex; justify-content:space-between; align-items:center;
    gap:4px; padding:3px 5px;
    background:#0f1e3a; color:#fff;
  }
  .group-name{ font-size:8.5pt; font-weight:900; }
  .group-court{ font-size:7.2pt; font-weight:700; text-align:right; }
  .group-court-row{
    padding:2px 5px;
    background:#f8fafc;
    border-bottom:1px solid #cbd5e1;
    font-size:7pt;
    color:#334155;
    font-weight:700;
  }
  .notice-ticker-inline{
    display:flex; align-items:center; gap:6px;
    padding:3px 5px;
    border-bottom:1px solid #fca5a5;
    background:linear-gradient(135deg,#fff1f2,#fff7ed);
  }
  .notice-ticker-inline-label{
    flex:0 0 auto;
    display:inline-flex;
    align-items:center;
    padding:2px 6px;
    border-radius:999px;
    background:#be123c;
    color:#fff;
    font-size:6.4pt;
    font-weight:900;
    white-space:nowrap;
    line-height:1;
  }
  .notice-ticker-inline-viewport{
    flex:1 1 auto;
    min-width:0;
    overflow:hidden;
    display:flex;
    align-items:center;
    height:1.25em;
  }
  .notice-ticker-inline-track{
    display:inline-flex;
    align-items:center;
    gap:22px;
    white-space:nowrap;
    min-width:max-content;
    will-change:transform;
    animation:noticeMarquee 14s linear infinite;
  }
  .notice-ticker-inline-msg{
    display:inline-block;
    font-size:6.8pt;
    font-weight:900;
    color:#9f1239;
    white-space:nowrap;
  }
  @keyframes noticeMarquee{
    0%{ transform:translateX(0); }
    100%{ transform:translateX(calc(-50% - 11px)); }
  }
  .group-table{
    width:100%;
    border-collapse:collapse;
    table-layout:fixed;
  }
  .group-table th{
    background:#e2e8f0;
    color:#0f172a;
    padding:3px 4px;
    font-size:7pt;
    border-bottom:1px solid #cbd5e1;
    text-align:center;
  }
  .group-table td{
    padding:4px 5px;
    border-bottom:1px solid #e2e8f0;
    vertical-align:top;
  }
  .group-table tr:last-child td{ border-bottom:none; }
  .group-table td.num{
    width:18px;
    text-align:center;
    font-size:7pt;
    font-weight:900;
    color:#475569;
  }
  .group-table td.name{
    font-size:7.2pt;
    line-height:1.25;
    word-break:keep-all;
    overflow-wrap:anywhere;
  }
  .player-line{
    font-weight:800;
    color:#0f172a;
  }
  .player-club{
    margin-top:1px;
    font-size:6.5pt;
    color:#64748b;
  }
  .player-club.inline{
    display:block;
  }
  .page-break{
    break-before:page;
    page-break-before:always;
  }
  @media print{
    body{ background:#fff; }
    .toolbar{ display:none !important; }
    .page{
      width:auto;
      margin:0;
      box-shadow:none;
      padding:0;
    }
  }
