@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Noto+Sans+JP:wght@400;500;600;700&display=swap";:root{color:#142222;background:#f5f8f7;font-family:DM Sans,Noto Sans JP,sans-serif}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer}header{z-index:10;background:#fff;border-bottom:1px solid #dce8e4;align-items:center;gap:22px;height:72px;padding:0 clamp(16px,3vw,42px);display:flex;position:relative}.menu{color:#124e47;background:0 0;border:0;width:36px;font-size:25px}.brand{letter-spacing:.02em;font-size:20px;font-weight:700}.brandmark{color:#eb6b44;margin-right:12px}.brandthin{color:#81918d;font-size:12px;font-weight:500}.live{color:#4a7770;background:#e9f3f0;border-radius:100px;margin-left:auto;padding:8px 14px;font-size:13px;font-weight:700}.scrim{z-index:8;background:#0d262344;border:0;position:fixed;inset:72px 0 0}nav{z-index:9;background:#fff;width:min(320px,90vw);padding:22px;position:fixed;top:72px;bottom:0;left:0;box-shadow:15px 0 40px #0d262320}nav button{text-align:left;color:#1b3631;background:0 0;border:0;border-radius:10px;justify-content:space-between;width:100%;padding:18px 14px;font-weight:600;display:flex}nav button.active{color:#116d5d;background:#e5f3ef}nav span{color:#9bb0ab}main{max-width:1500px;margin:auto;padding:clamp(24px,4vw,56px)}.heading{justify-content:space-between;align-items:end;gap:20px;margin-bottom:28px;display:flex}.eyebrow{letter-spacing:.16em;color:#488174;margin:0 0 9px;font-size:12px;font-weight:700}h1{letter-spacing:-.035em;margin:0;font-size:clamp(30px,4vw,46px);line-height:1.2}h2{margin:0 0 20px;font-size:20px}h3{margin:28px 0 16px;font-size:17px}.switch{background:#e5eeeb;border-radius:12px;gap:3px;padding:5px;display:flex}.switch button{color:#607871;background:0 0;border:0;border-radius:9px;padding:10px 20px;font-weight:700}.switch button.on{color:#fff;background:#156c5b}.notice{color:#145e51;background:#e4f2ed;border:1px solid #b5d9cd;border-radius:9px;margin-bottom:20px;padding:12px 16px}.overview{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}.info,.panel{background:#fff;border:1px solid #dce8e4;border-radius:16px;padding:26px;box-shadow:0 4px 20px #143d3308}.info{min-height:170px}.info p:last-child{color:#9aa9a4;margin-top:34px}.summary{color:#d5ebe4;background:#134e44;border-radius:13px;flex-wrap:wrap;align-items:center;gap:20px;margin-bottom:18px;padding:18px 24px;font-size:14px;display:flex}.summary span:first-child{margin-right:auto;font-size:17px}.summary b{color:#fff;font-size:28px}.bracket{grid-template-columns:repeat(4,minmax(230px,1fr));gap:16px;padding-bottom:15px;display:grid;overflow-x:auto}.round{min-width:230px}.round h2{color:#66837a;letter-spacing:.08em;text-transform:uppercase;margin:8px 0 15px;font-size:13px}.match{background:#fff;border:1px solid #d8e4df;border-radius:12px;margin-bottom:15px;padding:12px;box-shadow:0 3px 12px #143d3306}.matchno{color:#79928a;margin:2px 3px 8px;font-size:11px;font-weight:700}.team{background:#f6f9f7;border-radius:6px;justify-content:space-between;align-items:center;gap:8px;min-height:42px;margin:3px 0;padding:10px 12px;font-size:14px;display:flex}.team.winner{color:#0f6653;background:#e2f4eb;font-weight:700}.team span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.team strong{font-size:16px}.match small{color:#6f8980;margin:8px 3px 2px;display:block}.resultgrid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;display:grid}.panel label{color:#5b766d;font-size:14px;font-weight:600;display:block}.panel select,.panel input{color:#16372f;background:#fff;border:1px solid #cdded7;border-radius:9px;outline-color:#19826c;width:100%;margin-top:8px;padding:12px}.scoreline{align-items:end;gap:16px;margin:24px 0;display:flex}.scoreline label{flex:1}.scoreline label span{color:#1b3932;min-height:44px;font-size:16px;display:block}.scoreline input{text-align:center;font-size:22px;font-weight:700}.scoreline>span{color:#8aa198;padding-bottom:14px}.primary{color:#fff;background:#156c5b;border:0;border-radius:9px;padding:13px 22px;font-weight:700}.primary:disabled{opacity:.45;cursor:not-allowed}.hint{color:#71867e;font-size:14px;line-height:1.7}.empty{color:#91a29b}.history{text-align:left;color:#203a32;background:#fff;border:0;border-top:1px solid #e5eeea;grid-template-columns:85px 1fr auto;align-items:center;gap:12px;width:100%;padding:17px 0;display:grid}.history span{color:#738b82;font-size:13px}.history b{font-size:14px}.history em{color:#14745e;font-size:13px;font-style:normal}.setup{gap:18px;max-width:850px;display:grid}.inline{align-items:end;gap:12px;display:flex}.inline input{max-width:360px;margin:0}.teamlist{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.teamlist label{align-items:center;gap:10px;display:flex}.teamlist label span{color:#7b9289;min-width:55px;font-size:13px}.teamlist input{margin:0}footer{text-align:center;color:#9ab0a6;letter-spacing:.2em;padding:30px;font-size:11px}@media (max-width:850px){.overview,.resultgrid{grid-template-columns:1fr}.bracket{grid-template-columns:repeat(4,260px)}.heading{flex-direction:column;align-items:start}.brandthin{display:none}}@media (max-width:560px){.teamlist{grid-template-columns:1fr}.history{grid-template-columns:65px 1fr}.history em{grid-column:2}.live{display:none}.scoreline{gap:8px}.panel{padding:20px}}.overview-value{white-space:pre-wrap;overflow-wrap:anywhere;margin-top:26px;line-height:1.75}.muted{color:#9aa9a4;margin-top:34px}.overview-edit{margin-top:18px}.overview-form{max-width:850px;margin-top:18px}.overview-form label{margin:18px 0;display:block}.overview-form textarea{color:#16372f;resize:vertical;width:100%;font:inherit;background:#fff;border:1px solid #cdded7;border-radius:9px;outline-color:#19826c;margin-top:8px;padding:12px;display:block}.actions{gap:10px;display:flex}.secondary{color:#145e51;background:#fff;border:1px solid #bad4ca;border-radius:9px;padding:12px 20px;font-weight:700}.bracket-scroll{padding:0 0 10px;overflow-x:auto}.bracket-canvas{width:1220px;height:760px;position:relative}.bracket-match .matchno{white-space:nowrap;text-overflow:ellipsis;justify-content:space-between;gap:4px;height:25px;display:flex;overflow:hidden}.bracket-match .matchno span{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.bracket-match .team{height:37px;min-height:0;padding:7px 10px}.bracket-hint{margin:0 0 20px}.resultgrid .panel>label{margin-top:14px;display:block}.resultgrid .panel>label select{display:block}.resultgrid .scoreline label{margin:0}.switch button.on.b-on{color:#145d4c;background:#dff2e6}.summary.league-b{color:#155443;background:#dff2e6}.summary.league-b b{color:#155443}.summary.league-a{color:#d5ebe4;background:#134e44}.summary.league-a b{color:#fff}.bracket-scroll{width:100%;padding:0 0 12px;overflow:auto hidden}.bracket-canvas{min-height:220px;position:relative}.connectors{position:absolute;inset:0;overflow:visible}.connectors path{fill:none;stroke:#2a9c7d;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round}.round-title{color:#456f61;letter-spacing:.04em;width:270px;font-size:14px;font-weight:700;position:absolute;top:0}.bracket-match{background:#fff;border:1px solid #cfe0d8;border-radius:12px;width:270px;height:146px;padding:10px;position:absolute;box-shadow:0 4px 16px #143d330a}.bracket-match .matchno{height:23px;margin:0 3px 3px;font-size:12px}.bracket-match .team{height:35px;min-height:0;margin:3px 0;padding:5px 10px}.bracket-match .team input{color:#173b31;background:#fff;border:1px solid #bbd6ca;border-radius:5px;width:100%;min-width:0;padding:5px 7px;font-size:14px}.bracket-match .team input:focus{outline:2px solid #3ba288}.bracket-match .match-schedule{color:#68877b;white-space:nowrap;text-overflow:ellipsis;margin:3px 4px;font-size:11px;overflow:hidden}.bracket-match .schedule-input{border:1px solid #c8ddd2;border-radius:5px;width:100%;height:24px;padding:2px 7px;font-size:12px}.bye-match{border-style:dashed}.bye-match .team:nth-of-type(3){color:#66867a;background:#eef5f1}.setup-bracket{overflow:hidden}.count-label{max-width:260px;margin-bottom:18px;display:block}.setup-save{margin-top:18px}.summary.league-b+.bracket-scroll .bye-match .team:nth-of-type(3){background:#e0eee5}.resultgrid select{min-width:0}.brand{font-size:20px}.heading{align-items:center}.overview .info p:last-child,.overview .overview-value{color:#142222}.summary.league-a b,.summary.league-b b{font-size:23px}.summary.league-b+.bracket-scroll .bracket-match{background:#fff}.summary.league-b+.bracket-scroll .team{background:#f6f9f7}.summary.league-b+.bracket-scroll .team.winner{color:#0f6653;background:#e2f4eb}.bracket-match{width:260px;height:124px;padding:10px}.bracket-match .matchno{height:21px}.bracket-match .team{height:35px}.bracket-match .match-schedule{font-size:11px}.connectors path{stroke:#5d9b89;stroke-width:2.5px}.round-title{width:260px}.setup{max-width:none}.admin-gate{max-width:620px}.admin-gate h2{margin-bottom:14px}.league-editor{margin-top:18px}.league-editor-heading{align-items:center;gap:16px;margin-bottom:12px;display:flex}.league-editor-heading h2{margin:0}.league-editor-heading span{color:#156c5b;font-weight:700}.league-editor-body{grid-template-columns:330px minmax(0,1fr);align-items:start;gap:24px;display:grid}.league-editor h3,.roster-column .hint{margin:0 0 12px}.roster-list{background:#f8fbf9;border:1px solid #dce8e4;border-radius:10px;max-height:850px;padding:8px;overflow-y:auto}.roster-row{background:#fff;border:1px solid #dce8e4;border-radius:7px;align-items:center;gap:6px;min-height:43px;padding:4px 6px;display:flex}.row-number{text-align:center;color:#6f8a7e;min-width:25px;font-size:12px;font-weight:700}.roster-row input{color:#14362c;background:0 0;border:0;outline:0;flex:1;min-width:0;font-size:14px}.drag-handle{cursor:grab;color:#417a69;-webkit-user-select:none;user-select:none;padding:4px 5px;font-size:15px}.drag-disabled{opacity:.25;cursor:default}.move-buttons{gap:1px;display:flex}.move-buttons button{color:#4b7a6d;background:0 0;border:0;padding:3px;font-size:13px}.move-buttons button:disabled{opacity:.25}.drop-gap{border-radius:3px;height:8px}.drop-active{background:#47aa8c}.preview-column{min-width:0}.preview-column .bracket-scroll{border:1px solid #e2ede7;border-radius:10px;max-height:850px;padding:10px;overflow:auto}.preview-column .bracket-canvas{margin:0}.empty-preview{color:#608174;border:1px dashed #c3d9ce;border-radius:10px;padding:40px}.editor-actions{flex-wrap:wrap;align-items:center;gap:16px;margin-top:18px;display:flex}.editor-actions .hint{margin:0}.league-editor .schedule-input{width:100%;height:22px;font-size:12px}.league-editor .bracket-match{height:126px}@media (max-width:900px){.league-editor-body{grid-template-columns:1fr}.roster-list{max-height:500px}.preview-column .bracket-scroll{max-height:650px}}.summary.league-b+.bracket-scroll .team{background:#fff;border:1px solid #edf1ed}.summary.league-b+.bracket-scroll .team.winner{background:#e2f4eb;border-color:#c9e7d5}.drag-handle{touch-action:none}.roster-row.row-dragging{opacity:.55;border-color:#58aa8e}.history-row{border-top:1px solid #e5eeea;grid-template-columns:minmax(0,1fr) auto;align-items:stretch;display:grid}.history-row .history{border:0;min-width:0}.delete-result{color:#b34242;background:#fff;border:0;padding:12px 6px 12px 14px;font-weight:700}:is(.delete-result:hover,.delete-result:focus-visible){text-decoration:underline}
