:root {
  --kaupc-blue: #0f2c5c;
  --kaupc-blue-dark: #0a1f42;
  --kaupc-ink: #22262b;
  --kaupc-muted: #68707b;
  --kaupc-line: #e3e8ee;
  --kaupc-panel: #ffffff;
  --kaupc-code: #f6f8fa;
}

.navbar .ml-auto.me-3:has(a[data-ajax-modal]) { display: none; }
.navbar .ml-auto.me-3:has(#notify_enable) { display: none; }
.navbar.bg-dark { background-color: var(--kaupc-blue-dark) !important; }

.contest-lobby { max-width: 1080px; margin: 4.5rem auto; padding: 0 1.5rem; color: var(--kaupc-ink); }
.contest-lobby__header { max-width: 650px; margin-bottom: 2.5rem; }
.contest-lobby__eyebrow { color: var(--kaupc-blue); font-size: .78rem; font-weight: 800; letter-spacing: .08em; margin-bottom: .5rem; }
.contest-lobby h1 { font-size: clamp(2rem, 5vw, 2.8rem); font-weight: 750; letter-spacing: -.04em; margin: 0 0 .6rem; }
.contest-lobby__header > p:last-child { color: var(--kaupc-muted); margin: 0; }
.contest-lobby__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 1rem; }
.contest-card { display: flex; min-height: 230px; flex-direction: column; align-items: flex-start; padding: 1.45rem; border: 1px solid var(--kaupc-line); border-radius: 10px; background: var(--kaupc-panel); box-shadow: 0 2px 9px rgba(20, 37, 55, .035); color: inherit; text-decoration: none; transition: transform .15s ease, border-color .15s ease, box-shadow .15s ease; }
.contest-card:hover { color: inherit; border-color: var(--kaupc-blue); box-shadow: 0 12px 26px rgba(15, 44, 92, .12); text-decoration: none; transform: translateY(-2px); }
.contest-card__status { color: #107a42; font-size: .78rem; font-weight: 700; }
.contest-card h2 { margin: .65rem 0 .5rem; font-size: 1.4rem; font-weight: 750; letter-spacing: -.025em; }
.contest-card p { color: var(--kaupc-muted); font-size: .92rem; margin: 0; }
.contest-card__action { color: var(--kaupc-blue); font-size: .9rem; font-weight: 700; margin-top: auto; padding-top: 1.5rem; }

.contest-tabs { display: flex; gap: 1.5rem; max-width: 1080px; margin: 2rem auto 0; padding: 0 1rem; border-bottom: 1px solid var(--kaupc-line); }
.contest-tabs a { border-bottom: 2px solid transparent; color: var(--kaupc-muted); font-size: .95rem; font-weight: 700; padding: .65rem .1rem; text-decoration: none; }
.contest-tabs a:hover, .contest-tabs a.active { border-bottom-color: var(--kaupc-blue); color: var(--kaupc-blue); text-decoration: none; }
.problem-table { width: min(1080px, calc(100% - 2rem)); margin: 1.25rem auto; border-collapse: collapse; color: var(--kaupc-ink); }
.problem-table th { border-bottom: 2px solid var(--kaupc-line); color: var(--kaupc-muted); font-size: .78rem; font-weight: 700; padding: .75rem 1rem; text-align: left; }
.problem-table td { border-bottom: 1px solid var(--kaupc-line); padding: 1rem; vertical-align: middle; }
.problem-table tr:hover td { background: #f8fbff; }
.problem-table td:first-child { color: var(--kaupc-blue); font-weight: 800; width: 90px; }
.problem-table td:nth-child(3) { color: var(--kaupc-muted); font-size: .88rem; }
.problem-table__submit { border: 1px solid var(--kaupc-line); border-radius: 5px; color: var(--kaupc-blue); font-size: .85rem; font-weight: 700; padding: .35rem .65rem; text-decoration: none; }
.problem-table__submit:hover { border-color: var(--kaupc-blue); text-decoration: none; }

.submitform { max-width: 640px; margin: 0 auto 3rem; padding: 0 1.5rem; }
.submitform h1 { font-size: clamp(1.75rem, 4vw, 2.2rem); font-weight: 750; letter-spacing: -.035em; margin: 2rem 0 2rem; }
.submitform label { color: var(--kaupc-muted); font-size: .85rem; font-weight: 700; }
.submitform .form-control, .submitform .form-select { border-color: var(--kaupc-line); border-radius: 6px; }
.submitform .form-control:focus, .submitform .form-select:focus { border-color: var(--kaupc-blue); box-shadow: 0 0 0 .2rem rgba(15, 44, 92, .15); }
.submitform button[type="submit"] { border-radius: 6px; font-weight: 700; }

#menuDefault .nav-item:has(> a[href="/team/problems"]),
#menuDefault .nav-item:has(> a[href="/team/scoreboard"]) { display: none; }

.problem-detail__toolbar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; max-width: 900px; margin: 1.25rem auto 0; padding: 0 clamp(1.25rem, 4vw, 2.25rem); }
.problem-detail__back { color: var(--kaupc-muted); font-size: .9rem; font-weight: 700; text-decoration: none; }
.problem-detail__back:hover { color: var(--kaupc-blue); text-decoration: none; }
.problem-detail__submit { border: 0; border-radius: 6px; background: var(--kaupc-blue); color: #fff; font-size: .88rem; font-weight: 700; padding: .55rem 1.1rem; text-decoration: none; }
.problem-detail__submit:hover { background: var(--kaupc-blue-dark); color: #fff; text-decoration: none; }

.sample-pane { position: relative; }
.sample-copy { position: absolute; top: 0; right: 0; border: 1px solid var(--kaupc-line); border-radius: 5px; background: #fff; color: var(--kaupc-muted); font-size: .78rem; font-weight: 700; padding: .25rem .55rem; }
.sample-copy:hover { border-color: var(--kaupc-blue); color: var(--kaupc-blue); }

body:has(.contest-tabs) .card { max-width: 1080px; margin: 1.25rem auto 2rem; border: 0; border-radius: 0; box-shadow: none; font-family: inherit; background: none; }
body:has(.contest-tabs) .card-header { background: none; border: 0; border-bottom: 1px solid var(--kaupc-line); padding: 0 1rem 1.1rem; margin: 0 0 1.25rem; font-family: inherit !important; }
body:has(.contest-tabs) .card-header span { font-size: clamp(1.5rem, 4vw, 2rem) !important; font-weight: 750 !important; letter-spacing: -.03em; color: var(--kaupc-ink); }
body:has(.contest-tabs) .card-header .text-md-end { font-size: .85rem; color: var(--kaupc-muted); font-weight: 400 !important; }
body:has(.contest-tabs) .card-body { padding: 0 1rem; }
/* 순위표: 시안 1 "AtCoder 미니멀" 적용 */
body:has(.contest-tabs) table.desktop-scoreboard { width: auto; max-width: calc(100% - 2rem); margin: 0 auto; border-collapse: collapse; font-size: .95rem; font-variant-numeric: tabular-nums; }
body:has(.contest-tabs) table.desktop-scoreboard thead tr { background: none !important; }
body:has(.contest-tabs) table.desktop-scoreboard th { text-align: left; color: var(--kaupc-ink); font-size: .82rem; font-weight: 700; padding: .5rem .75rem; border: 0; border-bottom: 2px solid var(--kaupc-ink); background: none !important; }
body:has(.contest-tabs) table.desktop-scoreboard td { padding: .7rem .75rem; border: 0; border-bottom: 1px solid var(--kaupc-line); background: none !important; }
body:has(.contest-tabs) table.desktop-scoreboard td.scorenc, body:has(.contest-tabs) table.desktop-scoreboard td.scorett { font-size: 1rem; font-weight: 700; text-align: center; }
body:has(.contest-tabs) table.desktop-scoreboard td.scoretn { font-size: .95rem; font-weight: 600; text-align: left; }
body:has(.contest-tabs) table.desktop-scoreboard td.scorepl.rank { font-size: 1rem; font-weight: 700; color: var(--kaupc-muted); text-align: left; }
body:has(.contest-tabs) table.desktop-scoreboard th[colspan] { text-align: center; }
body:has(.contest-tabs) table.desktop-scoreboard .badge.problem-badge { border-radius: 4px !important; border: 0 !important; font-weight: 800; }
body:has(.contest-tabs) table.desktop-scoreboard .score_cell { min-width: 72px; text-align: center; }
body:has(.contest-tabs) table.desktop-scoreboard .score_cell a { text-decoration: none; display: block; }
body:has(.contest-tabs) table.desktop-scoreboard .score_cell > a > div, body:has(.contest-tabs) table.desktop-scoreboard .score_cell > div { border-radius: 4px; padding: .4rem 0; font-size: 1rem; font-weight: 700; }
body:has(.contest-tabs) table.desktop-scoreboard .score_cell span { font-size: .7rem; font-weight: 400; opacity: .8; }
body:has(.contest-tabs) table.desktop-scoreboard .score_first { background: #2e7d32 !important; color: #fff !important; }
body:has(.contest-tabs) table.desktop-scoreboard .score_correct:not(.score_first) { background: #c9ecc9 !important; color: #1b5e20 !important; }
body:has(.contest-tabs) table.desktop-scoreboard .score_incorrect { background: #fdecea !important; color: #c62828 !important; }
body:has(.contest-tabs) table.desktop-scoreboard .score_pending { background: #e3edfb !important; color: #1a4a8a !important; }
body:has(.contest-tabs) table.desktop-scoreboard tbody tr { background: none !important; }
body:has(.contest-tabs) table.desktop-scoreboard tbody tr:hover td { background: #f8fbff !important; }
body:has(.contest-tabs) table.scorelegend { display: flex; gap: 1.1rem; align-items: center; border: 0; margin: 1rem auto 0; max-width: 1080px; padding: 0 1rem; }
body:has(.contest-tabs) table.scorelegend thead { display: none; }
body:has(.contest-tabs) table.scorelegend tbody { display: flex; gap: 1.1rem; flex-wrap: wrap; }
body:has(.contest-tabs) table.scorelegend tr { display: flex; align-items: center; gap: .4rem; }
body:has(.contest-tabs) table.scorelegend td { border: 0; padding: 0; font-size: .8rem; color: var(--kaupc-muted); }
body:has(.contest-tabs) table.scorelegend .score_first { background: #2e7d32; width: 12px; height: 12px; border-radius: 2px; padding: 0; display: inline-block; }
body:has(.contest-tabs) table.scorelegend .score_correct:not(.score_first) { background: #c9ecc9; width: 12px; height: 12px; border-radius: 2px; padding: 0; display: inline-block; }
body:has(.contest-tabs) table.scorelegend .score_incorrect { background: #fdecea; border: 1px solid #e57373; width: 11px; height: 11px; border-radius: 2px; padding: 0; display: inline-block; }
body:has(.contest-tabs) table.scorelegend .score_pending { background: #e3edfb; width: 12px; height: 12px; border-radius: 2px; padding: 0; display: inline-block; }
body:has(.contest-tabs) .dropdown .btn-outline-secondary { border: 1px solid var(--kaupc-line); border-radius: 5px; color: var(--kaupc-blue); font-size: .85rem; font-weight: 700; }
body:has(.contest-tabs) .dropdown .btn-outline-secondary:hover, body:has(.contest-tabs) .dropdown .btn-outline-secondary:focus { border-color: var(--kaupc-blue); color: var(--kaupc-blue); background: none; box-shadow: none; }
#teamscoresummary { display: none; }
.contest-clarifications:not([hidden]) { max-width: 720px; margin: 2rem auto 3rem; padding: 0 1.5rem; }
.contest-clarifications .nodata { color: var(--kaupc-muted); font-size: .9rem; margin: .25rem 0 1.75rem; }
.contest-clarifications a[href$="/clarifications/add"] { background: var(--kaupc-blue); border-color: var(--kaupc-blue); border-radius: 8px; font-weight: 700; padding: .6rem 1.1rem; }
.contest-clarifications a[href$="/clarifications/add"]:hover { background: var(--kaupc-blue-dark); border-color: var(--kaupc-blue-dark); }
.teamoverview { max-width: 1080px; margin: 2rem auto 0; padding: 0 1rem .45rem; font-size: 1.28rem; font-weight: 750; letter-spacing: -.03em; color: var(--kaupc-ink) !important; background: none !important; border: 0; border-bottom: 2px solid var(--kaupc-blue); border-radius: 0; }
.contest-clarifications .teamoverview { max-width: none; margin: 0 0 1rem; padding: 0 0 .6rem; }
.submissions-table { width: min(1080px, calc(100% - 2rem)); margin: 1rem auto 2rem; border-collapse: collapse; color: var(--kaupc-ink); }
.submissions-table th { border-bottom: 2px solid var(--kaupc-line); color: var(--kaupc-muted); font-size: .78rem; font-weight: 700; padding: .65rem .75rem; text-align: left; }
.submissions-table td { border-bottom: 1px solid var(--kaupc-line); padding: .75rem; vertical-align: middle; font-size: .9rem; }

.clar-list { display: flex; flex-direction: column; gap: .75rem; margin: 0 0 1.75rem; }
.clar-card { border: 1px solid var(--kaupc-line); border-radius: 10px; padding: 1rem 1.1rem; background: var(--kaupc-panel); }
.clar-card__top { display: flex; align-items: center; gap: .6rem; margin-bottom: .5rem; }
.clar-card__subject { background: #eaf1fb; color: var(--kaupc-blue); font-size: .76rem; font-weight: 700; padding: .2rem .55rem; border-radius: 999px; }
.clar-card__to { font-size: .78rem; color: var(--kaupc-muted); font-weight: 600; }
.clar-card__time { margin-left: auto; font-size: .78rem; color: var(--kaupc-muted); }
.clar-card__from { font-size: .82rem; font-weight: 700; color: var(--kaupc-ink); margin-bottom: .3rem; }
.clar-card__text { font-size: .95rem; line-height: 1.6; color: var(--kaupc-ink); white-space: pre-wrap; }

.problem-statement { max-width: 900px; margin: 0 auto; padding: clamp(1.75rem, 5vw, 4.25rem); color: var(--kaupc-ink); font-size: 1rem; line-height: 1.8; }
.problem-header { padding-bottom: 1.7rem; border-bottom: 1px solid var(--kaupc-line); margin-bottom: 2.25rem; }
.problem-eyebrow { color: var(--kaupc-blue); font-size: .78rem; font-weight: 800; letter-spacing: .08em; margin: 0 0 .5rem; }
.problem-statement h1 { font-size: clamp(2rem, 4vw, 2.7rem); font-weight: 750; letter-spacing: -.045em; line-height: 1.2; margin: 0 0 1.5rem; }
.problem-statement h2 { border-bottom: 2px solid var(--kaupc-blue); color: #3e4650; font-size: 1.28rem; font-weight: 750; letter-spacing: -.03em; margin: 2.65rem 0 1.15rem; padding-bottom: .45rem; }
.problem-statement p { margin: .7rem 0; }
.problem-statement ol, .problem-statement ul { padding-left: 1.5rem; }
.problem-statement code { border-radius: 4px; background: #f1f4f7; color: #26313b; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .9em; padding: .1rem .3rem; }
.problem-limits { display: grid; grid-template-columns: repeat(2, minmax(0, 180px)); gap: 0; margin: 0; border-top: 1px solid var(--kaupc-line); border-bottom: 1px solid var(--kaupc-line); }
.problem-limits div { padding: .65rem .8rem; border-right: 1px solid var(--kaupc-line); }
.problem-limits div:last-child { border-right: 0; }
.problem-limits dt { color: var(--kaupc-muted); font-size: .75rem; font-weight: 700; }
.problem-limits dd { margin: .12rem 0 0; font-size: .95rem; font-weight: 700; }
.sample-card { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.sample-pane { min-width: 0; }
.sample-label { color: #4e5660; font-size: .92rem; font-weight: 700; margin-bottom: .5rem; }
.sample-pane pre { min-height: 130px; overflow: auto; margin: 0; padding: 1rem; border: 1px solid var(--kaupc-line); background: var(--kaupc-code); color: #29323c; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .88rem; line-height: 1.55; }
@media (max-width: 680px) { .sample-card { grid-template-columns: 1fr; } .problem-limits { grid-template-columns: 1fr; } .problem-limits div { border-right: 0; border-bottom: 1px solid var(--kaupc-line); } .problem-limits div:last-child { border-bottom: 0; } .problem-table th:nth-child(3), .problem-table td:nth-child(3) { display: none; } }

/* 참가자 대회 내부 화면의 공통 셸 */
body.participant-portal .contest-tabs,
body.participant-portal .contest-shell,
body.participant-portal .teamoverview,
body.participant-portal .submissions-table {
  width: min(980px, calc(100% - 2rem));
  max-width: none;
  margin-left: auto;
  margin-right: auto;
}
body.participant-portal .contest-tabs { margin-top: 1.5rem; padding: 0; }
body.participant-portal .contest-page-title { width: min(980px, calc(100% - 2rem)); margin: 1.8rem auto 1rem; color: var(--kaupc-ink); font-size: clamp(1.7rem, 4vw, 2.15rem); font-weight: 750; letter-spacing: -.035em; }
body.participant-portal .contest-shell { border: 1px solid var(--kaupc-line); border-radius: 10px; background: var(--kaupc-panel); }
body.participant-portal .problem-app { margin-top: 0; overflow: hidden; }
body.participant-portal .problem-table { width: 100%; margin: 0; }
body.participant-portal .submitform { margin-top: 0; padding: 1.5rem; }
body.participant-portal .submitform > :not(.submission-history) { max-width: 560px; }
body.participant-portal .submitform h1 { display: none; }
body.participant-portal .card { margin-top: 0; padding: 1.25rem; }
body.participant-portal .card-header { padding-left: 0; padding-right: 0; }
body.participant-portal table.desktop-scoreboard { display: block; width: 100%; max-width: none; overflow-x: auto; white-space: nowrap; }
body.participant-portal .contest-clarifications { margin-top: 0; padding: 1.5rem; }
body.participant-portal .contest-clarifications .teamoverview { width: auto; margin: 0 0 1rem; }
body.participant-portal .submission-history { max-width: none; margin-top: 2rem; padding-top: 1.25rem; border-top: 1px solid var(--kaupc-line); }
