* { box-sizing: border-box; }
body { margin: 0; min-height: 100vh; background: var(--slate-50); color: var(--slate-700); }
.colour-page { width: min(calc(100% - 40px), 960px); margin: 0 auto; padding: 34px 0 72px; }
.game-heading { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; margin-bottom: 24px; }
.game-heading h1 { margin: 5px 0 7px; color: var(--slate-900); font-size: clamp(34px,6vw,50px); line-height: 1; letter-spacing: -.045em; }
.game-heading p { max-width: 560px; margin: 0; color: var(--slate-600); }
.heading-actions { display: flex; gap: 8px; }
.icon-button { display: grid; place-items: center; width: 42px; height: 42px; padding: 0; border: 1px solid var(--slate-200); border-radius: var(--radius-md); background: white; color: var(--slate-600); box-shadow: var(--shadow-xs); cursor: pointer; }
.icon-button svg { width: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; }
.match-card { overflow: hidden; border: 1px solid var(--slate-200); border-radius: var(--radius-lg); background: white; box-shadow: var(--shadow-sm); }
.round-note { display: flex; gap: 12px; align-items: center; padding: 12px 18px; border-bottom: 1px solid var(--slate-200); color: var(--slate-500); font-size: 13px; }
.round-note strong { margin-left: auto; color: var(--cobalt-700); font-weight: 600; }
.comparison { display: grid; grid-template-columns: 1fr 1fr; min-height: 390px; }
.colour-panel { position: relative; min-width: 0; margin: 0; padding: 16px; }
.colour-panel + .colour-panel { border-left: 1px solid var(--slate-200); }
.panel-copy { position: relative; z-index: 1; display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 12px; color: var(--slate-700); font-weight: 600; }
.panel-copy small { color: var(--slate-500); font-weight: 500; }
.colour-swatch { height: 320px; border: 1px solid rgba(20,25,40,.12); border-radius: var(--radius-md); background: #000; box-shadow: inset 0 1px rgba(255,255,255,.2); }
.mixer { display: grid; gap: 18px; padding: 24px; border-top: 1px solid var(--slate-200); background: var(--slate-50); }
.channel-heading { display: grid; grid-template-columns: 1fr 68px; gap: 12px; align-items: center; margin-bottom: 8px; }
.channel-heading label { color: var(--slate-700); font-size: 14px; font-weight: 600; }
.channel-heading input { width: 68px; height: 36px; padding: 5px 8px; border: 1px solid var(--slate-300); border-radius: var(--radius-sm); background: white; color: var(--slate-800); text-align: center; }
.channel > input[type="range"] { width: 100%; height: 8px; margin: 0; border-radius: 99px; appearance: none; cursor: pointer; }
.channel > input[type="range"]::-webkit-slider-thumb { width: 20px; height: 20px; appearance: none; border: 3px solid white; border-radius: 50%; background: var(--slate-800); box-shadow: 0 1px 5px rgba(20,25,40,.35); }
.red-channel > input[type="range"] { background: linear-gradient(90deg,#111827,#ef4444); }
.green-channel > input[type="range"] { background: linear-gradient(90deg,#111827,#22a06b); }
.blue-channel > input[type="range"] { background: linear-gradient(90deg,#111827,#3767df); }
.match-action { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 20px 24px; border-top: 1px solid var(--slate-200); }
.match-action p { margin: 0; color: var(--slate-500); font-size: 14px; }
.primary-button { min-height: 46px; padding: 10px 18px; border: 1px solid var(--cobalt-600); border-radius: var(--radius-md); background: var(--cobalt-600); color: white; font-weight: 700; cursor: pointer; }
.primary-button:disabled { border-color: var(--slate-200); background: var(--slate-200); color: var(--slate-500); cursor: default; }
.text-button { width: 100%; margin-top: 8px; padding: 9px; border: 0; background: transparent; color: var(--slate-500); cursor: pointer; }
.ad-card { position: relative; height: 92px; display: grid; place-items: center; margin: 20px 0; border: 1px dashed var(--slate-300); border-radius: var(--radius-md); color: var(--slate-400); font-size: 10px; letter-spacing: .16em; text-transform: uppercase; }
.about-card { display: grid; grid-template-columns: .8fr 1.2fr; gap: 32px; padding: 28px; border: 1px solid var(--slate-100); border-radius: var(--radius-lg); background: white; box-shadow: var(--shadow-sm); }
.about-card h2 { margin: 5px 0 0; color: var(--slate-800); font-size: 23px; }
.about-card p { margin: 0; color: var(--slate-600); line-height: 1.65; }
.dialog { width: min(calc(100% - 32px),480px); padding: 28px; border: 1px solid var(--slate-200); border-radius: var(--radius-lg); background: white; color: var(--slate-600); box-shadow: var(--shadow-lg); }
.dialog::backdrop { background: rgba(20,25,40,.48); }
.dialog h2 { margin: 6px 0 18px; color: var(--slate-800); }
.dialog-close { position: absolute; top: 14px; right: 14px; width: 36px; height: 36px; border: 0; background: transparent; color: var(--slate-500); font-size: 24px; cursor: pointer; }
.steps { margin: 0 0 18px; padding: 0; list-style: none; }
.steps li { display: flex; gap: 13px; padding: 12px 0; border-top: 1px solid var(--slate-200); }
.steps li > span { color: var(--cobalt-600); font-size: 12px; font-weight: 700; }
.steps p { margin: 3px 0 0; color: var(--slate-500); font-size: 13px; }
.result-dialog { text-align: center; }
.result-mark { display: grid; place-items: center; width: 48px; height: 48px; margin: 0 auto 14px; border: 1px solid var(--cobalt-100); border-radius: var(--radius-sm); background: var(--cobalt-50); color: var(--cobalt-700); font-weight: 700; }
.result-swatches { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; padding: 16px 0; border-top: 1px solid var(--slate-200); }
.result-swatches span { display: block; height: 74px; border: 1px solid var(--slate-200); border-radius: var(--radius-sm); }
.result-swatches small { display: block; margin-top: 6px; color: var(--slate-500); }
.result-swatches code { display: block; margin-top: 2px; color: var(--slate-800); font: 600 13px/20px var(--font-mono); }
.result-grid,.record-grid { display: grid; grid-template-columns: repeat(3,1fr); margin: 0 0 18px; border-block: 1px solid var(--slate-200); }
.result-grid div,.record-grid div { padding: 13px 6px; border-right: 1px solid var(--slate-200); }
.result-grid div:last-child,.record-grid div:nth-child(2n) { border-right: 0; }
.result-grid strong,.result-grid span,.record-grid strong,.record-grid span { display: block; }
.result-grid span,.record-grid span { margin-top: 2px; color: var(--slate-500); font-size: 12px; }
.record-grid { grid-template-columns: 1fr 1fr; }
.record-grid div:nth-child(n+3) { border-top: 1px solid var(--slate-200); }
.score-history { display: flex; flex-wrap: wrap; gap: 6px; }
.score-history span { padding: 4px 8px; border-radius: var(--radius-sm); background: var(--slate-100); color: var(--slate-600); font-size: 12px; }
#snackbar { position: fixed; z-index: var(--global-toast-z); left: 50%; top: var(--global-toast-top); translate: -50% -18px; max-width: calc(100% - 32px); padding: 10px 14px; border: 1px solid var(--slate-200); border-radius: var(--radius-md); background: white; box-shadow: var(--shadow-md); color: var(--slate-700); opacity: 0; pointer-events: none; transition: .2s; }
#snackbar.show { translate: -50% 0; opacity: 1; }
@media(max-width:700px){.colour-page{width:min(calc(100% - 16px),960px);padding-top:22px}.game-heading{align-items:flex-start}.comparison{grid-template-columns:1fr;min-height:0}.colour-panel+.colour-panel{border-left:0;border-top:1px solid var(--slate-200)}.colour-swatch{height:190px}.round-note span:last-child{display:none}.match-action{display:block}.match-action .primary-button{width:100%;margin-top:14px}.about-card{grid-template-columns:1fr;gap:10px;padding:22px}.dialog{padding:25px 18px}}
