:root{--green:#0f6b36;--green-dark:#083d23;--blue:#2268ff;--red:#e5333e;--ink:#172033;--muted:#697386;--line:#dbe4ef;--card:rgba(255,255,255,.88);--shadow:0 24px 60px rgba(16,37,66,.16);--radius:22px}*{box-sizing:border-box}body{margin:0;font-family:Pretendard,'Apple SD Gothic Neo','Malgun Gothic',system-ui,sans-serif;color:var(--ink);background:radial-gradient(circle at top left,rgba(34,104,255,.18),transparent 34%),radial-gradient(circle at top right,rgba(15,107,54,.18),transparent 30%),linear-gradient(135deg,#f5f8fc,#eef5f0 55%,#f7fbff);min-height:100vh}button,input,select{font:inherit}.app-shell{display:grid;grid-template-columns:280px 1fr;min-height:100vh}.sidebar{padding:28px 22px;background:linear-gradient(180deg,var(--green-dark),#0d552e);color:#fff;position:sticky;top:0;height:100vh;box-shadow:12px 0 40px rgba(6,54,30,.18)}.brand{display:flex;gap:14px;align-items:center;margin-bottom:32px}.brand-icon{width:54px;height:54px;border-radius:18px;display:grid;place-items:center;font-size:28px;background:rgba(255,255,255,.14);box-shadow:inset 0 0 0 1px rgba(255,255,255,.16)}.brand h1{font-size:22px;margin:0 0 4px}.brand p{margin:0;color:#bfe5ce;font-size:13px}.nav{display:grid;gap:10px}.nav-btn{border:0;border-radius:16px;padding:15px 16px;text-align:left;color:#d7f5e1;background:rgba(255,255,255,.08);cursor:pointer;transition:.2s;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}.nav-btn:hover,.nav-btn.active{background:#fff;color:var(--green);transform:translateX(4px)}.side-card{margin-top:30px;padding:18px;border-radius:20px;background:rgba(255,255,255,.12);box-shadow:inset 0 0 0 1px rgba(255,255,255,.14)}.mini-label{display:block;font-size:12px;color:#bfe5ce;margin-bottom:6px}.side-card p{font-size:13px;color:#d8f6e2;line-height:1.5;margin:8px 0 0}.main{padding:32px;overflow:hidden}.topbar{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;margin-bottom:24px}.eyebrow{margin:0 0 8px;color:var(--green);font-size:12px;font-weight:800;letter-spacing:.14em}.topbar h2{font-size:34px;margin:0}.quick-stats{display:flex;gap:12px}.stat-card{min-width:110px;padding:14px 18px;border-radius:18px;background:var(--card);box-shadow:var(--shadow);backdrop-filter:blur(10px)}.stat-card span{display:block;color:var(--muted);font-size:12px}.stat-card strong{font-size:28px;color:var(--green)}.view{display:none;animation:fade .22s ease}.view.active{display:block}@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.panel{background:var(--card);border:1px solid rgba(255,255,255,.8);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;margin-bottom:18px;backdrop-filter:blur(16px)}.hero-panel{display:flex;justify-content:space-between;align-items:center;gap:20px;overflow:hidden;position:relative}.hero-panel:before{content:'';position:absolute;right:-60px;top:-80px;width:240px;height:240px;border-radius:50%;background:rgba(15,107,54,.1)}.hero-panel h3,.panel h3{margin:0 0 8px;font-size:22px}.hero-panel p,.panel-head p{margin:0;color:var(--muted)}.grid{display:grid;gap:18px}.grid.two{grid-template-columns:360px 1fr}.settings-grid{grid-template-columns:repeat(4,minmax(150px,1fr))}.form-panel label,.setting-card label{display:grid;gap:8px;font-weight:800;margin-bottom:14px}input,select{width:100%;border:1px solid var(--line);border-radius:14px;padding:12px 13px;background:#fff;outline:none;transition:.18s}input:focus,select:focus{border-color:var(--green);box-shadow:0 0 0 4px rgba(15,107,54,.12)}.form-actions,.toolbar-buttons,.member-tools{display:flex;gap:10px;align-items:center;flex-wrap:wrap}button{border:0;border-radius:14px;padding:12px 16px;font-weight:800;cursor:pointer;transition:.18s}.primary-btn{background:linear-gradient(135deg,var(--green),#18a35a);color:white;box-shadow:0 12px 24px rgba(15,107,54,.24)}.primary-btn:hover,.secondary-btn:hover,.ghost-btn:hover{transform:translateY(-2px)}.primary-btn.large{font-size:18px;padding:16px 24px}.secondary-btn{background:#edf3f8;color:#21425a}.ghost-btn{background:#fff;color:var(--green);border:1px solid #cce9d8}.danger-btn{background:#fff0f1;color:var(--red)}.panel-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:14px}.table-wrap{overflow:auto;border-radius:16px;border:1px solid var(--line)}.member-table-wrap{max-height:540px}table{width:100%;border-collapse:collapse;background:#fff}th{background:#153047;color:#fff;padding:12px;font-size:13px;white-space:nowrap}td{border-bottom:1px solid var(--line);padding:10px;text-align:center;white-space:nowrap}tbody tr:hover{background:#f6fbf8}.grade{font-weight:900;color:var(--blue)}.gender-m{color:var(--red);font-weight:900}.gender-f{color:#c218d6;font-weight:900}.action-btn{padding:7px 10px;border-radius:10px;margin:0 2px;background:#eef4fb;color:#21425a}.check{width:18px;height:18px;accent-color:var(--green)}.guide-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.guide-grid div{padding:16px;border-radius:16px;background:#f6fbf8;border:1px solid #dcefe4}.guide-grid b{display:block;color:var(--green);margin-bottom:7px}.guide-grid span{font-size:13px;color:var(--muted);line-height:1.45}.info-strip{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.info-item{padding:14px;border-radius:15px;background:#f3f8ff;border:1px solid #dce8ff}.info-item b{display:block;font-size:12px;color:var(--muted)}.info-item span{font-size:18px;font-weight:900;color:var(--blue)}.match-table td.team-a{background:#eef6ff}.match-table td.team-b{background:#fff1f4}.match-table .score-cell{min-width:84px;background:#fff}.score-input{padding:8px;border-radius:10px;text-align:center}.empty{padding:34px;color:var(--muted)}.toast{position:fixed;right:26px;bottom:26px;background:#172033;color:#fff;padding:14px 18px;border-radius:16px;box-shadow:var(--shadow);opacity:0;transform:translateY(12px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:none}
.participant-panel{position:relative;overflow:hidden}
.participant-panel:after{content:'🏸';position:absolute;right:22px;bottom:-26px;font-size:96px;opacity:.06;transform:rotate(-18deg)}
.participant-grid{display:grid;grid-template-columns:1.2fr 1.4fr auto;gap:14px;align-items:end}
.participant-grid label{display:grid;gap:8px;font-weight:900;color:#1d3345}
.participant-actions{display:flex;gap:10px;flex-wrap:wrap}
.participant-apply{height:48px;white-space:nowrap}
.participant-note{margin-top:14px;padding:13px 15px;border-radius:15px;background:linear-gradient(135deg,#f3f8ff,#f7fff9);border:1px solid #dce8ff;color:#31506b;font-weight:800}
.vs-mark{color:var(--red);letter-spacing:.06em}
@media(max-width:900px){.participant-grid{grid-template-columns:1fr}.participant-apply{width:100%}}

@media(max-width:1100px){.app-shell{grid-template-columns:1fr}.sidebar{height:auto;position:relative}.grid.two,.settings-grid,.guide-grid,.info-strip{grid-template-columns:1fr}.topbar,.quick-stats{flex-direction:column}}@media print{body{background:#fff}.sidebar,.topbar,.result-toolbar .toolbar-buttons,#membersView,#matchesView{display:none!important}.app-shell{display:block}.main{padding:0}.panel{box-shadow:none;border:0;padding:0;margin:0 0 12px}.view{display:block}.view:not(#resultView){display:none}}

.run-message{
  margin:-14px 0 18px;
  padding:14px 18px;
  border-radius:18px;
  background:rgba(255,255,255,.72);
  border:1px solid rgba(255,255,255,.9);
  box-shadow:0 12px 34px rgba(15,23,42,.08);
  color:#334155;
  font-weight:800;
}
.run-message.working{background:rgba(239,246,255,.95);color:#1d4ed8;border-color:#bfdbfe;}
.run-message.ok{background:rgba(236,253,245,.95);color:#047857;border-color:#a7f3d0;}
.run-message.error{background:rgba(254,242,242,.95);color:#b91c1c;border-color:#fecaca;}
.low-count td{background:rgba(254,242,242,.7)!important;}


/* v4 클릭 보정: 장식용 원/아이콘이 버튼 클릭을 막지 않도록 처리 */
.hero-panel:before,
.participant-panel:after{
  pointer-events:none !important;
  z-index:0 !important;
}
.hero-panel > *,
.participant-panel > *{
  position:relative;
  z-index:2;
}
#generateBtn{
  position:relative;
  z-index:5;
  pointer-events:auto !important;
}
button{
  -webkit-user-select:none;
  user-select:none;
}


/* =========================================================
   v5 Natural Wood Green Theme
   - 기능 로직은 그대로 두고 화면 디자인만 강화
   - 모든 장식 요소는 클릭을 막지 않도록 pointer-events:none 처리
========================================================= */
:root{
  --green:#12804a;
  --green-dark:#07552f;
  --green-soft:#e8f6ee;
  --wood:#b77a3d;
  --wood-dark:#6f431f;
  --wood-light:#e7c391;
  --cream:#fffaf1;
  --card:rgba(255,255,255,.92);
  --line:#d9e6dc;
  --ink:#152033;
  --muted:#667085;
  --shadow:0 24px 70px rgba(62,42,22,.18);
  --radius:24px;
}

body{
  background:
    radial-gradient(circle at 14% 0%, rgba(18,128,74,.18), transparent 30%),
    radial-gradient(circle at 86% 8%, rgba(183,122,61,.18), transparent 26%),
    linear-gradient(135deg, rgba(255,255,255,.92), rgba(241,248,241,.82)),
    repeating-linear-gradient(92deg, rgba(148,91,39,.075) 0 18px, rgba(234,202,153,.10) 18px 34px, rgba(92,56,26,.055) 34px 48px);
  background-attachment: fixed;
}

body::before{
  content:"";
  position:fixed;
  inset:0;
  pointer-events:none;
  z-index:-1;
  background:
    linear-gradient(90deg, rgba(255,255,255,.72), rgba(255,255,255,.28)),
    repeating-linear-gradient(7deg, rgba(108,67,32,.035) 0 2px, transparent 2px 11px);
  opacity:.9;
}

.app-shell{
  position:relative;
}

.sidebar{
  background:
    linear-gradient(180deg, rgba(7,85,47,.97), rgba(10,103,58,.94)),
    repeating-linear-gradient(100deg, rgba(238,194,126,.22) 0 16px, rgba(113,69,34,.18) 16px 32px);
  border-right:1px solid rgba(255,255,255,.22);
}

.sidebar::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:
    linear-gradient(90deg, rgba(255,255,255,.12), transparent 34%),
    repeating-linear-gradient(12deg, rgba(255,255,255,.045) 0 2px, transparent 2px 12px);
  mix-blend-mode:screen;
}

.sidebar > *{position:relative;z-index:1}

.brand{
  padding:12px;
  border-radius:24px;
  background:rgba(255,255,255,.10);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.16);
}

.brand-icon.image-icon{
  width:62px;
  height:62px;
  padding:0;
  overflow:hidden;
  border-radius:50%;
  background:#fff;
  box-shadow:0 12px 28px rgba(0,0,0,.22), inset 0 0 0 3px rgba(255,255,255,.7);
}

.brand-icon.image-icon img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}

.mascot-card{
  margin:-12px 0 22px;
  padding:14px;
  border-radius:28px;
  background:
    linear-gradient(145deg, rgba(255,255,255,.96), rgba(255,250,241,.88));
  color:var(--ink);
  box-shadow:0 20px 48px rgba(5,47,25,.22), inset 0 0 0 1px rgba(255,255,255,.75);
  position:relative;
  overflow:hidden;
}

.mascot-card::before{
  content:"";
  position:absolute;
  inset:auto -20px -40px -20px;
  height:85px;
  pointer-events:none;
  background:
    repeating-linear-gradient(92deg, rgba(111,67,31,.16) 0 14px, rgba(231,195,145,.16) 14px 28px),
    linear-gradient(180deg, rgba(255,255,255,.0), rgba(183,122,61,.22));
}

.mascot-card img{
  display:block;
  width:100%;
  aspect-ratio:1/1;
  object-fit:cover;
  border-radius:24px;
  border:5px solid #fff;
  box-shadow:0 18px 34px rgba(40,28,15,.20);
  position:relative;
  z-index:1;
}

.creator-badge{
  position:relative;
  z-index:1;
  margin-top:12px;
  padding:10px 12px;
  border-radius:18px;
  text-align:center;
  background:linear-gradient(135deg, #0c6b3b, #16a062);
  color:#fff;
  letter-spacing:.02em;
  box-shadow:0 10px 20px rgba(7,85,47,.22);
}

.creator-badge strong{font-weight:900}

.creator-panel{
  margin-top:14px;
  padding:15px 16px;
  border-radius:20px;
  background:
    linear-gradient(135deg, rgba(255,255,255,.18), rgba(255,255,255,.08)),
    repeating-linear-gradient(92deg, rgba(222,172,101,.18) 0 12px, rgba(112,70,33,.12) 12px 24px);
  color:#fff;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.16);
}
.creator-panel span{display:block;font-size:11px;color:#c8efd9;letter-spacing:.16em}
.creator-panel strong{display:block;margin-top:4px;font-size:18px}

.main{
  background:
    radial-gradient(circle at right top, rgba(18,128,74,.10), transparent 38%),
    radial-gradient(circle at left bottom, rgba(183,122,61,.12), transparent 30%);
}

.topbar{
  padding:22px;
  border-radius:30px;
  background:
    linear-gradient(135deg, rgba(255,255,255,.92), rgba(255,250,241,.78));
  border:1px solid rgba(255,255,255,.84);
  box-shadow:var(--shadow);
  position:relative;
  overflow:hidden;
}

.topbar::after{
  content:"";
  position:absolute;
  right:-80px;
  top:-160px;
  width:340px;
  height:340px;
  border-radius:50%;
  pointer-events:none;
  background:
    radial-gradient(circle, rgba(255,255,255,.76) 0 28%, transparent 29%),
    repeating-linear-gradient(88deg, rgba(111,67,31,.14) 0 12px, rgba(231,195,145,.14) 12px 24px);
  opacity:.55;
}

.topbar > *{position:relative;z-index:1}

.maker-line{
  margin:8px 0 0;
  color:#6d5a47;
  font-size:13px;
}
.maker-line b{color:var(--green-dark)}

.panel,.stat-card{
  background:
    linear-gradient(145deg, rgba(255,255,255,.95), rgba(255,250,241,.82));
  border:1px solid rgba(255,255,255,.86);
  box-shadow:var(--shadow);
}

.panel{
  position:relative;
  overflow:hidden;
}

.panel::before{
  content:"";
  position:absolute;
  inset:0 0 auto 0;
  height:5px;
  pointer-events:none;
  background:linear-gradient(90deg, var(--green), #57b876, var(--wood-light), var(--wood));
  opacity:.86;
}

.hero-panel{
  background:
    linear-gradient(135deg, rgba(255,255,255,.96), rgba(239,249,242,.88)),
    repeating-linear-gradient(90deg, rgba(119,72,31,.08) 0 18px, rgba(231,195,145,.10) 18px 36px);
}

.primary-btn{
  background:linear-gradient(135deg, #0d7c46, #19a765) !important;
  box-shadow:0 16px 28px rgba(15,107,54,.24), inset 0 1px 0 rgba(255,255,255,.28);
  position:relative;
  z-index:5;
}

.primary-btn:hover{
  filter:saturate(1.08) brightness(1.02);
  transform:translateY(-2px);
}

.secondary-btn,.ghost-btn{
  position:relative;
  z-index:5;
  border:1px solid rgba(13,124,70,.12);
  box-shadow:0 10px 22px rgba(108,67,32,.10);
}

.nav-btn{
  position:relative;
  overflow:hidden;
}

.nav-btn::after{
  content:"";
  position:absolute;
  inset:auto 12px 9px 12px;
  height:2px;
  border-radius:99px;
  pointer-events:none;
  background:linear-gradient(90deg, transparent, rgba(231,195,145,.72), transparent);
  opacity:.0;
  transition:.2s;
}

.nav-btn.active::after,.nav-btn:hover::after{opacity:1}

.smart-table thead th,.match-table thead th{
  background:linear-gradient(180deg, #0f7b46, #086035);
  color:#fff;
}

.smart-table tbody tr:nth-child(even),.match-table tbody tr:nth-child(even){
  background:rgba(248,244,235,.55);
}

.smart-table tbody tr:hover,.match-table tbody tr:hover{
  background:rgba(232,246,238,.85);
}

.table-wrap{
  border-radius:20px;
  border:1px solid rgba(217,230,220,.92);
  background:rgba(255,255,255,.72);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.45);
}

input,select{
  background:rgba(255,255,255,.92) !important;
  border:1px solid #d7e7dc !important;
  box-shadow:inset 0 2px 5px rgba(92,56,26,.045);
}

input:focus,select:focus{
  outline:none;
  border-color:#13a261 !important;
  box-shadow:0 0 0 4px rgba(18,128,74,.12), inset 0 2px 5px rgba(92,56,26,.045);
}

.info-strip div,.guide-grid div{
  background:
    linear-gradient(135deg, rgba(246,255,249,.94), rgba(255,250,241,.82));
  border:1px solid rgba(190,218,198,.7);
  box-shadow:0 12px 24px rgba(108,67,32,.08);
}

.run-message{
  border:1px solid rgba(18,128,74,.18);
  background:linear-gradient(135deg, rgba(255,255,255,.92), rgba(232,246,238,.78));
  box-shadow:0 12px 26px rgba(108,67,32,.10);
}

.app-footer{
  margin:8px 32px 28px 312px;
  padding:18px 24px;
  border-radius:24px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  background:
    linear-gradient(135deg, rgba(255,255,255,.88), rgba(255,250,241,.78)),
    repeating-linear-gradient(94deg, rgba(111,67,31,.10) 0 14px, rgba(231,195,145,.16) 14px 28px);
  border:1px solid rgba(255,255,255,.85);
  box-shadow:0 20px 45px rgba(108,67,32,.14);
  color:#6d5a47;
}
.app-footer strong{color:var(--green-dark);font-size:18px}

/* 클릭 방해 방지 */
.topbar::after,.panel::before,.mascot-card::before,.sidebar::after,body::before{
  pointer-events:none !important;
}
button,a,input,select,label{
  position:relative;
}
#generateBtn{
  pointer-events:auto !important;
  cursor:pointer !important;
  z-index:50 !important;
}

@media (max-width:980px){
  .mascot-card{display:none}
  .app-footer{margin:0 18px 18px}
}

.power-score{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:38px;
  padding:5px 9px;
  border-radius:999px;
  color:#0f6b3f;
  background:linear-gradient(135deg, rgba(255,255,255,.95), rgba(230,246,236,.88));
  border:1px solid rgba(19,162,97,.22);
  box-shadow:0 8px 18px rgba(19,80,48,.08);
}

.score-board{
  margin-top:18px;
  padding:18px;
  border-radius:22px;
  background:
    linear-gradient(135deg, rgba(255,255,255,.86), rgba(255,249,238,.82)),
    repeating-linear-gradient(100deg, rgba(126,78,39,.09) 0 12px, rgba(230,190,130,.13) 12px 25px);
  border:1px solid rgba(205,177,129,.5);
  box-shadow:0 18px 38px rgba(108,67,32,.12);
}

.score-title{
  font-weight:900;
  color:#19452e;
  margin-bottom:12px;
  letter-spacing:-.03em;
}

.score-row{
  display:grid;
  grid-template-columns:1.2fr repeat(6, 1fr);
  gap:8px;
  align-items:center;
  margin-top:8px;
}

.score-row span,.score-row b{
  border-radius:14px;
  padding:10px 8px;
  text-align:center;
  background:rgba(255,255,255,.78);
  border:1px solid rgba(214,229,219,.75);
}

.score-row span:first-child{
  color:#0d6e41;
  font-weight:900;
  background:rgba(232,246,238,.92);
}

.score-row.head span{
  color:#73512e;
  font-weight:900;
  background:rgba(247,239,225,.9);
}

.match-table .grade{
  min-width:42px;
}

.match-type-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:76px;
  padding:7px 10px;
  border-radius:999px;
  font-size:12px;
  font-weight:1000;
  letter-spacing:-.02em;
  white-space:nowrap;
  border:1px solid rgba(255,255,255,.85);
  box-shadow:0 8px 18px rgba(15,23,42,.08), inset 0 1px 0 rgba(255,255,255,.72);
}
.match-type-badge.type-male{background:linear-gradient(135deg,#e8f2ff,#cfe4ff);color:#12508f;border-color:#bdd7f8}
.match-type-badge.type-female{background:linear-gradient(135deg,#fff0f5,#ffd7e6);color:#a0164a;border-color:#ffc2d8}
.match-type-badge.type-mixed{background:linear-gradient(135deg,#ecfff4,#ccefdc);color:#0b6a38;border-color:#b7e2c9}
.match-type-badge.type-open{background:linear-gradient(135deg,#fff7e8,#efd2a3);color:#74460f;border-color:#e5c284}


/* =========================================================
   v9 기능 보완
   - 결과 화면 점수 기준을 S등급 포함 표 형태로 표시
   - 중복 이름 회원 시각 표시
========================================================= */
.score-criteria-card{
  grid-column:span 3;
  padding:16px;
  border-radius:20px;
  background:
    linear-gradient(135deg, rgba(255,255,255,.94), rgba(248,241,226,.9)),
    repeating-linear-gradient(105deg, rgba(120,76,32,.07) 0 10px, rgba(226,190,134,.12) 10px 22px);
  border:1px solid rgba(194,156,101,.42);
  box-shadow:0 18px 34px rgba(105,70,30,.12), inset 0 1px 0 rgba(255,255,255,.78);
}
.score-criteria-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  margin-bottom:12px;
}
.score-criteria-head b{
  color:#0b6538;
  font-size:15px;
}
.score-criteria-head span{
  color:#7a5b32;
  font-size:12px;
  font-weight:800;
}
.score-criteria-grid{
  display:grid;
  grid-template-columns:1.1fr repeat(6, 1fr);
  gap:7px;
}
.score-criteria-grid span,
.score-criteria-grid b{
  min-height:38px;
  display:grid;
  place-items:center;
  border-radius:12px;
  background:rgba(255,255,255,.82);
  border:1px solid rgba(213,224,215,.74);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.7);
}
.score-criteria-grid .head{
  background:linear-gradient(135deg,#f7efe2,#ead2a9);
  color:#6f431f;
  font-size:12px;
  font-weight:1000;
}
.score-criteria-grid .row-label{
  color:#fff;
  font-weight:1000;
}
.score-criteria-grid .row-label.male{
  background:linear-gradient(135deg,#16814d,#07552f);
}
.score-criteria-grid .row-label.female{
  background:linear-gradient(135deg,#cf5f83,#8d2954);
}
.score-criteria-grid b{
  color:#102033;
  font-size:15px;
}
.warning-item{
  background:linear-gradient(135deg,#fff7ed,#fffbeb)!important;
  border-color:#fed7aa!important;
}
.warning-item span{
  color:#b45309!important;
}
.warning-item small{
  display:block;
  margin-top:4px;
  color:#92400e;
  font-size:11px;
  line-height:1.35;
}
.duplicate-row td{
  background:rgba(255,247,237,.86)!important;
}
.dup-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  margin-left:6px;
  padding:3px 7px;
  border-radius:999px;
  font-size:11px;
  font-weight:900;
  color:#b45309;
  background:#ffedd5;
  border:1px solid #fed7aa;
}

@media (max-width:980px){
  .score-criteria-card{grid-column:1/-1}
  .score-criteria-grid{grid-template-columns:1fr repeat(3,1fr)}
  .score-criteria-grid .head:nth-child(n+5){margin-top:6px}
}

/* v10: 대진 결과 인쇄 안내 */
.print-guide{
  display:inline-block;
  margin:10px 0 0;
  padding:10px 14px;
  border-radius:14px;
  background:linear-gradient(135deg,rgba(15,107,54,.10),rgba(181,126,55,.12));
  border:1px solid rgba(15,107,54,.16);
  color:#204532;
  font-weight:800;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.55);
}
.print-guide b{color:var(--green-dark)}
@media print{
  .print-guide{border:1px solid #bbb;background:#fff;color:#111}
}


/* v12 CSV 업로드 도구 */
.hero-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 10px;
}

.csv-actions .ghost-btn,
.csv-actions .secondary-btn {
  white-space: nowrap;
}

.file-upload-btn {
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.visually-hidden-file {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  overflow: hidden;
  pointer-events: none;
}

@media (max-width: 760px) {
  .hero-actions {
    width: 100%;
    justify-content: stretch;
  }
  .hero-actions > * {
    flex: 1 1 100%;
  }
}


/* v13 개인별 출전 상세 표시 */
.player-schedule-panel .compact-head{
  margin-bottom:12px;
}

.player-schedule-panel .compact-head p{
  margin:4px 0 0;
  color:var(--muted);
  font-size:14px;
}

.player-schedule-wrap{
  overflow:auto;
}

.player-schedule-table{
  table-layout:fixed;
  min-width:1380px;
}

.player-schedule-table th,
.player-schedule-table td{
  padding:9px 7px;
  font-size:13px;
}

.player-schedule-table .col-name{width:118px}
.player-schedule-table .col-grade{width:58px}
.player-schedule-table .col-gender{width:58px}
.player-schedule-table .col-power{width:62px}
.player-schedule-table .col-count{width:74px}
.player-schedule-table .col-tendency{width:170px}

.player-name-cell{
  text-align:left;
  padding-left:14px !important;
}

.schedule-cell{
  width:98px;
}

.schedule-chip{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:4px;
  min-width:92px;
  padding:6px 9px;
  border-radius:999px;
  color:#0b5f39;
  font-weight:900;
  font-size:12px;
  background:
    linear-gradient(135deg, rgba(255,255,255,.96), rgba(235,248,240,.9));
  border:1px solid rgba(19,162,97,.22);
  box-shadow:0 8px 16px rgba(19,80,48,.07);
  white-space:nowrap;
}

.schedule-link{
  cursor:pointer;
  appearance:none;
  -webkit-appearance:none;
  font-family:inherit;
  line-height:1.1;
  transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease, background .18s ease;
}

.schedule-link:hover{
  transform:translateY(-2px);
  border-color:rgba(14,129,76,.48);
  box-shadow:0 12px 22px rgba(19,80,48,.14);
  background:
    linear-gradient(135deg, #fffdf6, #e6f7ec);
}

.schedule-link:active{
  transform:translateY(0);
}

.chip-court{
  display:inline-flex;
  align-items:center;
}

.chip-game{
  color:#064d2e;
}

.match-focus{
  position:relative;
  outline:3px solid rgba(247,184,74,.95) !important;
  outline-offset:-3px;
  box-shadow:inset 0 0 0 9999px rgba(255,244,203,.45), 0 0 0 6px rgba(247,184,74,.20);
  animation:matchPulse 1.1s ease-in-out 2;
}

@keyframes matchPulse{
  0%{filter:brightness(1)}
  50%{filter:brightness(1.09)}
  100%{filter:brightness(1)}
}

.empty-slot{
  color:#b7c2cf;
  font-weight:800;
}


.player-name-match-cell{
  padding:0 !important;
}

.player-jump-btn{
  width:100%;
  min-height:44px;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:10px 12px;
  border:0;
  background:transparent;
  color:inherit;
  font-weight:900;
  cursor:pointer;
  border-radius:12px;
  transition:transform .16s ease, background .16s ease, box-shadow .16s ease, color .16s ease;
}

.player-jump-btn::before{
  content:"👤";
  font-size:12px;
  margin-right:6px;
  opacity:.58;
  transform:translateY(-1px);
}

.player-jump-btn:hover{
  transform:translateY(-1px);
  background:rgba(255,255,255,.62);
  color:#0b6b3d;
  box-shadow:inset 0 0 0 1px rgba(15,107,54,.18), 0 8px 18px rgba(15,107,54,.10);
}

.player-jump-btn:active{
  transform:translateY(0);
}

.player-focus{
  position:relative;
  outline:3px solid rgba(34,104,255,.78) !important;
  outline-offset:-3px;
  box-shadow:inset 0 0 0 9999px rgba(226,241,255,.62), 0 0 0 6px rgba(34,104,255,.12);
  animation:playerPulse 1.1s ease-in-out 2;
}

@keyframes playerPulse{
  0%{filter:brightness(1)}
  50%{filter:brightness(1.08)}
  100%{filter:brightness(1)}
}


@media print{
  .player-schedule-table{
    min-width:0;
    table-layout:auto;
  }
  .player-schedule-table th,
  .player-schedule-table td{
    font-size:10px;
    padding:5px 4px;
  }
  .schedule-chip{
    min-width:auto;
    padding:3px 5px;
    font-size:9px;
    box-shadow:none;
  }
  .schedule-link{
    cursor:default;
  }
  .match-focus{
    outline:none !important;
    box-shadow:none;
    animation:none;
  }
}


.time-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 7px 12px;
  border-radius: 999px;
  font-weight: 800;
  font-size: 13px;
  color: #5b3b18;
  background:
    linear-gradient(135deg, rgba(255,255,255,.72), rgba(255,247,229,.92)),
    repeating-linear-gradient(90deg, rgba(180,120,54,.16) 0 6px, rgba(241,216,176,.22) 6px 13px);
  border: 1px solid rgba(164, 111, 48, .22);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.75), 0 4px 12px rgba(72, 48, 18, .08);
  white-space: nowrap;
}

.match-focus .time-badge {
  background: linear-gradient(135deg, #fff8d6, #f6d788);
  border-color: rgba(164, 111, 48, .45);
}



/* v16 회원별 개별 경기 수 설정 */
.special-games-panel{
  border-top:4px solid rgba(139,94,52,.9);
  background:
    linear-gradient(135deg, rgba(255,255,255,.94), rgba(247,244,236,.9)),
    repeating-linear-gradient(90deg, rgba(166,117,72,.10) 0 9px, rgba(255,255,255,.08) 9px 18px);
}
.panel-title-row{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px}
.panel-title-row h3{margin:0 0 6px;font-size:22px}
.panel-title-row p{margin:0;color:var(--muted)}
.limit-pill{
  display:inline-flex;align-items:center;justify-content:center;
  padding:9px 14px;border-radius:999px;font-weight:900;color:#704416;
  background:linear-gradient(135deg,#f4dfba,#c99554);
  box-shadow:inset 0 1px rgba(255,255,255,.7),0 10px 22px rgba(106,71,33,.18);
  white-space:nowrap;
}
.special-help{
  margin:10px 0 16px;padding:14px 16px;border-radius:16px;
  color:#31503d;background:rgba(15,107,54,.07);border:1px solid rgba(15,107,54,.16);
  line-height:1.6;
}
.special-game-header,.special-game-row{
  display:grid;
  grid-template-columns:58px minmax(260px,520px) 140px 46px minmax(210px,240px);
  gap:10px;
  align-items:center;
  max-width:1040px;
}
.special-game-header{
  padding:0 8px 8px;color:#6d4f30;font-weight:900;font-size:13px;
}
.special-game-header span:nth-child(3){grid-column:3 / 5}
.special-game-header span:nth-child(4){grid-column:5 / 6}
.special-game-rows{display:grid;gap:10px}
.special-game-row{
  padding:10px;border:1px solid rgba(15,107,54,.16);border-radius:18px;
  background:rgba(255,255,255,.78);box-shadow:0 8px 20px rgba(23,32,51,.05);
}
.row-no{
  width:34px;height:34px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#0f8d4a,#0f6b36);color:white;font-weight:900;
}
.special-player-select,.special-games-input,.special-difficulty-select{
  width:100%;height:42px;border:1px solid #cfe0d6;border-radius:14px;background:white;
  padding:0 12px;font-size:15px;font-weight:800;color:var(--ink);outline:none;
}
.special-player-select{
  max-width:520px;
}
.special-games-input{
  max-width:140px;
}
.special-score-grade-select{
  max-width:240px;
}
.special-player-select:focus,.special-games-input:focus,.special-difficulty-select:focus{border-color:#0f8d4a;box-shadow:0 0 0 4px rgba(15,141,74,.12)}
.special-player-select.select-warning{border-color:#e5333e;background:#fff5f5}
.unit{font-weight:900;color:var(--green)}
.special-output-card{
  grid-column:1/-1;padding:14px 16px;border-radius:16px;
  background:linear-gradient(135deg,rgba(255,255,255,.95),rgba(244,230,205,.82));
  border:1px solid rgba(139,94,52,.28);
}
.special-output-card>b{display:block;margin-bottom:8px;color:#704416}
.override-chip{
  display:inline-flex;margin:4px 6px 4px 0;padding:7px 11px;border-radius:999px;
  background:#edf9f1;border:1px solid #bfe8ce;color:#0f6b36;font-weight:900;
}
.special-output-card small{display:block;margin-top:6px;color:var(--muted)}
@media(max-width:760px){
  .special-game-header{display:none}
  .special-game-row{grid-template-columns:42px minmax(0,1fr) 90px 38px;max-width:none}
  .special-difficulty-select{grid-column:2 / -1;max-width:none}
  .special-player-select,.special-games-input,.special-score-grade-select{max-width:none}
}

.target-cap-label{
  display:inline-flex;
  margin-left:6px;
  padding:2px 7px;
  border-radius:999px;
  font-size:11px;
  font-weight:900;
  color:#8a5518;
  background:linear-gradient(135deg,#fff4dc,#e8c27d);
  border:1px solid rgba(139,94,52,.25);
}
tr.target-locked td{
  background:rgba(236,248,239,.45);
}


/* v21 회원별 상대 난이도 설정 */
.special-difficulty-select{
  min-width:0;
}
.difficulty-board{
  margin-top:14px;
  padding:16px;
  border-radius:18px;
  border:1px solid rgba(15,107,54,.18);
  background:
    linear-gradient(135deg, rgba(255,255,255,.92), rgba(238,247,240,.88)),
    repeating-linear-gradient(90deg, rgba(139,94,52,.06) 0 8px, rgba(255,255,255,.05) 8px 16px);
  box-shadow: inset 0 1px rgba(255,255,255,.7), 0 12px 28px rgba(23,32,51,.06);
}
.difficulty-formula{
  margin:8px 0 12px;
  padding:10px 12px;
  border-radius:14px;
  background:#fff;
  border:1px dashed rgba(15,107,54,.25);
  color:#31503d;
  font-size:14px;
  font-weight:800;
}
.difficulty-row{
  display:grid;
  grid-template-columns:70px 1fr 70px 1fr 70px 1fr;
  gap:8px;
  align-items:center;
  margin-top:8px;
}
.difficulty-row b{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  height:32px;
  border-radius:999px;
  color:#0f6b36;
  background:#edf9f1;
  border:1px solid #bfe8ce;
}
.difficulty-row span{
  padding:8px 10px;
  border-radius:12px;
  background:rgba(255,255,255,.82);
  border:1px solid rgba(15,107,54,.12);
  font-weight:800;
  color:#263244;
}
@media(max-width:900px){
  .difficulty-row{grid-template-columns:72px 1fr;}
}

.score-override-mark{display:inline-block;margin-left:3px;font-size:10px;color:#0f6b36;font-weight:800;vertical-align:middle}.special-score-grade-select{min-width:180px}.score-override-board .difficulty-formula{font-weight:700;color:#0f6b36}



/* v24 검색 기능 보강 */
.enhanced-member-tools{
  justify-content:flex-end;
  align-items:center;
}
.member-search-box{
  display:flex;
  align-items:center;
  gap:8px;
  min-width:320px;
  max-width:560px;
  flex:1 1 360px;
  padding:6px 8px;
  border:1px solid rgba(15,107,54,.18);
  border-radius:18px;
  background:linear-gradient(135deg,rgba(255,255,255,.94),rgba(235,247,240,.86));
  box-shadow:0 10px 26px rgba(23,32,51,.06);
}
.member-search-box .search-icon{
  width:28px;
  height:28px;
  border-radius:50%;
  display:grid;
  place-items:center;
  background:rgba(15,107,54,.1);
  color:var(--green);
  flex:0 0 auto;
}
.member-search-box input{
  border:0;
  box-shadow:none;
  background:transparent;
  padding:8px 6px;
  min-width:180px;
}
.member-search-box input:focus{
  box-shadow:none;
}
.search-count-pill{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:34px;
  padding:7px 12px;
  border-radius:999px;
  background:#fff;
  border:1px solid rgba(15,107,54,.18);
  color:var(--green);
  font-size:13px;
  font-weight:900;
  white-space:nowrap;
}
.search-highlight{
  background:linear-gradient(180deg,transparent 45%,rgba(255,220,110,.75) 45%);
  color:#0d552e;
  padding:0 2px;
  border-radius:4px;
}

/* v24 회원별 개별 설정: 검색 후 선택 */
.special-player-cell{
  display:grid;
  grid-template-columns:160px minmax(180px,1fr);
  gap:8px;
  align-items:center;
  min-width:0;
}
.special-player-search{
  width:100%;
  height:42px;
  border:1px solid #cfe0d6;
  border-radius:14px;
  background:#fff;
  padding:0 12px;
  font-size:14px;
  font-weight:800;
  color:var(--ink);
  outline:none;
}
.special-player-search:focus{
  border-color:#0f8d4a;
  box-shadow:0 0 0 4px rgba(15,141,74,.12);
}
.special-player-search::placeholder{
  color:#8d9aa8;
}
.special-player-select{
  min-width:0;
}
@media (max-width:980px){
  .member-search-box{
    max-width:100%;
    min-width:0;
    flex:1 1 100%;
  }
  .special-player-cell{
    grid-template-columns:1fr;
  }
}



/* =========================================================
   CourtMate d0.1 Commercial Design Skin
   - 기능 연결용 id/js는 유지하고, 외형만 상업화 디자인으로 개선
   - Warm community sports platform 60% + premium sports SaaS 40%
========================================================= */

:root{
  --green:#0F7A45;
  --green-dark:#063F29;
  --green-deep:#075231;
  --mint:#E5F5EA;
  --mint-strong:#CDEED8;
  --cream:#FAF7EF;
  --cream-2:#FFFDF7;
  --wood:#D8B77A;
  --wood-dark:#9C6A2E;
  --blue:#2F6FEA;
  --red:#F04452;
  --pink:#D93A93;
  --ink:#1F2937;
  --muted:#667085;
  --line:#DDE8DC;
  --card:rgba(255,255,255,.92);
  --shadow:0 18px 50px rgba(37,50,39,.10);
  --soft-shadow:0 8px 26px rgba(37,50,39,.08);
  --radius:24px;
}

html{scroll-behavior:smooth}
body{
  color:var(--ink);
  background:
    radial-gradient(circle at 16% 0%, rgba(223,244,229,.92), transparent 28%),
    radial-gradient(circle at 92% 8%, rgba(216,183,122,.25), transparent 24%),
    linear-gradient(145deg, var(--cream), #F6FBF7 50%, #FFFDF7);
  background-attachment:fixed;
  letter-spacing:-.015em;
}
body:before{
  content:"";
  position:fixed;
  inset:0;
  pointer-events:none;
  opacity:.32;
  background:
    linear-gradient(90deg, transparent 0 48%, rgba(15,122,69,.08) 48% 52%, transparent 52% 100%),
    linear-gradient(0deg, transparent 0 48%, rgba(15,122,69,.06) 48% 52%, transparent 52% 100%);
  background-size:220px 160px;
  mask-image:linear-gradient(180deg, rgba(0,0,0,.55), transparent 70%);
  z-index:-1;
}
button,input,select{
  font-family:Pretendard,SUIT,"Noto Sans KR","Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif;
}
.app-shell{
  grid-template-columns:268px minmax(0,1fr);
  position:relative;
}
.sidebar{
  padding:22px 18px;
  background:
    linear-gradient(180deg, #0B5E39 0%, #063F29 74%, #07321F 100%);
  border-right:1px solid rgba(255,255,255,.12);
  box-shadow:16px 0 44px rgba(5,63,39,.18);
  overflow:hidden;
}
.sidebar:before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  opacity:.22;
  background:
    radial-gradient(circle at 30% 8%, rgba(255,255,255,.22), transparent 24%),
    repeating-linear-gradient(55deg, rgba(255,255,255,.08) 0 1px, transparent 1px 18px);
}
.sidebar>*{position:relative;z-index:1}
.brand{
  gap:12px;
  padding:10px 8px;
  margin-bottom:18px;
}
.courtmate-logo-mark{
  width:52px;
  height:52px;
  border-radius:18px;
  background:linear-gradient(145deg,#fff,#E4F5EA);
  color:var(--green);
  box-shadow:0 14px 32px rgba(0,0,0,.18), inset 0 0 0 1px rgba(255,255,255,.7);
}
.courtmate-logo-mark svg{
  width:34px;
  height:34px;
}
.brand h1{
  font-size:23px;
  letter-spacing:-.04em;
}
.brand p{
  color:#BDE7CC;
  font-size:12px;
  font-weight:800;
  letter-spacing:.02em;
}
.courtmate-intro-card{
  position:relative;
  display:block;
  padding:18px;
  margin:0 0 22px;
  border-radius:24px;
  background:
    linear-gradient(145deg, rgba(255,255,255,.14), rgba(255,255,255,.06)),
    linear-gradient(135deg, rgba(216,183,122,.18), transparent);
  border:1px solid rgba(255,255,255,.16);
  box-shadow:inset 0 1px rgba(255,255,255,.16), 0 16px 34px rgba(0,0,0,.14);
  min-height:148px;
  overflow:hidden;
}
.court-illustration{
  position:relative;
  height:86px;
  border-radius:18px;
  background:
    linear-gradient(135deg, rgba(255,255,255,.13), rgba(205,238,216,.16)),
    linear-gradient(90deg, transparent, rgba(255,255,255,.06));
  overflow:hidden;
}
.court-illustration .shuttle{
  position:absolute;
  right:18px;
  top:14px;
  font-size:34px;
  filter:drop-shadow(0 8px 18px rgba(0,0,0,.18));
}
.court-line{
  position:absolute;
  background:rgba(255,255,255,.22);
  border-radius:999px;
}
.line-a{left:14px;right:18px;bottom:22px;height:2px}
.line-b{left:28px;top:16px;width:2px;height:62px}
.line-c{left:64px;top:0;width:2px;height:90px;transform:rotate(25deg)}
.creator-badge{
  position:static;
  margin-top:12px;
  color:#ECFFF2;
  background:transparent;
  padding:0;
  border-radius:0;
  font-size:15px;
  line-height:1.45;
  box-shadow:none;
}
.creator-badge strong{
  color:#FFFFFF;
  font-weight:950;
}
.nav{
  gap:9px;
}
.nav-btn{
  display:flex;
  align-items:center;
  gap:10px;
  min-height:48px;
  border-radius:17px;
  padding:13px 15px;
  color:#E3F7EA;
  background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.10);
  box-shadow:none;
}
.nav-btn:before{
  content:"";
  width:8px;
  height:8px;
  border-radius:50%;
  background:rgba(255,255,255,.38);
  box-shadow:0 0 0 4px rgba(255,255,255,.06);
}
.nav-btn:hover,.nav-btn.active{
  background:linear-gradient(135deg,#FFFFFF,#ECF8EF);
  color:var(--green);
  transform:translateX(2px);
  box-shadow:0 10px 24px rgba(0,0,0,.14);
}
.nav-btn:hover:before,.nav-btn.active:before{
  background:var(--green);
  box-shadow:0 0 0 4px rgba(15,122,69,.12);
}
.side-card,.creator-panel{
  background:rgba(255,255,255,.10);
  border:1px solid rgba(255,255,255,.15);
  border-radius:22px;
  box-shadow:inset 0 1px rgba(255,255,255,.12);
}
.creator-panel{
  padding:14px 16px;
  margin-top:14px;
}
.creator-panel span{
  display:block;
  font-size:11px;
  color:#BDE7CC;
  letter-spacing:.1em;
  font-weight:900;
}
.creator-panel strong{
  color:#fff;
  font-size:16px;
}
.main{
  padding:28px;
  max-width:1680px;
  width:100%;
}
.topbar{
  align-items:center;
  padding:18px 20px;
  border-radius:30px;
  background:linear-gradient(135deg, rgba(255,255,255,.80), rgba(255,253,247,.68));
  border:1px solid rgba(255,255,255,.72);
  box-shadow:var(--soft-shadow);
  backdrop-filter:blur(18px);
}
.topbar h2{
  font-size:32px;
  letter-spacing:-.05em;
}
.eyebrow{
  color:var(--green);
  letter-spacing:.16em;
}
.maker-line{
  margin:.35rem 0 0;
  color:#667085;
  font-size:14px;
  font-weight:650;
}
.topbar-right{
  display:flex;
  align-items:center;
  gap:14px;
  flex-wrap:wrap;
  justify-content:flex-end;
}
.club-chip{
  display:inline-flex;
  align-items:center;
  min-height:40px;
  padding:0 14px;
  border-radius:999px;
  background:linear-gradient(135deg,#fff,#FFF5DF);
  border:1px solid rgba(216,183,122,.45);
  color:#8B5E34;
  font-size:13px;
  font-weight:950;
  box-shadow:0 8px 22px rgba(156,106,46,.10);
}
.quick-stats{
  gap:10px;
}
.stat-card{
  min-width:118px;
  border-radius:22px;
  background:linear-gradient(145deg,#FFFFFF,#F9FCF8);
  border:1px solid rgba(15,122,69,.10);
  box-shadow:0 12px 30px rgba(37,50,39,.08);
}
.stat-card strong{
  color:var(--green);
  font-weight:950;
}
.panel{
  position:relative;
  background:linear-gradient(145deg, rgba(255,255,255,.94), rgba(255,253,247,.90));
  border:1px solid rgba(15,122,69,.12);
  border-top:3px solid rgba(15,122,69,.62);
  border-radius:28px;
  box-shadow:var(--soft-shadow);
  backdrop-filter:blur(16px);
}
.panel:after{
  content:"";
  position:absolute;
  right:18px;
  top:0;
  width:96px;
  height:3px;
  border-radius:999px;
  background:linear-gradient(90deg, transparent, var(--wood));
}
.hero-panel{
  min-height:112px;
}
.hero-panel:before{
  right:30px;
  top:12px;
  width:210px;
  height:90px;
  border-radius:0;
  opacity:.65;
  background:
    radial-gradient(circle at 12% 80%, rgba(216,183,122,.18), transparent 22%),
    linear-gradient(90deg, transparent, rgba(15,122,69,.05)),
    repeating-linear-gradient(0deg, transparent 0 19px, rgba(15,122,69,.08) 19px 20px),
    repeating-linear-gradient(90deg, transparent 0 39px, rgba(15,122,69,.08) 39px 40px);
  transform:skewX(-12deg);
}
.hero-panel h3,.panel h3{
  letter-spacing:-.04em;
}
.hero-panel p,.panel-head p,.special-help,.participant-note{
  color:var(--muted);
  line-height:1.65;
}
.primary-btn{
  background:linear-gradient(135deg,#0F7A45,#18A865);
  color:#fff;
  box-shadow:0 14px 28px rgba(15,122,69,.22);
}
.primary-btn:hover{
  box-shadow:0 18px 34px rgba(15,122,69,.28);
}
.secondary-btn,.ghost-btn{
  background:linear-gradient(135deg,#FFFFFF,#F3FAF5);
  color:#28543B;
  border:1px solid rgba(15,122,69,.16);
  box-shadow:0 8px 20px rgba(37,50,39,.06);
}
.danger-btn{
  background:linear-gradient(135deg,#FFF4F1,#FFE7E3);
  color:#B42318;
  border:1px solid rgba(244,67,54,.14);
}
button{
  border-radius:16px;
}
input,select{
  border-radius:17px;
  border-color:#D7E5D9;
  background:linear-gradient(180deg,#FFFFFF,#FFFEFB);
  color:var(--ink);
  min-height:46px;
}
input:focus,select:focus{
  border-color:var(--green);
  box-shadow:0 0 0 4px rgba(15,122,69,.12);
}
.grid.two{
  grid-template-columns:minmax(320px,380px) minmax(0,1fr);
}
.settings-grid{
  grid-template-columns:repeat(4,minmax(170px,1fr));
}
.setting-card{
  padding:20px;
}
.setting-card label{
  margin-bottom:0;
}
.participant-grid{
  display:grid;
  grid-template-columns:minmax(180px,1fr) minmax(220px,1.1fr) auto;
  align-items:end;
}
.participant-note,.run-message,.special-help{
  border-radius:18px;
  background:linear-gradient(135deg, rgba(229,245,234,.9), rgba(255,253,247,.92));
  border:1px solid rgba(15,122,69,.14);
}
.run-message{
  color:#31503D;
}
.limit-pill{
  background:linear-gradient(135deg,#FFF4D8,#E9C27C);
  color:#825416;
  border:1px solid rgba(156,106,46,.22);
  box-shadow:0 10px 22px rgba(156,106,46,.12);
}
.special-game-header,.special-game-row{
  max-width:1320px;
  grid-template-columns:56px minmax(360px,520px) 160px 260px;
}
.special-game-header{
  color:#825416;
}
.special-game-row{
  border:1px solid rgba(15,122,69,.10);
  border-radius:20px;
  background:rgba(255,255,255,.78);
  box-shadow:0 8px 18px rgba(37,50,39,.05);
}
.special-row-index{
  background:linear-gradient(135deg,var(--green),#16A362);
  color:#fff;
}
.special-player-cell{
  grid-template-columns:160px minmax(180px,1fr);
}
.special-player-search,.special-player-select,.special-games-input,.special-score-grade-select{
  height:46px;
  border-radius:16px;
  background:#fff;
}
.member-search-box{
  border-radius:20px;
  background:linear-gradient(135deg,#FFFFFF,#F1FAF4);
  border:1px solid rgba(15,122,69,.14);
  box-shadow:0 10px 24px rgba(37,50,39,.06);
}
.search-count-pill,.override-chip{
  background:#F1FAF4;
  border-color:#BFE8CE;
  color:var(--green);
}
.table-wrap{
  border-radius:22px;
  border:1px solid rgba(15,122,69,.10);
  background:#fff;
  overflow:auto;
  box-shadow:inset 0 1px rgba(255,255,255,.8);
}
.smart-table,.match-table{
  border-collapse:separate;
  border-spacing:0;
}
.smart-table th,.match-table th{
  background:linear-gradient(180deg,#0F7A45,#0C6B3D);
  color:#fff;
  border:0;
  font-weight:950;
  letter-spacing:-.01em;
}
.smart-table th:first-child,.match-table th:first-child{
  border-top-left-radius:14px;
}
.smart-table th:last-child,.match-table th:last-child{
  border-top-right-radius:14px;
}
.smart-table td,.match-table td{
  border-bottom:1px solid rgba(15,122,69,.12);
}
.smart-table tbody tr:nth-child(even),.match-table tbody tr:nth-child(even){
  background:rgba(250,247,239,.55);
}
.smart-table tbody tr:hover,.match-table tbody tr:hover{
  background:rgba(229,245,234,.55);
}
.grade-badge,.gender-badge,.power-badge,.match-type-badge,.schedule-chip,.score-override-mark{
  border-radius:999px;
}
.power-badge{
  background:#F1FAF4;
  color:var(--green);
  border:1px solid #BFE8CE;
}
.match-type-badge{
  box-shadow:0 4px 10px rgba(37,50,39,.08);
}
.schedule-chip{
  display:inline-flex;
  align-items:center;
  gap:5px;
  min-height:32px;
  background:linear-gradient(135deg,#FFFFFF,#EFFAF2);
  border:1px solid #BFE8CE;
  color:#0F7A45;
  box-shadow:0 6px 14px rgba(15,122,69,.08);
}
.schedule-chip:before{
  content:"🏸";
  font-size:12px;
}
.player-name-link{
  color:#103826;
  background:transparent;
  border-radius:8px;
  padding:3px 5px;
}
.player-name-link:hover{
  background:#E5F5EA;
  color:#0F7A45;
}
.guide-grid>div{
  border:1px solid rgba(15,122,69,.12);
  background:linear-gradient(135deg,#FFFFFF,#F4FBF6);
}
.score-board,.difficulty-board{
  background:
    linear-gradient(135deg, rgba(255,255,255,.96), rgba(250,247,239,.92)),
    repeating-linear-gradient(90deg, rgba(156,106,46,.055) 0 10px, rgba(255,255,255,.02) 10px 20px);
  border-color:rgba(15,122,69,.16);
}
.score-row.head span{
  background:linear-gradient(135deg,#F2E0BC,#E2C17F);
  color:#704416;
}
.score-row span:first-child{
  background:#0F7A45;
  color:#fff;
}
.result-toolbar{
  background:
    linear-gradient(135deg, rgba(255,255,255,.95), rgba(255,250,240,.92)),
    radial-gradient(circle at 96% 18%, rgba(216,183,122,.23), transparent 20%);
}
.print-guide{
  color:#8B5E34;
}
.info-strip{
  background:linear-gradient(135deg,#F4FBF6,#FFFDF7);
}
.app-footer{
  background:linear-gradient(135deg,#063F29,#0F7A45);
  color:#E8FFF0;
  border-top:1px solid rgba(255,255,255,.16);
}
.toast{
  border-radius:18px;
  background:#103826;
  color:#fff;
  box-shadow:0 20px 40px rgba(16,56,38,.28);
}

/* CourtMate mobile / tablet refinements */
@media(max-width:1180px){
  .app-shell{
    grid-template-columns:1fr;
  }
  .sidebar{
    position:relative;
    height:auto;
    display:grid;
    grid-template-columns:1fr;
    gap:14px;
    padding:16px;
  }
  .courtmate-intro-card,.side-card,.creator-panel{
    display:none;
  }
  .brand{
    margin-bottom:0;
  }
  .nav{
    display:flex;
    overflow:auto;
    padding-bottom:4px;
  }
  .nav-btn{
    white-space:nowrap;
    min-width:max-content;
  }
  .main{
    padding:18px;
  }
  .topbar{
    flex-direction:column;
    align-items:stretch;
  }
  .topbar-right{
    justify-content:space-between;
  }
  .quick-stats{
    flex:1;
    display:grid;
    grid-template-columns:repeat(3,1fr);
  }
  .stat-card{
    min-width:0;
  }
  .settings-grid{
    grid-template-columns:repeat(2,minmax(160px,1fr));
  }
  .participant-grid{
    grid-template-columns:1fr;
  }
  .special-game-header,.special-game-row{
    grid-template-columns:52px minmax(0,1fr) 140px 210px;
  }
  .special-player-cell{
    grid-template-columns:1fr;
  }
}
@media(max-width:760px){
  .topbar h2{
    font-size:27px;
  }
  .quick-stats{
    grid-template-columns:1fr;
  }
  .grid.two,.settings-grid{
    grid-template-columns:1fr;
  }
  .hero-panel{
    flex-direction:column;
    align-items:stretch;
  }
  .hero-actions,.toolbar-buttons,.participant-actions{
    width:100%;
  }
  .hero-actions button,.toolbar-buttons button,.participant-actions button,.file-upload-btn{
    flex:1 1 auto;
  }
  .panel{
    padding:18px;
    border-radius:22px;
  }
  .member-search-box{
    min-width:0;
    flex-basis:100%;
  }
  .special-game-row{
    grid-template-columns:42px 1fr;
    gap:10px;
  }
  .special-player-cell,.special-games-input,.special-score-grade-select{
    grid-column:2 / -1;
    max-width:none;
  }
  .app-footer{
    flex-direction:column;
    gap:6px;
    text-align:center;
  }
}



/* CourtMate d0.2 dashboard layer - 안정성 우선: 기존 기능 ID/구조 유지 */
.dashboard-view{position:relative}
.dashboard-hero{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(280px,.95fr);align-items:center;min-height:250px;padding:28px;overflow:hidden;background:linear-gradient(135deg,rgba(255,255,255,.96),rgba(247,242,230,.92));border:1px solid rgba(216,183,122,.28)}
.dashboard-hero:after{content:'';position:absolute;right:22px;bottom:-36px;width:280px;height:160px;border-radius:50%;background:radial-gradient(circle,rgba(15,122,69,.13),transparent 70%);pointer-events:none}
.dashboard-hero-copy{position:relative;z-index:1;max-width:680px}
.dashboard-hero-copy h3{font-size:32px;line-height:1.18;margin:4px 0 10px;letter-spacing:-.04em;color:#122033}
.dashboard-hero-copy p:not(.eyebrow){font-size:16px;line-height:1.65;color:var(--muted);margin:0}
.dashboard-hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}
.dashboard-court-art{position:relative;z-index:1;min-height:190px;border-radius:28px;background:linear-gradient(180deg,rgba(226,245,234,.9),rgba(250,247,239,.92));box-shadow:inset 0 0 0 1px rgba(15,107,54,.12);overflow:hidden}
.dashboard-court-art:before,.dashboard-court-art:after{content:'';position:absolute;left:28px;right:28px;height:2px;background:rgba(15,107,54,.22);transform:skewY(-8deg)}
.dashboard-court-art:before{top:52px}.dashboard-court-art:after{bottom:52px}
.court-net{position:absolute;left:50%;top:28px;bottom:28px;width:3px;background:linear-gradient(rgba(15,107,54,.18),rgba(15,107,54,.52),rgba(15,107,54,.18))}
.court-net:before{content:'';position:absolute;left:-76px;right:-76px;top:50%;height:2px;background:rgba(15,107,54,.26)}
.court-player{position:absolute;width:74px;height:74px;border-radius:26px;display:grid;place-items:center;background:#fff;box-shadow:0 18px 40px rgba(15,107,54,.16);font-size:34px}
.player-a{left:58px;bottom:38px;transform:rotate(-12deg)}.player-b{right:58px;top:34px;transform:rotate(14deg)}
.court-shuttle{position:absolute;right:43%;top:32%;font-size:28px;color:#d8b77a;filter:drop-shadow(0 8px 14px rgba(166,121,50,.25))}
.dashboard-section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin:20px 4px 12px}
.dashboard-section-head h3{margin:0 0 4px;font-size:22px;letter-spacing:-.03em}
.dashboard-section-head p{margin:0;color:var(--muted);font-size:14px}
.dashboard-pill{display:inline-flex;align-items:center;min-height:34px;padding:8px 14px;border-radius:999px;background:#fff;border:1px solid rgba(216,183,122,.38);color:#815f28;font-weight:900;box-shadow:0 10px 24px rgba(133,100,51,.08)}
.dashboard-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:16px;margin-bottom:18px}
.dashboard-summary-card{position:relative;overflow:hidden;background:#fff;border:1px solid rgba(15,107,54,.12);border-radius:22px;padding:20px;box-shadow:0 16px 36px rgba(16,37,66,.08)}
.dashboard-summary-card:before{content:'';position:absolute;right:-28px;top:-38px;width:120px;height:120px;border-radius:50%;background:rgba(226,245,234,.92)}
.dashboard-summary-card span{position:relative;display:block;color:var(--muted);font-weight:900;font-size:13px;margin-bottom:10px}
.dashboard-summary-card strong{position:relative;display:block;color:var(--green);font-size:34px;line-height:1;font-weight:1000;letter-spacing:-.04em}
.dashboard-summary-card small{position:relative;display:block;margin-top:10px;color:#7b8794;font-weight:800}
.dashboard-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:18px;align-items:stretch}
.dashboard-card{height:100%;margin-bottom:18px}
.panel-head.compact{align-items:flex-start;margin-bottom:14px}
.panel-head.compact h3{font-size:20px}.panel-head.compact p{margin:0;color:var(--muted);font-size:13px}
.quick-action-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.quick-action-card{border:1px solid rgba(15,107,54,.12);background:linear-gradient(180deg,#fff,rgba(248,251,247,.92));border-radius:18px;padding:16px;text-align:left;cursor:pointer;transition:.18s;min-height:116px;display:flex;flex-direction:column;gap:6px;box-shadow:0 12px 26px rgba(16,37,66,.06)}
.quick-action-card:hover{transform:translateY(-3px);box-shadow:0 18px 40px rgba(15,107,54,.14);border-color:rgba(15,107,54,.25)}
.quick-action-card span{width:38px;height:38px;border-radius:14px;background:var(--cm-mint,#e4f5ea);display:grid;place-items:center;font-size:21px}
.quick-action-card strong{font-size:15px;color:var(--ink)}
.quick-action-card small{font-weight:700;color:var(--muted);line-height:1.35}
.quick-action-card.primary-action{background:linear-gradient(135deg,rgba(15,107,54,.96),rgba(14,133,76,.86));color:#fff}
.quick-action-card.primary-action strong,.quick-action-card.primary-action small{color:#fff}.quick-action-card.primary-action span{background:rgba(255,255,255,.18)}
.tiny-btn{border:1px solid rgba(15,107,54,.18);background:#fff;color:var(--green);border-radius:999px;padding:8px 12px;font-weight:900;cursor:pointer}
.tiny-btn:hover{background:var(--green);color:#fff}
.recent-match-list{display:grid;gap:10px}
.recent-empty{border:1px dashed rgba(15,107,54,.24);background:rgba(226,245,234,.45);border-radius:18px;padding:20px;text-align:center;color:var(--muted);font-weight:800}
.recent-match-card{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;border:1px solid rgba(15,107,54,.12);border-radius:18px;padding:14px 15px;background:#fff;box-shadow:0 10px 24px rgba(16,37,66,.06)}
.recent-match-card strong{display:block;margin-bottom:4px;color:var(--ink)}
.recent-match-card small{display:block;color:var(--muted);font-weight:800;line-height:1.45}
.recent-match-card .recent-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:rgba(216,183,122,.18);color:#815f28;font-weight:1000;padding:8px 11px;white-space:nowrap}
.dashboard-service-grid{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:14px;margin-bottom:24px}
.service-card{position:relative;background:linear-gradient(180deg,#fff,rgba(250,247,239,.9));border:1px solid rgba(216,183,122,.24);border-radius:22px;padding:18px;box-shadow:0 14px 32px rgba(16,37,66,.07)}
.service-card span{width:42px;height:42px;border-radius:15px;background:rgba(226,245,234,.95);display:grid;place-items:center;margin-bottom:12px;font-size:22px}
.service-card strong{display:block;margin-bottom:6px;font-size:16px;color:var(--green)}
.service-card p{margin:0;color:var(--muted);line-height:1.5;font-size:13px;font-weight:700}

@media(max-width:1200px){
  .dashboard-hero{grid-template-columns:1fr}
  .dashboard-court-art{min-height:150px}
  .dashboard-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dashboard-grid{grid-template-columns:1fr}
  .dashboard-service-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:720px){
  .dashboard-hero{padding:22px}
  .dashboard-hero-copy h3{font-size:25px}
  .dashboard-section-head{align-items:flex-start;flex-direction:column}
  .dashboard-summary-grid,.quick-action-grid,.dashboard-service-grid{grid-template-columns:1fr}
  .recent-match-card{grid-template-columns:1fr}
  .dashboard-court-art{display:none}
}
@media print{
  #dashboardView{display:none!important}
}


/* ===== CourtMate d0.3 로그인 UI 베타 ===== */
.topbar-right{
  display:flex;
  align-items:flex-start;
  gap:12px;
  flex-wrap:wrap;
  justify-content:flex-end;
}
.auth-widget{
  min-width:280px;
  max-width:360px;
  padding:12px;
  border-radius:24px;
  background:linear-gradient(145deg,rgba(255,255,255,.94),rgba(250,247,239,.92));
  border:1px solid rgba(15,122,69,.13);
  box-shadow:0 14px 34px rgba(37,50,39,.08);
  display:grid;
  gap:10px;
}
.auth-mode-row{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:8px;
}
.storage-mode-badge{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:6px 10px;
  border-radius:999px;
  background:rgba(15,122,69,.10);
  color:#0F7A45;
  font-size:12px;
  font-weight:950;
}
.storage-mode-badge:before{content:'●';font-size:9px}
.auth-status-text{
  font-size:12px;
  font-weight:850;
  color:#8B5E34;
}
.operator-summary{
  display:flex;
  align-items:center;
  gap:10px;
  min-width:0;
}
.operator-avatar{
  width:42px;
  height:42px;
  border-radius:16px;
  display:grid;
  place-items:center;
  flex:0 0 auto;
  color:#fff;
  font-weight:950;
  background:linear-gradient(135deg,#0F7A45,#48B97C);
  box-shadow:0 10px 22px rgba(15,122,69,.18);
}
.operator-summary strong{
  display:block;
  font-size:14px;
  color:#172033;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  max-width:240px;
}
.operator-summary small{
  display:block;
  margin-top:2px;
  font-size:12px;
  color:#667085;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  max-width:250px;
}
.auth-action-row{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}
.hidden{display:none!important}
.small-soft-btn,.small-primary-btn,.small-danger-btn{
  border:0;
  border-radius:14px;
  min-height:36px;
  padding:0 12px;
  font-size:13px;
  font-weight:950;
  cursor:pointer;
  transition:.18s ease;
}
.small-soft-btn{
  background:#F2F7F0;
  color:#24523A;
  border:1px solid rgba(15,122,69,.14);
}
.small-primary-btn{
  background:linear-gradient(135deg,#0F7A45,#0B6A3B);
  color:#fff;
  box-shadow:0 10px 22px rgba(15,122,69,.20);
}
.small-danger-btn{
  background:#FFF1F0;
  color:#B42318;
  border:1px solid #FFDAD6;
}
.small-soft-btn:hover,.small-primary-btn:hover,.small-danger-btn:hover{
  transform:translateY(-1px);
  filter:brightness(1.02);
}
.local-mode-panel{
  display:grid;
  grid-template-columns:auto 1fr auto;
  gap:18px;
  align-items:center;
  margin-top:18px;
  margin-bottom:22px;
  background:linear-gradient(135deg,#FFFFFF,#FFF9EC 55%,#EEF8F1);
  border-top-color:#D8B77A;
}
.local-mode-icon{
  width:58px;
  height:58px;
  border-radius:22px;
  display:grid;
  place-items:center;
  background:rgba(15,122,69,.10);
  font-size:28px;
}
.local-mode-copy h3{
  margin:0 0 6px;
  font-size:20px;
  color:#172033;
}
.local-mode-copy p{
  margin:0;
  color:#334155;
  font-weight:800;
}
.local-mode-copy small{
  display:block;
  margin-top:6px;
  color:#8B5E34;
  font-weight:800;
}
.local-mode-actions{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  justify-content:flex-end;
}
.auth-modal{
  position:fixed;
  inset:0;
  z-index:9999;
  display:none;
  align-items:center;
  justify-content:center;
  padding:24px;
}
.auth-modal.show{display:flex}
.auth-modal-backdrop{
  position:absolute;
  inset:0;
  background:rgba(15,23,42,.58);
  backdrop-filter:blur(8px);
}
.auth-dialog{
  position:relative;
  width:min(560px,calc(100vw - 32px));
  max-height:calc(100vh - 48px);
  overflow:auto;
  border-radius:30px;
  background:linear-gradient(145deg,#FFFFFF,#FAF7EF);
  border:1px solid rgba(255,255,255,.90);
  box-shadow:0 32px 80px rgba(6,33,20,.30);
  padding:28px;
}
.auth-close{
  position:absolute;
  top:14px;
  right:14px;
  width:38px;
  height:38px;
  border:0;
  border-radius:14px;
  background:#F1F5F1;
  color:#1F2937;
  font-size:24px;
  line-height:1;
  cursor:pointer;
}
.auth-dialog-head{
  display:flex;
  gap:14px;
  align-items:flex-start;
  margin-bottom:16px;
}
.courtmark-mini{
  width:52px;
  height:52px;
  border-radius:19px;
  display:grid;
  place-items:center;
  flex:0 0 auto;
  background:linear-gradient(135deg,#0F7A45,#4DBD82);
  color:#fff;
  font-size:24px;
  box-shadow:0 14px 28px rgba(15,122,69,.22);
}
.auth-dialog-head h3{
  margin:0 0 6px;
  font-size:24px;
  color:#172033;
}
.auth-dialog-head p{
  margin:0;
  color:#667085;
  line-height:1.55;
}
.auth-beta-notice{
  display:grid;
  gap:6px;
  margin:16px 0;
  padding:14px 16px;
  border-radius:20px;
  background:#F5FBF6;
  border:1px solid rgba(15,122,69,.14);
}
.auth-beta-notice strong{
  color:#0F7A45;
}
.auth-beta-notice span{
  color:#475467;
  font-size:13px;
  line-height:1.5;
  font-weight:700;
}
.auth-tabs{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
  margin:16px 0;
  padding:6px;
  border-radius:18px;
  background:#EEF5ED;
}
.auth-tab{
  border:0;
  border-radius:14px;
  height:44px;
  background:transparent;
  color:#667085;
  font-weight:950;
  cursor:pointer;
}
.auth-tab.active{
  background:#fff;
  color:#0F7A45;
  box-shadow:0 8px 18px rgba(37,50,39,.08);
}
.auth-form{display:none;gap:14px}
.auth-form.active{display:grid}
.auth-form label{
  display:grid;
  gap:8px;
  color:#1d3345;
  font-weight:950;
}
.auth-form input{
  width:100%;
  min-height:48px;
  border-radius:16px;
  border:1px solid rgba(15,122,69,.18);
  background:#fff;
  padding:0 14px;
  outline:none;
}
.auth-form input:focus{
  border-color:#0F7A45;
  box-shadow:0 0 0 4px rgba(15,122,69,.10);
}
.primary-btn.full,.secondary-btn.full{
  width:100%;
  justify-content:center;
  min-height:48px;
}
.auth-dialog-foot{
  margin-top:16px;
  padding-top:14px;
  border-top:1px solid rgba(15,122,69,.10);
}
.auth-dialog-foot p{
  margin:0;
  color:#8B5E34;
  font-size:13px;
  font-weight:800;
  line-height:1.5;
}

@media(max-width:1100px){
  .topbar-right{justify-content:flex-start;width:100%}
  .auth-widget{max-width:none;width:100%}
}
@media(max-width:760px){
  .auth-widget{min-width:0}
  .operator-summary strong,.operator-summary small{max-width:calc(100vw - 150px)}
  .local-mode-panel{grid-template-columns:1fr}
  .local-mode-icon{width:50px;height:50px}
  .local-mode-actions{justify-content:stretch}
  .local-mode-actions .primary-btn,.local-mode-actions .secondary-btn{width:100%}
  .auth-dialog{padding:22px;border-radius:24px}
  .auth-dialog-head{flex-direction:column}
}



/* =========================================================
   CourtMate d0.3.1 UI 안정화 패치
   - 깨진 브랜드/푸터 그래픽 보정
   - 회원별 개별 설정 행 레이아웃 보정
   - 대시보드 코트 수 직접 입력 UI
========================================================= */

/* 1) 브랜드 영역: 글자 겹침/세로 깨짐 방지 */
.courtmate-brand,
.sidebar .brand{
  display:grid !important;
  grid-template-columns:54px minmax(0,1fr) !important;
  align-items:center !important;
  gap:12px !important;
  min-width:0 !important;
}
.courtmate-brand > div:last-child,
.sidebar .brand > div:last-child{
  min-width:0 !important;
}
.courtmate-brand h1,
.sidebar .brand h1{
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  line-height:1.1 !important;
}
.courtmate-brand p,
.sidebar .brand p{
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  line-height:1.25 !important;
}
.courtmate-logo-mark{
  flex:0 0 52px !important;
}

/* 사이드 소개 카드는 장식이 텍스트를 침범하지 않도록 정리 */
.courtmate-intro-card{
  display:block;
}
.courtmate-intro-card .court-illustration{
  min-height:86px;
}
.creator-badge{
  word-break:keep-all;
  overflow-wrap:normal;
}

/* 푸터: 좁은 폭에서 글자가 세로로 깨지는 현상 방지 */
.app-footer{
  gap:14px !important;
  min-width:0 !important;
}
.app-footer .footer-brand,
.app-footer span{
  display:inline-flex !important;
  align-items:center !important;
  gap:8px !important;
  min-width:0 !important;
  white-space:nowrap !important;
}
.app-footer strong{
  min-width:0 !important;
  text-align:right;
  white-space:normal !important;
  word-break:keep-all;
}

/* 2) 대시보드 코트 수 직접 입력 */
.dashboard-court-card{
  overflow:hidden;
}
.dashboard-court-control{
  position:relative;
  z-index:1;
  display:flex;
  align-items:center;
  gap:9px;
  margin-top:2px;
}
.dashboard-court-control input{
  width:84px;
  height:46px;
  border-radius:15px;
  border:1px solid rgba(15,122,69,.22);
  background:linear-gradient(135deg,#fff,#F4FBF6);
  padding:0 12px;
  color:var(--green);
  font-size:28px;
  font-weight:1000;
  letter-spacing:-.04em;
  outline:none;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9);
}
.dashboard-court-control input:focus{
  border-color:var(--green);
  box-shadow:0 0 0 4px rgba(15,122,69,.12), inset 0 1px 0 rgba(255,255,255,.9);
}
.dashboard-court-control em{
  color:var(--green);
  font-style:normal;
  font-weight:900;
}

/* 3) 회원별 개별 경기 수/대진점수 설정 행: 데스크톱에서 한 줄 유지 */
.special-games-panel{
  overflow:hidden;
}
.special-game-header,
.special-game-row{
  width:100% !important;
  max-width:none !important;
}
@media (min-width:981px){
  .special-game-header,
  .special-game-row{
    grid-template-columns:54px minmax(360px, 1fr) 140px 50px 220px !important;
    align-items:center !important;
  }
  .special-game-header span:nth-child(3){grid-column:3 / 5 !important;}
  .special-game-header span:nth-child(4){grid-column:5 / 6 !important;}
  .special-player-cell{
    grid-template-columns:minmax(140px,180px) minmax(240px,1fr) !important;
  }
  .special-player-cell,
  .special-games-input,
  .unit,
  .special-score-grade-select{
    grid-column:auto !important;
  }
  .special-score-grade-select,
  .special-difficulty-select{
    max-width:none !important;
    width:100% !important;
  }
}
@media (min-width:761px) and (max-width:980px){
  .special-game-header{display:none !important;}
  .special-game-row{
    grid-template-columns:46px minmax(0,1fr) 120px 46px !important;
  }
  .special-player-cell{
    grid-column:2 / -1 !important;
    grid-template-columns:minmax(120px,180px) minmax(180px,1fr) !important;
  }
  .special-score-grade-select,
  .special-difficulty-select{
    grid-column:2 / -1 !important;
    width:100% !important;
    max-width:none !important;
  }
}
@media (max-width:760px){
  .courtmate-brand,
  .sidebar .brand{
    grid-template-columns:48px minmax(0,1fr) !important;
  }
  .courtmate-logo-mark{
    width:48px !important;
    height:48px !important;
    flex-basis:48px !important;
  }
  .app-footer{
    flex-direction:column !important;
    align-items:center !important;
    text-align:center !important;
    margin:0 14px 18px !important;
  }
  .app-footer strong{
    text-align:center !important;
    font-size:15px !important;
  }
  .special-game-row{
    grid-template-columns:42px minmax(0,1fr) !important;
  }
  .special-player-cell,
  .special-games-input,
  .special-score-grade-select,
  .special-difficulty-select{
    grid-column:2 / -1 !important;
    max-width:none !important;
    width:100% !important;
  }
  .unit{
    grid-column:2 / -1 !important;
  }
}



/* ============================================================
   CourtMate d0.4 UI Frame Rebuild
   - 기능 DOM id 유지
   - 좌측 사이드바 / 상단 헤더 / 대시보드 카드 / 공통 UI 스킨 전환
   ============================================================ */

:root{
  --cm-green:#0f7a45;
  --cm-green-2:#128b55;
  --cm-green-dark:#06452c;
  --cm-mint:#e8f6ef;
  --cm-mint-2:#d8f0e2;
  --cm-cream:#fbf7ef;
  --cm-cream-2:#f6efe2;
  --cm-wood:#d7b377;
  --cm-wood-dark:#a57534;
  --cm-blue:#2f6fd6;
  --cm-pink:#e94f8b;
  --cm-orange:#d99032;
  --cm-ink:#152033;
  --cm-muted:#6b7280;
  --cm-line:#e4dfd4;
  --cm-soft-line:#e8eee7;
  --cm-card:#ffffff;
  --cm-shadow:0 16px 42px rgba(15,64,44,.10);
  --cm-shadow-soft:0 8px 24px rgba(15,64,44,.08);
  --cm-radius:22px;
  --cm-radius-sm:14px;
}

html{scroll-behavior:smooth}
body{
  color:var(--cm-ink);
  background:
    radial-gradient(circle at 88% 8%, rgba(215,179,119,.28) 0 0, transparent 230px),
    radial-gradient(circle at 16% 12%, rgba(15,122,69,.12) 0 0, transparent 260px),
    linear-gradient(135deg, var(--cm-cream), #fff 48%, #f4faf6);
  font-family:Pretendard, SUIT, "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", system-ui, sans-serif;
  letter-spacing:-.025em;
}

button,input,select,textarea{font-family:inherit}
button{letter-spacing:-.02em}

/* App shell */
.app-shell{
  grid-template-columns:230px minmax(0, 1fr);
  background:linear-gradient(180deg,rgba(255,255,255,.52),rgba(255,255,255,.18));
}

.sidebar{
  padding:18px 14px;
  background:
    linear-gradient(180deg, rgba(12,113,65,.97), rgba(5,72,45,.98)),
    linear-gradient(135deg,#0b7b48,#06452c);
  border-right:1px solid rgba(255,255,255,.20);
  box-shadow:18px 0 42px rgba(6,68,43,.18);
  overflow:hidden auto;
  scrollbar-width:thin;
  scrollbar-color:rgba(255,255,255,.35) transparent;
}
.sidebar:before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:
    radial-gradient(circle at 16% 14%,rgba(255,255,255,.16),transparent 160px),
    linear-gradient(90deg,rgba(255,255,255,.05) 1px, transparent 1px),
    linear-gradient(0deg,rgba(255,255,255,.04) 1px, transparent 1px);
  background-size:auto, 44px 44px, 44px 44px;
  opacity:.58;
}
.sidebar > *{position:relative;z-index:1}

.brand.courtmate-brand{
  min-height:70px;
  margin:0 0 18px;
  padding:12px 10px;
  gap:10px;
  border-radius:20px;
  background:rgba(255,255,255,.13);
  border:1px solid rgba(255,255,255,.16);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.14);
}
.courtmate-logo-mark{
  flex:0 0 44px;
  width:44px !important;
  height:44px !important;
  border-radius:15px;
  background:linear-gradient(135deg,#ffffff,#dff4e6);
  color:var(--cm-green);
  box-shadow:0 10px 22px rgba(3,45,27,.18);
}
.courtmate-logo-mark svg{width:28px;height:28px;display:block}
.brand h1{
  font-size:18px;
  line-height:1.05;
  margin:0 0 4px;
  color:#fff;
  white-space:nowrap;
}
.brand p{
  color:#d9f7e5;
  font-weight:700;
  font-size:12px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

.mascot-card.courtmate-intro-card{
  height:auto;
  margin:0 0 16px;
  padding:14px;
  border-radius:22px;
  background:linear-gradient(145deg,rgba(255,255,255,.17),rgba(255,255,255,.08));
  border:1px solid rgba(255,255,255,.16);
}
.court-illustration{
  height:86px;
  border-radius:18px;
  overflow:hidden;
  background:
    linear-gradient(110deg,rgba(255,255,255,.22),rgba(255,255,255,.05)),
    linear-gradient(140deg,rgba(255,255,255,.0) 20%,rgba(255,255,255,.14) 20% 21%, transparent 21% 100%);
  position:relative;
}
.court-illustration:before{
  content:"";
  position:absolute;
  inset:20px 12px 10px;
  border:2px solid rgba(255,255,255,.35);
  border-radius:10px;
  transform:perspective(180px) rotateX(36deg);
  transform-origin:bottom;
}
.court-illustration .shuttle{font-size:26px;left:18px;top:12px}
.court-line{background:rgba(255,255,255,.32)}
.creator-badge{
  margin-top:10px;
  color:#fff;
  font-weight:700;
  font-size:13px;
  line-height:1.45;
}

/* Navigation */
.nav{gap:8px}
.nav-btn{
  min-height:46px;
  padding:0 13px;
  display:flex;
  align-items:center;
  gap:10px;
  border-radius:16px;
  color:#e6fff0;
  background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.08);
  box-shadow:none;
  font-weight:800;
}
.nav-btn .nav-ico{
  width:26px;
  height:26px;
  display:grid;
  place-items:center;
  border-radius:10px;
  background:rgba(255,255,255,.12);
  font-size:14px;
}
.nav-btn:hover,.nav-btn.active{
  transform:none;
  background:linear-gradient(135deg,#ffffff,#e7f6ec);
  color:var(--cm-green);
  border-color:rgba(255,255,255,.55);
  box-shadow:0 10px 20px rgba(2,44,26,.18);
}
.nav-btn.active .nav-ico{background:rgba(15,122,69,.12)}

.side-card,.creator-panel{
  border-radius:20px;
  background:rgba(255,255,255,.12);
  border:1px solid rgba(255,255,255,.14);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.10);
}
.creator-panel{
  margin-top:14px;
  padding:15px;
  color:#fff;
}
.creator-panel span{
  display:block;
  font-size:11px;
  letter-spacing:.12em;
  color:#bce9cf;
  font-weight:900;
  margin-bottom:4px;
}
.creator-panel strong{font-size:14px}

/* Main and topbar */
.main{
  padding:18px 20px 34px;
  min-width:0;
}
.topbar{
  position:sticky;
  top:0;
  z-index:20;
  margin:-18px -20px 22px;
  padding:12px 20px;
  align-items:center;
  background:rgba(255,255,255,.82);
  backdrop-filter:blur(18px);
  border-bottom:1px solid rgba(218,224,214,.74);
  box-shadow:0 10px 26px rgba(19,43,31,.06);
}
.top-title{display:flex;align-items:center;gap:14px;min-width:0}
.top-title .eyebrow{display:none}
.topbar h2{
  font-size:20px;
  margin:0;
  white-space:nowrap;
}
.maker-line{
  margin:0;
  max-width:520px;
  color:var(--cm-muted);
  font-size:13px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.topbar-right{
  display:flex;
  align-items:center;
  gap:10px;
  min-width:0;
}
.club-select{
  height:38px;
  padding:0 13px;
  display:flex;
  align-items:center;
  gap:10px;
  border:1px solid var(--cm-line);
  border-radius:12px;
  background:#fff;
  box-shadow:var(--cm-shadow-soft);
  color:#3c4a3f;
  font-size:13px;
  font-weight:800;
  white-space:nowrap;
}
.club-select-caret{color:var(--cm-green);font-weight:900}
.quick-stats{
  gap:8px;
}
.stat-card{
  min-width:88px;
  padding:9px 12px;
  border-radius:15px;
  background:#fff;
  border:1px solid rgba(222,226,218,.82);
  box-shadow:0 8px 22px rgba(13,70,42,.07);
}
.stat-card span{
  font-size:11px;
  color:#7a837d;
  font-weight:700;
}
.stat-card strong{
  font-size:22px;
  color:var(--cm-green);
}

.auth-widget{
  min-width:250px;
  border-radius:16px;
  background:#fff;
  border:1px solid rgba(224,229,221,.92);
  box-shadow:var(--cm-shadow-soft);
}

/* Panels/cards */
.panel{
  background:rgba(255,255,255,.92);
  border:1px solid rgba(224,226,218,.86);
  border-radius:24px;
  box-shadow:0 20px 42px rgba(48,37,20,.06), 0 6px 20px rgba(9,76,46,.06);
  backdrop-filter:blur(16px);
  padding:22px;
}
.panel-head h3,.panel h3,.hero-panel h3{color:var(--cm-ink)}
.panel p,.hero-panel p{color:var(--cm-muted)}

/* Dashboard hero */
.dashboard-hero{
  min-height:190px;
  padding:28px;
  border:1px solid rgba(224,226,218,.92);
  background:
    linear-gradient(90deg,rgba(255,255,255,.94),rgba(255,253,247,.90)),
    radial-gradient(circle at 76% 24%,rgba(216,244,226,.8),transparent 180px);
}
.dashboard-hero:before{display:none}
.dashboard-hero:after{
  content:"";
  position:absolute;
  right:34px;
  bottom:18px;
  width:360px;
  height:108px;
  pointer-events:none;
  background:
    linear-gradient(transparent 44%, rgba(15,122,69,.12) 44% 47%, transparent 47%),
    linear-gradient(90deg,transparent 15%, rgba(15,122,69,.16) 15% 16%, transparent 16% 48%, rgba(15,122,69,.16) 48% 49%, transparent 49% 82%, rgba(15,122,69,.16) 82% 83%, transparent 83%),
    linear-gradient(12deg,transparent 0 45%, rgba(15,122,69,.10) 45% 46%, transparent 46% 100%);
  border-radius:22px;
  transform:perspective(500px) rotateX(58deg);
  transform-origin:bottom right;
}
.dashboard-hero-copy h3{
  font-size:30px;
  letter-spacing:-.04em;
}
.dashboard-hero-copy p{
  max-width:580px;
  font-size:15px;
}
.dashboard-hero-actions{margin-top:20px}
.dashboard-court-art{
  width:360px;
  min-height:144px;
  border-radius:24px;
  background:
    radial-gradient(circle at 18% 24%,#d7edcf 0 32px,transparent 33px),
    radial-gradient(circle at 78% 35%,#cfe7c8 0 22px,transparent 23px),
    linear-gradient(180deg,#f7fbf1,#fff5e4);
  border:1px solid rgba(218,230,216,.82);
  position:relative;
  overflow:hidden;
}
.dashboard-court-art:before{
  content:"";
  position:absolute;
  left:0;right:0;bottom:0;height:70px;
  background:
    linear-gradient(90deg,rgba(15,122,69,.18) 1px,transparent 1px),
    linear-gradient(0deg,rgba(15,122,69,.18) 1px,transparent 1px),
    linear-gradient(180deg,#e5f5e7,#cfe9d6);
  background-size:46px 46px,46px 23px,auto;
  clip-path:polygon(8% 22%,92% 8%,100% 100%,0 100%);
}
.court-player{
  font-size:28px;
  filter:drop-shadow(0 6px 8px rgba(0,0,0,.12));
}
.player-a{left:82px;top:42px}
.player-b{right:72px;top:42px}
.court-net{
  position:absolute;
  left:45%;top:52px;width:3px;height:74px;
  background:rgba(12,96,60,.30);
}
.court-net:after{
  content:"";
  position:absolute;
  left:-70px;top:38px;
  width:150px;height:2px;
  background:rgba(12,96,60,.25);
}
.court-shuttle{font-size:22px;color:var(--cm-wood-dark);right:42px;top:22px}

/* Local mode card */
.local-mode-panel{
  display:flex;
  gap:16px;
  align-items:center;
  border-color:rgba(219,196,147,.64);
  background:linear-gradient(90deg,#fffaf0,#f4fbf6);
}
.local-mode-icon{
  width:52px;height:52px;border-radius:18px;
  display:grid;place-items:center;
  background:linear-gradient(135deg,#fff0d3,#e7f7ed);
  color:var(--cm-green);
  font-size:22px;
}

/* Dashboard stats */
.dashboard-section-head{
  display:flex;
  justify-content:space-between;
  gap:14px;
  align-items:flex-end;
  margin:22px 0 12px;
}
.dashboard-section-head h3{margin:0;color:var(--cm-ink);font-size:20px}
.dashboard-section-head p{margin:5px 0 0;color:var(--cm-muted);font-size:13px}
.dashboard-pill{
  padding:8px 13px;
  border-radius:999px;
  background:linear-gradient(135deg,#fff,#f0faf4);
  border:1px solid var(--cm-soft-line);
  color:var(--cm-green);
  font-weight:900;
  font-size:12px;
}
.dashboard-summary-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:14px;
}
.dashboard-summary-card{
  position:relative;
  overflow:hidden;
  border-radius:24px;
  padding:20px;
  min-height:132px;
  background:#fff;
  border:1px solid rgba(224,226,218,.92);
  box-shadow:var(--cm-shadow-soft);
}
.dashboard-summary-card:after{
  content:"";
  position:absolute;
  right:-24px;top:-24px;
  width:92px;height:92px;border-radius:50%;
  background:rgba(15,122,69,.10);
}
.dashboard-summary-card span{
  color:#66746d;
  font-size:13px;
  font-weight:800;
}
.dashboard-summary-card strong{
  display:block;
  margin:10px 0 6px;
  font-size:34px;
  color:var(--cm-green);
  line-height:1;
}
.dashboard-summary-card small{color:#7c877f;font-weight:700}
.dashboard-court-control{
  display:flex;
  align-items:center;
  gap:8px;
  margin:10px 0 6px;
}
.dashboard-court-control input{
  width:86px;
  height:48px;
  border-radius:16px;
  border:1px solid var(--cm-line);
  padding:0 14px;
  font-size:26px;
  font-weight:900;
  color:var(--cm-green);
  background:#fff;
}
.dashboard-court-control em{
  font-style:normal;
  color:var(--cm-green);
  font-weight:900;
}

/* Dashboard grid/cards */
.dashboard-grid{
  display:grid;
  grid-template-columns:1.05fr .95fr;
  gap:16px;
  margin-top:16px;
}
.dashboard-card{
  min-height:270px;
}
.panel-head.compact{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:12px;
  margin-bottom:14px;
}
.panel-head.compact h3{margin:0 0 6px;font-size:20px}
.panel-head.compact p{margin:0;color:var(--cm-muted);font-size:13px}
.quick-action-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:12px;
}
.quick-action-card{
  min-height:116px;
  padding:16px 12px;
  border-radius:20px;
  border:1px solid rgba(224,226,218,.92);
  background:linear-gradient(180deg,#fff,#fbfbf6);
  color:var(--cm-ink);
  box-shadow:0 10px 22px rgba(15,64,44,.05);
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:7px;
  cursor:pointer;
}
.quick-action-card span{
  width:38px;height:38px;
  border-radius:14px;
  display:grid;place-items:center;
  background:var(--cm-mint);
  color:var(--cm-green);
  font-size:18px;
}
.quick-action-card strong{font-size:15px}
.quick-action-card small{color:var(--cm-muted);line-height:1.35}
.quick-action-card:hover{
  transform:translateY(-2px);
  border-color:#bfe6cf;
  box-shadow:0 18px 28px rgba(15,64,44,.10);
}
.quick-action-card.primary-action{
  background:linear-gradient(135deg,#137b4a,#0d623b);
  color:#fff;
}
.quick-action-card.primary-action span{background:rgba(255,255,255,.18);color:#fff}
.quick-action-card.primary-action small{color:#dff6e9}

.recent-match-list{
  display:grid;
  gap:10px;
}
.recent-match-item,.recent-empty{
  border-radius:18px;
  border:1px solid var(--cm-soft-line);
  background:#fff;
  padding:14px;
}
.recent-match-item{
  display:flex;
  justify-content:space-between;
  gap:12px;
}
.recent-match-title{font-weight:900;color:var(--cm-ink)}
.recent-match-meta{font-size:12px;color:var(--cm-muted);margin-top:4px}
.recent-empty{color:var(--cm-muted);text-align:center;padding:28px 14px}

.dashboard-service-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:14px;
  margin-top:16px;
}
.service-card{
  background:#fff;
  border:1px solid rgba(224,226,218,.92);
  border-radius:22px;
  padding:18px;
  box-shadow:var(--cm-shadow-soft);
}
.service-card span{
  width:44px;height:44px;border-radius:16px;
  display:grid;place-items:center;
  background:linear-gradient(135deg,#e6f6ed,#fff2d8);
  margin-bottom:12px;
  color:var(--cm-green);
  font-size:20px;
}
.service-card strong{display:block;color:var(--cm-green);font-size:16px;margin-bottom:6px}
.service-card p{margin:0;color:var(--cm-muted);font-size:13px;line-height:1.5}

/* Buttons */
.primary-btn,.small-primary-btn,.submit-btn,#generateBtn{
  border:0;
  color:#fff !important;
  background:linear-gradient(135deg,var(--cm-green-2),var(--cm-green-dark)) !important;
  box-shadow:0 14px 28px rgba(10,91,54,.22);
}
.secondary-btn,.ghost-btn,.small-soft-btn,.tiny-btn{
  color:var(--cm-green) !important;
  background:#fff !important;
  border:1px solid #cfe5d7 !important;
}
.secondary-btn:hover,.ghost-btn:hover,.small-soft-btn:hover,.tiny-btn:hover{
  background:#f1fbf5 !important;
}
.small-danger-btn{border:1px solid #ffd1d1;background:#fff4f4;color:#c43a3a}

/* Inputs / forms */
input,select,textarea{
  border:1px solid #dfe9df !important;
  background:#fff;
  color:var(--cm-ink);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.92);
}
input:focus,select:focus,textarea:focus{
  outline:0;
  border-color:#71c897 !important;
  box-shadow:0 0 0 4px rgba(15,122,69,.10);
}

/* Member / match settings layout refinement */
.grid.two{
  gap:16px;
}
.form-panel,.table-panel{
  border-radius:24px;
}
.special-row,.special-game-row{
  display:grid;
  grid-template-columns:42px minmax(160px, 220px) minmax(200px, 360px) 120px 76px minmax(140px,190px);
  gap:10px;
  align-items:center;
  padding:12px;
  border-radius:18px;
  background:#fff;
  border:1px solid var(--cm-soft-line);
  box-shadow:0 8px 18px rgba(18,70,45,.04);
}
.special-row .special-search,
.special-game-row .special-search{
  min-width:0;
}
.special-row select,
.special-game-row select{
  min-width:0;
}
.special-row input[type="number"],
.special-game-row input[type="number"]{
  width:100%;
}

/* Tables */
.table-wrap{
  border-radius:22px;
  overflow:auto;
  border:1px solid var(--cm-soft-line);
  background:#fff;
  box-shadow:var(--cm-shadow-soft);
}
table{
  border-collapse:separate;
  border-spacing:0;
}
thead th{
  background:linear-gradient(180deg,#0f7a45,#0b633b) !important;
  color:#fff !important;
  font-weight:900;
  border:0 !important;
}
tbody td{
  border-color:#e9eee7 !important;
}
tbody tr:nth-child(even) td{
  background:#fbfaf5;
}
tbody tr:hover td{
  background:#f2fbf6 !important;
}
.badge,.match-type-badge,.score-pill,.schedule-chip{
  border-radius:999px;
  font-weight:900;
}

/* Result table team zones */
.team-a-cell,.team-a-zone{
  background:#edf6ff !important;
}
.team-b-cell,.team-b-zone{
  background:#fff0f3 !important;
}
.player-focus,.match-focus{
  cursor:pointer;
}

/* Auth modal */
.auth-modal-dialog{
  border-radius:26px;
  background:#fffdf8;
  border:1px solid rgba(224,226,218,.92);
  box-shadow:0 30px 80px rgba(7,44,28,.22);
}
.auth-modal-head{
  background:linear-gradient(135deg,#fff,#f1fbf5);
  border-radius:26px 26px 0 0;
}

/* Footer / bottom brand area safety */
.footer,.site-footer{
  word-break:keep-all;
}
.footer *, .site-footer *, .creator-panel *{
  writing-mode:horizontal-tb !important;
}

/* Responsive */
@media (max-width:1180px){
  .app-shell{grid-template-columns:210px minmax(0,1fr)}
  .quick-stats{display:none}
  .dashboard-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dashboard-grid{grid-template-columns:1fr}
  .dashboard-service-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dashboard-court-art{display:none}
  .special-row,.special-game-row{
    grid-template-columns:42px minmax(150px,1fr) minmax(220px,1.4fr) 110px 66px minmax(140px,.8fr);
  }
}
@media (max-width:860px){
  .app-shell{display:block}
  .sidebar{
    position:relative;
    height:auto;
    padding:14px;
    display:grid;
    gap:12px;
  }
  .brand.courtmate-brand{margin:0;min-height:64px}
  .mascot-card.courtmate-intro-card,.side-card,.creator-panel{display:none}
  .nav{
    display:flex;
    overflow:auto;
    gap:8px;
    padding-bottom:4px;
  }
  .nav-btn{
    flex:0 0 auto;
    min-height:42px;
    white-space:nowrap;
  }
  .main{padding:14px}
  .topbar{
    position:relative;
    top:auto;
    margin:0 0 14px;
    padding:14px;
    border-radius:22px;
    flex-direction:column;
    align-items:stretch;
  }
  .top-title{
    display:block;
  }
  .topbar h2{font-size:24px;margin-bottom:5px}
  .maker-line{white-space:normal}
  .topbar-right{flex-wrap:wrap}
  .club-select{width:100%;justify-content:space-between}
  .auth-widget{width:100%;min-width:0}
  .dashboard-hero{padding:22px}
  .dashboard-hero-copy h3{font-size:25px}
  .dashboard-summary-grid{grid-template-columns:1fr}
  .quick-action-grid{grid-template-columns:1fr 1fr}
  .dashboard-service-grid{grid-template-columns:1fr}
  .local-mode-panel{align-items:flex-start;flex-direction:column}
  .special-row,.special-game-row{
    grid-template-columns:1fr;
    align-items:stretch;
  }
  .grid.two,.settings-grid{grid-template-columns:1fr !important}
}
@media (max-width:540px){
  .main{padding:10px}
  .panel{border-radius:20px;padding:16px}
  .quick-action-grid{grid-template-columns:1fr}
  .dashboard-hero-copy h3{font-size:22px}
  .dashboard-hero-actions{display:grid;grid-template-columns:1fr;gap:8px}
}

/* Print keeps clean */
@media print{
  body{background:#fff}
  .sidebar,.topbar,.dashboardView,.auth-modal,.toast{display:none !important}
  .main{padding:0}
  .panel{box-shadow:none;border:0}
}


/* =====================================================================
   CourtMate d0.4.1 Dashboard-first UI rebuild
   - 기능 DOM id 유지
   - 대시보드 프레임을 업로드 시안형으로 정밀 보정
===================================================================== */
:root{
  --cm-green:#0b7242;
  --cm-green-2:#138957;
  --cm-green-dark:#064d31;
  --cm-mint:#e8f6ec;
  --cm-mint-2:#f4fbf6;
  --cm-cream:#fbf7ed;
  --cm-warm:#f2dfbd;
  --cm-wood:#d9ad66;
  --cm-ink:#162338;
  --cm-muted:#667085;
  --cm-line:#e7e2d6;
  --cm-soft-line:#dceadf;
  --cm-card:#fffef9;
  --cm-shadow:0 14px 38px rgba(27, 46, 35, .10);
  --cm-soft-shadow:0 8px 24px rgba(27, 46, 35, .08);
  --cm-radius:18px;
}
body{
  color:var(--cm-ink);
  background:
    radial-gradient(circle at 14% 3%, rgba(232,246,236,.95), transparent 26%),
    radial-gradient(circle at 84% 16%, rgba(241,221,186,.52), transparent 25%),
    linear-gradient(135deg,#fbfaf6 0%,#f6f7f0 54%,#eff6ef 100%);
}
.app-shell{
  display:grid;
  grid-template-columns:184px minmax(0,1fr);
  min-height:100vh;
  background:
    linear-gradient(90deg,rgba(255,255,255,.05),rgba(255,255,255,0));
}
.cm-sidebar.sidebar{
  position:sticky;
  top:0;
  height:100vh;
  padding:16px 10px 12px;
  background:linear-gradient(180deg,#0a6c40 0%,#075631 52%,#064427 100%);
  box-shadow:10px 0 32px rgba(8,64,38,.18);
  border-right:1px solid rgba(255,255,255,.12);
  overflow:hidden;
  z-index:5;
}
.cm-sidebar:before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  opacity:.22;
  background:
    linear-gradient(90deg,transparent 0 45%,rgba(255,255,255,.12) 45% 46%,transparent 46%),
    repeating-linear-gradient(0deg,rgba(255,255,255,.09) 0 1px,transparent 1px 28px);
}
.cm-brand{
  position:relative;
  z-index:1;
  display:flex;
  align-items:center;
  gap:10px;
  min-height:54px;
  margin:0 0 14px;
  padding:0 4px;
}
.cm-brand-mark{
  width:44px;
  height:44px;
  border-radius:14px;
  background:#fff;
  color:var(--cm-green);
  box-shadow:0 10px 24px rgba(0,0,0,.12);
  flex:0 0 auto;
}
.cm-brand-text h1{
  margin:0;
  color:#fff;
  font-size:20px;
  letter-spacing:-.04em;
  line-height:1;
}
.cm-brand-text p{
  margin:4px 0 0;
  color:#b7ecd0;
  font-size:12px;
  font-weight:800;
  letter-spacing:.02em;
}
.cm-nav{
  position:relative;
  z-index:1;
  gap:7px;
}
.cm-nav .nav-btn{
  width:100%;
  min-height:42px;
  border-radius:12px;
  padding:11px 12px;
  display:flex;
  align-items:center;
  gap:10px;
  font-weight:800;
  letter-spacing:-.02em;
  color:#e9fff2;
  background:transparent;
  box-shadow:none;
}
.cm-nav .nav-btn:hover,
.cm-nav .nav-btn.active{
  transform:none;
  color:#fff;
  background:linear-gradient(135deg,rgba(255,255,255,.17),rgba(255,255,255,.08));
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.13),0 8px 20px rgba(0,0,0,.10);
}
.cm-nav .nav-ico{
  width:20px;
  height:20px;
  border-radius:7px;
  display:inline-grid;
  place-items:center;
  color:#fff;
  font-size:13px;
}
.cm-side-promo{
  position:absolute;
  left:12px;
  right:12px;
  bottom:14px;
  min-height:112px;
  padding:15px 12px;
  border-radius:14px;
  overflow:hidden;
  background:linear-gradient(140deg,#157d4b,#0a5c36);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.13),0 12px 30px rgba(0,0,0,.16);
  color:#fff;
  z-index:1;
}
.cm-side-promo strong{
  display:block;
  font-size:13px;
  line-height:1.45;
  letter-spacing:-.02em;
  margin-bottom:12px;
}
.cm-guide-btn{
  border:0;
  border-radius:10px;
  padding:8px 13px;
  background:#fff;
  color:#0b6b40;
  font-weight:900;
  cursor:pointer;
  box-shadow:0 8px 20px rgba(0,0,0,.12);
}
.cm-side-player{
  position:absolute;
  right:-6px;
  bottom:-10px;
  width:70px;
  height:82px;
  opacity:.95;
}
.cm-side-player:before{
  content:"";
  position:absolute;
  left:18px;
  top:16px;
  width:22px;height:22px;border-radius:50%;
  background:#ffd7a4;
  box-shadow:0 30px 0 4px #fff;
}
.cm-side-player:after{
  content:"🏸";
  position:absolute;
  left:42px;
  top:4px;
  font-size:35px;
  transform:rotate(-20deg);
}
.main{
  padding:0;
  min-width:0;
}
.cm-topbar.topbar{
  height:58px;
  margin:0;
  padding:0 18px 0 24px;
  border-radius:0;
  border-bottom:1px solid rgba(222,220,208,.9);
  background:rgba(255,255,255,.86);
  backdrop-filter:blur(14px);
  box-shadow:0 4px 18px rgba(22,35,56,.05);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  position:sticky;
  top:0;
  z-index:4;
}
.sr-only{
  position:absolute !important;
  width:1px;height:1px;
  padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);
  white-space:nowrap;border:0;
}
.cm-club-select{
  min-width:210px;
  max-width:320px;
  height:34px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:0 12px;
  border:1px solid #eadfcd;
  border-radius:10px;
  background:#fffdfa;
  color:#26364b;
  font-weight:800;
  font-size:13px;
  box-shadow:0 6px 18px rgba(27,46,35,.04);
}
.cm-club-caret{color:#788391;font-size:12px}
.cm-top-actions{
  display:flex;
  align-items:center;
  gap:10px;
}
.cm-icon-btn{
  width:36px;height:36px;
  border:0;
  border-radius:50%;
  display:grid;
  place-items:center;
  background:transparent;
  color:#2a3548;
  font-weight:900;
  cursor:pointer;
}
.cm-icon-btn:hover{background:#f2f6f1}
.cm-auth-widget.auth-widget{
  position:relative;
  min-width:0;
  width:auto;
  border:0;
  background:transparent;
  padding:0;
  box-shadow:none;
}
.cm-auth-widget .auth-mode-row,
.cm-auth-widget .auth-action-row{
  display:none;
}
.cm-auth-widget .operator-summary{
  display:flex;
  align-items:center;
  gap:8px;
  padding:4px 8px 4px 4px;
  border-radius:999px;
  background:#fffdfa;
  border:1px solid #eadfcd;
}
.operator-avatar{
  width:28px;height:28px;
  border-radius:50%;
  font-size:12px;
}
.cm-auth-widget .operator-summary strong{
  display:block;
  font-size:13px;
  line-height:1.1;
}
.cm-auth-widget .operator-summary small{
  display:block;
  max-width:120px;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
  font-size:10px;
  color:var(--cm-muted);
}

/* Dashboard-only layout */
.cm-dashboard-view{
  padding:18px;
}
.cm-dashboard-grid-main{
  display:grid;
  grid-template-columns:minmax(620px,1.28fr) minmax(440px,.82fr);
  gap:18px;
  align-items:start;
}
.cm-dashboard-left,
.cm-dashboard-right{
  min-width:0;
}
.cm-card{
  border-radius:18px;
  border:1px solid rgba(230,224,210,.92);
  background:rgba(255,254,249,.94);
  box-shadow:var(--cm-shadow);
  backdrop-filter:blur(12px);
}
.cm-hero-card{
  min-height:134px;
  border-radius:18px;
  border:1px solid rgba(230,224,210,.85);
  background:
    linear-gradient(90deg,rgba(255,255,255,.96) 0%,rgba(255,252,245,.95) 52%,rgba(241,248,239,.95) 100%);
  box-shadow:var(--cm-shadow);
  position:relative;
  overflow:hidden;
  padding:30px 26px;
  margin-bottom:14px;
}
.cm-hero-card:before{
  content:"";
  position:absolute;
  inset:auto 0 0 0;
  height:48px;
  background:
    linear-gradient(0deg,rgba(225,237,219,.55),transparent),
    repeating-linear-gradient(90deg,rgba(108,166,129,.16) 0 1px,transparent 1px 48px);
}
.cm-hero-copy h3{
  position:relative;
  z-index:1;
  font-size:25px;
  margin:0 0 8px;
  letter-spacing:-.04em;
}
.cm-hero-copy p{
  position:relative;
  z-index:1;
  margin:0;
  color:#536173;
  font-weight:700;
}
.cm-hero-illustration{
  position:absolute;
  right:18px;
  bottom:0;
  width:min(54%, 690px);
  height:100%;
  display:flex;
  align-items:flex-end;
  justify-content:flex-end;
  pointer-events:none;
}
.cm-hero-illustration-img{
  display:block;
  width:100%;
  max-width:700px;
  height:auto;
  object-fit:contain;
  object-position:right bottom;
}

.cm-summary-panel{
  padding:18px;
  margin-bottom:14px;
}
.cm-panel-title,
.cm-card-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:12px;
}
.cm-panel-title h3,
.cm-card-head h3{
  margin:0;
  font-size:16px;
  letter-spacing:-.03em;
}
.cm-date-chip{
  border-radius:999px;
  background:#f4f0e5;
  color:#7b6236;
  font-size:12px;
  font-weight:900;
  padding:7px 11px;
}
.cm-summary-cards{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:12px;
}
.cm-summary-item{
  min-height:94px;
  border:1px solid #eee4d4;
  border-radius:16px;
  background:#fff;
  padding:15px 15px 13px;
  box-shadow:0 8px 22px rgba(27,46,35,.04);
}
.cm-summary-item span{
  display:block;
  color:#536173;
  font-size:12px;
  font-weight:800;
  margin-bottom:12px;
}
.cm-summary-item strong{
  display:block;
  color:var(--cm-green);
  font-size:28px;
  letter-spacing:-.04em;
  line-height:1;
}
.cm-summary-item strong em{
  font-style:normal;
}
.cm-summary-item small{
  display:block;
  margin-top:9px;
  color:#657386;
  font-weight:700;
  font-size:12px;
}
.cm-summary-input{
  display:flex;
  align-items:flex-end;
  gap:6px;
}
.cm-summary-input input{
  width:56px;
  height:34px;
  border:0;
  border-bottom:2px solid #b9dec7;
  background:#f7fcf8;
  border-radius:8px;
  color:var(--cm-green);
  font-size:26px;
  font-weight:900;
  text-align:center;
  outline:none;
}
.cm-summary-input strong{
  font-size:24px;
}
.cm-dashboard-two-col{
  display:grid;
  grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);
  gap:14px;
  margin-bottom:14px;
}
.cm-recent-panel,
.cm-quick-panel{
  padding:17px;
}
.cm-link-btn,
.cm-news-arrow{
  border:0;
  background:#eef8f1;
  color:var(--cm-green);
  border-radius:10px;
  padding:7px 10px;
  font-weight:900;
  cursor:pointer;
}
.cm-recent-list{
  display:grid;
  gap:8px;
}
.cm-recent-list .recent-match-card{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:11px 12px;
  border-radius:13px;
  border:1px solid #eee3d5;
  background:#fff;
  box-shadow:0 6px 16px rgba(27,46,35,.035);
}
.cm-recent-list .recent-match-card strong{
  display:block;
  font-size:13px;
}
.cm-recent-list .recent-match-card small{
  color:#677486;
  font-size:11px;
}
.cm-recent-list .recent-badge{
  border-radius:9px;
  background:#edf8f1;
  color:var(--cm-green);
  font-weight:900;
  padding:6px 9px;
  font-size:12px;
}
.cm-clear-recent{
  margin-top:10px;
  width:100%;
}
.cm-quick-actions{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:10px;
}
.cm-quick-action{
  min-height:94px;
  border:1px solid #eee3d3;
  border-radius:16px;
  background:#fff;
  cursor:pointer;
  display:grid;
  place-items:center;
  gap:6px;
  color:#223147;
  font-weight:900;
  box-shadow:0 8px 20px rgba(27,46,35,.05);
  transition:.18s ease;
}
.cm-quick-action:hover{
  transform:translateY(-2px);
  box-shadow:0 16px 32px rgba(27,46,35,.11);
}
.cm-quick-action-main{
  background:#fff7e7;
  border-color:#f1d7a6;
}
.cm-quick-icon{
  width:44px;height:44px;
  border-radius:14px;
  display:grid;
  place-items:center;
  font-size:21px;
}
.cm-quick-green{background:#e7f5eb;color:#0f7546}
.cm-quick-orange{background:#fff1d4;color:#cc7418}
.cm-quick-blue{background:#eaf3ff;color:#266ccf}
.cm-quick-mint{background:#ecf8f4;color:#0e8060}
.cm-quick-gray{background:#f3f4f5;color:#5f6975}
.cm-quick-action small{display:none}
.cm-news-card{
  margin-top:12px;
  display:flex;
  align-items:center;
  gap:12px;
  min-height:54px;
  border:1px solid #f1dfbe;
  border-radius:14px;
  background:#fff9ec;
  padding:10px 12px;
}
.cm-news-card > span{
  font-size:28px;
}
.cm-news-card strong{
  font-size:13px;
  color:#17804d;
}
.cm-news-card p{
  margin:2px 0 0;
  font-size:12px;
  color:#667085;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.cm-news-arrow{
  margin-left:auto;
  width:32px;height:32px;
  padding:0;
}
.cm-dashboard-feature-strip{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:14px;
  margin-top:14px;
}
.cm-dashboard-feature-strip article{
  min-height:82px;
  border-radius:18px;
  background:rgba(255,254,249,.92);
  border:1px solid #eee4d4;
  box-shadow:var(--cm-soft-shadow);
  padding:16px 14px 14px 66px;
  position:relative;
}
.cm-dashboard-feature-strip span{
  position:absolute;
  left:16px;top:18px;
  width:38px;height:38px;
  border-radius:50%;
  background:#e9f7ef;
  display:grid;
  place-items:center;
}
.cm-dashboard-feature-strip strong{
  display:block;
  color:#0b7242;
  font-size:14px;
}
.cm-dashboard-feature-strip p{
  margin:5px 0 0;
  color:#5f6b7a;
  line-height:1.45;
  font-size:12px;
}
.cm-dashboard-right{
  position:sticky;
  top:76px;
}
.cm-result-preview-card{
  padding:18px;
}
.cm-result-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:14px;
}
.cm-result-head > div:first-child{
  display:flex;
  align-items:center;
  gap:8px;
}
.cm-section-icon{
  font-size:22px;
  color:#d29c51;
}
.cm-result-head h3{
  margin:0;
  font-size:20px;
  letter-spacing:-.03em;
}
.cm-result-actions{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  justify-content:flex-end;
}
.cm-small-btn{
  height:32px;
  border:1px solid #e8dfcf;
  border-radius:9px;
  background:#fff;
  color:#23405a;
  font-weight:900;
  font-size:12px;
  padding:0 10px;
  cursor:pointer;
}
.cm-small-btn:hover{background:#f5fbf7;color:var(--cm-green)}
.cm-result-meta{
  color:#536173;
  font-weight:800;
  font-size:13px;
  margin:0 0 14px;
}
.cm-result-filter-row{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
  margin-bottom:12px;
}
.cm-result-filter-row button{
  height:30px;
  border:1px solid #eadfcd;
  border-radius:9px;
  background:#fff;
  padding:0 14px;
  font-weight:900;
  color:#506176;
}
.cm-result-filter-row button.active{
  background:var(--cm-green);
  border-color:var(--cm-green);
  color:#fff;
}
.cm-match-type-legend{
  margin-left:auto;
  display:flex;
  gap:5px;
  flex-wrap:wrap;
}
.cm-match-type-legend span{
  border-radius:8px;
  padding:5px 8px;
  font-size:11px;
  font-weight:900;
}
.type-blue{background:#e7f1ff;color:#215aaa}
.type-pink{background:#ffeaf2;color:#ba3970}
.type-green{background:#e8f7ed;color:#197944}
.type-wood{background:#fff0d6;color:#a16619}
.cm-preview-table-wrap{
  border:1px solid #eadfcd;
  border-radius:14px;
  overflow:hidden;
  background:#fff;
}
.cm-preview-table{
  width:100%;
  border-collapse:collapse;
  font-size:12px;
}
.cm-preview-table th{
  height:36px;
  background:#f8f1e4;
  color:#5b4b33;
  font-weight:900;
  border-bottom:1px solid #eadfcd;
  white-space:nowrap;
}
.cm-preview-table td{
  height:42px;
  padding:8px 9px;
  border-bottom:1px solid #eee6d7;
  text-align:center;
  vertical-align:middle;
}
.cm-preview-table tbody tr:last-child td{border-bottom:0}
.cm-preview-table .cm-team-a{
  background:#edf7ff;
  text-align:left;
  font-weight:800;
}
.cm-preview-table .cm-team-b{
  background:#fff0f4;
  text-align:left;
  font-weight:800;
}
.cm-preview-empty{
  color:#738092;
  padding:40px 10px !important;
  line-height:1.7;
}
.cm-preview-pager{
  display:flex;
  justify-content:center;
  align-items:center;
  gap:12px;
  margin-top:12px;
  color:#516174;
}
.cm-preview-pager button,
.cm-preview-pager strong{
  min-width:28px;height:28px;
  border:1px solid #e9dfcf;
  border-radius:8px;
  display:grid;
  place-items:center;
  background:#fff;
}
.cm-preview-pager strong{
  background:var(--cm-green);
  color:#fff;
  border-color:var(--cm-green);
}
.cm-empty-page{
  max-width:760px;
  margin:34px auto;
  padding:52px 34px;
  border-radius:26px;
  text-align:center;
  background:#fffef9;
  border:1px solid #eee4d4;
  box-shadow:var(--cm-shadow);
}
.cm-empty-icon{
  width:62px;height:62px;
  border-radius:22px;
  margin:0 auto 14px;
  display:grid;
  place-items:center;
  background:#e9f7ef;
  color:var(--cm-green);
  font-size:28px;
  font-weight:900;
}
.cm-empty-page h3{
  margin:0 0 8px;
  font-size:24px;
}
.cm-empty-page p{
  color:#667085;
  line-height:1.7;
}
.cm-help-local{
  margin-top:22px;
  text-align:left;
}

/* dashboard row/legacy hiding */
.cm-dashboard-view .local-mode-panel:not(.cm-help-local),
.cm-dashboard-view .dashboard-section-head,
.cm-dashboard-view .dashboard-summary-grid,
.cm-dashboard-view .dashboard-grid,
.cm-dashboard-view .dashboard-service-grid{
  display:none !important;
}

/* Make existing non-dashboard pages more compatible with the new frame */
.panel{
  border-color:rgba(230,224,210,.9);
  background:rgba(255,254,249,.94);
  box-shadow:var(--cm-shadow);
}
.primary-btn,
.small-primary-btn,
button.primary,
#generateBtn{
  background:linear-gradient(135deg,var(--cm-green),var(--cm-green-2)) !important;
  color:#fff !important;
  border:0 !important;
}
.secondary-btn,
.small-soft-btn{
  background:#f2fbf5 !important;
  color:var(--cm-green) !important;
  border:1px solid #cde9d5 !important;
}
input,select,textarea{
  border-color:#dbe9de !important;
  border-radius:12px !important;
}

/* Responsive dashboard frame */
@media (max-width:1280px){
  .app-shell{grid-template-columns:170px minmax(0,1fr)}
  .cm-dashboard-grid-main{grid-template-columns:1fr}
  .cm-dashboard-right{position:relative;top:auto}
}
@media (max-width:980px){
  .app-shell{display:block}
  .cm-sidebar.sidebar{
    position:relative;
    height:auto;
    padding:12px;
    display:block;
  }
  .cm-brand{margin-bottom:10px}
  .cm-side-promo{display:none}
  .cm-nav{
    display:flex;
    gap:8px;
    overflow:auto;
    padding-bottom:3px;
  }
  .cm-nav .nav-btn{
    flex:0 0 auto;
    width:auto;
    white-space:nowrap;
  }
  .cm-topbar.topbar{
    position:relative;
    top:auto;
    height:auto;
    padding:12px;
    flex-wrap:wrap;
  }
  .cm-club-select{width:100%;max-width:none}
  .cm-dashboard-view{padding:12px}
  .cm-hero-illustration{opacity:.35;right:-70px}
  .cm-summary-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cm-dashboard-two-col{grid-template-columns:1fr}
  .cm-quick-actions{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cm-dashboard-feature-strip{grid-template-columns:1fr 1fr}
  .cm-result-actions{justify-content:flex-start}
}
@media (max-width:640px){
  .cm-dashboard-view{padding:10px}
  .cm-hero-card{padding:22px 18px;min-height:118px}
  .cm-hero-copy h3{font-size:22px}
  .cm-hero-illustration{display:none}
  .cm-summary-cards{grid-template-columns:1fr}
  .cm-quick-actions{grid-template-columns:1fr}
  .cm-dashboard-feature-strip{grid-template-columns:1fr}
  .cm-preview-table-wrap{overflow:auto}
  .cm-preview-table{min-width:760px}
  .cm-auth-widget .operator-summary small{display:none}
}

.legacy-stat-sink{display:none!important}

@media (max-width: 980px){
  .cm-hero-card{padding:24px 22px;min-height:150px}
  .cm-hero-illustration{right:0;width:52%;opacity:.95}
  .cm-hero-copy{max-width:50%}
}
@media (max-width: 760px){
  .cm-hero-card{min-height:122px;padding:20px 18px}
  .cm-hero-copy h3{font-size:22px}
  .cm-hero-copy p{font-size:14px;max-width:92%}
  .cm-hero-illustration{width:48%;right:-4px;opacity:.92}
}
@media (max-width: 560px){
  .cm-hero-card{min-height:108px;padding:18px 14px}
  .cm-hero-copy{max-width:62%}
  .cm-hero-copy h3{font-size:18px;margin-bottom:6px}
  .cm-hero-copy p{font-size:12px;line-height:1.45}
  .cm-hero-illustration{width:44%;right:-8px;opacity:.9}
}

/* CourtMate d0.4.3 quick-action typography fix
   빠른 실행 카드의 한글 글자 쪼개짐 방지 */
.cm-quick-actions{
  grid-template-columns:repeat(5,minmax(92px,1fr));
  gap:10px;
}
.cm-quick-action{
  min-width:0;
  min-height:104px;
  padding:13px 8px 12px;
  align-content:center;
  justify-items:center;
  text-align:center;
}
.cm-quick-action strong{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:2px;
  width:100%;
  min-width:0;
  color:#223147;
  font-size:15px;
  line-height:1.18;
  letter-spacing:-.04em;
  font-weight:900;
  word-break:keep-all;
  overflow-wrap:normal;
  white-space:normal;
  text-align:center;
}
.cm-quick-action strong span{
  display:block;
  word-break:keep-all;
  overflow-wrap:normal;
  white-space:nowrap;
}
.cm-quick-icon{
  flex:0 0 auto;
  margin-bottom:4px;
  font-family:"Apple Color Emoji","Segoe UI Emoji",Pretendard,"Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif;
}
@media (max-width:1180px){
  .cm-quick-actions{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:720px){
  .cm-quick-actions{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cm-quick-action{min-height:96px}
}
@media (max-width:420px){
  .cm-quick-actions{grid-template-columns:1fr}
  .cm-quick-action strong{font-size:14px;flex-direction:row;gap:4px}
}

/* d0.4.5 최근 대진표 저장/복원 액션 */
.recent-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px}
.recent-delete-btn{color:#c43a3a;border-color:#ffd1d1;background:#fff7f7}
.recent-delete-btn:hover{background:#fff0f0;color:#a82222}
.recent-view-btn{background:#f3fbf6;color:var(--green)}
.recent-current-label{display:inline-flex;align-items:center;margin-left:6px;padding:2px 7px;border-radius:999px;background:rgba(15,107,54,.1);color:var(--green);font-size:11px;font-weight:1000;vertical-align:middle}
.tiny-btn:disabled{opacity:.55;cursor:not-allowed;transform:none}

/* d0.4.6 대진 결과 코트별 필터 */
.court-filter-panel{
  background:linear-gradient(135deg, rgba(255,255,255,.95), rgba(247,253,249,.92));
}
.court-filter-controls{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
}
.court-filter-summary{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:30px;
  border-radius:999px;
  padding:6px 12px;
  background:#f3fbf6;
  color:var(--green);
  border:1px solid rgba(15,107,54,.16);
  font-size:12px;
  font-weight:1000;
  white-space:nowrap;
}
.result-court-filter-row{
  margin:0;
}
@media(max-width:720px){
  .court-filter-panel .panel-head{align-items:flex-start;flex-direction:column}
  .court-filter-summary{width:100%;justify-content:flex-start}
  .court-filter-controls button{flex:1 1 calc(33.333% - 8px);min-width:86px}
}

/* d0.4.6.1: dashboard match preview pager is rendered only when extra pages exist */
.cm-preview-pager[hidden]{
  display:none !important;
}
.cm-preview-pager button{
  cursor:pointer;
}


/* d0.4.6.2: pagination alignment + match type filter */
.cm-preview-pager{
  display:flex;
  justify-content:center;
  align-items:center;
  gap:8px;
  margin-top:12px;
  color:#516174;
  flex-wrap:wrap;
  min-height:36px;
}
.cm-preview-pager button,
.cm-preview-pager strong{
  appearance:none;
  min-width:34px;
  height:32px;
  padding:0 10px;
  border:1px solid #e9dfcf;
  border-radius:9px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  background:#fff;
  color:#516174;
  font-size:15px;
  font-weight:900;
  line-height:1;
  box-sizing:border-box;
  vertical-align:middle;
  text-decoration:none;
}
.cm-preview-pager strong{
  background:var(--cm-green);
  color:#fff;
  border-color:var(--cm-green);
}
.cm-preview-pager button:hover{background:#f5fbf7;color:var(--cm-green)}
.cm-preview-pager[hidden]{display:none !important;}
.cm-match-type-filter{
  margin-left:auto;
  display:flex;
  gap:5px;
  flex-wrap:wrap;
  align-items:center;
  justify-content:flex-end;
}
.cm-match-type-filter .match-type-filter-btn{
  height:28px;
  border:1px solid transparent;
  border-radius:8px;
  padding:0 9px;
  font-size:11px;
  font-weight:900;
  line-height:1;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
  box-sizing:border-box;
}
.cm-match-type-filter .match-type-filter-btn:not(.type-blue):not(.type-pink):not(.type-green):not(.type-wood){
  background:#fff;color:#506176;border-color:#eadfcd;
}
.cm-match-type-filter .match-type-filter-btn.active{
  background:var(--cm-green) !important;
  border-color:var(--cm-green) !important;
  color:#fff !important;
}
.result-match-type-filter{margin-top:8px;margin-left:0;justify-content:flex-start;}
@media(max-width:720px){
  .cm-match-type-filter{width:100%;margin-left:0;justify-content:flex-start;}
  .cm-match-type-filter .match-type-filter-btn{flex:1 1 calc(20% - 5px);min-width:56px;}
  .cm-preview-pager button,.cm-preview-pager strong{min-width:32px;height:32px;}
}


/* d0.4.6.3: active court/type filter status */
.cm-filter-status{
  display:inline-flex;
  align-items:center;
  justify-content:flex-start;
  width:fit-content;
  max-width:100%;
  margin-top:8px;
  padding:7px 12px;
  border-radius:999px;
  background:#f3fbf6;
  border:1px solid rgba(15,107,54,.16);
  color:var(--cm-green);
  font-size:12px;
  font-weight:1000;
  line-height:1.2;
  white-space:normal;
}
.result-filter-status{
  margin-top:10px;
}
@media(max-width:720px){
  .cm-filter-status{
    width:100%;
    justify-content:flex-start;
    border-radius:14px;
  }
}


/* d0.4.6.4: filter reset button */
.cm-filter-status-row{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
  margin-top:8px;
}
.cm-filter-status-row .cm-filter-status{
  margin-top:0;
}
.cm-filter-reset-btn{
  height:30px;
  padding:0 11px;
  border:1px solid #eadfcd;
  border-radius:999px;
  background:#fffdf8;
  color:#506176;
  font-size:12px;
  font-weight:1000;
  line-height:1;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
  box-sizing:border-box;
  white-space:nowrap;
}
.cm-filter-reset-btn:hover:not(:disabled){
  background:#f3fbf6;
  border-color:rgba(15,107,54,.28);
  color:var(--cm-green);
}
.cm-filter-reset-btn:disabled{
  opacity:.42;
  cursor:not-allowed;
}
@media(max-width:720px){
  .cm-filter-status-row{width:100%;}
  .cm-filter-reset-btn{
    width:100%;
    height:34px;
    border-radius:14px;
  }
}


/* d0.4.7: mobile match result card view */
.mobile-match-card-list{
  display:none;
}
.mobile-match-empty{
  padding:24px 16px;
  border:1px dashed #dbe9de;
  border-radius:18px;
  background:#fffdf8;
  color:#667085;
  text-align:center;
  font-size:14px;
  line-height:1.65;
}
.mobile-match-card{
  border:1px solid rgba(15,107,54,.14);
  border-radius:18px;
  background:linear-gradient(135deg,#ffffff,#fbfff8);
  box-shadow:0 10px 28px rgba(15,107,54,.08);
  overflow:hidden;
}
.mobile-match-card-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:10px;
  padding:14px 14px 10px;
  border-bottom:1px solid #edf1e8;
}
.mobile-match-card-head strong{
  display:block;
  color:#172033;
  font-size:16px;
  font-weight:1000;
  line-height:1.2;
}
.mobile-match-card-head span:not(.match-type-badge){
  display:block;
  margin-top:4px;
  color:#667085;
  font-size:12px;
  font-weight:800;
}
.mobile-match-card-body{
  display:grid;
  gap:10px;
  padding:12px;
}
.mobile-team-card{
  border-radius:16px;
  border:1px solid #e6edf3;
  overflow:hidden;
}
.mobile-team-card.team-a-card{
  background:#f2f8ff;
  border-color:#dcecff;
}
.mobile-team-card.team-b-card{
  background:#fff6f8;
  border-color:#ffe1e7;
}
.mobile-team-title{
  padding:8px 11px;
  font-size:12px;
  font-weight:1000;
  color:#344054;
  background:rgba(255,255,255,.56);
  border-bottom:1px solid rgba(0,0,0,.05);
}
.mobile-team-players{
  display:grid;
  gap:6px;
  padding:8px;
}
.mobile-player-line{
  width:100%;
  min-height:38px;
  padding:8px 10px;
  border:1px solid rgba(255,255,255,.8);
  border-radius:12px;
  background:rgba(255,255,255,.82);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  color:#172033;
  text-align:left;
  box-shadow:none;
  cursor:pointer;
}
.mobile-player-line:hover{
  transform:none;
  border-color:rgba(15,107,54,.26);
  background:#fff;
}
.mobile-player-name{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:14px;
  font-weight:1000;
}
.mobile-player-meta{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-size:12px;
  font-weight:1000;
}
.mobile-vs-mark{
  justify-self:center;
  min-width:42px;
  height:24px;
  border-radius:999px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  background:#172033;
  color:#fff;
  font-size:11px;
  font-weight:1000;
  letter-spacing:.08em;
}
@media(max-width:760px){
  .result-match-panel{
    padding:14px;
  }
  .result-match-table-wrap{
    display:none;
  }
  .mobile-match-card-list{
    display:grid;
    gap:12px;
  }
}
@media(min-width:761px){
  .mobile-match-card-list{
    display:none !important;
  }
}
@media print{
  .mobile-match-card-list{
    display:none !important;
  }
  .result-match-table-wrap{
    display:block !important;
  }
}


/* d0.4.7.1: dashboard preview overflow + click navigation patch */
.cm-preview-table-wrap{
  overflow-x:auto !important;
  overflow-y:hidden !important;
  -webkit-overflow-scrolling:touch;
}
.cm-preview-table{
  min-width:760px;
}
.cm-preview-match-row{
  cursor:pointer;
}
.cm-preview-match-row:hover td{
  background-color:#f6fbf8;
}
.cm-preview-match-row:hover .cm-team-a{
  background:#e6f3ff;
}
.cm-preview-match-row:hover .cm-team-b{
  background:#ffe8ef;
}
.cm-preview-match-row:focus-visible{
  outline:3px solid rgba(15,107,54,.28);
  outline-offset:-3px;
}
.cm-preview-match-btn,
.cm-preview-player-btn{
  border:0;
  background:transparent;
  color:inherit;
  padding:4px 6px;
  margin:0;
  border-radius:8px;
  font-size:inherit;
  font-weight:900;
  line-height:1.25;
  cursor:pointer;
  box-shadow:none;
  transform:none !important;
}
.cm-preview-match-btn:hover,
.cm-preview-player-btn:hover{
  background:rgba(15,107,54,.09);
  color:var(--cm-green);
}
.cm-preview-player-btn{
  max-width:132px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  vertical-align:middle;
  text-align:left;
}
.cm-preview-plus{
  display:inline-block;
  margin:0 4px;
  color:#667085;
  font-weight:900;
}
.mobile-match-card.match-focus{
  outline-offset:2px;
  box-shadow:0 0 0 6px rgba(247,184,74,.20), 0 16px 32px rgba(15,107,54,.14) !important;
}
@media(max-width:760px){
  .cm-preview-table{min-width:720px;}
  .cm-preview-player-btn{max-width:118px;}
}

/* d0.4.7.2: mobile match card readability tuning */
@media (max-width:760px){
  .cm-result-preview-card,
  .result-match-panel,
  .court-filter-panel{
    border-radius:18px;
  }

  .cm-result-filter-row{
    display:grid;
    grid-template-columns:1fr;
    gap:8px;
    margin-bottom:8px;
  }

  .court-filter-controls,
  .cm-match-type-filter,
  .result-match-type-filter{
    width:100%;
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:6px;
    justify-content:stretch;
    align-items:stretch;
  }

  .cm-match-type-filter{
    margin-left:0;
  }

  .court-filter-controls button,
  .cm-result-filter-row button,
  .cm-match-type-filter .match-type-filter-btn{
    width:100%;
    min-width:0 !important;
    height:34px;
    padding:0 8px;
    border-radius:11px;
    font-size:12px;
    letter-spacing:-.03em;
    white-space:nowrap;
  }

  .cm-filter-status-row{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:8px;
    align-items:center;
    margin-top:8px;
  }

  .cm-filter-status-row .cm-filter-status{
    width:100%;
    min-width:0;
    margin:0;
    padding:8px 10px;
    border-radius:12px;
    font-size:12px;
    line-height:1.25;
  }

  .cm-filter-reset-btn{
    width:auto;
    min-width:86px;
    height:34px;
    padding:0 10px;
    border-radius:12px;
    font-size:12px;
  }

  .result-match-panel{
    padding:10px;
  }

  .mobile-match-card-list{
    gap:9px;
    align-content:start;
  }

  .mobile-match-card-list[data-count="1"],
  .mobile-match-card-list[data-count="2"],
  .mobile-match-card-list[data-count="3"]{
    gap:8px;
  }

  .mobile-match-empty{
    padding:18px 12px;
    border-radius:14px;
    font-size:13px;
  }

  .mobile-match-card{
    border-radius:16px;
    box-shadow:0 7px 18px rgba(15,107,54,.075);
  }

  .mobile-match-card-head{
    padding:11px 12px 9px;
    align-items:center;
  }

  .mobile-match-card-head strong{
    font-size:15px;
    letter-spacing:-.03em;
  }

  .mobile-match-card-head span:not(.match-type-badge){
    font-size:11px;
    margin-top:3px;
  }

  .mobile-match-card-body{
    gap:7px;
    padding:9px;
  }

  .mobile-team-card{
    border-radius:14px;
  }

  .mobile-team-card.team-a-card{
    background:#eaf5ff;
    border-color:#b9daf8;
  }

  .mobile-team-card.team-b-card{
    background:#fff0f4;
    border-color:#ffc5d3;
  }

  .mobile-team-card.team-a-card .mobile-team-title{
    background:#d8ebff;
    color:#0b4f86;
  }

  .mobile-team-card.team-b-card .mobile-team-title{
    background:#ffe0e8;
    color:#9b284d;
  }

  .mobile-team-title{
    padding:7px 10px;
    font-size:11px;
    letter-spacing:-.02em;
  }

  .mobile-team-players{
    gap:5px;
    padding:7px;
  }

  .mobile-player-line{
    min-height:34px;
    padding:7px 8px;
    gap:8px;
    border-radius:10px;
    min-width:0;
    overflow:hidden;
  }

  .mobile-player-name{
    flex:1 1 auto;
    min-width:0;
    max-width:100%;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    word-break:keep-all;
    font-size:13px;
    letter-spacing:-.04em;
  }

  .mobile-player-meta{
    flex:0 0 auto;
    gap:5px;
    font-size:11px;
    white-space:nowrap;
  }

  .mobile-vs-mark{
    min-width:34px;
    height:20px;
    font-size:10px;
    box-shadow:0 4px 10px rgba(23,32,51,.12);
  }

  .match-type-badge{
    max-width:76px;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
}

@media (max-width:420px){
  .court-filter-controls,
  .cm-match-type-filter,
  .result-match-type-filter{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .cm-filter-status-row{
    grid-template-columns:1fr;
  }

  .cm-filter-reset-btn{
    width:100%;
  }

  .mobile-match-card-head{
    gap:7px;
  }

  .mobile-match-card-head .match-type-badge{
    flex:0 0 auto;
  }
}


/* d0.4.7.3: mobile "my games only" foundation */
.mobile-my-game-panel{
  display:none;
}
.mobile-my-game-head strong{
  display:block;
  color:#123022;
  font-size:14px;
  font-weight:1000;
  letter-spacing:-.03em;
}
.mobile-my-game-head p{
  margin:4px 0 0;
  color:#667085;
  font-size:12px;
  font-weight:800;
  line-height:1.45;
  word-break:keep-all;
}
.mobile-my-game-controls{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto auto;
  gap:7px;
  align-items:center;
}
.mobile-my-game-controls select,
.mobile-my-game-controls button{
  height:36px;
  border-radius:12px;
  font-size:12px;
  font-weight:1000;
  letter-spacing:-.03em;
}
.mobile-my-game-controls select{
  min-width:0;
  width:100%;
  padding:0 10px;
  border:1px solid #d8e8da;
  background:#fff;
  color:#172033;
}
.mobile-my-game-controls button{
  border:1px solid #cfe5d2;
  background:#fffdf8;
  color:#0f6b36;
  padding:0 10px;
  cursor:pointer;
  box-shadow:none;
}
.mobile-my-game-controls button.active,
.mobile-my-game-controls button:not(:disabled):hover{
  background:var(--cm-green);
  border-color:var(--cm-green);
  color:#fff;
}
.mobile-my-game-controls button:disabled{
  opacity:.45;
  cursor:not-allowed;
}
@media(max-width:760px){
  .mobile-my-game-panel{
    display:grid;
    gap:9px;
    margin:0 0 10px;
    padding:12px;
    border:1px solid rgba(15,107,54,.13);
    border-radius:16px;
    background:linear-gradient(135deg,#f7fff8,#fffdf8);
  }
}
@media(max-width:420px){
  .mobile-my-game-controls{
    grid-template-columns:1fr 1fr;
  }
  .mobile-my-game-controls select{
    grid-column:1 / -1;
  }
  .mobile-my-game-controls button{
    width:100%;
    padding:0 8px;
  }
}

/* d0.4.8: participant mobile my-game view + QR share preparation */
.participant-view .panel{
  overflow:hidden;
}
.participant-hero-panel{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  background:linear-gradient(135deg,#f7fff8,#fff8eb);
  border-color:rgba(15,107,54,.13);
}
.participant-kicker{
  display:inline-flex;
  margin-bottom:8px;
  padding:6px 10px;
  border-radius:999px;
  background:#e8f8ed;
  color:#0f6b36;
  font-size:12px;
  font-weight:1000;
}
.participant-hero-copy h3{
  margin:0 0 6px;
  font-size:24px;
  color:#123022;
}
.participant-hero-copy p{
  margin:0;
  color:#667085;
  font-size:14px;
  line-height:1.55;
  word-break:keep-all;
}
.participant-layout{
  display:grid;
  grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);
  gap:18px;
}
.participant-select-controls{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto auto;
  gap:10px;
  align-items:center;
}
.participant-summary-card{
  margin-top:12px;
  padding:14px;
  border-radius:16px;
  border:1px solid #dcefe4;
  background:#fbfff8;
  color:#44546a;
  font-weight:900;
  line-height:1.5;
}
.participant-summary-card strong{
  color:#0f6b36;
  font-size:18px;
}
.participant-share-url-row{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto auto;
  gap:10px;
  align-items:center;
}
.participant-share-url-row input{
  font-size:13px;
  color:#344054;
  background:#fffdf8;
}
.participant-qr-ready-box{
  margin-top:12px;
  min-height:96px;
  border:1px dashed rgba(15,107,54,.28);
  border-radius:18px;
  background:repeating-linear-gradient(45deg,#f7fff8,#f7fff8 8px,#fffdf8 8px,#fffdf8 16px);
  display:grid;
  place-items:center;
  text-align:center;
  padding:16px;
  color:#4b5b6b;
}
.participant-qr-ready-box strong{
  display:block;
  color:#0f6b36;
  font-size:15px;
  font-weight:1000;
}
.participant-qr-ready-box span{
  display:block;
  margin-top:6px;
  font-size:12px;
  font-weight:800;
  line-height:1.45;
}
.participant-snapshot-info{
  display:block;
  margin-top:8px;
  font-size:11px;
  font-style:normal;
  font-weight:900;
  color:#0f6b36;
  line-height:1.45;
  word-break:keep-all;
}
.participant-next-game-box{
  margin-bottom:12px;
  padding:14px;
  border:1px solid #e5eddf;
  border-radius:16px;
  background:#fffdf8;
  color:#596579;
  font-weight:900;
}
.participant-next-title{
  display:flex;
  justify-content:space-between;
  gap:10px;
  align-items:center;
  margin-bottom:8px;
}
.participant-next-title span{
  color:#667085;
  font-size:12px;
  font-weight:1000;
}
.participant-next-title b{
  color:#0f6b36;
  font-size:20px;
}
.participant-next-meta{
  display:flex;
  flex-wrap:wrap;
  gap:7px;
  align-items:center;
  margin-bottom:10px;
}
.participant-next-meta > span:not(.match-type-badge){
  padding:6px 9px;
  border-radius:999px;
  background:#f0f7f1;
  color:#344054;
  font-size:12px;
  font-weight:1000;
}
.participant-go-match-btn{
  width:100%;
  min-height:36px;
  padding:9px 12px;
  font-size:13px;
}
.participant-card-list{
  display:grid !important;
  gap:10px;
}
.participant-card-list .mobile-match-card{
  box-shadow:0 8px 22px rgba(15,107,54,.075);
}
@media(max-width:900px){
  .participant-layout{
    grid-template-columns:1fr;
  }
}
@media(max-width:760px){
  .participant-hero-panel{
    display:grid;
    gap:12px;
    border-radius:18px;
  }
  .participant-hero-copy h3{
    font-size:22px;
  }
  .participant-select-controls,
  .participant-share-url-row{
    grid-template-columns:1fr;
  }
  .participant-select-controls button,
  .participant-share-url-row button{
    width:100%;
  }
  .participant-summary-card,
  .participant-next-game-box{
    padding:12px;
    border-radius:14px;
  }
  .participant-card-list{
    gap:9px;
  }
}

/* d0.5.0 QR 이미지 생성 및 공유 안정성 점검 */
.participant-share-url-row{
  grid-template-columns:minmax(260px,1fr) auto auto auto auto;
}
.participant-share-url-row button:disabled{
  opacity:.55;
  cursor:not-allowed;
}
.participant-qr-ready-box{
  grid-template-columns:1fr;
  gap:8px;
  min-height:300px;
  background:linear-gradient(135deg,#f7fff8 0%,#fffdf8 55%,#f5fbff 100%);
}
.participant-qr-canvas-wrap{
  width:min(100%, 360px);
  min-height:260px;
  height:auto;
  border-radius:18px;
  background:#fff;
  border:1px solid rgba(15,107,54,.18);
  box-shadow:0 12px 26px rgba(15,107,54,.10);
  display:flex;
  align-items:center;
  justify-content:center;
  padding:12px;
  box-sizing:border-box;
}
.participant-qr-canvas-wrap canvas{
  width:min(100%, 328px);
  height:auto;
  aspect-ratio:1 / 1;
  display:block;
  image-rendering:pixelated;
}
.participant-qr-placeholder{
  width:100%;
  height:100%;
  border-radius:12px;
  border:1px dashed rgba(15,107,54,.25);
  display:flex;
  align-items:center;
  justify-content:center;
  color:#0f6b36;
  font-weight:1000;
  letter-spacing:.08em;
  background:repeating-linear-gradient(45deg,#f7fff8,#f7fff8 8px,#fff 8px,#fff 16px);
}
.participant-qr-stability{
  display:block;
  margin-top:2px;
  font-size:12px;
  font-style:normal;
  font-weight:900;
  line-height:1.45;
  color:#344054;
}
.participant-qr-stability.stable{ color:#0f6b36; }
.participant-qr-stability.caution{ color:#a15c00; }
.participant-qr-stability.risky{ color:#b42318; }
.participant-qr-ready-box.qr-ready{
  border-style:solid;
  border-color:rgba(15,107,54,.32);
}
.participant-qr-ready-box.qr-risky{
  border-color:rgba(180,35,24,.32);
  background:linear-gradient(135deg,#fff8f6 0%,#fffdf8 60%,#fff 100%);
}
@media(max-width:960px){
  .participant-share-url-row{
    grid-template-columns:minmax(0,1fr) 1fr 1fr;
  }
  .participant-share-url-row input{
    grid-column:1 / -1;
  }
}
@media(max-width:760px){
  .participant-share-url-row{
    grid-template-columns:1fr 1fr;
  }
  .participant-share-url-row input{
    grid-column:1 / -1;
  }
  .participant-share-url-row button{
    width:100%;
  }
  .participant-qr-ready-box{
    min-height:280px;
    padding:14px;
  }
  .participant-qr-canvas-wrap{
    width:min(100%, 328px);
    min-height:240px;
  }
  .participant-qr-canvas-wrap canvas{
    width:min(100%, 300px);
    height:auto;
  }
}


/* d0.5.2 QR 접속 주소 안정화 */
.participant-public-base-row {
  display: grid;
  grid-template-columns: auto minmax(220px, 1fr) auto;
  align-items: center;
  gap: 10px;
  margin-bottom: 10px;
  padding: 10px;
  border: 1px solid rgba(13, 128, 76, 0.16);
  border-radius: 14px;
  background: rgba(255, 253, 248, 0.72);
}

.participant-public-base-row label {
  font-size: 13px;
  font-weight: 900;
  color: #2f4b3d;
  white-space: nowrap;
}

.participant-public-base-row input {
  min-width: 0;
  width: 100%;
  height: 38px;
  border: 1px solid rgba(11, 107, 66, 0.2);
  border-radius: 10px;
  padding: 0 10px;
  font-size: 13px;
  font-weight: 700;
  color: #28362f;
  background: #fff;
  box-sizing: border-box;
}

.participant-public-base-status {
  grid-column: 1 / -1;
  font-style: normal;
  font-size: 12px;
  font-weight: 800;
  line-height: 1.45;
  color: #627065;
}

.participant-public-base-status.warn {
  color: #9a5a10;
}

.participant-public-base-status.ok {
  color: #087443;
}

@media (max-width: 760px) {
  .participant-public-base-row {
    grid-template-columns: 1fr;
    gap: 8px;
  }

  .participant-public-base-row label,
  .participant-public-base-row button,
  .participant-public-base-row input {
    width: 100%;
  }
}


/* d0.5.3 참가자용 내 경기 화면 정리 */
.hidden{display:none !important;}
.participant-public-notice{
  margin-top:12px;
  padding:12px 14px;
  border-radius:16px;
  border:1px solid rgba(15,107,54,.18);
  background:linear-gradient(135deg,#eafff0,#f7fff8);
  color:#254b36;
  display:grid;
  gap:4px;
  box-shadow:0 8px 18px rgba(15,107,54,.08);
}
.participant-public-notice strong{
  color:#0f6b36;
  font-weight:1000;
  font-size:14px;
}
.participant-public-notice span{
  color:#3d5a49;
  font-size:13px;
  font-weight:800;
  line-height:1.45;
}
.participant-next-game-box.participant-next-highlight{
  border-color:rgba(15,107,54,.28);
  background:linear-gradient(135deg,#f2fff6,#fffdf8);
  box-shadow:0 12px 28px rgba(15,107,54,.10);
}
.participant-next-guide{
  margin:6px 0 10px;
  color:#536575;
  font-size:12px;
  font-weight:800;
  line-height:1.45;
}
.participant-card-list .mobile-match-card.participant-next-card{
  border-color:rgba(15,107,54,.42);
  box-shadow:0 14px 32px rgba(15,107,54,.14);
  position:relative;
}
.participant-card-list .mobile-match-card.participant-next-card:before{
  content:'다음 경기';
  position:absolute;
  right:12px;
  top:-10px;
  padding:5px 9px;
  border-radius:999px;
  background:#0f6b36;
  color:#fff;
  font-size:11px;
  font-weight:1000;
  box-shadow:0 8px 18px rgba(15,107,54,.22);
}
body.participant-public-mode{
  background:linear-gradient(135deg,#f4fff7,#f8fbff 55%,#fffdf8);
}
body.participant-public-mode .sidebar,
body.participant-public-mode .topbar,
body.participant-public-mode .participant-admin-only,
body.participant-public-mode .participant-admin-config,
body.participant-public-mode .auth-modal{
  display:none !important;
}
body.participant-public-mode .app-shell{
  display:block;
  min-height:100vh;
}
body.participant-public-mode .main{
  padding:18px;
  overflow:visible;
  max-width:760px;
  margin:0 auto;
}
body.participant-public-mode .view{display:none !important;}
body.participant-public-mode #participantView.view{display:block !important;}
body.participant-public-mode .participant-hero-panel,
body.participant-public-mode .participant-next-panel{
  box-shadow:0 16px 38px rgba(15,107,54,.12);
  border-radius:22px;
}
body.participant-public-mode .participant-hero-panel{
  padding:20px;
}
body.participant-public-mode .participant-hero-copy h3{
  font-size:26px;
}
body.participant-public-mode .participant-layout{
  display:block;
}
body.participant-public-mode .participant-next-panel{
  margin-top:0;
}
body.participant-public-mode .participant-summary-card{
  background:#fff;
  border-color:rgba(15,107,54,.18);
}
@media(max-width:760px){
  body.participant-public-mode .main{padding:12px;}
  body.participant-public-mode .participant-hero-panel,
  body.participant-public-mode .participant-next-panel{border-radius:18px;}
  body.participant-public-mode .participant-hero-copy h3{font-size:24px;}
  .participant-public-notice{padding:11px 12px;border-radius:14px;}
}


/* d0.5.4 대시보드 모임 정보 게시판 */
.cm-meeting-info-card{
  padding:17px;
  margin-bottom:14px;
  overflow:hidden;
}
.cm-meeting-info-head{
  align-items:flex-start;
}
.cm-meeting-info-head p{
  margin:5px 0 0;
  color:#657386;
  font-size:12px;
  font-weight:700;
  line-height:1.45;
}
.cm-meeting-info-status{
  flex:0 0 auto;
  border-radius:999px;
  background:#eef8f1;
  color:var(--cm-green);
  padding:7px 10px;
  font-size:11px;
  font-weight:900;
  white-space:nowrap;
}
.cm-meeting-info-body{
  display:grid;
  gap:12px;
}
.cm-meeting-info-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
}
.cm-meeting-info-grid article{
  border:1px solid #eee4d4;
  border-radius:15px;
  background:#fff;
  padding:13px 14px;
  min-width:0;
  box-shadow:0 8px 18px rgba(27,46,35,.035);
}
.cm-meeting-info-grid article span,
.cm-meeting-info-memo span{
  display:block;
  color:#657386;
  font-size:12px;
  font-weight:900;
  margin-bottom:8px;
}
.cm-meeting-info-grid article strong{
  display:block;
  color:#172332;
  font-size:14px;
  font-weight:900;
  line-height:1.35;
  word-break:break-word;
}
.cm-meeting-info-grid article strong em{
  color:var(--cm-green);
  font-size:24px;
  font-style:normal;
  letter-spacing:-.04em;
}
.cm-meeting-info-grid article small{
  display:block;
  margin-top:7px;
  color:#7a8797;
  font-size:11px;
  font-weight:800;
}
.cm-empty-value{
  color:#9aa4b2;
  font-weight:800;
}
.cm-meeting-info-memo{
  border:1px solid #e7f0e7;
  border-radius:15px;
  background:linear-gradient(180deg,#fbfff9,#fffefa);
  padding:13px 14px;
}
.cm-meeting-info-memo p{
  margin:0;
  color:#334155;
  font-size:13px;
  font-weight:750;
  line-height:1.55;
  word-break:break-word;
}
.cm-meeting-info-editor{
  border:1px dashed #cce3d1;
  border-radius:15px;
  background:#fbfff9;
  padding:0;
}
.cm-meeting-info-editor summary{
  cursor:pointer;
  list-style:none;
  padding:13px 14px;
  color:var(--cm-green);
  font-size:13px;
  font-weight:950;
}
.cm-meeting-info-editor summary::-webkit-details-marker{display:none}
.cm-meeting-info-editor summary:after{
  content:"＋";
  float:right;
  color:#79a788;
}
.cm-meeting-info-editor[open] summary:after{content:"－"}
.cm-meeting-info-form{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
  padding:0 14px 14px;
}
.cm-meeting-info-form label{
  display:grid;
  gap:6px;
  color:#334155;
  font-size:12px;
  font-weight:900;
}
.cm-meeting-info-form input,
.cm-meeting-info-form textarea{
  width:100%;
  border:1px solid #e3ddcf;
  border-radius:12px;
  background:#fff;
  padding:11px 12px;
  color:#172332;
  font-size:13px;
  font-weight:750;
  outline:none;
  box-sizing:border-box;
}
.cm-meeting-info-form input:focus,
.cm-meeting-info-form textarea:focus{
  border-color:#72bf8b;
  box-shadow:0 0 0 3px rgba(7,130,71,.1);
}
.cm-meeting-info-full{
  grid-column:1/-1;
}
.cm-meeting-info-actions{
  grid-column:1/-1;
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
  flex-wrap:wrap;
  margin-top:2px;
}
.cm-meeting-info-actions button{
  min-height:38px;
}
.cm-meeting-info-note{
  margin:0;
  color:#7b6236;
  background:#fff8e8;
  border:1px solid #f0dfbd;
  border-radius:13px;
  padding:10px 12px;
  font-size:12px;
  font-weight:800;
  line-height:1.45;
}
@media(max-width:980px){
  .cm-meeting-info-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:640px){
  .cm-meeting-info-card{padding:14px;margin-bottom:12px;}
  .cm-meeting-info-head{display:grid;gap:8px;}
  .cm-meeting-info-status{justify-self:start;}
  .cm-meeting-info-grid{grid-template-columns:1fr;gap:8px;}
  .cm-meeting-info-form{grid-template-columns:1fr;padding:0 12px 12px;}
  .cm-meeting-info-actions{justify-content:stretch;}
  .cm-meeting-info-actions button{width:100%;}
}

/* d0.5.5 대진표 인쇄/PDF 저장 안정화 */
.print-export-sheet{
  display:none;
}
@media print{
  @page{size:A4 landscape;margin:10mm;}
  body.cm-printing{
    background:#fff !important;
    color:#111 !important;
  }
  body.cm-printing .app-shell,
  body.cm-printing .auth-modal,
  body.cm-printing .toast,
  body.cm-printing .app-footer{
    display:none !important;
  }
  body.cm-printing .print-export-sheet{
    display:block !important;
    width:100% !important;
    max-width:none !important;
    margin:0 !important;
    padding:0 !important;
    background:#fff !important;
    color:#111 !important;
    font-family:Arial, 'Noto Sans KR', sans-serif !important;
  }
  .print-document{
    display:block;
    width:100%;
    color:#111;
  }
  .print-header{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:16px;
    padding:0 0 8px;
    margin:0 0 8px;
    border-bottom:2px solid #111;
    page-break-after:avoid;
  }
  .print-eyebrow{
    margin:0 0 3px;
    font-size:9px;
    letter-spacing:.08em;
    color:#555;
    font-weight:700;
  }
  .print-header h1{
    margin:0;
    font-size:20px;
    line-height:1.2;
    color:#111;
  }
  .print-created{
    text-align:right;
    font-size:10px;
    line-height:1.35;
    color:#444;
    white-space:nowrap;
  }
  .print-meeting-info,
  .print-match-section{
    page-break-inside:avoid;
    margin:0 0 10px;
  }
  .print-match-section{
    page-break-inside:auto;
  }
  .print-meeting-info h2,
  .print-match-section h2{
    margin:0 0 6px;
    font-size:13px;
    color:#111;
  }
  .print-info-grid{
    display:grid;
    grid-template-columns:repeat(5,minmax(0,1fr));
    gap:4px;
    margin:0 0 5px;
  }
  .print-info-item{
    border:1px solid #999;
    padding:5px 6px;
    min-height:33px;
    background:#fff;
    page-break-inside:avoid;
  }
  .print-info-item span,
  .print-info-memo span{
    display:block;
    font-size:8px;
    color:#555;
    font-weight:700;
    margin-bottom:2px;
  }
  .print-info-item strong{
    display:block;
    font-size:10px;
    line-height:1.25;
    color:#111;
    word-break:break-word;
  }
  .print-info-memo{
    border:1px solid #999;
    padding:5px 6px;
    background:#fff;
    page-break-inside:avoid;
  }
  .print-info-memo p{
    margin:0;
    font-size:10px;
    line-height:1.35;
    color:#111;
    word-break:break-word;
  }
  .print-match-table{
    width:100%;
    border-collapse:collapse;
    table-layout:fixed;
    font-size:9px;
    color:#111;
  }
  .print-match-table thead{
    display:table-header-group;
  }
  .print-match-table tr{
    page-break-inside:avoid;
  }
  .print-match-table th,
  .print-match-table td{
    border:1px solid #777;
    padding:4px 5px;
    vertical-align:middle;
    word-break:keep-all;
    overflow-wrap:anywhere;
    background:#fff;
  }
  .print-match-table th{
    background:#eee !important;
    font-size:9px;
    font-weight:800;
    text-align:center;
  }
  .print-match-table th:nth-child(1),
  .print-match-table td:nth-child(1){width:6%;text-align:center;}
  .print-match-table th:nth-child(2),
  .print-match-table td:nth-child(2){width:9%;text-align:center;}
  .print-match-table th:nth-child(3),
  .print-match-table td:nth-child(3){width:8%;text-align:center;}
  .print-match-table th:nth-child(4),
  .print-match-table td:nth-child(4){width:8%;text-align:center;}
  .print-match-table th:nth-child(5),
  .print-match-table td:nth-child(5){width:27%;}
  .print-match-table th:nth-child(6),
  .print-match-table td:nth-child(6){width:7%;text-align:center;}
  .print-match-table th:nth-child(7),
  .print-match-table td:nth-child(7){width:27%;}
  .print-score-cell{
    color:#666;
    min-height:18px;
  }
  .print-empty{
    border:1px solid #999;
    padding:12px;
    text-align:center;
    font-size:12px;
  }
  .print-footer{
    margin-top:7px;
    padding-top:5px;
    border-top:1px solid #999;
    text-align:right;
    font-size:8px;
    color:#555;
  }
}

/* d0.5.6 점수 입력 / 경기 결과 저장 */
.score-cell{min-width:76px;background:#fffdf7}.score-input{width:66px;min-width:62px;padding:8px 6px;text-align:center;font-weight:900;border-radius:10px;border:1px solid #d7e3ef;background:#fff}.score-input:focus{border-color:#0f6b36;box-shadow:0 0 0 3px rgba(15,107,54,.14)}.match-result-cell{min-width:88px;background:#fbfcff}.match-result-badge{display:inline-flex;align-items:center;justify-content:center;min-width:62px;padding:6px 9px;border-radius:999px;font-size:12px;font-weight:900;line-height:1;border:1px solid #dde6f2;background:#f3f6fb;color:#697386}.match-result-badge.result-teamA{background:#e9f3ff;border-color:#b9d8ff;color:#0d4f9c}.match-result-badge.result-teamB{background:#fff0f4;border-color:#ffc8d8;color:#b01643}.match-result-badge.result-draw{background:#fff7dc;border-color:#f5d874;color:#8a6500}.match-result-badge.result-pending{background:#fff8ef;border-color:#f2c68b;color:#8b4f00}.match-score-text{font-weight:900;color:#697386}.match-score-text.result-teamA{color:#0d4f9c}.match-score-text.result-teamB{color:#b01643}.match-score-text.result-draw{color:#8a6500}.cm-preview-score{min-width:86px;line-height:1.4}.cm-preview-score .match-result-badge{margin-top:4px}.mobile-match-score-summary{margin:8px 0 10px;padding:8px 10px;border-radius:14px;background:#f6f9fd;border:1px solid #dde8f3;display:flex;align-items:center;justify-content:space-between;gap:8px}.mobile-score-empty{font-size:12px;font-weight:800;color:#8a96a8}.mobile-score-text{font-size:15px;font-weight:950;color:#172033}.mobile-score-text.teamA{color:#0d4f9c}.mobile-score-text.teamB{color:#b01643}.mobile-score-result{display:inline-flex;align-items:center}.print-score-cell{font-weight:900;white-space:nowrap}@media (max-width:760px){.mobile-match-score-summary{margin:6px 0 8px}.mobile-match-score-summary .match-result-badge{min-width:auto;padding:5px 8px}.score-input{width:60px}}


/* d0.5.6.1 회원목록 현재 표시 회원 참석 일괄 선택/해제 */
.member-bulk-actions{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
}
.member-bulk-btn{
  min-height:38px;
  padding:9px 12px;
  border-radius:13px;
  font-size:13px;
  white-space:nowrap;
}
.member-bulk-btn:disabled{
  opacity:.45;
  cursor:not-allowed;
  transform:none !important;
}
.member-bulk-btn:first-child{
  background:#EAF7EF;
  color:#0F7A45;
  border:1px solid rgba(15,122,69,.18);
}
.member-bulk-btn:nth-child(2){
  background:#F3F6FA;
  color:#43566A;
  border:1px solid rgba(67,86,106,.14);
}
@media(max-width:760px){
  .enhanced-member-tools{
    align-items:stretch;
  }
  .member-bulk-actions{
    display:grid;
    grid-template-columns:1fr 1fr;
    width:100%;
  }
  .member-bulk-btn{
    width:100%;
    min-height:42px;
    padding:10px 8px;
    font-size:12px;
  }
}

/* d0.5.6.2 회원목록 필터 및 정렬 */
.member-filter-panel{width:100%;display:grid;gap:10px}.member-filter-grid{display:grid;grid-template-columns:repeat(6,minmax(110px,1fr));gap:8px;width:100%;align-items:end}.member-filter-field{display:grid;gap:5px;margin:0;color:#43566A;font-size:11px;font-weight:900;letter-spacing:-.01em}.member-filter-field select{height:38px;min-height:38px;padding:7px 10px;border-radius:13px;font-size:13px;font-weight:800;background:#fff}.member-filter-reset-btn{min-height:38px;padding:9px 12px;border-radius:13px;font-size:13px;white-space:nowrap;background:#FFF7E8;color:#8B5B00;border:1px solid rgba(210,154,31,.24)}.member-filter-reset-btn:disabled{opacity:.45;cursor:not-allowed;transform:none!important}.member-filter-status-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.member-filter-status-row .search-count-pill{margin-right:auto}@media(max-width:1120px){.member-filter-grid{grid-template-columns:repeat(3,minmax(120px,1fr))}.member-filter-status-row{justify-content:flex-start}.member-filter-status-row .search-count-pill{margin-right:0}}@media(max-width:760px){.member-filter-grid{grid-template-columns:1fr 1fr}.member-filter-reset-btn{width:100%;min-height:42px}.member-filter-status-row{display:grid;grid-template-columns:1fr;width:100%}.member-filter-status-row .search-count-pill{width:100%}}


/* d0.5.6.3 회원목록 정렬 UX 보정 */
.member-filter-help{margin:0;color:#708197;font-size:12px;font-weight:700;line-height:1.45;background:#F8FBFF;border:1px solid rgba(80,122,170,.12);border-radius:12px;padding:8px 10px}.member-sort-head{width:100%;border:0;background:transparent;color:inherit;font:inherit;font-weight:900;display:inline-flex;align-items:center;justify-content:center;gap:4px;cursor:pointer;padding:2px 0;border-radius:8px}.member-sort-head:hover{background:rgba(14,129,73,.08);color:#087A45}.member-sort-head.active{color:#087A45;background:rgba(14,129,73,.10)}.member-sort-indicator{display:inline-flex;align-items:center;justify-content:center;min-width:12px;font-size:12px;font-weight:1000;line-height:1}.member-table-wrap th{vertical-align:middle}
@media(max-width:760px){.member-filter-help{font-size:11px;padding:8px}.member-sort-head{justify-content:flex-start}.member-table-wrap th .member-sort-head{justify-content:center}}

/* d0.5.7 급수·성별 기반 대진점수 밸런스 표시 */
.balance-badge{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-width:118px;padding:7px 10px;border-radius:999px;font-size:12px;font-weight:950;line-height:1.15;border:1px solid #dbe6f2;background:#f5f8fc;color:#536274;white-space:nowrap}
.balance-badge.compact{min-width:auto;padding:6px 8px;font-size:11px}
.balance-badge.balance-balanced{background:#ecfdf3;border-color:#b8ebca;color:#08733a}
.balance-badge.balance-caution{background:#fff8e8;border-color:#f1d28a;color:#8a5b00}
.balance-badge.balance-unbalanced{background:#fff0f0;border-color:#ffc6c6;color:#b42318}
.match-balance-cell,.cm-preview-balance{min-width:138px;background:#fbfdff}
.match-balance-summary{margin:0 0 10px;padding:9px 10px;border-radius:14px;display:grid;grid-template-columns:auto 1fr auto auto auto;gap:6px;align-items:center;font-size:12px;border:1px solid #dbe6f2;background:#f7f9fc;color:#536274}
.match-balance-summary .balance-label{font-weight:900;color:#7a8797}
.match-balance-summary strong{font-size:13px;font-weight:950;text-align:center}
.match-balance-summary.balance-balanced{background:#eefbf3;border-color:#bfead0;color:#08733a}
.match-balance-summary.balance-caution{background:#fff8e9;border-color:#ecd08d;color:#8a5b00}
.match-balance-summary.balance-unbalanced{background:#fff0f0;border-color:#ffc6c6;color:#b42318}
.print-balance-cell{font-size:10px;font-weight:800;line-height:1.35;white-space:normal!important;color:#172033}
@media (max-width:760px){.match-balance-summary{grid-template-columns:auto 1fr;gap:5px 8px}.match-balance-summary span:nth-child(n+3){font-size:11px}.balance-badge{min-width:auto;font-size:11px}}
@media print{
  .print-match-table th:nth-child(1),.print-match-table td:nth-child(1){width:5%;text-align:center;}
  .print-match-table th:nth-child(2),.print-match-table td:nth-child(2){width:8%;text-align:center;}
  .print-match-table th:nth-child(3),.print-match-table td:nth-child(3){width:7%;text-align:center;}
  .print-match-table th:nth-child(4),.print-match-table td:nth-child(4){width:7%;text-align:center;}
  .print-match-table th:nth-child(5),.print-match-table td:nth-child(5){width:24%;}
  .print-match-table th:nth-child(6),.print-match-table td:nth-child(6){width:8%;text-align:center;}
  .print-match-table th:nth-child(7),.print-match-table td:nth-child(7){width:24%;}
  .print-match-table th:nth-child(8),.print-match-table td:nth-child(8){width:17%;text-align:center;}
}


/* d0.5.7.1 상위·하위 혼합 우선 모드 보정 */
.mix-badge{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-width:118px;padding:7px 10px;border-radius:999px;font-size:12px;font-weight:950;line-height:1.15;border:1px solid #dbe6f2;background:#f6f8fb;color:#536274;white-space:nowrap}
.mix-badge.compact{min-width:auto;padding:6px 8px;font-size:11px}
.mix-badge.mix-excellent{background:#ecfdf3;border-color:#a9e6bf;color:#06703a}
.mix-badge.mix-good{background:#eef8ff;border-color:#b7daf8;color:#155b9a}
.mix-badge.mix-match{background:#fff8e8;border-color:#efd18b;color:#875900}
.mix-badge.mix-none{background:#f4f5f7;border-color:#d8dde5;color:#657386}
.match-mix-cell,.cm-preview-mix{min-width:138px;background:#fcfdfb}
.match-mix-summary{margin:0 0 10px;padding:9px 10px;border-radius:14px;display:grid;grid-template-columns:auto 1fr auto auto auto;gap:6px;align-items:center;font-size:12px;border:1px solid #dbe6f2;background:#f7f9fc;color:#536274}
.match-mix-summary .mix-label{font-weight:900;color:#7a8797}
.match-mix-summary strong{font-size:13px;font-weight:950;text-align:center}
.match-mix-summary.mix-excellent{background:#eefbf3;border-color:#bde8cb;color:#06703a}
.match-mix-summary.mix-good{background:#eef8ff;border-color:#b7daf8;color:#155b9a}
.match-mix-summary.mix-match{background:#fff8e9;border-color:#ecd08d;color:#8a5b00}
.match-mix-summary.mix-none{background:#f4f6f8;border-color:#d8dde5;color:#657386}
.print-mix-cell{font-size:10px;font-weight:800;line-height:1.35;white-space:normal!important;color:#172033}
@media (max-width:760px){.match-mix-summary{grid-template-columns:auto 1fr;gap:5px 8px}.match-mix-summary span:nth-child(n+3){font-size:11px}.mix-badge{min-width:auto;font-size:11px}}

/* d0.5.7.2 result table two-line compact layout + attendance save flow */
.result-match-table-wrap{overflow-x:auto;max-width:100%;}
.match-table{min-width:1180px;table-layout:fixed;}
.match-table th:nth-child(1),.match-table td:nth-child(1){width:58px;}
.match-table th:nth-child(2),.match-table td:nth-child(2){width:76px;}
.match-table th:nth-child(3),.match-table td:nth-child(3){width:120px;}
.match-table th:nth-child(4),.match-table td:nth-child(4){width:110px;}
.match-table th:nth-child(5),.match-table td:nth-child(5){width:250px;}
.match-table th:nth-child(6),.match-table td:nth-child(6){width:48px;}
.match-table th:nth-child(7),.match-table td:nth-child(7){width:250px;}
.match-table th:nth-child(8),.match-table td:nth-child(8){width:102px;}
.match-table th:nth-child(9),.match-table td:nth-child(9){width:92px;}
.match-table th:nth-child(10),.match-table td:nth-child(10){width:200px;}
.match-compact-row td{vertical-align:middle;white-space:normal;}
.match-no-cell,.match-court-cell,.match-time-cell,.match-type-cell,.match-vs-cell{text-align:center;white-space:nowrap!important;}
.match-row-jump-btn{padding:4px 8px;border-radius:10px;background:#f3f8ff;color:#173047;min-width:36px;}
.match-row-jump-btn:hover{background:#e7f1ff;transform:translateY(-1px);}
.match-team-cell{padding:8px 10px!important;}
.compact-team-stack{display:grid;gap:6px;min-width:0;}
.compact-player-line{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:6px 8px;border-radius:12px;background:rgba(255,255,255,.64);min-width:0;}
.compact-player-line.empty{color:#8a96a8;display:block;text-align:center;}
.compact-player-name{min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;padding:0;background:transparent;color:#172033;border-radius:8px;}
.compact-player-name:hover{color:#087a45;text-decoration:underline;transform:none;}
.compact-player-meta{display:inline-flex;align-items:center;gap:8px;white-space:nowrap;font-weight:900;}
.score-stack{display:grid;gap:6px;justify-items:center;}
.score-stack label{display:flex;align-items:center;justify-content:center;gap:6px;margin:0;font-size:12px;font-weight:900;color:#607086;}
.score-stack .score-input{width:58px;height:34px;padding:6px;text-align:center;}
.analysis-stack{display:grid;gap:6px;min-width:0;}
.analysis-stack .match-balance-summary,.analysis-stack .mix-summary{margin:0;}
.member-attendance-save-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.member-save-attendance-btn{min-height:40px;padding:10px 13px;font-size:13px;white-space:nowrap;}
@media(max-width:760px){
  .match-table{min-width:980px;}
  .match-table th:nth-child(5),.match-table td:nth-child(5),.match-table th:nth-child(7),.match-table td:nth-child(7){width:220px;}
  .match-table th:nth-child(10),.match-table td:nth-child(10){width:180px;}
  .compact-player-line{grid-template-columns:1fr;gap:3px;align-items:start;}
  .compact-player-meta{font-size:12px;}
  .member-attendance-save-actions{display:grid;grid-template-columns:1fr;width:100%;}
  .member-save-attendance-btn{width:100%;}
}


/* d0.5.7.3 개인별 출전 현황 경기성향 요약 */
.player-tendency-cell{
  min-width:160px;
}

.player-tendency-summary{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  align-items:center;
  gap:5px;
}

.player-tendency-summary.empty{
  color:#b7c2cf;
  font-weight:900;
}

.player-tendency-badge,
.chip-tendency{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:999px;
  border:1px solid transparent;
  font-weight:900;
  line-height:1;
  white-space:nowrap;
}

.player-tendency-badge{
  min-width:45px;
  padding:5px 7px;
  font-size:11px;
}

.chip-tendency{
  padding:3px 6px;
  font-size:10px;
}

.tendency-balanced,
.chip-tendency-balanced{
  color:#067347;
  background:#e9fbf1;
  border-color:#b7ebcf;
}

.tendency-strong,
.chip-tendency-strong{
  color:#0b5fa9;
  background:#eaf4ff;
  border-color:#b9dcff;
}

.tendency-weak,
.chip-tendency-weak{
  color:#9a5a00;
  background:#fff4dc;
  border-color:#f3d392;
}

.schedule-chip{
  flex-direction:column;
  gap:3px;
  min-width:108px;
  padding:6px 9px;
}

.schedule-chip .chip-main{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:4px;
}

.schedule-chip.schedule-balanced{
  border-color:rgba(19,162,97,.32);
}

.schedule-chip.schedule-strong{
  border-color:rgba(45,137,239,.30);
  background:linear-gradient(135deg, rgba(255,255,255,.96), rgba(234,244,255,.92));
}

.schedule-chip.schedule-weak{
  border-color:rgba(236,176,67,.42);
  background:linear-gradient(135deg, rgba(255,255,255,.96), rgba(255,246,226,.94));
}

@media (max-width: 760px){
  .player-schedule-table{
    min-width:1180px;
  }
  .player-tendency-summary{
    justify-content:flex-start;
  }
  .player-tendency-badge{
    font-size:10px;
    min-width:42px;
  }
}


/* d0.5.7.4 결과표/참석저장/성향 기준 보정 */
.result-match-table-wrap{overflow-x:auto;}
.match-table{min-width:1040px;table-layout:fixed;}
.match-table th:nth-child(1),.match-table td:nth-child(1){width:58px;}
.match-table th:nth-child(2),.match-table td:nth-child(2){width:76px;}
.match-table th:nth-child(3),.match-table td:nth-child(3){width:122px;}
.match-table th:nth-child(4),.match-table td:nth-child(4){width:112px;}
.match-table th:nth-child(5),.match-table td:nth-child(5){width:238px;}
.match-table th:nth-child(6),.match-table td:nth-child(6){width:48px;}
.match-table th:nth-child(7),.match-table td:nth-child(7){width:238px;}
.match-table th:nth-child(8),.match-table td:nth-child(8){width:96px;}
.match-table th:nth-child(9),.match-table td:nth-child(9){width:92px;}
.match-table th:nth-child(10),.match-table td:nth-child(10){width:218px;}
.match-table thead th{vertical-align:middle;text-align:center;}
.match-compact-row td{height:auto;vertical-align:middle;}
.match-team-cell{max-width:238px;overflow:hidden;}
.compact-team-stack{width:100%;}
.compact-player-line{min-height:34px;}
.analysis-stack{align-items:start;}
.analysis-stack .balance-badge,.analysis-stack .mix-badge{justify-content:flex-start;width:100%;min-width:0;white-space:normal;text-align:left;}
.member-filter-status-row{align-items:center;}
.member-attendance-save-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.member-save-attendance-btn{min-height:40px;padding:10px 14px;font-size:13px;white-space:nowrap;}
.player-tendency-summary{justify-content:flex-start;}
.player-tendency-badge{min-width:64px;}
@media(max-width:760px){
  .match-table{min-width:960px;}
  .match-table th:nth-child(5),.match-table td:nth-child(5),.match-table th:nth-child(7),.match-table td:nth-child(7){width:210px;}
  .match-table th:nth-child(10),.match-table td:nth-child(10){width:190px;}
  .member-filter-status-row{display:grid;grid-template-columns:1fr;gap:8px;}
  .member-bulk-actions,.member-attendance-save-actions{display:grid;grid-template-columns:1fr;gap:8px;width:100%;}
  .member-bulk-btn,.member-save-attendance-btn,#clearMembersBtn{width:100%;}
  .player-tendency-summary{justify-content:center;}
}

/* d0.5.7.8 회원 출생연도/연령대 관리 */
.age-preview {
  margin-top: -8px;
  margin-bottom: 8px;
  padding: 10px 12px;
  border-radius: 12px;
  background: #f3fff8;
  border: 1px solid #cdebd8;
  color: #147a48;
  font-size: 13px;
  font-weight: 700;
}
.birth-year-pill,
.age-group-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 52px;
  padding: 6px 10px;
  border-radius: 999px;
  border: 1px solid #cfeedd;
  background: #f7fffb;
  color: #176743;
  font-size: 13px;
  font-weight: 800;
  white-space: nowrap;
}
.age-group-pill {
  min-width: 72px;
  background: #fffdf4;
  border-color: #f1dfb9;
  color: #75520a;
}
.member-table-wrap .smart-table th,
.member-table-wrap .smart-table td {
  white-space: nowrap;
}
@media (max-width: 760px) {
  .age-preview { font-size: 12px; }
  .birth-year-pill,
  .age-group-pill {
    min-width: auto;
    padding: 5px 8px;
    font-size: 12px;
  }
}

/* d0.5.7.9 회원 출생연도/연령대 UI 및 모바일 가독성 안정화 */
.birth-year-pill.is-empty,
.age-group-pill.age-group-unknown{
  background:#f5f7fa;
  border-color:#d9e1eb;
  color:#6b788a;
}
.age-group-pill.age-group-teen,
.age-group-pill.age-group-20s,
.age-group-pill.age-group-30s{
  background:#eef7ff;
  border-color:#bfddff;
  color:#145b96;
}
.age-group-pill.age-group-40a,
.age-group-pill.age-group-40b{
  background:#f1fff7;
  border-color:#bdebd0;
  color:#087547;
}
.age-group-pill.age-group-50a,
.age-group-pill.age-group-50b{
  background:#fff9e9;
  border-color:#efd99b;
  color:#76520a;
}
.age-group-pill.age-group-60a,
.age-group-pill.age-group-60b,
.age-group-pill.age-group-70a,
.age-group-pill.age-group-70b,
.age-group-pill.age-group-80p{
  background:#fff1f4;
  border-color:#f2bdc9;
  color:#9a3150;
}
.member-list-row .mobile-attend-text{display:none;}
.member-table-wrap .smart-table td[data-label="출생연도"],
.member-table-wrap .smart-table td[data-label="연령대"]{text-align:center;}
.member-filter-grid{grid-template-columns:repeat(7,minmax(104px,1fr));}
.member-filter-grid .member-filter-reset-btn{align-self:end;}
@media(max-width:1240px){
  .member-filter-grid{grid-template-columns:repeat(4,minmax(130px,1fr));}
}
@media(max-width:900px){
  .member-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:760px){
  .member-filter-grid{grid-template-columns:1fr 1fr;gap:8px;}
  .member-filter-field select{width:100%;min-width:0;}
  .member-filter-reset-btn{grid-column:1 / -1;width:100%;}
  .member-table-wrap{overflow:visible;}
  .member-table-wrap .smart-table{display:block;min-width:0;width:100%;border-collapse:separate;border-spacing:0;}
  .member-table-wrap .smart-table thead{display:none;}
  .member-table-wrap .smart-table tbody{display:grid;gap:10px;width:100%;}
  .member-table-wrap .smart-table tr.member-list-row{display:grid;grid-template-columns:1fr 1fr;gap:8px 10px;padding:12px;border:1px solid rgba(14,129,73,.14);border-radius:18px;background:#fff;box-shadow:0 8px 22px rgba(18,32,52,.06);}
  .member-table-wrap .smart-table tr.member-list-row.duplicate-row{border-color:rgba(239,108,0,.25);background:#fffaf4;}
  .member-table-wrap .smart-table tr.member-list-row td{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0!important;border:0!important;min-height:28px;white-space:normal!important;text-align:right;}
  .member-table-wrap .smart-table tr.member-list-row td::before{content:attr(data-label);font-size:11px;font-weight:900;color:#758399;white-space:nowrap;}
  .member-table-wrap .smart-table tr.member-list-row td[data-label="성명"]{grid-column:1 / -1;padding-bottom:4px!important;border-bottom:1px dashed rgba(14,129,73,.16)!important;}
  .member-table-wrap .smart-table tr.member-list-row td[data-label="성명"]::before{font-size:12px;color:#0e8149;}
  .member-table-wrap .smart-table tr.member-list-row td[data-label="관리"]{grid-column:1 / -1;justify-content:flex-end;padding-top:6px!important;border-top:1px dashed rgba(14,129,73,.12)!important;}
  .member-table-wrap .smart-table tr.member-list-row td[data-label="관리"]::before{margin-right:auto;}
  .member-table-wrap .smart-table tr.member-list-row td[data-label="참석"]{justify-content:flex-start;}
  .member-table-wrap .smart-table tr.member-list-row td[data-label="참석"]::before{margin-right:auto;}
  .member-list-row .mobile-attend-text{display:inline-flex;margin-left:6px;font-size:12px;font-weight:900;color:#43566a;}
  .member-name-text{font-size:16px;line-height:1.25;word-break:keep-all;overflow-wrap:anywhere;}
  .birth-year-pill,.age-group-pill{font-size:12px;padding:5px 8px;max-width:100%;}
  .member-table-wrap .empty{display:block!important;padding:22px!important;text-align:center!important;}
}
@media(max-width:460px){
  .member-filter-grid{grid-template-columns:1fr;}
  .member-table-wrap .smart-table tr.member-list-row{grid-template-columns:1fr;}
  .member-table-wrap .smart-table tr.member-list-row td{justify-content:space-between;}
}


/* d0.5.8.0 대진 결과/모바일/출력 연령대 표시 안정화 */
.player-age-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:58px;
  padding:4px 8px;
  border-radius:999px;
  border:1px solid #d9e8f4;
  background:#f8fbff;
  color:#40536b;
  font-size:11px;
  font-weight:900;
  line-height:1;
  white-space:nowrap;
}
.player-age-badge.is-compact{
  min-width:auto;
  padding:3px 6px;
  font-size:10px;
}
.player-age-badge.age-group-unknown{background:#f5f7fa;border-color:#d9e1eb;color:#6b788a;}
.player-age-badge.age-group-teen,
.player-age-badge.age-group-20s,
.player-age-badge.age-group-30s{background:#eef7ff;border-color:#bfddff;color:#145b96;}
.player-age-badge.age-group-40a,
.player-age-badge.age-group-40b{background:#f1fff7;border-color:#bdebd0;color:#087547;}
.player-age-badge.age-group-50a,
.player-age-badge.age-group-50b{background:#fff9e9;border-color:#efd99b;color:#76520a;}
.player-age-badge.age-group-60a,
.player-age-badge.age-group-60b,
.player-age-badge.age-group-70a,
.player-age-badge.age-group-70b,
.player-age-badge.age-group-80p{background:#fff1f4;border-color:#f2bdc9;color:#9a3150;}
.compact-player-meta .player-age-badge{margin-left:0;}
.mobile-player-meta .player-age-badge{flex:0 0 auto;}
.cm-preview-player-btn{white-space:normal;line-height:1.35;}
@media(max-width:760px){
  .compact-player-meta{flex-wrap:wrap;gap:5px;}
  .mobile-player-meta{gap:5px;}
  .player-age-badge{font-size:10px;padding:3px 6px;}
}

/* d0.5.8.1 대진 결과/대시보드 연령대 표시 UI 안정화 핫픽스 */
.cm-preview-table-wrap,
.result-match-table-wrap{
  overflow-x:auto !important;
  overflow-y:hidden !important;
  -webkit-overflow-scrolling:touch;
}
.cm-preview-table{
  min-width:1120px !important;
  table-layout:fixed;
}
.cm-preview-table th:nth-child(1),.cm-preview-table td:nth-child(1){width:54px;}
.cm-preview-table th:nth-child(2),.cm-preview-table td:nth-child(2){width:96px;}
.cm-preview-table th:nth-child(3),.cm-preview-table td:nth-child(3){width:72px;}
.cm-preview-table th:nth-child(4),.cm-preview-table td:nth-child(4){width:96px;}
.cm-preview-table th:nth-child(5),.cm-preview-table td:nth-child(5),
.cm-preview-table th:nth-child(7),.cm-preview-table td:nth-child(7){width:210px;}
.cm-preview-table th:nth-child(6),.cm-preview-table td:nth-child(6){width:100px;}
.cm-preview-table th:nth-child(8),.cm-preview-table td:nth-child(8){width:155px;}
.cm-preview-table th:nth-child(9),.cm-preview-table td:nth-child(9){width:155px;}
.cm-preview-table td{height:auto;min-height:52px;vertical-align:middle;}
.cm-preview-team-stack{display:grid;gap:6px;width:100%;min-width:0;}
.cm-preview-player-btn.cm-preview-player-card{
  width:100%;
  max-width:none !important;
  min-height:44px;
  padding:6px 9px;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:6px;
  background:rgba(255,255,255,.56);
  border-radius:12px;
  overflow:hidden;
  text-align:left;
  white-space:normal !important;
}
.cm-preview-player-name{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-weight:950;
}
.cm-preview-player-meta{
  display:inline-flex;
  align-items:center;
  justify-content:flex-end;
  gap:5px;
  flex-wrap:wrap;
  min-width:0;
  white-space:nowrap;
}
.cm-preview-player-card .player-age-badge{font-size:10px;padding:3px 6px;}
.cm-preview-score{white-space:normal;min-width:0;}
.cm-preview-balance,.cm-preview-mix{white-space:normal;min-width:0 !important;}
.cm-preview-balance .balance-badge,.cm-preview-mix .mix-badge{
  width:100%;
  min-width:0;
  white-space:normal;
  text-align:left;
  justify-content:flex-start;
  line-height:1.25;
}
.match-table{
  min-width:1340px !important;
  table-layout:fixed;
}
.match-table th:nth-child(5),.match-table td:nth-child(5),
.match-table th:nth-child(7),.match-table td:nth-child(7){width:268px !important;}
.match-table th:nth-child(8),.match-table td:nth-child(8){width:112px !important;}
.match-table th:nth-child(9),.match-table td:nth-child(9){width:100px !important;}
.match-table th:nth-child(10),.match-table td:nth-child(10){width:248px !important;}
.match-team-cell{max-width:none !important;overflow:hidden;}
.compact-player-line{
  display:grid !important;
  grid-template-columns:1fr !important;
  gap:4px !important;
  align-items:stretch !important;
  min-height:48px !important;
  padding:7px 9px !important;
}
.compact-player-name{
  width:100%;
  text-align:center !important;
  padding:0 !important;
}
.compact-player-meta{
  display:flex !important;
  align-items:center;
  justify-content:center;
  gap:5px !important;
  flex-wrap:wrap !important;
  white-space:normal !important;
  line-height:1.15;
}
.compact-player-meta .player-age-badge{
  font-size:10px;
  padding:3px 6px;
}
.score-stack-cell{min-width:0;}
.score-stack .score-input{width:58px;max-width:58px;}
.analysis-stack{min-width:0;}
.analysis-stack .balance-badge,.analysis-stack .mix-badge{
  width:100%;
  min-width:0;
  white-space:normal;
  overflow-wrap:anywhere;
}
@media(max-width:760px){
  .cm-preview-table{min-width:1040px !important;}
  .cm-preview-player-btn.cm-preview-player-card{grid-template-columns:1fr;gap:3px;text-align:center;}
  .cm-preview-player-meta{justify-content:center;}
  .match-table{min-width:1180px !important;}
  .match-table th:nth-child(5),.match-table td:nth-child(5),
  .match-table th:nth-child(7),.match-table td:nth-child(7){width:235px !important;}
  .match-table th:nth-child(10),.match-table td:nth-child(10){width:215px !important;}
}

/* d0.5.8.2: 회원 직책, 참가자 모임 안내, 모임 개최 신청 게시판 */
.member-role-custom-field.hidden{display:none!important;}
.member-role-pill{display:inline-flex;align-items:center;justify-content:center;min-width:54px;padding:6px 10px;border-radius:999px;font-size:12px;font-weight:800;border:1px solid #dbe7df;background:#f7faf8;color:#4c5f55;}
.member-role-pill.is-staff{background:#ecfdf4;border-color:#a7efc5;color:#087a43;box-shadow:0 8px 18px rgba(10,132,75,.08);}
.member-role-pill.is-normal{color:#6b7a70;background:#f6f7f5;}
.cm-meeting-editor-help{grid-column:1/-1;margin:-2px 0 4px;padding:10px 12px;border-radius:12px;background:#f5fbf7;border:1px dashed #badfca;color:#526358;font-size:12px;font-weight:700;}
.participant-meeting-info-panel{margin-bottom:18px;border-top:4px solid #0b7a43;}
.participant-meeting-info-grid{margin-top:10px;}
.participant-meeting-memo{margin-top:12px;}
.meeting-request-hero{align-items:center;}
.meeting-request-layout{align-items:start;}
.meeting-request-form h3{margin:0 0 6px;color:#14304a;}
.form-guide{margin:0 0 12px;color:#5f6f82;font-size:13px;font-weight:700;}
.meeting-request-list{display:grid;gap:12px;max-height:620px;overflow:auto;padding-right:4px;}
.meeting-request-card{border:1px solid #d9eadf;background:#fffdf8;border-radius:18px;padding:16px;box-shadow:0 10px 24px rgba(19,61,44,.06);}
.meeting-request-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px;}
.meeting-request-card-head strong{font-size:16px;color:#102338;}
.meeting-request-card-head span{display:inline-flex;padding:5px 10px;border-radius:999px;background:#eafaf0;color:#087a43;font-size:12px;font-weight:900;}
.meeting-request-card p{margin:6px 0;color:#334155;font-size:13px;line-height:1.45;}
.meeting-request-memo{padding:10px;background:#f8faf7;border-radius:12px;}
.meeting-request-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;}
.meeting-request-empty{padding:24px;border:1px dashed #bddcc9;border-radius:18px;background:#f8fcf9;color:#5c6e62;font-weight:800;text-align:center;}
@media(max-width:760px){
  .participant-meeting-info-grid{grid-template-columns:1fr!important;}
  .meeting-request-layout{grid-template-columns:1fr!important;}
  .meeting-request-card{padding:14px;}
  .meeting-request-actions .secondary-btn,.meeting-request-actions .mini-btn{width:100%;justify-content:center;}
}

/* d0.5.8.3 모임 장소 지도/주소 복사 UI */
.cm-meeting-map-card{
  display:grid;
  gap:8px;
  min-height:120px;
}
.cm-meeting-map-card strong{
  margin-bottom:0;
}
.cm-road-address-copy{
  border:1px dashed rgba(7,130,71,.22);
  background:#f7fff8;
  color:#28513c;
  border-radius:11px;
  padding:9px 10px;
  text-align:left;
  font-size:12px;
  font-weight:850;
  line-height:1.4;
  cursor:pointer;
  word-break:break-word;
  white-space:normal;
}
.cm-road-address-copy:hover:not(:disabled){
  border-color:rgba(7,130,71,.42);
  background:#effbf2;
}
.cm-road-address-copy:disabled{
  cursor:not-allowed;
  color:#9aa4b2;
  background:#f8fafc;
}
.cm-road-address-fallback{
  color:#7a8797;
  font-weight:800;
}
.cm-map-actions{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  align-items:center;
}
.cm-map-actions .mini-btn{
  min-height:31px;
  padding:7px 10px;
  border-radius:999px;
  font-size:11px;
  font-weight:900;
  background:#fff;
  border:1px solid #d8eadb;
  color:#0f6b36;
}
.cm-map-actions .mini-btn:disabled{
  opacity:.48;
  cursor:not-allowed;
}
.cm-meeting-info-form label:has(#meetingRoadAddressInput),
.meeting-request-form label:has(#meetingRequestRoadAddressInput){
  grid-column:1/-1;
}
.participant-meeting-info-grid .cm-meeting-map-card{
  grid-column:1/-1;
}
@media(max-width:640px){
  .cm-meeting-map-card{min-height:auto;}
  .cm-road-address-copy{font-size:12px;padding:10px 11px;}
  .cm-map-actions{display:grid;grid-template-columns:1fr;gap:7px;}
  .cm-map-actions .mini-btn{width:100%;min-height:38px;}
}

/* d0.5.8.4: 모임 운영 탭 / 게스트 신청 게시판 */
.meeting-operation-hero{align-items:center;}
.meeting-operation-tabs{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0 18px;padding:10px;border:1px solid #d6eadf;background:#fbfff9;border-radius:18px;box-shadow:0 10px 26px rgba(18,61,44,.05);}
.meeting-operation-tabs button{border:1px solid #d8e7dd;background:#fffdf8;color:#31435a;border-radius:14px;padding:12px 18px;font-weight:900;cursor:pointer;}
.meeting-operation-tabs button.active{background:#087a43;border-color:#087a43;color:#fff;box-shadow:0 10px 22px rgba(8,122,67,.16);}
.meeting-tab-panel[hidden]{display:none!important;}
.meeting-tab-panel.active{display:block;}
.meeting-operation-info-panel{margin-bottom:18px;}
.meeting-operation-guide-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px;}
.meeting-operation-guide-grid article{padding:16px;border:1px solid #dcebe1;background:#fffdf8;border-radius:16px;}
.meeting-operation-guide-grid strong{display:block;color:#087a43;font-size:15px;margin-bottom:6px;}
.meeting-operation-guide-grid p{margin:0;color:#5b6b7d;font-size:13px;line-height:1.5;}
.guest-badge{display:inline-flex;align-items:center;justify-content:center;margin-left:6px;padding:3px 7px;border-radius:999px;background:#fff2d7;border:1px solid #f3c56c;color:#9a5a00;font-size:11px;font-weight:900;vertical-align:middle;white-space:nowrap;}
.guest-badge.is-compact{font-size:10px;padding:2px 6px;margin-left:4px;}
.member-role-pill.is-guest{background:#fff7e8;border-color:#f1cb83;color:#9a5a00;box-shadow:0 8px 18px rgba(154,90,0,.08);}
.guest-status-badge{display:inline-flex;align-items:center;justify-content:center;padding:6px 10px;border-radius:999px;font-size:12px;font-weight:900;border:1px solid #d8e5dc;background:#f8faf7;color:#4a5c69;white-space:nowrap;}
.guest-status-badge.pending{background:#f8fafc;border-color:#d8e1ee;color:#52657a;}
.guest-status-badge.approved{background:#ecfdf4;border-color:#a7efc5;color:#087a43;}
.guest-status-badge.rejected{background:#fff1f1;border-color:#ffc9c9;color:#c73535;}
.guest-status-badge.applied{background:#eaf2ff;border-color:#bfd5ff;color:#1d5bbf;}
.guest-request-form .age-preview{margin:0 0 8px;}
.guest-request-card .meeting-request-card-head strong{display:flex;align-items:center;gap:2px;flex-wrap:wrap;}
@media (max-width: 760px){
  .meeting-operation-tabs{display:grid;grid-template-columns:1fr;gap:8px;}
  .meeting-operation-tabs button{width:100%;}
  .meeting-operation-guide-grid{grid-template-columns:1fr;}
  .guest-request-layout{grid-template-columns:1fr!important;}
  .guest-badge{font-size:10px;padding:2px 6px;}
}

/* d0.5.8.5 모바일 현장 사용성 점검 / UI 안정화 */
@media(max-width:760px){
  html, body{
    max-width:100%;
    overflow-x:hidden;
  }
  .main,
  .view,
  .panel,
  .participant-view,
  .participant-view .panel{
    max-width:100%;
    box-sizing:border-box;
  }
  .participant-hero-panel{
    padding:14px;
    gap:10px;
  }
  .participant-kicker{
    font-size:11px;
    padding:5px 8px;
  }
  .participant-hero-copy h3{
    margin-bottom:4px;
    font-size:21px;
    letter-spacing:-.04em;
  }
  .participant-hero-copy p{
    font-size:12px;
    line-height:1.45;
  }
  .participant-meeting-info-panel{
    padding:13px;
    border-radius:18px;
  }
  .participant-meeting-head{
    display:grid;
    grid-template-columns:1fr;
    gap:8px;
  }
  .participant-meeting-head h3{font-size:18px;}
  .participant-meeting-head p{font-size:12px;}
  .participant-meeting-summary-strip{
    display:grid;
    gap:10px;
    padding:12px;
    border-radius:16px;
    background:linear-gradient(135deg,#f6fff8,#fffaf0);
    border:1px solid rgba(15,107,54,.16);
    box-shadow:0 8px 18px rgba(15,107,54,.06);
    min-width:0;
  }
  .participant-meeting-summary-main{
    display:grid;
    gap:6px;
    min-width:0;
  }
  .participant-meeting-summary-label{
    font-size:11px;
    font-weight:1000;
    color:#657386;
  }
  .participant-meeting-summary-main strong{
    min-width:0;
    color:#12243a;
    font-size:17px;
    font-weight:1000;
    line-height:1.2;
    overflow-wrap:anywhere;
  }
  .participant-meeting-summary-address{
    width:100%;
    min-height:40px;
    border:1px dashed rgba(7,130,71,.26);
    border-radius:12px;
    background:#fff;
    color:#28513c;
    padding:9px 10px;
    font-size:12px;
    font-weight:900;
    text-align:left;
    line-height:1.35;
    overflow-wrap:anywhere;
  }
  .participant-meeting-summary-address:disabled{
    color:#9aa4b2;
    background:#f7f8fa;
  }
  .participant-meeting-summary-actions{
    display:grid;
    grid-template-columns:1fr;
    gap:7px;
  }
  .participant-meeting-summary-actions .mini-btn{
    width:100%;
    min-height:42px;
    border-radius:13px;
    font-size:13px;
    font-weight:1000;
  }
  .participant-meeting-summary-meta{
    display:grid;
    gap:6px;
    min-width:0;
  }
  .participant-meeting-summary-meta span{
    display:grid;
    grid-template-columns:58px minmax(0,1fr);
    gap:8px;
    align-items:center;
    min-width:0;
    padding:8px 9px;
    border-radius:12px;
    background:rgba(255,255,255,.72);
    border:1px solid rgba(238,228,212,.72);
    color:#6b7587;
    font-size:12px;
    font-weight:900;
  }
  .participant-meeting-summary-meta b{
    min-width:0;
    color:#172332;
    font-size:12px;
    font-weight:1000;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  .participant-meeting-summary-meta b.is-empty{
    color:#9aa4b2;
  }
  .participant-meeting-detail{
    margin-top:9px;
    border:1px solid rgba(15,107,54,.14);
    border-radius:15px;
    background:#fff;
    overflow:hidden;
  }
  .participant-meeting-detail summary{
    list-style:none;
    cursor:pointer;
    min-height:42px;
    padding:12px 13px;
    color:#0f6b36;
    font-size:13px;
    font-weight:1000;
    background:#f7fff8;
  }
  .participant-meeting-detail summary::-webkit-details-marker{display:none;}
  .participant-meeting-detail summary:after{
    content:'펼치기';
    float:right;
    color:#5d7e68;
    font-size:12px;
  }
  .participant-meeting-detail[open] summary:after{content:'접기';}
  .participant-meeting-detail .participant-meeting-info-grid,
  .participant-meeting-detail .participant-meeting-memo{
    margin:10px;
  }
  .participant-meeting-info-grid .cm-meeting-map-card .cm-map-actions{
    grid-template-columns:1fr;
  }
  body.participant-public-mode .participant-meeting-detail:not([open]){
    margin-bottom:10px;
  }
  .participant-next-game-box{
    padding:13px;
    border-radius:16px;
  }
  .participant-next-title{
    align-items:flex-start;
  }
  .participant-next-title b{
    font-size:18px;
    line-height:1.2;
  }
  .participant-next-meta{
    gap:6px;
  }
  .participant-next-meta > span:not(.match-type-badge){
    font-size:11px;
    padding:6px 8px;
  }
  .participant-card-list{
    gap:10px;
  }
  .participant-card-list .mobile-match-card,
  .mobile-match-card{
    width:100%;
    max-width:100%;
    box-sizing:border-box;
    overflow:hidden;
    border-radius:17px;
  }
  .mobile-match-card-head{
    display:grid;
    grid-template-columns:1fr;
    gap:7px;
    align-items:start;
  }
  .mobile-match-card-head .match-type-badge{
    justify-self:start;
  }
  .mobile-match-card-body{
    grid-template-columns:1fr;
    gap:8px;
  }
  .mobile-vs-mark{
    width:100%;
    min-height:28px;
    border-radius:999px;
  }
  .mobile-player-line{
    min-width:0;
    width:100%;
    box-sizing:border-box;
  }
  .mobile-player-name{
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  .mobile-player-meta{
    flex-wrap:wrap;
    justify-content:flex-start;
    min-width:0;
  }
  .match-balance-summary,
  .match-mix-summary{
    overflow:hidden;
    overflow-wrap:anywhere;
  }
  .balance-badge,
  .mix-badge,
  .match-result-badge{
    max-width:100%;
    white-space:normal;
    line-height:1.25;
  }
  .mobile-match-score-summary{
    align-items:flex-start;
    flex-direction:column;
  }
  .guest-request-form,
  .meeting-request-form{
    display:grid;
    grid-template-columns:1fr !important;
    gap:10px;
  }
  .guest-request-form label,
  .meeting-request-form label{
    width:100%;
    min-width:0;
  }
  .guest-request-form input,
  .guest-request-form select,
  .guest-request-form textarea,
  .meeting-request-form input,
  .meeting-request-form select,
  .meeting-request-form textarea{
    width:100%;
    min-height:44px;
    box-sizing:border-box;
  }
  .guest-request-form button,
  .meeting-request-form button,
  .guest-request-layout button,
  .meeting-request-layout button{
    min-height:44px;
  }
  .guest-request-card,
  .meeting-request-card{
    max-width:100%;
    overflow:hidden;
  }
  .guest-request-card p,
  .meeting-request-card p{
    overflow-wrap:anywhere;
  }
}
@media(min-width:761px){
  .participant-meeting-summary-strip{display:none;}
  .participant-meeting-detail{display:block;}
  .participant-meeting-detail summary{display:none;}
  .participant-meeting-detail[open]{border:0;margin:0;padding:0;}
}
@media(max-width:430px){
  body.participant-public-mode .main{padding:10px;}
  .participant-hero-panel,
  .participant-next-panel,
  .participant-meeting-info-panel{border-radius:16px;}
  .participant-meeting-summary-meta span{grid-template-columns:52px minmax(0,1fr);font-size:11px;}
  .participant-meeting-summary-actions .mini-btn{min-height:40px;font-size:12px;}
}

/* d0.5.8.6 모바일 관리자 사용성 안정화 */
.member-mobile-summary,
.member-mobile-filter-toggle,
.mobile-player-schedule-cards{display:none;}

@media (max-width:760px){
  html,body{max-width:100%;overflow-x:hidden;}
  .main,.view,.panel,.cm-dashboard-view{min-width:0;max-width:100%;}

  /* 대시보드 인사 카드 줄바꿈 보정 */
  .cm-hero-card{min-height:auto!important;padding:18px 16px!important;align-items:center;}
  .cm-hero-copy{max-width:100%!important;width:100%;}
  .cm-hero-copy h3{font-size:20px!important;line-height:1.25!important;word-break:keep-all;overflow-wrap:normal;margin-bottom:6px!important;}
  .cm-hero-copy p{font-size:13px!important;line-height:1.45!important;max-width:100%!important;word-break:keep-all;overflow-wrap:break-word;}
  .cm-hero-illustration{display:none!important;}

  /* 회원관리: 검색은 상단 유지, 필터/액션은 접기/펼치기 */
  .member-tools,.enhanced-member-tools{width:100%;min-width:0;}
  .member-filter-panel{width:100%;display:grid;gap:10px;}
  .member-search-box{display:grid!important;grid-template-columns:1fr!important;gap:8px;width:100%;padding:10px!important;}
  .member-search-box .search-icon{display:none;}
  .member-search-box input{min-width:0;width:100%;height:44px;font-size:14px;}
  .member-search-box .mini-btn{width:100%;min-height:42px;border-radius:14px;}
  .member-mobile-filter-toggle{display:flex;align-items:center;justify-content:center;width:100%;min-height:44px;border-radius:14px;background:#f3fff8;color:#087a45;border:1px solid rgba(14,129,73,.18);}
  .member-filter-panel:not(.is-open) .member-filter-grid,
  .member-filter-panel:not(.is-open) .member-filter-help,
  .member-filter-panel:not(.is-open) .member-filter-status-row{display:none!important;}
  .member-filter-grid{grid-template-columns:1fr!important;gap:9px!important;}
  .member-filter-field{font-size:12px;}
  .member-filter-field select{height:44px;min-height:44px;}
  .member-filter-help{font-size:11px;line-height:1.45;max-height:4.2em;overflow:hidden;}
  .member-filter-status-row{grid-template-columns:1fr!important;gap:8px!important;}
  .member-filter-status-row .search-count-pill{width:100%;white-space:normal;text-align:center;line-height:1.45;}
  .member-bulk-actions,.member-attendance-save-actions{display:grid!important;grid-template-columns:1fr 1fr!important;gap:8px;width:100%;}
  .member-bulk-btn,.member-save-attendance-btn,#clearMembersBtn{width:100%;min-height:44px;padding:10px 8px;font-size:13px;}
  #clearMembersBtn{grid-column:1 / -1;}

  /* 회원목록: 모바일 카드 핵심 정보 3~4줄 구성 */
  .member-table-wrap{border:0!important;background:transparent!important;overflow:visible!important;}
  .member-table-wrap .smart-table tbody{display:grid!important;gap:12px;width:100%;}
  .member-table-wrap .smart-table tr.member-list-row{display:grid!important;grid-template-columns:auto 1fr!important;gap:10px 12px!important;padding:14px!important;border-radius:20px!important;background:#fff!important;border:1px solid rgba(14,129,73,.14)!important;box-shadow:0 8px 22px rgba(18,32,52,.07)!important;}
  .member-table-wrap .smart-table tr.member-list-row td{border:0!important;padding:0!important;min-height:0!important;text-align:left!important;white-space:normal!important;}
  .member-table-wrap .smart-table tr.member-list-row td::before{display:none!important;}
  .member-table-wrap .smart-table tr.member-list-row td[data-label="참석"]{grid-column:1;grid-row:1 / span 2;display:flex!important;align-items:flex-start!important;justify-content:center!important;min-width:54px;padding-top:4px!important;}
  .member-table-wrap .smart-table tr.member-list-row td[data-label="참석"] input{width:28px;height:28px;accent-color:#087a45;}
  .member-table-wrap .smart-table tr.member-list-row td[data-label="참석"] .mobile-attend-text{display:none!important;}
  .member-table-wrap .smart-table tr.member-list-row td[data-label="성명"]{grid-column:2;grid-row:1;display:block!important;padding:0!important;border:0!important;}
  .member-name-text{display:block;font-size:17px!important;font-weight:950;line-height:1.25;margin-bottom:5px;}
  .member-mobile-summary{display:grid;gap:3px;font-size:12px;font-weight:800;color:#59687c;line-height:1.35;}
  .member-table-wrap .smart-table tr.member-list-row td[data-label="급수"],
  .member-table-wrap .smart-table tr.member-list-row td[data-label="전력"],
  .member-table-wrap .smart-table tr.member-list-row td[data-label="성별"],
  .member-table-wrap .smart-table tr.member-list-row td[data-label="출생연도"],
  .member-table-wrap .smart-table tr.member-list-row td[data-label="연령대"],
  .member-table-wrap .smart-table tr.member-list-row td[data-label="직책"]{display:none!important;}
  .member-table-wrap .smart-table tr.member-list-row td[data-label="관리"]{grid-column:1 / -1;grid-row:3;display:flex!important;gap:8px;justify-content:flex-end!important;padding-top:10px!important;border-top:1px dashed rgba(14,129,73,.14)!important;}
  .member-table-wrap .smart-table tr.member-list-row td[data-label="관리"] .mini-btn{min-height:40px;min-width:74px;border-radius:14px;}

  /* 개인별 경기 현황: 모바일은 요약 카드 + 펼치기 */
  .player-schedule-panel .compact-head h3{font-size:20px;line-height:1.25;}
  .player-schedule-panel .compact-head p{font-size:12px;line-height:1.5;}
  .player-schedule-wrap{display:none!important;}
  .mobile-player-schedule-cards{display:grid;gap:12px;margin-top:10px;}
  .mobile-player-schedule-card{border:1px solid rgba(14,129,73,.14);border-radius:18px;background:#fff;padding:14px;box-shadow:0 8px 22px rgba(18,32,52,.06);}
  .mobile-player-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;}
  .mobile-player-card-head strong{display:inline-flex;align-items:center;gap:4px;font-size:17px;font-weight:950;color:#172033;}
  .mobile-player-card-head p{margin:4px 0 0;font-size:12px;font-weight:800;color:#627289;line-height:1.35;}
  .mobile-player-count{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;min-width:52px;height:34px;border-radius:999px;background:#f1fff7;border:1px solid #bdebd0;color:#087a45;font-size:14px;}
  .mobile-player-card-summary{display:grid;gap:8px;margin-top:10px;}
  .mobile-player-card-summary .player-tendency-summary{justify-content:flex-start;gap:5px;}
  .mobile-player-next{display:inline-flex;align-items:center;justify-content:flex-start;padding:8px 10px;border-radius:13px;background:#f7fbff;border:1px solid #dce8f8;color:#40536b;font-size:12px;font-weight:900;}
  .mobile-player-next.is-empty{color:#8a96a8;background:#f8fafc;}
  .mobile-player-schedule-detail{margin-top:10px;border-top:1px dashed rgba(14,129,73,.15);padding-top:10px;}
  .mobile-player-schedule-detail summary{cursor:pointer;font-weight:950;color:#087a45;min-height:38px;display:flex;align-items:center;}
  .mobile-player-slot-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px;}
  .mobile-player-schedule-chip{display:grid;gap:3px;text-align:left;border:1px solid #cfeedd;background:#f8fffb;color:#173047;border-radius:14px;min-height:54px;padding:9px 10px;}
  .mobile-player-schedule-chip span{font-weight:950;font-size:12px;}
  .mobile-player-schedule-chip small{font-size:11px;color:#65758a;font-weight:800;}
  .mobile-player-no-slot,.mobile-player-empty{display:block;padding:16px;border-radius:16px;background:#f8fafc;border:1px solid #e2e8f0;color:#718096;font-size:13px;font-weight:800;text-align:center;}
}

@media (max-width:430px){
  .member-bulk-actions,.member-attendance-save-actions{grid-template-columns:1fr!important;}
  .mobile-player-slot-grid{grid-template-columns:1fr;}
  .cm-hero-copy h3{font-size:18px!important;}
  .cm-hero-copy p{font-size:12px!important;}
}

/* d0.5.8.7.1 대시보드 바로 시작하기 모바일 넘침 핫픽스 */
@media (max-width:760px){
  .cm-dashboard-two-col{
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    gap:12px!important;
    width:100%!important;
    max-width:100%!important;
    overflow:hidden!important;
  }
  .cm-recent-panel,
  .cm-quick-panel{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    overflow:hidden!important;
  }
  .cm-quick-actions{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:10px!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
  }
  .cm-quick-action{
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    min-height:88px!important;
    padding:12px 8px!important;
    overflow:hidden!important;
  }
  .cm-quick-action strong{
    display:flex!important;
    flex-direction:column!important;
    align-items:center!important;
    justify-content:center!important;
    gap:2px!important;
    max-width:100%!important;
    font-size:14px!important;
    line-height:1.22!important;
    text-align:center!important;
    word-break:keep-all!important;
    overflow-wrap:normal!important;
  }
  .cm-quick-action strong span{
    display:block!important;
    max-width:100%!important;
  }
  .cm-quick-icon{
    width:40px!important;
    height:40px!important;
    border-radius:13px!important;
    font-size:19px!important;
  }
  .cm-quick-actions .cm-quick-action:nth-child(5){
    grid-column:1 / -1!important;
  }
}

@media (max-width:360px){
  .cm-quick-actions{
    grid-template-columns:1fr!important;
  }
  .cm-quick-actions .cm-quick-action:nth-child(5){
    grid-column:auto!important;
  }
}

/* d0.5.9 PWA install/update UI */
.pwa-install-banner,
.pwa-update-banner {
  position: fixed;
  left: max(16px, env(safe-area-inset-left));
  right: max(16px, env(safe-area-inset-right));
  bottom: max(16px, env(safe-area-inset-bottom));
  z-index: 9998;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 14px 16px;
  border: 1px solid rgba(11, 122, 67, 0.2);
  border-radius: 20px;
  background: rgba(255, 255, 255, 0.96);
  box-shadow: 0 18px 48px rgba(22, 80, 53, 0.22);
  backdrop-filter: blur(12px);
  color: #14233a;
  max-width: 720px;
  margin: 0 auto;
}

.pwa-install-banner.hidden,
.pwa-update-banner.hidden {
  display: none !important;
}

.pwa-install-copy {
  display: grid;
  gap: 4px;
  min-width: 0;
}

.pwa-install-copy strong {
  font-size: 0.95rem;
  color: #0b7a43;
}

.pwa-install-copy span,
.pwa-update-banner span {
  font-size: 0.82rem;
  line-height: 1.35;
  color: #64748b;
}

.pwa-install-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}

.pwa-install-actions button,
.pwa-update-banner button {
  min-height: 42px;
  border: 0;
  border-radius: 14px;
  padding: 0 15px;
  font-weight: 800;
  cursor: pointer;
}

#pwaInstallBtn,
#pwaReloadBtn {
  background: #0b7a43;
  color: #fff;
}

#pwaDismissBtn {
  background: #eef8f1;
  color: #0b7a43;
}

@media (max-width: 560px) {
  .pwa-install-banner,
  .pwa-update-banner {
    left: 10px;
    right: 10px;
    bottom: max(10px, env(safe-area-inset-bottom));
    align-items: stretch;
    flex-direction: column;
    padding: 14px;
    border-radius: 18px;
  }

  .pwa-install-actions {
    width: 100%;
    display: grid;
    grid-template-columns: 1fr 1fr;
  }

  .pwa-install-actions button,
  .pwa-update-banner button {
    width: 100%;
    min-height: 46px;
  }
}


/* ===== CourtMate d0.5.9.1 mobile member list visibility hotfix =====
   목적: 모바일 회원관리에서 샘플 회원 36명이 3명만 표시되는 것처럼 보이는 문제 보정.
   원칙: 데이터/알고리즘 변경 없음, 모바일 카드 표시와 PWA 캐시 갱신만 보정.
*/
@media (max-width: 760px) {
  #membersView .panel,
  #membersView .member-table-wrap,
  #membersView .table-wrap {
    max-height: none !important;
    height: auto !important;
    overflow: visible !important;
  }

  #membersView .member-table-wrap .smart-table,
  #membersView .member-table-wrap .smart-table tbody {
    display: grid !important;
    width: 100% !important;
    max-height: none !important;
    height: auto !important;
    overflow: visible !important;
  }

  #membersView .member-table-wrap .smart-table tbody {
    gap: 10px !important;
    padding-bottom: 18px !important;
  }

  #membersView .member-table-wrap .smart-table tr.member-list-row {
    display: grid !important;
    grid-template-columns: 42px minmax(0, 1fr) !important;
    gap: 8px 10px !important;
    padding: 12px 12px !important;
    border-radius: 18px !important;
    min-height: auto !important;
    overflow: visible !important;
  }

  #membersView .member-table-wrap .smart-table tr.member-list-row td[data-label="참석"] {
    min-width: 42px !important;
    padding-top: 2px !important;
  }

  #membersView .member-table-wrap .smart-table tr.member-list-row td[data-label="참석"] input {
    width: 28px !important;
    height: 28px !important;
  }

  #membersView .member-name-text {
    display: block !important;
    font-size: 17px !important;
    line-height: 1.25 !important;
    margin-bottom: 4px !important;
    word-break: keep-all !important;
  }

  #membersView .member-mobile-summary {
    display: grid !important;
    gap: 2px !important;
    font-size: 12.5px !important;
    line-height: 1.35 !important;
    color: #4b5f77 !important;
    word-break: keep-all !important;
  }

  #membersView .member-table-wrap .smart-table tr.member-list-row td[data-label="관리"] {
    grid-column: 1 / -1 !important;
    grid-row: auto !important;
    display: flex !important;
    justify-content: flex-end !important;
    gap: 8px !important;
    padding-top: 9px !important;
    border-top: 1px dashed rgba(14,129,73,.14) !important;
  }

  #membersView .member-table-wrap .smart-table tr.member-list-row td[data-label="관리"] .mini-btn {
    min-height: 38px !important;
    min-width: 68px !important;
    padding: 9px 12px !important;
    border-radius: 13px !important;
    font-size: 14px !important;
  }

  #membersView .app-footer,
  .app-footer {
    clear: both !important;
  }

  #memberSearchCount {
    display: inline-flex !important;
    align-items: center !important;
    flex-wrap: wrap !important;
    max-width: 100% !important;
    line-height: 1.4 !important;
  }
}
