/* ── Reset & base ── */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html { scroll-behavior: smooth; } body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif; background: #f0f6fa; color: #1a2b3c; line-height: 1.65; } a { color: #0d7fa5; text-decoration: none; } a:hover { text-decoration: underline; } /* ── Layout helpers ── */ .container { max-width: 860px; margin: 0 auto; padding: 0 1.5rem; } /* ── Hero ── */ .hero { background: linear-gradient(135deg, #0a4f6e 0%, #0d7fa5 60%, #12a89d 100%); color: #fff; padding: 4rem 1.5rem 3.5rem; text-align: center; } .hero-inner { max-width: 720px; margin: 0 auto; } .hero-partner { display: flex; align-items: center; justify-content: center; gap: 0.6rem; margin-bottom: 1.25rem; font-size: 0.82rem; color: rgba(255,255,255,0.65); letter-spacing: 0.02em; } .hero-logo { height: 28px; width: auto; filter: brightness(0) invert(1); opacity: 0.85; } .badge { display: inline-block; background: rgba(255,255,255,0.18); border: 1px solid rgba(255,255,255,0.35); border-radius: 999px; padding: 0.3rem 1rem; font-size: 0.85rem; margin-bottom: 1.2rem; letter-spacing: 0.04em; } .hero h1 { font-size: clamp(2rem, 5vw, 3rem); font-weight: 800; margin-bottom: 1rem; color: #fff; } .hero .subtitle { font-size: 1.1rem; color: rgba(255,255,255,0.88); margin-bottom: 2rem; } .hero .subtitle a { color: #a8e6f0; } .hero .subtitle a:hover { color: #fff; } .hero-actions { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; } /* ── Buttons ── */ .btn { display: inline-block; padding: 0.65rem 1.5rem; border-radius: 8px; font-size: 0.95rem; font-weight: 600; cursor: pointer; transition: opacity 0.15s, transform 0.1s; } .btn:hover { opacity: 0.88; transform: translateY(-1px); text-decoration: none; } .btn-primary { background: #fff; color: #0a4f6e; } .btn-outline { background: transparent; color: #fff; border: 2px solid rgba(255,255,255,0.6); } .btn-outline-dark { background: transparent; color: #0a4f6e; border: 2px solid #0d7fa5; } /* ── Sections ── */ .section { padding: 3.5rem 0; } .section-alt { background: #fff; } .section h2 { font-size: 1.6rem; font-weight: 700; color: #0a4f6e; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 3px solid #0d7fa5; display: inline-block; } .section p, .section li { color: #3a4f60; font-size: 1rem; margin-top: 0.6rem; } .section ul, .section ol { padding-left: 1.4rem; margin-top: 0.8rem; } .section li { margin-bottom: 0.4rem; } /* ── Info cards grid ── */ .card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 1.25rem; margin-top: 1.5rem; } .info-card { background: #f0f6fa; border: 1px solid #c8dfe8; border-radius: 12px; padding: 1.25rem 1rem; } .info-icon { font-size: 1.8rem; margin-bottom: 0.5rem; } .info-card h3 { font-size: 1rem; font-weight: 700; color: #0a4f6e; margin-bottom: 0.3rem; } .info-card p { font-size: 0.9rem; color: #4a6070; margin: 0; } /* ── Steps list ── */ .steps { list-style: none; padding: 0; margin-top: 1.25rem; display: flex; flex-direction: column; gap: 1.25rem; } .steps li { display: flex; align-items: flex-start; gap: 1rem; margin: 0; } .step-num { min-width: 2.2rem; height: 2.2rem; display: flex; align-items: center; justify-content: center; background: #0d7fa5; color: #fff; border-radius: 50%; font-weight: 700; font-size: 1rem; flex-shrink: 0; } .steps strong { display: block; color: #0a4f6e; font-size: 1rem; margin-bottom: 0.2rem; } .steps p { margin: 0; color: #4a6070; font-size: 0.95rem; } /* ── CTA block ── */ .cta-block { text-align: center; } .cta-block h2 { display: block; border: none; margin-bottom: 0.75rem; } .cta-block p { max-width: 520px; margin: 0 auto 1.5rem; } .cta-block .btn-primary { background: #0d7fa5; color: #fff; } /* ── Track cards ── */ .track-card { display: flex; flex-direction: column; gap: 0.5rem; } .track-format { font-size: 0.82rem; color: #5a7080; background: #e4f0f6; border-radius: 6px; padding: 0.4rem 0.6rem; margin-top: auto; } .track-format code { font-family: ui-monospace, "SFMono-Regular", Menlo, monospace; font-size: 0.8rem; } /* ── Prize grid ── */ .prize-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 1rem; margin-top: 1.25rem; } .prize-card { border-radius: 12px; padding: 1.25rem 1rem; text-align: center; border: 1px solid transparent; } .prize-place { font-size: 0.85rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 0.4rem; } .prize-amount { font-size: 1.6rem; font-weight: 800; } .prize-card.gold { background: #fef9e7; border-color: #f5c842; color: #7a5a00; } .prize-card.silver { background: #f4f6f7; border-color: #b0bec5; color: #37474f; } .prize-card.bronze { background: #fdf0e8; border-color: #e0926a; color: #7a3a10; } .prize-card.special { background: #edf6f0; border-color: #5cb88a; color: #1a5c38; } /* ── Judging criteria bars ── */ .criteria-list { display: flex; flex-direction: column; gap: 0.9rem; margin-top: 1.25rem; } .criterion { display: flex; flex-direction: column; gap: 0.35rem; padding-bottom: 1.25rem; margin-bottom: 0.5rem; border-bottom: 1px solid #d0e8f0; } .criterion:last-child { border-bottom: none; padding-bottom: 0; margin-bottom: 0; } .criteria-stacked-bar { display: flex; height: 14px; border-radius: 999px; overflow: visible; margin: 1.25rem 0 1.5rem; gap: 2px; } .csb-seg { flex: 0 0 var(--w); background: var(--c); position: relative; cursor: default; transition: filter 0.15s ease, transform 0.15s ease; } /* clip bar shape but allow tooltip to overflow */ .criteria-stacked-bar > .csb-seg:first-child { border-radius: 999px 0 0 999px; } .criteria-stacked-bar > .csb-seg:last-child { border-radius: 0 999px 999px 0; } .csb-seg:hover { filter: brightness(1.15); z-index: 1; } .csb-seg::after { content: attr(data-tip); position: absolute; bottom: calc(100% + 8px); left: 50%; transform: translateX(-50%); background: #1a2b3c; color: #fff; font-size: 0.78rem; white-space: nowrap; padding: 0.3rem 0.6rem; border-radius: 5px; pointer-events: none; opacity: 0; transition: opacity 0.15s ease; z-index: 10; } .csb-seg:hover::after { opacity: 1; } .criterion-swatch { display: inline-block; width: 10px; height: 10px; border-radius: 2px; background: var(--c); margin-right: 0.45rem; vertical-align: middle; flex-shrink: 0; } .criterion-label { display: flex; justify-content: space-between; font-size: 0.9rem; color: #3a4f60; } .criterion-label strong { color: #0a4f6e; } /* ── Overview sidebar layout ── */ .overview-layout { display: flex; align-items: flex-start; } .overview-toc { position: sticky; top: 0; width: 180px; flex-shrink: 0; padding: 2rem 1.25rem 2rem 1rem; display: flex; flex-direction: column; gap: 0.15rem; border-left: 1px solid #d0e8f0; min-height: 100%; } .overview-content { flex: 1; min-width: 0; } .toc-label { font-size: 0.72rem; font-weight: 700; color: #6a8090; text-transform: uppercase; letter-spacing: 0.08em; padding: 0 0 0.5rem 0.5rem; white-space: nowrap; } .toc-link { font-size: 0.875rem; color: #3a4f60; padding: 0.3rem 0.5rem; border-radius: 5px; border-left: 2px solid transparent; white-space: nowrap; transition: background 0.15s, color 0.15s, border-color 0.15s; } .toc-link:hover, .toc-link.active { background: #e8f4fb; color: #1a7dbb; border-left-color: #1f9bea; text-decoration: none; } .toc-link.toc-top { margin-top: 0.75rem; padding-top: 0.3rem; border-top: 1px solid #d0e8f0; color: #6a8090; font-size: 0.8rem; opacity: 0; pointer-events: none; transition: opacity 0.3s ease; } .toc-link.toc-top.visible { opacity: 1; pointer-events: auto; } .toc-link.toc-top:hover { color: #1a7dbb; background: #e8f4fb; border-left-color: #1f9bea; border-top-color: #d0e8f0; } @media (max-width: 680px) { .overview-layout { flex-direction: column; } .overview-toc { position: static; width: 100%; flex-direction: row; flex-wrap: wrap; border-left: none; border-bottom: 1px solid #d0e8f0; padding: 0.65rem 1rem; gap: 0.25rem; } .toc-label { padding-bottom: 0; align-self: center; } .toc-link { border-left: none; border-radius: 999px; } } /* ── Tab nav ── */ .tab-nav { display: flex; gap: 0; background: #fff; border-bottom: 2px solid #c8dfe8; padding: 0 1.5rem; overflow-x: auto; justify-content: center; } .tab-btn { background: none; border: none; border-bottom: 3px solid transparent; margin-bottom: -2px; padding: 1rem 1.25rem; font-size: 0.95rem; font-weight: 600; color: #5a7080; cursor: pointer; white-space: nowrap; transition: color 0.15s, border-color 0.15s; } .tab-btn:hover { color: #0d7fa5; } .tab-btn.active { color: #0a4f6e; border-bottom-color: #0d7fa5; } .tab-btn-external { text-decoration: none; opacity: 0.8; } .tab-btn-external:hover { opacity: 1; border-bottom-color: transparent; } /* ── Tab panels ── */ .tab-panel { display: none; } .tab-panel.active { display: block; } /* ── Leaderboard placeholder ── */ .leaderboard-meta { display: flex; flex-wrap: wrap; gap: 1rem; margin: 1rem 0; font-size: 0.9rem; color: #4a6070; } .lb-note { color: #7a90a0; font-style: italic; } .lb-placeholder { margin-top: 2rem; border: 2px dashed #c8dfe8; border-radius: 12px; padding: 3rem 1rem; text-align: center; color: #7a90a0; } .lb-icon { font-size: 2.5rem; margin-bottom: 0.75rem; } /* ── Submission schema table ── */ .download-template { display: inline-flex; align-items: center; gap: 0.35rem; margin: 0.6rem 0 0.85rem; padding: 0.4rem 0.85rem; border: 1.5px solid #1f9bea; border-radius: 6px; font-size: 0.875rem; font-weight: 600; color: #1a7dbb; background: #f0f8fe; text-decoration: none; } .download-template:hover { background: #def0fc; text-decoration: none; } .schema-table { width: 100%; border-collapse: collapse; margin-top: 0.75rem; font-size: 0.9rem; } .schema-table th { text-align: left; background: #e4f0f6; color: #0a4f6e; padding: 0.5rem 0.75rem; border: 1px solid #c8dfe8; } .schema-table td { padding: 0.45rem 0.75rem; border: 1px solid #dde8ee; color: #3a4f60; vertical-align: top; } .schema-table tr:nth-child(even) td { background: #f5f9fb; } /* ── Sub-headings inside tabs ── */ .sub-heading { font-size: 1.15rem; font-weight: 700; color: #0a4f6e; margin: 1.5rem 0 0.75rem; padding-bottom: 0.3rem; border-bottom: 2px solid #c8dfe8; } /* ── FAQ accordion ── */ .faq-list { margin-top: 1.25rem; display: flex; flex-direction: column; gap: 0.6rem; } .faq-item { border: 1px solid #c8dfe8; border-radius: 10px; background: #fff; overflow: hidden; } .faq-item summary { padding: 1rem 1.1rem; font-weight: 600; color: #0a4f6e; cursor: pointer; list-style: none; display: flex; justify-content: space-between; align-items: center; user-select: none; } .faq-item summary::-webkit-details-marker { display: none; } .faq-item summary::after { content: '+'; font-size: 1.2rem; color: #0d7fa5; flex-shrink: 0; margin-left: 1rem; } .faq-item[open] summary::after { content: '−'; } .faq-item p { padding: 0 1.1rem 1rem; margin: 0; color: #3a4f60; font-size: 0.95rem; border-top: 1px solid #e4f0f6; } /* ── Community tab ── */ .community-channels { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1.25rem; margin-top: 1.5rem; } .community-channels .info-card { display: flex; flex-direction: column; gap: 0.75rem; } .community-channels .info-card p { flex: 1; } .community-guidelines { margin-top: 2.5rem; background: #e8f4fa; border: 1px solid #c8dfe8; border-radius: 12px; padding: 1.5rem; } .community-guidelines h3 { font-size: 1rem; font-weight: 700; color: #0a4f6e; margin-bottom: 0.75rem; } .community-guidelines ul { padding-left: 1.25rem; display: flex; flex-direction: column; gap: 0.4rem; font-size: 0.93rem; color: #3a4f60; } /* ── Rules list ── */ .rules-list { padding-left: 1.25rem; display: flex; flex-direction: column; gap: 0.6rem; font-size: 0.95rem; color: #3a4f60; margin-bottom: 1.5rem; } .rules-list li { line-height: 1.6; } /* ── Footer ── */ footer { background: #0a4f6e; color: rgba(255,255,255,0.7); padding: 1.5rem 0; text-align: center; font-size: 0.88rem; } footer a { color: rgba(255,255,255,0.85); } footer a:hover { color: #fff; } .footer-credit { margin-top: 0.4rem; font-size: 0.82rem; color: rgba(255,255,255,0.5); } .footer-credit a { color: rgba(255,255,255,0.7); } .footer-credit a:hover { color: #fff; } /* ── Sponsor row (hero) ── */ .sponsor-row { margin-top: 2rem; display: flex; flex-direction: column; align-items: center; gap: 0.6rem; } .sponsor-row-label { font-size: 0.78rem; color: rgba(255,255,255,0.6); text-transform: uppercase; letter-spacing: 0.06em; } .sponsor-row-logos { display: flex; align-items: center; justify-content: center; gap: 2rem; flex-wrap: wrap; background: rgba(255,255,255,0.92); border-radius: 12px; padding: 0.85rem 1.5rem; } .sponsor-logo { height: 30px; width: auto; max-width: 120px; object-fit: contain; } /* ── Partners & sponsors section ── */ .partner-card { text-align: center; display: flex; flex-direction: column; align-items: center; } .partner-logo { height: 52px; width: auto; max-width: 170px; object-fit: contain; margin-bottom: 0.85rem; } /* ── Story section (child's drawing) ── */ .story-container { display: flex; align-items: flex-start; gap: 2.5rem; flex-wrap: wrap; } .story-text { flex: 1 1 480px; min-width: 280px; } .story-figure { flex: 0 0 260px; margin: 0; text-align: center; } .story-drawing { width: 100%; max-width: 260px; height: auto; border-radius: 12px; border: 1px solid #c8dfe8; box-shadow: 0 2px 12px rgba(10, 79, 110, 0.1); } .story-figure figcaption { margin-top: 0.6rem; font-size: 0.8rem; color: #7a90a0; } @media (max-width: 720px) { .story-container { flex-direction: column; } .story-figure { order: -1; flex: 0 0 auto; max-width: 220px; margin: 0 auto; } } .methods-note { margin-left: 3.2rem; /* matches .step-num width (2.2rem) + gap (1rem) so text aligns with step content */ } @media (max-width: 680px) { .methods-note { margin-left: 0; } }