.oly-hero,.oly-section-head,.oly-admin-hero{display:flex;justify-content:space-between;gap:24px;align-items:center;padding:28px}.oly-hero{background:linear-gradient(135deg,#eef5ff,#fff8e7)}.oly-hero h1,.oly-section-head h1,.oly-admin-hero h1{margin:.25rem 0}.oly-subjects{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0}.oly-chip{padding:9px 14px;border-radius:999px;background:#fff;border:1px solid #dce4f0;text-decoration:none;color:#25364f}.oly-chip.active{background:#174a91;color:#fff;border-color:#174a91}.oly-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px}.oly-grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.oly-event-card{padding:22px;position:relative;overflow:hidden}.oly-event-top,.oly-meta{display:flex;gap:10px;flex-wrap:wrap;font-size:13px}.oly-event-top{justify-content:space-between;font-weight:700}.oly-meta{margin:16px 0;color:inherit;opacity:.8}.oly-event-card h2{margin:16px 0 8px}.oly-panel{padding:24px;margin-top:20px}.oly-panel-head{display:flex;justify-content:space-between;gap:16px;align-items:center}.oly-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:18px}.oly-form.one-col{grid-template-columns:1fr}.oly-form label>span,.oly-inline label>span{display:block;font-weight:700;font-size:13px;margin-bottom:6px}.oly-form input,.oly-form select,.oly-form textarea,.oly-inline input,.oly-inline select{width:100%;padding:11px 12px;border:1px solid #cfd8e6;border-radius:11px;background:#fff;color:#182235}.oly-form textarea{resize:vertical}.oly-form .wide,.oly-form fieldset.wide{grid-column:1/-1}.oly-form .check{display:flex;gap:10px;align-items:center}.oly-form .check input{width:auto}.oly-form fieldset{border:1px solid #dbe3ef;border-radius:14px;padding:14px}.oly-inline{display:flex;gap:12px;flex-wrap:wrap;align-items:end}.oly-inline>label{flex:1;min-width:160px}.oly-inline .grow{flex:3}.oly-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.oly-actions.center{justify-content:center}.oly-alert{max-width:1100px;margin:16px auto;padding:13px 16px;border-radius:12px}.oly-alert.ok{background:#e8f8ef;color:#116b3b}.oly-alert.err{background:#fff0f0;color:#9e2929}.oly-table-wrap{overflow:auto}.oly-table{width:100%;border-collapse:collapse;margin-top:15px}.oly-table th,.oly-table td{text-align:left;padding:12px;border-bottom:1px solid #e5eaf2;vertical-align:top}.oly-table small{display:block;color:#64748b;margin-top:3px}.oly-table tr.me{background:#eef6ff}.oly-code{font-size:14px;font-weight:800;letter-spacing:.08em;white-space:nowrap}.oly-empty{text-align:center;color:#64748b;padding:30px}.oly-question-list,.oly-grading-list{display:grid;gap:12px}.oly-question-row{display:flex;justify-content:space-between;gap:18px;border:1px solid #e2e8f0;border-radius:15px;padding:15px}.oly-question-row h3{margin:8px 0 2px;font-size:17px}.oly-question-row form{margin:0}.oly-free-answer{padding:18px;background:#f7f9fc;border-radius:14px;margin:14px 0;white-space:pre-wrap}.oly-stage{min-height:70vh;margin:24px auto;border-radius:28px;overflow:hidden;position:relative;display:grid;place-items:center;padding:34px;color:var(--oly-fg,#fff);background:var(--oly-bg)}.oly-stage::before,.oly-take::before,.oly-result::before{content:"";position:absolute;inset:0;background:var(--oly-overlay,none);pointer-events:none}.oly-stage-content{max-width:850px;position:relative;z-index:1;text-align:center;padding:42px;border-radius:26px;background:var(--oly-card,rgba(10,28,60,.55));backdrop-filter:blur(8px);box-shadow:0 20px 60px #0002}.oly-stage-banner{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.25}.oly-stage-logo{max-height:90px;max-width:220px;object-fit:contain;margin-bottom:18px}.oly-kicker{font-weight:800;letter-spacing:.14em;font-size:12px}.oly-stage h1{font-family:Georgia,serif;font-size:clamp(38px,6vw,72px);margin:14px 0}.oly-stage-meta{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin:20px 0;font-size:13px}.oly-start-form{max-width:500px;margin:28px auto 0;display:grid;gap:14px;text-align:left}.oly-start-form label span{display:block;font-weight:700;margin-bottom:6px}.oly-start-form input{width:100%;padding:14px;border:0;border-radius:12px;font-size:16px}.oly-start-form small{display:block;margin-top:5px;opacity:.8}.oly-start-btn{font-size:17px;padding:13px 24px}.oly-stage-lock,.oly-pending{padding:18px;border-radius:16px;background:#fff2;color:inherit;font-weight:700;margin-top:20px}.oly-pending.bad{background:#fff0f0;color:#9e2929}.oly-countdown{font-size:26px;margin-top:8px}.oly-signed{text-align:center}.oly-take{position:relative;border-radius:24px;padding:22px;background:var(--oly-bg);color:var(--oly-fg,#fff);min-height:75vh}.oly-take>*{position:relative;z-index:1}.oly-take-head{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:18px 20px}.oly-take-head h1{margin:.2rem 0}.oly-take-stats{display:flex;gap:12px;align-items:center}.oly-timer{font-size:22px;padding:10px 14px;border-radius:12px;background:#0003}.oly-questions{display:grid;gap:18px;max-width:1000px;margin:auto}.oly-question{padding:25px;color:#182235;background:#fff}.oly-question-title{display:flex;justify-content:space-between;color:#607089;font-size:13px}.oly-question h2{font-size:21px;line-height:1.45}.oly-options{display:grid;gap:10px;margin-top:16px}.oly-options.two{grid-template-columns:repeat(2,minmax(0,1fr))}.oly-options label{display:flex;gap:10px;align-items:flex-start;padding:13px;border:1px solid #dae2ed;border-radius:12px;cursor:pointer}.oly-options label:has(input:checked){border-color:#2a6fc4;background:#eef6ff}.oly-answer-input{width:100%;padding:14px;border:1px solid #ced8e6;border-radius:12px}.oly-submit-bar{position:sticky;bottom:12px;background:#fff;color:#182235;box-shadow:0 10px 35px #0002;padding:14px 18px;border-radius:16px;display:flex;justify-content:space-between;gap:16px;align-items:center}.oly-result{position:relative;border-radius:26px;padding:34px;background:var(--oly-bg);color:var(--oly-fg,#fff);margin-top:24px}.oly-result>*{position:relative;z-index:1}.oly-result-card{max-width:850px;margin:auto;padding:34px;text-align:center;color:#182235;background:#fff}.oly-score-circle{width:190px;height:190px;border-radius:50%;margin:24px auto;background:linear-gradient(135deg,#1f5daa,#d7ab45);color:#fff;display:grid;place-content:center}.oly-score-circle strong{font-size:45px}.oly-score-circle span{font-size:13px}.oly-result-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:22px 0}.oly-result-grid div{padding:14px;border-radius:14px;background:#f5f7fb}.oly-result-grid span,.oly-result-grid strong{display:block}.oly-result-grid span{font-size:12px;color:#64748b}.oly-result-grid strong{font-size:20px;margin-top:5px}.oly-review{display:grid;gap:14px}.oly-review article{border:1px solid #e3e9f2;border-radius:14px;padding:16px}.theme-classic_blue{--oly-bg:linear-gradient(135deg,#0d3d79,#1d73c8 55%,#63b3ed);--oly-card:rgba(5,31,70,.55);--oly-fg:#fff}.theme-ceremonial_gold{--oly-bg:linear-gradient(135deg,#4f3410,#b57b1c 48%,#f2d486);--oly-card:rgba(59,38,8,.52);--oly-fg:#fff8df}.theme-velvet_gradient{--oly-bg:linear-gradient(135deg,#4d0f22 0%,#761f49 44%,#4a176b 100%);--oly-overlay:radial-gradient(circle at 25% 20%,#d9ad5740,transparent 30%),radial-gradient(circle at 80% 70%,#e4b95b25,transparent 35%);--oly-card:rgba(49,5,35,.58);--oly-fg:#fff5e6}.theme-ukraine{--oly-bg:linear-gradient(160deg,#0067c8 0%,#2089dc 48%,#ffd94a 52%,#f6c934 100%);--oly-card:rgba(9,66,124,.52);--oly-fg:#fff}.theme-dark_premium{--oly-bg:linear-gradient(135deg,#080b10,#1c2530 55%,#11161d);--oly-overlay:radial-gradient(circle at 75% 20%,#d9ad5740,transparent 30%);--oly-card:rgba(4,6,9,.7);--oly-fg:#f8e7b2}.theme-bright_festive{--oly-bg:linear-gradient(135deg,#ff4f87,#7547d9 40%,#2e9fe8 70%,#2dcf9f);--oly-overlay:radial-gradient(circle at 15% 20%,#ffe86e70,transparent 20%),radial-gradient(circle at 85% 75%,#ff9d4d60,transparent 22%);--oly-card:rgba(65,24,109,.45);--oly-fg:#fff}.theme-biology{--oly-bg:linear-gradient(135deg,#052e2b 0%,#0f766e 46%,#4d9f38 72%,#a3d65c 100%);--oly-overlay:radial-gradient(circle at 18% 20%,#7dd3fc35,transparent 28%),radial-gradient(circle at 82% 75%,#d9f99d35,transparent 30%);--oly-card:rgba(4,53,45,.58);--oly-fg:#f4fff8}.oly-event-card.theme-classic_blue,.oly-event-card.theme-ceremonial_gold,.oly-event-card.theme-velvet_gradient,.oly-event-card.theme-ukraine,.oly-event-card.theme-dark_premium,.oly-event-card.theme-bright_festive,.oly-event-card.theme-biology,.oly-admin-hero.theme-classic_blue,.oly-admin-hero.theme-ceremonial_gold,.oly-admin-hero.theme-velvet_gradient,.oly-admin-hero.theme-ukraine,.oly-admin-hero.theme-dark_premium,.oly-admin-hero.theme-bright_festive,.oly-admin-hero.theme-biology{background:var(--oly-bg);color:var(--oly-fg)}@media(max-width:760px){.oly-hero,.oly-section-head,.oly-admin-hero,.oly-take-head,.oly-submit-bar{flex-direction:column;align-items:stretch}.oly-grid-2,.oly-form,.oly-result-grid{grid-template-columns:1fr}.oly-form .wide,.oly-form fieldset.wide{grid-column:auto}.oly-question-row{flex-direction:column}.oly-stage{padding:14px}.oly-stage-content{padding:24px 18px}.oly-options.two{grid-template-columns:1fr}.oly-take-stats{justify-content:space-between}}

/* Olympiads 1.0.1 UX patch: readable attempt controls and stepped questions. */
.oly-question[hidden]{display:none!important}
.oly-question h2{color:#111827!important;font-size:clamp(20px,2.2vw,28px)!important;line-height:1.45!important;font-weight:800!important;margin:18px 0 22px!important;opacity:1!important}
.oly-options label{display:flex!important;align-items:flex-start!important;gap:14px!important;padding:16px 18px!important;background:#fff!important;color:#111827!important;border:2px solid #d8e1ed!important;min-height:56px!important}
.oly-options label:hover{border-color:#82aee3!important;background:#f8fbff!important}
.oly-options label:has(input:checked){border-color:#2369bf!important;background:#edf6ff!important;box-shadow:0 0 0 2px rgba(35,105,191,.08)!important}
.oly-options input[type="radio"],.oly-options input[type="checkbox"]{appearance:auto!important;-webkit-appearance:auto!important;width:20px!important;height:20px!important;min-width:20px!important;max-width:20px!important;flex:0 0 20px!important;margin:1px 0 0!important;padding:0!important;border:0!important;box-shadow:none!important;accent-color:#2369bf!important;opacity:1!important;transform:none!important}
.oly-options label > span{display:block!important;flex:1 1 auto!important;color:#111827!important;font-size:16px!important;line-height:1.5!important;font-weight:600!important;opacity:1!important;text-align:left!important;white-space:normal!important;overflow-wrap:anywhere!important}
.oly-step-bar{max-width:1000px;margin:0 auto;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:14px}
.oly-step-label{text-align:center;font-weight:800;color:#334155}
.oly-step-actions{display:flex;gap:10px;justify-content:flex-end}
.oly-library-filter{display:grid;grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) minmax(260px,2fr) auto;gap:12px;align-items:end;margin-top:18px}
.oly-library-filter label>span{display:block;font-weight:800;font-size:13px;margin-bottom:6px}
.oly-library-filter select{width:100%;padding:11px 12px;border:1px solid #cfd8e6;border-radius:11px;background:#fff;color:#182235}
.oly-question-row.is-imported{border-color:#87c7a3;background:rgba(232,248,239,.08)}
.oly-public-link-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;margin-top:14px}
.oly-public-link{width:100%;padding:13px 14px;border:1px solid #cfd8e6;border-radius:12px;background:#fff;color:#172033;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.oly-archive-row{margin-top:18px}
@media(max-width:760px){.oly-step-bar{grid-template-columns:1fr 1fr}.oly-step-label{grid-column:1/-1;grid-row:1}.oly-step-actions{justify-content:stretch}.oly-step-actions .btn,.js-oly-prev{width:100%}.oly-library-filter,.oly-public-link-row{grid-template-columns:1fr}.oly-options label > span{font-size:15px!important}}

.oly-alert.lock{background:#fff7df;color:#785600;border:1px solid #f0d78a}.oly-deadline-form{max-width:680px}.oly-locked-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:20px}.oly-locked-summary>div{padding:14px;border:1px solid #dbe3ef;border-radius:14px;background:#f8fafc;color:#182235}.oly-locked-summary span,.oly-locked-summary strong{display:block}.oly-locked-summary span{font-size:12px;color:#64748b;margin-bottom:5px}.oly-danger-zone{border:1px solid #efb5b5}.oly-danger-actions form{margin:0}@media(max-width:760px){.oly-locked-summary{grid-template-columns:1fr 1fr}.oly-danger-actions{width:100%}.oly-danger-actions form,.oly-danger-actions .btn{width:100%}}

.oly-inline-form{margin:0;display:inline-flex}

/* Olympiads 1.0.5 — participant awards + phone-first participant list. */
.oly-award-links{display:grid;gap:7px;justify-items:start;min-width:150px}
.oly-award-links strong{font-size:13px;line-height:1.25;color:inherit}
.oly-award-links .text-link{margin:0}
.oly-award-revoked{display:inline-flex;padding:5px 8px;border-radius:999px;background:#fee2e2;color:#991b1b;font-size:12px;font-weight:800}
.oly-guest-link code{overflow-wrap:anywhere;word-break:break-all}

@media(max-width:760px){
    .oly-section-head{gap:14px}
    .oly-section-head>div,.oly-actions{width:100%;min-width:0}
    .oly-actions{display:grid;grid-template-columns:1fr;gap:8px}
    .oly-actions .btn{width:100%;justify-content:center}
    .oly-panel{min-width:0}
    .oly-panel-head{align-items:center}
    .oly-table-wrap{overflow:visible}
    .oly-participants-table{display:block;width:100%;min-width:0}
    .oly-participants-table thead{display:none}
    .oly-participants-table tbody{display:grid;gap:12px}
    .oly-participants-table tr{display:block;padding:12px 14px;border:1px solid #dbe3ef;border-radius:16px;background:#fff;color:#182235;box-shadow:0 6px 18px rgba(15,23,42,.04)}
    .oly-participants-table td{display:grid;grid-template-columns:minmax(88px,34%) minmax(0,1fr);gap:10px;align-items:start;width:100%;padding:9px 0;border:0;border-bottom:1px solid #edf1f6;overflow-wrap:anywhere;word-break:break-word}
    .oly-participants-table td:last-child{border-bottom:0}
    .oly-participants-table td::before{content:attr(data-label);font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.04em;color:#64748b}
    .oly-participants-table td[colspan]::before{display:none}
    .oly-participants-table td[colspan]{display:block;text-align:center;padding:18px}
    .oly-participants-table td form{margin:0;width:100%}
    .oly-participants-table td .btn{max-width:100%}
    .oly-code{white-space:normal;overflow-wrap:anywhere;word-break:break-all}
    .oly-award-links{min-width:0;width:100%;justify-items:stretch}
    .oly-award-links .btn,.oly-award-links .text-link{text-align:center;justify-content:center;width:100%}
    .oly-guest-link{margin-top:16px}
    .oly-stage{min-height:auto;margin-top:12px;border-radius:20px}
    .oly-result{margin-top:12px;padding:18px;border-radius:20px}
    .oly-result-card{padding:20px 16px}
}

@media(max-width:430px){
    .oly-participants-table td{grid-template-columns:1fr;gap:4px}
    .oly-score-circle{width:155px;height:155px}
    .oly-score-circle strong{font-size:38px}
}

/* Olympiads 1.1.0: strict per-question timers + combined total timer. */
.oly-take-stats{flex-wrap:wrap;justify-content:flex-end}
.oly-timer-box{display:grid;gap:3px;min-width:118px;padding:8px 10px;border-radius:14px;background:rgba(0,0,0,.18);text-align:center}
.oly-timer-box small{font-size:11px;font-weight:800;letter-spacing:.04em;opacity:.82;text-transform:uppercase}
.oly-timer-box .oly-timer{display:block;background:transparent;padding:0;border-radius:0;font-variant-numeric:tabular-nums}
.oly-timer.is-warning{color:#ffe082}
.oly-timer.is-danger{color:#ffb4b4;animation:olyTimerPulse .8s ease-in-out infinite alternate}
@keyframes olyTimerPulse{from{opacity:1}to{opacity:.55}}
.oly-timed-note{max-width:1000px;margin:0 auto 16px;padding:12px 15px;border-radius:14px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.22);font-weight:700;line-height:1.45}
.oly-step-bar.is-timed{grid-template-columns:1fr auto}
#oly-attempt-form.is-submitting{opacity:.78;pointer-events:none}
.oly-form label small.helper-text{display:block;margin-top:6px;font-size:12px;line-height:1.35}
@media(max-width:760px){.oly-take-stats{justify-content:stretch}.oly-timer-box{flex:1;min-width:0}.oly-step-bar.is-timed{grid-template-columns:1fr}.oly-step-bar.is-timed .oly-step-label{text-align:left}.oly-step-bar.is-timed .oly-step-actions{width:100%}.oly-step-bar.is-timed .oly-step-actions .btn{width:100%}}
.oly-timer-rules{margin:14px auto 0;max-width:660px;padding:11px 14px;border-radius:13px;background:rgba(255,255,255,.13);font-weight:700;font-size:13px;line-height:1.45}

/* 2026-09-18 theme readability hotfix.
   Some Olympiads surfaces use intentionally light backgrounds even while the portal is in dark mode.
   Do not inherit dark-theme foreground tokens into those surfaces. */
.oly-hero{
    color:#172033;
}
.oly-hero h1,
.oly-hero p{
    color:#172033;
    opacity:1;
}
.oly-hero .badge{
    background:rgba(23,74,145,.08);
    border-color:rgba(23,74,145,.16);
    color:#25364f;
}
.oly-free-answer{
    color:#182235;
}
.oly-table tr.me td{
    color:#182235;
}
.oly-table tr.me .oly-code{
    color:#174a91;
}

/* 2026-09-18 theme sync hotfix 2.
   Keep OSVITA shell surfaces synchronized with the active portal theme.
   Event preview cards keep their selected Olympiad theme, but their controls no longer
   change from dark to light just because the portal theme changes. */

/* Shell / catalogue surfaces: use portal design tokens instead of hard-coded light colours. */
.oly-hero{
    background:
        radial-gradient(circle at 8% 0%, color-mix(in srgb, var(--primary) 12%, transparent), transparent 34%),
        radial-gradient(circle at 96% 100%, color-mix(in srgb, var(--orange) 10%, transparent), transparent 36%),
        var(--card);
    color:var(--text);
    border-color:var(--line);
}
.oly-hero h1{color:var(--text)}
.oly-hero p{color:var(--muted);opacity:1}
.oly-hero .badge{
    background:var(--badge-bg);
    border-color:var(--badge-border);
    color:var(--badge-text);
}
.oly-chip{
    background:var(--card);
    border-color:var(--line);
    color:var(--text);
    box-shadow:0 8px 24px rgba(0,0,0,.05);
}
.oly-chip:hover{
    border-color:color-mix(in srgb, var(--primary) 35%, var(--line));
    background:color-mix(in srgb, var(--card) 92%, var(--primary) 8%);
}
.oly-chip.active{
    color:#fff;
    border-color:transparent;
    background:linear-gradient(135deg,var(--primary),var(--pink));
}
.oly-panel,.oly-section-head{color:var(--text)}
.oly-empty{color:var(--muted)}
.oly-panel-head>span{color:var(--muted)}

/* Author/admin tables: follow the same theme as the rest of the portal. */
.oly-table th,.oly-table td{border-bottom-color:var(--table-border)}
.oly-table th{color:var(--th-text)}
.oly-table td{color:var(--td-text)}
.oly-table small{color:var(--muted)}
.oly-table tr.me{background:color-mix(in srgb, var(--primary) 9%, transparent)}
.oly-table tr.me td{color:var(--text)}
.oly-table tr.me .oly-code{color:var(--text-link)}

/* Management forms must not stay white in dark mode. */
.oly-form input,.oly-form select,.oly-form textarea,
.oly-inline input,.oly-inline select,
.oly-library-filter select,
.oly-public-link{
    background:var(--input-bg);
    color:var(--input-text);
    border-color:var(--input-border);
}
.oly-form input::placeholder,.oly-form textarea::placeholder,
.oly-inline input::placeholder,.oly-public-link::placeholder{color:var(--muted);opacity:1}
.oly-form fieldset,.oly-question-row{border-color:var(--line)}
.oly-free-answer{
    background:var(--nested-bg);
    color:var(--text);
    border:1px solid var(--line);
}
.oly-locked-summary>div{
    background:var(--nested-bg);
    color:var(--text);
    border-color:var(--line);
}
.oly-locked-summary span{color:var(--muted)}

/* A themed event card is a preview of the selected Olympiad skin, so keep it stable
   in both portal themes. Its controls should belong to the preview, not to the shell. */
.oly-event-card[class*="theme-"]{
    border-color:rgba(255,255,255,.12);
    box-shadow:0 18px 48px rgba(0,0,0,.18);
}
.oly-event-card[class*="theme-"] h2,
.oly-event-card[class*="theme-"] p,
.oly-event-card[class*="theme-"] .oly-event-top,
.oly-event-card[class*="theme-"] .oly-meta{
    color:var(--oly-fg,#fff);
}
.oly-event-card[class*="theme-"] .btn.secondary{
    color:var(--oly-fg,#fff);
    background:rgba(255,255,255,.10);
    border:1px solid rgba(255,255,255,.18);
    box-shadow:none;
}
.oly-event-card[class*="theme-"] .btn.secondary:hover{
    background:rgba(255,255,255,.16);
    border-color:rgba(255,255,255,.26);
}
.oly-event-card[class*="theme-"] .btn.primary{
    color:#fff;
    border:1px solid rgba(255,255,255,.10);
}

/* Mobile participant cards are shell UI, not certificate paper. */
@media(max-width:760px){
    .oly-participants-table tr{
        background:var(--card);
        color:var(--text);
        border-color:var(--line);
        box-shadow:0 6px 18px rgba(0,0,0,.06);
    }
    .oly-participants-table td{border-bottom-color:var(--table-border);color:var(--text)}
    .oly-participants-table td::before{color:var(--muted)}
}

/* Olympiads 1.3.0: biology olympiads, biology theme, rich media + scheduled result release. */
.oly-question-media{margin:18px 0 22px;border:1px solid var(--line);border-radius:18px;overflow:hidden;background:var(--nested-bg)}
.oly-question-media img{display:block;width:100%;max-height:560px;object-fit:contain;background:#fff}
.oly-question-media figcaption{padding:10px 14px;font-size:12px;line-height:1.45;color:var(--muted);border-top:1px solid var(--line)}
.oly-question-media.is-map img{max-height:620px}
.oly-video-frame{position:relative;aspect-ratio:16/9;background:#05070d}
.oly-video-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.oly-media-editor{display:grid;gap:10px}
.oly-media-editor .grow{flex:1}
.oly-release-lock{display:grid;gap:10px;margin:22px auto;padding:20px;max-width:660px;border-radius:18px;border:1px solid color-mix(in srgb,var(--primary) 28%,var(--line));background:color-mix(in srgb,var(--primary) 8%,var(--card));text-align:center}
.oly-release-lock strong{font-size:24px;color:var(--text)}
.oly-release-lock span{color:var(--muted);line-height:1.5}
.oly-release-lock b{font-size:16px;color:var(--text)}
@media(max-width:760px){.oly-question-media{margin:14px 0 18px;border-radius:14px}.oly-question-media img{max-height:420px}.oly-release-lock{padding:16px}.oly-release-lock strong{font-size:20px}}

/* Olympiads 1.4.0 — portable package manager. */
.oly-package-grid{margin-top:20px}.oly-package-notes{display:grid;gap:10px;line-height:1.55}.oly-package-notes p{margin:0}.oly-export-form{margin-top:16px}.oly-package-list{display:grid;gap:10px;margin-bottom:16px}.oly-package-item{display:flex;align-items:flex-start;gap:12px;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--nested-bg);cursor:pointer}.oly-package-item:has(input:checked){border-color:var(--primary);background:color-mix(in srgb,var(--primary) 9%,var(--nested-bg))}.oly-package-item input{margin-top:4px}.oly-package-item span{display:grid;gap:4px}.oly-package-item small{color:var(--muted)}@media(max-width:760px){.oly-package-grid{grid-template-columns:1fr}.oly-package-item{padding:12px}}


/* 1.5.0 — self-registration + magic-link invitation */
.oly-registration-card{margin:22px auto 18px;padding:22px;border:1px solid rgba(255,255,255,.18);border-radius:20px;background:rgba(255,255,255,.10);backdrop-filter:blur(8px);max-width:760px;text-align:left}
.oly-registration-card h2{margin:0 0 8px;font-size:clamp(1.25rem,2vw,1.7rem)}
.oly-registration-card>p{margin:0 0 16px;opacity:.9;line-height:1.5}
.oly-registration-form{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:end}
.oly-registration-form label{margin:0}
.oly-code-access{max-width:760px;margin:18px auto 0;padding:0;border:1px solid rgba(255,255,255,.15);border-radius:16px;background:rgba(0,0,0,.10);text-align:left}
.oly-code-access summary{cursor:pointer;padding:15px 18px;font-weight:800;list-style:none}
.oly-code-access summary::-webkit-details-marker{display:none}
.oly-code-access[open] summary{border-bottom:1px solid rgba(255,255,255,.12)}
.oly-code-access .oly-start-form{padding:18px}
@media(max-width:760px){.oly-registration-form{grid-template-columns:1fr}.oly-registration-card{padding:16px}.oly-registration-form .btn{width:100%}}
