:root{--bg:#f4f4eb;--card:#fffef8;--ink:#183b30;--muted:#6e796d;--line:#dce1d4;--green:#123e31;--lime:#d6f471;--orange:#d66a3c;--red:#aa3933;--radius:20px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;line-height:1.6}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid #a6c34a;outline-offset:4px}input:focus,select:focus,textarea:focus{outline:2px solid #719235;outline-offset:2px}[hidden]{display:none!important}.wrap{width:min(1140px,calc(100% - 48px));margin-inline:auto}.topbar{min-height:100px;display:flex;align-items:center;justify-content:space-between;gap:20px}.clubmark{display:flex;align-items:center;gap:12px;font-size:19px;font-weight:800;letter-spacing:.03em}.clubmark small{display:block;font-size:9px;letter-spacing:.18em;font-weight:500;margin-top:1px}.ball-mark{display:block;width:34px;height:34px;border:2px solid var(--green);border-radius:50%;position:relative;overflow:hidden;transform:rotate(-35deg)}.ball-mark:before,.ball-mark:after{content:"";position:absolute;top:-4px;width:28px;height:38px;border:2px solid var(--green);border-radius:50%}.ball-mark:before{left:-19px}.ball-mark:after{right:-19px}.header-actions{display:flex;gap:18px;align-items:center}.home-link{font-size:12px;color:var(--muted)}.button{display:inline-flex;align-items:center;justify-content:center;gap:26px;min-height:46px;border:1px solid transparent;border-radius:10px;padding:11px 20px;font-weight:700;font-size:14px;background:var(--green);color:white}.button.lime{background:var(--lime);color:var(--green)}.button.ghost{background:transparent;border-color:var(--line);color:var(--ink)}.button.small{min-height:38px;padding:7px 14px;font-size:12px}.button.danger{color:var(--red);background:transparent;border:1px solid #ecd4cc}.hero{min-height:335px;background:var(--green);color:#fffef4;border-radius:24px;position:relative;overflow:hidden;padding:40px 48px;display:flex;isolation:isolate}.hero-content{position:relative;z-index:2}.eyebrow{font-size:11px;font-weight:600;letter-spacing:.15em;display:flex;gap:8px;align-items:center;margin:0 0 16px;color:#dce8c3}.live-dot{width:6px;height:6px;background:var(--lime);border-radius:100%}h1{font-size:clamp(32px,4.6vw,54px);line-height:1.2;letter-spacing:-.025em;margin:0;font-weight:800}.hero-intro{font-size:13px;color:#c2d2c7;margin:17px 0 24px}.hero-actions{display:flex;align-items:center;gap:20px}.hero-rule{background:none;border:none;color:#dce8c3;font-size:12px;padding:10px 0}.court-art{position:absolute;right:8%;top:16%;width:330px;height:230px;transform:rotate(-16deg);z-index:1}.court-lines{position:absolute;inset:0;border:1px solid #86a78a80;box-shadow:inset 0 25px 0 #123e31,inset 0 26px 0 #86a78a60,inset 0 -25px 0 #123e31,inset 0 -26px 0 #86a78a60}.court-lines:after{content:"";position:absolute;left:25%;right:25%;top:50%;border-top:1px solid #86a78a80}.service-line{position:absolute;top:26px;bottom:26px;left:25%;right:25%;border-left:1px solid #86a78a80;border-right:1px solid #86a78a80}.net-line{position:absolute;left:50%;top:-12px;bottom:-12px;border-left:2px dotted #c9d9b885}.orbit{position:absolute;border:1px solid #d6f4712e;border-radius:100%;width:210px;height:210px;top:-16px;right:-30px}.orbit-two{width:290px;height:290px;top:-56px;right:-70px}.hero-ball{position:absolute;width:105px;height:105px;top:25px;right:25px;background:var(--lime);border-radius:100%;box-shadow:15px 22px 30px #061d2270;overflow:hidden;transform:rotate(-25deg)}.hero-ball:before,.hero-ball:after{content:"";position:absolute;top:-13px;width:84px;height:124px;border:3px solid #faffd6;border-radius:100%}.hero-ball:before{left:-61px}.hero-ball:after{right:-61px}.court-label{position:absolute;bottom:-35px;right:0;font-size:8px;letter-spacing:.3em;color:#a1b99d}.hero-number{position:absolute;bottom:-60px;right:12px;font-size:150px;font-weight:900;letter-spacing:-.08em;color:#ffffff05;line-height:1.3}.club-strip{display:flex;align-items:center;gap:42px;padding:23px 6px;border-bottom:1px solid var(--line)}.club-strip>div{display:flex;gap:12px;align-items:baseline}.strip-label{font-size:11px;color:var(--muted)}.club-strip strong{font-size:17px;font-variant-numeric:tabular-nums}.sync-state{margin-left:auto;font-size:10px;color:var(--muted)}.tabs{display:flex;gap:30px;border-bottom:1px solid var(--line);margin:12px 0 30px;overflow:auto;scrollbar-width:none}.tabs button{border:0;background:none;color:var(--muted);padding:17px 2px;font-size:14px;white-space:nowrap;border-bottom:3px solid transparent}.tabs button.active{color:var(--green);font-weight:800;border-bottom-color:var(--green)}#content{min-height:320px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}.section-head h2{font-size:24px;letter-spacing:-.04em;margin:0 0 4px}.section-head p{margin:0;color:var(--muted);font-size:12px}.select{padding:8px 12px;border:1px solid var(--line);border-radius:9px;background:var(--card);color:var(--ink);max-width:100%}.board-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:24px;align-items:start}.table-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.ranking{width:100%;border-collapse:collapse;text-align:left;font-size:13px}.ranking th{font-size:10px;font-weight:500;letter-spacing:.05em;color:var(--muted);background:#edeee54d;padding:14px 18px;border-bottom:1px solid var(--line)}.ranking td{padding:19px 18px;border-bottom:1px solid #e9ebe2;font-variant-numeric:tabular-nums}.ranking tr:last-child td{border-bottom:0}.rank-number{font-size:20px;font-weight:700;color:#8a927e;width:40px}.rank-number.first{color:var(--green)}.player{display:flex;align-items:center;gap:10px}.avatar{width:36px;height:36px;flex:none;background:#e8eddb;border-radius:50%;display:grid;place-items:center;font-size:13px;color:var(--green);font-weight:600}.avatar.tone-1{background:#ece1d4;color:#8e5739}.avatar.tone-2{background:#e0e7ef;color:#4b6274}.avatar.tone-3{background:#efe6c8;color:#7b692b}.avatar.tone-4{background:#e8deea;color:#7c6179}.player-name{padding:0;background:none;border:0;text-align:left;color:var(--ink);font-size:13px;font-weight:700}.player small{display:block;color:var(--muted);font-size:10px;font-weight:400}.points{font-size:26px;font-weight:750;letter-spacing:-.04em;color:var(--green)}.table-foot{margin:0;padding:13px 18px;border-top:1px solid var(--line);font-size:10px;color:var(--muted)}.side-card{border:1px solid var(--line);border-radius:var(--radius);padding:24px;background:#e8edde;margin-bottom:16px}.side-card.light{background:transparent}.side-label{font-size:10px;letter-spacing:.14em;color:var(--muted);margin:0 0 18px}.side-card h3{font-size:20px;line-height:1.5;margin:0 0 12px}.side-card p{font-size:12px;color:var(--muted)}.rule-metrics{display:flex;gap:28px;margin:22px 0}.rule-metrics strong{display:block;font-size:28px;color:var(--green);line-height:1.2}.rule-metrics span{font-size:10px;color:var(--muted)}.mini-link{border:0;background:none;font-size:12px;color:var(--green);font-weight:700;padding:0;cursor:pointer}.tag{display:inline-block;border-radius:5px;padding:3px 7px;font-size:10px;line-height:1.4;background:#edf0e3;color:#65764e;white-space:nowrap}.tag.pending{background:#fff0d8;color:#946524}.tag.confirmed{background:#e1eedc;color:#386c40}.tag.expired{background:#eee5df;color:#8a7163}.tag.lime{background:var(--lime);color:var(--green)}.delta{font-size:10px;color:#62814a;display:block}.empty{text-align:center;padding:45px 24px;color:var(--muted);border:1px dashed #c9d0bf;border-radius:var(--radius)}.empty-symbol{font-size:32px;color:#8a9b74}.empty h2,.empty h3{font-size:18px;color:var(--ink);margin:10px 0}.empty p{font-size:13px;margin:6px 0}.empty .button{margin-top:14px}.notice{font-size:12px;color:var(--muted);background:#e9ede0;padding:14px 17px;border-radius:12px;margin:16px 0}.match-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.match-card{background:var(--card);border:1px solid var(--line);padding:22px;border-radius:var(--radius)}.match-meta{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--muted);gap:10px}.match-score{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:12px;margin:22px 0}.match-player{text-align:center;font-size:15px;font-weight:600;overflow-wrap:anywhere}.match-player .avatar{margin:0 auto 8px}.score-digits{text-align:center;font-size:28px;font-weight:750;letter-spacing:.05em;line-height:1.1;white-space:nowrap}.score-digits small{display:block;font-size:10px;color:var(--muted);letter-spacing:0;font-weight:400;margin-top:10px}.match-actions{border-top:1px solid #e9ebe2;padding-top:14px;display:flex;flex-wrap:wrap;gap:8px}.match-actions:empty{display:none}.match-note{font-size:11px;color:var(--muted);margin:0}.filter-row{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0}.filter-chip{font-size:12px;border:1px solid var(--line);border-radius:100px;padding:6px 14px;background:none;color:var(--muted)}.filter-chip.active{background:var(--green);color:#fff;border-color:var(--green)}.challenge-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.challenge-card{border:1px solid var(--line);background:var(--card);padding:25px;border-radius:var(--radius)}.challenge-top{display:flex;justify-content:space-between;gap:12px;align-items:start}.challenge-top h3{margin:0;font-size:20px}.challenge-top small{font-size:11px;color:var(--muted)}.challenge-progress{display:flex;gap:8px;margin:24px 0 12px}.challenge-progress span{flex:1;height:6px;border-radius:4px;background:#e6e9df}.challenge-progress .done{background:#739448}.challenge-wins{font-size:12px;color:var(--muted);min-height:26px}.challenge-bottom{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}.challenge-bottom strong{font-size:28px;line-height:1}.challenge-bottom strong small{font-size:12px;color:var(--muted);font-weight:400}.rules-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.rule-card{border:1px solid var(--line);background:var(--card);padding:26px;border-radius:var(--radius)}.rule-card .number{font-size:10px;color:var(--muted);letter-spacing:.15em}.rule-card h3{font-size:20px;margin:10px 0}.rule-card p,.rule-card li{font-size:13px;color:var(--muted);line-height:1.9}.rule-card ul{padding-left:18px}.rule-card li+li{margin-top:5px}.rules-formula{font-family:monospace;background:#edf0e5;padding:12px;border-radius:9px;overflow-wrap:anywhere;font-size:11px}.footer{display:flex;justify-content:space-between;gap:20px;padding:36px 0;margin-top:38px;font-size:10px;color:var(--muted);border-top:1px solid var(--line)}.footer b{padding:0 7px;font-weight:400}.footer a{font-size:10px}dialog{width:min(480px,calc(100% - 32px));max-height:calc(100dvh - 40px);border:1px solid var(--line);border-radius:22px;padding:28px;background:var(--card);color:var(--ink);box-shadow:0 24px 80px #132c3540}dialog::backdrop{background:#13292199;backdrop-filter:blur(3px)}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.modal-head h2{margin:0;font-size:22px}.close-button{width:34px;height:34px;flex:none;display:grid;place-items:center;border:1px solid var(--line);border-radius:100%;background:transparent;color:var(--muted);font-size:22px;padding:0}.field{display:flex;flex-direction:column;gap:6px;margin:15px 0}.field label{font-size:12px;font-weight:650}.field input,.field select,.field textarea{width:100%;min-height:46px;border:1px solid #cdd4c4;border-radius:9px;padding:10px 12px;color:var(--ink);background:white;font-size:14px}.field textarea{resize:vertical}.field small,.form-help{font-size:11px;color:var(--muted)}.form-help{margin:4px 0 14px}.form-error{color:var(--red);font-size:12px;margin:12px 0;min-height:18px}.full{width:100%}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.score-fields input{text-align:center;font-size:28px;font-weight:700}.score-fields label{text-align:center}.check-field{display:flex;align-items:center;gap:8px;font-size:12px;margin:16px 0}.code-box{display:block;width:100%;min-height:90px;padding:14px;background:#e8eddb;border:1px solid #ced7bc;border-radius:10px;font-family:monospace;font-size:14px;overflow-wrap:anywhere;white-space:pre-wrap;color:var(--ink)}.toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);max-width:calc(100% - 40px);border-radius:10px;padding:12px 22px;background:var(--green);color:#fff;font-size:13px;box-shadow:0 8px 20px #0002;z-index:100;white-space:normal}.admin-users{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.admin-user{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px;border:1px solid var(--line);border-radius:15px;background:var(--card)}.admin-user strong{display:block}.admin-user small{display:block;color:var(--muted);font-size:11px}.audit-row{border-bottom:1px solid var(--line);padding:14px 0;font-size:12px}.audit-row small{display:block;color:var(--muted);font-size:10px}.audit-row pre{font-size:10px;white-space:pre-wrap;overflow-wrap:anywhere}.profile-stats{display:grid;grid-template-columns:repeat(3,1fr);text-align:center;gap:10px;padding:20px 0}.profile-stats strong{display:block;font-size:26px}.profile-stats small{font-size:11px;color:var(--muted)}.profile-match{display:flex;justify-content:space-between;border-top:1px solid var(--line);font-size:12px;padding:12px 0}.archive-chip{font-size:11px;margin:10px 0;color:var(--muted)}.board-empty{padding:15px 18px;font-size:11px;color:var(--muted);background:#fafbee}
@media(max-width:900px){.board-layout{grid-template-columns:minmax(0,1fr) 230px;gap:16px}.court-art{right:5%;width:270px;height:190px}.club-strip{gap:24px}.club-strip>div{gap:8px}.sync-state{display:none}.ranking th,.ranking td{padding-left:13px;padding-right:13px}.home-link{display:none}}
@media(max-width:680px){.wrap{width:calc(100% - 32px)}.topbar{min-height:82px;gap:8px}.clubmark{font-size:16px;gap:9px}.clubmark small{font-size:7px;letter-spacing:.16em}.ball-mark{width:29px;height:29px}.header-actions{gap:5px}.header-actions .button{font-size:11px;padding:7px 10px}.hero{padding:30px 25px;min-height:295px;border-radius:20px}.hero h1{font-size:36px}.hero-intro{font-size:11px;max-width:230px}.hero-actions{gap:14px}.hero-rule{font-size:10px}.hero-actions .button{font-size:12px;padding:10px 16px;gap:22px}.court-art{width:165px;height:124px;right:-58px;top:28%;opacity:.45}.hero-ball{width:70px;height:70px;top:7px;right:36px}.hero-ball:before,.hero-ball:after{height:84px;width:60px;top:-8px}.hero-ball:before{left:-47px}.hero-ball:after{right:-47px}.court-label{display:none}.orbit{width:150px;height:150px;top:-35px;right:-8px}.orbit-two{width:200px;height:200px;top:-60px;right:-33px}.hero-number{font-size:130px;right:-5px;bottom:-35px}.club-strip{gap:0;padding:20px 0;justify-content:space-between}.club-strip>div{display:block}.strip-label{font-size:9px;display:block;margin-bottom:5px}.club-strip strong{font-size:14px}.tabs{gap:24px;margin:8px 0 25px}.tabs button{font-size:13px;padding:15px 0}.section-head{gap:12px;margin-bottom:16px}.section-head h2{font-size:22px}.section-head p{font-size:11px}.select{font-size:12px;padding:7px 8px}.board-layout,.match-list,.challenge-grid,.rules-grid,.admin-users{grid-template-columns:1fr}.board-sidebar{display:grid;grid-template-columns:1fr 1fr;gap:12px}.side-card{padding:18px;margin:0}.side-card h3{font-size:16px}.side-card p{font-size:11px}.side-label{font-size:9px;margin-bottom:10px}.rule-metrics{gap:22px;margin:16px 0}.rule-metrics strong{font-size:24px}.ranking th,.ranking td{padding:15px 10px}.ranking th{font-size:9px}.ranking td{font-size:12px}.ranking .avatar{width:29px;height:29px;font-size:11px}.ranking .player{gap:7px}.ranking .player-name{font-size:12px}.ranking .rank-number{font-size:16px;width:25px}.points{font-size:23px}.ranking .optional-col{display:none}.footer{flex-direction:column;gap:8px;margin-top:28px;padding:26px 0}.match-card{padding:19px}.section-head .button{font-size:11px;min-height:38px;padding:8px 12px;white-space:nowrap}.rule-card{padding:22px}dialog{padding:22px}.form-row{gap:12px}.match-score{gap:8px}.toast{bottom:18px}.player small{font-size:9px}}
@media(prefers-reduced-motion:no-preference){.button,.filter-chip{transition:background .15s,transform .15s}.button:hover{transform:translateY(-1px)}.hero-ball{animation:float 7s ease-in-out infinite}@keyframes float{50%{transform:translateY(-8px) rotate(-20deg)}}}
