@import"https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@400;500;600;700;800&display=swap";:root{font-family:Noto Sans TC,sans-serif;color:#382633;background:#fff8fb;font-synthesis:none;--pink:#d73576;--light:#ffe7f0;--muted:#947583;--border:#f0dce5}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}a{color:var(--pink);text-decoration:none}button{cursor:pointer;border:0;border-radius:12px;padding:12px 19px;background:var(--pink);color:#fff;font-weight:600}button:hover{filter:brightness(.96)}button:disabled{opacity:.5;cursor:wait}button.secondary{background:var(--light);color:#aa2b5c}button.ghost{background:transparent;color:var(--muted);padding:8px}input,select{border:1px solid var(--border);border-radius:10px;padding:12px;background:#fff;color:#382633;width:100%}input:focus,select:focus{outline:3px solid #f9bad3;border-color:var(--pink)}input[type=checkbox]{width:22px;height:22px;accent-color:#29986b}label{display:block;font-size:13px;font-weight:600}label input,label select{margin-top:8px}header{height:86px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 5vw;gap:20px}.brand{font-weight:800;font-size:23px;color:#462939;letter-spacing:-1px}.brand span{color:var(--pink)}.brand small{font-weight:500;font-size:10px;display:block;letter-spacing:3px;color:var(--muted)}nav{display:flex;gap:26px;font-size:14px}nav a{color:#856574}.mode{font-size:11px;padding:7px 12px;border-radius:30px;background:var(--light);color:#ad3b68}.wrap{max-width:1220px;margin:auto;padding:40px 28px}.eyebrow{color:var(--pink);font-size:12px;font-weight:700;letter-spacing:2px}h1{font-size:34px;letter-spacing:-1px;margin:10px 0}h2{font-size:20px;margin:0 0 20px}h3{font-size:16px}p{line-height:1.8}.muted{color:var(--muted);font-size:13px}.hero{display:flex;align-items:center;justify-content:space-between;margin-bottom:30px;gap:20px}.hero p{margin:8px 0}.art{width:170px;height:170px;border:22px solid #fbd4e4;border-radius:50%;box-shadow:0 0 0 20px #ffedf4,inset 0 0 0 20px #ffedf4;background:#f7a6c7;display:grid;place-items:center;color:#fff;font-size:32px;margin:20px 36px}.grid{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:24px}.card{background:#fff;border:1px solid var(--border);border-radius:20px;padding:26px;box-shadow:0 7px 28px #ad427105}.fields{display:grid;grid-template-columns:1fr 1fr;gap:20px}.full{grid-column:1/-1}.actions{margin-top:24px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.stat{background:#fff;border:1px solid var(--border);border-radius:16px;padding:21px}.stat strong{display:block;font-size:32px;margin-top:8px}.stat:last-child{background:#eaf8f0;border-color:#d0eadb}.stat small{color:var(--muted)}.step{display:flex;gap:13px;margin:24px 0}.step b{flex-shrink:0;background:var(--light);color:var(--pink);width:29px;height:29px;display:grid;place-items:center;border-radius:50%;font-size:12px}.step p{margin:0;font-size:13px}.list-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}.list-head h2{margin:0}.list-head input{max-width:200px}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;text-align:left;font-size:13px}th{color:var(--muted);font-size:11px;font-weight:500;padding:12px 10px;border-bottom:1px solid var(--border)}td{padding:13px 10px;border-bottom:1px solid #f6edf1}td input{min-width:105px;padding:9px;width:140px}td input.rating{width:80px;min-width:70px}tr.ready{background:#f0faf4}.pill{display:inline-block;border-radius:20px;padding:5px 9px;font-size:11px;white-space:nowrap;background:#fff0e5;color:#b37e49}.pill.green{background:#dff2e7;color:#268157}.empty{text-align:center;padding:48px 16px;color:var(--muted);line-height:1.9}.qr{text-align:center}.qr img{width:180px;height:180px;display:block;margin:12px auto}.room{letter-spacing:6px;font-size:27px;font-weight:800}.note{background:#fff0f6;border-radius:12px;padding:14px;font-size:12px;color:#a25575;line-height:1.8}.sidebar .card{margin-bottom:20px}.tournament-link{display:block;padding:16px 0;border-bottom:1px solid var(--border);color:#49303e}.tournament-link small{display:block;color:var(--muted);margin-top:5px}.mobile-card{max-width:500px;margin:30px auto}.mobile-card h1{font-size:27px}.big-number{font-size:64px;font-weight:800;color:var(--pink)}footer{text-align:center;color:#ab8b99;font-size:11px;padding:35px}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);max-width:90vw;padding:14px 24px;border-radius:12px;background:#44303c;color:#fff;z-index:20;box-shadow:0 6px 30px #38263330}.error{background:#fff0f0;color:#a52642;padding:14px;border-radius:10px;margin-bottom:16px}details{margin-top:25px;font-size:12px;color:var(--muted)}details p{word-break:break-all}.connection{font-size:12px;color:#8d6a7b}.topline{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.view-link{font-size:12px}.join-button{width:100%;margin-top:24px}@media(max-width:900px){.grid{grid-template-columns:1fr}.sidebar{display:grid;grid-template-columns:1fr 1fr;gap:20px}.art{display:none}.wrap{padding:26px 18px}h1{font-size:28px}}@media(max-width:600px){header{height:75px;padding:0 18px}.brand{font-size:20px}nav{gap:15px;font-size:12px}.mode{display:none}.fields{grid-template-columns:1fr}.stats{grid-template-columns:1fr 1fr;gap:10px}.stat{padding:16px}.sidebar{display:block}.card{padding:20px}.hero{align-items:flex-start}.hero h1{font-size:25px}.list-head{flex-wrap:wrap}.list-head input{max-width:100%}.mobile-card{margin:10px auto}}.divider{border:0;border-top:1px solid var(--border);margin:28px 0}.unit{font-size:12px;font-weight:400;color:#a58996}.share-url{font-size:11px;margin-top:14px;color:var(--muted)}.row-actions{display:flex;gap:4px;align-items:center}.save-player{font-size:12px;padding:9px 12px;white-space:nowrap}.save-player:disabled{cursor:default}.unsaved{box-shadow:inset 3px 0 #d73576}.button-link{display:block;text-align:center;background:var(--pink);color:#fff;border-radius:12px;padding:12px;font-weight:600}#verify{margin-top:24px}.roster-card td input:not([type=checkbox]):not(.rating){width:120px}.roster-card td{padding:12px 7px}.roster-card .ghost{font-size:11px;padding:6px}.series-editor{border-top:1px solid #f0d6e1;margin-top:24px;padding-top:20px}.leg-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(115px,1fr));gap:12px;margin:16px 0}.series-summary{padding:8px 16px;border-radius:14px;background:#fff2f7;margin:16px 0;overflow-wrap:anywhere}.series-summary p{margin:8px 0}.flight{display:block;font-weight:800;color:#a53667;font-size:12px;margin-top:6px}.qr-button{padding:0;border:0;background:#fff;cursor:zoom-in}.qr-button:hover{background:#fff;transform:none}.qr-button img{display:block;width:100%;height:auto}.qr>.qr-button{width:220px;max-width:100%;margin:12px auto;display:block}dialog{border:0;border-radius:24px;padding:24px;max-width:min(90vw,700px);max-height:90vh;box-shadow:0 25px 80px #51233866}dialog::backdrop{background:#311222b3}dialog .qr-button{cursor:zoom-out;width:min(75vw,600px)}dialog p{font-size:14px;text-align:center}.host-entry{padding:20px 0;border-bottom:1px solid #f0d6e1;overflow-wrap:anywhere}details{margin-top:18px}summary{cursor:pointer;color:#a53667;font-weight:700}.account-password{margin-top:24px}form>label{margin-bottom:16px}header .brand{font-size:24px}.brand span{font-size:inherit}.tournament-link small{line-height:1.8}.series-editor select{min-height:48px}@media(max-width:600px){header{gap:12px;flex-wrap:wrap}header .brand{font-size:20px}header nav{gap:14px}.actions{flex-wrap:wrap}.rating{min-width:90px}.leg-grid{grid-template-columns:repeat(2,minmax(0,1fr))}footer{font-size:11px;padding:25px 12px}.card{min-width:0}input,select{font-size:16px}}dialog .qr-button{width:min(72vw,66vh,600px)}@media(max-width:600px){header{height:auto;min-height:80px;padding:16px 18px}.roster-card table,.roster-card tbody{display:block}.roster-card thead{display:none}.roster-card tr{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--border);border-radius:12px;margin:12px 0;padding:12px;gap:12px}.roster-card td{display:block;border:0;padding:0;min-width:0}.roster-card td:first-child,.roster-card td:last-child{grid-column:1/-1}.roster-card td[data-label]:before{content:attr(data-label);display:block;font-size:11px;color:var(--muted);margin-bottom:7px}.roster-card td input:not([type=checkbox]):not(.rating),.roster-card td input.rating{width:100%;min-width:0}.roster-card .row-actions{justify-content:space-between}.roster-card .row-actions button{min-height:44px;padding:10px 20px}.roster-card .table-wrap{overflow:visible}.roster-card td input[type=checkbox]{width:26px;height:26px;min-width:0}}.competition-control,.group-detail,.late-entry{margin-bottom:24px}.competition-control h2{margin:8px 0}.group-progress{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px;margin:20px 0}.group-progress-card{background:#fff;border:1px solid var(--border);color:#573246;text-align:left;padding:20px}.group-progress-card.selected{border:2px solid var(--pink);background:#fff0f6}.group-progress-card strong{float:right;font-size:22px}.group-progress-card small{display:block;color:var(--muted);margin-top:8px}progress{display:block;width:100%;height:10px;accent-color:var(--pink);margin:16px 0 8px;border-radius:20px}.match-matrix{white-space:nowrap}.match-matrix th:first-child{position:sticky;left:0;background:#fff;z-index:1;min-width:100px}.match-matrix td{text-align:center;min-width:48px}.matrix-cell{padding:9px;font-size:12px;background:#fff0f6;color:#a32e62;min-width:40px}.matrix-cell.confirmed{background:#e2f5e8;color:#26754a}.matrix-cell.conflict,.conflict-note{background:#fff1bc;color:#835c00}.matrix-cell.waiting{background:#ffebdb;color:#975622}.my-row{background:#fff3f8}.diagonal{color:#d1b5c2}.match-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(225px,1fr));gap:12px;margin-top:24px}.match-tile{display:flex;flex-direction:column;gap:9px;background:#fff8fb;border:1px solid var(--border);color:#533040;text-align:left}.match-tile.confirmed{background:#eefaf3}.match-tile.conflict{background:#fff7d8;border-color:#efd174}.match-tile small{color:#8a6979}.edit-label{font-size:12px;color:var(--pink)}.score-dialog{width:620px;max-width:94vw;padding:24px}.close-dialog{display:block;margin-left:auto}.leg-choice{border:1px solid var(--border);border-radius:12px;margin:16px 0;padding:12px}.leg-choice legend{font-size:13px;color:#815269}.leg-choice>div{display:grid;grid-template-columns:1fr 1fr;gap:12px}.leg-choice button{background:#fff0f6;color:#883b5b;padding:16px 10px;overflow-wrap:anywhere}.leg-choice button.chosen{background:var(--pink);color:#fff;box-shadow:0 0 0 2px #ae2059}.leg-choice:disabled{opacity:.5}.leg-choice:disabled button{cursor:default}.score-dialog .note,.conflict-note{padding:14px;border-radius:12px;line-height:1.7}.score-dialog h2{margin:12px 0}.score-dialog small{color:var(--muted)}.score-dialog form label{margin-top:14px}.broadcast-dialog{width:440px}.broadcast-body{font-size:22px;white-space:pre-wrap;overflow-wrap:anywhere}textarea{font:inherit;width:100%;border:1px solid var(--border);border-radius:12px;padding:12px;margin:10px 0;color:#382633}.late-entry form{display:flex;gap:16px;align-items:end;flex-wrap:wrap}.late-entry label{flex:1;min-width:160px}.competition-control form{max-width:600px}#competition:empty{display:none}@media(max-width:600px){.group-progress{grid-template-columns:1fr 1fr;gap:10px}.group-progress-card{padding:14px;font-size:12px}.group-progress-card strong{float:none;display:block;margin-top:8px}.score-dialog{padding:18px}.score-dialog .fields{grid-template-columns:1fr 1fr;gap:12px}.score-dialog h2{font-size:20px}.match-list{grid-template-columns:1fr}.competition-control .list-head{align-items:start}.competition-control .list-head button{width:100%}.group-detail{padding:18px}.score-dialog input{min-width:0}.group-detail h2{font-size:18px}.broadcast-body{font-size:20px}}#player-intro.playing{max-width:none;padding:20px 24px;margin-bottom:20px;text-align:left}#player-intro.playing .eyebrow,#player-intro.playing .series-summary,#player-intro.playing .player-notice{display:none}#player-intro.playing h1{font-size:28px;margin:0 0 8px}#player-intro.playing p{margin:5px 0}.bracket-scroll{overflow:auto;max-height:76vh;border:1px solid #eed2df;border-radius:20px;background:radial-gradient(ellipse at top right,#ffe2ee,transparent 55%),#fff9fc;margin:24px 0;overscroll-behavior:contain;scrollbar-color:#dc8baa #fff0f7;scrollbar-width:thin}.bracket-scroll:focus-visible{outline:3px solid #dd76a0}.bracket-canvas{position:relative}.round-heading{position:absolute;top:18px;font-size:14px;font-weight:800;color:#9c3460;letter-spacing:2px;text-align:center}.bracket-lines{position:absolute;inset:0;overflow:visible;pointer-events:none}.bracket-wire{fill:none;stroke:#e1c5d2;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.bracket-wire.advanced{stroke:#ed3982;stroke-width:3;filter:drop-shadow(0 0 4px #f863a4) drop-shadow(0 0 8px #f8a2c6);stroke-dasharray:9 4;animation:advance-flow 3s linear infinite}@keyframes advance-flow{to{stroke-dashoffset:-52}}.bracket-match{position:absolute;border:1px solid #ecc8d9;border-radius:14px;background:#fff;color:#392633;padding:0;box-shadow:0 5px 14px #8b315612;text-align:left;font:inherit;height:132px;overflow:visible}.bracket-match.confirmed{border-color:#e574a4}.bracket-match:hover{filter:none}.bracket-match:is(button):hover{box-shadow:0 0 0 3px #f7bed6,0 6px 20px #b6326b22}.match-caption{display:flex;justify-content:space-between;gap:6px;padding:10px 12px;font-size:12px;color:#93677c;background:#fff4f9;border-radius:14px 14px 0 0;height:38px}.bracket-player{display:flex;align-items:center;gap:8px;height:42px;padding:6px 12px;font-size:14px}.bracket-player+.bracket-player{border-top:1px solid #f7e6ee}.bracket-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-mark{width:16px;flex-shrink:0;color:#b490a1}.bracket-player strong{font-size:14px;min-width:18px;text-align:right}.bracket-player.winner{color:#a71350;background:linear-gradient(90deg,#fff0f7,#ffdaeb);font-weight:700}.winner .player-mark{color:#d3226c}.bracket-player.loser{color:#917e87}.loser .bracket-name{text-decoration:line-through;text-decoration-color:#cc789e}.loser .player-mark{color:#bb436e}.bracket-bust{position:absolute;right:6px;bottom:-12px;padding:2px 7px;border:1px solid #f1cb8e;border-radius:8px;font-size:11px;background:#fff4d6;color:#875b12}.champion-card{position:absolute;min-height:132px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;border:1px solid #e9c2d5;border-radius:20px;background:#fff;color:#9a617b}.champion-card>span:not(.crown){font-size:12px;letter-spacing:3px}.champion-card .crown{font-size:30px;line-height:1}.champion-card strong{max-width:100%;padding:0 12px;overflow-wrap:anywhere;font-size:18px}.champion-card.crowned{color:#a51d59;background:linear-gradient(145deg,#fff,#ffe0ed);border:2px solid #e94388;box-shadow:0 0 24px #f177ac66,inset 0 0 18px #fff}.podium{margin:24px 0}.podium-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.podium-place{display:flex;flex-direction:column;align-items:center;gap:8px;padding:22px 12px;border:1px solid #f0d6e2;border-radius:16px;background:#fff7fb}.podium-place>span{font-size:32px;color:#cb3c79}.podium-place small{font-size:14px;color:#9d5273}.podium-place strong{font-size:20px;overflow-wrap:anywhere;text-align:center}.podium-place.place-1{background:linear-gradient(135deg,#ffe2ed,#fff8dc);border-color:#eec080}.final-control h2{margin-bottom:0}.final-control p{margin:10px 0}@media(max-width:600px){.podium-grid{grid-template-columns:1fr 1fr;gap:10px}.podium-place{padding:16px 10px}.podium-place strong{font-size:18px}.bracket-scroll{max-height:70vh;margin:16px -4px}.final-control{padding:20px}.final-control h2{font-size:22px}}@media(prefers-reduced-motion:reduce){.bracket-wire.advanced{animation:none;stroke-dasharray:none}}:root{--pink:#d72d77;--light:#ffe8f1;--muted:#866574;--border:#efd7e2;background:#fff8fb;color:#382936}body{background:radial-gradient(ellipse at 5% 0%,#fce4ee80,transparent 42%),radial-gradient(ellipse at 100% 40%,#f9e6f280,transparent 40%),#fffafd}header{background:#fffffff2;border-bottom:1px solid #f3dfe8;box-shadow:0 3px 18px #97304d06}.card{background:#fff;border-color:#ecd9e3;box-shadow:0 8px 30px #864c6510;border-radius:22px}.play-heading{display:flex;align-items:center;gap:18px;margin:0 0 28px;min-height:90px}.play-heading img{width:104px;height:88px;object-fit:contain;filter:drop-shadow(0 2px 7px #f7a3c13b)}.play-heading span{font-size:14px;color:#bc326c;font-weight:800;letter-spacing:2.5px}button,.button-link{border:1px solid transparent;transition:box-shadow .18s,background .18s,transform .18s}button:not(.ghost):not(.qr-button):not(.group-progress-card):not(.match-tile):not(.matrix-cell):not(.bracket-match){background:linear-gradient(135deg,#ed669e,#ce246d);box-shadow:0 5px 12px #c8337028,inset 0 1px #ffffff4d;border-color:#db4281}.button-link{background:linear-gradient(135deg,#ed669e,#ce246d);box-shadow:0 5px 12px #c8337028}button:hover:not(:disabled),.button-link:hover{filter:none;box-shadow:0 0 0 2px #ffbdd7,0 0 16px #f589b276;transform:translateY(-1px)}button:active:not(:disabled){transform:translateY(0)}button:focus-visible,a:focus-visible{outline:2px solid #ed619d;outline-offset:3px;box-shadow:0 0 18px #fa87b4aa}button.secondary:not(.qr-button){background:linear-gradient(135deg,#fff2f7,#ffe0ec)!important;color:#a5255b;border-color:#efb9d0!important;box-shadow:0 3px 9px #d5729720!important}button.ghost{border-color:transparent}input,select,textarea{background:#fff;border-color:#e7cfdb;box-shadow:inset 0 1px 2px #7b355106;transition:box-shadow .18s,border-color .18s}input:focus,select:focus,textarea:focus{outline:0;border-color:#e85a97;box-shadow:0 0 0 3px #ffdeed,0 0 14px #fa8db455}.group-progress-card.selected{border-color:#ee5b9a;background:linear-gradient(130deg,#fff,#ffe7f2);box-shadow:0 0 0 1px #f4a8c7,0 0 18px #f589b249}.leg-choice button.chosen{background:linear-gradient(135deg,#ef5fa1,#c91e6b)!important;color:#fff;box-shadow:0 0 0 2px #ffacd0,0 0 16px #fa5b9f90!important}.leg-choice button:not(.chosen){background:#fff0f7!important;color:#943259;box-shadow:none!important;border-color:#f1cfdf!important}.qr-button:hover{transform:none!important}.tournament-link{background:#fff9fc;border:1px solid #f2dce6;border-radius:14px;padding:16px;margin-top:12px;transition:box-shadow .18s}.tournament-link:hover{box-shadow:0 0 16px #f39bc235;border-color:#e997ba}.note{background:linear-gradient(130deg,#fff0f7,#ffedf3);border:1px solid #f4d6e5}.row-actions button:disabled{opacity:.42;box-shadow:none!important}.bracket-wire.advanced{stroke:#f12585;filter:drop-shadow(0 0 3px #ff4f9e) drop-shadow(0 0 8px #ff99c6)}@media(max-width:600px){.play-heading{gap:12px;margin-bottom:20px;min-height:70px}.play-heading img{width:78px;height:66px}.play-heading span{font-size:12px;letter-spacing:1.8px}.wrap{padding-top:24px}}@media(prefers-reduced-motion:reduce){button,.button-link,input,select,textarea{transition:none}button:hover{transform:none}}
