/* The participant pages (login, account, problem hub) in the landing page's design: white paper,
   KRAFTON Sans headings over Pretendard, the KRAFTON red, hairline rules, square buttons. */
@import url('https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css');

@font-face{font-family:'KRAFTON Sans';src:url(/assets/fonts/krafton-sans-300.woff2) format('woff2');font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:'KRAFTON Sans';src:url(/assets/fonts/krafton-sans-500.woff2) format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'KRAFTON Sans';src:url(/assets/fonts/krafton-sans-700.woff2) format('woff2');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:'KRAFTON Sans';src:url(/assets/fonts/krafton-sans-900.woff2) format('woff2');font-weight:900;font-style:normal;font-display:swap}

:root{
  --paper:#ffffff;--paper-2:#f6f7f8;--ink:#14161a;--ink-2:#55595f;--ink-3:#8a8f96;
  --rule:#e3e5e8;--rule-2:#c9ccd0;--accent:#e01f26;--accent-deep:#b8151b;--ok:#1f7a45;
  --sans:'KRAFTON Sans','Pretendard',-apple-system,sans-serif;
  --body:'Pretendard',-apple-system,sans-serif;
  --gut:clamp(20px,5vw,72px);--ease:cubic-bezier(.2,.7,.3,1);
}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.7;-webkit-font-smoothing:antialiased;word-break:keep-all}
body.ko .en,body.en .ko{display:none}
a{color:inherit;text-decoration:none}
::selection{background:var(--accent);color:#fff}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
[hidden]{display:none !important}
.wrap{max-width:1120px;margin:0 auto;padding:0 var(--gut)}

/* header — as on the landing page */
header{position:sticky;top:0;z-index:40;background:rgba(255,255,255,.88);backdrop-filter:blur(10px);border-bottom:1px solid var(--rule)}
header .wrap{display:flex;align-items:center;justify-content:space-between;height:64px;gap:20px}
.wordmark{display:block;line-height:0}
.wordmark img{height:13px;width:auto;display:block}
.head-right{display:flex;align-items:center;gap:clamp(16px,3vw,36px)}
nav{display:flex;align-items:center;gap:clamp(13px,2.2vw,26px)}
nav a,nav button{font-size:14px;color:var(--ink-2);transition:color .2s;background:none;border:0;padding:0;cursor:pointer;font-family:inherit}
nav a:hover,nav button:hover,nav a.on{color:var(--accent)}
.lang{display:flex;gap:3px;font-size:13px;color:var(--ink-3)}
.lang button{background:none;border:0;color:var(--ink-3);padding:3px 2px;cursor:pointer;font-family:inherit;font-size:inherit;transition:color .2s}
.lang button:hover{color:var(--ink-2)}
.lang button.on{color:var(--ink);text-decoration:underline;text-underline-offset:4px}
/* the problem pages switch language by linking to the page's twin (/problems/… ↔ /problems/en/…) */
.lang a{color:var(--ink-3);padding:3px 2px;transition:color .2s;white-space:nowrap}
.lang a:hover{color:var(--ink-2)}
.lang a.on{color:var(--ink);text-decoration:underline;text-underline-offset:4px}
/* an English page's note: a translation, the Korean page applies (tools/hub.mjs translationNote) */
.tr-note{margin:18px 0 0;padding:10px 14px;border-left:3px solid var(--rule);background:var(--paper);color:var(--ink-2);font-size:14px;line-height:1.6}
.tr-note a{text-decoration:underline;text-underline-offset:3px}
.tr-note.stale{border-left-color:var(--accent);background:#fff4f4;color:var(--ink)}
.bi-hint{display:block;color:var(--accent);margin-top:6px}
.tr-bar{width:100%}                     /* a block in body.hub's column, not a centred shrink-wrapped box */
body.hub.en h1 .sub{font-family:var(--body);letter-spacing:-.01em}   /* the display face's wide Latin makes a long subtitle shout */

/* page head */
.page-head{padding:clamp(44px,7vw,84px) 0 clamp(28px,4vw,40px);border-bottom:1px solid var(--rule)}
.kicker{display:inline-flex;align-items:center;gap:9px;font-size:13.5px;color:var(--accent);margin:0 0 clamp(16px,3vw,24px)}
.kicker .dot{width:7px;height:7px;border-radius:50%;background:var(--accent)}
h1{font-family:var(--sans);font-weight:900;font-size:clamp(38px,6.4vw,76px);line-height:.95;letter-spacing:-.04em;margin:0}
h1 .sub{display:block;font-weight:400;color:var(--ink-2);font-size:clamp(17px,1.9vw,22px);line-height:1.4;letter-spacing:-.025em;margin-top:10px;text-wrap:balance}

/* sections: a sticky title on the left, the content on the right */
section{padding:clamp(40px,6vw,72px) 0;border-top:1px solid var(--rule)}
section:first-of-type{border-top:0}
.cols{display:grid;grid-template-columns:minmax(0,196px) minmax(0,1fr);gap:clamp(20px,5vw,64px);align-items:start}
.sec-title{font-family:var(--sans);font-weight:700;font-size:clamp(17px,2vw,21px);letter-spacing:-.01em;margin:0;position:sticky;top:92px}
.sec-aside{display:block;margin-top:10px;font-family:var(--body);font-weight:400;font-size:13.5px;color:var(--ink-3)}
@media(max-width:820px){.cols{grid-template-columns:minmax(0,1fr);gap:22px}.sec-title{position:static;padding-bottom:16px;border-bottom:1px solid var(--rule-2)}}
.lede{font-family:var(--sans);font-weight:500;font-size:clamp(19px,2.3vw,26px);line-height:1.45;letter-spacing:-.02em;margin:0 0 24px;max-width:30ch}
.prose p{margin:0 0 14px;color:var(--ink-2);max-width:62ch}
.note{font-size:13.5px;color:var(--ink-3);margin:18px 0 0;max-width:60ch}
.note a,.prose a{color:var(--accent);border-bottom:1px solid transparent;transition:border-color .2s}
.note a:hover,.prose a:hover{border-bottom-color:var(--accent)}

/* forms */
.form{display:grid;gap:8px;max-width:420px}
.form label{font-family:var(--sans);font-weight:700;font-size:14px;margin-top:12px}
.form label:first-child{margin-top:0}
.form input{font:inherit;font-size:16px;padding:12px 14px;border:1px solid var(--rule-2);border-radius:0;background:#fff;color:var(--ink);transition:border-color .2s}
.form input:focus{outline:0;border-color:var(--ink)}
.form small{font-size:13px;color:var(--ink-3)}
.form .btn{margin-top:18px;justify-self:start}
.btn{display:inline-block;background:var(--accent);color:#fff;font-family:var(--sans);font-weight:700;font-size:15px;padding:14px 28px;border:0;cursor:pointer;transition:background .2s var(--ease)}
.btn:hover{background:var(--accent-deep)}
.btn[disabled]{background:var(--rule-2);cursor:default}
.btn-line{background:#fff;color:var(--ink);box-shadow:inset 0 0 0 1px var(--rule-2)}
.btn-line:hover{background:var(--paper-2)}
.msg-line{min-height:1.6em;margin:10px 0 0;font-size:14px;color:var(--accent)}
.msg-line.ok{color:var(--ok)}

/* banners, facts, tabs */
.banner{background:var(--accent);color:#fff;padding:18px 22px;margin:0 0 28px}
.banner strong{font-family:var(--sans);font-weight:700;display:block;margin-bottom:4px}
.banner p{margin:0;color:rgba(255,255,255,.9);font-size:14.5px}
.facts{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--rule);border:1px solid var(--rule);margin:0}
.fact{background:var(--paper);padding:18px 20px}
.fact dt{font-size:13px;color:var(--ink-3);margin:0 0 4px}
.fact dd{margin:0;font-family:var(--sans);font-weight:700;font-size:17px;word-break:break-all}
@media(max-width:560px){.facts{grid-template-columns:1fr}}
.tabs{display:flex;gap:28px;border-bottom:1px solid var(--rule);margin-top:clamp(24px,4vw,36px)}
.tabs button{background:none;border:0;padding:0 0 12px;margin-bottom:-1px;font-family:var(--sans);font-weight:700;font-size:15px;color:var(--ink-3);cursor:pointer;border-bottom:2px solid transparent}
.tabs button.on{color:var(--ink);border-bottom-color:var(--accent)}
.empty{border:1px dashed var(--rule-2);padding:clamp(26px,4vw,40px);color:var(--ink-2);max-width:62ch}
.empty strong{display:block;font-family:var(--sans);font-weight:700;color:var(--ink);font-size:17px;margin-bottom:6px}

/* track list on the problem hub */
.track{padding:22px 0;border-top:1px solid var(--rule)}
.track:first-of-type{border-top:0;padding-top:0}
.track h3{font-family:var(--sans);font-weight:700;font-size:15px;color:var(--accent);margin:0 0 7px}
.track p{margin:0;color:var(--ink-2);font-size:15px;max-width:58ch}

/* the problem pages of our own (hub, common rules, boards, patch notes) */
.pnav{overflow-x:auto;scrollbar-width:none;min-width:0}
.head-right{min-width:0}                /* phones: the menu scrolls in the header instead of widening the page */
.pnav a,.pnav button{white-space:nowrap}
.muted{color:var(--ink-3)}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--ink-3)}
code{padding:.1em .38em;background:#f3f4f5;border:1px solid var(--rule);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em}
a.arrow{color:var(--accent);border-bottom:1px solid transparent;transition:border-color .2s}
a.arrow:hover{border-bottom-color:var(--accent)}
.track-title{margin:0 0 6px;font-family:var(--sans);font-weight:700;font-size:clamp(18px,2vw,22px);letter-spacing:-.02em;color:var(--ink) !important}
.track-title a:hover{color:var(--accent)}
.track-links{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:6px}
.track-links li{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:baseline;font-size:14.5px}
.track-links b{min-width:72px;font-family:var(--sans);font-weight:700;font-size:13px;color:var(--ink-2)}
.plain-links{list-style:none;margin:0;padding:0}
.plain-links li{padding:14px 0;border-top:1px solid var(--rule);display:flex;flex-wrap:wrap;gap:6px 18px;align-items:baseline}
.plain-links li:first-child{border-top:0;padding-top:0}
.plain-links span{font-size:14px;color:var(--ink-3)}
.rules{list-style:none;margin:0;padding:0;max-width:66ch}
.rules li{padding:14px 0;border-top:1px solid var(--rule);color:var(--ink-2);font-size:15.5px}
.rules li:first-child{border-top:0;padding-top:0}
.rules strong{color:var(--ink);font-family:var(--sans);font-weight:700}
.rules a{color:var(--accent)}
.table-wrap{overflow-x:auto;margin-top:22px;border:1px solid var(--rule)}
.table-wrap table{width:100%;border-collapse:collapse;font-size:14px}
.table-wrap th,.table-wrap td{padding:12px 16px;text-align:left;vertical-align:top;border-bottom:1px solid var(--rule)}
.table-wrap th{background:var(--ink);color:#e3e5e8;font-family:var(--sans);font-weight:700;font-size:12.5px}
.table-wrap tr:last-child td{border-bottom:0}
.pn-day{font-family:var(--sans);font-weight:700;font-size:14px;color:var(--ink-3);margin:28px 0 10px}
.pn-day:first-child{margin-top:0}
.pn-entry{border:1px solid var(--rule);padding:16px 20px;margin:0 0 12px}
.pn-entry h3{margin:6px 0 8px;font-family:var(--sans);font-size:17px}
.pn-meta{display:flex;gap:12px;align-items:center;font-size:12.5px;color:var(--ink-3)}
.pn-track{padding:1px 8px;background:var(--ink);color:#fff;font-weight:700}

.nbadge{display:inline-block;min-width:17px;height:17px;margin-left:4px;padding:0 5px;border-radius:9px;background:#e01f26;color:#fff;font-size:11px;font-weight:700;line-height:17px;text-align:center;vertical-align:1px}

/* notices and Q&A */
.board-list{border-top:1px solid var(--rule)}
.board-list .item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 18px;padding:16px 4px;border-bottom:1px solid var(--rule);transition:background .15s}
.board-list .item:hover{background:var(--paper-2)}
.board-list .item .tags{grid-column:1 / -1}
.board-list .item .title{font-family:var(--body);font-weight:700;font-size:16px;color:var(--ink);word-break:keep-all}
.board-list .item .meta{font-size:13px;color:var(--ink-3);white-space:nowrap;align-self:end}
.new-dot{display:inline-block;width:7px;height:7px;margin-left:8px;border-radius:50%;background:var(--accent);vertical-align:2px}
.board-list .empty{margin-top:18px}
@media(max-width:640px){.board-list .item{grid-template-columns:1fr}.board-list .item .meta{white-space:normal}}
.tags{display:flex;flex-wrap:wrap;gap:6px}
.tag{display:inline-block;padding:1px 8px;border:1px solid var(--rule-2);font-size:12px;color:var(--ink-2);line-height:1.6}
.tag.pin,.tag.new{border-color:var(--accent);color:var(--accent)}
.tag.new{background:var(--accent);color:#fff}
.tag.private{border-color:var(--ink);color:var(--ink)}
.tag.st-open{border-color:#c9a227;color:#8a6d0b}
.tag.st-answered{border-color:var(--ok);color:var(--ok)}
.tag.st-resolved{border-color:var(--rule-2);color:var(--ink-3)}
.filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px 20px;margin:0 0 14px}
.filters button{background:none;border:0;padding:0 0 6px;font-family:var(--sans);font-weight:700;font-size:14px;color:var(--ink-3);cursor:pointer;border-bottom:2px solid transparent}
.filters button.on{color:var(--ink);border-bottom-color:var(--accent)}
.filters select,.form select{font:inherit;font-size:14px;padding:8px 10px;border:1px solid var(--rule-2);border-radius:0;background:#fff;color:var(--ink)}
.form.wide{max-width:720px}
.form textarea{font:inherit;font-size:15px;line-height:1.6;padding:12px 14px;border:1px solid var(--rule-2);border-radius:0;resize:vertical;color:var(--ink)}
.form textarea:focus,.form select:focus{outline:0;border-color:var(--ink)}
.form .check{display:flex;align-items:center;gap:8px;font-family:var(--body);font-weight:400}
.form fieldset.radios{border:0;margin:12px 0 0;padding:0;display:grid;gap:6px;min-width:0}
.form fieldset.radios legend{font-family:var(--sans);font-weight:700;font-size:14px;margin-bottom:6px;padding:0}
.form fieldset.radios label{display:flex;align-items:center;gap:8px;font-family:var(--body);font-weight:400;margin:0;font-size:15px}
.rules.compact li{padding:10px 0;font-size:14.5px}
.rules.compact{margin-bottom:26px}
.post-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin:0 0 18px}
.post-meta .meta,.reply-head .meta{font-size:13px;color:var(--ink-3)}
.post-body{font-size:15.5px;color:var(--ink);max-width:70ch;word-break:keep-all;overflow-wrap:anywhere}
.post-body p{margin:0 0 12px}
.post-body ul{margin:0 0 12px;padding-left:22px}
.post-body pre{margin:0 0 12px;padding:14px 16px;background:#14161a;color:#e9ebee;overflow-x:auto;font-size:13px;line-height:1.55}
.post-body pre code{padding:0;border:0;background:none;color:inherit;font-size:inherit}
.post-body a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}
.thread{list-style:none;margin:0 0 24px;padding:0;border-top:1px solid var(--rule)}
.thread>li{padding:18px 0 6px 18px;border-bottom:1px solid var(--rule);border-left:3px solid var(--rule)}
.thread>li.staff{border-left-color:var(--accent);background:#fdf6f6}
.thread>li.none{border-left-color:transparent;padding:18px 0}
.reply-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;margin-bottom:8px}
.who{font-family:var(--body);font-weight:700;font-size:14px}
.who.staff{color:#fff;background:var(--accent);padding:1px 8px;font-size:12.5px}
.link-btn{background:none;border:0;padding:0;font:inherit;font-size:12.5px;color:var(--ink-3);cursor:pointer;text-decoration:underline}
.owner-tools,.staff-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:18px 0 0}
.staff-tools{padding:12px 14px;border:1px dashed var(--accent)}
.tools-label{font-family:var(--sans);font-weight:700;font-size:13px;color:var(--accent);margin-right:6px}
.owner-tools .btn,.staff-tools .btn{padding:8px 14px;font-size:13.5px}
.btn.danger{color:var(--accent)}
body[data-page="board-thread"] h1,body[data-page="board-notice"] h1{font-size:clamp(26px,3.4vw,40px);line-height:1.25;letter-spacing:-.03em}
#staff-notice{display:none}
body.is-staff #staff-notice{display:block}

/* the problem pages of our own (body.hub): a grey canvas, a white head, white panels and cards on it,
   so a page reads as a few clearly bounded areas instead of hairlines on an empty sheet */
body.hub{background:var(--paper-2);min-height:100vh;display:flex;flex-direction:column}
body.hub main{flex:1}                   /* a short page keeps its footer at the bottom */
/* the header as wide as the statements' (problems.css .kx-wrap): the same place on every problem page, and room for
   the English menu and the language switch */
body.hub>header .wrap{max-width:none;width:min(1160px,calc(100vw - 48px));padding:0}
body.hub .page-head{background:radial-gradient(900px 460px at 90% -30%,rgba(224,31,38,.42),rgba(224,31,38,0) 70%),radial-gradient(700px 380px at -10% 120%,rgba(224,31,38,.14),rgba(224,31,38,0) 70%),linear-gradient(180deg,#191b20,#111215);color:#fff;border-bottom:0;padding:clamp(34px,4.6vw,56px) 0 clamp(28px,3.4vw,40px)}
body.hub .page-head .kicker{margin-bottom:12px;color:#ff6b70}
body.hub .page-head h1{font-size:clamp(34px,4.6vw,54px);line-height:1;color:#fff}
body.hub .page-head h1 .sub{color:rgba(255,255,255,.7)}
/* the overview head's countdown to the deadline, at the right (the landing page's units, on the dark head) */
body.hub .head-grid{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:24px 40px}
.hcd{display:flex;gap:8px}
.hcd-u{min-width:76px;padding:13px 8px 10px;text-align:center;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12)}
.hcd-u b{display:block;font-family:var(--sans);font-weight:900;font-size:clamp(26px,3vw,36px);line-height:1;color:#fff;font-variant-numeric:tabular-nums}
.hcd-u span{display:block;margin-top:7px;font-size:12px;color:rgba(255,255,255,.66)}
@media(max-width:700px){body.hub .head-grid{grid-template-columns:minmax(0,1fr)}.hcd-u{min-width:0;flex:1}}
/* the account page's tabs and language switch on the dark head */
body.hub .page-head .tabs{border-bottom-color:rgba(255,255,255,.14)}
body.hub .page-head .tabs button{color:rgba(255,255,255,.55)}
body.hub .page-head .tabs button.on{color:#fff;border-bottom-color:var(--accent)}
/* the account facts: a plain list, label and value per line, at body size */
body[data-page="me"] .facts{display:block;background:none;border:0;margin:0}
body[data-page="me"] .fact{display:grid;grid-template-columns:180px minmax(0,1fr);gap:2px 18px;align-items:baseline;padding:12px 0;border-top:1px solid var(--rule);background:none}
body[data-page="me"] .fact:first-child{border-top:0;padding-top:0}
body[data-page="me"] .fact dt{margin:0;font-size:13.5px;color:var(--ink-3)}
body[data-page="me"] .fact dd{font-family:var(--body);font-weight:400;font-size:15.5px;color:var(--ink);word-break:break-all}
@media(max-width:560px){body[data-page="me"] .fact{grid-template-columns:minmax(0,1fr)}}
body.hub .panel .form{min-width:0}
body.hub .panel .form input{min-width:0;width:100%}
body.hub .panel .msg-line:empty{min-height:0;margin:0}
/* the overview's problems: the original list, each problem a card with a soft shadow */
body.hub .track-cards{display:grid;gap:30px}
body.hub .track{background:#fff;border:1px solid #e9ebee;border-left:5px solid var(--accent);padding:26px 30px 24px;box-shadow:0 2px 4px rgba(20,22,26,.06),0 18px 40px -20px rgba(20,22,26,.38);transition:box-shadow .2s var(--ease),transform .2s var(--ease)}
body.hub .track:first-of-type{border-top:1px solid #e9ebee;padding-top:26px}
body.hub .track:hover{transform:translateY(-2px);box-shadow:0 3px 6px rgba(20,22,26,.07),0 26px 48px -22px rgba(20,22,26,.45)}
body.hub .track .track-title{font-family:var(--body);font-weight:800;font-size:clamp(18px,2vw,22px);letter-spacing:-.02em;margin:0 0 6px}
body.hub .track p{max-width:none}
body.hub .banner{box-shadow:0 12px 30px -20px rgba(224,31,38,.6)}
body.hub .lede{font-family:var(--body);font-size:17px;font-weight:500;line-height:1.7;letter-spacing:-.01em;color:var(--ink-2);max-width:none;margin:2px 0 22px}
/* each problem card carries its number as a large outlined numeral at the right */
body.hub .track-cards{counter-reset:prob}
body.hub .track{position:relative;overflow:hidden;counter-increment:prob}
body.hub .track::after{content:"0" counter(prob);position:absolute;right:22px;top:-22px;font-family:var(--sans);font-weight:900;font-size:150px;line-height:1;letter-spacing:-.05em;color:transparent;-webkit-text-stroke:1.5px rgba(20,22,26,.09);pointer-events:none;transition:-webkit-text-stroke-color .25s var(--ease)}
body.hub .track:hover::after{-webkit-text-stroke-color:rgba(224,31,38,.4)}
body.hub .track > *{position:relative;z-index:1}
/* phones: a smaller numeral */
@media(max-width:700px){body.hub .track::after{font-size:96px;top:-12px;right:14px}}
body.hub .track p{max-width:64ch}
.wrap.narrow{max-width:calc(860px + 2 * var(--gut))}
body.hub .ov-title{margin:0 0 16px;font-family:var(--sans);font-weight:700;font-size:18px}
body.hub main{padding:clamp(18px,2.6vw,28px) 0 clamp(36px,5vw,56px)}
body.hub section{padding:0;border:0;margin:0 0 30px}
body.hub section:last-child{margin-bottom:0}
body.hub .panel{background:#fff;border:1px solid #e9ebee;border-left:5px solid var(--accent);padding:clamp(22px,3vw,34px) clamp(20px,3vw,36px);box-shadow:0 2px 4px rgba(20,22,26,.06),0 18px 40px -20px rgba(20,22,26,.36)}
body.hub .panel.cols{grid-template-columns:minmax(0,168px) minmax(0,1fr);gap:clamp(16px,3.5vw,44px)}
body.hub .sec-title{position:static;font-size:18px}
@media(max-width:820px){body.hub .panel.cols{grid-template-columns:minmax(0,1fr);gap:16px}body.hub .sec-title{padding-bottom:12px}}
body.hub .rules,body.hub .prose p,body.hub .note{max-width:none}
body.hub .empty{border:0;background:var(--paper-2);max-width:none}
body.hub footer{background:#fff}
/* boards and lists (notices, Q&A, leaderboards, patch notes; body.hub.sheet): a white page and a ruled list
   with column heads -- a board, not cards */
body.hub.sheet{background:#fff}
.board-title{margin:0 0 14px;font-family:var(--sans);font-weight:700;font-size:18px}
.board-tools{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;margin:0 0 14px}
.board-tools .filters{margin:0}
.btn.btn-sm{padding:9px 18px;font-size:14px}
.board-head,body.hub .board-list .item{display:grid;grid-template-columns:150px minmax(0,1fr) 170px;gap:6px 18px;align-items:center}
.board-head.q,body.hub .board-list .item.q{grid-template-columns:190px minmax(0,1fr) 310px}
.board-head.n,body.hub #notice-list .item{grid-template-columns:150px minmax(0,1fr) 64px 170px}
.board-head.n span:nth-child(3),body.hub .board-list .item .views{text-align:center;font-size:13.5px;color:var(--ink-3)}
@media(max-width:700px){body.hub .board-list .item .views{display:none}}
.board-head{padding:11px 14px;border-top:2px solid var(--ink);border-bottom:1px solid var(--rule-2);font-size:12.5px;font-weight:600;color:var(--ink-2)}
.board-head span:last-child,body.hub .board-list .item .meta{text-align:right}
body.hub .board-list{border-top:0}
body.hub .board-list .item{padding:15px 14px}
body.hub .board-list .item .tags{grid-column:auto}
body.hub .board-list .item .title{font-weight:600;font-size:15.5px}
body.hub .board-list .item .meta{align-self:center;white-space:normal}
body.hub .board-list .item:has(.tag.pin){background:#fdf6f6}
body.hub .board-list .item:has(.tag.pin) .title{font-weight:700}
body.hub .board-list .empty{margin:0;border:0;border-bottom:1px solid var(--rule);background:none;text-align:center;padding:56px 20px;max-width:none}
body.hub.sheet .empty{max-width:none}
body.hub .board-list.solo{border-top:2px solid var(--ink)}
body.hub .board-list .empty strong{margin-bottom:8px}
.board .pn-day{margin:0;padding:12px 4px;border-top:2px solid var(--ink);border-bottom:1px solid var(--rule-2);font-size:13px;color:var(--ink-2)}
.board .pn-entry{margin:0;border:0;border-bottom:1px solid var(--rule);padding:18px 4px}
.board .pn-entry + .pn-day{margin-top:28px}
@media(max-width:700px){.board-head{display:none}body.hub .board-list .item,body.hub .board-list .item.q{grid-template-columns:minmax(0,1fr);gap:6px}body.hub .board-list .item .meta{text-align:left}body.hub .board-list{border-top:2px solid var(--ink)}}
.board .post-body{max-width:none;padding:28px 0;border-top:2px solid var(--ink);border-bottom:1px solid var(--rule)}
.board .post-meta{margin:0;padding:14px 0;border-top:2px solid var(--ink)}
.board .post-meta + .post-body{border-top:1px solid var(--rule)}

/* footer */
footer{border-top:1px solid var(--rule);padding:clamp(36px,5vw,56px) 0 36px}
.foot{display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;align-items:baseline;font-size:13.5px;color:var(--ink-3)}
.foot a{color:var(--ink-2);border-bottom:1px solid var(--rule-2)}
.foot a:hover{color:var(--accent);border-bottom-color:var(--accent)}

/* short message pages (403) */
body.plain{min-height:100vh;display:flex;align-items:center}
.msg{padding-top:60px;padding-bottom:60px}
.msg-code{font-family:var(--sans);font-weight:700;font-size:14px;letter-spacing:.14em;color:var(--accent);margin:0 0 14px}
.msg h1{font-size:clamp(30px,5vw,48px);margin-bottom:14px}
.msg p{color:var(--ink-2);margin:0 0 26px}

@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition-duration:.01ms !important;animation:none !important}}

/* scoring results (assets/scoring.js): the 제출 현황 tab, the leaderboards, my submissions on /me/ */
.board-head.st,body.hub #status-list .item{grid-template-columns:140px minmax(0,1fr) 90px 120px 80px}
body.hub #status-list .item .slot{font-size:13.5px;color:var(--ink-2)}
body.hub #status-list .item .score,body.hub .score-board .item .score{text-align:right;font-variant-numeric:tabular-nums;font-weight:700;color:var(--ink);font-size:16px}
.board-head.st span:last-child{text-align:right}
.status-meta{font-size:12.5px;color:var(--ink-3)}
.status-counts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 16px}
.status-counts .count{border:1px solid var(--rule);padding:10px 12px;display:flex;flex-wrap:wrap;gap:4px 12px;font-size:13px;color:var(--ink-2)}
.status-counts .count strong{width:100%;color:var(--ink);font-family:var(--sans)}
.board-tools .filters button{background:none;border:1px solid var(--rule-2);padding:4px 10px;font-size:13px;cursor:pointer;color:var(--ink-2)}
.board-tools .filters button.on{border-color:var(--ink);color:var(--ink);font-weight:600}
.score-board{margin-bottom:28px}
.score-board .board-head,body.hub .score-board .board-list .item{grid-template-columns:70px minmax(0,1fr) 110px}
body.hub .score-board .item .rank{font-weight:700;font-variant-numeric:tabular-nums}
body.hub .score-board .item .title small,body.hub #my-submissions .item .title small{display:block;font-weight:400;font-size:12.5px;color:var(--ink-3);margin-top:2px}
body.hub .score-board .item.mine{background:#fdf6f6}
body.hub .score-board .item.sub .title{font-size:13px;color:var(--ink-3);font-weight:600}
body.hub #my-submissions .item{grid-template-columns:140px minmax(0,1fr) 170px}
body.hub #my-submissions .item .tags{justify-content:flex-end;align-items:center}
#my-submissions pre.why{white-space:pre-wrap;font-size:12px;background:var(--paper-2);padding:8px 10px;margin:6px 0 0;max-height:240px;overflow:auto}
@media(max-width:700px){.status-counts{grid-template-columns:repeat(2,minmax(0,1fr))}
  .board-head.st,body.hub #status-list .item{grid-template-columns:1fr 1fr}
  body.hub #my-submissions .item{grid-template-columns:1fr}}
#my-track1 h3{font-family:var(--sans);font-size:15px;margin:22px 0 8px}
#my-track1 details{margin:8px 0}
#my-track1 summary{cursor:pointer;font-weight:600;font-size:14px}
.score-table{border-collapse:collapse;width:100%;font-size:13px;font-variant-numeric:tabular-nums}
.score-table th,.score-table td{border-bottom:1px solid var(--rule);padding:6px 8px;text-align:right;white-space:nowrap}
.score-table th:first-child,.score-table td:first-child,.score-table th:nth-child(2),.score-table td:nth-child(2){text-align:left}
.score-table th{font-weight:600;color:var(--ink-2);border-bottom-color:var(--rule-2)}
.t1-summary{font-size:15px}
/* page-by-page lists (assets/pager.js) */
.pager{justify-content:center;gap:8px 14px;margin:16px 0 0}
.pager button:disabled{opacity:.35;cursor:default}
.pager .gap{color:var(--ink-3);font-size:14px;padding:0 0 6px}
/* leaderboards as tables, one participant to a row (assets/scoring.js boards()) */
.board-wrap{margin-top:0}
.board-table th,.board-table td{padding:10px 12px;vertical-align:middle}
.board-table th{color:#e3e5e8}
.board-table td.total{font-weight:700;color:var(--ink)}
.board-table .rk{color:var(--ink-3);font-weight:400;font-size:12px}
.board-table td.who-cell{font-weight:600;color:var(--ink)}
.board-table tr.mine td{background:#fdf6f6}
.board-table tr.sub td{text-align:left;color:var(--ink-3);font-size:12.5px;background:#fafafa}
/* a post's title under the board's banner (notices/view.html, qa/view.html) */
.board .post-head{padding:0 0 18px}
.board .post-kicker{margin:0 0 8px;font-size:13.5px;color:var(--accent)}
.board .post-title{margin:0;font-family:var(--sans);font-weight:700;font-size:clamp(22px,3vw,30px);line-height:1.3;color:var(--ink);word-break:keep-all;overflow-wrap:anywhere}
/* a rescore waiting or running: the earlier score, dimmed (assets/scoring.js) */
.dim-score{opacity:.45}
.cond-score{white-space:nowrap}
