/* ============================================================
   CODEWORD 2.0 — HACKATHON DETAILS PAGE
   Premium responsive external stylesheet
   ------------------------------------------------------------
   HTML text/content is intentionally unchanged.
   Theme: CodeWord purple + orange + clean light surfaces.
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700;800&display=swap');

/* ============================================================
   THEME
   ============================================================ */

:root {
    --cw-primary: #4F46D8;
    --cw-primary-dark: #3932B8;
    --cw-primary-light: #756FF0;

    --cw-orange: #F6A623;
    --cw-orange-dark: #D98C08;
    --cw-orange-light: #FFF3E2;

    --cw-dark: #172033;
    --cw-dark-2: #202A3D;

    --cw-text: #344054;
    --cw-text-medium: #475467;
    --cw-text-soft: #667085;
    --cw-muted: #7A8496;

    --cw-bg: #F5F7FB;
    --cw-surface: #FFFFFF;
    --cw-surface-soft: #F8F9FD;

    --cw-border: #DDE3EE;
    --cw-border-light: #E8ECF3;

    --cw-success: #16834B;
    --cw-warning: #A65E00;

    --cw-shadow-sm: 0 8px 24px rgba(23, 32, 51, 0.06);
    --cw-shadow-md: 0 16px 38px rgba(23, 32, 51, 0.09);
    --cw-shadow-lg: 0 22px 55px rgba(23, 32, 51, 0.13);

    --cw-radius: 18px;
}

/* ============================================================
   RESET
   ============================================================ */

*,
*::before,
*::after {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
}

body {
    margin: 0;
    font-family: 'Poppins', 'Segoe UI', Arial, sans-serif;
    color: var(--cw-text);
    background:
        linear-gradient(
            180deg,
            #F7F8FC 0%,
            #F5F7FB 55%,
            #FFFFFF 100%
        );
    line-height: 1.75;
    font-size: 15px;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}

img {
    max-width: 100%;
}

a {
    color: var(--cw-primary);
}

::selection {
    background: var(--cw-primary);
    color: #FFFFFF;
}

/* ============================================================
   HERO
   ============================================================ */

.blog-hero {
    position: relative;
    overflow: hidden;

    padding: 76px 20px 72px;

    color: #FFFFFF;

    background:
        radial-gradient(
            circle at 12% 20%,
            rgba(117, 111, 240, 0.35) 0,
            rgba(117, 111, 240, 0.12) 25%,
            transparent 50%
        ),
        radial-gradient(
            circle at 90% 85%,
            rgba(246, 166, 35, 0.18) 0,
            transparent 35%
        ),
        linear-gradient(
            135deg,
            #191B4A 0%,
            #3932B8 52%,
            #4F46D8 100%
        );

    border-bottom: 1px solid rgba(79, 70, 216, 0.25);
}

.blog-hero::before {
    content: "";
    position: absolute;

    width: 320px;
    height: 320px;

    right: -150px;
    top: -170px;

    border-radius: 50%;

    background: rgba(255,255,255,0.06);
    pointer-events: none;
}

.blog-hero::after {
    content: "";
    position: absolute;

    width: 180px;
    height: 180px;

    left: -80px;
    bottom: -100px;

    border-radius: 50%;

    background: rgba(246,166,35,0.09);
    pointer-events: none;
}

.hero-inner {
    position: relative;
    z-index: 2;

    max-width: 1180px;
    margin: 0 auto;

    display: grid;
    grid-template-columns: minmax(0, 1fr) 250px;

    gap: 55px;
    align-items: center;
}

.label {
    display: inline-flex;
    align-items: center;

    padding: 7px 14px;

    border: 1px solid rgba(255,255,255,.25);
    border-radius: 999px;

    background: rgba(255,255,255,.10);

    color: #FFFFFF;

    font-size: 12px;
    line-height: 1.4;
    font-weight: 700;

    letter-spacing: .4px;
}

.blog-hero h1 {
    margin: 18px 0 14px;

    color: #FFFFFF;

    font-size: clamp(38px, 5.2vw, 62px);
    line-height: 1.08;
    font-weight: 800;

    letter-spacing: -1.5px;
}

.blog-hero h1 span {
    color: #FFD071;
}

.blog-hero p {
    max-width: 790px;

    margin: 0 0 22px;

    color: rgba(255,255,255,.91);

    font-size: 16px;
    line-height: 1.85;
    font-weight: 400;
}

.date {
    display: inline-flex;
    align-items: center;

    padding: 9px 15px;

    border: 1px solid rgba(246,166,35,.40);
    border-radius: 10px;

    background: rgba(255,255,255,.95);

    color: var(--cw-dark);

    font-size: 13px;
    line-height: 1.5;
    font-weight: 700;

    box-shadow: 0 10px 25px rgba(0,0,0,.10);
}

.poster {
    padding: 9px;

    background: #FFFFFF;

    border: 1px solid rgba(255,255,255,.35);
    border-radius: 18px;

    box-shadow: var(--cw-shadow-lg);

    transform: rotate(1deg);

    transition:
        transform .3s ease,
        box-shadow .3s ease;
}

.poster:hover {
    transform: rotate(0) translateY(-5px);
    box-shadow: 0 25px 60px rgba(0,0,0,.18);
}

.poster img {
    width: 100%;
    display: block;

    border-radius: 11px;
}

.poster small {
    display: block;

    padding: 8px 4px 4px;

    text-align: center;

    color: var(--cw-text-medium);

    font-size: 11px;
    line-height: 1.5;
    font-weight: 600;
}

/* ============================================================
   MAIN CONTAINER
   ============================================================ */

.container {
    width: min(100%, 1180px);
    margin: 42px auto 65px;
    padding: 0 20px;
}

.layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 285px;

    gap: 25px;
    align-items: start;
}

/* ============================================================
   CONTENT / SIDEBAR SURFACES
   ============================================================ */

.content,
.side {
    background: var(--cw-surface);

    border: 1px solid var(--cw-border);

    border-radius: var(--cw-radius);

    box-shadow: var(--cw-shadow-sm);
}

.content {
    min-width: 0;
    padding: 42px;
}

.side {
    position: sticky;
    top: 20px;

    padding: 22px;

    z-index: 5;
}

/* ============================================================
   CONTENT TYPOGRAPHY
   ============================================================ */

.content h2 {
    position: relative;

    margin: 0 0 17px;
    padding-bottom: 12px;

    color: var(--cw-dark);

    font-size: clamp(25px, 3vw, 31px);
    line-height: 1.3;
    font-weight: 800;

    letter-spacing: -.35px;
}

.content h2::after {
    content: "";

    display: block;

    width: 48px;
    height: 3px;

    margin-top: 10px;

    border-radius: 999px;

    background:
        linear-gradient(
            90deg,
            var(--cw-orange),
            var(--cw-primary)
        );
}

.content h3 {
    margin-top: 30px;

    color: var(--cw-dark-2);

    font-size: 19px;
    line-height: 1.4;
    font-weight: 750;
}

.content p {
    margin: 0 0 18px;

    color: var(--cw-text);

    font-size: 15px;
    line-height: 1.9;
}

.content strong {
    color: var(--cw-dark);
    font-weight: 700;
}

/* ============================================================
   INTRO
   ============================================================ */

.intro {
    margin: 22px 0;

    padding: 20px 22px;

    border: 1px solid #E2E6F3;
    border-left: 5px solid var(--cw-primary);

    border-radius: 12px;

    background:
        linear-gradient(
            135deg,
            #F4F3FF,
            #FAFAFE
        );

    color: var(--cw-text);

    font-size: 14px;
    line-height: 1.85;

    box-shadow: 0 7px 20px rgba(79,70,216,.05);
}

/* ============================================================
   CATEGORY CARDS
   ============================================================ */

.grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));

    gap: 18px;

    margin: 22px 0 8px;
}

.card {
    min-width: 0;

    padding: 23px;

    border: 1px solid var(--cw-border);
    border-radius: 15px;

    background:
        linear-gradient(
            180deg,
            #FFFFFF 0%,
            #FAFBFE 100%
        );

    box-shadow: 0 7px 20px rgba(23,32,51,.045);

    transition:
        transform .25s ease,
        border-color .25s ease,
        box-shadow .25s ease;
}

.card:hover {
    transform: translateY(-4px);

    border-color: rgba(79,70,216,.35);

    box-shadow: var(--cw-shadow-md);
}

.card h4 {
    margin: 0 0 11px;

    color: var(--cw-dark);

    font-size: 16px;
    line-height: 1.5;
    font-weight: 750;
}

.card p,
.card li {
    color: var(--cw-text-medium);

    font-size: 13.5px;
    line-height: 1.75;
}

.card ul {
    margin: 0;
    padding-left: 19px;
}

.card li {
    margin-bottom: 5px;
}

.card li:last-child {
    margin-bottom: 0;
}

/* ============================================================
   HOW TO APPLY STEPS
   ============================================================ */

.steps {
    display: grid;
    gap: 13px;

    margin-top: 20px;
}

.step {
    display: flex;
    align-items: flex-start;

    gap: 15px;

    padding: 17px 18px;

    border: 1px solid var(--cw-border);
    border-radius: 13px;

    background: #FBFCFE;

    transition:
        transform .25s ease,
        border-color .25s ease,
        background .25s ease,
        box-shadow .25s ease;
}

.step:hover {
    transform: translateX(3px);

    border-color: rgba(79,70,216,.28);

    background: #FFFFFF;

    box-shadow: 0 9px 24px rgba(23,32,51,.06);
}

.step p {
    margin: 0;
    color: var(--cw-text);
}

.step strong {
    color: var(--cw-dark);
    font-size: 14px;
    font-weight: 700;
}

.num {
    flex: 0 0 38px;

    width: 38px;
    height: 38px;

    display: flex;
    align-items: center;
    justify-content: center;

    border-radius: 50%;

    background:
        linear-gradient(
            135deg,
            var(--cw-primary),
            var(--cw-primary-light)
        );

    color: #FFFFFF;

    font-size: 13px;
    font-weight: 800;

    box-shadow:
        0 7px 17px rgba(79,70,216,.24);
}

/* ============================================================
   BUTTONS
   ============================================================ */

.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;

    min-height: 42px;

    margin: 5px 7px 5px 0;
    padding: 10px 17px;

    border: 1px solid transparent;
    border-radius: 10px;

    background:
        linear-gradient(
            135deg,
            var(--cw-primary),
            var(--cw-primary-light)
        );

    color: #FFFFFF;

    font-family: inherit;
    font-size: 12.5px;
    line-height: 1.3;
    font-weight: 700;

    text-decoration: none;

    box-shadow:
        0 7px 18px rgba(79,70,216,.17);

    transition:
        transform .25s ease,
        box-shadow .25s ease,
        background .25s ease;
}

.btn:hover {
    transform: translateY(-3px);

    color: #FFFFFF;

    background:
        linear-gradient(
            135deg,
            var(--cw-primary-dark),
            var(--cw-primary)
        );

    box-shadow:
        0 11px 25px rgba(79,70,216,.23);
}

.btn.orange {
    background:
        linear-gradient(
            135deg,
            var(--cw-orange),
            var(--cw-orange-light)
        );

    color: #3C2A0C;

    border-color: rgba(246,166,35,.25);

    box-shadow:
        0 7px 18px rgba(246,166,35,.18);
}

.btn.orange:hover {
    color: #2F220D;

    background:
        linear-gradient(
            135deg,
            #E99A17,
            #FFC867
        );

    box-shadow:
        0 11px 25px rgba(246,166,35,.25);
}

/* ============================================================
   IMPORTANT DATES TABLE
   ============================================================ */

.dates {
    width: 100%;

    margin: 20px 0;

    border-collapse: separate;
    border-spacing: 0;

    overflow: hidden;

    background: #FFFFFF;

    border: 1px solid var(--cw-border);

    border-radius: 13px;

    box-shadow: 0 7px 20px rgba(23,32,51,.04);
}

.dates th,
.dates td {
    padding: 14px 15px;

    border-right: 1px solid var(--cw-border);
    border-bottom: 1px solid var(--cw-border);

    text-align: left;

    font-size: 13px;
    line-height: 1.65;
}

.dates th:last-child,
.dates td:last-child {
    border-right: 0;
}

.dates tr:last-child td {
    border-bottom: 0;
}

.dates th {
    background:
        linear-gradient(
            135deg,
            var(--cw-primary),
            var(--cw-primary-dark)
        );

    color: #FFFFFF;

    font-weight: 700;
}

.dates td {
    color: var(--cw-text);
    background: #FFFFFF;
}

.dates tr:nth-child(even) td {
    background: #FAFBFD;
}

.dates td strong {
    color: var(--cw-dark);
}

/* ============================================================
   RULES
   ============================================================ */

.rules {
    margin: 20px 0 0;
    padding-left: 24px;

    color: var(--cw-text);

    font-size: 14px;
    line-height: 1.85;
}

.rules li {
    margin-bottom: 11px;
    padding-left: 4px;
}

.rules li::marker {
    color: var(--cw-primary);
    font-weight: 700;
}

.notice {
    margin: 20px 0;

    padding: 16px 19px;

    border: 1px solid rgba(246,166,35,.28);
    border-left: 5px solid var(--cw-orange);

    border-radius: 11px;

    background:
        linear-gradient(
            135deg,
            #FFF8EB,
            #FFFCF6
        );

    color: #63440E;

    font-size: 14px;
    line-height: 1.75;
}

/* ============================================================
   SIDEBAR
   ============================================================ */

.side h3 {
    margin: 0 0 12px;
    padding-bottom: 10px;

    border-bottom: 1px solid var(--cw-border);

    color: var(--cw-dark);

    font-size: 16px;
    line-height: 1.4;
    font-weight: 750;
}

.side ul {
    margin: 0 0 20px;
    padding-left: 19px;

    color: var(--cw-text-medium);

    font-size: 13px;
    line-height: 1.75;
}

.side li {
    margin-bottom: 5px;
}

.quick {
    display: block;

    margin: 8px 0;
    padding: 10px 12px;

    border: 1px solid var(--cw-border);
    border-radius: 10px;

    background: #FAFBFD;

    color: var(--cw-text);

    font-size: 12.5px;
    line-height: 1.5;
    font-weight: 600;

    text-decoration: none;

    transition:
        transform .22s ease,
        color .22s ease,
        background .22s ease,
        border-color .22s ease,
        box-shadow .22s ease;
}

.quick:hover {
    transform: translateX(3px);

    border-color: rgba(79,70,216,.30);

    background: #F2F1FF;

    color: var(--cw-primary-dark);

    box-shadow: 0 7px 17px rgba(79,70,216,.08);
}

/* ============================================================
   QR
   ============================================================ */

.qr-box {
    margin-top: 21px;
    padding-top: 19px;

    border-top: 1px solid var(--cw-border);

    text-align: center;
}

.qr-box h3 {
    border-bottom: 0;
    margin-bottom: 7px;
    padding-bottom: 0;
}

.qr-box img {
    display: block;

    width: 150px;
    height: 150px;

    max-width: 100%;

    margin: 10px auto;

    padding: 7px;

    border: 1px solid var(--cw-border);
    border-radius: 12px;

    background: #FFFFFF;

    box-shadow: 0 8px 22px rgba(23,32,51,.08);
}

.qr-box p {
    margin: 6px 0 0;

    color: var(--cw-muted);

    font-size: 11.5px;
    line-height: 1.6;
}

/* ============================================================
   CONTACT
   ============================================================ */

.contact {
    margin-top: 30px;
    padding: 24px;

    border: 1px solid rgba(79,70,216,.25);
    border-radius: 15px;

    background:
        linear-gradient(
            135deg,
            #F0EFFF,
            #F9F8FF
        );

    color: var(--cw-text);

    box-shadow: 0 9px 25px rgba(79,70,216,.07);
}

.contact h3 {
    margin: 0 0 14px;

    color: var(--cw-dark);

    font-size: 20px;
    line-height: 1.4;
    font-weight: 750;
}

.contact p {
    margin-bottom: 13px;
}

.contact p:last-child {
    margin-bottom: 0;
}

.contact a {
    color: var(--cw-primary-dark);
    font-weight: 600;
}

/* ============================================================
   CTA
   ============================================================ */

.cta {
    position: relative;
    overflow: hidden;

    margin-top: 30px;
    padding: 32px 27px;

    border: 1px solid rgba(79,70,216,.24);
    border-radius: 16px;

    text-align: center;

    background:
        radial-gradient(
            circle at 15% 10%,
            rgba(117,111,240,.18),
            transparent 34%
        ),
        radial-gradient(
            circle at 88% 90%,
            rgba(246,166,35,.12),
            transparent 34%
        ),
        linear-gradient(
            135deg,
            #F0EFFF,
            #FBFAFF
        );

    color: var(--cw-text);

    box-shadow: 0 12px 30px rgba(79,70,216,.07);
}

.cta h2 {
    margin: 0 0 10px;

    color: var(--cw-dark);

    font-size: clamp(24px, 3vw, 31px);
    line-height: 1.3;
    font-weight: 800;
}

.cta p {
    max-width: 720px;
    margin: 0 auto 18px;

    color: var(--cw-text-medium);

    font-size: 14px;
    line-height: 1.8;
}

/* ============================================================
   RESPONSIVE — 1100px
   ============================================================ */

@media (max-width: 1100px) {

    .hero-inner {
        grid-template-columns: minmax(0, 1fr) 220px;
        gap: 35px;
    }

    .layout {
        grid-template-columns: minmax(0, 1fr) 255px;
    }

    .content {
        padding: 34px;
    }

    .grid {
        gap: 14px;
    }
}

/* ============================================================
   RESPONSIVE — 900px
   ============================================================ */

@media (max-width: 900px) {

    .blog-hero {
        padding: 60px 20px;
    }

    .hero-inner {
        grid-template-columns: 1fr;
        gap: 30px;
    }

    .poster {
        width: 230px;
        max-width: 100%;
        margin: 0 auto;
    }

    .layout {
        grid-template-columns: 1fr;
    }

    .side {
        position: static;

        width: 100%;
        max-width: 620px;

        margin: 0 auto;
    }

    .grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

/* ============================================================
   RESPONSIVE — 700px
   ============================================================ */

@media (max-width: 700px) {

    body {
        font-size: 14px;
    }

    .blog-hero {
        padding: 48px 17px 50px;
    }

    .blog-hero h1 {
        font-size: clamp(32px, 10vw, 48px);
        letter-spacing: -1px;
    }

    .blog-hero p {
        font-size: 14px;
        line-height: 1.8;
    }

    .date {
        font-size: 12px;
    }

    .container {
        margin: 25px auto 45px;
        padding: 0 12px;
    }

    .content {
        padding: 26px 20px;
        border-radius: 15px;
    }

    .content h2 {
        font-size: 25px;
    }

    .content p {
        font-size: 14px;
        line-height: 1.85;
    }

    .intro {
        padding: 17px 17px;
        font-size: 13.5px;
    }

    .grid {
        grid-template-columns: 1fr;
        gap: 13px;
    }

    .card {
        padding: 20px;
    }

    .step {
        padding: 15px;
    }

    .rules {
        padding-left: 21px;
        font-size: 13.5px;
    }

    .dates {
        display: block;
        overflow-x: auto;
        white-space: normal;
    }

    .dates th,
    .dates td {
        min-width: 145px;
        padding: 11px;
        font-size: 12px;
    }

    .dates th:first-child,
    .dates td:first-child {
        min-width: 230px;
    }

    .contact,
    .cta {
        padding: 23px 19px;
    }

    .cta h2 {
        font-size: 25px;
    }
}

/* ============================================================
   RESPONSIVE — 480px
   ============================================================ */

@media (max-width: 480px) {

    .blog-hero {
        padding: 40px 15px 42px;
    }

    .label {
        font-size: 10.5px;
        padding: 6px 11px;
    }

    .blog-hero h1 {
        margin-top: 15px;
        font-size: 31px;
    }

    .blog-hero p {
        font-size: 13px;
    }

    .date {
        width: 100%;
        justify-content: center;
        text-align: center;

        font-size: 11.5px;
    }

    .poster {
        width: 205px;
    }

    .container {
        margin-top: 18px;
        padding: 0 9px;
    }

    .content {
        padding: 22px 16px;
        border-radius: 13px;
    }

    .content h2 {
        font-size: 22px;
    }

    .content h3 {
        font-size: 17px;
    }

    .content p {
        font-size: 13px;
    }

    .intro {
        padding: 15px;
        font-size: 12.5px;
    }

    .card {
        padding: 17px;
    }

    .card h4 {
        font-size: 15px;
    }

    .card p,
    .card li {
        font-size: 12.5px;
    }

    .step {
        gap: 11px;
        padding: 13px;
    }

    .num {
        flex-basis: 34px;
        width: 34px;
        height: 34px;
        font-size: 11px;
    }

    .step,
    .step strong {
        font-size: 12.5px;
    }

    .btn {
        width: 100%;
        margin-right: 0;
        padding: 10px 13px;
        font-size: 12px;
    }

    .rules {
        font-size: 12.5px;
        line-height: 1.8;
    }

    .notice {
        padding: 14px;
        font-size: 12.5px;
    }

    .side {
        padding: 17px;
    }

    .quick {
        font-size: 12px;
    }

    .qr-box img {
        width: 135px;
        height: 135px;
    }

    .contact {
        padding: 19px 16px;
    }

    .contact h3 {
        font-size: 18px;
    }

    .cta {
        padding: 24px 16px;
    }

    .cta h2 {
        font-size: 22px;
    }

    .cta p {
        font-size: 12.5px;
    }
}

/* ============================================================
   RESPONSIVE — 360px
   ============================================================ */

@media (max-width: 360px) {

    .blog-hero h1 {
        font-size: 28px;
    }

    .content {
        padding: 20px 14px;
    }

    .content h2 {
        font-size: 20px;
    }

    .content p,
    .rules {
        font-size: 12px;
    }

    .intro {
        font-size: 12px;
    }

    .card h4 {
        font-size: 14px;
    }

    .card p,
    .card li,
    .step {
        font-size: 11.5px;
    }

    .btn {
        font-size: 11.5px;
    }

    .side h3 {
        font-size: 14px;
    }

    .quick {
        font-size: 11.5px;
    }

    .cta h2 {
        font-size: 20px;
    }
}

/* ============================================================
   ACCESSIBILITY
   ============================================================ */

@media (prefers-reduced-motion: reduce) {

    html {
        scroll-behavior: auto;
    }

    *,
    *::before,
    *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
    }
}

/* ============================================================
   END
   ============================================================ */
