html { font-size: 16px } body { padding-top: 10px; padding-bottom: 10px; background-color: #efefef; } .uoj-content { min-height: 250px; } .uoj-footer { text-align: center; margin-top: 20px; padding-top: 20px; color: gray; border-top: 1px solid #e5e5e5; line-height: 10px; } .uoj-footer a { color: gray; } h1.page-header { font-size: 2em; } .page-header { padding-bottom: 9px; margin: 40px 0 20px; border-bottom: 1px solid #eee; } a.header-a { color: #333; } a sup { text-decoration: none; display: inline-block; } a sub { text-decoration: none; display: inline-block; } .indent2 { text-indent: 2em; } .markdown-editor-out p { text-indent: 2em; word-break: break-all; } article img { vertical-align: baseline; max-width: 100%; height: auto; } article h1 { font-size: 1.75em; font-weight: 700; } article h2 { font-size: 1.5em; font-weight: 700; margin: 1.2rem 0 1rem; } article h3 { font-size: 1.25em; font-weight: 700; margin: 1.2rem 0 1rem; } article code { font-family: monospace; } .blog-title { font-size: 2.125rem; font-weight: 700; margin: 1rem 0 1.5rem; } pre { -moz-tab-size: 4; -o-tab-size: 4; tab-size: 4; padding: 9.5px; margin: 0 0 10px; background-color: #f5f5f5; border: 1px solid #ccc; border-radius: 4px; } .uoj-username { font-weight: 800; } .uoj-honor { font-weight: 800; } .uoj-score { font-weight: 700; } .table-text-center>thead>tr>th { text-align: center; } .table-text-center>tbody>tr>td { text-align: center; } .table-vertical-middle>thead>tr>th { vertical-align: middle; } .table-vertical-middle>tbody>tr>td { vertical-align: middle; } .top-buffer-no { margin-top: 0px; } .top-buffer-xs { margin-top: 3px; } .top-buffer-sm { margin-top: 5px; } .top-buffer-md { margin-top: 10px; } .top-buffer-lg { margin-top: 30px; } .bot-buffer-no { margin-bottom: 0px; } .bot-buffer-xs { margin-bottom: 3px; } .bot-buffer-sm { margin-bottom: 5px; } .bot-buffer-md { margin-bottom: 10px; } .bot-buffer-lg { margin-bottom: 30px; } .glyphicon-ok, .glyphicon-ok-sign { color: green; } .glyphicon-remove, .glyphicon-remove-sign { color: red; } .comt { } .comtposterbox { text-align:center; } .comtbox { width: 100%; } .comtbox1 { white-space: pre-wrap; word-break: break-all; min-height: 80px; margin-top: 10px; margin-bottom: 10px; } .comtbox2 { text-align: right; } .comtbox3 { display: inline-block; margin-right: 5px; } .comtbox4 { display: inline-block; } .comtbox5 { background-image: -webkit-linear-gradient(top, #f5f5f5 0, #fafafa 100%); background-image: -o-linear-gradient(top, #f5f5f5 0, #fafafa 100%); background-image: linear-gradient(to bottom, #f5f5f5 0, #fafafa 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fffafafa', GradientType=0); border-color: #dcdcdc; -webkit-box-shadow: inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1); box-shadow: inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1); padding: 9px; border-radius: 3px; min-height: 20px; margin-bottom: 20px; border: 1px solid #e3e3e3; margin-top: 10px; } .comtbox6 { white-space: pre-wrap; word-break: break-all; } .comtbox7 { background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #fafafa 100%); background-image: -o-linear-gradient(top, #f5f5f5 0%, #fafafa 100%); background-image: linear-gradient(to bottom, #f5f5f5 0%, #fafafa 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fffafafa', GradientType=0); border-color: #dcdcdc; -webkit-box-shadow: inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1); box-shadow: inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1); border-radius: 3px; margin-left: 50px; margin-top: 10px; margin-bottom: 2px; padding-left: 10px; padding-right: 10px; padding-top:10px; white-space: nowrap; padding-bottom: 10px; border: 1px solid #e3e3e3; text-align: left; } .comtbox8 { background-image: -webkit-linear-gradient(top, #ffffff 100%, #fafafa 0%); background-image: -o-linear-gradient(top, #ffffff 100%, #fafafa 0%); background-image: linear-gradient(to bottom, #ffffff 100%, #fafafa 0%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fffafafa', GradientType=0); border-color: #dcdcdc; -webkit-box-shadow: inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1); box-shadow: inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1); border-radius: 3px; margin-left: 50px; margin-top: 10px; margin-bottom: 2px; padding-left: 10px; padding-right: 10px; padding-top:10px; white-space: nowrap; padding-bottom: 10px; border: 1px solid #e3e3e3; text-align: left; } .question-content { max-height: 100px; white-space: pre-wrap; word-wrap: break-word; word-break: break-all; } .uoj-click-zan-block { display: inline-block; min-width: 140px; text-align: left; } .uoj-click-zan-up, .uoj-click-zan-down, .uoj-click-zan-cnt { margin-left: 5px; margin-right: 5px; } .uoj-click-zan-block-cur-up .uoj-click-zan-up { color: green; font-weight: 700; } .uoj-click-zan-block-cur-down .uoj-click-zan-down { color: red; font-weight: 700; } .uoj-click-zan-block-cur-down .uoj-click-zan-up, .uoj-click-zan-block-cur-up .uoj-click-zan-down { color: gray; } .uoj-click-zan-block-positive .uoj-click-zan-cnt { color: green; } .uoj-click-zan-block-neutral .uoj-click-zan-cnt { color: gray; } .uoj-click-zan-block-negative .uoj-click-zan-cnt { color: red; } .uoj-problem-tag { margin-left: 5px; margin-right: 5px; } .uoj-blog-tag { margin-left: 5px; margin-right: 5px; } .uoj-status-details-img-div { display:inline-block; width:50%; padding-right:10px; text-align:right; } .uoj-status-details-text-div { display:inline-block; width:50%; padding-left:10px; text-align:left; } .uoj-certs { display: inline-block; border-radius: 3px; padding: 3px 5px; color: white; font-weight: bold; font-size: 12px; margin: 0px 5px; } .uoj-certs:hover { } .uoj-avatar { width: 100px; height: 100px; } .uoj-certs-red { background-color: #c41e3a; } .uoj-certs-blue { background-color: #3498db; } .uoj-certs-green { background-color: #228b22; } .uoj-certs-purple { background-color: #8e44ad; } .uoj-certs-pink { background-color: #da70d6; } .uoj-certs-deepblue { background-color: #0000cd; } .uoj-certs-olive { background-color: #808000; } @keyframes sideBlue { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } .uoj-certs-pro { background: linear-gradient(90deg, #8a00ff, #ff0000); } .uoj-certs-max { background: linear-gradient(90deg, #000000, #ff0000); } .uoj-certs-ultra { background: linear-gradient(90deg, #9589fe, #0484e2, #980ecc); background-size: 300% 100%; animation: sideBlue 4s ease-in-out infinite; } .uoj-certs-promax { background: linear-gradient(90deg, #000000, #ff0000); background-size: 300% 100%; animation: sideBlue 4s ease-in-out infinite; } .table { margin-bottom: 0; } .wyoj-topcard { background: #f8f9fa; border-radius: 12px; overflow: hidden; } /* ===== 首页服务器数据看板 ===== */ .stat-card { border: 1px solid #e3e3e3; border-radius: 6px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04); transition: box-shadow 0.2s ease, transform 0.1s ease; } .stat-card:hover { box-shadow: 0 6px 16px rgba(0, 0, 0, 0.08); transform: translateY(-2px); } .stat-icon { font-size: 1.3rem; color: #6c757d; margin-bottom: 4px; } .stat-num { font-size: 1.3rem; font-weight: 800; color: #343a40; line-height: 1.2; } .stat-label { font-size: 0.8rem; color: #6c757d; margin-top: 2px; } /* ===== 首页最近比赛 ===== */ .contest-table { margin-bottom: 0; } .contest-table td { vertical-align: middle; padding: 12px 12px; border-top: 1px dashed #e9ecef; } .contest-table tbody tr:first-child td { border-top: none; } .contest-table .contest-name { white-space: nowrap; } .contest-table .contest-name a { font-size: 1rem; font-weight: 700; color: #212529; } .contest-table .contest-info { font-size: 0.95rem; color: #343a40; white-space: nowrap; } .contest-table .contest-info .glyphicon { font-size: 0.85rem; margin-right: 2px; color: #495057; } .contest-table .contest-countdown { font-size: 0.95rem; margin-left: 6px; color: #e67e22; } .contest-table .contest-countdown span { font-size: 0.95rem !important; } /* ===== 题目详情页 ===== */ .problem-title-bar { margin-bottom: 8px; } .problem-statement { background: #ffffff; border: 1px solid #e3e3e3; border-radius: 6px; padding: 24px 28px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04); line-height: 1.7; overflow-wrap: break-word; } .problem-sidebar { position: sticky; top: 12px; } .problem-meta-card { border: 1px solid #e3e3e3; border-radius: 6px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04); margin-bottom: 16px; } .problem-meta-card .card-header { background: #f8f9fa; border-bottom: 1px solid #e3e3e3; font-weight: 700; color: #495057; padding: 10px 16px; font-size: 0.95rem; } .problem-meta-card .card-body { padding: 0; } .problem-meta-card .card-body ul li { padding: 9px 16px; border-bottom: 1px dashed #e9ecef; font-size: 0.9rem; } .problem-meta-card .card-body ul li:last-child { border-bottom: none; } .problem-meta-card .meta-label { color: #6c757d; } .problem-meta-card .badge-danger { background-color: #dc3545; } .blog-content.collapsed { max-height: 300px; overflow: hidden; transition: max-height 0.3s ease; transition: box-shadow 0.2ease, transform 0.1s ease; cursor: pointer; } .blog-content.collapsed:hover { box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12); } .blog-content.expanded { max-height: none; } /* --- submission details: test-point squares + detail/code modal dialog --- */ .uoj-test-grid { display: flex; flex-direction: column; gap: 10px; } .uoj-test-group { display: flex; flex-wrap: wrap; gap: 8px; } .uoj-test-group-subtask { display: block; padding-bottom: 8px; border-bottom: 1px solid #e9ecef; } .uoj-test-group-subtask:last-child { border-bottom: none; padding-bottom: 0; } .uoj-test-subtask-head { font-size: 0.85rem; color: #495057; margin-bottom: 6px; } .uoj-test-rects { display: flex; flex-wrap: wrap; gap: 8px; } .uoj-test-rect { box-sizing: border-box; width: 96px; height: 96px; padding: 6px 4px; border: 1px solid rgba(0, 0, 0, 0.12); border-radius: 4px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; line-height: 1.1; text-align: center; overflow: hidden; cursor: pointer; -webkit-user-select: none; user-select: none; } .uoj-test-rect-index { font-size: 12px; opacity: 0.8; white-space: nowrap; } .uoj-test-rect-verdict { font-size: 18px; font-weight: 700; line-height: 1.1; white-space: nowrap; } .uoj-test-rect-meta { font-size: 10px; opacity: 0.9; white-space: nowrap; } .uoj-test-rect-ac { background-color: #00ee00; border-color: #2bff4f; color: #fff; } .uoj-test-rect-wa { background-color: #dd0000; border-color: #ff0000; color: #fff; } .uoj-test-rect-other { background-color: #e6e61e; border-color: #ffff2b; color: #333; } .uoj-test-rect[data-target]:hover { filter: brightness(1.08); } .uoj-test-rect.is-disabled { cursor: default; opacity: 0.75; } .uoj-test-rect.is-selected { outline: 2px solid #333; outline-offset: 1px; } .uoj-test-rect-ac.is-selected { outline-color: #00ee00; } .uoj-test-rect-wa.is-selected { outline-color: #dd0000; } .uoj-test-rect-other.is-selected { outline-color: #e6e61e; } .uoj-test-body>h4 { font-size: 1rem; margin-top: 8px; } .uoj-details-error>pre { margin-top: 8px; } .uoj-code-toggle { margin-bottom: 2px; } .uoj-code-meta { margin-bottom: 8px; font-size: 0.85rem; } .uoj-modal { position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: 1060; display: flex; align-items: center; justify-content: center; padding: 16px; background-color: rgba(0, 0, 0, 0.5); overflow: auto; } .uoj-modal[hidden] { display: none; } .uoj-modal-backdrop { position: absolute; top: 0; left: 0; right: 0; bottom: 0; } .uoj-modal-window { position: relative; z-index: 1; width: min(1100px, 88vw); height: min(900px, 80vh); max-width: 100%; max-height: 100%; display: flex; flex-direction: column; background-color: #fff; border: 1px solid #dee2e6; border-radius: 4px; box-shadow: 0 10px 40px rgba(0, 0, 0, 0.4); overflow: hidden; } .uoj-modal-body { flex: 1 1 auto; overflow: auto; padding: 12px 14px; } .uoj-modal-close { position: absolute; top: 6px; right: 8px; z-index: 2; width: 30px; height: 30px; padding: 0; border: 0; border-radius: 4px; background-color: transparent; color: #495057; font-size: 22px; line-height: 1; cursor: pointer; } .uoj-modal-close:hover { background-color: #f1f3f5; color: #000; } body.uoj-modal-open { overflow: hidden; } @media (max-width: 480px) { .uoj-test-group, .uoj-test-rects { gap: 6px; } .uoj-test-rect { width: 80px; height: 80px; padding: 4px 2px; } .uoj-test-rect-index { font-size: 11px; } .uoj-test-rect-verdict { font-size: 16px; } .uoj-test-rect-meta { font-size: 9px; } } /* ========================================================================== Quiet section header -------------------------------------------------------------------------- The card-header is a *label*, not a banner: light surface, hairline, dark grey small type. Colour on this site is reserved for meaning (red = rating, green/red/yellow = verdict), so a saturated header competes with it. This is the same treatment `.problem-meta-card .card-header` already used. Judge-status headers (.card-uoj-*) and `bg-*` utility headers are more specific, so they keep their own colours. ========================================================================== */ .card-header { background: #f8f9fa; border-bottom: 1px solid #e3e3e3; color: #495057; font-size: 0.95rem; font-weight: 700; } /* the markup mixes