:root { font-family: system-ui, sans-serif; color: #17243a; background: #f3f6fa; line-height: 1.5; }
* { box-sizing: border-box; }
body { margin: 0; }
.wrap { max-width: 850px; margin: auto; padding: 1.5rem; }
.site-header { background: #102940; color: white; }
.site-header .wrap { padding-block: 2rem; }
h1, h2, h3, p { margin-top: 0; }
h1 { margin-bottom: .25rem; font-size: clamp(2rem, 5vw, 3rem); }
.site-header p:last-child { margin-bottom: 0; color: #d2e3ed; }
.eyebrow { color: #8ee1cd; text-transform: uppercase; letter-spacing: .1em; font-size: .75rem; font-weight: 700; }
.card { background: white; border: 1px solid #d9e2eb; border-radius: .8rem; padding: clamp(1.1rem, 4vw, 2rem); margin-bottom: 1rem; box-shadow: 0 3px 12px #1029400a; }
.notice { border-left: 4px solid #bc7b15; background: #fff8e8; padding: .8rem 1rem; }
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1rem; }
label.field { display: grid; gap: .35rem; font-weight: 600; }
select, input[type=number] { width: 100%; font: inherit; padding: .55rem; border: 1px solid #9dabb8; border-radius: .35rem; background: white; }
button, .button { font: inherit; font-weight: 650; cursor: pointer; border: 1px solid #126c63; border-radius: .4rem; padding: .6rem 1rem; background: #126c63; color: white; }
button.secondary, .button.secondary { background: white; color: #13584f; }
button:disabled { cursor: not-allowed; opacity: .5; }
button:focus-visible, input:focus-visible, select:focus-visible, a:focus-visible { outline: 3px solid #cf8d18; outline-offset: 3px; }
.actions { display: flex; flex-wrap: wrap; gap: .65rem; align-items: center; margin-top: 1.25rem; }
.muted, footer { color: #526579; }
fieldset { border: 0; margin: 0; padding: 0; }
legend { font-weight: 700; font-size: 1.2rem; margin-bottom: .75rem; }
.option { display: flex; gap: .75rem; align-items: baseline; border: 1px solid #d9e2eb; border-radius: .4rem; padding: .75rem; margin: .5rem 0; cursor: pointer; }
.option:has(input:checked) { border-color: #126c63; background: #effaf6; }
.option input { flex: none; }
.tag { display: inline-block; color: #1a5d55; background: #e6f5ef; border-radius: 2rem; padding: .15rem .65rem; font-size: .85rem; font-weight: 650; margin: 0 .35rem .6rem 0; }
pre { background: #102940; color: #f1f8fc; padding: 1rem; overflow-x: auto; border-radius: .4rem; }
.feedback { border-top: 1px solid #d9e2eb; margin-top: 1.25rem; padding-top: 1rem; }
.correct { color: #126c42; } .incorrect { color: #a43a2a; }
.question-nav { display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; margin: 1rem 0; }
.question-nav-controls, .question-jump { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; }
.question-jump input { width: 5rem; }
.question-jump p { flex-basis: 100%; margin: 0; color: #a43a2a; }
.question-jump p:empty { display: none; }
.question-nav button { padding: .3rem .65rem; }
footer { font-size: .85rem; }
a { color: #126c63; }
.drag-items { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1rem; }
.drag-item { border: 1px solid #126c63; border-radius: .4rem; padding: .45rem .7rem; background: #effaf6; cursor: grab; }
.match-target { border: 1px dashed #9dabb8; border-radius: .4rem; padding: .75rem; margin: .6rem 0; }
