
:root{font-family:'Pretendard','Noto Sans KR','Apple SD Gothic Neo',system-ui,-apple-system,sans-serif;font-size:16.667px;color:#edf7ff;color-scheme:dark;background:#0b1230}
*{box-sizing:border-box}html{min-height:100%;background:#0b1230}body{margin:0;min-height:100vh;background:radial-gradient(ellipse 63% 46% at 6% 4%,#355d91d9 0%,transparent 72%),radial-gradient(ellipse 64% 48% at 90% 11%,#6248a0a0 0%,transparent 75%),radial-gradient(ellipse 50% 49% at 83% 72%,#107c8b70 0%,transparent 70%),linear-gradient(140deg,#071020,#142447 52%,#0b1833);background-attachment:fixed;overflow-x:hidden}
body:before,body:after{content:"";position:fixed;pointer-events:none;z-index:0;border-radius:50%;filter:blur(75px)}body:before{width:340px;height:330px;top:190px;left:-220px;background:#2dc0c355}body:after{width:390px;height:350px;bottom:-150px;right:-200px;background:#7769d75c}
button,input,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.36;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid #72e8e2;outline-offset:2px}h1,h2,h3,p{margin-top:0}
.top{position:relative;z-index:1;max-width:1160px;margin:0 auto;padding:38px 25px 24px}.top:before{content:"●";font-size:15.667px;color:#82e6d8;vertical-align:middle;margin-right:8px;filter:drop-shadow(0 0 12px #82e6d8)}.top h1{display:inline;font-size:clamp(25px,3.6vw,38px);font-weight:790;letter-spacing:-1.7px;color:#f4fcff;text-shadow:0 2px 25px #09113060}.top p{font-size:14.667px;letter-spacing:.15px;color:#afbedb;margin:11px 0 0 20px}
.wrap{max-width:1160px;position:relative;z-index:1;padding:0 20px 80px;margin:0 auto}
.topActions{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:4px 0 12px;color:#b1c8df;font-size:14.667px}.topActions .btn{min-height:32px}
.nav{display:flex;gap:5px;padding:6px;border:1px solid #ffffff3a;border-radius:17px;margin:0 0 18px;background:linear-gradient(125deg,#ffffff24,#ffffff0c);box-shadow:inset 0 1px #ffffff20,0 12px 32px #060e2450;backdrop-filter:blur(25px);-webkit-backdrop-filter:blur(25px)}.nav button{border:0;border-radius:12px;color:#c7d8ed;background:transparent;padding:12px 18px;flex:1;font-size:15.667px;font-weight:700}.nav button.active{background:linear-gradient(105deg,#69d7d2d1,#72baf2bc);color:#091e32;box-shadow:0 7px 20px #17a2af4c}
.card{position:relative;background:linear-gradient(138deg,#ffffff26 0%,#ffffff11 58%,#ffffff0d 100%);border:1px solid #ffffff35;box-shadow:0 13px 35px #020b224d,inset 0 1px 0 #ffffff25;backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);border-radius:21px;padding:19px;margin:12px 0}.card.compact{padding:17px 19px}.card.nopad{padding:0;overflow:hidden}.card h2{font-size:18.667px;font-weight:760;letter-spacing:-.3px;margin:0 0 12px;color:#f0fcff}.card h3{font-size:16.667px;margin:15px 0 8px}.card h4{margin:0}.flex{display:flex;align-items:center;gap:9px}.between{justify-content:space-between}.wraprow{flex-wrap:wrap}.grow{flex:1;min-width:0}.muted{color:#aec5dc}.small{font-size:14.667px}.tiny{font-size:13.667px}.strong{font-weight:730}
.pill{display:inline-flex;align-items:center;border-radius:50px;padding:5px 10px;color:#cfdeef;font-weight:720;background:#ffffff18;border:1px solid #ffffff1e;font-size:13.667px;white-space:nowrap}.pill.good{background:#53d8b32e;color:#a7fce5;border-color:#59e7ce52}.pill.warn{background:#f9b85f24;color:#ffe1a7;border-color:#f9b85f37}.pill.bad{background:#ed829e23;color:#ffc6d4}
.btn{color:#e8f7ff;background:#ffffff18;border:1px solid #ffffff45;border-radius:12px;padding:11px 13px;font-weight:740;min-height:42px;transition:background .16s,transform .16s}.btn:not(:disabled):hover{background:#ffffff2e;transform:translateY(-1px)}.btn.primary{background:linear-gradient(120deg,#79deda,#74aef5);border-color:#b6f9fd6b;color:#0b2940;box-shadow:0 5px 18px #3ad1d030}.btn.primary:not(:disabled):hover{background:linear-gradient(120deg,#94f1e8,#99c8fc)}.btn.danger{color:#ffccd9;border-color:#ffb7c44c;background:#bc46672c}.btn.flat,.btn.subtle{background:#ffffff12}.btn.sm{min-height:35px;padding:7px 12px;font-size:14.667px}.btn.full{width:100%}.btn.selected{background:#71ded5d6;border-color:#8bfce3;color:#092939}.btn.roundbtn{border-radius:16px}
.field{width:100%;min-width:0;min-height:43px;color:#f4fbff;background:#0e21439a;border:1px solid #b0dff84d;border-radius:12px;padding:10px 12px}.field::placeholder{color:#adc5d0a3}.field option{background:#1c3155;color:#ecfaff}.dateSelect{max-width:190px}.dateLine{flex-wrap:wrap}.two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.three{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.four{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.member-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.member-grid button{min-height:43px;font-size:15.667px}.subcard{background:#ffffff11;border:1px solid #ffffff25;border-radius:15px;padding:13px}.sectionHead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.sectionHead h2,.sectionHead h3{margin:0}.rule{border:0;border-top:1px solid #ffffff27;margin:16px 0}
.dateCard h2{margin:0 0 5px}.roundListHead{margin:20px 2px 12px}.roundListHead h2{font-size:23.667px;font-weight:800;letter-spacing:-.5px}
.expand{width:100%;background:transparent;border:0;display:flex;align-items:center;justify-content:space-between;gap:10px;color:#f0f7ff;text-align:left;padding:15px 20px}.roundTitle{display:flex;align-items:center;gap:14px}.roundTitle>span:last-child{display:grid;gap:3px}.roundNumber{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:linear-gradient(140deg,#ffffff34,#ffffff0c);border:1px solid #ffffff38;font-weight:850;color:#b4f4f1;font-size:17.667px}.roundTime{font-size:14.667px;color:#9cb6cf}.roundStatus{display:flex;align-items:center;gap:12px}.chevron{color:#bbd7ea;font-size:24.667px;line-height:1}.roundCard.completed{opacity:.88}.roundBody{border-top:1px solid #ffffff24;padding:13px 15px 14px}.courts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.court{padding:14px;border-radius:16px;background:linear-gradient(145deg,#071a367d,#10355644);border:1px solid #a5dff632;box-shadow:inset 0 1px 0 #ffffff1a}.courtHead{display:flex;justify-content:space-between;align-items:center;gap:9px;margin-bottom:11px}.courtHead strong{font-size:15.667px;color:#cbefff}.matchTeams{display:grid;gap:5px}.pairLine{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;min-height:43px;border-radius:11px;background:#ffffff0e}.pairNames{display:flex;align-items:center;gap:6px;min-width:0;flex-wrap:wrap}.playerName{font-size:16.667px;font-weight:760;white-space:nowrap}.playerName em{display:inline-grid;place-items:center;font-size:12.667px;font-style:normal;color:#a8f9e0;margin-left:4px;min-width:19px;min-height:19px;background:#5ee6c628;border-radius:7px;border:1px solid #7dffec30}.pairDot{color:#81a6c3}.pairPoints{flex-shrink:0;font-size:21.667px;font-weight:800;color:#bdf8f1}.versusTiny{text-align:center;font-size:12.667px;letter-spacing:2px;color:#88a7c6;padding:0;height:12px}.courtActions{display:flex;gap:8px;margin-top:12px}.courtActions .btn{flex:1}.roundActions{display:flex;justify-content:flex-end;gap:9px;flex-wrap:wrap;margin-top:12px}.roundActions .btn{min-width:145px}.statusline{font-size:14.667px;margin:12px 2px 0;color:#afc5dc}.editSlots{margin-top:12px}.editSlots label{display:grid;gap:6px;font-size:13.667px;color:#c2d5e8}.rosterCount{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.rosterItem{display:flex;justify-content:space-between;align-items:center;gap:6px;background:#ffffff12;border:1px solid #ffffff1e;padding:9px 10px;border-radius:10px;font-size:14.667px;white-space:nowrap}.rosterItem b{color:#adf2de}.rosterItem.short b{color:#ffd195}
.buttons{display:flex;gap:8px;margin-top:11px;flex-wrap:wrap}.buttons .btn{flex:1}.playerslots{display:grid;grid-template-columns:1fr 1fr;gap:8px}.playerslots label{font-size:13.667px;color:#b3d2e0}.statbox{background:#ffffff12;border:1px solid #ffffff22;padding:14px 7px;border-radius:13px;text-align:center}.statbox b{display:block;font-size:22.667px}.chiprow{display:flex;gap:6px;flex-wrap:wrap}.chip{background:#ffffff12;border:1px solid #ffffff25;padding:7px 10px;border-radius:24px;font-size:14.667px}.chip.click{cursor:pointer}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:11px 6px;border-bottom:1px solid #ffffff26;text-align:left;font-size:14.667px}.table th{color:#bfd3e6;font-weight:650}.table td:last-child,.table th:last-child{text-align:right}.table tr.click{cursor:pointer}.table tr.click:hover{background:#ffffff10}
.modalbg{position:fixed;inset:0;background:#030c1bd9;display:grid;place-items:center;padding:18px;z-index:20;backdrop-filter:blur(14px)}.modal{max-width:420px;width:100%;border-radius:22px;background:linear-gradient(145deg,#2b4468ef,#1b2548f5);border:1px solid #ffffff59;padding:22px;max-height:86vh;overflow:auto;box-shadow:0 20px 100px #020b1caa}.modal h2{font-size:23.667px;margin:0 0 10px}.modal label{font-weight:670;display:grid;gap:7px}.notice{padding:11px 13px;border-radius:13px;font-size:14.667px;background:#42d9cc1f;border:1px solid #62eee346;color:#d2fff9;margin:12px 0}.notice.warn{background:#ffb45d19;border-color:#ffd09642;color:#ffdfb4}.notice.bad{background:#fa789522;color:#ffe0e9}.listrow{display:flex;align-items:center;gap:9px;padding:11px 0;border-bottom:1px solid #ffffff23}.listrow:last-child{border:0}.sticky-note{font-size:14.667px;background:#e6a96023;border:1px solid #ffc88d50;padding:12px;border-radius:11px;color:#ffdfb8}.hoverCard{border:1px solid #ffffff32;background:#ffffff11;border-radius:13px;display:flex;align-items:stretch;overflow:hidden;margin:7px 0}.hoverCard .main{padding:12px;background:none;border:0;text-align:left;flex:1;color:inherit}.hoverCard .remove{margin:9px}.empty{text-align:center;color:#bdd0e0;padding:24px 7px;font-size:15.667px}.footer{text-align:center;color:#bed2eaaf;font-size:13.667px;margin:22px auto}.hide{display:none}.bar{background:#ffffff24;height:8px;border-radius:9px;overflow:hidden}.bar>div{background:linear-gradient(90deg,#4ee4c6,#9bdfff);height:100%}input[type=checkbox]{accent-color:#7eecdb}.stack{display:flex;flex-direction:column;gap:11px}.wide{grid-column:1/-1}
@media(max-width:760px){.top{padding:27px 17px 21px}.wrap{padding:0 11px 60px}.card{padding:15px;border-radius:17px}.card.compact{padding:15px}.nav button{font-size:14.667px;padding:11px 4px}.member-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.courts{grid-template-columns:1fr}.rosterCount{grid-template-columns:repeat(2,minmax(0,1fr))}.roundBody{padding:10px}.expand{padding:12px 13px}.roundActions .btn{min-width:0;flex:1;font-size:14.667px;padding:10px 6px}.top h1{font-size:30.667px;letter-spacing:-1.5px}.playerName{font-size:15.667px}.dateSelect{max-width:160px}.sectionHead{flex-wrap:wrap}.three{gap:6px}.buttons .btn{font-size:14.667px;padding:9px 7px}.court{padding:12px}}
@media(min-width:900px){.headgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.headgrid .card{margin:0}}
@media(prefers-reduced-motion:reduce){.btn{transition:none}}

.top p{display:none}
.top{padding-bottom:20px}
.attendToggle{display:flex;justify-content:flex-end;margin:12px 2px 4px}
.headingActions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.roundListHead{margin-top:19px}
.roundListHead h2{font-size:21.667px}
.pairNames{flex-wrap:nowrap;gap:7px;white-space:nowrap}
.playerName{font-size:clamp(14.667px,3.2vw,17.667px)}
.playerName em{font-size:12.667px;min-width:18px;min-height:18px}
.courtHead{margin-bottom:8px}
.pairLine{min-height:46px}
.roundBody{padding:12px}
@media(max-width:680px){.roundListHead{flex-wrap:wrap;gap:10px}.headingActions{width:100%;justify-content:flex-start}.headingActions>.btn:first-child{flex:1;min-width:170px}.roundCard .expand{padding:12px 13px}.roundNumber{height:37px;width:37px}.pairNames{gap:4px}.playerName{letter-spacing:-.45px}.pairLine{padding:8px}.pairDot{font-size:13.667px}}



:root{--violet:#b484ff;--cyan:#5ceafb;--pink:#ff68d0;--ink:#050716;color:#edf7ff;background:#06051c;color-scheme:dark}
html{background:linear-gradient(125deg,#10104a,#071c35,#180d30)}
body{min-height:100vh;background:
 radial-gradient(ellipse 60% 44% at 8% 8%,rgba(169,56,255,.52),transparent 80%),
 radial-gradient(ellipse 65% 58% at 97% 17%,rgba(8,189,255,.43),transparent 78%),
 radial-gradient(ellipse 67% 45% at 8% 44%,rgba(236,52,187,.30),transparent 78%),
 radial-gradient(ellipse 70% 50% at 94% 59%,rgba(140,64,250,.36),transparent 78%),
 radial-gradient(ellipse 80% 56% at 36% 91%,rgba(4,191,228,.33),transparent 80%),
 linear-gradient(135deg,#0b0c30,#0a1636 36%,#140d37 66%,#0a1732);
 background-attachment:fixed;position:relative}
body:before{width:68vw;height:68vw;max-width:850px;max-height:850px;left:-15vw;top:0;background:conic-gradient(from 55deg,rgba(163,64,255,.24),rgba(0,224,255,.27),rgba(255,74,189,.24),rgba(163,64,255,.24));filter:blur(110px);animation:glowShift 17s ease-in-out infinite alternate}
body:after{width:76vw;height:65vw;max-width:880px;max-height:850px;right:-19vw;bottom:-8vh;background:conic-gradient(from 15deg,rgba(0,228,255,.26),rgba(216,72,255,.3),rgba(255,61,180,.22),rgba(0,228,255,.26));filter:blur(105px);animation:glowShift 22s ease-in-out infinite alternate-reverse}
@keyframes glowShift{0%{transform:translate(0,0) scale(1)}100%{transform:translate(-7vw,10vh) scale(1.22)}}
.top{padding:32px 20px 20px}.top:before{color:var(--cyan);filter:drop-shadow(0 0 12px var(--cyan))}.top h1{color:#faf6ff;text-shadow:0 0 30px rgba(176,83,255,.34),0 0 22px rgba(70,209,253,.24);font-weight:790}
.card,.nav,.modal{background:linear-gradient(140deg,rgba(235,234,255,.11),rgba(28,36,97,.23) 38%,rgba(12,12,45,.36) 75%,rgba(225,73,242,.08)) padding-box,linear-gradient(135deg,rgba(255,255,255,.81),rgba(115,232,255,.51) 23%,rgba(159,111,255,.17) 51%,rgba(244,134,255,.54) 81%,rgba(255,255,255,.48)) border-box;border:1px solid transparent;backdrop-filter:blur(30px) saturate(155%);-webkit-backdrop-filter:blur(30px) saturate(155%);box-shadow:inset 0 1px 1px rgba(255,255,255,.23),inset 1px 0 rgba(255,255,255,.09),0 16px 46px rgba(2,4,22,.38),0 0 28px rgba(131,72,235,.12)}
.card:before{background:linear-gradient(110deg,rgba(255,255,255,.045),transparent 42%,rgba(255,255,255,.035));border-radius:inherit}
.card{border-radius:20px}.nav{border-radius:17px;padding:6px;margin-bottom:14px}
.nav button{background:transparent;border:1px solid transparent;color:#d7dcff;letter-spacing:0;font-weight:740;text-transform:none;border-radius:12px}
.nav button.active{background:linear-gradient(130deg,rgba(138,70,234,.35),rgba(19,98,168,.27));border:1px solid rgba(188,161,255,.42);color:#fff;box-shadow:inset 0 1px rgba(255,255,255,.18),0 0 16px rgba(135,69,255,.18)}
.btn,.btn.primary,.btn.selected{color:#e7f5ff;background:linear-gradient(145deg,rgba(30,39,91,.8),rgba(15,24,63,.82));border:1px solid rgba(159,171,255,.38);box-shadow:inset 0 1px rgba(255,255,255,.10),0 3px 12px rgba(1,2,15,.24);text-shadow:none}
.btn:not(:disabled):hover,.btn.primary:not(:disabled):hover{background:linear-gradient(145deg,rgba(65,54,125,.81),rgba(17,64,99,.86));border-color:rgba(114,223,255,.6);transform:translateY(-1px)}
.btn.primary{border-color:rgba(124,228,255,.58);background:linear-gradient(140deg,rgba(50,46,120,.88),rgba(11,78,126,.80));color:#e8fbff;box-shadow:inset 0 1px rgba(255,255,255,.14),0 0 15px rgba(34,167,227,.13)}
.btn.selected{background:linear-gradient(140deg,rgba(97,51,149,.73),rgba(28,93,128,.78));border-color:rgba(141,230,255,.58);color:#fff}
.btn.danger,.btn.resetBtn{background:rgba(55,18,65,.50);border-color:rgba(250,129,205,.34);color:#ffe0fa}
.btn.resetBtn{min-height:27px;font-size:13.667px;padding:3px 9px;white-space:nowrap}
.btn:disabled{opacity:.32}.field,.scoreInput{background:linear-gradient(180deg,rgba(5,12,35,.76),rgba(9,14,48,.68));border:1px solid rgba(155,196,255,.34);box-shadow:inset 0 1px rgba(255,255,255,.045);color:#f4f7ff}
.court{background:linear-gradient(125deg,rgba(95,94,185,.22),rgba(7,21,63,.54) 42%,rgba(66,46,125,.30)) padding-box,linear-gradient(140deg,rgba(237,243,255,.66),rgba(103,220,255,.48) 34%,rgba(135,94,252,.18) 55%,rgba(245,147,254,.48)) border-box;border:1px solid transparent;backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);box-shadow:inset 0 1px rgba(255,255,255,.2),0 6px 25px rgba(4,7,35,.20)}
.pill{background:rgba(79,57,135,.23);border-color:rgba(165,168,249,.30)}
.roundNumber{border-color:rgba(153,237,255,.46);background:rgba(109,93,229,.2);color:#d1f9ff;box-shadow:inset 0 1px rgba(255,255,255,.20),0 0 15px rgba(134,94,255,.16)}
.roundCard{overflow:hidden}.roundBody{background:rgba(5,8,40,.06)}
.courtMeta{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.headToHead{display:grid;grid-template-columns:minmax(0,1fr) 27px minmax(0,1fr);align-items:center;gap:5px;margin:9px 0 11px}
.sidePair{min-width:0;min-height:67px;border-radius:13px;display:flex;align-items:center;justify-content:center;text-align:center;padding:9px 5px;background:linear-gradient(155deg,rgba(216,228,255,.10),rgba(114,72,198,.07));border:1px solid rgba(185,218,255,.18);box-shadow:inset 0 1px rgba(255,255,255,.09)}
.duo{display:flex;align-items:center;justify-content:center;gap:4px;min-width:0;flex-wrap:wrap;line-height:1.4;font-weight:740;color:#f5fbff;font-size:clamp(13.667px,1.55vw,16.667px)}
.duoMember{display:inline-flex;gap:2px;align-items:center;white-space:nowrap}.duoMember small{font-size:11.667px;font-weight:740;line-height:15px;color:#9fefff;background:rgba(12,170,255,.18);border-radius:5px;padding:0 4px;border:1px solid rgba(125,226,255,.21)}
.duoJoin{color:#a8a8d8;font-size:13.667px}.duoVs{font-size:12.667px;font-weight:850;color:#85eeff;text-shadow:0 0 12px rgba(89,236,255,.65);text-align:center;letter-spacing:-.3px}
.scoreInline{border-top:1px solid rgba(193,220,255,.20);display:flex;justify-content:space-between;align-items:center;gap:10px;padding-top:12px;margin-top:1px;flex-wrap:wrap}
.scoreLabel{font-size:14.667px;color:#cbdafa;font-weight:650;white-space:nowrap}
.scoreFields{display:flex;align-items:center;gap:7px;margin-left:auto}
.scoreInput{width:54px;min-height:38px;text-align:center;border-radius:10px;font-size:18.667px;font-weight:760;padding:5px}
.scoreInput::-webkit-inner-spin-button,.scoreInput::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.scoreInput{-moz-appearance:textfield}
.colon{font-size:21.667px;font-weight:700;color:#b7eeff}.scoreSubmit{min-height:38px;padding:6px 13px;border-color:rgba(108,227,255,.48)}
.scoreFinished{display:flex;justify-content:center;align-items:center;gap:16px;border-top:1px solid rgba(190,225,255,.2);padding:12px 0 1px;color:#c6dbed;font-size:14.667px}
.scoreFinished strong{font-size:23.667px;color:#edfaff;letter-spacing:2px;text-shadow:0 0 12px rgba(130,190,255,.24)}
.courtActions{margin-top:7px;justify-content:flex-end}.courtActions .btn{flex:none;min-height:32px}
.summaryHud .rosterCount{grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.summaryHud .rosterItem{border-color:rgba(166,214,255,.3);background:linear-gradient(145deg,rgba(171,146,255,.12),rgba(0,105,171,.08));min-height:44px}.summaryHud .rosterItem b{font-size:16.667px;color:#a3f6ff}
.modal{background:linear-gradient(140deg,rgba(29,26,76,.95),rgba(8,27,65,.92)) padding-box,linear-gradient(145deg,rgba(255,255,255,.58),rgba(145,220,255,.37),rgba(232,118,255,.53)) border-box}
@media(max-width:760px){.wrap{padding:0 10px 70px}.summaryHud .rosterCount{grid-template-columns:repeat(2,minmax(0,1fr))}.duo{font-size:13.667px;gap:2px}.duoMember small{font-size:11.667px;padding:0 3px}.sidePair{padding:9px 4px;min-height:62px}.headToHead{gap:3px;grid-template-columns:minmax(0,1fr) 22px minmax(0,1fr)}.scoreInput{width:49px}.court{padding:11px}}
@media(prefers-reduced-motion:reduce){body:before,body:after{animation:none}}


/* Readable charcoal-glass surfaces */
.card,.nav,.modal{
 background:linear-gradient(135deg,rgba(53,57,69,.80),rgba(27,31,43,.82) 47%,rgba(23,29,43,.80)) padding-box,
 linear-gradient(135deg,rgba(221,230,255,.46),rgba(103,211,236,.36) 26%,rgba(142,108,206,.18) 58%,rgba(232,148,244,.38) 86%,rgba(206,215,232,.30)) border-box;
 border:1px solid transparent;
 color:#f2f5fa;
 backdrop-filter:blur(27px) saturate(115%);
 -webkit-backdrop-filter:blur(27px) saturate(115%);
 box-shadow:inset 0 1px 1px rgba(255,255,255,.14),inset 1px 0 rgba(255,255,255,.05),0 14px 40px rgba(0,0,0,.31),0 0 26px rgba(120,83,217,.08);
}
.card:before{background:linear-gradient(120deg,rgba(255,255,255,.018),transparent 45%,rgba(255,255,255,.018))}
.court{
 background:linear-gradient(135deg,rgba(53,56,68,.83),rgba(28,32,43,.87) 55%,rgba(34,38,54,.82)) padding-box,
 linear-gradient(135deg,rgba(215,226,241,.42),rgba(107,207,235,.35) 33%,rgba(130,97,208,.20) 65%,rgba(215,122,231,.35)) border-box;
 border:1px solid transparent;
 backdrop-filter:blur(20px) saturate(110%);
 -webkit-backdrop-filter:blur(20px) saturate(110%);
 box-shadow:inset 0 1px rgba(255,255,255,.13),0 6px 22px rgba(4,7,20,.24);
}
.roundBody{background:rgba(12,14,24,.30)}
.sidePair{background:linear-gradient(150deg,rgba(55,59,70,.65),rgba(28,32,44,.76));border-color:rgba(188,213,236,.16);box-shadow:inset 0 1px rgba(255,255,255,.07)}
.subcard,.hoverCard,.statbox,.rosterItem,.chip,.pairLine{background:rgba(36,40,52,.69);border-color:rgba(180,201,229,.17)}
.summaryHud .rosterItem{background:linear-gradient(145deg,rgba(58,61,73,.75),rgba(34,39,52,.74));border-color:rgba(147,188,216,.25)}
.nav button.active{background:linear-gradient(130deg,rgba(75,68,115,.78),rgba(35,61,82,.80));border-color:rgba(159,179,215,.34);color:#f2f7ff;box-shadow:inset 0 1px rgba(255,255,255,.09),0 0 14px rgba(88,71,138,.15)}
.btn,.btn.primary,.btn.selected{background:linear-gradient(145deg,rgba(48,51,66,.89),rgba(30,35,49,.90));border-color:rgba(148,178,206,.35);color:#eef6ff}
.btn.primary{background:linear-gradient(140deg,rgba(59,55,85,.90),rgba(31,66,84,.88));border-color:rgba(121,190,216,.42)}
.btn.selected{background:linear-gradient(140deg,rgba(83,59,107,.84),rgba(37,79,87,.84));border-color:rgba(150,195,214,.49)}
.field,.scoreInput{background:rgba(24,29,39,.90);border-color:rgba(154,183,209,.30);color:#f3f6fc}


/* v2.2: deep-purple glass, mint participation, name-first lineups */
:root{background:#090715}
html{background:#090715}
body{
 background:
 radial-gradient(ellipse 65% 32% at 5% 8%,rgba(66,24,89,.22),transparent 84%),
 radial-gradient(ellipse 63% 38% at 96% 30%,rgba(23,49,89,.19),transparent 83%),
 radial-gradient(ellipse 78% 39% at 12% 70%,rgba(53,20,76,.18),transparent 85%),
 radial-gradient(ellipse 72% 50% at 85% 90%,rgba(26,57,72,.16),transparent 90%),
 linear-gradient(155deg,#090815 0%,#110d20 43%,#0c0b1b 72%,#090c16 100%);
 background-attachment:fixed;
}
body:before{background:conic-gradient(from 60deg,rgba(74,33,115,.10),rgba(22,88,100,.10),rgba(58,26,80,.10));filter:blur(120px);opacity:.65}
body:after{background:conic-gradient(from 45deg,rgba(17,87,102,.11),rgba(74,30,118,.11),rgba(66,25,91,.09));filter:blur(120px);opacity:.62}
.member-grid .btn.selected{
 background:linear-gradient(145deg,#55dbb9,#2aab9a);
 color:#062d2b;
 border:1px solid #a3ffeb;
 box-shadow:inset 0 1px rgba(255,255,255,.24),0 0 18px rgba(46,244,192,.24);
 text-shadow:none;
 font-weight:850;
}
.member-grid .btn.selected:not(:disabled):hover{background:linear-gradient(145deg,#79f4d3,#3bc6ac);color:#062d2b;border-color:#c0fff0}
.member-grid .btn:not(.selected){background:linear-gradient(145deg,rgba(39,42,53,.87),rgba(26,30,42,.88));border-color:rgba(125,144,169,.26)}
.duo{gap:5px;flex-wrap:nowrap;align-items:center;justify-content:center}
.duoMember{display:flex;flex-direction:column;align-items:center;justify-content:center;white-space:nowrap;gap:5px;min-width:0}
.duoMember .memberName{font-size:clamp(13.667px,1.45vw,16.667px);font-weight:800;line-height:1.15;color:#f1fbff}
.duoMember small{display:block;white-space:nowrap;background:none;border:0;color:#8ce8d6;padding:0;font-weight:650;font-size:12.667px;line-height:1.2}
.duoJoin{align-self:center;color:#657a8e;font-size:14.667px}
.sidePair{min-height:75px}
#guestForm .field{flex:1;min-width:0}
#guestForm [data-action="add-guest"]{flex:0 0 auto}
@media(max-width:760px){.duo{gap:3px}.duoMember .memberName{font-size:clamp(12.667px,2.9vw,15.667px)}.duoMember small{font-size:11.667px}.sidePair{min-height:74px;padding:7px 3px}}


/* v2.5 — 화면 밝기 조정 (기존 버튼·선택 스타일 그대로 유지) */
html{background:#111128}
body{
 background:
 radial-gradient(ellipse 66% 41% at 8% 9%,rgba(112,52,155,.37),transparent 82%),
 radial-gradient(ellipse 66% 47% at 95% 27%,rgba(34,108,151,.31),transparent 82%),
 radial-gradient(ellipse 78% 54% at 13% 68%,rgba(119,47,156,.29),transparent 84%),
 radial-gradient(ellipse 72% 55% at 87% 93%,rgba(30,123,143,.28),transparent 85%),
 linear-gradient(155deg,#111126 0%,#1b1736 42%,#17152e 74%,#111b31 100%);
 background-attachment:fixed;
}
body:before{opacity:.85}
body:after{opacity:.82}
.card,.nav,.modal{
 background:linear-gradient(135deg,rgba(68,72,90,.79),rgba(42,47,68,.83) 48%,rgba(38,46,68,.79)) padding-box,
 linear-gradient(135deg,rgba(233,242,255,.52),rgba(118,224,247,.39) 26%,rgba(159,123,224,.23) 60%,rgba(242,160,248,.43) 88%,rgba(221,234,250,.36)) border-box;
}
.court{
 background:linear-gradient(135deg,rgba(67,74,95,.81),rgba(42,49,70,.84) 54%,rgba(48,54,77,.82)) padding-box,
 linear-gradient(135deg,rgba(226,239,255,.48),rgba(125,224,249,.39) 34%,rgba(148,110,223,.25) 68%,rgba(230,145,244,.38)) border-box;
}
.roundBody{background:rgba(26,28,49,.19)}
.sidePair{background:linear-gradient(148deg,rgba(78,84,110,.67),rgba(42,50,73,.76));border-color:rgba(200,229,251,.23)}
.subcard,.hoverCard,.statbox,.rosterItem,.chip,.pairLine{background:rgba(52,60,81,.69);border-color:rgba(198,218,245,.21)}
.summaryHud .rosterItem{background:linear-gradient(145deg,rgba(74,80,105,.77),rgba(47,56,80,.76));border-color:rgba(159,203,234,.28)}
/* 대진표 안 선수 이름만 확대 */
.duoMember .memberName{font-size:clamp(18px,1.75vw,20px);line-height:1.18}
@media(max-width:760px){.duoMember .memberName{font-size:clamp(15.3px,3.8vw,18px)}}


/* v2.6 — mint-to-deep-purple action buttons, direct lineup editing */
.btn,.btn.primary,.btn.selected{
 background:linear-gradient(118deg,rgba(15,177,168,.77) 0%,rgba(16,109,119,.83) 38%,rgba(46,26,88,.96) 100%);
 color:#f6fcff;
 border:1px solid rgba(94,224,207,.42);
 box-shadow:inset 0 1px rgba(255,255,255,.15),0 4px 16px rgba(13,7,39,.22);
}
.btn:not(:disabled):hover,.btn.primary:not(:disabled):hover{
 background:linear-gradient(118deg,rgba(22,190,181,.90),rgba(21,130,137,.89) 40%,rgba(73,38,113,.97));
 border-color:rgba(121,246,231,.72);color:#fff;
}
.btn.selected,.member-grid .btn.selected{
 background:linear-gradient(115deg,#0FB1A8 0%,#137e91 45%,#41216d 100%);
 color:#fff;border-color:rgba(135,250,234,.78);
 box-shadow:inset 0 1px rgba(255,255,255,.23),0 0 18px rgba(15,177,168,.18);
 text-shadow:none;
}
.member-grid .btn.selected:not(:disabled):hover{background:linear-gradient(115deg,#1ac6bc,#168d9a 46%,#52277e);color:#fff;border-color:#a3fcef}
.member-grid .btn:not(.selected){background:linear-gradient(115deg,rgba(12,105,105,.59),rgba(30,29,69,.94));border-color:rgba(87,177,183,.35)}
.btn.danger,.btn.resetBtn{background:linear-gradient(120deg,rgba(93,39,81,.80),rgba(50,23,81,.94));color:#ffe9f4;border-color:rgba(232,124,189,.36)}
.nav button{background:linear-gradient(130deg,rgba(15,126,120,.13),rgba(40,22,68,.22));border-color:rgba(141,218,225,.10)}
.nav button.active{background:linear-gradient(120deg,rgba(15,177,168,.55),rgba(51,24,94,.89));border-color:rgba(100,225,213,.56);color:white}
.roundHeader{display:flex;align-items:center;gap:8px;padding:2px 10px;min-height:66px}
.roundHeader .roundExpandMain{width:auto;flex:0 0 auto;padding:10px 6px;border-radius:12px}
.roundNameTime{display:flex;flex-direction:column;gap:3px}
.roundExpandState{display:flex;align-items:center;gap:7px;margin-left:auto;border:0;padding:8px 2px;background:transparent;color:#e7f4ff;cursor:pointer;min-width:0}
.roundShuffle{white-space:nowrap;min-height:34px;padding:6px 10px;font-size:12.5px}
.roundHeader .roundTitle{gap:8px}
.personPick{font:inherit;background:transparent;border:1px solid transparent;border-radius:9px;padding:4px 2px;color:inherit;cursor:pointer;min-width:0;transition:background .15s,border-color .15s,box-shadow .15s}
.personPick:hover,.personPick:focus-visible{background:rgba(15,177,168,.13);border-color:rgba(103,230,220,.57);box-shadow:0 0 14px rgba(15,177,168,.13);outline:none}
.personPick .memberName{border-bottom:1px dotted rgba(157,255,237,.50)}
.playerPickerGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:53vh;overflow-y:auto}
.playerOption{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:3px;text-align:left;min-height:58px;padding:9px 12px}
.playerOption small{font-weight:550;font-size:11px;color:#d9eaff}
.playerOption.current{opacity:.5}
@media(max-width:760px){
 .roundHeader{gap:4px;padding:2px 7px;min-height:60px}
 .roundHeader .roundExpandMain{padding:8px 3px}
 .roundHeader .roundNumber{width:33px;height:33px}
 .roundHeader .roundTitle{gap:6px}
 .roundHeader .roundNameTime b{font-size:14px}
 .roundHeader .roundTime{font-size:10.5px}
 .roundShuffle{min-height:32px;font-size:11px;padding:5px 6px}
 .roundExpandState{gap:4px}
 .roundExpandState .pill{font-size:10px;padding:4px 7px}
 .roundExpandState .chevron{font-size:19px}
 .personPick{padding:3px 1px}
}
@media(max-width:380px){.roundHeader{gap:2px}.roundHeader .roundNameTime b{font-size:13px}.roundShuffle{font-size:10px;padding:5px 4px}.roundExpandState .pill{padding:3px 5px}.roundHeader .roundTime{font-size:9.5px}}


/* v2.7 — neutral graphite player partitions, centered score axis */
/* The name of each participant gets its own hit target; neutral default, no mint before selection. */
.matchCourt .sidePair{
  background:linear-gradient(155deg,rgba(36,41,55,.82),rgba(25,29,43,.82));
  border:1px solid rgba(166,177,198,.30);
  padding:6px;
  min-height:94px;
}
.matchCourt .duo{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:6px;
  width:100%;
  min-width:0;
}
.matchCourt .duoMember.playerTile{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  box-sizing:border-box;
  padding:9px 3px;
  gap:5px;
  min-width:0;
  width:100%;
  min-height:75px;
  border-radius:10px;
  border:1px solid rgba(174,180,198,.35);
  background:linear-gradient(156deg,#333743 0%,#262a35 48%,#1d222d 100%);
  color:#edf2f9;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.065),0 2px 8px rgba(4,6,14,.17);
  white-space:normal;
}
.matchCourt button.personPick.playerTile{
  cursor:pointer;
  transition:background .14s ease,border-color .14s ease,box-shadow .14s ease;
}
.matchCourt button.personPick.playerTile:hover,
.matchCourt button.personPick.playerTile:focus-visible{
  background:linear-gradient(152deg,#4a4b5e,#303346 72%,#292a3c);
  border-color:rgba(194,186,228,.8);
  box-shadow:inset 0 1px rgba(255,255,255,.12),0 0 0 2px rgba(139,117,193,.17);
  outline:none;
}
.matchCourt .playerTile .memberName{
  display:block;
  max-width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:clamp(16px,1.65vw,19px);
  font-weight:820;
  line-height:1.25;
  color:#f5f5fb;
  border:0;
  letter-spacing:-.04em;
}
.matchCourt .playerTile small{
  display:block;
  max-width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:#bdc5d4;
  font-size:11px;
  font-weight:650;
  line-height:1.25;
  background:none;
  border:none;
  padding:0;
}
.matchCourt .duoVs{
  color:#ced5e6;
  font-weight:850;
  text-shadow:0 0 12px rgba(151,133,218,.28);
  font-size:13px;
}
/* Same grid widths, margins and gaps as the VS row so VS and : share one vertical axis. */
.matchCourt .headToHead,
.matchCourt .scoreBoardLine{
  display:grid;
  grid-template-columns:minmax(0,1fr) 28px minmax(0,1fr);
  gap:5px;
  align-items:center;
  width:100%;
}
.matchCourt .scoreInline{
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:8px;
  margin-top:0;
  padding-top:12px;
  border-top:1px solid rgba(175,181,207,.22);
}
.matchCourt .scoreBoardLine > .scoreInput,
.matchCourt .scoreBoardLine > .scoreValue{
  justify-self:center;
  text-align:center;
}
.matchCourt .scoreInput{
  width:78px;
  min-height:54px;
  padding:6px;
  font-size:31px;
  line-height:1.1;
  font-weight:850;
  border-radius:12px;
  color:#f5f8ff;
  background:linear-gradient(155deg,rgba(25,29,43,.96),rgba(18,22,37,.92));
  border:1px solid rgba(174,181,208,.46);
  box-shadow:inset 0 1px rgba(255,255,255,.07);
}
.matchCourt .scoreInput:focus{
  outline:2px solid rgba(180,157,233,.8);
  outline-offset:1px;
}
.matchCourt .scoreBoardLine > .colon{
  justify-self:center;
  font-size:32px;
  font-weight:850;
  line-height:1;
  color:#e3dcf2;
}
.matchCourt .scoreSubmit{
  align-self:center;
  width:100%;
  max-width:162px;
  min-height:37px;
  margin-top:3px;
  font-size:13px;
}
.matchCourt .scoreFinished{padding-bottom:4px}
.matchCourt .scoreValue{
  font-size:32px;
  font-weight:850;
  color:#f1f5fc;
  text-shadow:none;
}
@media(max-width:760px){
  .matchCourt .sidePair{padding:4px;min-height:88px}
  .matchCourt .duo{gap:4px}
  .matchCourt .duoMember.playerTile{padding:7px 1px;min-height:73px;gap:5px}
  .matchCourt .playerTile .memberName{font-size:clamp(15px,4vw,18px)}
  .matchCourt .playerTile small{font-size:10px;letter-spacing:-.2px}
  .matchCourt .headToHead,.matchCourt .scoreBoardLine{grid-template-columns:minmax(0,1fr) 24px minmax(0,1fr);gap:3px}
  .matchCourt .scoreInput{font-size:29px;width:74px;min-height:51px}
  .matchCourt .scoreBoardLine > .colon{font-size:29px}
}
@media(max-width:365px){
  .matchCourt .playerTile .memberName{font-size:14px}
  .matchCourt .playerTile small{font-size:9px}
  .matchCourt .scoreInput{width:70px}
}
@media(prefers-reduced-motion:reduce){.matchCourt button.personPick.playerTile{transition:none}}


/* v2.8 — dark charcoal for unselected attendance, manual empty slots */
.member-grid .btn:not(.selected),.member-grid .btn:not(.selected):not(:disabled):hover{
  background:linear-gradient(150deg,#202229 0%,#15171d 54%,#0e1015 100%)!important;
  border:1px solid rgba(118,124,139,.29)!important;
  color:#cdd2dc!important;
  box-shadow:inset 0 1px rgba(255,255,255,.035),0 5px 12px rgba(0,0,0,.20)!important;
  text-shadow:none!important;
}
.member-grid .btn:not(.selected):not(:disabled):hover{border-color:rgba(162,167,182,.57)!important;color:#f5f6fb!important}
.matchCourt .playerTile.playerEmpty{
  background:linear-gradient(155deg,rgba(24,26,34,.94),rgba(12,14,22,.92));
  border:1px dashed rgba(159,166,184,.36);
  box-shadow:inset 0 1px rgba(255,255,255,.035);
}
.matchCourt .playerEmpty .memberName{color:#aeb5c6;font-size:clamp(12px,1.35vw,15px);font-weight:660;letter-spacing:-.02em;white-space:nowrap}
.matchCourt button.personPick.playerEmpty:hover,.matchCourt button.personPick.playerEmpty:focus-visible{background:linear-gradient(155deg,#353544,#222534);border-color:rgba(186,177,213,.75)}
@media(max-width:760px){.matchCourt .playerEmpty .memberName{font-size:clamp(11px,2.8vw,13px);letter-spacing:-.5px}}


/* v2.8 — Tap anywhere on the round's non-interactive surface to expand/collapse */
.roundCard[data-round]{cursor:pointer;transition:border-color .16s ease,box-shadow .16s ease}
.roundCard[data-round]:hover{border-color:rgba(160,170,214,.44);box-shadow:0 20px 42px rgba(0,0,0,.37),inset 0 1px rgba(235,235,255,.07)}
.roundCard[data-round]:focus-visible{outline:2px solid rgba(194,175,242,.80);outline-offset:3px}
.roundCard[data-round] .court button,.roundCard[data-round] .court input{cursor:auto}
.roundCard[data-round] .court button{cursor:pointer}
.roundCard[data-round] .roundHeader{width:100%}


/* v2.9 — tennis racket logo replaces decorative dot */
.top:before{content:none!important;display:none!important}
.top{display:flex;align-items:center;gap:10px}
.top .brandRacket{width:38px;height:45px;flex:0 0 auto;filter:drop-shadow(0 0 7px rgba(116,196,215,.32))}
.top h1{display:block;min-width:0;line-height:1.25}
@media(max-width:420px){.top .brandRacket{width:31px;height:37px}.top{gap:6px}.top h1{font-size:clamp(22px,5.9vw,28px)}}


/* v2.10 — thin single-line date selector */
.dateCard.compact{padding:9px 14px}
.dateCard .dateToolbar{display:flex;align-items:center;gap:10px;min-height:36px}
.dateCard .dateToolbar h2{margin:0;flex:0 0 auto;font-size:16px;line-height:1.2;white-space:nowrap}
.dateCard .dateToolbar .field{min-height:36px;height:36px;padding:5px 9px;font-size:14px}
.dateCard .dateToolbar #gameDate{width:auto;flex:1 1 142px;min-width:0;max-width:240px;color-scheme:dark}
.dateCard .dateToolbar #viewerDate{margin-left:auto;width:auto;max-width:210px;flex:0 1 180px;min-width:122px}
.dateCard .dateToolbar .btn{min-height:36px;padding:5px 11px;white-space:nowrap}
@media(max-width:420px){
  .dateCard.compact{padding:8px 10px}
  .dateCard .dateToolbar{gap:7px}
  .dateCard .dateToolbar h2{font-size:14px}
  .dateCard .dateToolbar #gameDate{flex:1 1 auto;font-size:13px;padding:4px 6px}
  .dateCard .dateToolbar .btn{padding:5px 8px;font-size:12px}
  .dateCard .dateToolbar #viewerDate{min-width:116px}
}

/* Firebase 로그인 패널 */
#adminLoginForm label{color:#d7e5fa;font-size:14px}#adminLoginForm input{font-size:16px}
