/* Contest surfaces use the shared shell palette; no rules escape this page. */
.contest-page { min-inline-size: 0; }
.contest-page :where(h1, h2, h3, p) { overflow-wrap: anywhere; }
.contest-page .contest-table-scroll:focus-visible {
  border-color: var(--link);
}
.contest-page .contest-stack, .contest-page.contest-stack { display: grid; gap: 1.5rem; min-inline-size: 0; }
.contest-page .contest-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 1.5rem; }
.contest-page .contest-header > div { min-inline-size: 0; }
.contest-page .contest-header > .btn { flex: none; }
.contest-page .contest-header h1 { margin-block: .8rem .5rem; font-size: clamp(1.7rem, 4vw, 2.5rem); }
.contest-page .contest-pill { display: inline-flex; align-items: center; gap: .45rem; padding: .4rem .75rem; border-radius: 100px; background: #eee8f8; color: #57416d; font-size: .8rem; font-weight: 800; }
.contest-page .contest-pill .ui-icon { inline-size: 18px; block-size: 18px; }
.contest-page .contest-pill--soon { color: #755316; background: #fbefc3; }
.contest-page .contest-eyebrow { font-size: .8rem; font-weight: 800; color: var(--ink-soft); margin: 0 0 1rem; }
.contest-page .contest-lede { font-size: 1.15rem; line-height: 1.9; max-inline-size: 42rem; }
.contest-page .contest-description { color: var(--ink-soft); max-inline-size: 52rem; line-height: 1.9; }

.contest-page .contest-soon { display: grid; grid-template-columns: minmax(200px, .8fr) minmax(0, 1.2fr); gap: clamp(1.5rem, 4vw, 4rem); align-items: center; padding: clamp(1.5rem, 4vw, 3.5rem); min-block-size: 460px; background: var(--paper); border: 1px solid var(--line); border-radius: 28px; box-shadow: var(--shell-shadow); }
.contest-page .contest-soon-title { font-size: clamp(2.3rem, 5vw, 4rem); letter-spacing: -.035em; margin-block: .7rem 1rem; line-height: 1.3; }
.contest-page .contest-soon-copy > .btn { margin-block-start: 1.2rem; }
.contest-page .contest-soon-art { position: relative; display: grid; place-items: center; min-block-size: 270px; isolation: isolate; }
.contest-page .contest-art-icon { display: grid; place-items: center; inline-size: 150px; block-size: 166px; border: 1px solid #d3dfb9; border-radius: 38px; background: #edf6db; color: #345b21; transform: rotate(-7deg); box-shadow: 0 12px 0 #e0e9d1; }
.contest-page .contest-art-icon .ui-icon { inline-size: 80px; block-size: 80px; stroke-width: 1.3; }
.contest-page .contest-art-orbit { position: absolute; z-index: -1; border-radius: 50%; }
.contest-page .contest-art-orbit--one { inline-size: 210px; block-size: 210px; border: 1px dashed #c9d5be; }
.contest-page .contest-art-orbit--two { inline-size: 270px; block-size: 270px; border: 1px solid #edf0e8; }
.contest-page .contest-art-note { position: absolute; inset-inline-end: 8%; inset-block-end: 18px; display: grid; place-items: center; inline-size: 64px; block-size: 64px; border-radius: 20px; background: #f8e7ac; color: #755316; transform: rotate(8deg); border: 4px solid var(--paper); }
.contest-page .contest-preview-entry { display: flex; gap: 1.1rem; align-items: center; padding: 1.4rem; margin-block-start: 1.5rem; border: 1px solid #ded5eb; border-radius: 22px; background: #f3eff9; }
.contest-page .contest-preview-entry > div { flex: 1; min-inline-size: 0; }
.contest-page .contest-preview-entry h2 { margin: 0 0 .35rem; font-size: 1.05rem; }
.contest-page .contest-preview-entry p { margin: 0; font-size: .9rem; color: var(--ink-soft); }
.contest-page .contest-preview-symbol { color: #705795; }

.contest-page .contest-facts { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .8rem; margin: 0; }
.contest-page .contest-facts > div { padding: 1.1rem; border: 1px solid var(--line); border-radius: 18px; background: var(--paper); min-inline-size: 0; }
.contest-page .contest-facts > div:nth-child(3) { background: #edf6db; border-color: #d3dfb9; }
.contest-page .contest-facts dt { display: flex; gap: .4rem; align-items: center; font-size: .78rem; color: var(--ink-soft); }
.contest-page .contest-facts dt .ui-icon { inline-size: 18px; block-size: 18px; }
.contest-page .contest-facts dd { margin: .75rem 0 0; font-weight: 800; overflow-wrap: anywhere; }
.contest-page .contest-tabs { display: flex; flex-wrap: wrap; gap: .4rem; padding-block-end: .65rem; border-block-end: 1px solid var(--line); }
.contest-page .contest-tabs a { display: inline-flex; align-items: center; gap: .5rem; padding: .65rem 1rem; border-radius: 12px; color: var(--ink-soft); text-decoration: none; font-weight: 700; min-block-size: 44px; }
.contest-page .contest-tabs a[aria-current] { background: var(--brand-soft); color: var(--ink); }
.contest-page .contest-tabs a:hover { background: var(--canvas-deep); }
.contest-page .contest-count { background: var(--paper); border-radius: 7px; min-inline-size: 1.4rem; text-align: center; font-size: .8rem; }
.contest-page .contest-section-heading { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-block-end: 1rem; }
.contest-page .contest-section-heading h2 { margin: 0; font-size: 1.2rem; }
.contest-page .contest-section-heading p { margin: 0; }
.contest-page .contest-problems { list-style: none; margin: 0; padding: 0; display: grid; gap: .7rem; }
.contest-page .contest-problem-row { display: flex; align-items: center; gap: 1rem; padding: 1.2rem; border: 1px solid var(--line); border-radius: 18px; background: var(--paper); }
.contest-page .contest-problem-row > div { flex: 1; min-inline-size: 0; }
.contest-page .contest-problem-row h3 { font-size: 1.05rem; margin: 0 0 .3rem; }
.contest-page .contest-problem-row h3 a { color: var(--ink); text-underline-offset: .25em; }
.contest-page .contest-problem-row p { margin: 0; }
.contest-page .contest-problem-number { display: grid; place-items: center; inline-size: 42px; block-size: 42px; border-radius: 12px; background: #eee8f8; color: #57416d; font-weight: 800; flex: none; }
.contest-page .contest-problem-row:nth-child(even) .contest-problem-number { background: #fbefc3; color: #755316; }
.contest-page .contest-problem-arrow { color: var(--ink-soft); }
[dir="ltr"] .contest-page .contest-problem-arrow { transform: rotate(180deg); }
.contest-page .contest-note { display: flex; align-items: flex-start; gap: .65rem; margin: 0; color: var(--ink-soft); font-size: .9rem; line-height: 1.8; }
.contest-page .contest-empty { padding: clamp(1.5rem, 5vw, 3rem); text-align: center; border: 1px dashed #c7d5bd; border-radius: 22px; background: var(--paper); }
.contest-page .contest-empty > span .ui-icon { inline-size: 42px; block-size: 42px; color: #705795; }
.contest-page .contest-empty h2, .contest-page .contest-empty h3 { margin-block: .8rem .4rem; }
.contest-page .contest-empty p { color: var(--ink-soft); margin-block: .5rem 1.3rem; }
.contest-page .contest-limits { display: flex; flex-wrap: wrap; align-items: center; gap: .7rem 1.2rem; list-style: none; padding: 0; color: var(--ink-soft); font-size: .85rem; }
.contest-page .contest-limits li { display: flex; align-items: center; gap: .35rem; }
.contest-page .contest-limits .ui-icon { inline-size: 17px; block-size: 17px; }
.contest-page .contest-prompt, .contest-page .contest-solution { margin: 0; min-inline-size: 0; }
.contest-page .contest-solution .code-studio { min-inline-size: 0; max-inline-size: 100%; }
.contest-page .contest-solution .editor-actions { flex-wrap: wrap; }
.contest-page .contest-language { padding: .25rem .6rem; border: 1px solid var(--line); border-radius: 8px; font-size: .8rem; color: var(--ink-soft); }
.contest-page .contest-inline-link { display: inline-flex; align-items: center; gap: .5rem; justify-self: start; min-block-size: 44px; }

.contest-page .contest-board { min-inline-size: 0; }
.contest-page .contest-table-scroll { max-inline-size: 100%; min-inline-size: 0; overflow-x: auto; overscroll-behavior-inline: contain; border: 1px solid var(--line); border-radius: 18px; background: var(--paper); }
.contest-page .contest-table { inline-size: 100%; border-collapse: collapse; text-align: start; font-size: .9rem; }
.contest-page .contest-table th, .contest-page .contest-table td { padding: 1rem; text-align: start; border-block-end: 1px solid var(--line); white-space: nowrap; }
.contest-page .contest-table thead th { font-weight: 700; font-size: .78rem; color: var(--ink-soft); background: #f1f4ea; }
.contest-page .contest-table tbody tr:last-child > * { border-block-end: 0; }
.contest-page .contest-table td small { display: block; margin-block-start: .25rem; color: var(--ink-soft); font-size: .72rem; }
.contest-page .contest-rank { display: inline-grid; place-items: center; min-inline-size: 32px; block-size: 32px; border-radius: 10px; font-weight: 800; }
.contest-page .contest-place-1 .contest-rank { background: #f8e7ac; color: #755316; }
.contest-page .contest-place-2 .contest-rank { background: #e8e1f4; color: #57416d; }
.contest-page .contest-place-3 .contest-rank { background: #e6efd8; color: #345b21; }
.contest-page .contest-total { font-weight: 800; color: #345b21; }
.contest-page .contest-scoring { padding: 1.4rem; background: #f1f4ea; border: 1px solid var(--line); border-radius: 18px; }
.contest-page .contest-scoring h2 { display: flex; align-items: center; gap: .5rem; margin: 0; font-size: 1rem; }
.contest-page .contest-scoring p { font-size: .87rem; line-height: 1.9; margin-block-end: 0; }

.contest-page .contest-form { min-inline-size: 0; }
.contest-page .contest-form fieldset { min-inline-size: 0; border: 0; padding: 0; margin-block: 1.6rem; }
.contest-page .contest-form legend { font-size: 1rem; font-weight: 800; margin-block-end: .8rem; }
.contest-page .contest-field-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.contest-page .contest-field-grid > * { min-inline-size: 0; }
.contest-page .contest-form :where(input, textarea, select) { max-inline-size: 100%; }
.contest-page .contest-form textarea { resize: vertical; }
.contest-page .contest-code-field textarea { direction: ltr; text-align: left; font-family: var(--font-code, monospace); }
.contest-page .contest-form-actions { display: flex; flex-wrap: wrap; gap: .8rem; border-block-start: 1px solid var(--line); padding-block-start: 1.4rem; }
.contest-page .contest-form-errors { background: #fae5df; border: 1px solid #c8877d; color: #822f2a; border-radius: 14px; padding: .8rem 1rem; }
.contest-page .contest-form-errors p { margin: 0 0 .5rem; }
.contest-page .contest-zip-example { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); gap: .6rem; max-inline-size: 31rem; padding: 1rem; background: #f1f4ea; border: 1px solid var(--line); border-radius: 14px; text-align: center; }
.contest-page .contest-zip-example code { font-size: .85rem; overflow-wrap: anywhere; white-space: normal; }
.contest-page .contest-test-count { font-weight: 700; font-size: .9rem; }

@media (max-width: 760px) {
  .contest-page .contest-soon { grid-template-columns: minmax(0, 1fr); min-block-size: 0; gap: 1rem; }
  .contest-page .contest-soon-art { min-block-size: 220px; }
  .contest-page .contest-art-orbit--two { inline-size: 220px; block-size: 220px; }
  .contest-page .contest-art-orbit--one { inline-size: 180px; block-size: 180px; }
  .contest-page .contest-art-icon { inline-size: 120px; block-size: 136px; border-radius: 30px; }
  .contest-page .contest-art-icon .ui-icon { inline-size: 64px; block-size: 64px; }
  .contest-page .contest-preview-entry { flex-wrap: wrap; }
  .contest-page .contest-preview-entry > .btn { inline-size: 100%; }
  .contest-page .contest-header { flex-direction: column; gap: .8rem; }
  .contest-page .contest-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .contest-page .contest-field-grid { grid-template-columns: minmax(0, 1fr); gap: .4rem; }
  .contest-page .contest-problem-row { padding: .9rem; gap: .7rem; }
  .contest-page .contest-problem-arrow { display: none; }
}
@media (max-width: 380px) {
  .contest-page .contest-facts { grid-template-columns: minmax(0, 1fr); }
  .contest-page .contest-tabs a { padding-inline: .65rem; }
  .contest-page .contest-form-actions > .btn { inline-size: 100%; }
  .contest-page .contest-zip-example { padding: .6rem; gap: .4rem; }
}
