.dc-main{--dc-bg:#fff;--dc-fg:#111827;--dc-muted:#64748b;--dc-border:#e5e7eb;--dc-card:#f8fafc;--dc-link:#2563eb;--dc-good:#166534;--dc-good-bg:#dcfce7;--dc-bad:#991b1b;--dc-bad-bg:#fee2e2;box-sizing:border-box;max-width:860px;margin:0 auto;padding:0 12px 20px;color:var(--dc-fg);background:var(--dc-bg);font:16px/1.5 "Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,sans-serif}
body{margin:0;background:var(--fs-app-bg,#fff)}.dc-main *{box-sizing:border-box}.dc-main .level-title{width:auto;margin:0 -12px;padding:0 10px;background:#000;color:#fff;font-size:17px;font-weight:600;min-height:25px;line-height:25px}.dc-main a{color:var(--dc-link)}.dc-game{max-width:440px;margin:0 auto}.dc-board-wrap{position:relative;width:380px;max-width:100%;margin:0 auto}.dc-board-wrap iframe{display:block;border:0;width:380px;max-width:100%}.dc-board-wrap button{position:absolute;bottom:10px;right:10px;background:var(--dc-bg);color:var(--dc-fg);border:1px solid var(--dc-border);border-radius:10px;padding:6px 14px;font:inherit;font-size:15px;font-weight:700;cursor:pointer}.dc-board-wrap button:disabled{opacity:.5;cursor:wait}#dcTurn,#dcResult{max-width:380px;margin:8px auto;font-size:15px}#dcResult{padding:10px;border-radius:10px;background:var(--dc-bad-bg);color:var(--dc-bad);font-weight:700}#dcResult[data-win="1"]{background:var(--dc-good-bg);color:var(--dc-good)}.dc-stats{max-width:440px;border:1px solid var(--dc-border);border-radius:12px;background:var(--dc-card);padding:10px;font-size:14px}.dc-source{font-size:13px;color:var(--dc-muted);margin-top:18px}.dc-card{margin:18px 0}.dc-card h2.level-title{font-weight:600}.dc-card-body{display:flex;gap:16px;padding:12px 0;align-items:flex-start}.dc-card-body>a{flex:0 0 36%;max-width:256px}.dc-preview-image{display:block;width:100%;height:auto}.dc-card-copy{flex:1;min-width:0;font-size:14px;overflow-wrap:anywhere}.dc-card-copy p{margin:0 0 8px}.dc-card-copy .dc-stats{padding:8px}.dc-enter{font-weight:800;text-decoration:none}
html.fs-app-theme-dark .dc-main{--dc-bg:var(--fs-app-bg,#0b1018);--dc-fg:var(--fs-app-text,#f1f5f9);--dc-muted:var(--fs-app-muted,#94a3b8);--dc-border:var(--fs-app-border,#3a414c);--dc-card:var(--fs-app-surface,#151d2a);--dc-link:var(--fs-app-link,#93c5fd);--dc-good:#bbf7d0;--dc-good-bg:#14532d;--dc-bad:#fecaca;--dc-bad-bg:#7f1d1d}
@media(max-width:420px){.dc-card-body{gap:10px}.dc-card-body>a{flex-basis:38%}.dc-card-copy,.dc-card-copy .dc-stats{font-size:13px}.dc-main{padding:0 10px 16px}.dc-main .level-title{margin-left:-10px;margin-right:-10px}}

.dc-main .dc-title-bar{height:25px;min-height:25px;line-height:25px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dc-title-bar [data-daily-title]{display:block;width:100%;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:inherit;font-size:17px}html.fs-embed .dc-main .dc-title-bar{height:33px;min-height:33px;line-height:33px}
.dc-main .dc-game-title{display:flex;align-items:center;gap:7px}.dc-game-title .dc-title-level{flex:none;white-space:nowrap;font-size:15px}.dc-game-title [data-daily-title]{flex:1;min-width:0;width:auto}.dc-solvers{margin:16px 0;padding:10px;border-top:1px solid var(--dc-border)}.dc-solvers h2{font-size:15px;margin:0 0 8px}.dc-solvers p,.dc-solvers li,.dc-login-notice{font-size:14px}.dc-solvers p{color:var(--dc-muted)}.dc-solvers ul{display:flex;flex-wrap:wrap;gap:6px 18px;padding-left:18px;margin:0}.dc-solvers li{overflow-wrap:anywhere;max-width:100%}.dc-login-notice{padding:10px;border:1px solid var(--dc-border);border-radius:10px;background:var(--dc-card)}
.dc-game-title .dc-title-name{flex:0 1 auto;min-width:0;max-width:43%;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dc-game-title [data-daily-title]{font-size:15px}

/* 기존 index GBOARD(16px×8+2px frame)의 132px 표시 폭을 기준으로 한다. */
.dc-card-body>a{flex:0 0 132px;max-width:132px}
.dc-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.dc-stat{display:flex;min-width:0;flex-direction:column;gap:3px;align-items:center;text-align:center}.dc-stat-label{font-size:12px;line-height:1.25;color:var(--dc-muted);overflow-wrap:anywhere}.dc-stat-value{font-size:18px;line-height:1.3;font-variant-numeric:tabular-nums;color:var(--dc-fg)}.dc-card-copy .dc-stats{grid-template-columns:repeat(auto-fit,minmax(75px,1fr))}
/* 기존 endgame #pzTitleBar의 margin-bottom:6px와 같은 선수 머리줄 간격. */
.dc-main>.dc-title-bar{margin-bottom:6px}.dc-game-title.fs-has-home-back{gap:0}.dc-game-title .dc-title-name{max-width:38%}.dc-solvers .pz-player-cell{display:inline-flex;align-items:center;min-width:0;max-width:100%}
.dc-game-title .dc-title-name{max-width:none;flex:0 1 auto}.dc-game-title .dc-title-level{margin-right:auto}.dc-tournament-meta{display:block;max-width:440px;margin:8px auto 6px;font-size:14px;line-height:1.35;overflow-wrap:anywhere}.dc-tournament-meta>[data-host-country]{display:inline}.dc-turn-disc{width:20px;height:20px;flex:none;object-fit:contain;vertical-align:middle}#dcTurn,.dc-card-turn{display:flex;align-items:center;gap:6px}#dcTurn[hidden]{display:none}.dc-card-turn{font-size:13px;line-height:1.35}
.dc-stat-value{color:var(--dc-link)}
/* 공용 헤더가 #pzTitle에 적용하는 31px 화살표 + 6px 여백을 그대로 사용한다. */
.dc-main .dc-game-heading{display:flex!important;align-items:center;flex:1 1 auto;min-width:0;gap:5px;line-height:inherit}.dc-game-heading .dc-title-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dc-game-heading .dc-title-level{flex:none}
/* 후원자 명단과 같은 4열/모바일 2열, 10×18px 간격. 공용 로비 닉네임 셀은 그대로 둔다. */
.dc-solvers ul{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px 18px;padding:0;margin:4px 0 0;list-style:none}.dc-solvers li{min-width:0;overflow:hidden;list-style:none}.dc-solvers .ob-recent-fallback-player{width:100%}@media(max-width:620px){.dc-solvers ul{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:12px}}
/* 다른 퍼즐과 같은 PuzzleZoom/보드 ID를 사용해 PC 확대와 모바일 full-bleed를 공유한다. */
.dc-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}.dc-layout .dc-game{width:100%;max-width:none;min-width:0}.dc-layout .dc-board-wrap{display:flex;justify-content:center;width:100%;max-width:none}.dc-layout .dc-board-wrap iframe{flex:none}.dc-layout .dc-solvers{min-width:0;margin:0;padding:10px 0}.dc-layout .dc-solvers ul{grid-template-columns:repeat(2,minmax(0,1fr))}
.dc-controls{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:34px}.dc-controls #dcRetry{margin-left:auto}.dc-main .dc-tournament-meta{font-weight:700}
body.pz-zoom .dc-main #ocInlineWrap{width:auto;max-width:none}body.pz-zoom .dc-main #ocviewerFrame{max-width:none}body.pz-zoom .dc-main #pzTitleBar{width:auto;padding-right:10px}body.pz-zoom .dc-main .dc-solvers{padding:0 0 16px;border-top:0}body.pz-zoom .dc-main :is(#dcTurn,#dcResult,.dc-stats){max-width:none;margin:0}
html:not(.fs-embed) body.pz-zoom #pzTitleBar>.fs-home-back{display:none}
@media(min-width:992px){.dc-main{max-width:1100px}.dc-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px}.dc-layout .dc-solvers{border-top:0}}
.dc-main #pzResult[hidden]{display:none!important}.dc-main #pzDifficulty{min-width:0;max-width:100%;font-size:13px;line-height:1.5;color:var(--dc-muted);font-weight:400;overflow-wrap:anywhere}.dc-main #pzResult .verdict{font-weight:700}.dc-main #pzResult>.row{display:flex;flex-wrap:wrap;gap:4px 12px}.dc-main #pzResult>.row>div{width:auto;max-width:100%}
.dc-main .dc-title-bar.fs-has-home-back{display:flex;align-items:center;gap:0}.dc-main .dc-title-bar.fs-has-home-back #pzTitle{color:#fff;min-width:0}
/* 모바일에서 숨기는 기존 순위표와 달리 daily 성공자 목록은 1단 아래에도 표시한다. */
html.fs-embed body:not(.pz-zoom) .dc-main .dc-layout .dc-solvers{display:block!important}
/* 일반 2단은 스프린트의 Bootstrap container + 55:45 컬럼을 그대로 사용한다.
   웹 홈 어댑터의 .row 초기화만 이 퍼즐 범위에서 되돌린다. */
.dc-main--play{max-width:none;padding-left:0;padding-right:0}.dc-main--play>.dc-title-bar{margin-left:0;margin-right:0}.dc-main .dc-layout{display:block;padding-left:10px;padding-right:10px}.dc-main .dc-layout>.row{display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y,1rem));margin-left:calc(-.5 * var(--bs-gutter-x,1rem));margin-right:calc(-.5 * var(--bs-gutter-x,1rem));gap:0}.dc-main .dc-layout>.row>.col-12{box-sizing:border-box;width:100%;max-width:100%;min-width:0;margin-top:var(--bs-gutter-y,1rem);padding-left:calc(.5 * var(--bs-gutter-x,1rem));padding-right:calc(.5 * var(--bs-gutter-x,1rem));flex-shrink:0}.dc-main .dc-layout .dc-solvers{margin-top:16px}
.dc-main #dcTurn{color:var(--dc-fg);font-weight:400}.dc-main #dcTurn strong{font-weight:700}
@media(min-width:992px){.dc-main .dc-layout{padding-left:0;padding-right:0}.dc-main .dc-layout>.row>.pz-col-board{flex:0 0 auto;width:55%;max-width:55%}.dc-main .dc-layout>.row>.pz-col-rank{flex:0 0 auto;width:45%;max-width:45%}}
.dc-controls.dc-controls--inline{min-height:0}.dc-board-wrap #dcRetry{margin:0}.dc-main #dcTurn{color:var(--dc-fg)!important}
/* 기존 오늘의 엔딩(puzzle/index.php) 결과 외형. Rating/Solved만 같은 상자에 덧붙인다. */
.dc-main #pzResult{max-width:380px;margin:5px auto;box-sizing:border-box;padding:8px;border:0;border-radius:8px;background:var(--dc-card);font-size:14px;text-align:center;font-weight:400}.dc-main #pzResult.correct{background:var(--dc-good-bg);color:var(--dc-good)}.dc-main #pzResult.wrong{background:var(--dc-bad-bg);color:var(--dc-bad)}.dc-main #pzResult.first{background:#fef9c3;color:#854d0e}.dc-main #pzResult .verdict{font-weight:800;font-size:16px}.dc-main #pzDifficulty{color:inherit;font-size:13px;line-height:1.5;font-weight:400}
html.fs-app-theme-dark .dc-main #pzResult.first{background:#713f12;color:#fef08a}
.dc-solvers{border-top:0}.dc-solvers-card{min-width:0;margin:0;padding:12px;border:1px solid var(--dc-border);border-radius:12px;background:var(--dc-card);color:var(--dc-fg)}.dc-solvers-card>h2{margin:0 0 10px}.dc-solvers-card>p{margin:0 0 8px}.dc-solvers-card>ul{margin:0}
/* 기존 결과 외형을 유지하되 2단에서는 우측 패널의 폭을 채운다. */
body.pz-zoom .dc-main #pzResult{width:100%;max-width:none;margin:0}@media(min-width:992px){.dc-main #pzResult{width:100%;max-width:none}}
/* 1단 통계→성공자 카드의 margin 16 + padding 10 중복만 없앤다. 내부 padding은 유지한다. */
@media(max-width:991.98px){body:not(.pz-zoom) .dc-main .dc-layout .dc-solvers{margin-top:10px;padding-top:0}}

/* 웹 index 소개 카드만: 대회는 보드 우측 정보 맨 위, 지표 세 묶음은 같은 행에 둔다. */
.dc-public-index .dc-card-copy>.dc-tournament-meta{max-width:none;margin:0 0 8px;font-size:14px;line-height:1.35}
.dc-public-index .dc-card-turn .dc-turn-disc{width:16px;height:16px}
.dc-public-index .dc-card-copy>.dc-stats{max-width:none;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:6px;row-gap:0;padding:8px 6px}
.dc-public-index .dc-stat{display:grid;grid-template-rows:1fr auto;justify-items:center;align-items:start;gap:3px}.dc-public-index .dc-stat-label{font-size:12px;word-break:normal;overflow-wrap:anywhere}
.dc-public-index .dc-stat-value{font-size:16px;white-space:nowrap}
@media(max-width:420px){.dc-public-index .dc-card-copy>.dc-stats{column-gap:4px;padding-left:4px;padding-right:4px}.dc-public-index .dc-stat-value{font-size:14px}}

/* 발행 보조행은 1단/2단 공통으로 왼쪽 10px 들인다. */

/* 1단 차례 안내의 위 여백만 기존 8px에서 3px로 줄인다. 2단과 아래 여백은 유지한다. */
@media(max-width:991.98px){body:not(.pz-zoom) .dc-main--play #dcTurn{margin-top:3px}}

/* 검정 제목은 항상 한 줄. 모바일 보조행은 검정 배경 밖의 별도 형제다. */
.dc-main .dc-title-bar.dc-has-meta{height:25px;min-height:25px;flex-wrap:nowrap;row-gap:0;margin-bottom:0}
.dc-title-bar.dc-has-meta>.dc-game-heading{height:25px;line-height:25px}
html.fs-embed .dc-main .dc-title-bar.dc-has-meta{height:33px;min-height:33px}
html.fs-embed .dc-title-bar.dc-has-meta>.dc-game-heading{height:33px;line-height:33px}
.dc-main>.dc-publish-meta{display:flex;max-width:none;min-width:0;width:auto;margin:0 0 6px;padding:9px 10px 3px;gap:8px;background:var(--dc-bg);color:var(--dc-fg);font-size:14px;line-height:18px;font-weight:700;overflow:hidden}
.dc-publish-meta>.dc-tournament-name{display:block;flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dc-tournament-name>[data-host-country]{display:inline}
.dc-published-at{flex:none;white-space:nowrap;font-size:12px;font-weight:400;font-variant-numeric:tabular-nums;color:inherit}
.dc-card .dc-title-bar [data-daily-title]{display:flex;align-items:center;gap:6px}
.dc-index-caption{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 2단은 대회명과 시각을 검정 제목 안에 유지한다. 1단만 보조행이다. */
.dc-main .dc-tournament--title{display:block;flex:1 1 auto;min-width:0;max-width:none;margin:0 8px;font-size:15px;font-weight:600;color:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dc-tournament--title>[data-host-country]{display:inline}.dc-tournament--title::before{content:' : ';white-space:pre;margin:0}
.dc-game-title--wide .dc-title-name{max-width:50%}.dc-publish-meta>.dc-published-at{margin-left:auto}

.dc-main .dc-game-title--wide+.dc-publish-meta{display:none}.dc-game-title--wide>.dc-published-at{margin-left:8px;flex-shrink:0}
/* 웹 index 소개 카드만: 본문 양끝을 제목 경계에 맞추고 위 여백 12→7px. */
.dc-public-index .dc-card{--dc-index-inset:12px}.dc-public-index .dc-card-body{margin-left:calc(-1 * var(--dc-index-inset));margin-right:calc(-1 * var(--dc-index-inset));padding-top:7px}
.dc-public-index .dc-card-copy>.dc-tournament-meta{color:var(--dc-fg)}
@media(max-width:420px){.dc-public-index .dc-card{--dc-index-inset:10px}}
/* 공용 #pzTitle width:100%가 화살표/시각을 다음 flex 줄로 밀지 않게 한다. */
.dc-main .dc-title-bar.dc-has-meta{flex-direction:row}.dc-main .dc-title-bar.dc-has-meta>#pzTitle{width:auto;max-width:none;min-width:0;flex:1 1 0}
.dc-main .dc-title-bar.dc-game-title--wide{flex-direction:row;flex-wrap:nowrap;height:25px;min-height:25px;margin-bottom:6px}
html.fs-embed .dc-main .dc-title-bar.dc-game-title--wide{height:33px;min-height:33px}
/* index 통계 상하의 외부 간격만 8/0→4/4px로 나눈다. */
.dc-public-index .dc-card-copy>.dc-card-turn{margin-bottom:4px}.dc-public-index .dc-card-copy>.dc-enter{display:inline-block;margin-top:4px}
/* 기존 index의 섹션 간격 20px. 본문 하단 12px는 유지하고 중복 page padding/18px margin만 정리한다. */
.dc-public-index .dc-card{margin-top:0;margin-bottom:8px;padding-bottom:0}
/* 재도전 정보는 기존 결과 텍스트와 같은 13px 한 줄이며 별도 박스를 만들지 않는다. */
.dc-main #dcRetryInfo{max-width:380px;margin:0 auto 8px;font-size:13px;line-height:1.5;color:var(--dc-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dc-main #dcRetryInfo[hidden]{display:none!important}
body.pz-zoom .dc-main #dcRetryInfo{width:100%;max-width:none;margin-left:0;margin-right:0}@media(min-width:992px){.dc-main #dcRetryInfo{max-width:none}}
/* 첫 공용 확대 계산 전에도 최종 PC 한 줄 높이를 예약해 보드가 다시 줄어들지 않게 한다. */
@media(min-width:992px){.dc-main .dc-title-bar.dc-has-meta{flex-direction:row;flex-wrap:nowrap;height:25px;min-height:25px;margin-bottom:6px}.dc-main .dc-title-bar.dc-has-meta+.dc-publish-meta{display:none}html.fs-embed .dc-main .dc-title-bar.dc-has-meta{height:33px;min-height:33px}}
body.pz-zoom .dc-main .dc-title-bar.dc-has-meta{flex-direction:row;flex-wrap:nowrap;height:25px;min-height:25px}body.pz-zoom .dc-main .dc-title-bar.dc-has-meta+.dc-publish-meta{display:none}html.fs-embed body.pz-zoom .dc-main .dc-title-bar.dc-has-meta{height:33px;min-height:33px}
/* 재도전 Difficulty/Solved는 기존 도전 박스의 좌상단 한 줄, 갱신되는 세 지표와 DOM을 분리한다. */
.dc-main .dc-stats.dc-attempt-box{display:block}.dc-attempt-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.dc-main .dc-attempt-box>#dcRetryInfo{max-width:none;width:100%;margin:-5px 0 8px;text-align:left}

/* PC 일반모드도 endgame/sprint의 g-3(16px) 거터를 사용한다.
   웹 공용 어댑터의 .fsl-root .row가 변수까지 0으로 지운 범위만 복원한다. */
@media(min-width:992px){
  body:not(.pz-zoom) .dc-main--play .dc-layout>.row.g-3{--bs-gutter-x:1rem;--bs-gutter-y:1rem}
  body:not(.pz-zoom) .dc-main--play .dc-layout>.row>.dc-solvers{padding-top:0;margin-top:var(--bs-gutter-y,1rem)}
}

/* 웹 1단은 실제 보드 폭을 기준으로 패널을 중앙에 맞춘다. 보드 크기는 변경하지 않는다. */
@media(max-width:991.98px){
  html:not(.fs-embed) body:not(.pz-zoom) .dc-main--play .dc-game #pzPanel{width:min(100%,var(--dc-inline-board-width,380px));max-width:100%!important;margin-left:auto;margin-right:auto}
  html:not(.fs-embed) body:not(.pz-zoom) .dc-main--play .dc-game #pzPanel :is(#dcTurn,#pzResult,.dc-attempt-box){width:100%;max-width:100%;margin-left:0;margin-right:0}
  html:not(.fs-embed) body:not(.pz-zoom) .dc-main--play .dc-board-wrap #dcRetry{right:calc((100% - var(--dc-inline-board-width,380px))/2 + 10px)}
  html:not(.fs-embed) body:not(.pz-zoom) .dc-main--play .dc-solvers-card{width:min(100%,var(--dc-inline-stats-width,380px));max-width:100%;margin-left:auto;margin-right:auto}
}

/* index는 언어별 사이트 CSS와 무관하게 한국어와 같은 md(768px) 2열을 쓴다. */
.dc-public-index.row{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;margin:0;--bs-gutter-x:0;--bs-gutter-y:0}
.dc-public-index.row>.col{width:auto;max-width:100%;min-width:0;padding:0;margin:0;flex:none}
@media(min-width:768px){.dc-public-index.row{grid-template-columns:repeat(2,minmax(0,1fr))}}
.dc-public-index .dc-title-bar a.dc-index-caption{color:#fff;text-decoration:none}
.dc-public-index .dc-title-bar a.dc-index-caption:hover{color:#b0cafa}
.dc-public-index .dc-title-bar a.dc-index-caption:focus-visible{outline:2px solid currentColor;outline-offset:-2px}
/* 국기와 대회명은 같은 인라인 흐름에서 일반 공백 한 칸만 사용한다. 발행 시각의 바깥 배치는 유지한다. */
.dc-tournament-meta:not(.dc-publish-meta){display:block}
.dc-tournament-meta>[data-host-country]{display:inline}
.dc-tournament-label{display:inline-block;vertical-align:middle}

/* 다른 퍼즐의 "제목 : 대회명"과 같은 일반 공백만 사용한다. */
.dc-main .dc-game-title--wide .dc-game-heading{gap:0}
.dc-game-title--wide .dc-title-level{margin:0}
.dc-main [data-daily-breakdown]{cursor:pointer}
/* 다국어 웹 틀의 .contentsLeft h2(남색 40px 바)가 카드 제목에 전파되지 않는다. */
.dc-main .dc-solvers-card>h2{display:block;width:auto;height:auto;padding:0;margin:0 0 10px;border:0;border-radius:0;background:none;box-shadow:none;color:var(--dc-fg);font-family:inherit;font-size:15px;font-weight:700;line-height:1.35;text-align:left}
.dc-main [data-daily-breakdown]:focus-visible{outline:2px solid currentColor;outline-offset:2px}
.dc-info-slot:empty{display:none}
@media(min-width:992px){
  body:not(.pz-zoom) .dc-info-slot:not(:empty){margin-bottom:10px}
  body:not(.pz-zoom) .dc-info-slot :is(#dcTurn,#pzResult,.dc-attempt-box){width:100%;max-width:100%;margin-left:0;margin-right:0}
}
.dc-game-title--wide .dc-title-level::before{content:' ';white-space:pre}
.dc-main .dc-game-title--wide .dc-tournament--title{margin:0}
/* 관리자(+othelloclub) '도전' 명단(2026-10-30): 도전 칸을 누르면 연다. 덮개는 공용 값(라이트 rgba(15,23,42,.55), 다크는 app-theme.css 목록), body 로 붙인다.
   유저 이름을 눌러 여는 유저기록(.mg-user-popup 12000)이 위에 오도록 그 아래에 둔다. O 색: 한 번에 성공 금색, 재도전 성공 초록(이 화면 정답 색), X 빨강(오답 색). */
.dc-stat--attempts{cursor:pointer}.dc-stat--attempts .dc-stat-label{text-decoration:underline dotted;text-underline-offset:3px}
.dc-attempts{--dca-bg:#fff;--dca-fg:#111827;--dca-muted:#64748b;--dca-border:#e5e7eb;position:fixed;inset:0;z-index:11990;display:flex;align-items:center;justify-content:center;box-sizing:border-box;padding:calc(12px + env(safe-area-inset-top)) 12px calc(12px + env(safe-area-inset-bottom));font:14px/1.5 "Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,sans-serif}
html.fs-app-theme-dark .dc-attempts{--dca-bg:var(--fs-app-surface,#151d2a);--dca-fg:var(--fs-app-text,#f1f5f9);--dca-muted:var(--fs-app-muted,#94a3b8);--dca-border:var(--fs-app-border,#3a414c)}
.dc-attempts *{box-sizing:border-box}.dc-attempts-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.55)}
.dc-attempts-dialog{position:relative;display:flex;flex-direction:column;width:min(420px,100%);max-height:100%;overflow:hidden;border-radius:14px;background:var(--dca-bg);color:var(--dca-fg);box-shadow:0 18px 50px rgba(0,0,0,.3)}
.dc-attempts-head{display:flex;align-items:center;gap:10px;padding:12px 14px 8px;border-bottom:1px solid var(--dca-border)}
.dc-attempts-head h2{flex:1;min-width:0;margin:0;font-size:15px;font-weight:700;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--dca-fg)}
.dc-attempts-close{appearance:none;flex:none;padding:0 4px;border:0;background:none;color:var(--dca-muted);font-size:24px;line-height:1;cursor:pointer}
/* 머리·범례는 줄어들지 않는다(2026-10-30 범례 잘림: 세로 flex 안 overflow:hidden 항목은 최소 높이가 0 이라 목록이 길면 눌렸다) */
.dc-attempts-head,.dc-attempts-legend{flex:none}
.dc-attempts-legend{margin:0;padding:8px 14px 2px;color:var(--dca-muted);font-size:13px;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dc-attempts-legend[hidden]{display:none}
.dc-attempts-legend-item{margin-right:14px}.dc-attempts-legend .dc-attempt-mark,.dc-attempts-note .dc-attempt-mark{display:inline-block;width:auto;margin-right:3px;font-size:13px}
.dc-attempts-body{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:4px 14px 12px}
.dc-attempts-list{margin:0;padding:0;list-style:none}.dc-attempts-list li{display:flex;align-items:center;gap:10px;min-width:0;padding:6px 0;border-bottom:1px solid var(--dca-border);list-style:none}.dc-attempts-list li:last-child{border-bottom:0}
.dc-attempts-list .ob-recent-fallback-player{flex:1;min-width:0}.dc-attempts-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dc-attempts-note{margin:8px 0 0;color:var(--dca-muted)}
.dc-attempt-mark{flex:none;width:1.4em;font-size:16px;font-weight:800;line-height:1;text-align:center}
/* 한 번에=초록, 성공=주황(2026-10-31 사용자 지시로 색 교환, 채운 원 시안은 되돌림) */
.dc-attempt-mark--first{color:#166534}.dc-attempt-mark--win{color:#d97706}.dc-attempt-mark--fail{color:#991b1b}
/* 중복(도전 수에 없는 행, 2026-10-30): O/X 칸 대신 흐린 글자 */
.dc-attempt-mark--dup{width:auto;min-width:1.4em;color:var(--dca-muted);font-size:12px;font-weight:700;white-space:nowrap}
html.fs-app-theme-dark .dc-attempt-mark--first{color:#bbf7d0}html.fs-app-theme-dark .dc-attempt-mark--win{color:#fbbf24}html.fs-app-theme-dark .dc-attempt-mark--fail{color:#fecaca}
